[brasero/gnome-2-30] Optimization for session configuration object
- From: Philippe Rouquier <philippr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [brasero/gnome-2-30] Optimization for session configuration object
- Date: Mon, 15 Nov 2010 16:08:41 +0000 (UTC)
commit 7b3ad4adf98ee3cfb247aa38ccf3f7913f1566f2
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Sat Oct 9 15:17:00 2010 +0200
Optimization for session configuration object
libbrasero-burn/brasero-session-cfg.c | 264 +++++++++++++++++++--------------
1 files changed, 156 insertions(+), 108 deletions(-)
---
diff --git a/libbrasero-burn/brasero-session-cfg.c b/libbrasero-burn/brasero-session-cfg.c
index ebf7cc8..55ed18f 100644
--- a/libbrasero-burn/brasero-session-cfg.c
+++ b/libbrasero-burn/brasero-session-cfg.c
@@ -73,6 +73,11 @@ struct _BraseroSessionCfgPrivate
gchar *output;
+ /* Do some caching to improve performances */
+ BraseroTrackType *source;
+ goffset disc_size;
+ goffset session_size;
+
BraseroSessionError is_valid;
guint CD_TEXT_modified:1;
@@ -376,7 +381,7 @@ brasero_session_cfg_get_gconf_key (BraseroSessionCfg *self,
BraseroMedium *medium,
const gchar *property)
{
- BraseroTrackType *type;
+ BraseroSessionCfgPrivate *priv;
BraseroDrive *drive;
gchar *display_name;
gchar *key = NULL;
@@ -406,27 +411,26 @@ brasero_session_cfg_get_gconf_key (BraseroSessionCfg *self,
return NULL;
}
- type = brasero_track_type_new ();
- brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), type);
- if (brasero_track_type_get_has_medium (type))
+ priv = BRASERO_SESSION_CFG_PRIVATE (self);
+ if (brasero_track_type_get_has_medium (priv->source))
key = g_strdup_printf ("%s/%s/disc_%s/%s",
BRASERO_DRIVE_PROPERTIES_KEY,
display_name,
disc_type,
property);
- else if (brasero_track_type_get_has_data (type))
+ else if (brasero_track_type_get_has_data (priv->source))
key = g_strdup_printf ("%s/%s/data_%s/%s",
BRASERO_DRIVE_PROPERTIES_KEY,
display_name,
disc_type,
property);
- else if (brasero_track_type_get_has_image (type))
+ else if (brasero_track_type_get_has_image (priv->source))
key = g_strdup_printf ("%s/%s/image_%s/%s",
BRASERO_DRIVE_PROPERTIES_KEY,
display_name,
disc_type,
property);
- else if (brasero_track_type_get_has_stream (type))
+ else if (brasero_track_type_get_has_stream (priv->source))
key = g_strdup_printf ("%s/%s/audio_%s/%s",
BRASERO_DRIVE_PROPERTIES_KEY,
display_name,
@@ -439,7 +443,6 @@ brasero_session_cfg_get_gconf_key (BraseroSessionCfg *self,
disc_type,
property);
- brasero_track_type_free (type);
g_free (display_name);
g_free (disc_type);
return key;
@@ -668,6 +671,16 @@ brasero_session_cfg_set_drive_properties_flags (BraseroSessionCfg *self,
priv = BRASERO_SESSION_CFG_PRIVATE (self);
original_flags = brasero_burn_session_get_flags (BRASERO_BURN_SESSION (self));
+
+ /* If the session is invalid no need to check the flags: just add them.
+ * The correct flags will be re-computed anyway when the session becomes
+ * valid again. */
+ if (priv->is_valid != BRASERO_SESSION_VALID) {
+ BRASERO_BURN_LOG ("Session not ready for flag computation currently: adding flags (will update later)");
+ brasero_burn_session_set_flags (BRASERO_BURN_SESSION (self), flags);
+ return;
+ }
+
BRASERO_BURN_LOG ("Resetting all flags");
BRASERO_BURN_LOG_FLAGS (original_flags, "Current are");
BRASERO_BURN_LOG_FLAGS (flags, "New should be");
@@ -794,7 +807,6 @@ static void
brasero_session_cfg_set_drive_properties (BraseroSessionCfg *self)
{
BraseroSessionCfgPrivate *priv;
- BraseroTrackType *source;
BraseroBurnFlag flags;
BraseroMedium *medium;
BraseroDrive *drive;
@@ -854,8 +866,6 @@ brasero_session_cfg_set_drive_properties (BraseroSessionCfg *self)
g_object_unref (client);
- source = brasero_track_type_new ();
- brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), source);
if (brasero_burn_session_same_src_dest_drive (BRASERO_BURN_SESSION (self))) {
/* Special case */
if (value) {
@@ -874,9 +884,9 @@ brasero_session_cfg_set_drive_properties (BraseroSessionCfg *self)
flags = BRASERO_BURN_FLAG_EJECT|
BRASERO_BURN_FLAG_BURNPROOF;
- if (brasero_track_type_get_has_data (source)
- || brasero_track_type_get_has_medium (source)
- || brasero_track_type_get_has_image (source))
+ if (brasero_track_type_get_has_data (priv->source)
+ || brasero_track_type_get_has_medium (priv->source)
+ || brasero_track_type_get_has_image (priv->source))
flags |= BRASERO_BURN_FLAG_NO_TMP_FILES;
}
else {
@@ -884,7 +894,6 @@ brasero_session_cfg_set_drive_properties (BraseroSessionCfg *self)
flags = gconf_value_get_int (value) & BRASERO_DEST_SAVED_FLAGS;
gconf_value_free (value);
}
- brasero_track_type_free (source);
brasero_session_cfg_add_drive_properties_flags (self, flags);
}
@@ -917,9 +926,7 @@ brasero_session_cfg_check_size (BraseroSessionCfg *self)
BraseroDrive *burner;
GValue *value = NULL;
/* in sectors */
- goffset session_size;
goffset max_sectors;
- goffset disc_size;
priv = BRASERO_SESSION_CFG_PRIVATE (self);
@@ -941,33 +948,35 @@ brasero_session_cfg_check_size (BraseroSessionCfg *self)
return BRASERO_SESSION_NO_OUTPUT;
}
- disc_size = brasero_burn_session_get_available_medium_space (BRASERO_BURN_SESSION (self));
- if (disc_size < 0)
- disc_size = 0;
-
- /* get input track size */
- session_size = 0;
-
- if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
- BRASERO_DATA_TRACK_SIZE_TAG,
- &value) == BRASERO_BURN_OK) {
- session_size = g_value_get_int64 (value);
+ /* Get both sizes if need be */
+ if (!priv->disc_size) {
+ priv->disc_size = brasero_burn_session_get_available_medium_space (BRASERO_BURN_SESSION (self));
+ if (priv->disc_size < 0)
+ priv->disc_size = 0;
}
- else if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
- BRASERO_STREAM_TRACK_SIZE_TAG,
- &value) == BRASERO_BURN_OK) {
- session_size = g_value_get_int64 (value);
+
+ if (!priv->session_size) {
+ if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
+ BRASERO_DATA_TRACK_SIZE_TAG,
+ &value) == BRASERO_BURN_OK) {
+ priv->session_size = g_value_get_int64 (value);
+ }
+ else if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
+ BRASERO_STREAM_TRACK_SIZE_TAG,
+ &value) == BRASERO_BURN_OK) {
+ priv->session_size = g_value_get_int64 (value);
+ }
+ else
+ brasero_burn_session_get_size (BRASERO_BURN_SESSION (self),
+ &priv->session_size,
+ NULL);
}
- else
- brasero_burn_session_get_size (BRASERO_BURN_SESSION (self),
- &session_size,
- NULL);
BRASERO_BURN_LOG ("Session size %lli/Disc size %lli",
- session_size,
- disc_size);
+ priv->session_size,
+ priv->disc_size);
- if (session_size < disc_size) {
+ if (priv->session_size < priv->disc_size) {
priv->is_valid = BRASERO_SESSION_VALID;
return BRASERO_SESSION_VALID;
}
@@ -983,8 +992,8 @@ brasero_session_cfg_check_size (BraseroSessionCfg *self)
* when we propose overburning to the user, we could ask if he wants
* us to determine how much data can be written to a particular disc
* provided he has chosen a real disc. */
- max_sectors = disc_size * 103 / 100;
- if (max_sectors < session_size) {
+ max_sectors = priv->disc_size * 103 / 100;
+ if (max_sectors < priv->session_size) {
priv->is_valid = BRASERO_SESSION_INSUFFICIENT_SPACE;
return BRASERO_SESSION_INSUFFICIENT_SPACE;
}
@@ -1027,19 +1036,20 @@ brasero_session_cfg_set_tracks_audio_format (BraseroBurnSession *session,
}
}
-static void
-brasero_session_cfg_update (BraseroSessionCfg *self)
+static gboolean
+brasero_session_cfg_can_update (BraseroSessionCfg *self)
{
- BraseroTrackType *source = NULL;
BraseroSessionCfgPrivate *priv;
BraseroBurnResult result;
BraseroStatus *status;
- BraseroDrive *burner;
priv = BRASERO_SESSION_CFG_PRIVATE (self);
+ if (priv->disabled)
+ return FALSE;
+
if (priv->configuring)
- return;
+ return FALSE;
/* Make sure the session is ready */
status = brasero_status_new ();
@@ -1051,7 +1061,7 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
g_signal_emit (self,
session_cfg_signals [IS_VALID_SIGNAL],
0);
- return;
+ return FALSE;
}
if (result == BRASERO_BURN_ERR) {
@@ -1067,21 +1077,35 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
g_signal_emit (self,
session_cfg_signals [IS_VALID_SIGNAL],
0);
- return;
+ return FALSE;
}
g_error_free (error);
}
}
g_object_unref (status);
+ return TRUE;
+}
+
+static void
+brasero_session_cfg_update (BraseroSessionCfg *self)
+{
+ BraseroSessionCfgPrivate *priv;
+ BraseroBurnResult result;
+ BraseroDrive *burner;
+
+ priv = BRASERO_SESSION_CFG_PRIVATE (self);
/* Make sure there is a source */
- source = brasero_track_type_new ();
- brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), source);
+ if (priv->source) {
+ brasero_track_type_free (priv->source);
+ priv->source = NULL;
+ }
- if (brasero_track_type_is_empty (source)) {
- brasero_track_type_free (source);
+ priv->source = brasero_track_type_new ();
+ brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), priv->source);
+ if (brasero_track_type_is_empty (priv->source)) {
priv->is_valid = BRASERO_SESSION_EMPTY;
g_signal_emit (self,
session_cfg_signals [IS_VALID_SIGNAL],
@@ -1090,10 +1114,8 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
}
/* it can be empty with just an empty track */
- if (brasero_track_type_get_has_medium (source)
- && brasero_track_type_get_medium_type (source) == BRASERO_MEDIUM_NONE) {
- brasero_track_type_free (source);
-
+ if (brasero_track_type_get_has_medium (priv->source)
+ && brasero_track_type_get_medium_type (priv->source) == BRASERO_MEDIUM_NONE) {
priv->is_valid = BRASERO_SESSION_NO_INPUT_MEDIUM;
g_signal_emit (self,
session_cfg_signals [IS_VALID_SIGNAL],
@@ -1101,13 +1123,11 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
return;
}
- if (brasero_track_type_get_has_image (source)
- && brasero_track_type_get_image_format (source) == BRASERO_IMAGE_FORMAT_NONE) {
+ if (brasero_track_type_get_has_image (priv->source)
+ && brasero_track_type_get_image_format (priv->source) == BRASERO_IMAGE_FORMAT_NONE) {
gchar *uri;
GSList *tracks;
- brasero_track_type_free (source);
-
tracks = brasero_burn_session_get_tracks (BRASERO_BURN_SESSION (self));
/* It can be two cases:
@@ -1137,8 +1157,6 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
/* make sure there is an output set */
burner = brasero_burn_session_get_burner (BRASERO_BURN_SESSION (self));
if (!burner) {
- brasero_track_type_free (source);
-
priv->is_valid = BRASERO_SESSION_NO_OUTPUT;
g_signal_emit (self,
session_cfg_signals [IS_VALID_SIGNAL],
@@ -1147,45 +1165,45 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
}
/* Check that current input and output work */
- if (brasero_track_type_get_has_stream (source)) {
+ if (brasero_track_type_get_has_stream (priv->source)) {
if (priv->CD_TEXT_modified) {
/* Try to redo what we undid (after all a new plugin
* could have been activated in the mean time ...) and
* see what happens */
- brasero_track_type_set_stream_format (source,
+ brasero_track_type_set_stream_format (priv->source,
BRASERO_METADATA_INFO|
- brasero_track_type_get_stream_format (source));
- result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), source, FALSE);
+ brasero_track_type_get_stream_format (priv->source));
+ result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), priv->source, FALSE);
if (result == BRASERO_BURN_OK) {
priv->CD_TEXT_modified = FALSE;
priv->configuring = TRUE;
brasero_session_cfg_set_tracks_audio_format (BRASERO_BURN_SESSION (self),
- brasero_track_type_get_stream_format (source));
+ brasero_track_type_get_stream_format (priv->source));
priv->configuring = FALSE;
}
else {
/* No, nothing's changed */
- brasero_track_type_set_stream_format (source,
+ brasero_track_type_set_stream_format (priv->source,
(~BRASERO_METADATA_INFO) &
- brasero_track_type_get_stream_format (source));
- result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), source, FALSE);
+ brasero_track_type_get_stream_format (priv->source));
+ result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), priv->source, FALSE);
}
}
else {
result = brasero_burn_session_can_burn (BRASERO_BURN_SESSION (self), FALSE);
if (result != BRASERO_BURN_OK
- && (brasero_track_type_get_stream_format (source) & BRASERO_METADATA_INFO)) {
+ && (brasero_track_type_get_stream_format (priv->source) & BRASERO_METADATA_INFO)) {
/* Another special case in case some burning backends
* don't support CD-TEXT for audio (libburn). If no
* other backend is available remove CD-TEXT option but
* tell user... */
- brasero_track_type_set_stream_format (source,
+ brasero_track_type_set_stream_format (priv->source,
(~BRASERO_METADATA_INFO) &
- brasero_track_type_get_stream_format (source));
+ brasero_track_type_get_stream_format (priv->source));
- result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), source, FALSE);
+ result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), priv->source, FALSE);
BRASERO_BURN_LOG ("Tested support without Metadata information (result %d)", result);
if (result == BRASERO_BURN_OK) {
@@ -1193,14 +1211,14 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
priv->configuring = TRUE;
brasero_session_cfg_set_tracks_audio_format (BRASERO_BURN_SESSION (self),
- brasero_track_type_get_has_stream (source));
+ brasero_track_type_get_has_stream (priv->source));
priv->configuring = FALSE;
}
}
}
}
- else if (brasero_track_type_get_has_medium (source)
- && (brasero_track_type_get_medium_type (source) & BRASERO_MEDIUM_HAS_AUDIO)) {
+ else if (brasero_track_type_get_has_medium (priv->source)
+ && (brasero_track_type_get_medium_type (priv->source) & BRASERO_MEDIUM_HAS_AUDIO)) {
BraseroImageFormat format = BRASERO_IMAGE_FORMAT_NONE;
/* If we copy an audio disc check the image
@@ -1253,9 +1271,9 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
}
if (result != BRASERO_BURN_OK) {
- if (brasero_track_type_get_has_medium (source)
- && (brasero_track_type_get_medium_type (source) & BRASERO_MEDIUM_PROTECTED)
- && brasero_burn_library_input_supported (source) != BRASERO_BURN_OK) {
+ if (brasero_track_type_get_has_medium (priv->source)
+ && (brasero_track_type_get_medium_type (priv->source) & BRASERO_MEDIUM_PROTECTED)
+ && brasero_burn_library_input_supported (priv->source) != BRASERO_BURN_OK) {
/* This is a special case to display a helpful message */
priv->is_valid = BRASERO_SESSION_DISC_PROTECTED;
g_signal_emit (self,
@@ -1268,14 +1286,12 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
session_cfg_signals [IS_VALID_SIGNAL],
0);
}
-
- brasero_track_type_free (source);
return;
}
/* Special case for video projects */
- if (brasero_track_type_get_has_stream (source)
- && BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (source))) {
+ if (brasero_track_type_get_has_stream (priv->source)
+ && BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (priv->source))) {
/* Only set if it was not already set */
if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self), BRASERO_VCD_TYPE, NULL) != BRASERO_BURN_OK)
brasero_burn_session_tag_add_int (BRASERO_BURN_SESSION (self),
@@ -1283,8 +1299,6 @@ brasero_session_cfg_update (BraseroSessionCfg *self)
BRASERO_SVCD);
}
- brasero_track_type_free (source);
-
/* Configure flags */
priv->configuring = TRUE;
@@ -1323,6 +1337,8 @@ brasero_session_cfg_session_loaded (BraseroTrackDataCfg *track,
priv = BRASERO_SESSION_CFG_PRIVATE (session);
if (priv->disabled)
return;
+
+ priv->session_size = 0;
session_flags = brasero_burn_session_get_flags (BRASERO_BURN_SESSION (session));
if (is_loaded) {
@@ -1343,10 +1359,12 @@ brasero_session_cfg_track_added (BraseroBurnSession *session,
{
BraseroSessionCfgPrivate *priv;
- priv = BRASERO_SESSION_CFG_PRIVATE (session);
- if (priv->disabled)
+ if (!brasero_session_cfg_can_update (BRASERO_SESSION_CFG (session)))
return;
+ priv = BRASERO_SESSION_CFG_PRIVATE (session);
+ priv->session_size = 0;
+
if (BRASERO_IS_TRACK_DATA_CFG (track))
g_signal_connect (track,
"session-loaded",
@@ -1358,7 +1376,8 @@ brasero_session_cfg_track_added (BraseroBurnSession *session,
* - reload saved flags
* - check if all flags are thereafter supported
* - check available formats for path
- * - set one path */
+ * - set one path
+ */
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
brasero_session_cfg_set_drive_properties (BRASERO_SESSION_CFG (session));
}
@@ -1370,10 +1389,12 @@ brasero_session_cfg_track_removed (BraseroBurnSession *session,
{
BraseroSessionCfgPrivate *priv;
- priv = BRASERO_SESSION_CFG_PRIVATE (session);
- if (priv->disabled)
+ if (!brasero_session_cfg_can_update (BRASERO_SESSION_CFG (session)))
return;
+ priv = BRASERO_SESSION_CFG_PRIVATE (session);
+ priv->session_size = 0;
+
/* Just in case */
g_signal_handlers_disconnect_by_func (track,
brasero_session_cfg_session_loaded,
@@ -1395,18 +1416,33 @@ brasero_session_cfg_track_changed (BraseroBurnSession *session,
BraseroTrack *track)
{
BraseroSessionCfgPrivate *priv;
+ BraseroTrackType *current;
+
+ if (!brasero_session_cfg_can_update (BRASERO_SESSION_CFG (session)))
+ return;
priv = BRASERO_SESSION_CFG_PRIVATE (session);
- if (priv->disabled)
+ priv->session_size = 0;
+
+ current = brasero_track_type_new ();
+ brasero_burn_session_get_input_type (session, current);
+ if (brasero_track_type_equal (current, priv->source)) {
+ /* This is a shortcut if the source type has not changed */
+ brasero_track_type_free (current);
+ brasero_session_cfg_check_size (BRASERO_SESSION_CFG (session));
+ g_signal_emit (session,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0);
return;
+ }
+ brasero_track_type_free (current);
/* when that happens it's mostly because a medium source changed, or
* a new image was set.
* - reload saved flags
* - check if all flags are thereafter supported
* - check available formats for path
- * - set one path
- */
+ * - set one path */
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
brasero_session_cfg_set_drive_properties (BRASERO_SESSION_CFG (session));
}
@@ -1416,18 +1452,17 @@ brasero_session_cfg_output_changed (BraseroBurnSession *session,
BraseroMedium *former)
{
BraseroSessionCfgPrivate *priv;
- BraseroTrackType *type;
- priv = BRASERO_SESSION_CFG_PRIVATE (session);
- if (priv->disabled)
+ if (!brasero_session_cfg_can_update (BRASERO_SESSION_CFG (session)))
return;
- /* Case for video project */
- type = brasero_track_type_new ();
- brasero_burn_session_get_input_type (session, type);
+ priv = BRASERO_SESSION_CFG_PRIVATE (session);
+ priv->disc_size = 0;
- if (brasero_track_type_get_has_stream (type)
- && BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (type))) {
+ /* Case for video project */
+ if (priv->source
+ && brasero_track_type_get_has_stream (priv->source)
+ && BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (priv->source))) {
BraseroMedia media;
media = brasero_burn_session_get_dest_media (session);
@@ -1454,8 +1489,6 @@ brasero_session_cfg_output_changed (BraseroBurnSession *session,
}
}
- brasero_track_type_free (type);
-
brasero_session_cfg_save_drive_properties (BRASERO_SESSION_CFG (session),
former);
@@ -1473,10 +1506,14 @@ brasero_session_cfg_caps_changed (BraseroPluginManager *manager,
{
BraseroSessionCfgPrivate *priv;
- priv = BRASERO_SESSION_CFG_PRIVATE (self);
- if (priv->disabled)
+ if (!brasero_session_cfg_can_update (self))
return;
+ priv = BRASERO_SESSION_CFG_PRIVATE (self);
+
+ priv->disc_size = 0;
+ priv->session_size = 0;
+
/* In this case we need to check if:
* - new flags are supported or not supported anymore
* - new image types as input/output are supported
@@ -1494,6 +1531,9 @@ brasero_session_cfg_flags_changed (BraseroBurnSession *session)
if (priv->disabled)
return;
+ priv->disc_size = 0;
+ priv->session_size = 0;
+
/* when we update the flags we don't want a
* whole series of "flags-changed" emitted.
* so make sure there is just one at the end */
@@ -1525,7 +1565,9 @@ brasero_session_cfg_add_flags (BraseroSessionCfg *self,
return;
brasero_session_cfg_add_drive_properties_flags (self, flags);
- brasero_session_cfg_update (self);
+
+ if (!brasero_session_cfg_can_update (self))
+ brasero_session_cfg_update (self);
}
/**
@@ -1559,7 +1601,8 @@ brasero_session_cfg_remove_flags (BraseroSessionCfg *self,
if (drive && brasero_drive_get_medium (drive))
brasero_session_cfg_save_drive_flags (self, brasero_drive_get_medium (drive));
- brasero_session_cfg_update (self);
+ if (brasero_session_cfg_can_update (self))
+ brasero_session_cfg_update (self);
}
/**
@@ -1649,6 +1692,11 @@ brasero_session_cfg_finalize (GObject *object)
brasero_session_cfg_caps_changed,
object);
+ if (priv->source) {
+ brasero_track_type_free (priv->source);
+ priv->source = NULL;
+ }
+
G_OBJECT_CLASS (brasero_session_cfg_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]