54
53
G_DEFINE_TYPE (BraseroSessionSpan, brasero_session_span, BRASERO_TYPE_BURN_SESSION);
57
* brasero_session_span_get_max_space:
58
* @session: a #BraseroSessionSpan
60
* Returns the maximum required space (in sectors)
61
* among all the possible spanned batches.
62
* This means that when burningto a media
63
* it will also be the minimum required
64
* space to burn all the contents in several
67
* Return value: a #goffset.
71
brasero_session_span_get_max_space (BraseroSessionSpan *session)
56
brasero_session_span_get_available_medium_space (BraseroSessionSpan *session)
74
goffset max_sectors = 0;
75
BraseroSessionSpanPrivate *priv;
77
g_return_val_if_fail (BRASERO_IS_SESSION_SPAN (session), 0);
79
priv = BRASERO_SESSION_SPAN_PRIVATE (session);
81
if (priv->last_track) {
82
tracks = g_slist_find (priv->track_list, priv->last_track);
87
tracks = tracks->next;
89
else if (priv->track_list)
90
tracks = priv->track_list;
59
BraseroMedium *medium;
60
BraseroBurnFlag flags;
61
goffset available_blocks = 0;
63
/* Retrieve the size available for burning */
64
burner = brasero_burn_session_get_burner (BRASERO_BURN_SESSION (session));
68
medium = brasero_drive_get_medium (burner);
72
flags = brasero_burn_session_get_flags (BRASERO_BURN_SESSION (session));
73
if (flags & (BRASERO_BURN_FLAG_MERGE|BRASERO_BURN_FLAG_APPEND))
74
brasero_medium_get_free_space (medium, NULL, &available_blocks);
75
else if (brasero_burn_session_can_blank (BRASERO_BURN_SESSION (session)) == BRASERO_BURN_OK)
76
brasero_medium_get_capacity (medium, NULL, &available_blocks);
92
tracks = brasero_burn_session_get_tracks (BRASERO_BURN_SESSION (session));
94
for (; tracks; tracks = tracks->next) {
96
goffset track_blocks = 0;
100
if (BRASERO_IS_TRACK_DATA_CFG (track))
101
return brasero_track_data_cfg_span_max_space (BRASERO_TRACK_DATA_CFG (track));
103
/* This is the common case */
104
brasero_track_get_size (BRASERO_TRACK (track),
108
max_sectors = MAX (max_sectors, track_blocks);
78
brasero_medium_get_free_space (medium, NULL, &available_blocks);
80
BRASERO_BURN_LOG ("Available space for spanning %" G_GINT64_FORMAT, available_blocks);
81
return available_blocks;
115
* brasero_session_span_again:
116
* @session: a #BraseroSessionSpan
118
* Checks whether some data were not included during calls to brasero_session_span_next ().
120
* Return value: a #BraseroBurnResult. BRASERO_BURN_OK if there is not anymore data.
121
* BRASERO_BURN_RETRY if the operation was successful and a new #BraseroTrackDataCfg was created.
122
* BRASERO_BURN_ERR otherwise.
126
85
brasero_session_span_again (BraseroSessionSpan *session)
156
115
return (tracks != NULL)? BRASERO_BURN_RETRY:BRASERO_BURN_OK;
160
* brasero_session_span_possible:
161
* @session: a #BraseroSessionSpan
163
* Checks if a new #BraseroTrackData can be created from the files remaining in the tree
164
* after calls to brasero_session_span_next (). The maximum size of the data will be the one
165
* of the medium inserted in the #BraseroDrive set for @session (see brasero_burn_session_set_burner ()).
167
* Return value: a #BraseroBurnResult. BRASERO_BURN_OK if there is not anymore data.
168
* BRASERO_BURN_RETRY if the operation was successful and a new #BraseroTrackDataCfg was created.
169
* BRASERO_BURN_ERR otherwise.
172
118
BraseroBurnResult
173
119
brasero_session_span_possible (BraseroSessionSpan *session)
218
164
return BRASERO_BURN_RETRY;
222
* brasero_session_span_start:
223
* @session: a #BraseroSessionSpan
225
* Get the object ready for spanning a #BraseroBurnSession object. This function
226
* must be called before brasero_session_span_next ().
228
* Return value: a #BraseroBurnResult. BRASERO_BURN_OK if successful.
231
167
BraseroBurnResult
232
168
brasero_session_span_start (BraseroSessionSpan *session)
246
182
return BRASERO_BURN_OK;
250
* brasero_session_span_next:
251
* @session: a #BraseroSessionSpan
253
* Sets the next batch of data to be burnt onto the medium inserted in the #BraseroDrive
254
* set for @session (see brasero_burn_session_set_burner ()). Its free space or it capacity
255
* will be used as the maximum amount of data to be burnt.
257
* Return value: a #BraseroBurnResult. BRASERO_BURN_OK if successful.
260
185
BraseroBurnResult
261
186
brasero_session_span_next (BraseroSessionSpan *session)