[brasero] Fix image format retrieval which failed after several images had been selected



commit c76379db2bcecc2b2d72a7c64adac32d68be34a9
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Wed May 27 20:26:15 2009 +0200

    Fix image format retrieval which failed after several images had been selected
---
 libbrasero-burn/brasero-src-image.c       |    9 +++++----
 libbrasero-burn/brasero-track-image-cfg.c |   14 ++++++++++++--
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/libbrasero-burn/brasero-src-image.c b/libbrasero-burn/brasero-src-image.c
index b4f93e6..e9f9287 100644
--- a/libbrasero-burn/brasero-src-image.c
+++ b/libbrasero-burn/brasero-src-image.c
@@ -229,8 +229,6 @@ brasero_src_image_update (BraseroSrcImage *self)
 	/* See if information retrieval went fine and/or is ready */
 	status = brasero_status_new ();
 	result = brasero_track_get_status (BRASERO_TRACK (priv->track), status);
-	brasero_status_free (status);
-
 	if (result == BRASERO_BURN_NOT_READY) {
 		/* Translators: %s is a path */
 		string = g_strdup_printf (_("\"%s\": loading"), path);
@@ -238,11 +236,13 @@ brasero_src_image_update (BraseroSrcImage *self)
 		goto end;
 	}
 	else if (result != BRASERO_BURN_OK) {
+		/* Translators: %s is a path and image refers to a disc image */
+		string = g_strdup_printf (_("\"%s\": unknown image type"), path);
+
+		error = brasero_status_get_error (status);
 		if (!error)
 			goto end;
 
-		/* Translators: %s is a path and image refers to a disc image */
-		string = g_strdup_printf (_("\"%s\": unknown image type"), path);
 		gtk_widget_set_tooltip_text (GTK_WIDGET (self), error->message);
 		brasero_src_image_error (self, error);
 		g_error_free (error);
@@ -263,6 +263,7 @@ brasero_src_image_update (BraseroSrcImage *self)
 
 end:
 
+	brasero_status_free (status);
 	if (string) {
 		/* This is hackish and meant to avoid ellipsization to make the
 		 * label to small. */
diff --git a/libbrasero-burn/brasero-track-image-cfg.c b/libbrasero-burn/brasero-track-image-cfg.c
index 0688944..ef58364 100644
--- a/libbrasero-burn/brasero-track-image-cfg.c
+++ b/libbrasero-burn/brasero-track-image-cfg.c
@@ -98,18 +98,26 @@ brasero_track_image_cfg_get_info_cb (GObject *object,
 				     GAsyncResult *result,
 				     gpointer user_data)
 {
+	gboolean was_cancelled;
 	BraseroTrackImageInfo *info;
 	BraseroTrackImageCfgPrivate *priv;
 
-	info = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result));
 	priv = BRASERO_TRACK_IMAGE_CFG_PRIVATE (object);
 
+	was_cancelled = g_cancellable_is_cancelled (priv->cancel);
 	if (priv->cancel) {
 		g_object_unref (priv->cancel);
 		priv->cancel = NULL;
 	}
 
-	if (info->format == BRASERO_IMAGE_FORMAT_NONE || info->blocks == 0) {
+	if (was_cancelled) {
+		brasero_track_changed (BRASERO_TRACK (object));
+		return;
+	}
+
+	info = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result));
+	if (info->format == BRASERO_IMAGE_FORMAT_NONE
+	||  info->blocks == 0) {
 		GError *error = NULL;
 
 		g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), &error);
@@ -324,6 +332,8 @@ brasero_track_image_cfg_force_format (BraseroTrackImageCfg *track,
 		if (current_format == format)
 			return BRASERO_BURN_OK;
 	}
+	else if (format == priv->format)
+		return BRASERO_BURN_OK;
 
 	priv->format = format;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]