notify_desktop plugin: Add compatibility code for libnotify 0.7.
authorSamuli Suominen <ssuominen@gentoo.org>
Mon, 28 Mar 2011 00:16:33 +0000 (02:16 +0200)
committerFlorian Forster <octo@huhu.verplant.org>
Mon, 28 Mar 2011 00:17:38 +0000 (02:17 +0200)
The current code in src/notify_desktop.c is not compatible with the new
libnotify 0.7 API

This:

  notification = notify_notification_new (summary, n->message, NULL, NULL);

Should now be:

  notification = notify_notification_new (summary, n->message, NULL;

As in, one argument less for notify_notification_new.

But we can't just remove it or it'll break compability with libnotify
0.4.x and 0.5.x.

This piece of code sets dummy NOTIFY_CHECK_VERSION for libnotify-0.4.x,
because NOTIFY_CHECK_VERSION was added only in 0.5.x:

  #ifndef NOTIFY_CHECK_VERSION
  #define NOTIFY_CHECK_VERSION(x,y,z) 0
  #endif

Then we can freely use NOTIFY_CHECK_VERSION, and it will work with all
of 0.4, 0.5 and 0.7 series:

  #if NOTIFY_CHECK_VERSION (0, 7, 0)
  do something cool
  #endif

I'm attaching the working patch.  It's been tested with all of the
mentioned versions, as well as it's in active use at Gentoo Linux.

Thanks, Samuli

Signed-off-by: Florian Forster <octo@huhu.verplant.org>
src/notify_desktop.c

index 839bc61..3f3c6df 100644 (file)
 #include <glib.h>
 #include <libnotify/notify.h>
 
+#ifndef NOTIFY_CHECK_VERSION
+# define NOTIFY_CHECK_VERSION(x,y,z) 0
+#endif
+
 #define log_info(...) INFO ("notify_desktop: " __VA_ARGS__)
 #define log_warn(...) WARNING ("notify_desktop: " __VA_ARGS__)
 #define log_err(...) ERROR ("notify_desktop: " __VA_ARGS__)
@@ -95,7 +99,12 @@ static int c_notify (const notification_t *n,
                                : (NOTIF_WARNING == n->severity) ? "WARNING"
                                : (NOTIF_OKAY == n->severity) ? "OKAY" : "UNKNOWN");
 
-       notification = notify_notification_new (summary, n->message, NULL, NULL);
+       notification = notify_notification_new (summary, n->message, NULL
+#if NOTIFY_CHECK_VERSION (0, 7, 0)
+       );
+#else
+       , NULL);
+#endif
        if (NULL == notification) {
                log_err ("Failed to create a new notification.");
                return -1;