X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=blobdiff_plain;f=src%2Fplugins%2Fvcalendar%2Fvcal_dbus.c;h=f60987252657675a067c18df2f1fef020720559e;hp=38d86b32ed00de8dbef1ddd2480ae55a390006e9;hb=6ad681664a23b9268016e779a94f83413127ad98;hpb=ffd9bc6151435337ee70f87496ef5d5def24d20c diff --git a/src/plugins/vcalendar/vcal_dbus.c b/src/plugins/vcalendar/vcal_dbus.c index 38d86b32e..f60987252 100644 --- a/src/plugins/vcalendar/vcal_dbus.c +++ b/src/plugins/vcalendar/vcal_dbus.c @@ -27,15 +27,13 @@ #include #include -#include +#include #include #include "utils.h" #include "vcal_manager.h" #include "vcal_folder.h" -#if(GLIB_CHECK_VERSION(2,26,0)) - static guint dbus_own_id; static void add_event_to_builder_if_match(VCalEvent *event, GVariantBuilder *array, @@ -125,12 +123,7 @@ static void handle_method_call (GDBusConnection *connection, } -static const GDBusInterfaceVTable interface_vtable = -{ - handle_method_call, - NULL, - NULL -}; +static GDBusInterfaceVTable* interface_vtable = NULL; static GDBusNodeInfo *introspection_data = NULL; static GDBusInterfaceInfo *interface_info = NULL; @@ -166,10 +159,13 @@ static void bus_acquired(GDBusConnection *connection, gpointer user_data) { GError *err = NULL; + + cm_return_if_fail(interface_vtable); + g_dbus_connection_register_object(connection, "/org/gnome/Shell/CalendarServer", introspection_data->interfaces[0], - &interface_vtable, NULL, NULL, &err); + (const GDBusInterfaceVTable *)interface_vtable, NULL, NULL, &err); if (err != NULL) debug_print("Error: %s\n", err->message); } @@ -177,13 +173,18 @@ static void bus_acquired(GDBusConnection *connection, void connect_dbus(void) { debug_print("connect_dbus() invoked\n"); + + interface_vtable = g_malloc0(sizeof(GDBusInterfaceVTable)); + cm_return_if_fail(interface_vtable); + interface_vtable->method_call = (GDBusInterfaceMethodCallFunc)handle_method_call; + introspection_data = g_dbus_node_info_new_for_xml( introspection_xml, NULL); if (introspection_data == NULL) { - debug_print("Couldn't figure out XML."); + debug_print("Couldn't figure out XML.\n"); return; } - + interface_info = g_dbus_node_info_lookup_interface( introspection_data, "org.gnome.Shell.CalendarServer"); @@ -201,15 +202,7 @@ void disconnect_dbus(void) { debug_print("disconnect_dbus() invoked\n"); g_bus_unown_name(dbus_own_id); -} -#else -void connect_dbus(void) -{ - debug_print("DBUS calendar export is not supported with Glib < 2.26\n"); + g_free(interface_vtable); + interface_vtable = NULL; } -void disconnect_dbus(void) -{ - debug_print("DBUS calendar export is not supported with Glib < 2.26\n"); -} -#endif