diff options
author | Eric Koegel <eric.koegel@gmail.com> | 2016-05-31 10:32:36 +0300 |
---|---|---|
committer | Eric Koegel <eric.koegel@gmail.com> | 2016-06-28 10:25:24 +0300 |
commit | 894894991b90c3deab7a3ba230aafb6c91ca42f6 (patch) | |
tree | b221e11e792f9fff5b4961c56fff5aecf555077e | |
parent | 16dd17c2e2903d2b2f46a38701deb55c8a89340c (diff) | |
download | xfce4-session-894894991b90c3deab7a3ba230aafb6c91ca42f6.tar.gz |
Start with the dbus register interface
-rw-r--r-- | xfce4-session/xfsm-manager-dbus.xml | 28 | ||||
-rw-r--r-- | xfce4-session/xfsm-manager.c | 31 |
2 files changed, 59 insertions, 0 deletions
diff --git a/xfce4-session/xfsm-manager-dbus.xml b/xfce4-session/xfsm-manager-dbus.xml index 9b0c7c02..9c0aa677 100644 --- a/xfce4-session/xfsm-manager-dbus.xml +++ b/xfce4-session/xfsm-manager-dbus.xml @@ -149,6 +149,34 @@ </method> <!-- + ObjectPath[] org.Xfce.Session.Manager.RegisterClient + + @app_id: The application identifier + @client_startup_id: Client startup identifier + + Returns: + @client_id: The object path of the newly registered client + + Register the caller as a Session Management client. + --> + <method name="RegisterClient"> + <arg direction="in" name="app_id" type="s" /> + <arg direction="in" name="client_startup_id" type="s" /> + <arg direction="out" name="client_id" type="o" /> + </method> + + <!-- + void org.Xfce.Session.Manager.UnregisterClient + + @client_id: The object path of the previously registered client + + Unregister the specified client from Session Management. + --> + <method name="UnregisterClient"> + <arg direction="in" name="client_id" type="o" /> + </method> + + <!-- void org.xfce.Session.Manager.StateChanged(Unsigned Int old_state, Unsigned Int new_state) diff --git a/xfce4-session/xfsm-manager.c b/xfce4-session/xfsm-manager.c index e53dd699..d586f557 100644 --- a/xfce4-session/xfsm-manager.c +++ b/xfce4-session/xfsm-manager.c @@ -1840,6 +1840,13 @@ static gboolean xfsm_manager_dbus_hibernate (XfsmDbusManager *object, GDBusMethodInvocation *invocation); static gboolean xfsm_manager_dbus_can_hibernate (XfsmDbusManager *object, GDBusMethodInvocation *invocation); +static gboolean xfsm_manager_dbus_register_client (XfsmDbusManager *object, + GDBusMethodInvocation *invocation, + const gchar *arg_app_id, + const gchar *arg_client_startup_id); +static gboolean xfsm_manager_dbus_unregister_client (XfsmDbusManager *object, + GDBusMethodInvocation *invocation, + const gchar *arg_client_id); /* eader needs the above fwd decls */ @@ -1894,6 +1901,8 @@ xfsm_manager_iface_init (XfsmDbusManagerIface *iface) iface->handle_restart = xfsm_manager_dbus_restart; iface->handle_shutdown = xfsm_manager_dbus_shutdown; iface->handle_suspend = xfsm_manager_dbus_suspend; + iface->handle_register_client = xfsm_manager_dbus_register_client; + iface->handle_unregister_client = xfsm_manager_dbus_unregister_client; } static void @@ -2225,3 +2234,25 @@ xfsm_manager_dbus_can_hibernate (XfsmDbusManager *object, xfsm_dbus_manager_complete_can_hibernate (object, invocation, can_hibernate); return TRUE; } + +static gboolean +xfsm_manager_dbus_register_client (XfsmDbusManager *object, + GDBusMethodInvocation *invocation, + const gchar *arg_app_id, + const gchar *arg_client_startup_id) +{ + gchar *client_id = g_strdup_printf("/org/xfce/SessionManager/%s", arg_client_startup_id); + + xfsm_dbus_manager_complete_register_client (object, invocation, client_id); + g_free(client_id); + return TRUE; +} + +static gboolean +xfsm_manager_dbus_unregister_client (XfsmDbusManager *object, + GDBusMethodInvocation *invocation, + const gchar *arg_client_id) +{ + xfsm_dbus_manager_complete_unregister_client (object, invocation); + return TRUE; +} |