static void eject_cb (GObject *object, GAsyncResult *result, gpointer nothing) { GError *error = NULL; if (G_IS_VOLUME (object)) { GVolume *volume = G_VOLUME (object); rb_debug ("finishing ejection of volume"); g_volume_eject_with_operation_finish (volume, result, &error); } else if (G_IS_MOUNT (object)) { GMount *mount = G_MOUNT (object); rb_debug ("finishing ejection of mount"); g_mount_eject_with_operation_finish (mount, result, &error); } if (error != NULL) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED_HANDLED)) { rb_error_dialog (NULL, _("Unable to eject"), "%s", error->message); } else { rb_debug ("eject failure has already been handled"); } g_error_free (error); } }
void ejectVolumeAsyncCallback (GObject *source_object, GAsyncResult *res, gpointer user_data) { GVolume *volume = (GVolume*) user_data; ASBiDirElem *item = ASVolume_findGVolume_item (AppState.volumes, volume); if (item) { GError* error = NULL; ASVolume *v = (ASVolume*)item->data; Bool success = g_volume_eject_with_operation_finish (v->gVolume, res, &error); LOCAL_DEBUG_OUT ("result = %p, eror = %p", res, error); clear_flags (v->flags, ASVolume_EjectRequested); if (success) GVolume2ASVolume (v, volume); else show_error( "Eject on volume \"%s\" failed with message \"%s\"", v->name, error ? error->message : "unknown error"); ASVolume_refreshDisplay (v); } }
static void xfdesktop_volume_icon_eject_finish(GObject *object, GAsyncResult *result, gpointer user_data) { XfdesktopVolumeIcon *icon = XFDESKTOP_VOLUME_ICON(user_data); GtkWidget *icon_view = xfdesktop_icon_peek_icon_view(XFDESKTOP_ICON(icon)); GtkWidget *toplevel = icon_view ? gtk_widget_get_toplevel(icon_view) : NULL; GVolume *volume = G_VOLUME(object); GError *error = NULL; gboolean eject_successful; g_return_if_fail(G_IS_VOLUME(object)); g_return_if_fail(G_IS_ASYNC_RESULT(result)); g_return_if_fail(XFDESKTOP_IS_VOLUME_ICON(icon)); eject_successful = g_volume_eject_with_operation_finish(volume, result, &error); if(!eject_successful) { /* ignore GIO errors handled internally */ if(error->domain != G_IO_ERROR || error->code != G_IO_ERROR_FAILED_HANDLED) { gchar *volume_name = g_volume_get_name(volume); gchar *primary = g_markup_printf_escaped(_("Failed to eject \"%s\""), volume_name); /* display an error dialog to inform the user */ xfce_message_dialog(toplevel ? GTK_WINDOW(toplevel) : NULL, _("Eject Failed"), GTK_STOCK_DIALOG_ERROR, primary, error->message, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL); g_free(primary); g_free(volume_name); } g_error_free(error); } #ifdef HAVE_LIBNOTIFY xfdesktop_notify_eject_finish(volume, eject_successful); #endif g_object_unref(icon); }
static void brasero_gio_operation_eject_finish (GObject *source, GAsyncResult *result, gpointer user_data) { BraseroGioOperation *operation = user_data; if (G_IS_DRIVE (source)) operation->result = g_drive_eject_with_operation_finish (G_DRIVE (source), result, &operation->error); else operation->result = g_volume_eject_with_operation_finish (G_VOLUME (source), result, &operation->error); if (operation->error) brasero_gio_operation_end (operation); else if (!operation->result) brasero_gio_operation_end (operation); }
static void _vol_eject_cb (GVolume *volume, GAsyncResult *result, gpointer data) { GError *error = NULL; g_return_if_fail (MPD_IS_STORAGE_DEVICE_TILE (data)); g_volume_eject_with_operation_finish (volume, result, &error); if (error) { mpd_storage_device_tile_show_message ( MPD_STORAGE_DEVICE_TILE (data), get_eject_failed_message (), false); mx_widget_set_disabled (MX_WIDGET (data), FALSE); g_warning ("%s : %s", G_STRLOC, error->message); g_clear_error (&error); } }
static void on_mount_action_finished(GObject* src, GAsyncResult *res, gpointer user_data) { struct MountData* data = user_data; switch(data->action) { case MOUNT_VOLUME: data->ret = g_volume_mount_finish(G_VOLUME(src), res, &data->err); break; case MOUNT_GFILE: data->ret = g_file_mount_enclosing_volume_finish(G_FILE(src), res, &data->err); break; case UMOUNT_MOUNT: data->ret = g_mount_unmount_with_operation_finish(G_MOUNT(src), res, &data->err); break; case EJECT_MOUNT: data->ret = g_mount_eject_with_operation_finish(G_MOUNT(src), res, &data->err); break; case EJECT_VOLUME: data->ret = g_volume_eject_with_operation_finish(G_VOLUME(src), res, &data->err); break; } g_main_loop_quit(data->loop); }
static gboolean g_udisks_mount_eject_with_operation_finish(GMount* base, GAsyncResult* res, GError** error) { GUDisksMount* mnt = G_UDISKS_MOUNT(base); return g_volume_eject_with_operation_finish(G_VOLUME(mnt->vol), res, error); }