Commit b0b0b5a0 authored by Bob Ham's avatar Bob Ham
Browse files

gtkapplication-dbus: Initialise screensaver-active property

When GtkApplication starts listening to the screensaver's D-Bus
status, the screensaver-active property is not initialised and
applications making use of the property are out of sync until the
first state change.  Any application starting when the screensaver is
active will think it's inactive.

To fix this, we set the property when we first start monitoring the
parent de7b2c80
...@@ -329,8 +329,31 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl, ...@@ -329,8 +329,31 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl,
if (dbus->ss_proxy) if (dbus->ss_proxy)
{ {
GVariant *active_var;
gboolean active;
g_signal_connect (dbus->ss_proxy, "g-signal", g_signal_connect (dbus->ss_proxy, "g-signal",
G_CALLBACK (screensaver_signal_session), impl->application); G_CALLBACK (screensaver_signal_session), impl->application);
active_var = g_dbus_proxy_call_sync (dbus->ss_proxy,
if (!active_var)
g_debug ("Error calling GetActive on GNOME screensaver: %s",
g_clear_error (&error);
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); g_debug ("Registering client '%s' '%s'", dbus->application_id, client_id);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment