mozilla-libnotify.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Mon, 26 Mar 2012 08:30:08 +0200
changeset 417 62102cc5132a
parent 414 88a71e903038
permissions -rw-r--r--
fix mozilla-libnotify.patch

# HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org>
# Parent c684863b1eb3bcae92ef24bc2ac511985b1ad7e4
Bug 737646 - no biff notification if notification-daemon not running

diff --git a/toolkit/system/gnome/nsAlertsIconListener.cpp b/toolkit/system/gnome/nsAlertsIconListener.cpp
--- a/toolkit/system/gnome/nsAlertsIconListener.cpp
+++ b/toolkit/system/gnome/nsAlertsIconListener.cpp
@@ -47,16 +47,17 @@
 #include <gdk/gdk.h>
 
 // Compatibility macro for <libnotify-0.7
 #ifndef NOTIFY_CHECK_VERSION
 #define NOTIFY_CHECK_VERSION(x,y,z) 0
 #endif
 
 static bool gHasActions = false;
+static bool gHasCaps = false;
 
 static void notify_action_cb(NotifyNotification *notification,
                              gchar *action, gpointer user_data)
 {
   nsAlertsIconListener* alert = static_cast<nsAlertsIconListener*> (user_data);
   alert->SendCallback();
 }
 
@@ -338,27 +339,34 @@ nsAlertsIconListener::InitAlertAsync(con
       appShortName.AssignLiteral("Mozilla");
     }
 
     if (!notify_init(appShortName.get()))
       return NS_ERROR_FAILURE;
 
     GList *server_caps = notify_get_server_caps();
     if (server_caps) {
+      gHasCaps = true;
       for (GList* cap = server_caps; cap != NULL; cap = cap->next) {
         if (!strcmp((char*) cap->data, "actions")) {
           gHasActions = true;
           break;
         }
       }
       g_list_foreach(server_caps, (GFunc)g_free, NULL);
       g_list_free(server_caps);
     }
   }
 
+  if (!gHasCaps) {
+    // if notify_get_server_caps() failed above we need to assume
+    // there is no notification-server to display anything
+    return NS_ERROR_FAILURE;
+  }
+
   if (!gHasActions && aAlertTextClickable)
     return NS_ERROR_FAILURE; // No good, fallback to XUL
 
   nsCOMPtr<nsIObserverService> obsServ =
       do_GetService("@mozilla.org/observer-service;1");
   if (obsServ)
     obsServ->AddObserver(this, "quit-application", true);