66 lines
1.8 KiB
Diff
66 lines
1.8 KiB
Diff
=== modified file 'src/app-indicator.c'
|
|
--- src/app-indicator.c 2020-04-08 18:39:30 +0000
|
|
+++ src/app-indicator.c 2020-07-03 10:12:45 +0000
|
|
@@ -213,6 +213,38 @@
|
|
G_DEFINE_TYPE (AppIndicator, app_indicator, G_TYPE_OBJECT);
|
|
|
|
static void
|
|
+check_is_host_registered (AppIndicator *self)
|
|
+{
|
|
+ GVariant *variant;
|
|
+ gboolean is_host_registered;
|
|
+
|
|
+ variant = g_dbus_proxy_get_cached_property (self->priv->watcher_proxy,
|
|
+ "IsStatusNotifierHostRegistered");
|
|
+
|
|
+ is_host_registered = FALSE;
|
|
+ if (variant != NULL) {
|
|
+ is_host_registered = g_variant_get_boolean (variant);
|
|
+ g_variant_unref (variant);
|
|
+ }
|
|
+
|
|
+ if (!is_host_registered) {
|
|
+ start_fallback_timer (self, FALSE);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ check_connect (self);
|
|
+}
|
|
+
|
|
+static void
|
|
+watcher_properties_changed_cb (GDBusProxy *proxy,
|
|
+ GVariant *changed_properties,
|
|
+ GStrv invalidated_properties,
|
|
+ AppIndicator *self)
|
|
+{
|
|
+ check_is_host_registered (self);
|
|
+}
|
|
+
|
|
+static void
|
|
watcher_ready_cb (GObject *source_object,
|
|
GAsyncResult *res,
|
|
gpointer user_data)
|
|
@@ -230,7 +262,12 @@
|
|
return;
|
|
}
|
|
|
|
- check_connect (self);
|
|
+ g_signal_connect (self->priv->watcher_proxy,
|
|
+ "g-properties-changed",
|
|
+ G_CALLBACK (watcher_properties_changed_cb),
|
|
+ self);
|
|
+
|
|
+ check_is_host_registered (self);
|
|
g_object_unref (self);
|
|
}
|
|
|
|
@@ -243,7 +280,6 @@
|
|
AppIndicator *self = (AppIndicator *) user_data;
|
|
|
|
g_dbus_proxy_new (self->priv->connection,
|
|
- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
|
|
G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
|
|
watcher_interface_info,
|
|
NOTIFICATION_WATCHER_DBUS_ADDR,
|
|
|