From 5f58a7bfe98850581039d55aca930611507b63b9 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Fri, 10 Dec 2010 20:29:49 +0100 Subject: [PATCH] Conditionally support DBus-GLib for GLib < 2.26 Fixes: https://bugs.launchpad.net/postler/+bug/688697 --- postler/dexter.vala | 15 ++++++++++----- postler/postler-client.vala | 11 ++++++++--- postler/postler-service.vala | 16 +++++++++++++++- postler/wscript_build | 3 ++- wscript | 1 + 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/postler/dexter.vala b/postler/dexter.vala index 812a502..6fb0ee7 100644 --- a/postler/dexter.vala +++ b/postler/dexter.vala @@ -13,18 +13,23 @@ namespace Dexter { [DBus (name = "org.elementary.dexterservice")] interface DexterService : Object { - public abstract string get_name (string email_address) throws IOError; - public abstract string[] search_contacts (string keywords) throws IOError; - public abstract void show_window () throws IOError; + public abstract string get_name (string email_address) throws DBus.Error; + public abstract string[] search_contacts (string keywords) throws DBus.Error; + public abstract void show_window () throws DBus.Error; } public class Dexter : Object { DexterService service; public Dexter () { try { + #if DBUS_GLIB + var conn = DBus.Bus.get (DBus.BusType.SESSION); + service = (DexterService) conn.get_object ( + "org.elementary.dexterservice", "/org/elementary/dexterservice"); + #else service = Bus.get_proxy_sync (BusType.SESSION, - "org.elementary.dexterservice", - "/org/elementary/dexterservice"); + "org.elementary.dexterservice", "/org/elementary/dexterservice"); + #endif /* Ensure Dexter is running, ignore errors, without is fine */ Process.spawn_async (null, { "dexter", "-d" }, null, SpawnFlags.SEARCH_PATH diff --git a/postler/postler-client.vala b/postler/postler-client.vala index fc14bd5..0cf227c 100644 --- a/postler/postler-client.vala +++ b/postler/postler-client.vala @@ -13,7 +13,7 @@ namespace Postler { [DBus (name = "org.elementary.Postler")] interface PostlerClient : Object { - public abstract void receive_mail () throws IOError; + public abstract void receive_mail () throws DBus.Error; } public class Client : Object { @@ -21,9 +21,14 @@ namespace Postler { public Client () { try { + #if DBUS_GLIB + var conn = DBus.Bus.get (DBus.BusType.SESSION); + client = (PostlerClient) conn.get_object ( + "org.elementary.Postler", "/org/elementary/postler"); + #else client = Bus.get_proxy_sync (BusType.SESSION, - "org.elementary.Postler", - "/org/elementary/postler"); + "org.elementary.Postler", "/org/elementary/postler"); + #endif /* Ensure Postler is running, ignore errors */ Process.spawn_async (null, { Postler.App.argv0, "-m", "service" }, null, diff --git a/postler/postler-service.vala b/postler/postler-service.vala index 1fe6733..faf2776 100644 --- a/postler/postler-service.vala +++ b/postler/postler-service.vala @@ -12,7 +12,7 @@ namespace Postler { [DBus (name = "org.elementary.Postler")] - class PostlerService : Object { + public class PostlerService : Object { public void receive_mail () { var accounts = new Accounts (); accounts.receive (null); @@ -38,9 +38,23 @@ namespace Postler { } public void run () { + #if DBUS_GLIB + try { + var conn = DBus.Bus.get (DBus.BusType.SESSION); + dynamic DBus.Object bus = conn.get_object ("org.freedesktop.DBus", + "/org/freedesktop/DBus", "org.freedesktop.DBus"); + uint reply = bus.request_name ("org.elementary.Postler", (uint) 0); + assert (reply == DBus.RequestNameReply.PRIMARY_OWNER); + var service = new PostlerService (); + conn.register_object ("/org/elementary/postler", service);stdout.printf ("bla\n"); + } catch (DBus.Error error) { + done (1); + } + #else Bus.own_name (BusType.SESSION, "org.elementary.Postler", BusNameOwnerFlags.NONE, bus_aquired, name_aquired, name_lost); + #endif new MainLoop ().run (); done (0); } diff --git a/postler/wscript_build b/postler/wscript_build index 4e9051d..aa0ffef 100644 --- a/postler/wscript_build +++ b/postler/wscript_build @@ -13,7 +13,8 @@ obj.name = 'postler' obj.target = 'postler' obj.includes = '. ..' obj.find_sources_in_dirs ('.') -obj.uselib = 'GIO GTHREAD GTK LIBNOTIFY LIBCANBERRA UNIQUE WEBKIT' +obj.uselib = 'GIO DBUS_GLIB GTHREAD GTK LIBNOTIFY LIBCANBERRA UNIQUE WEBKIT' obj.packages = 'config postler posix gio-2.0 gtk+-2.0 libnotify libcanberra unique-1.0 webkit-1.0' +obj.packages += ' dbus-glib-1' obj.vapi_dirs = '.' diff --git a/wscript b/wscript index 25ceade..4f5d02d 100644 --- a/wscript +++ b/wscript @@ -108,6 +108,7 @@ def configure (conf): mandatory=mandatory, define_name=var) check_pkg ('gio-2.0', '2.16.0') + check_pkg ('dbus-glib-1', var='DBUS_GLIB') check_pkg ('unique-1.0', '0.9') check_pkg ('gtk+-2.0', '2.12.0', var='GTK') check_pkg ('webkit-1.0', '1.1.1') -- 1.7.3.2