From 8a58f4e298e844c18928e5a0681fa8ac2b9f2ee1 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Mon, 17 May 2010 20:22:54 +0200 Subject: [PATCH] Port to GDBus Bug #618910. --- configure.in | 5 +- libnautilus-private/nautilus-file-utilities.c | 123 +++++------ libnautilus-private/nautilus-mime-actions.c | 204 +++++++----------- src/nautilus-application.c | 186 +++++++++------- src/nautilus-application.h | 4 +- 5 files changed, 252 insertions(+), 270 deletions(-) diff --git a/configure.in b/configure.in index f97be7c8f..96b021ffb 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ AC_PREREQ(2.54) dnl =========================================================================== -m4_define(glib_minver, 2.24.0) +m4_define(glib_minver, 2.25.5) m4_define(gnome_desktop_minver, 2.29.91) m4_define(pango_minver, 1.1.2) m4_define(gtk_minver, 2.20.0) @@ -69,7 +69,6 @@ PKG_CHECK_MODULES(ALL, [ libxml-2.0 >= xml_minver gail >= gail_minver unique-1.0 - dbus-glib-1 ]) dnl ========================================================================== @@ -337,7 +336,7 @@ LIBNAUTILUS_EXTENSION_LIBS="`$PKG_CONFIG --libs $LIBNAUTILUS_EXTENSION_MODULES`" AC_SUBST(LIBNAUTILUS_EXTENSION_LIBS) dnl core nautilus -CORE_MODULES="glib-2.0 gnome-desktop-2.0 gthread-2.0 gio-2.0 gio-unix-2.0 unique-1.0 dbus-glib-1 gail gconf-2.0 libxml-2.0 $EXTRA_CORE_MODULES" +CORE_MODULES="glib-2.0 gnome-desktop-2.0 gthread-2.0 gio-2.0 gio-unix-2.0 unique-1.0 gail gconf-2.0 libxml-2.0 $EXTRA_CORE_MODULES" CORE_CFLAGS="`$PKG_CONFIG --cflags $CORE_MODULES` $x_cflags" AC_SUBST(CORE_CFLAGS) CORE_LIBS="`$PKG_CONFIG --libs $CORE_MODULES` $x_libs" diff --git a/libnautilus-private/nautilus-file-utilities.c b/libnautilus-private/nautilus-file-utilities.c index b52b6574e..4811ef0e5 100644 --- a/libnautilus-private/nautilus-file-utilities.c +++ b/libnautilus-private/nautilus-file-utilities.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include @@ -1004,48 +1003,13 @@ nautilus_is_file_roller_installed (void) #define GSM_NAME "org.gnome.SessionManager" #define GSM_PATH "/org/gnome/SessionManager" +#define GSM_INTERFACE "org.gnome.SessionManager" /* The following values come from * http://www.gnome.org/~mccann/gnome-session/docs/gnome-session.html#org.gnome.SessionManager.Inhibit */ -#define INHIBIT_LOGOUT 1 -#define INHIBIT_SUSPEND 4 - -static DBusGProxy *_gsm_proxy = NULL; - -static DBusGProxy * -get_power_manager_proxy (void) -{ - if (!_gsm_proxy) - { - DBusGConnection *bus; - GError *error; - - error = NULL; - bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (!bus) - { - g_warning ("Could not connect to session bus: %s", - error->message); - g_error_free (error); - return NULL; - } - - _gsm_proxy = dbus_g_proxy_new_for_name (bus, - GSM_NAME, - GSM_PATH, - GSM_NAME); - dbus_g_connection_unref (bus); - - if (!_gsm_proxy) - { - g_warning ("Creating DBus proxy failed."); - return NULL; - } - } - - return _gsm_proxy; -} +#define INHIBIT_LOGOUT (1U) +#define INHIBIT_SUSPEND (4U) /** * nautilus_inhibit_power_manager: @@ -1062,31 +1026,44 @@ get_power_manager_proxy (void) int nautilus_inhibit_power_manager (const char *message) { - DBusGProxy *proxy; - GError *error; + GDBusConnection *connection; + GVariant *result; + GError *error = NULL; int cookie; - proxy = get_power_manager_proxy (); + g_return_val_if_fail (message != NULL, -1); - g_return_val_if_fail (proxy != NULL, -1); + connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + if (connection == NULL) { + g_warning ("Could not connect to session bus: %s", error->message); + return -1; + } - error = NULL; - cookie = -1; - if (!dbus_g_proxy_call (proxy, "Inhibit", &error, - G_TYPE_STRING, "Nautilus", - G_TYPE_UINT, 0, - G_TYPE_STRING, message, - G_TYPE_UINT, INHIBIT_LOGOUT | INHIBIT_SUSPEND, - G_TYPE_INVALID, - G_TYPE_UINT, &cookie, - G_TYPE_INVALID)) - { + result = g_dbus_connection_call_sync (connection, + GSM_NAME, + GSM_PATH, + GSM_INTERFACE, + "Inhibit", + g_variant_new ("(susu)", + "Nautilus", + (guint) 0, + message, + (guint) (INHIBIT_LOGOUT | INHIBIT_SUSPEND)), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + -1 /* FIXME? */, + NULL, + &error); + g_object_unref (connection); + if (result == NULL) { g_warning ("Could not inhibit power management: %s", error->message); g_error_free (error); return -1; } - return cookie; + g_variant_get (result, "(u)", &cookie); + g_variant_unref (result); + + return (int) cookie; } /** @@ -1100,24 +1077,36 @@ nautilus_inhibit_power_manager (const char *message) void nautilus_uninhibit_power_manager (gint cookie) { - DBusGProxy *proxy; - GError *error; + GDBusConnection *connection; + GVariant *result; + GError *error = NULL; + g_return_if_fail (cookie > 0); - proxy = get_power_manager_proxy (); + connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + if (connection == NULL) { + g_warning ("Could not connect to session bus: %s", error->message); + return; + } - g_return_if_fail (proxy != NULL); - - error = NULL; - - if (!dbus_g_proxy_call (proxy, "Uninhibit", &error, - G_TYPE_UINT, cookie, - G_TYPE_INVALID, - G_TYPE_INVALID)) - { + result = g_dbus_connection_call_sync (connection, + GSM_NAME, + GSM_PATH, + GSM_INTERFACE, + "Uninhibit", + g_variant_new ("(u)", (guint) cookie), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + -1 /* FIXME? */, + NULL, + &error); + g_object_unref (connection); + if (result == NULL) { g_warning ("Could not uninhibit power management: %s", error->message); g_error_free (error); + return; } + + g_variant_unref (result); } /* Returns TRUE if the file is in XDG_DATA_DIRS or diff --git a/libnautilus-private/nautilus-mime-actions.c b/libnautilus-private/nautilus-mime-actions.c index eb7aae42d..b27619964 100644 --- a/libnautilus-private/nautilus-mime-actions.c +++ b/libnautilus-private/nautilus-mime-actions.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include "nautilus-file-attributes.h" @@ -1140,6 +1139,7 @@ typedef struct { char *activation_directory; gboolean user_confirmation; char *uri; + GDBusProxy *proxy; /* PackageKit proxy */ } ActivateParametersInstall; static void @@ -1155,6 +1155,8 @@ activate_parameters_install_free (ActivateParametersInstall *parameters_install) nautilus_file_list_free (parameters_install->files); g_free (parameters_install->activation_directory); g_free (parameters_install->uri); + if (parameters_install->proxy) + g_object_unref (parameters_install->proxy); g_free (parameters_install); } @@ -1300,20 +1302,20 @@ show_unhandled_type_error (ActivateParametersInstall *parameters) } static void -search_for_application_dbus_call_notify_cb (DBusGProxy *proxy, DBusGProxyCall *call, ActivateParametersInstall *parameters_install) +search_for_application_dbus_call_notify_cb (GDBusProxy *proxy, + GAsyncResult *result, + gpointer user_data) { - gboolean ret; + ActivateParametersInstall *parameters_install = user_data; + GVariant *variant; GError *error = NULL; - char *message; - const char *remote = NULL; - ret = dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - if (!ret) { - if (error->domain == DBUS_GERROR && error->code == DBUS_GERROR_REMOTE_EXCEPTION) { - remote = dbus_g_error_get_name (error); - } - /* we already show an error in the installer if not found, just catch generic failure */ - if (remote == NULL || strcmp (remote, "org.freedesktop.PackageKit.Modify.Failed") == 0) { + variant = g_dbus_proxy_call_finish (proxy, result, &error); + if (variant == NULL) { + if (!g_dbus_error_is_remote_error (error) || + g_strcmp0 (g_dbus_error_get_remote_error (error), "org.freedesktop.PackageKit.Modify.Failed") == 0) { + char *message; + message = g_strdup_printf ("%s\n%s", _("There was an internal error trying to search for applications:"), error->message); @@ -1321,10 +1323,13 @@ search_for_application_dbus_call_notify_cb (DBusGProxy *proxy, DBusGProxyCall *c parameters_install->parent_window); g_free (message); } + g_error_free (error); + activate_parameters_install_free (parameters_install); return; } - g_object_unref (proxy); + + g_variant_unref (variant); /* activate the file again */ nautilus_mime_activate_files (parameters_install->parent_window, @@ -1335,36 +1340,17 @@ search_for_application_dbus_call_notify_cb (DBusGProxy *proxy, DBusGProxyCall *c parameters_install->flags, parameters_install->user_confirmation); - /* parameters_install freed by destroy notify */ + activate_parameters_install_free (parameters_install); } static void search_for_application_mime_type (ActivateParametersInstall *parameters_install, const gchar *mime_type) { - DBusGConnection *connection; - DBusGProxy *proxy = NULL; + GdkWindow *window; guint xid = 0; - GError *error = NULL; - DBusGProxyCall *call = NULL; - GtkWidget *dialog; - GdkWindow *window; const char *mime_types[2]; - /* get bus */ - connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (connection == NULL) { - g_error_free (error); - goto out; - } - - /* get proxy - native clients for for KDE and GNOME */ - proxy = dbus_g_proxy_new_for_name (connection, - "org.freedesktop.PackageKit", - "/org/freedesktop/PackageKit", - "org.freedesktop.PackageKit.Modify"); - if (proxy == NULL) { - goto out; - } + g_assert (parameters_install->proxy != NULL); /* get XID from parent window */ window = gtk_widget_get_window (GTK_WIDGET (parameters_install->parent_window)); @@ -1372,40 +1358,23 @@ search_for_application_mime_type (ActivateParametersInstall *parameters_install, xid = GDK_WINDOW_XID (window); } - /* don't timeout, as dbus-glib sets the timeout ~25 seconds */ - dbus_g_proxy_set_default_timeout (proxy, INT_MAX); - - /* invoke the method */ mime_types[0] = mime_type; mime_types[1] = NULL; - call = dbus_g_proxy_begin_call (proxy, "InstallMimeTypes", - (DBusGProxyCallNotify) search_for_application_dbus_call_notify_cb, - parameters_install, - (GDestroyNotify) activate_parameters_install_free, - G_TYPE_UINT, xid, - G_TYPE_STRV, mime_types, - G_TYPE_STRING, "hide-confirm-search", - G_TYPE_INVALID); - if (call == NULL) { - dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_MODAL, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_OK, - _("Could not use system package installer")); - g_signal_connect (G_OBJECT (dialog), "response", - G_CALLBACK (gtk_widget_destroy), NULL); - gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); - gtk_widget_show (dialog); - goto out; - } + + g_dbus_proxy_call (parameters_install->proxy, + "InstallMimeTypes", + g_variant_new ("(u^ass)", + xid, + mime_types, + "hide-confirm-search"), + G_DBUS_CALL_FLAGS_NONE, + G_MAXINT /* no timeout */, + NULL /* cancellable */, + (GAsyncReadyCallback) search_for_application_dbus_call_notify_cb, + parameters_install); nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, "InstallMimeType method invoked for %s", mime_type); -out: - if (call == NULL) { - /* dbus method was not called, so we're not going to get the async dbus callback */ - activate_parameters_install_free (parameters_install); - } } static void @@ -1425,29 +1394,33 @@ application_unhandled_file_install (GtkDialog *dialog, gint response_id, Activat } } -static void -packagekit_present_dbus_call_notify_cb (DBusGProxy *proxy, DBusGProxyCall *call, ActivateParametersInstall *parameters_install) +static gboolean +delete_cb (GtkDialog *dialog) { - gboolean ret; - GError *error = NULL; + gtk_dialog_response (dialog, GTK_RESPONSE_DELETE_EVENT); + return TRUE; +} + +static void +pk_proxy_constructed_cb (GDBusConnection *connection, + GAsyncResult *result, + gpointer user_data) +{ + ActivateParametersInstall *parameters_install = user_data; char *mime_type; char *error_message; - gboolean present; GtkWidget *dialog; + GError *error = NULL; - - ret = dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_BOOLEAN, &present, G_TYPE_INVALID); - if (!ret) { + parameters_install->proxy = g_dbus_proxy_new_finish (result, &error); + if (parameters_install->proxy == NULL) { + nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_USER, + "Failed to construct PackageKit bus proxy: %s", error->message); g_error_free (error); + show_unhandled_type_error (parameters_install); activate_parameters_install_free (parameters_install); - present = FALSE; - goto out; - } - if (!present) { - show_unhandled_type_error (parameters_install); - activate_parameters_install_free (parameters_install); - goto out; + return; } mime_type = nautilus_file_get_mime_type (parameters_install->file); @@ -1463,11 +1436,9 @@ packagekit_present_dbus_call_notify_cb (DBusGProxy *proxy, DBusGProxyCall *call, gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); g_signal_connect (dialog, "response", G_CALLBACK (application_unhandled_file_install), parameters_install); + g_signal_connect (dialog, "delete-event", G_CALLBACK (delete_cb), NULL); gtk_widget_show_all (dialog); g_free (mime_type); - -out: - g_object_unref (proxy); } static void @@ -1477,9 +1448,7 @@ application_unhandled_uri (ActivateParameters *parameters, char *uri) char *mime_type; NautilusFile *file; ActivateParametersInstall *parameters_install; - DBusGConnection *connection; - DBusGProxy *proxy; - DBusGProxyCall *call; + GDBusConnection *connection; GError *error = NULL; file = nautilus_file_get_by_uri (uri); @@ -1495,7 +1464,7 @@ application_unhandled_uri (ActivateParameters *parameters, char *uri) g_object_add_weak_pointer (G_OBJECT (parameters_install->parent_window), (gpointer *)¶meters_install->parent_window); } parameters_install->activation_directory = g_strdup (parameters->activation_directory); - parameters_install->file = nautilus_file_ref (file); + parameters_install->file = file; parameters_install->files = get_file_list_for_launch_locations (parameters->locations); parameters_install->mode = parameters->mode; parameters_install->flags = parameters->flags; @@ -1512,50 +1481,41 @@ application_unhandled_uri (ActivateParameters *parameters, char *uri) /* There is no use trying to look for handlers of application/octet-stream */ if (g_content_type_is_unknown (mime_type)) { show_install_mime = FALSE; + goto out; } - if (!show_install_mime) { - goto out; - } + if (!show_install_mime) { + goto out; + } - /* Check whether PackageKit can be spawned */ - connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (connection == NULL) { - g_error_free (error); - show_install_mime = FALSE; - goto out; - } + connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + if (connection == NULL) { + g_warning ("Could not connect to session bus: %s", error->message); + goto out; + } - proxy = dbus_g_proxy_new_for_name (connection, - DBUS_SERVICE_DBUS, - DBUS_PATH_DBUS, - DBUS_INTERFACE_DBUS); + g_dbus_proxy_new (connection, + G_TYPE_DBUS_PROXY, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | + G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS, + NULL, + "org.freedesktop.PackageKit", + "/org/freedesktop/PackageKit", + "org.freedesktop.PackageKit.Modify", + NULL /* cancellable */, + (GAsyncReadyCallback) pk_proxy_constructed_cb, + parameters_install); - if (proxy == NULL) { - show_install_mime = FALSE; - goto out; - } - call = dbus_g_proxy_begin_call (proxy, "NameHasOwner", - (DBusGProxyCallNotify) packagekit_present_dbus_call_notify_cb, - parameters_install, - NULL, /* Don't want to free user_data as we need to pass it on */ - G_TYPE_STRING, "org.freedesktop.PackageKit", - G_TYPE_INVALID); - if (call == NULL) { - show_install_mime = FALSE; - goto out; - } + g_object_unref (connection); + return; out: - if (!show_install_mime) { - /* show an unhelpful dialog */ - show_unhandled_type_error (parameters_install); - /* The callback wasn't started, so we have to free the parameters */ - activate_parameters_install_free (parameters_install); - } + /* show an unhelpful dialog */ + show_unhandled_type_error (parameters_install); + /* The callback wasn't started, so we have to free the parameters */ + activate_parameters_install_free (parameters_install); - nautilus_file_unref (file); - g_free (mime_type); + g_free (mime_type); } typedef struct { diff --git a/src/nautilus-application.c b/src/nautilus-application.c index d9556e87b..4705404e4 100644 --- a/src/nautilus-application.c +++ b/src/nautilus-application.c @@ -61,7 +61,6 @@ #include #include #include -#include #include #include #include @@ -125,10 +124,6 @@ static void drive_listen_for_eject_button (GDrive *drive, NautilusApplication *application); static void nautilus_application_load_session (NautilusApplication *application); static char * nautilus_application_get_session_data (void); -static void ck_session_active_changed_cb (DBusGProxy *proxy, - gboolean is_active, - void *user_data); - G_DEFINE_TYPE (NautilusApplication, nautilus_application, G_TYPE_OBJECT); @@ -358,9 +353,16 @@ nautilus_application_finalize (GObject *object) application->automount_idle_id = 0; } + if (application->ck_session_watch_id != 0) { + g_bus_unwatch_proxy (application->ck_session_watch_id); + application->ck_session_watch_id = 0; + } + if (application->ck_session_proxy != NULL) { - dbus_g_proxy_disconnect_signal (application->ck_session_proxy, "ActiveChanged", - G_CALLBACK (ck_session_active_changed_cb), NULL); + g_signal_handlers_disconnect_matched (application->ck_session_proxy, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, + application); g_object_unref (application->ck_session_proxy); application->ck_session_proxy = NULL; } @@ -530,98 +532,130 @@ mark_desktop_files_trusted (void) g_free (do_once_file); } -#define CK_NAME "org.freedesktop.ConsoleKit" -#define CK_PATH "/org/freedesktop/ConsoleKit" - +#define CK_NAME "org.freedesktop.ConsoleKit" +#define CK_PATH "/org/freedesktop/ConsoleKit" +#define CK_INTERFACE "org.freedesktop.ConsoleKit" static void -ck_session_active_changed_cb (DBusGProxy *proxy, - gboolean is_active, - void *user_data) +ck_session_proxy_signal_cb (GDBusProxy *proxy, + const char *sender_name, + const char *signal_name, + GVariant *parameters, + gpointer user_data) { NautilusApplication *application = user_data; - application->session_is_active = is_active; + if (g_strcmp0 (signal_name, "ActiveChanged") == 0) { + g_variant_get (parameters, "(b)", &application->session_is_active); + } } static void -ck_call_is_active_cb (DBusGProxy *proxy, - DBusGProxyCall *call_id, - void *user_data) +ck_call_is_active_cb (GDBusProxy *proxy, + GAsyncResult *result, + gpointer user_data) { - gboolean res, is_active; - NautilusApplication *application; + NautilusApplication *application = user_data; + GVariant *variant; - application = user_data; + variant = g_dbus_proxy_call_finish (proxy, result, NULL); + if (variant == NULL) { + application->session_is_active = TRUE; + return; + } - res = dbus_g_proxy_end_call (proxy, call_id, NULL, - G_TYPE_BOOLEAN, &is_active, - G_TYPE_INVALID); - if (!res) { - g_object_unref (proxy); + g_variant_get (variant, "(b)", &application->session_is_active); + g_variant_unref (variant); +} + +static void +ck_session_proxy_constructed_cb (GDBusConnection *connection, + GAsyncResult *result, + gpointer user_data) +{ + NautilusApplication *application = user_data; + GError *error = NULL; + + application->ck_session_proxy = g_dbus_proxy_new_finish (result, &error); + if (application->ck_session_proxy == NULL) { + application->session_is_active = TRUE; + g_object_unref (connection); + return; + } + + g_signal_connect (application->ck_session_proxy, "g-signal", + G_CALLBACK (ck_session_proxy_signal_cb), + application); + + g_dbus_proxy_call (application->ck_session_proxy, + "IsActive", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + (GAsyncReadyCallback) ck_call_is_active_cb, + application); + + g_object_unref (connection); +} + +static void +ck_get_current_session_cb (GDBusConnection *connection, + GAsyncResult *result, + gpointer user_data) +{ + NautilusApplication *application = user_data; + GVariant *variant; + const char *session_path; + GError *error = NULL; + + variant = g_dbus_connection_call_finish (connection, result, &error); + if (variant == NULL) { + g_warning ("Failed to get the current session: %s", error->message); + g_error_free (error); + g_object_unref (connection); application->session_is_active = TRUE; return; } - application->session_is_active = is_active; + g_variant_get (variant, "(&o)", session_path); - dbus_g_proxy_add_signal (proxy, "ActiveChanged", G_TYPE_BOOLEAN, G_TYPE_INVALID); - dbus_g_proxy_connect_signal (proxy, "ActiveChanged", - G_CALLBACK (ck_session_active_changed_cb), application, - NULL); + g_dbus_proxy_new (connection, + G_TYPE_DBUS_PROXY, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + NULL, + CK_NAME, + session_path, + CK_INTERFACE ".Session", + NULL, + (GAsyncReadyCallback) ck_session_proxy_constructed_cb, + application); + + g_variant_unref (variant); } -static void -ck_get_current_session_cb (DBusGProxy *proxy, - DBusGProxyCall *call_id, - void *user_data) -{ - gboolean res; - char *session_id; - NautilusApplication *application; - - application = user_data; - - res = dbus_g_proxy_end_call (proxy, call_id, NULL, - DBUS_TYPE_G_OBJECT_PATH, &session_id, G_TYPE_INVALID); - if (!res) { - g_object_unref (proxy); - - application->session_is_active = TRUE; - return; - } - - application->ck_session_proxy = dbus_g_proxy_new_from_proxy (proxy, CK_NAME ".Session", - session_id); - dbus_g_proxy_begin_call (application->ck_session_proxy, "IsActive", ck_call_is_active_cb, - application, NULL, G_TYPE_INVALID); - - g_free (session_id); - g_object_unref (proxy); -} - - static void do_initialize_consolekit (NautilusApplication *application) { - DBusGConnection *conn; - DBusGProxy *proxy; - GError *error = NULL; + GDBusConnection *connection; - conn = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); - if (error) { - g_error_free (error); + connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); + if (connection == NULL) { + application->session_is_active = TRUE; + return; + } - application->session_is_active = TRUE; - - return; - } - - proxy = dbus_g_proxy_new_for_name (conn, CK_NAME, CK_PATH "/Manager", - CK_NAME ".Manager"); - dbus_g_proxy_begin_call (proxy, "GetCurrentSession", - ck_get_current_session_cb, application, - NULL, G_TYPE_INVALID); + g_dbus_connection_call (connection, + CK_NAME, + CK_PATH "/Manager", + CK_INTERFACE ".Manager", + "GetCurrentSession", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE /* FIXME? */, + -1, + NULL /* FIXME? */, + (GAsyncReadyCallback) ck_get_current_session_cb, + application); } static void diff --git a/src/nautilus-application.h b/src/nautilus-application.h index 95c201e8a..0763e0196 100644 --- a/src/nautilus-application.h +++ b/src/nautilus-application.h @@ -31,7 +31,6 @@ #include #include #include -#include #include #define NAUTILUS_DESKTOP_ICON_VIEW_IID "OAFIID:Nautilus_File_Manager_Desktop_Icon_View" @@ -67,7 +66,8 @@ typedef struct { NautilusUndoManager *undo_manager; GVolumeMonitor *volume_monitor; unsigned int automount_idle_id; - DBusGProxy *ck_session_proxy; + GDBusProxy *ck_session_proxy; + guint ck_session_watch_id; gboolean session_is_active; } NautilusApplication;