Port to GDBus

Bug #618910.
This commit is contained in:
Christian Persch 2010-05-17 20:22:54 +02:00 committed by Cosimo Cecchi
parent 6cba2c2bca
commit 8a58f4e298
5 changed files with 252 additions and 270 deletions

View file

@ -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"

View file

@ -40,7 +40,6 @@
#include <glib/gi18n.h>
#include <glib/gstdio.h>
#include <gio/gio.h>
#include <dbus/dbus-glib.h>
#include <unistd.h>
#include <stdlib.h>
@ -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

View file

@ -32,7 +32,6 @@
#include <glib/gi18n.h>
#include <glib/gstdio.h>
#include <string.h>
#include <dbus/dbus-glib.h>
#include <gdk/gdkx.h>
#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 *)&parameters_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 {

View file

@ -61,7 +61,6 @@
#include <glib/gstdio.h>
#include <glib/gi18n.h>
#include <gio/gio.h>
#include <dbus/dbus-glib.h>
#include <eel/eel-gtk-extensions.h>
#include <eel/eel-gtk-macros.h>
#include <eel/eel-stock-dialogs.h>
@ -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

View file

@ -31,7 +31,6 @@
#include <gio/gio.h>
#include <unique/unique.h>
#include <libegg/eggsmclient.h>
#include <dbus/dbus-glib.h>
#include <libnautilus-private/nautilus-undo-manager.h>
#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;