summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Koegel <eric.koegel@gmail.com>2016-05-31 10:32:36 +0300
committerEric Koegel <eric.koegel@gmail.com>2016-06-28 10:25:24 +0300
commit894894991b90c3deab7a3ba230aafb6c91ca42f6 (patch)
treeb221e11e792f9fff5b4961c56fff5aecf555077e
parent16dd17c2e2903d2b2f46a38701deb55c8a89340c (diff)
downloadxfce4-session-894894991b90c3deab7a3ba230aafb6c91ca42f6.tar.gz
Start with the dbus register interface
-rw-r--r--xfce4-session/xfsm-manager-dbus.xml28
-rw-r--r--xfce4-session/xfsm-manager.c31
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;
+}