[brasero: 13/18] Some more fixes for crashes and size retrieval



commit b85a515fc74fc344931c2f422d6dddf478397e97
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Sun May 3 14:44:06 2009 +0200

    Some more fixes for crashes and size retrieval
---
 libbrasero-burn/brasero-data-project.c   |   12 ++++++------
 libbrasero-burn/brasero-data-project.h   |   10 +++++-----
 libbrasero-burn/brasero-data-session.c   |    4 ++--
 libbrasero-burn/brasero-track-data-cfg.c |   24 ++++++++++++++----------
 src/brasero-data-disc.c                  |   10 +++++-----
 5 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/libbrasero-burn/brasero-data-project.c b/libbrasero-burn/brasero-data-project.c
index 1d0871f..aa8893c 100644
--- a/libbrasero-burn/brasero-data-project.c
+++ b/libbrasero-burn/brasero-data-project.c
@@ -2988,8 +2988,8 @@ brasero_data_project_sum_graft_size_cb (gpointer key,
 	*sum_value += BRASERO_FILE_NODE_SECTORS (node);
 }
 
-guint
-brasero_data_project_get_size (BraseroDataProject *self)
+goffset
+brasero_data_project_get_sectors (BraseroDataProject *self)
 {
 	BraseroDataProjectPrivate *priv;
 	guint retval = 0;
@@ -3004,7 +3004,7 @@ brasero_data_project_get_size (BraseroDataProject *self)
 }
 
 struct _BraseroFileSize {
-	guint sum;
+	goffset sum;
 	BraseroFileNode *node;
 };
 typedef struct _BraseroFileSize BraseroFileSize;
@@ -3030,9 +3030,9 @@ brasero_data_project_folder_size_cb (const gchar *uri,
 	}
 }
 
