diff --git a/src/driver/shutdown_count.cpp b/src/driver/shutdown_count.cpp index 9bf77c2f1..e681c4ef6 100644 --- a/src/driver/shutdown_count.cpp +++ b/src/driver/shutdown_count.cpp @@ -4,6 +4,7 @@ Copyright (C) 2001 Steffen Hehn 'McClean' Homepage: http://dbox.cyberphoria.org/ + Copyright (C) 2012 Stefan Seyfried License: GPL @@ -42,6 +43,16 @@ SHTDCNT::SHTDCNT() { } +SHTDCNT::~SHTDCNT() +{ + if (thread_running) + { + thread_running = false; + pthread_cancel(thrTime); + pthread_join(thrTime, NULL); + } +} + SHTDCNT* SHTDCNT::getInstance() { static SHTDCNT* shtdcnt = NULL; @@ -66,9 +77,11 @@ void SHTDCNT::init() { shutdown_cnt = atoi(g_settings.shutdown_count) * 60; sleep_cnt = atoi(g_settings.shutdown_min)*60; + thread_running = true; if (pthread_create (&thrTime, NULL, TimeThread, NULL) != 0 ) { perror("[SHTDCNT]: pthread_create(TimeThread)"); + thread_running = false; return ; } } diff --git a/src/driver/shutdown_count.h b/src/driver/shutdown_count.h index 6b0692da6..aca81fd1f 100644 --- a/src/driver/shutdown_count.h +++ b/src/driver/shutdown_count.h @@ -4,7 +4,7 @@ Copyright (C) 2001 Steffen Hehn 'McClean' Homepage: http://dbox.cyberphoria.org/ - + Copyright (C) 2012 Stefan Seyfried License: GPL @@ -34,6 +34,7 @@ class SHTDCNT private: pthread_t thrTime; + bool thread_running; unsigned int shutdown_cnt; unsigned int sleep_cnt; CConfigFile configfile; @@ -42,9 +43,8 @@ class SHTDCNT SHTDCNT(); static void* TimeThread(void*); - public: - + ~SHTDCNT(); void setlcdparameter(void); static SHTDCNT* getInstance();