mozilla-libnotify.patch
changeset 417 62102cc5132a
parent 414 88a71e903038
--- a/mozilla-libnotify.patch	Fri Mar 23 21:50:00 2012 +0100
+++ b/mozilla-libnotify.patch	Mon Mar 26 08:30:08 2012 +0200
@@ -1,12 +1,39 @@
 # HG changeset patch
 # User Wolfgang Rosenauer <wr@rosenauer.org>
-# Parent 629ea8797e7393eb6e9add489db2c5636516b305
+# 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
-@@ -346,16 +346,21 @@ nsAlertsIconListener::InitAlertAsync(con
+@@ -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;
@@ -15,16 +42,20 @@
        }
        g_list_foreach(server_caps, (GFunc)g_free, NULL);
        g_list_free(server_caps);
-+    } else {
-+      // notify_get_server_caps() is expected to return something
-+      // otherwise we need to assume there is no notification-server
-+      // to display anything
-+      return NS_ERROR_FAILURE;
      }
    }
  
++  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);
+