70
73
BraseroBurnFlag supported;
71
74
BraseroBurnFlag compulsory;
76
/* Do some caching to improve performances */
77
BraseroImageFormat output_format;
80
BraseroTrackType *source;
82
goffset session_blocks;
75
85
BraseroSessionError is_valid;
77
87
guint CD_TEXT_modified:1;
78
88
guint configuring:1;
82
94
#define BRASERO_SESSION_CFG_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BRASERO_TYPE_SESSION_CFG, BraseroSessionCfgPrivate))
319
333
if (result == BRASERO_BURN_OK)
322
format = brasero_burn_session_get_output_format (session);
323
path = brasero_image_format_get_default_path (format);
336
if (priv->output_format == BRASERO_IMAGE_FORMAT_NONE)
337
return BRASERO_BURN_ERR;
339
/* Note: path and format are determined earlier in fact, in the function
340
* that check the free space on the hard drive. */
341
path = g_strdup (priv->output);
342
format = priv->output_format;
325
344
switch (format) {
326
345
case BRASERO_IMAGE_FORMAT_BIN:
350
371
brasero_session_cfg_get_output_format (BraseroBurnSession *session)
352
373
BraseroBurnSessionClass *klass;
374
BraseroSessionCfgPrivate *priv;
353
375
BraseroImageFormat format;
355
377
klass = BRASERO_BURN_SESSION_CLASS (brasero_session_cfg_parent_class);
356
378
format = klass->get_output_format (session);
358
if (format == BRASERO_IMAGE_FORMAT_NONE)
359
format = brasero_burn_session_get_default_output_format (session);
380
if (format != BRASERO_IMAGE_FORMAT_NONE)
383
priv = BRASERO_SESSION_CFG_PRIVATE (session);
385
if (priv->output_format)
386
return priv->output_format;
388
/* Cache the path for later use */
389
priv->output_format = brasero_burn_session_get_default_output_format (session);
390
return priv->output_format;
365
394
* brasero_session_cfg_get_error:
366
* @cfg: a #BraseroSessionCfg
395
* @session: a #BraseroSessionCfg
368
397
* This function returns the current status and if
369
398
* autoconfiguration is/was successful.
389
418
* brasero_session_cfg_disable:
390
* @cfg: a #BraseroSessionCfg
419
* @session: a #BraseroSessionCfg
392
421
* This function disables autoconfiguration
397
brasero_session_cfg_disable (BraseroSessionCfg *self)
426
brasero_session_cfg_disable (BraseroSessionCfg *session)
399
428
BraseroSessionCfgPrivate *priv;
401
priv = BRASERO_SESSION_CFG_PRIVATE (self);
430
priv = BRASERO_SESSION_CFG_PRIVATE (session);
402
431
priv->disabled = TRUE;
406
435
* brasero_session_cfg_enable:
407
* @cfg: a #BraseroSessionCfg
436
* @session: a #BraseroSessionCfg
409
438
* This function (re)-enables autoconfiguration
414
brasero_session_cfg_enable (BraseroSessionCfg *self)
443
brasero_session_cfg_enable (BraseroSessionCfg *session)
416
445
BraseroSessionCfgPrivate *priv;
418
priv = BRASERO_SESSION_CFG_PRIVATE (self);
447
priv = BRASERO_SESSION_CFG_PRIVATE (session);
419
448
priv->disabled = FALSE;
531
559
priv = BRASERO_SESSION_CFG_PRIVATE (self);
533
561
original_flags = brasero_burn_session_get_flags (BRASERO_BURN_SESSION (self));
563
/* If the session is invalid no need to check the flags: just add them.
564
* The correct flags will be re-computed anyway when the session becomes
566
if (priv->is_valid != BRASERO_SESSION_VALID) {
567
BRASERO_BURN_LOG ("Session currently not ready for flag computation: adding flags (will update later)");
568
brasero_burn_session_set_flags (BRASERO_BURN_SESSION (self), flags);
534
572
BRASERO_BURN_LOG ("Resetting all flags");
535
573
BRASERO_BURN_LOG_FLAGS (original_flags, "Current are");
536
574
BRASERO_BURN_LOG_FLAGS (flags, "New should be");
671
704
static BraseroSessionError
705
brasero_session_cfg_check_volume_size (BraseroSessionCfg *self)
708
BraseroSessionCfgPrivate *priv;
710
priv = BRASERO_SESSION_CFG_PRIVATE (self);
711
if (!priv->disc_size) {
715
const gchar *filesystem;
717
/* Cache the path for later use */
718
if (priv->output_format == BRASERO_IMAGE_FORMAT_NONE)
719
priv->output_format = brasero_burn_session_get_output_format (BRASERO_BURN_SESSION (self));
724
/* If we try to copy a volume get (and use) its name */
725
if (brasero_track_type_get_has_medium (priv->source)) {
726
BraseroMedium *medium;
728
medium = brasero_burn_session_get_src_medium (BRASERO_BURN_SESSION (self));
730
name = brasero_volume_get_name (BRASERO_VOLUME (medium));
733
priv->output = brasero_image_format_get_default_path (priv->output_format, name);
737
directory = g_path_get_dirname (priv->output);
738
file = g_file_new_for_path (directory);
744
/* Check permissions first */
745
info = g_file_query_info (file,
746
G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE,
747
G_FILE_QUERY_INFO_NONE,
751
g_object_unref (file);
755
if (!g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)) {
756
g_object_unref (info);
757
g_object_unref (file);
760
g_object_unref (info);
763
info = g_file_query_filesystem_info (file,
764
G_FILE_ATTRIBUTE_FILESYSTEM_FREE ","
765
G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
768
g_object_unref (file);
773
/* Now check the filesystem type: the problem here is that some
774
* filesystems have a maximum file size limit of 4 GiB and more than
775
* often we need a temporary file size of 4 GiB or more. */
776
filesystem = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
777
if (!g_strcmp0 (filesystem, "msdos"))
778
priv->output_msdos = TRUE;
780
priv->output_msdos = FALSE;
782
priv->disc_size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_FILESYSTEM_FREE);
783
g_object_unref (info);
786
BRASERO_BURN_LOG ("Session size %lli/Hard drive size %lli",
790
if (priv->output_msdos && priv->session_size >= 2147483648ULL)
793
if (priv->session_size > priv->disc_size)
796
/* Last but not least, use getrlimit () to check that we are allowed to
797
* write a file of such length and that quotas won't get in our way */
798
if (getrlimit (RLIMIT_FSIZE, &limit))
801
if (limit.rlim_cur < priv->session_size)
804
priv->is_valid = BRASERO_SESSION_VALID;
805
return BRASERO_SESSION_VALID;
809
priv->is_valid = BRASERO_SESSION_INSUFFICIENT_SPACE;
810
return BRASERO_SESSION_INSUFFICIENT_SPACE;
813
static BraseroSessionError
672
814
brasero_session_cfg_check_size (BraseroSessionCfg *self)
674
816
BraseroSessionCfgPrivate *priv;
677
819
BraseroDrive *burner;
678
820
GValue *value = NULL;
680
goffset session_size;
681
822
goffset max_sectors;
684
824
priv = BRASERO_SESSION_CFG_PRIVATE (self);
826
/* Get the session size if need be */
827
if (!priv->session_blocks) {
828
if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
829
BRASERO_DATA_TRACK_SIZE_TAG,
830
&value) == BRASERO_BURN_OK) {
831
priv->session_blocks = g_value_get_int64 (value);
832
priv->session_size = priv->session_blocks * 2048;
834
else if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
835
BRASERO_STREAM_TRACK_SIZE_TAG,
836
&value) == BRASERO_BURN_OK) {
837
priv->session_blocks = g_value_get_int64 (value);
838
priv->session_size = priv->session_blocks * 2352;
841
brasero_burn_session_get_size (BRASERO_BURN_SESSION (self),
842
&priv->session_blocks,
843
&priv->session_size);
846
/* Get the disc and its size if need be */
686
847
burner = brasero_burn_session_get_burner (BRASERO_BURN_SESSION (self));
688
849
priv->is_valid = BRASERO_SESSION_NO_OUTPUT;
689
850
return BRASERO_SESSION_NO_OUTPUT;
692
/* FIXME: here we could check the hard drive space */
693
if (brasero_drive_is_fake (burner)) {
694
priv->is_valid = BRASERO_SESSION_VALID;
695
return BRASERO_SESSION_VALID;
853
if (brasero_drive_is_fake (burner))
854
return brasero_session_cfg_check_volume_size (self);
698
856
medium = brasero_drive_get_medium (burner);
701
859
return BRASERO_SESSION_NO_OUTPUT;
704
disc_size = brasero_burn_session_get_available_medium_space (BRASERO_BURN_SESSION (self));
708
/* get input track size */
711
if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
712
BRASERO_DATA_TRACK_SIZE_TAG,
713
&value) == BRASERO_BURN_OK) {
714
session_size = g_value_get_int64 (value);
716
else if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self),
717
BRASERO_STREAM_TRACK_SIZE_TAG,
718
&value) == BRASERO_BURN_OK) {
719
session_size = g_value_get_int64 (value);
722
brasero_burn_session_get_size (BRASERO_BURN_SESSION (self),
862
/* Get both sizes if need be */
863
if (!priv->disc_size) {
864
priv->disc_size = brasero_burn_session_get_available_medium_space (BRASERO_BURN_SESSION (self));
865
if (priv->disc_size < 0)
726
869
BRASERO_BURN_LOG ("Session size %lli/Disc size %lli",
870
priv->session_blocks,
730
if (session_size < disc_size) {
873
if (priv->session_blocks < priv->disc_size) {
731
874
priv->is_valid = BRASERO_SESSION_VALID;
732
875
return BRASERO_SESSION_VALID;
743
886
* when we propose overburning to the user, we could ask if he wants
744
887
* us to determine how much data can be written to a particular disc
745
888
* provided he has chosen a real disc. */
746
max_sectors = disc_size * 103 / 100;
747
if (max_sectors < session_size) {
889
max_sectors = priv->disc_size * 103 / 100;
890
if (max_sectors < priv->session_blocks) {
748
891
priv->is_valid = BRASERO_SESSION_INSUFFICIENT_SPACE;
749
892
return BRASERO_SESSION_INSUFFICIENT_SPACE;
827
971
g_signal_emit (self,
828
972
session_cfg_signals [IS_VALID_SIGNAL],
833
977
g_error_free (error);
836
980
g_object_unref (status);
985
brasero_session_cfg_update (BraseroSessionCfg *self)
987
BraseroSessionCfgPrivate *priv;
988
BraseroBurnResult result;
989
BraseroDrive *burner;
991
priv = BRASERO_SESSION_CFG_PRIVATE (self);
838
993
/* Make sure there is a source */
839
source = brasero_track_type_new ();
840
brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), source);
842
if (brasero_track_type_is_empty (source)) {
843
brasero_track_type_free (source);
995
brasero_track_type_free (priv->source);
999
priv->source = brasero_track_type_new ();
1000
brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), priv->source);
1002
if (brasero_track_type_is_empty (priv->source)) {
845
1003
priv->is_valid = BRASERO_SESSION_EMPTY;
846
1004
g_signal_emit (self,
847
1005
session_cfg_signals [IS_VALID_SIGNAL],
852
1010
/* it can be empty with just an empty track */
853
if (brasero_track_type_get_has_medium (source)
854
&& brasero_track_type_get_medium_type (source) == BRASERO_MEDIUM_NONE) {
855
brasero_track_type_free (source);
1011
if (brasero_track_type_get_has_medium (priv->source)
1012
&& brasero_track_type_get_medium_type (priv->source) == BRASERO_MEDIUM_NONE) {
857
1013
priv->is_valid = BRASERO_SESSION_NO_INPUT_MEDIUM;
858
1014
g_signal_emit (self,
859
1015
session_cfg_signals [IS_VALID_SIGNAL],
1061
/* In case the output was an image remove the path cache. It will be
1062
* re-computed on demand. */
1064
g_free (priv->output);
1065
priv->output = NULL;
1068
if (priv->output_format)
1069
priv->output_format = BRASERO_IMAGE_FORMAT_NONE;
909
1071
/* Check that current input and output work */
910
if (brasero_track_type_get_has_stream (source)) {
1072
if (brasero_track_type_get_has_stream (priv->source)) {
911
1073
if (priv->CD_TEXT_modified) {
912
1074
/* Try to redo what we undid (after all a new plugin
913
1075
* could have been activated in the mean time ...) and
914
1076
* see what happens */
915
brasero_track_type_set_stream_format (source,
1077
brasero_track_type_set_stream_format (priv->source,
916
1078
BRASERO_METADATA_INFO|
917
brasero_track_type_get_stream_format (source));
918
result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), source, FALSE);
1079
brasero_track_type_get_stream_format (priv->source));
1080
result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), priv->source, FALSE);
919
1081
if (result == BRASERO_BURN_OK) {
920
1082
priv->CD_TEXT_modified = FALSE;
922
1084
priv->configuring = TRUE;
923
1085
brasero_session_cfg_set_tracks_audio_format (BRASERO_BURN_SESSION (self),
924
brasero_track_type_get_stream_format (source));
1086
brasero_track_type_get_stream_format (priv->source));
925
1087
priv->configuring = FALSE;
928
1090
/* No, nothing's changed */
929
brasero_track_type_set_stream_format (source,
1091
brasero_track_type_set_stream_format (priv->source,
930
1092
(~BRASERO_METADATA_INFO) &
931
brasero_track_type_get_stream_format (source));
932
result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), source, FALSE);
1093
brasero_track_type_get_stream_format (priv->source));
1094
result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), priv->source, FALSE);
936
1098
result = brasero_burn_session_can_burn (BRASERO_BURN_SESSION (self), FALSE);
938
1100
if (result != BRASERO_BURN_OK
939
&& (brasero_track_type_get_stream_format (source) & BRASERO_METADATA_INFO)) {
1101
&& (brasero_track_type_get_stream_format (priv->source) & BRASERO_METADATA_INFO)) {
940
1102
/* Another special case in case some burning backends
941
1103
* don't support CD-TEXT for audio (libburn). If no
942
1104
* other backend is available remove CD-TEXT option but
943
1105
* tell user... */
944
brasero_track_type_set_stream_format (source,
1106
brasero_track_type_set_stream_format (priv->source,
945
1107
(~BRASERO_METADATA_INFO) &
946
brasero_track_type_get_stream_format (source));
1108
brasero_track_type_get_stream_format (priv->source));
948
result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), source, FALSE);
1110
result = brasero_burn_session_input_supported (BRASERO_BURN_SESSION (self), priv->source, FALSE);
950
1112
BRASERO_BURN_LOG ("Tested support without Metadata information (result %d)", result);
951
1113
if (result == BRASERO_BURN_OK) {
954
1116
priv->configuring = TRUE;
955
1117
brasero_session_cfg_set_tracks_audio_format (BRASERO_BURN_SESSION (self),
956
brasero_track_type_get_has_stream (source));
1118
brasero_track_type_get_has_stream (priv->source));
957
1119
priv->configuring = FALSE;
962
else if (brasero_track_type_get_has_medium (source)
963
&& (brasero_track_type_get_medium_type (source) & BRASERO_MEDIUM_HAS_AUDIO)) {
1124
else if (brasero_track_type_get_has_medium (priv->source)
1125
&& (brasero_track_type_get_medium_type (priv->source) & BRASERO_MEDIUM_HAS_AUDIO)) {
964
1126
BraseroImageFormat format = BRASERO_IMAGE_FORMAT_NONE;
966
1128
/* If we copy an audio disc check the image
1015
1177
if (result != BRASERO_BURN_OK) {
1016
if (brasero_track_type_get_has_medium (source)
1017
&& (brasero_track_type_get_medium_type (source) & BRASERO_MEDIUM_PROTECTED)
1018
&& brasero_burn_library_input_supported (source) != BRASERO_BURN_OK) {
1178
if (brasero_track_type_get_has_medium (priv->source)
1179
&& (brasero_track_type_get_medium_type (priv->source) & BRASERO_MEDIUM_PROTECTED)
1180
&& brasero_burn_library_input_supported (priv->source) != BRASERO_BURN_OK) {
1019
1181
/* This is a special case to display a helpful message */
1020
1182
priv->is_valid = BRASERO_SESSION_DISC_PROTECTED;
1021
1183
g_signal_emit (self,
1032
brasero_track_type_free (source);
1036
1197
/* Special case for video projects */
1037
if (brasero_track_type_get_has_stream (source)
1038
&& BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (source))) {
1198
if (brasero_track_type_get_has_stream (priv->source)
1199
&& BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (priv->source))) {
1039
1200
/* Only set if it was not already set */
1040
1201
if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self), BRASERO_VCD_TYPE, NULL) != BRASERO_BURN_OK)
1041
1202
brasero_burn_session_tag_add_int (BRASERO_BURN_SESSION (self),
1148
1316
BraseroTrack *track)
1150
1318
BraseroSessionCfgPrivate *priv;
1319
BraseroTrackType *current;
1321
if (!brasero_session_cfg_can_update (BRASERO_SESSION_CFG (session)))
1152
1324
priv = BRASERO_SESSION_CFG_PRIVATE (session);
1325
priv->session_blocks = 0;
1326
priv->session_size = 0;
1328
current = brasero_track_type_new ();
1329
brasero_burn_session_get_input_type (session, current);
1330
if (brasero_track_type_equal (current, priv->source)) {
1331
/* This is a shortcut if the source type has not changed */
1332
brasero_track_type_free (current);
1333
brasero_session_cfg_check_size (BRASERO_SESSION_CFG (session));
1334
g_signal_emit (session,
1335
session_cfg_signals [IS_VALID_SIGNAL],
1339
brasero_track_type_free (current);
1156
1341
/* when that happens it's mostly because a medium source changed, or
1157
1342
* a new image was set.
1158
1343
* - check if all flags are supported
1159
1344
* - check available formats for path
1160
1345
* - set one path if need be */
1346
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1161
1347
brasero_session_cfg_check_drive_settings (BRASERO_SESSION_CFG (session));
1162
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1167
1352
BraseroMedium *former)
1169
1354
BraseroSessionCfgPrivate *priv;
1170
BraseroTrackType *type;
1356
if (!brasero_session_cfg_can_update (BRASERO_SESSION_CFG (session)))
1172
1359
priv = BRASERO_SESSION_CFG_PRIVATE (session);
1360
priv->disc_size = 0;
1176
1362
/* Case for video project */
1177
type = brasero_track_type_new ();
1178
brasero_burn_session_get_input_type (session, type);
1180
if (brasero_track_type_get_has_stream (type)
1181
&& BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (type))) {
1364
&& brasero_track_type_get_has_stream (priv->source)
1365
&& BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (priv->source))) {
1182
1366
BraseroMedia media;
1184
1368
media = brasero_burn_session_get_dest_media (session);
1204
1388
BRASERO_AUDIO_FORMAT_AC3);
1207
brasero_track_type_free (type);
1209
1392
/* In this case need to :
1210
1393
* - check if all flags are supported
1211
1394
* - for images, set a path if it wasn't already set */
1395
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1212
1396
brasero_session_cfg_check_drive_settings (BRASERO_SESSION_CFG (session));
1213
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1220
1403
BraseroSessionCfgPrivate *priv;
1405
if (!brasero_session_cfg_can_update (self))
1222
1408
priv = BRASERO_SESSION_CFG_PRIVATE (self);
1409
priv->disc_size = 0;
1410
priv->session_blocks = 0;
1411
priv->session_size = 0;
1226
1413
/* In this case we need to check if:
1227
1414
* - flags are supported or not supported anymore
1228
1415
* - image types as input/output are supported
1229
1416
* - if the current set of input/output still works */
1417
brasero_session_cfg_update (self);
1230
1418
brasero_session_cfg_check_drive_settings (self);
1231
brasero_session_cfg_update (self);
1235
1422
* brasero_session_cfg_add_flags:
1236
* @cfg: a #BraseroSessionCfg
1423
* @session: a #BraseroSessionCfg
1237
1424
* @flags: a #BraseroBurnFlag
1239
1426
* Adds all flags from @flags that are supported.
1244
brasero_session_cfg_add_flags (BraseroSessionCfg *self,
1431
brasero_session_cfg_add_flags (BraseroSessionCfg *session,
1245
1432
BraseroBurnFlag flags)
1247
1434
BraseroSessionCfgPrivate *priv;
1249
priv = BRASERO_SESSION_CFG_PRIVATE (self);
1436
priv = BRASERO_SESSION_CFG_PRIVATE (session);
1251
1438
if ((priv->supported & flags) != flags)
1254
if ((brasero_burn_session_get_flags (BRASERO_BURN_SESSION (self)) & flags) == flags)
1441
if ((brasero_burn_session_get_flags (BRASERO_BURN_SESSION (session)) & flags) == flags)
1257
brasero_session_cfg_add_drive_properties_flags (self, flags);
1258
brasero_session_cfg_update (self);
1444
brasero_session_cfg_add_drive_properties_flags (session, flags);
1446
if (brasero_session_cfg_can_update (session))
1447
brasero_session_cfg_update (session);
1262
1451
* brasero_session_cfg_remove_flags:
1263
* @cfg: a #BraseroSessionCfg
1452
* @session: a #BraseroSessionCfg
1264
1453
* @flags: a #BraseroBurnFlag
1266
1455
* Removes all flags that are not compulsory.
1271
brasero_session_cfg_remove_flags (BraseroSessionCfg *self,
1460
brasero_session_cfg_remove_flags (BraseroSessionCfg *session,
1272
1461
BraseroBurnFlag flags)
1274
BraseroSessionCfgPrivate *priv;
1276
priv = BRASERO_SESSION_CFG_PRIVATE (self);
1278
brasero_burn_session_remove_flag (BRASERO_BURN_SESSION (self), flags);
1463
brasero_burn_session_remove_flag (BRASERO_BURN_SESSION (session), flags);
1280
1465
/* For this case reset all flags as some flags could
1281
1466
* be made available after the removal of one flag
1282
1467
* Example: After the removal of MULTI, FAST_BLANK
1283
1468
* becomes available again for DVDRW sequential */
1284
brasero_session_cfg_set_drive_properties_default_flags (self);
1285
brasero_session_cfg_update (self);
1469
brasero_session_cfg_set_drive_properties_default_flags (session);
1471
if (brasero_session_cfg_can_update (session))
1472
brasero_session_cfg_update (session);
1289
1476
* brasero_session_cfg_is_supported:
1290
* @cfg: a #BraseroSessionCfg
1477
* @session: a #BraseroSessionCfg
1291
1478
* @flag: a #BraseroBurnFlag
1293
1480
* Checks whether a particular flag is supported.
1300
brasero_session_cfg_is_supported (BraseroSessionCfg *self,
1487
brasero_session_cfg_is_supported (BraseroSessionCfg *session,
1301
1488
BraseroBurnFlag flag)
1303
1490
BraseroSessionCfgPrivate *priv;
1305
priv = BRASERO_SESSION_CFG_PRIVATE (self);
1492
priv = BRASERO_SESSION_CFG_PRIVATE (session);
1306
1493
return (priv->supported & flag) == flag;
1310
1497
* brasero_session_cfg_is_compulsory:
1311
* @cfg: a #BraseroSessionCfg
1498
* @session: a #BraseroSessionCfg
1312
1499
* @flag: a #BraseroBurnFlag
1314
1501
* Checks whether a particular flag is compulsory.