From 4279735dd717eb9956df80df750352e4303f2293 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 29 Jun 2014 19:19:08 +0100 Subject: Reinitialise libnotify per notification Fixes issue on Xfce4 where notification are not being sent after a period of time. Issue #370 --- src/ui/core.c | 1 - src/ui/notifier.c | 24 +++++++++++++----------- src/ui/ui.h | 1 - 3 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/ui/core.c b/src/ui/core.c index 262eb4d3..996a0c7a 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -94,7 +94,6 @@ _ui_init(void) create_input_window(); wins_init(); cons_about(); - notifier_init(); #ifdef HAVE_LIBXSS display = XOpenDisplay(0); #endif diff --git a/src/ui/notifier.c b/src/ui/notifier.c index 04eb0130..ba1dbbc4 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -40,14 +40,6 @@ static void _notify(const char * const message, int timeout, const char * const category); -static void -_notifier_init(void) -{ -#ifdef HAVE_LIBNOTIFY - notify_init("Profanity"); -#endif -} - static void _notifier_uninit(void) { @@ -171,6 +163,15 @@ _notify(const char * const message, int timeout, const char * const category) { #ifdef HAVE_LIBNOTIFY + log_debug("Attempting notification: %s", message); + if (notify_is_initted()) { + log_debug("Reinitialising libnotify"); + notify_uninit(); + notify_init("Profanity"); + } else { + log_debug("Initialising libnotify"); + notify_init("Profanity"); + } if (notify_is_initted()) { NotifyNotification *notification; notification = notify_notification_new("Profanity", message, NULL); @@ -185,9 +186,11 @@ _notify(const char * const message, int timeout, log_error("Error sending desktop notification:"); log_error(" -> Message : %s", message); log_error(" -> Error : %s", error->message); - } + } else { + log_debug("Notification sent."); + } } else { - log_error("Libnotify initialisation error."); + log_error("Libnotify not initialised."); } #endif #ifdef PLATFORM_CYGWIN @@ -244,7 +247,6 @@ _notify(const char * const message, int timeout, void notifier_init_module(void) { - notifier_init = _notifier_init; notifier_uninit = _notifier_uninit; notify_typing = _notify_typing; notify_invite = _notify_invite; diff --git a/src/ui/ui.h b/src/ui/ui.h index 4021527d..2ae4e68e 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -259,7 +259,6 @@ void (*cons_show_contact_online)(PContact contact, Resource *resource, GDateTime void (*cons_show_contact_offline)(PContact contact, char *resource, char *status); // desktop notifier actions -void (*notifier_init)(void); void (*notifier_uninit)(void); void (*notify_typing)(const char * const handle); -- cgit 1.4.1-2-gfad0