-guint
-brasero_data_project_get_folder_size (BraseroDataProject *self,
-				      BraseroFileNode *node)
+goffset
+brasero_data_project_get_folder_sectors (BraseroDataProject *self,
+					 BraseroFileNode *node)
 {
 	BraseroDataProjectPrivate *priv;
 	BraseroFileSize size;
diff --git a/libbrasero-burn/brasero-data-project.h b/libbrasero-burn/brasero-data-project.h
index ac16698..27e4c79 100644
--- a/libbrasero-burn/brasero-data-project.h
+++ b/libbrasero-burn/brasero-data-project.h
@@ -120,12 +120,12 @@ GType brasero_data_project_get_type (void) G_GNUC_CONST;
 void
 brasero_data_project_reset (BraseroDataProject *project);
 
-guint
-brasero_data_project_get_size (BraseroDataProject *project);
+goffset
+brasero_data_project_get_sectors (BraseroDataProject *project);
 
-guint
-brasero_data_project_get_folder_size (BraseroDataProject *project,
-				      BraseroFileNode *node);
+goffset
+brasero_data_project_get_folder_sectors (BraseroDataProject *project,
+					 BraseroFileNode *node);
 
 gboolean
 brasero_data_project_get_contents (BraseroDataProject *project,
diff --git a/libbrasero-burn/brasero-data-session.c b/libbrasero-burn/brasero-data-session.c
index c3cf5a2..f8f58d4 100644
--- a/libbrasero-burn/brasero-data-session.c
+++ b/libbrasero-burn/brasero-data-session.c
@@ -216,11 +216,11 @@ brasero_data_session_check_size (BraseroDataSession *self)
 	BraseroDataSessionPrivate *priv;
 	gint64 max_sectors = 0;
 	gint64 medium_sect = 0;
-	gint64 sectors = 0;
+	goffset sectors = 0;
 
 	priv = BRASERO_DATA_SESSION_PRIVATE (self);
 
-	sectors = brasero_data_project_get_size (BRASERO_DATA_PROJECT (self));
+	sectors = brasero_data_project_get_sectors (BRASERO_DATA_PROJECT (self));
 	brasero_medium_get_free_space (priv->loaded,
 				       NULL,
 				       &medium_sect);
diff --git a/libbrasero-burn/brasero-track-data-cfg.c b/libbrasero-burn/brasero-track-data-cfg.c
index dcd3e7b..3dd76af 100644
--- a/libbrasero-burn/brasero-track-data-cfg.c
+++ b/libbrasero-burn/brasero-track-data-cfg.c
@@ -704,17 +704,18 @@ brasero_track_data_cfg_get_value (GtkTreeModel *model,
 	case BRASERO_DATA_TREE_MODEL_PERCENT:
 		g_value_init (value, G_TYPE_INT);
 		if (!node->is_imported && !brasero_data_vfs_is_active (BRASERO_DATA_VFS (priv->tree))) {
-			gint64 size;
-			guint node_size;
+			gint64 sectors;
+			goffset node_sectors;
 
-			size = brasero_data_project_get_size (BRASERO_DATA_PROJECT (priv->tree));
+			sectors = brasero_data_project_get_sectors (BRASERO_DATA_PROJECT (priv->tree));
 
 			if (!node->is_file)
-				node_size = brasero_data_project_get_folder_size (BRASERO_DATA_PROJECT (priv->tree), node);
+				node_sectors = brasero_data_project_get_folder_sectors (BRASERO_DATA_PROJECT (priv->tree), node);
 			else
-				node_size = BRASERO_FILE_NODE_SECTORS (node);
-			if (size)
-				g_value_set_int (value, MAX (0, MIN (node_size * 100 / size, 100)));
+				node_sectors = BRASERO_FILE_NODE_SECTORS (node);
+
+			if (sectors)
+				g_value_set_int (value, MAX (0, MIN (node_sectors * 100 / sectors, 100)));
 			else
 				g_value_set_int (value, 0);
 		}
@@ -1570,6 +1571,9 @@ brasero_track_data_cfg_add (BraseroTrackDataCfg *track,
 		return FALSE;
 
 	parent_node = brasero_track_data_cfg_path_to_node (track, parent);
+	if (parent_node && parent_node->is_file)
+		parent_node = parent_node->parent;
+
 	return (brasero_data_project_add_loading_node (BRASERO_DATA_PROJECT (BRASERO_DATA_PROJECT (priv->tree)), uri, parent_node) != NULL);
 }
 
@@ -1960,13 +1964,13 @@ brasero_track_data_cfg_get_size (BraseroTrack *track,
 				 goffset *block_size)
 {
 	BraseroTrackDataCfgPrivate *priv;
-	goffset bytes = 0;
+	goffset sectors = 0;
 
 	priv = BRASERO_TRACK_DATA_CFG_PRIVATE (track);
 
-	bytes = brasero_data_project_get_size (BRASERO_DATA_PROJECT (priv->tree));
+	sectors = brasero_data_project_get_sectors (BRASERO_DATA_PROJECT (priv->tree));
 	if (blocks)
-		*blocks = BRASERO_BYTES_TO_SECTORS (bytes, 2048);
+		*blocks = sectors;
 
 	if (block_size)
 		*block_size = 2048;
diff --git a/src/brasero-data-disc.c b/src/brasero-data-disc.c
index a86b113..db274b6 100644
--- a/src/brasero-data-disc.c
+++ b/src/brasero-data-disc.c
@@ -924,7 +924,7 @@ brasero_data_disc_deep_directory_cb (BraseroTrackDataCfg *project,
 static gboolean
 brasero_data_disc_size_changed (gpointer user_data)
 {
-	gint64 bytes;
+	goffset sectors;
 	BraseroDataDisc *self;
 	BraseroDataDiscPrivate *priv;
 
@@ -932,9 +932,9 @@ brasero_data_disc_size_changed (gpointer user_data)
 	priv = BRASERO_DATA_DISC_PRIVATE (self);
 
 	brasero_track_get_size (BRASERO_TRACK (priv->project),
-				NULL,
-				&bytes);
-	brasero_disc_size_changed (BRASERO_DISC (self), bytes);
+				&sectors,
+				NULL);
+	brasero_disc_size_changed (BRASERO_DISC (self), sectors);
 
 	priv->size_changed_id = 0;
 	return FALSE;
@@ -1482,7 +1482,7 @@ brasero_data_disc_get_status (BraseroDisc *disc,
 
 	brasero_status_free (status);
 
-	if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (priv->project), NULL))
+	if (!gtk_tree_model_iter_n_children (GTK_TREE_MODEL (priv->project), NULL))
 		return BRASERO_DISC_ERROR_EMPTY_SELECTION;
 
 	return BRASERO_DISC_OK;



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