[brasero] New BraseroSessionSpan object which adds the capabilities to span the current session on multiple di
- From: Philippe Rouquier <philippr src gnome org>
- To: svn-commits-list gnome org
- Subject: [brasero] New BraseroSessionSpan object which adds the capabilities to span the current session on multiple di
- Date: Sun, 17 May 2009 12:25:42 -0400 (EDT)
commit e8790c48c315dbafe9790bf1cbbacdc51450a947
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Sat May 16 11:07:27 2009 +0200
New BraseroSessionSpan object which adds the capabilities to span the current session on multiple discs
---
libbrasero-burn/Makefile.am | 5 ++++-
libbrasero-burn/brasero-data-project.c | 10 ++++++----
libbrasero-burn/brasero-data-project.h | 2 +-
libbrasero-burn/brasero-session-cfg.c | 2 +-
libbrasero-burn/brasero-session-cfg.h | 5 +++--
libbrasero-burn/brasero-session.c | 7 ++++---
libbrasero-burn/brasero-track-data-cfg.c | 30 +++++++++++++-----------------
libbrasero-burn/brasero-track-data-cfg.h | 9 +++++++++
8 files changed, 41 insertions(+), 29 deletions(-)
diff --git a/libbrasero-burn/Makefile.am b/libbrasero-burn/Makefile.am
index c1f4f88..95e236a 100644
--- a/libbrasero-burn/Makefile.am
+++ b/libbrasero-burn/Makefile.am
@@ -46,6 +46,7 @@ libbraseroburninclude_HEADERS = \
brasero-track-image.h \
brasero-track-image-cfg.h \
brasero-session.h \
+ brasero-session-span.h \
brasero-session-cfg.h \
brasero-burn.h \
brasero-burn-options.h \
@@ -189,7 +190,9 @@ libbrasero_burn_la_SOURCES = \
brasero-data-options.c \
brasero-data-options.h \
brasero-video-options.h \
- brasero-video-options.c
+ brasero-video-options.c \
+ brasero-session-span.h \
+ brasero-session-span.c
if BUILD_INOTIFY
libbrasero_burn_la_SOURCES += brasero-file-monitor.c brasero-file-monitor.h
diff --git a/libbrasero-burn/brasero-data-project.c b/libbrasero-burn/brasero-data-project.c
index 8f0ec4f..9ef2254 100644
--- a/libbrasero-burn/brasero-data-project.c
+++ b/libbrasero-burn/brasero-data-project.c
@@ -2546,7 +2546,7 @@ brasero_data_project_span_generate (BraseroDataProject *self,
brasero_track_data_set_source (track, grafts, excluded);
}
-gboolean
+BraseroBurnResult
brasero_data_project_span (BraseroDataProject *self,
goffset max_sectors,
gboolean append_slash,
@@ -2560,8 +2560,9 @@ brasero_data_project_span (BraseroDataProject *self,
priv = BRASERO_DATA_PROJECT_PRIVATE (self);
+ /* When empty this is an error */
if (!g_hash_table_size (priv->grafts))
- return FALSE;
+ return BRASERO_BURN_ERR;
callback_data.files_num = 0;
callback_data.grafts = NULL;
@@ -2640,8 +2641,9 @@ brasero_data_project_span (BraseroDataProject *self,
children = children->next;
}
+ /* This means it's finished */
if (!callback_data.grafts)
- return FALSE;
+ return BRASERO_BURN_OK;
brasero_data_project_span_generate (self,
&callback_data,
@@ -2655,7 +2657,7 @@ brasero_data_project_span (BraseroDataProject *self,
g_slist_free (callback_data.grafts);
g_slist_free (callback_data.joliet_grafts);
- return TRUE;
+ return BRASERO_BURN_RETRY;
}
void
diff --git a/libbrasero-burn/brasero-data-project.h b/libbrasero-burn/brasero-data-project.h
index eabf6fa..4d81134 100644
--- a/libbrasero-burn/brasero-data-project.h
+++ b/libbrasero-burn/brasero-data-project.h
@@ -231,7 +231,7 @@ brasero_data_project_set_sort_function (BraseroDataProject *project,
GtkSortType sort_type,
GCompareFunc sort_func);
-gboolean
+BraseroBurnResult
brasero_data_project_span (BraseroDataProject *project,
goffset max_sectors,
gboolean append_slash,
diff --git a/libbrasero-burn/brasero-session-cfg.c b/libbrasero-burn/brasero-session-cfg.c
index 1d60b89..39539e9 100644
--- a/libbrasero-burn/brasero-session-cfg.c
+++ b/libbrasero-burn/brasero-session-cfg.c
@@ -81,7 +81,7 @@ enum
static guint session_cfg_signals [LAST_SIGNAL] = { 0 };
-G_DEFINE_TYPE (BraseroSessionCfg, brasero_session_cfg, BRASERO_TYPE_BURN_SESSION);
+G_DEFINE_TYPE (BraseroSessionCfg, brasero_session_cfg, BRASERO_TYPE_SESSION_SPAN);
#define BRASERO_DEST_SAVED_FLAGS (BRASERO_DRIVE_PROPERTIES_FLAGS|BRASERO_BURN_FLAG_MULTI)
#define BRASERO_DRIVE_PROPERTIES_KEY "/apps/brasero/drives"
diff --git a/libbrasero-burn/brasero-session-cfg.h b/libbrasero-burn/brasero-session-cfg.h
index 1aaa629..8d6ec5b 100644
--- a/libbrasero-burn/brasero-session-cfg.h
+++ b/libbrasero-burn/brasero-session-cfg.h
@@ -34,6 +34,7 @@
#include <glib-object.h>
#include <brasero-session.h>
+#include <brasero-session-span.h>
G_BEGIN_DECLS
@@ -49,12 +50,12 @@ typedef struct _BraseroSessionCfg BraseroSessionCfg;
struct _BraseroSessionCfgClass
{
- BraseroBurnSessionClass parent_class;
+ BraseroSessionSpanClass parent_class;
};
struct _BraseroSessionCfg
{
- BraseroBurnSession parent_instance;
+ BraseroSessionSpan parent_instance;
};
GType brasero_session_cfg_get_type (void) G_GNUC_CONST;
diff --git a/libbrasero-burn/brasero-session.c b/libbrasero-burn/brasero-session.c
index 2f9f672..a15c8b1 100644
--- a/libbrasero-burn/brasero-session.c
+++ b/libbrasero-burn/brasero-session.c
@@ -1199,6 +1199,10 @@ brasero_burn_session_pop_tracks (BraseroBurnSession *self)
priv = BRASERO_BURN_SESSION_PRIVATE (self);
+ /* Don't go further if there is no list of tracks on the pile */
+ if (!priv->pile_tracks)
+ return;
+
if (priv->tracks) {
brasero_burn_session_stop_tracks_monitoring (self);
@@ -1214,9 +1218,6 @@ brasero_burn_session_pop_tracks (BraseroBurnSession *self)
}
}
- if (!priv->pile_tracks)
- return;
-
sources = priv->pile_tracks->data;
priv->pile_tracks = g_slist_remove (priv->pile_tracks, sources);
priv->tracks = sources;
diff --git a/libbrasero-burn/brasero-track-data-cfg.c b/libbrasero-burn/brasero-track-data-cfg.c
index a3b2e38..7eeae09 100644
--- a/libbrasero-burn/brasero-track-data-cfg.c
+++ b/libbrasero-burn/brasero-track-data-cfg.c
@@ -2301,34 +2301,30 @@ brasero_track_data_cfg_session_loaded_cb (BraseroDataSession *session,
loaded);
}
-static BraseroTrack *
+BraseroBurnResult
brasero_track_data_cfg_span (BraseroTrackDataCfg *track,
- goffset sectors)
+ goffset sectors,
+ BraseroTrackData *new_track)
{
BraseroTrackDataCfgPrivate *priv;
- BraseroTrackData *new_track;
- gboolean res;
+ BraseroBurnResult result;
priv = BRASERO_TRACK_DATA_CFG_PRIVATE (track);
if (priv->loading
|| brasero_data_vfs_is_active (BRASERO_DATA_VFS (priv->tree))
|| brasero_data_session_get_loaded_medium (BRASERO_DATA_SESSION (priv->tree)) != NULL)
- return NULL;
-
- new_track = brasero_track_data_new ();
- res = brasero_data_project_span (BRASERO_DATA_PROJECT (priv->tree),
- sectors,
- TRUE,
- TRUE, /* FIXME */
- new_track);
+ return BRASERO_BURN_NOT_READY;
- if (!res) {
- g_object_unref (new_track);
- return NULL;
- }
+ result = brasero_data_project_span (BRASERO_DATA_PROJECT (priv->tree),
+ sectors,
+ TRUE,
+ TRUE, /* FIXME */
+ new_track);
+ if (result != BRASERO_BURN_RETRY)
+ return result;
brasero_track_tag_copy_missing (BRASERO_TRACK (new_track), BRASERO_TRACK (track));
- return BRASERO_TRACK (new_track);
+ return BRASERO_BURN_RETRY;
}
static void
diff --git a/libbrasero-burn/brasero-track-data-cfg.h b/libbrasero-burn/brasero-track-data-cfg.h
index fe422ec..fc74ecb 100644
--- a/libbrasero-burn/brasero-track-data-cfg.h
+++ b/libbrasero-burn/brasero-track-data-cfg.h
@@ -148,6 +148,15 @@ brasero_track_data_cfg_restore (BraseroTrackDataCfg *track,
GtkTreeModel *
brasero_track_data_cfg_get_filtered_model (BraseroTrackDataCfg *track);
+/**
+ * Track Spanning
+ */
+
+BraseroBurnResult
+brasero_track_data_cfg_span (BraseroTrackDataCfg *track,
+ goffset sectors,
+ BraseroTrackData *new_track);
+
G_END_DECLS
#endif /* _BRASERO_TRACK_DATA_CFG_H_ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]