diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nautilus-application.c | 55 | ||||
-rw-r--r-- | src/nautilus-application.h | 2 |
2 files changed, 29 insertions, 28 deletions
diff --git a/src/nautilus-application.c b/src/nautilus-application.c index 1f048e37d..5a0af02e1 100644 --- a/src/nautilus-application.c +++ b/src/nautilus-application.c @@ -353,9 +353,9 @@ nautilus_application_finalize (GObject *object) application->automount_idle_id = 0; } - if (application->ck_watch_id != 0) { - g_bus_unwatch_proxy (application->ck_watch_id); - application->ck_watch_id = 0; + if (application->proxy != NULL) { + g_object_unref (application->proxy); + application->proxy = NULL; } G_OBJECT_CLASS (nautilus_application_parent_class)->finalize (object); @@ -566,23 +566,23 @@ ck_call_is_active_cb (GDBusProxy *proxy, } static void -session_proxy_vanished (GDBusConnection *connection, - const gchar *name, - gpointer user_data) +session_proxy_appeared (GObject *source, + GAsyncResult *res, + gpointer user_data) { NautilusApplication *application = user_data; + GDBusProxy *proxy; + GError *error = NULL; - application->session_is_active = TRUE; -} + proxy = g_dbus_proxy_new_for_bus_finish (res, &error); -static void -session_proxy_appeared (GDBusConnection *connection, - const gchar *name, - const gchar *name_owner, - GDBusProxy *proxy, - gpointer user_data) -{ - NautilusApplication *application = user_data; + if (error != NULL) { + g_warning ("Failed to get the current CK session: %s", error->message); + g_error_free (error); + + application->session_is_active = TRUE; + return; + } g_signal_connect (proxy, "g-signal", G_CALLBACK (ck_session_proxy_signal_cb), @@ -595,7 +595,9 @@ session_proxy_appeared (GDBusConnection *connection, -1, NULL, (GAsyncReadyCallback) ck_call_is_active_cb, - application); + application); + + application->proxy = proxy; } static void @@ -620,16 +622,15 @@ ck_get_current_session_cb (GDBusConnection *connection, g_variant_get (variant, "(&o)", &session_path); - application->ck_watch_id = g_bus_watch_proxy (G_BUS_TYPE_SYSTEM, - CK_NAME, - 0, session_path, - CK_INTERFACE ".Session", - G_TYPE_DBUS_PROXY, - G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, - session_proxy_appeared, - session_proxy_vanished, - application, - NULL); + g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + CK_NAME, + session_path, + CK_INTERFACE ".Session", + NULL, + session_proxy_appeared, + application); g_variant_unref (variant); } diff --git a/src/nautilus-application.h b/src/nautilus-application.h index d6d681eed..36e53b6b4 100644 --- a/src/nautilus-application.h +++ b/src/nautilus-application.h @@ -66,7 +66,7 @@ typedef struct { NautilusUndoManager *undo_manager; GVolumeMonitor *volume_monitor; unsigned int automount_idle_id; - guint ck_watch_id; + GDBusProxy *proxy; gboolean session_is_active; } NautilusApplication; |