#define SM_CLIENT_DBUS_INTERFACE "org.gnome.SessionManager.ClientPrivate"
+static gboolean register_client (void);
+
static void
-on_session_over (GDBusProxy *proxy,
- gchar *sender_name,
- gchar *signal_name,
- GVariant *parameters,
- gpointer user_data)
+on_session_signal (GDBusProxy *proxy,
+ gchar *sender_name,
+ gchar *signal_name,
+ GVariant *parameters,
+ gpointer user_data)
{
if (g_strcmp0 (signal_name, "SessionOver") == 0) {
g_main_loop_quit (mainloop);
+ } else if (g_strcmp0 (signal_name, "SessionRunning") == 0) {
+ if (!register_client ())
+ g_warning ("Unable to register client with session manager");
}
}
SM_DBUS_INTERFACE, NULL, NULL);
g_signal_connect (G_OBJECT (sm_proxy), "g-signal",
- G_CALLBACK (on_session_over), NULL);
+ G_CALLBACK (on_session_signal), NULL);
return (sm_proxy != NULL);
}
static gboolean
end_session_response (gboolean is_okay, const gchar *reason)
{
- GVariant *ret;
+ GVariant *ret;
GError *error = NULL;
if (!reason)
register_client (void)
{
GError *error;
- GVariant *res;
+ GVariant *res;
const char *startup_id;
const char *app_id;
{
if (!session_manager_connect ())
g_warning ("Unable to connect to session manager");
-
- if (!register_client ())
- g_warning ("Unable to register client with session manager");
}
g_main_loop_run (mainloop);