From 80ff27e165389fe490305d05e2e01708d113ddc2 Mon Sep 17 00:00:00 2001 From: Eitan Isaacson Date: Wed, 8 Jun 2011 12:53:10 -0700 Subject: Use generic keyboard service name. - Have it replaceable by a service that is activated later. - Have Antler quit if the generic name is acquired by a new service. - Keep non-replaceable implementation specific name on bus. https://bugzilla.gnome.org/show_bug.cgi?id=651702 --- libcaribou/keyboard-service.vala | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'libcaribou') diff --git a/libcaribou/keyboard-service.vala b/libcaribou/keyboard-service.vala index ee0035f..0a8c7c9 100644 --- a/libcaribou/keyboard-service.vala +++ b/libcaribou/keyboard-service.vala @@ -1,30 +1,43 @@ namespace Caribou { [DBus(name = "org.gnome.Caribou.Keyboard")] public abstract class KeyboardService : Object { - public string name { get; private set; default = "CaribouKeyboard"; } - public abstract void set_cursor_location(int x, int y, int w, int h); public abstract void set_entry_location(int x, int y, int w, int h); public abstract void show(); public abstract void hide(); protected void register_keyboard (string name) { - this.name = name; string dbus_name = @"org.gnome.Caribou.$name"; Bus.own_name (BusType.SESSION, dbus_name, BusNameOwnerFlags.NONE, - on_bus_aquired, on_name_aquired, on_name_lost); + on_bus_acquired, on_impl_name_acquired, on_impl_name_lost); + } + + private void on_bus_acquired (DBusConnection conn) { } - private void on_name_aquired (DBusConnection conn, string name) { + private void on_impl_name_lost (DBusConnection conn, string name) { + stderr.printf ("Could not acquire %s\n", name); } private void on_name_lost (DBusConnection conn, string name) { - stderr.printf ("Could not aquire %s\n", name); + stderr.printf ("Could not acquire %s\n", name); + name_lost (name); + } + + protected virtual void name_lost (string name) { + stderr.printf ("default\n"); + } + + private void on_impl_name_acquired (DBusConnection conn, string name) { + Bus.own_name ( + BusType.SESSION, "org.gnome.Caribou.Keyboard", + BusNameOwnerFlags.ALLOW_REPLACEMENT | BusNameOwnerFlags.REPLACE, + on_bus_acquired, on_generic_name_acquired, on_name_lost); } - private void on_bus_aquired (DBusConnection conn) { + private void on_generic_name_acquired (DBusConnection conn, string name) { try { - string path = @"/org/gnome/Caribou/$name"; + string path = @"/org/gnome/Caribou/Keyboard"; conn.register_object (path, this); } catch (IOError e) { stderr.printf ("Could not register service: %s\n", e.message); -- cgit v1.2.1