From e93030befb2aebe94faf5c5455313d312611d7b3 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 16 Jul 2014 23:19:10 +0200 Subject: Add a cleanup handler for the notify main thread Make sure we do not leave behind unusable mutexes when calling pthread_cancel(). Signed-off-by: Lukas Fleischer --- src/notify.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/notify.c') diff --git a/src/notify.c b/src/notify.c index 532bd01..0b02ebd 100644 --- a/src/notify.c +++ b/src/notify.c @@ -321,6 +321,15 @@ void notify_update_bar(void) pthread_mutex_unlock(¬ify.mutex); } +static void +notify_main_thread_cleanup(void *arg) +{ + pthread_mutex_trylock(¬ify.mutex); + pthread_mutex_unlock(¬ify.mutex); + pthread_mutex_trylock(&nbar.mutex); + pthread_mutex_unlock(&nbar.mutex); +} + /* Update the notication bar content */ /* ARGSUSED0 */ static void *notify_main_thread(void *arg) @@ -334,6 +343,8 @@ static void *notify_main_thread(void *arg) elapse = 0; + pthread_cleanup_push(notify_main_thread_cleanup, NULL); + for (;;) { ntimer = time(NULL); localtime_r(&ntimer, &ntime); @@ -357,6 +368,8 @@ static void *notify_main_thread(void *arg) notify_check_next_app(0); } } + + pthread_cleanup_pop(0); pthread_exit(NULL); } -- cgit v1.2.3-54-g00ecf