diff --git a/gtk/gtkapplication-dbus.c b/gtk/gtkapplication-dbus.c index dc141cfa5f..a270354119 100644 --- a/gtk/gtkapplication-dbus.c +++ b/gtk/gtkapplication-dbus.c @@ -329,8 +329,31 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl, if (dbus->ss_proxy) { + GVariant *active_var; + gboolean active; + g_signal_connect (dbus->ss_proxy, "g-signal", G_CALLBACK (screensaver_signal_session), impl->application); + + active_var = g_dbus_proxy_call_sync (dbus->ss_proxy, + "GetActive", + NULL, + G_DBUS_CALL_FLAGS_NONE, + G_MAXINT, + NULL, + &error); + if (!active_var) + { + g_debug ("Error calling GetActive on GNOME screensaver: %s", + error->message); + g_clear_error (&error); + } + else + { + g_variant_get (active_var, "(b)", &active); + g_variant_unref (active_var); + gtk_application_set_screensaver_active (dbus->impl.application, active); + } } g_debug ("Registering client '%s' '%s'", dbus->application_id, client_id);