On 18/01/17 14:31, Christophe Fergeau wrote: > On Wed, Jan 18, 2017 at 12:16:52PM -0200, Eduardo Lima (Etrunko) wrote: >> This is done with the new ovirt_foreign_menu_set_current_iso_name_async >> function. >> >> Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> >> --- >> src/ovirt-foreign-menu.c | 117 ++++++++++++++++++++++++++++++++++------------- >> src/ovirt-foreign-menu.h | 10 ++++ >> 2 files changed, 96 insertions(+), 31 deletions(-) >> >> diff --git a/src/ovirt-foreign-menu.c b/src/ovirt-foreign-menu.c >> index a51f2c9..366259a 100644 >> --- a/src/ovirt-foreign-menu.c >> +++ b/src/ovirt-foreign-menu.c >> @@ -344,38 +344,102 @@ menu_item_set_active_no_signal(GtkMenuItem *menuitem, >> } >> >> >> -static void updated_cdrom_cb(GObject *source_object, >> - GAsyncResult *result, >> - gpointer user_data) >> +static void iso_name_set_cb(GObject *source_object, >> + GAsyncResult *result, >> + gpointer user_data) >> { >> GError *error = NULL; >> - OvirtForeignMenu *foreign_menu; >> + GTask *task = G_TASK(user_data); >> + OvirtForeignMenu *foreign_menu = OVIRT_FOREIGN_MENU(g_task_get_source_object(task)); >> gboolean updated; >> >> - foreign_menu = OVIRT_FOREIGN_MENU(user_data); >> updated = ovirt_cdrom_update_finish(OVIRT_CDROM(source_object), >> result, &error); >> - g_debug("Finished updating cdrom content"); >> if (updated) { >> + g_debug("Finished updating cdrom content: %s", foreign_menu->priv->next_iso_name); >> g_free(foreign_menu->priv->current_iso_name); >> foreign_menu->priv->current_iso_name = foreign_menu->priv->next_iso_name; >> foreign_menu->priv->next_iso_name = NULL; >> - g_object_notify(G_OBJECT(foreign_menu), "file"); >> + g_task_return_boolean(task, TRUE); >> + goto end; >> + } >> + >> + /* Reset old state back as we were not successful in switching to >> + * the new ISO */ >> + g_debug("setting OvirtCdrom:file back to '%s'", >> + foreign_menu->priv->current_iso_name); >> + g_object_set(foreign_menu->priv->cdrom, "file", >> + foreign_menu->priv->current_iso_name, NULL); >> + g_clear_pointer(&foreign_menu->priv->next_iso_name, g_free); >> + >> + if (error != NULL) { >> + g_warning("failed to update cdrom resource: %s", error->message); >> + g_task_return_error(task, error); >> } else { >> - /* Reset old state back as we were not successful in switching to >> - * the new ISO */ >> - const char *current_file = foreign_menu->priv->current_iso_name; >> + g_warn_if_reached(); >> + g_task_return_new_error(task, OVIRT_ERROR, OVIRT_ERROR_FAILED, >> + "failed to update cdrom resource"); >> + } >> >> - if (error != NULL) { >> - g_warning("failed to update cdrom resource: %s", error->message); >> - g_clear_error(&error); >> - } >> - g_debug("setting OvirtCdrom:file back to '%s'", >> - current_file?current_file:NULL); >> - g_object_set(foreign_menu->priv->cdrom, "file", current_file, NULL); >> +end: >> + g_object_unref(task); >> +} >> + >> + >> +void ovirt_foreign_menu_set_current_iso_name_async(OvirtForeignMenu *foreign_menu, >> + const char *name, >> + GCancellable *cancellable, >> + GAsyncReadyCallback callback, >> + gpointer user_data) >> +{ >> + GTask *task; >> + >> + g_return_if_fail(foreign_menu->priv->cdrom != NULL); >> + g_return_if_fail(foreign_menu->priv->next_iso_name == NULL); >> + >> + if (name) { >> + g_debug("Updating VM cdrom image to '%s'", name); >> + foreign_menu->priv->next_iso_name = g_strdup(name); >> + } else { >> + g_debug("Removing current cdrom image"); >> + foreign_menu->priv->next_iso_name = NULL; >> } >> >> - g_clear_pointer(&foreign_menu->priv->next_iso_name, g_free); >> + g_object_set(foreign_menu->priv->cdrom, >> + "file", name, >> + NULL); >> + >> + task = g_task_new(foreign_menu, cancellable, callback, user_data); >> + ovirt_cdrom_update_async(foreign_menu->priv->cdrom, TRUE, >> + foreign_menu->priv->proxy, NULL, >> + iso_name_set_cb, task); > > I think you can pass 'cancellable' to that method. > > Apart from this small thing, looks good to me, > > Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> Fixed and pushed, thanks. -- Eduardo de Barros Lima (Etrunko) Software Engineer - RedHat etrunko@xxxxxxxxxx
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list