static void drive_poll_for_media_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { GdkScreen *screen; GError *error; char *primary; char *name; error = NULL; if (!g_drive_poll_for_media_finish (G_DRIVE (source_object), res, &error)) { if (error->code != G_IO_ERROR_FAILED_HANDLED) { screen = GDK_SCREEN (user_data); name = g_drive_get_name (G_DRIVE (source_object)); primary = g_strdup_printf (_("Unable to scan %s for media changes"), name); g_free (name); panel_error_dialog (NULL, screen, "cannot_scan_drive", TRUE, primary, error->message); g_free (primary); } g_error_free (error); } //FIXME: should we mount the volume and activate the root of the new //mount? }
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); }