about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-06-29 19:19:08 +0100
committerJames Booth <boothj5@gmail.com>2014-06-29 19:19:08 +0100
commit4279735dd717eb9956df80df750352e4303f2293 (patch)
tree8f4a02152fc71f1df244b4053ba6af1aab73f1ab
parent03ffe57063c34d2e4b79765a9cf84d0e7e3b4c4c (diff)
downloadprofani-tty-4279735dd717eb9956df80df750352e4303f2293.tar.gz
Reinitialise libnotify per notification
Fixes issue on Xfce4 where notification are not being sent after a period of time.
Issue #370
-rw-r--r--src/ui/core.c1
-rw-r--r--src/ui/notifier.c24
-rw-r--r--src/ui/ui.h1
3 files changed, 13 insertions, 13 deletions
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
@@ -41,14 +41,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)
 {
 #ifdef HAVE_LIBNOTIFY
@@ -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);