forked from AuroraMiddleware/gtk
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 screensaver. See https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1091
This commit is contained in:
parent
ddb7cab4ac
commit
6f6b5faaa2
@ -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,
|
||||||
|
"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);
|
g_debug ("Registering client '%s' '%s'", dbus->application_id, client_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user