summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nautilus-application.c55
-rw-r--r--src/nautilus-application.h2
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;