diff options
author | Alexander Larsson <alexl@redhat.com> | 2008-01-11 09:17:28 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2008-01-11 09:17:28 +0000 |
commit | 64e052d5b43bcb033187e46aaafea4f867e10a75 (patch) | |
tree | a9dd2fb52294968fe65b7c4f918895a0d220631c /client | |
parent | ed7cfa1b785fd70da0945518878197d61897e6b1 (diff) | |
download | gvfs-64e052d5b43bcb033187e46aaafea4f867e10a75.tar.gz |
Implement unmount_mountable and eject_mountable on client side.
2008-01-11 Alexander Larsson <alexl@redhat.com>
* client/gdaemonfile.c:
* common/gvfsdaemonprotocol.h:
Implement unmount_mountable and eject_mountable
on client side.
* common/gmountoperationdbus.c:
Fix warnings
* daemon/gvfsbackend.[ch]:
* daemon/gvfsjobunmountmountable.[ch]:
Add unmount_mountable and eject_mountable in daemon.
* daemon/gvfsbackendcomputer.c:
Implement unmount_mountable and eject_mountable
* daemon/gvfsbackendlocaltest.c:
Update to latest API
* daemon/gvfsbackendsftp.c:
Fix indentation
* daemon/gvfsjobunmount.c:
Always allow unmount if unmount is not
implemented.
svn path=/trunk/; revision=1093
Diffstat (limited to 'client')
-rw-r--r-- | client/gdaemonfile.c | 88 |
1 files changed, 86 insertions, 2 deletions
diff --git a/client/gdaemonfile.c b/client/gdaemonfile.c index ebf24b92..4db2b43c 100644 --- a/client/gdaemonfile.c +++ b/client/gdaemonfile.c @@ -821,19 +821,22 @@ query_info_async_cb (DBusMessage *reply, static void g_daemon_file_query_info_async (GFile *file, const char *attributes, - GFileQueryInfoFlags flags, + GFileQueryInfoFlags flags, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { + guint32 dbus_flags; + + dbus_flags = flags; do_async_path_call (file, G_VFS_DBUS_MOUNT_OP_QUERY_INFO, cancellable, callback, user_data, query_info_async_cb, NULL, NULL, DBUS_TYPE_STRING, &attributes, - DBUS_TYPE_UINT32, &flags, + DBUS_TYPE_UINT32, &dbus_flags, 0); } @@ -1300,6 +1303,83 @@ g_daemon_file_mount_mountable_finish (GFile *file, return NULL; } +static void +eject_mountable_async_cb (DBusMessage *reply, + DBusConnection *connection, + GSimpleAsyncResult *result, + GCancellable *cancellable, + gpointer callback_data) +{ + g_simple_async_result_complete (result); +} + +static void +g_daemon_file_eject_mountable (GFile *file, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + guint32 dbus_flags; + + dbus_flags = flags; + do_async_path_call (file, + G_VFS_DBUS_MOUNT_OP_EJECT_MOUNTABLE, + cancellable, + callback, user_data, + eject_mountable_async_cb, + NULL, NULL, + DBUS_TYPE_UINT32, &dbus_flags, + 0); +} + +static gboolean +g_daemon_file_eject_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error) +{ + return TRUE; +} + +static void +unmount_mountable_async_cb (DBusMessage *reply, + DBusConnection *connection, + GSimpleAsyncResult *result, + GCancellable *cancellable, + gpointer callback_data) +{ + g_simple_async_result_complete (result); +} + +static void +g_daemon_file_unmount_mountable (GFile *file, + GMountUnmountFlags flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + guint32 dbus_flags; + + dbus_flags = flags; + do_async_path_call (file, + G_VFS_DBUS_MOUNT_OP_UNMOUNT_MOUNTABLE, + cancellable, + callback, user_data, + eject_mountable_async_cb, + NULL, NULL, + DBUS_TYPE_UINT32, &dbus_flags, + 0); +} + +static gboolean +g_daemon_file_unmount_mountable_finish (GFile *file, + GAsyncResult *result, + GError **error) +{ + return TRUE; +} + + typedef struct { GFile *file; GMountOperation *mount_operation; @@ -1986,6 +2066,10 @@ g_daemon_file_file_iface_init (GFileIface *iface) iface->mount_enclosing_volume_finish = g_daemon_file_mount_enclosing_volume_finish; iface->mount_mountable = g_daemon_file_mount_mountable; iface->mount_mountable_finish = g_daemon_file_mount_mountable_finish; + iface->unmount_mountable = g_daemon_file_unmount_mountable; + iface->unmount_mountable_finish = g_daemon_file_unmount_mountable_finish; + iface->eject_mountable = g_daemon_file_eject_mountable; + iface->eject_mountable_finish = g_daemon_file_eject_mountable_finish; iface->query_filesystem_info = g_daemon_file_query_filesystem_info; iface->set_display_name = g_daemon_file_set_display_name; iface->delete_file = g_daemon_file_delete; |