summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/helpers/Watchdog.cpp6
-rw-r--r--src/helpers/Watchdog.hpp3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/helpers/Watchdog.cpp b/src/helpers/Watchdog.cpp
index f5d85df7..2a26ee29 100644
--- a/src/helpers/Watchdog.cpp
+++ b/src/helpers/Watchdog.cpp
@@ -3,6 +3,9 @@
#include "config/ConfigManager.hpp"
CWatchdog::~CWatchdog() {
+ m_bExitThread = true;
+ m_bNotified = true;
+ m_cvWatchdogCondition.notify_all();
m_pWatchdog.reset();
}
@@ -22,6 +25,9 @@ CWatchdog::CWatchdog() {
pthread_kill(m_iMainThreadPID, SIGUSR1);
}
+ if (m_bExitThread)
+ break;
+
m_bWatching = false;
m_bNotified = false;
}
diff --git a/src/helpers/Watchdog.hpp b/src/helpers/Watchdog.hpp
index edbfb055..7bb499d6 100644
--- a/src/helpers/Watchdog.hpp
+++ b/src/helpers/Watchdog.hpp
@@ -24,7 +24,8 @@ class CWatchdog {
std::unique_ptr<std::thread> m_pWatchdog;
std::mutex m_mWatchdogMutex;
- bool m_bNotified = false;
+ bool m_bNotified = false;
+ bool m_bExitThread = false;
std::condition_variable m_cvWatchdogCondition;
};