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
--- src/notify_desktop.c
+++ src/notify_desktop.c
@@ -31,6 +31,10 @@
 #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 @@
                                : (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;
_______________________________________________
collectd mailing list
collectd@verplant.org
http://mailman.verplant.org/listinfo/collectd

Reply via email to