| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 06b185a commit 348e91d
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -150,7 +150,8 @@ void SigintWatchdogHelper::HandleSignal(int signum) { | |||
| 150 | 150 | // Windows starts a separate thread for executing the handler, so no extra | |
| 151 | 151 | // helper thread is required. | |
| 152 | 152 | BOOL WINAPI SigintWatchdogHelper::WinCtrlCHandlerRoutine(DWORD dwCtrlType) { | |
| 153 | - if (dwCtrlType == CTRL_C_EVENT || dwCtrlType == CTRL_BREAK_EVENT) { | ||
| 153 | + if (!instance.watchdog_disabled_ && | ||
| 154 | + (dwCtrlType == CTRL_C_EVENT || dwCtrlType == CTRL_BREAK_EVENT)) { | ||
| 154 | 155 | InformWatchdogsAboutSignal(); | |
| 155 | 156 | ||
| 156 | 157 | // Return true because the signal has been handled. | |
@@ -207,7 +208,11 @@ int SigintWatchdogHelper::Start() { | |||
| 207 | 208 | ||
| 208 | 209 | RegisterSignalHandler(SIGINT, HandleSignal); | |
| 209 | 210 | #else | |
| 210 | - SetConsoleCtrlHandler(WinCtrlCHandlerRoutine, TRUE); | ||
| 211 | + if (watchdog_disabled_) { | ||
| 212 | + watchdog_disabled_ = false; | ||
| 213 | + } else { | ||
| 214 | + SetConsoleCtrlHandler(WinCtrlCHandlerRoutine, TRUE); | ||
| 215 | + } | ||
| 211 | 216 | #endif | |
| 212 | 217 | ||
| 213 | 218 | return 0; | |
@@ -251,7 +256,7 @@ bool SigintWatchdogHelper::Stop() { | |||
| 251 | 256 | ||
| 252 | 257 | RegisterSignalHandler(SIGINT, SignalExit, true); | |
| 253 | 258 | #else | |
| 254 | - SetConsoleCtrlHandler(WinCtrlCHandlerRoutine, FALSE); | ||
| 259 | + watchdog_disabled_ = true; | ||
| 255 | 260 | #endif | |
| 256 | 261 | ||
| 257 | 262 | had_pending_signal = has_pending_signal_; | |
@@ -292,6 +297,8 @@ SigintWatchdogHelper::SigintWatchdogHelper() | |||
| 292 | 297 | has_running_thread_ = false; | |
| 293 | 298 | stopping_ = false; | |
| 294 | 299 | CHECK_EQ(0, uv_sem_init(&sem_, 0)); | |
| 300 | + #else | ||
| 301 | + watchdog_disabled_ = false; | ||
| 295 | 302 | #endif | |
| 296 | 303 | } | |
| 297 | 304 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -91,6 +91,7 @@ class SigintWatchdogHelper { | |||
| 91 | 91 | static void* RunSigintWatchdog(void* arg); | |
| 92 | 92 | static void HandleSignal(int signum); | |
| 93 | 93 | #else | |
| 94 | + bool watchdog_disabled_; | ||
| 94 | 95 | static BOOL WINAPI WinCtrlCHandlerRoutine(DWORD dwCtrlType); | |
| 95 | 96 | #endif | |
| 96 | 97 | }; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments