packages/libappindicator/no-host.patch

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,