static void g_udisks_mount_eject_with_operation (GMount* base, GMountUnmountFlags flags, GMountOperation* mount_operation, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data) { GUDisksMount* mnt = G_UDISKS_MOUNT(base); GDrive* drv = g_mount_get_drive(base); if(drv) { EjectData* data = g_slice_new(EjectData); data->mnt = g_object_ref(mnt); data->callback = callback; data->user_data = user_data; g_drive_eject(drv, flags, cancellable, on_drive_ejected, data); g_object_unref(drv); } }
gboolean vfs_backend_eject_drive (const gchar *cURI) { cd_message ("%s (%s)", __func__, cURI); gchar *cDriveName = _cd_find_drive_name_from_URI (cURI); GDrive *pDrive = _cd_find_drive_from_name (cDriveName); if (pDrive != NULL) { g_drive_eject (pDrive, G_MOUNT_UNMOUNT_NONE, NULL, NULL, NULL); } //g_object_unref (pDrive); //g_free (cDriveName); return TRUE; }