r11244 - /packages/unstable/brasero/debian/patches/000_cdrtools2cdrkit.patch
otavio at users.alioth.debian.org
otavio at users.alioth.debian.org
Fri Jun 1 20:43:14 UTC 2007
Author: otavio
Date: Fri Jun 1 20:43:14 2007
New Revision: 11244
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=11244
Log:
Use the right patch this time :(
Modified:
packages/unstable/brasero/debian/patches/000_cdrtools2cdrkit.patch
Modified: packages/unstable/brasero/debian/patches/000_cdrtools2cdrkit.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/brasero/debian/patches/000_cdrtools2cdrkit.patch?rev=11244&op=diff
==============================================================================
--- packages/unstable/brasero/debian/patches/000_cdrtools2cdrkit.patch (original)
+++ packages/unstable/brasero/debian/patches/000_cdrtools2cdrkit.patch Fri Jun 1 20:43:14 2007
@@ -1,2407 +1,3 @@
-diff -Nur brasero-0.5.2-ORIG/debian/patches/000_cdrecord2wodim-0.4.4.patch brasero-0.5.2/debian/patches/000_cdrecord2wodim-0.4.4.patch
---- brasero-0.5.2-ORIG/debian/patches/000_cdrecord2wodim-0.4.4.patch 2007-06-01 17:07:38.000000000 -0300
-+++ brasero-0.5.2/debian/patches/000_cdrecord2wodim-0.4.4.patch 2007-06-01 17:33:41.000000000 -0300
-@@ -1,2400 +0,0 @@
--diff -urN brasero-0.4.4.orig/src/burn-caps.c brasero-0.4.4/src/burn-caps.c
----- brasero-0.4.4.orig/src/burn-caps.c 2006-09-07 17:47:40.000000000 +0200
--+++ brasero-0.4.4/src/burn-caps.c 2006-10-23 10:41:59.000000000 +0200
--@@ -47,7 +47,7 @@
-- #include "burn-mkisofs-base.h"
-- #include "burn-mkisofs.h"
-- #include "burn-cdrdao.h"
---#include "burn-cdrecord.h"
--+#include "burn-wodim.h"
-- #include "burn-growisofs.h"
-- #include "burn-dvd-rw-format.h"
-- #include "brasero-ncb.h"
--@@ -57,8 +57,8 @@
-- * given, and also creates the most appropriate recorder and imager objects */
--
-- /* FIXME: extension
--- gboolean cdrecord_02 => no on the fly
--- gboolean cdrecord_02_1 => no the fly for audio
--+ gboolean wodim_02 => no on the fly
--+ gboolean wodim_02_1 => no the fly for audio
-- gboolean dvdrecord
-- */
--
--@@ -176,7 +176,7 @@
--
-- /* This is for a bug in fedora 5 that prevents from sending
-- * SCSI commands as a normal user through cdrdao. There is a
--- * fallback fortunately with cdrecord and raw images but no
--+ * fallback fortunately with wodim and raw images but no
-- * on_the_fly burning */
-- caps->priv->cdrdao_disabled = 1;
--
--@@ -489,10 +489,10 @@
-- if (media_type > NAUTILUS_BURN_MEDIA_TYPE_CDRW)
-- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_GROWISOFS, NULL));
-- else
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- }
-- else if (BRASERO_IS_TRANSCODE (source->contents.imager.obj)) {
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- }
-- else if (BRASERO_IS_GROWISOFS (source->contents.imager.obj)) {
-- obj = BRASERO_RECORDER (source->contents.imager.obj);
--@@ -508,7 +508,7 @@
-- g_object_ref (obj);
-- }
-- else if (BRASERO_IS_MKISOFS (source->contents.imager.obj))
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- else
-- return BRASERO_BURN_NOT_SUPPORTED;
--
--@@ -518,7 +518,7 @@
-- if (media_type > NAUTILUS_BURN_MEDIA_TYPE_CDRW)
-- return BRASERO_BURN_NOT_SUPPORTED;
--
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- break;
--
-- case BRASERO_TRACK_SOURCE_ISO:
--@@ -526,27 +526,27 @@
-- if (media_type > NAUTILUS_BURN_MEDIA_TYPE_CDRW)
-- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_GROWISOFS, NULL));
-- else
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- break;
--
-- case BRASERO_TRACK_SOURCE_CUE:
-- if (media_type > NAUTILUS_BURN_MEDIA_TYPE_CDRW)
-- return BRASERO_BURN_NOT_SUPPORTED;
--
--- /* here we have to solution either cdrdao or cdrecord but we'll
--+ /* here we have to solution either cdrdao or wodim but we'll
-- * use cdrdao only as a fallback except for on the fly burning
-- * see above in IMAGERS */
-- if (!caps->priv->cdrdao_disabled)
-- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CDRDAO, NULL));
-- else
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- break;
--
-- case BRASERO_TRACK_SOURCE_RAW:
-- if (media_type > NAUTILUS_BURN_MEDIA_TYPE_CDRW)
-- return BRASERO_BURN_NOT_SUPPORTED;
--
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- break;
--
-- default:
--@@ -554,8 +554,8 @@
-- }
--
-- /* This is for certain type of screwed up setup */
--- if (BRASERO_IS_CD_RECORD (obj) && caps->priv->immediate)
--- brasero_cdrecord_set_immediate (BRASERO_CD_RECORD (obj),
--+ if (BRASERO_IS_WODIM (obj) && caps->priv->immediate)
--+ brasero_wodim_set_immediate (BRASERO_WODIM (obj),
-- caps->priv->minbuf);
--
-- *recorder = obj;
--@@ -584,7 +584,7 @@
-- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_DVD_RW_FORMAT, NULL));
-- }
-- else if (type == NAUTILUS_BURN_MEDIA_TYPE_CDRW)
--- obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_CD_RECORD, NULL));
--+ obj = BRASERO_RECORDER (g_object_new (BRASERO_TYPE_WODIM, NULL));
-- else
-- return BRASERO_BURN_NOT_SUPPORTED;
--
--@@ -690,7 +690,7 @@
-- if (type <= NAUTILUS_BURN_MEDIA_TYPE_CDRW) {
-- /* with CDs there are two possible default:
-- * - if cdrdao is working => copy on the fly
--- * - readcd -clone => image => cdrecord */
--+ * - readcd -clone => image => wodim */
-- if (!caps->priv->cdrdao_disabled)
-- return BRASERO_TRACK_SOURCE_CUE;
-- else
--diff -urN brasero-0.4.4.orig/src/burn-cdrecord.c brasero-0.4.4/src/burn-cdrecord.c
----- brasero-0.4.4.orig/src/burn-cdrecord.c 2006-09-07 17:47:40.000000000 +0200
--+++ brasero-0.4.4/src/burn-cdrecord.c 1970-01-01 01:00:00.000000000 +0100
--@@ -1,1042 +0,0 @@
---/***************************************************************************
--- * cdrecord.c
--- *
--- * dim jan 22 15:22:52 2006
--- * Copyright 2006 Rouquier Philippe
--- * brasero-app at wanadoo.fr
--- ***************************************************************************/
---
---/*
--- * This program is free software; you can redistribute it and/or modify
--- * it under the terms of the GNU General Public License as published by
--- * the Free Software Foundation; either version 2 of the License, or
--- * (at your option) any later version.
--- *
--- * This program is distributed in the hope that it will be useful,
--- * but WITHOUT ANY WARRANTY; without even the implied warranty of
--- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--- * GNU Library General Public License for more details.
--- *
--- * You should have received a copy of the GNU General Public License
--- * along with this program; if not, write to the Free Software
--- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--- */
---
---
---#ifdef HAVE_CONFIG_H
---# include <config.h>
---#endif
---
---#include <string.h>
---#include <math.h>
---
---#include <glib.h>
---#include <glib-object.h>
---#include <glib/gi18n-lib.h>
---#include <glib/gstdio.h>
---
---#include <nautilus-burn-drive.h>
---
---#include "burn-basics.h"
---#include "burn-common.h"
---#include "burn-cdrecord.h"
---#include "burn-process.h"
---#include "burn-recorder.h"
---#include "burn-imager.h"
---#include "brasero-ncb.h"
---
---static void brasero_cdrecord_class_init (BraseroCDRecordClass *klass);
---static void brasero_cdrecord_init (BraseroCDRecord *sp);
---static void brasero_cdrecord_finalize (GObject *object);
---static void brasero_cdrecord_iface_init_record (BraseroRecorderIFace *iface);
---
---static BraseroBurnResult
---brasero_cdrecord_stderr_read (BraseroProcess *process,
--- const char *line);
---static BraseroBurnResult
---brasero_cdrecord_stdout_read (BraseroProcess *process,
--- const char *line);
---static BraseroBurnResult
---brasero_cdrecord_set_argv (BraseroProcess *process,
--- GPtrArray *argv,
--- gboolean has_master,
--- GError **error);
---
---static BraseroBurnResult
---brasero_cdrecord_get_rate (BraseroJob *job,
--- gint64 *rate);
---static BraseroBurnResult
---brasero_cdrecord_get_written (BraseroJob *job,
--- gint64 *written);
---static BraseroBurnResult
---brasero_cdrecord_get_fifo (BraseroRecorder *recorder,
--- gint *fifo);
---
---static BraseroBurnResult
---brasero_cdrecord_set_drive (BraseroRecorder *recorder,
--- NautilusBurnDrive *drive,
--- GError **error);
---static BraseroBurnResult
---brasero_cdrecord_set_source (BraseroJob *job,
--- const BraseroTrackSource *track,
--- GError **error);
---static BraseroBurnResult
---brasero_cdrecord_set_flags (BraseroRecorder *recorder,
--- BraseroRecorderFlag flags,
--- GError **error);
---static BraseroBurnResult
---brasero_cdrecord_set_rate (BraseroJob *job,
--- gint64 speed);
---
---static BraseroBurnResult
---brasero_cdrecord_record (BraseroRecorder *recorder,
--- GError **error);
---static BraseroBurnResult
---brasero_cdrecord_blank (BraseroRecorder *recorder,
--- GError **error);
---
---static BraseroBurnResult
---brasero_cdrecord_get_action_string (BraseroJob *job,
--- BraseroBurnAction action,
--- char **string);
---
---typedef enum {
--- BRASERO_CD_RECORD_ACTION_NONE,
--- BRASERO_CD_RECORD_ACTION_BLANK,
--- BRASERO_CD_RECORD_ACTION_RECORD
---} BraseroCDRecordAction;
---
---struct BraseroCDRecordPrivate {
--- BraseroCDRecordAction action;
---
--- NautilusBurnDrive *drive;
--- BraseroTrackSource *track;
--- BraseroTrackSource *inf;
--- int speed;
---
--- gint64 current_track_end_pos;
--- gint64 current_track_written;
--- gint64 tracks_total_bytes;
--- gint64 b_written;
---
--- int current_track_num;
--- int track_count;
---
--- int fifo;
--- gint64 cur_speed;
---
--- int minbuf;
---
--- int dao:1;
--- int dummy:1;
--- int multi:1;
--- int nograce:1;
--- int overburn:1;
--- int immediate:1;
--- int burnproof:1;
---
--- int blank_fast:1;
---};
---
---static GObjectClass *parent_class = NULL;
---
---GType
---brasero_cdrecord_get_type ()
---{
--- static GType type = 0;
---
--- if(type == 0) {
--- static const GTypeInfo our_info = {
--- sizeof (BraseroCDRecordClass),
--- NULL,
--- NULL,
--- (GClassInitFunc)brasero_cdrecord_class_init,
--- NULL,
--- NULL,
--- sizeof (BraseroCDRecord),
--- 0,
--- (GInstanceInitFunc)brasero_cdrecord_init,
--- };
---
--- static const GInterfaceInfo recorder_info =
--- {
--- (GInterfaceInitFunc) brasero_cdrecord_iface_init_record,
--- NULL,
--- NULL
--- };
---
--- type = g_type_register_static (BRASERO_TYPE_PROCESS,
--- "BraseroCDRecord",
--- &our_info,
--- 0);
--- g_type_add_interface_static (type,
--- BRASERO_TYPE_RECORDER,
--- &recorder_info);
--- }
---
--- return type;
---}
---
---static void
---brasero_cdrecord_class_init (BraseroCDRecordClass *klass)
---{
--- GObjectClass *object_class = G_OBJECT_CLASS (klass);
--- BraseroJobClass *job_class = BRASERO_JOB_CLASS (klass);
--- BraseroProcessClass *process_class = BRASERO_PROCESS_CLASS (klass);
---
--- parent_class = g_type_class_peek_parent(klass);
--- object_class->finalize = brasero_cdrecord_finalize;
---
--- job_class->get_action_string = brasero_cdrecord_get_action_string;
--- job_class->get_written = brasero_cdrecord_get_written;
--- job_class->set_source = brasero_cdrecord_set_source;
--- job_class->set_rate = brasero_cdrecord_set_rate;
--- job_class->get_rate = brasero_cdrecord_get_rate;
---
--- process_class->stderr_func = brasero_cdrecord_stderr_read;
--- process_class->stdout_func = brasero_cdrecord_stdout_read;
--- process_class->set_argv = brasero_cdrecord_set_argv;
---}
---
---static void
---brasero_cdrecord_iface_init_record (BraseroRecorderIFace *iface)
---{
--- iface->blank = brasero_cdrecord_blank;
--- iface->record = brasero_cdrecord_record;
--- iface->set_drive = brasero_cdrecord_set_drive;
--- iface->set_flags = brasero_cdrecord_set_flags;
--- iface->get_fifo = brasero_cdrecord_get_fifo;
---}
---
---static void
---brasero_cdrecord_init (BraseroCDRecord *obj)
---{
--- obj->priv = g_new0 (BraseroCDRecordPrivate, 1);
---}
---
---static void
---brasero_cdrecord_finalize (GObject *object)
---{
--- BraseroCDRecord *cobj;
--- cobj = BRASERO_CD_RECORD(object);
---
--- if (cobj->priv->drive) {
--- nautilus_burn_drive_unref (cobj->priv->drive);
--- cobj->priv->drive = NULL;
--- }
---
--- if (cobj->priv->track) {
--- brasero_track_source_free (cobj->priv->track);
--- cobj->priv->track = NULL;
--- }
---
--- if (cobj->priv->inf) {
--- brasero_track_source_free (cobj->priv->inf);
--- cobj->priv->inf = NULL;
--- }
---
--- g_free(cobj->priv);
--- G_OBJECT_CLASS(parent_class)->finalize(object);
---}
---
---BraseroCDRecord *
---brasero_cdrecord_new ()
---{
--- BraseroCDRecord *obj;
---
--- obj = BRASERO_CD_RECORD(g_object_new(BRASERO_TYPE_CD_RECORD, NULL));
---
--- return obj;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_stderr_read (BraseroProcess *process, const char *line)
---{
--- BraseroCDRecord *cdrecord = BRASERO_CD_RECORD (process);
---
--- if (strstr (line, "Cannot open SCSI driver.")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_PERMISSION,
--- _("You don't seem to have the required permission to use this drive")));
--- }
--- else if (strstr (line, "No disk / Wrong disk!") != NULL) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_MEDIA_NONE,
--- _("There doesn't seem to be a disc in the drive")));
--- }
--- else if (strstr (line, "This means that we are checking recorded media.") != NULL) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_MEDIA_NOT_WRITABLE,
--- _("The CD has already been recorded")));
--- }
--- else if (strstr (line, "Cannot blank disk, aborting.") != NULL) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_MEDIA_NOT_REWRITABLE,
--- _("The CD cannot be blanked")));
--- }
--- else if (!cdrecord->priv->overburn
--- && strstr (line, "Data may not fit on current disk")) {
--- /* we don't error out if overburn was chosen */
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_MEDIA_SPACE,
--- _("The files selected did not fit on the CD")));
--- }
--- else if (strstr (line ,"cdrecord: A write error occured")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("an unknown error occured.")));
--- /* FIXME: future message if overburn is activated.
--- * a write error occured which was likely due to overburning the
--- * disc */
--- }
--- else if (strstr (line, "Inappropriate audio coding")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_INCOMPATIBLE_FORMAT,
--- _("All audio files must be stereo, 16-bit digital audio with 44100Hz samples")));
--- }
--- else if (strstr (line, "cannot write medium - incompatible format") != NULL) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_INCOMPATIBLE_FORMAT,
--- _("The image does not seem to be a proper iso9660 file system")));
--- }
--- else if (strstr (line, "DMA speed too slow") != NULL) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_SLOW_DMA,
--- _("The system is too slow to write the CD at this speed. Try a lower speed")));
--- }
--- else if (strstr (line, "Operation not permitted. Cannot send SCSI cmd via ioctl")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_SCSI_IOCTL,
--- _("You don't seem to have the required permission to use this drive")));
--- }
--- else if (strstr (line, "Device or resource busy")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_BUSY_DRIVE,
--- _("The drive seems to be busy (maybe check you have proper permissions to use it)")));
--- }
--- else if (strstr (line, "Illegal write mode for this drive")) {
--- /* NOTE : when it happened I had to unlock the
--- * drive with cdrdao and eject it. Should we ? */
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_BUSY_DRIVE,
--- _("The drive seems to be busy (maybe you should reload the media)")));
--- }
--- else if (strstr (line, "cdrecord: No such file or directory. Cannot open")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("the image file cannot be found")));
--- }
--- else if (strstr (line, "Bad file descriptor. read error on input file")
--- || strstr (line, "No tracks specified. Need at least one.")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("internal error")));
--- }
--- else if (strstr (line, "Could not write Lead-in")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("the cd information could not be written")));
--- }
--- else if (strstr (line, "Cannot fixate disk")) {
--- /* FIXME: replace error message with
--- * "the disc could not be closed" */
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("internal error")));
--- }
---
--- return BRASERO_BURN_OK;
---}
---
---static void
---brasero_cdrecord_check_fifo (BraseroCDRecord *cdrecord, int buf)
---{
--- BraseroJob *slave;
--- gint64 rate = (cdrecord->priv->speed + 1) * CDR_SPEED;
---
--- slave = brasero_job_get_slave (BRASERO_JOB (cdrecord));
--- if (!slave)
--- return;
---
--- if (cdrecord->priv->fifo < 50) {
--- /* we try to raise the rate */
--- rate = (cdrecord->priv->speed * 2) * CDR_SPEED;
--- }
--- else if (cdrecord->priv->fifo > 95) {
--- /* we try to lower the rate */
--- if (buf < 90)
--- rate = (cdrecord->priv->speed * 1.5) * CDR_SPEED;
--- }
---
--- brasero_job_debug_message (BRASERO_JOB (cdrecord),
--- "setting rate to %" G_GINT64_FORMAT,
--- rate);
--- brasero_job_set_rate (slave, rate);
---}
---
---static void
---brasero_cdrecord_compute (BraseroCDRecord *cdrecord,
--- int mb_written,
--- int mb_total,
--- gdouble speed,
--- int track_num)
---{
--- double percent;
--- gint64 bytes;
--- gint64 this_remain;
--- gint64 total;
--- long secs;
---
--- if (cdrecord->priv->tracks_total_bytes > 0)
--- total = cdrecord->priv->tracks_total_bytes;
--- else
--- total = mb_total * 1048576;
---
--- if (track_num > cdrecord->priv->current_track_num) {
--- cdrecord->priv->current_track_num = track_num;
--- cdrecord->priv->current_track_end_pos += mb_total * 1048576;
--- }
---
--- this_remain = (mb_total - mb_written) * 1048576;
--- bytes = (total - cdrecord->priv->current_track_end_pos) + this_remain;
--- cdrecord->priv->b_written = total - bytes;
---
--- secs = brasero_burn_common_compute_time_remaining (bytes, (double) speed * CDR_SPEED);
---
--- brasero_job_action_changed (BRASERO_JOB (cdrecord),
--- BRASERO_BURN_ACTION_WRITING,
--- FALSE);
---
--- if (cdrecord->priv->tracks_total_bytes > 0) {
--- percent = 0.98 * (1.0 - (double) bytes / (double) cdrecord->priv->tracks_total_bytes);
--- }
--- else {
--- percent = 0.98 * ((double) ((track_num - 1) / (double)cdrecord->priv->track_count)
--- + ((double)mb_written / mb_total) / (double)cdrecord->priv->track_count);
--- }
---
--- brasero_job_progress_changed (BRASERO_JOB (cdrecord), percent, secs);
---}
---
---static BraseroBurnResult
---brasero_cdrecord_stdout_read (BraseroProcess *process, const char *line)
---{
--- guint track;
--- guint speed_1, speed_2;
--- BraseroCDRecord *cdrecord;
--- int mb_written = 0, mb_total = 0, fifo = 0, buf = 0;
---
--- cdrecord = BRASERO_CD_RECORD (process);
---
--- if (sscanf (line, "Track %2u: %d of %d MB written (fifo %d%%) [buf %d%%] %d.%dx.",
--- &track, &mb_written, &mb_total, &fifo, &buf, &speed_1, &speed_2) == 7) {
--- gdouble speed;
---
--- cdrecord->priv->fifo = fifo;
--- cdrecord->priv->cur_speed = speed_1 * CDR_SPEED + speed_2 * CDR_SPEED / 10;
---
--- cdrecord->priv->current_track_written = mb_written * 1048576;
--- speed = (gdouble) speed_1 + (gdouble) speed_2 / 10.0;
--- brasero_cdrecord_compute (cdrecord,
--- mb_written,
--- mb_total,
--- speed,
--- track);
---
--- brasero_cdrecord_check_fifo (cdrecord, buf);
--- }
--- else if (sscanf (line, "Track %2u: %d MB written (fifo %d%%) [buf %d%%] %d.%dx.",
--- &track, &mb_written, &fifo, &buf, &speed_1, &speed_2) == 6) {
--- int mb_total;
---
--- /* this line is printed when cdrecord writes on the fly */
--- cdrecord->priv->fifo = fifo;
--- cdrecord->priv->cur_speed = speed_1 * CDR_SPEED + speed_2 * CDR_SPEED / 10;
--- cdrecord->priv->current_track_written = mb_written * 1048576;
---
--- if (cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_IMAGER) {
--- gdouble speed;
---
--- /* we must ask the imager what is the total size */
--- brasero_imager_get_size (BRASERO_IMAGER (cdrecord->priv->track->contents.imager.obj),
--- &cdrecord->priv->tracks_total_bytes,
--- FALSE,
--- NULL);
--- mb_total = cdrecord->priv->tracks_total_bytes / 1048576;
--- speed = (gdouble) speed_1 + (gdouble) speed_2 / 10.0;
--- brasero_cdrecord_compute (cdrecord,
--- mb_written,
--- mb_total,
--- speed,
--- track);
--- }
--- else
--- brasero_job_action_changed (BRASERO_JOB (cdrecord),
--- BRASERO_BURN_ACTION_WRITING,
--- FALSE);
---
--- brasero_cdrecord_check_fifo (cdrecord, buf);
--- }
--- else if (sscanf (line, "Track %*d: %*s %d MB ", &mb_total) == 1) {
--- if (mb_total > 0) {
--- cdrecord->priv->tracks_total_bytes += mb_total * 1048576;
--- }
--- }
--- else if (strstr (line, "Sending CUE sheet")) {
--- brasero_job_action_changed (BRASERO_JOB (process),
--- BRASERO_BURN_ACTION_WRITING_CD_TEXT,
--- FALSE);
--- }
--- else if (g_str_has_prefix (line, "Re-load disk and hit <CR>")
--- || g_str_has_prefix (line, "send SIGUSR1 to continue")) {
--- /* NOTE: There seems to be a BUG somewhere when writing raw images
--- * with clone mode. After disc has been written and fixated cdrecord
--- * asks the media to be reloaded. So we simply ignore this message
--- * and returns that everything went well. Which is indeed the case */
--- if (brasero_job_get_current_action (BRASERO_JOB (process)) == BRASERO_BURN_ACTION_FIXATING) {
--- brasero_job_finished (BRASERO_JOB (process));
--- return BRASERO_BURN_OK;
--- }
---
--- /* This is not supposed to happen since we checked for the cd
--- before starting, but we try to handle it anyway, since mmc
--- profiling can fail. */
--- /* NOTE : nautilus_burn_recorder used to send sigusr1 or return */
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_RELOAD_MEDIA,
--- _("The media needs to be reloaded before being recorded")));
--- }
--- else if (g_str_has_prefix (line, "Fixating...")) {
--- brasero_job_progress_changed (BRASERO_JOB (process),
--- 0.98,
--- -1);
--- brasero_job_action_changed (BRASERO_JOB (process),
--- BRASERO_BURN_ACTION_FIXATING,
--- FALSE);
--- }
--- else if (g_str_has_prefix (line, "Last chance to quit, ")) {
--- brasero_job_set_dangerous (BRASERO_JOB (process), TRUE);
--- }
--- else if (g_str_has_prefix (line, "Blanking PMA, TOC, pregap")
--- || strstr (line, "Blanking entire disk")) {
--- brasero_job_action_changed (BRASERO_JOB (process),
--- BRASERO_BURN_ACTION_BLANKING,
--- FALSE);
--- }
--- else if (strstr (line, "Use tsize= option in SAO mode to specify track size")) {
--- brasero_job_error (BRASERO_JOB (process),
--- g_error_new (BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("internal error")));
--- }
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_set_argv_record (BraseroCDRecord *cdrecord,
--- GPtrArray *argv,
--- GError **error)
---{
--- if (!cdrecord->priv->track)
--- return BRASERO_BURN_NOT_READY;
---
--- if (cdrecord->priv->immediate) {
--- g_ptr_array_add (argv, g_strdup ("-immed"));
--- g_ptr_array_add (argv, g_strdup_printf ("minbuf=%i", cdrecord->priv->minbuf));
--- }
---
--- if (cdrecord->priv->speed > 0) {
--- char *speed_str;
---
--- speed_str = g_strdup_printf ("speed=%d", cdrecord->priv->speed);
--- g_ptr_array_add (argv, speed_str);
--- }
---
--- if (cdrecord->priv->dao)
--- g_ptr_array_add (argv, g_strdup ("-dao"));
--- if (cdrecord->priv->overburn)
--- g_ptr_array_add (argv, g_strdup ("-overburn"));
--- if (cdrecord->priv->burnproof)
--- g_ptr_array_add (argv, g_strdup ("driveropts=burnfree"));
--- if (cdrecord->priv->multi)
--- g_ptr_array_add (argv, g_strdup ("-multi"));
---
--- if (cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_IMAGER) {
--- BraseroTrackSourceType track_type;
--- BraseroBurnResult result;
--- BraseroImager *imager;
--- int buffer_size;
--- gint64 sectors;
---
--- imager = cdrecord->priv->track->contents.imager.obj;
---
--- /* we need to know what is the type of the track (audio / data) */
--- result = brasero_imager_get_track_type (imager, &track_type);
--- if (result != BRASERO_BURN_OK) {
--- g_set_error (error,
--- BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("imager doesn't seem to be ready"));
--- return BRASERO_BURN_ERR;
--- }
---
--- /* ask the size */
--- result = brasero_imager_get_size (imager, §ors, TRUE, error);
--- if (result != BRASERO_BURN_OK) {
--- if (!error)
--- g_set_error (error,
--- BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("imager doesn't seem to be ready"));
--- return BRASERO_BURN_ERR;
--- }
---
--- /* we create a buffer depending on the size
--- * buffer 4m> < 64m and is 1/25th of size otherwise */
--- buffer_size = sectors * 2352 / 1024 / 1024 / 25;
--- if (buffer_size > 32)
--- buffer_size = 32;
--- else if (buffer_size < 4)
--- buffer_size = 4;
---
--- g_ptr_array_add (argv, g_strdup_printf ("fs=%im", buffer_size));
---
--- if (track_type == BRASERO_TRACK_SOURCE_ISO
--- || track_type == BRASERO_TRACK_SOURCE_ISO_JOLIET) {
--- g_ptr_array_add (argv, g_strdup_printf ("tsize=%Lis", sectors));
---
--- g_ptr_array_add (argv, g_strdup ("-data"));
--- g_ptr_array_add (argv, g_strdup ("-nopad"));
--- g_ptr_array_add (argv, g_strdup ("-"));
---
--- brasero_job_set_slave (BRASERO_JOB (cdrecord), BRASERO_JOB (imager));
--- brasero_job_set_relay_slave_signals (BRASERO_JOB (cdrecord), FALSE);
--- }
--- else if (track_type == BRASERO_TRACK_SOURCE_RAW) {
--- g_ptr_array_add (argv, g_strdup ("fs=16m"));
--- g_ptr_array_add (argv, g_strdup ("-raw96r"));
--- g_ptr_array_add (argv, g_strdup ("-clone"));
---
--- /* we need to generate the toc first */
--- if (result != BRASERO_BURN_OK)
--- return result;
---
--- brasero_job_set_slave (BRASERO_JOB (cdrecord), BRASERO_JOB (imager));
--- brasero_job_set_relay_slave_signals (BRASERO_JOB (cdrecord), FALSE);
--- }
--- else if (track_type == BRASERO_TRACK_SOURCE_AUDIO) {
--- GSList *iter;
---
--- /* we need to get the inf first */
--- result = brasero_imager_set_output_type (imager,
--- BRASERO_TRACK_SOURCE_INF,
--- error);
--- if (result != BRASERO_BURN_OK)
--- return result;
---
--- brasero_job_set_slave (BRASERO_JOB (cdrecord), BRASERO_JOB (imager));
--- brasero_job_set_relay_slave_signals (BRASERO_JOB (cdrecord), TRUE);
---
--- result = brasero_imager_get_track (imager,
--- &cdrecord->priv->inf,
--- error);
---
--- brasero_job_set_relay_slave_signals (BRASERO_JOB (cdrecord), FALSE);
---
--- if (result != BRASERO_BURN_OK)
--- return result;
---
--- result = brasero_imager_set_output_type (imager,
--- BRASERO_TRACK_SOURCE_AUDIO,
--- error);
--- if (result != BRASERO_BURN_OK)
--- return result;
---
--- /* now we set the rate of the slave slightly above the speed */
--- brasero_job_set_rate (BRASERO_JOB (imager),
--- (cdrecord->priv->speed + 1) * CDR_SPEED);
---
--- /* now set the rest of the arguments */
--- g_ptr_array_add (argv, g_strdup ("-dao"));
--- g_ptr_array_add (argv, g_strdup ("-audio"));
--- g_ptr_array_add (argv, g_strdup ("-useinfo"));
--- g_ptr_array_add (argv, g_strdup ("-text"));
---
--- for (iter = cdrecord->priv->inf->contents.inf.files; iter; iter = iter->next) {
--- gchar *arg;
---
--- arg = g_strdup (iter->data);
--- g_ptr_array_add (argv, arg);
--- }
--- }
--- else
--- return BRASERO_BURN_NOT_SUPPORTED;
---
--- brasero_job_set_run_slave (BRASERO_JOB (cdrecord), TRUE);
--- }
--- else if (cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_AUDIO) {
--- GSList *iter;
---
--- /* CD-text cannot be written in tao mode (which is the default) */
--- g_ptr_array_add (argv, g_strdup ("-dao"));
---
--- g_ptr_array_add (argv, g_strdup ("fs=16m"));
--- g_ptr_array_add (argv, g_strdup ("-audio"));
--- g_ptr_array_add (argv, g_strdup ("-pad"));
--- g_ptr_array_add (argv, g_strdup ("-useinfo"));
--- g_ptr_array_add (argv, g_strdup ("-text"));
---
--- for (iter = cdrecord->priv->track->contents.audio.files; iter; iter = iter->next) {
--- gchar *arg;
---
--- arg = g_strdup (iter->data);
--- g_ptr_array_add (argv, arg);
--- }
---
--- brasero_job_set_run_slave (BRASERO_JOB (cdrecord), FALSE);
--- }
--- else if (cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_ISO
--- || cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_ISO_JOLIET) {
--- gchar *isopath;
---
--- isopath = brasero_track_source_get_iso_localpath (cdrecord->priv->track);
--- if (!isopath)
--- return BRASERO_BURN_ERR;
---
--- g_ptr_array_add (argv, g_strdup ("fs=16m"));
--- g_ptr_array_add (argv, g_strdup ("-data"));
--- g_ptr_array_add (argv, g_strdup ("-nopad"));
--- g_ptr_array_add (argv, isopath);
---
--- brasero_job_set_run_slave (BRASERO_JOB (cdrecord), FALSE);
--- }
--- else if (cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_RAW) {
--- gchar *rawpath;
---
--- rawpath = brasero_track_source_get_raw_localpath (cdrecord->priv->track);
--- if (!rawpath)
--- return BRASERO_BURN_ERR;
---
--- g_ptr_array_add (argv, g_strdup ("fs=16m"));
--- g_ptr_array_add (argv, g_strdup ("-raw96r"));
--- g_ptr_array_add (argv, g_strdup ("-clone"));
--- g_ptr_array_add (argv, rawpath);
---
--- brasero_job_set_run_slave (BRASERO_JOB (cdrecord), FALSE);
--- }
--- else if (cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_CUE) {
--- gchar *cue_str;
--- gchar *cuepath;
---
--- g_ptr_array_add (argv, g_strdup ("fs=16m"));
--- g_ptr_array_add (argv, g_strdup ("-dao"));
---
--- cuepath = brasero_track_source_get_cue_localpath (cdrecord->priv->track);
--- if (!cuepath)
--- return BRASERO_BURN_ERR;
---
--- cue_str = g_strdup_printf ("cuefile=%s", cuepath);
--- g_free (cuepath);
---
--- g_ptr_array_add (argv, cue_str);
---
--- brasero_job_set_run_slave (BRASERO_JOB (cdrecord), FALSE);
--- }
--- else
--- return BRASERO_BURN_NOT_SUPPORTED;
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_set_argv_blank (BraseroCDRecord *cdrecord, GPtrArray *argv)
---{
--- char *blank_str;
---
--- blank_str = g_strdup_printf ("blank=%s", cdrecord->priv->blank_fast ? "fast" : "all");
--- g_ptr_array_add (argv, blank_str);
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_set_argv (BraseroProcess *process,
--- GPtrArray *argv,
--- gboolean has_master,
--- GError **error)
---{
--- BraseroCDRecord *cdrecord;
--- BraseroBurnResult result;
--- char *dev_str;
---
--- cdrecord = BRASERO_CD_RECORD (process);
---
--- if (has_master)
--- return BRASERO_BURN_NOT_SUPPORTED;
---
--- if (!cdrecord->priv->drive)
--- return BRASERO_BURN_NOT_READY;
---
--- g_ptr_array_add (argv, g_strdup ("cdrecord"));
--- g_ptr_array_add (argv, g_strdup ("-v"));
---
--- dev_str = g_strdup_printf ("dev=%s",
--- NCB_DRIVE_GET_DEVICE (cdrecord->priv->drive));
---
--- g_ptr_array_add (argv, dev_str);
---
--- if (cdrecord->priv->dummy)
--- g_ptr_array_add (argv, g_strdup ("-dummy"));
---
--- if (cdrecord->priv->nograce)
--- g_ptr_array_add (argv, g_strdup ("gracetime=0"));
---
--- if (cdrecord->priv->action == BRASERO_CD_RECORD_ACTION_RECORD)
--- result = brasero_cdrecord_set_argv_record (cdrecord, argv, error);
--- else if (cdrecord->priv->action == BRASERO_CD_RECORD_ACTION_BLANK)
--- result = brasero_cdrecord_set_argv_blank (cdrecord, argv);
--- else
--- return BRASERO_BURN_NOT_READY;
---
--- if (result == BRASERO_BURN_OK || result == BRASERO_BURN_CANCEL) {
--- brasero_job_action_changed (BRASERO_JOB (cdrecord),
--- BRASERO_BURN_ACTION_PREPARING,
--- FALSE);
--- brasero_job_progress_changed (BRASERO_JOB (cdrecord), 0, -1);
--- }
---
--- return result;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_set_drive (BraseroRecorder *recorder,
--- NautilusBurnDrive *drive,
--- GError **error)
---{
--- BraseroCDRecord *cdrecord;
--- NautilusBurnMediaType media;
---
--- media = nautilus_burn_drive_get_media_type (drive);
--- if (media > NAUTILUS_BURN_MEDIA_TYPE_CDRW)
--- return BRASERO_BURN_NOT_SUPPORTED;
---
--- cdrecord = BRASERO_CD_RECORD (recorder);
---
--- if (cdrecord->priv->drive) {
--- nautilus_burn_drive_unref (cdrecord->priv->drive);
--- cdrecord->priv->drive = NULL;
--- }
---
--- cdrecord->priv->drive = drive;
--- nautilus_burn_drive_ref (drive);
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_set_source (BraseroJob *job,
--- const BraseroTrackSource *track,
--- GError **error)
---{
--- BraseroCDRecord *cdrecord;
---
--- cdrecord = BRASERO_CD_RECORD (job);
---
--- if (track->type != BRASERO_TRACK_SOURCE_AUDIO
--- && track->type != BRASERO_TRACK_SOURCE_CUE
--- && track->type != BRASERO_TRACK_SOURCE_RAW
--- && track->type != BRASERO_TRACK_SOURCE_ISO
--- && track->type != BRASERO_TRACK_SOURCE_ISO_JOLIET
--- && track->type != BRASERO_TRACK_SOURCE_IMAGER)
--- return BRASERO_BURN_NOT_SUPPORTED;
---
--- if (cdrecord->priv->inf) {
--- brasero_track_source_free (cdrecord->priv->inf);
--- cdrecord->priv->inf = NULL;
--- }
---
--- if (cdrecord->priv->track)
--- brasero_track_source_free (cdrecord->priv->track);
---
--- cdrecord->priv->track = brasero_track_source_copy (track);
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_set_flags (BraseroRecorder *recorder,
--- BraseroRecorderFlag flags,
--- GError **error)
---{
--- BraseroCDRecord *cdrecord;
---
--- cdrecord = BRASERO_CD_RECORD (recorder);
---
--- cdrecord->priv->dummy = (flags & BRASERO_RECORDER_FLAG_DUMMY) != 0;
--- cdrecord->priv->dao = (flags & BRASERO_RECORDER_FLAG_DAO) != 0;
--- cdrecord->priv->nograce = (flags & BRASERO_RECORDER_FLAG_NOGRACE) != 0;
--- cdrecord->priv->burnproof = (flags & BRASERO_RECORDER_FLAG_BURNPROOF) != 0;
--- cdrecord->priv->overburn = (flags & BRASERO_RECORDER_FLAG_OVERBURN) != 0;
--- cdrecord->priv->blank_fast = (flags & BRASERO_RECORDER_FLAG_FAST_BLANK) != 0;
--- cdrecord->priv->multi = (flags & BRASERO_RECORDER_FLAG_MULTI) != 0;
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_set_rate (BraseroJob *job,
--- gint64 speed)
---{
--- BraseroCDRecord *cdrecord;
---
--- if (brasero_job_is_running (job))
--- return BRASERO_BURN_RUNNING;
---
--- cdrecord = BRASERO_CD_RECORD (job);
--- cdrecord->priv->speed = speed / CDR_SPEED;
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_blank (BraseroRecorder *recorder,
--- GError **error)
---{
--- BraseroCDRecord *cdrecord;
--- BraseroBurnResult result;
---
--- cdrecord = BRASERO_CD_RECORD (recorder);
---
--- if (!nautilus_burn_drive_can_rewrite (cdrecord->priv->drive)) {
--- g_set_error (error,
--- BRASERO_BURN_ERROR,
--- BRASERO_BURN_ERROR_GENERAL,
--- _("the drive cannot rewrite CDs or DVDs"));
--- return BRASERO_BURN_ERR;
--- }
---
--- cdrecord->priv->action = BRASERO_CD_RECORD_ACTION_BLANK;
--- result = brasero_job_run (BRASERO_JOB (cdrecord), error);
--- cdrecord->priv->action = BRASERO_CD_RECORD_ACTION_NONE;
---
--- brasero_job_action_changed (BRASERO_JOB (cdrecord),
--- BRASERO_BURN_ACTION_NONE,
--- FALSE);
---
--- return result;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_record (BraseroRecorder *recorder,
--- GError **error)
---{
--- BraseroCDRecord *cdrecord;
--- BraseroBurnResult result;
---
--- cdrecord = BRASERO_CD_RECORD (recorder);
---
--- if (!cdrecord->priv->track)
--- return BRASERO_BURN_NOT_READY;
---
--- cdrecord->priv->action = BRASERO_CD_RECORD_ACTION_RECORD;
---
--- /* set as slave if track is an imager (on the fly burning) */
--- if (cdrecord->priv->track->type == BRASERO_TRACK_SOURCE_IMAGER) {
--- BraseroJob *slave;
---
--- slave = BRASERO_JOB (cdrecord->priv->track->contents.imager.obj);
--- brasero_job_set_slave (BRASERO_JOB (cdrecord), slave);
--- brasero_job_set_relay_slave_signals (BRASERO_JOB (cdrecord), FALSE);
--- brasero_job_set_run_slave (BRASERO_JOB (cdrecord), TRUE);
--- }
--- else
--- brasero_job_set_run_slave (BRASERO_JOB (cdrecord), FALSE);
---
--- result = brasero_job_run (BRASERO_JOB (cdrecord), error);
--- brasero_job_set_slave (BRASERO_JOB (cdrecord), NULL);
--- cdrecord->priv->action = BRASERO_CD_RECORD_ACTION_NONE;
--- return result;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_get_rate (BraseroJob *job,
--- gint64 *rate)
---{
--- BraseroCDRecord *cdrecord;
---
--- cdrecord = BRASERO_CD_RECORD (job);
---
--- if (rate)
--- *rate = cdrecord->priv->cur_speed;
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_get_written (BraseroJob *job,
--- gint64 *written)
---{
--- BraseroCDRecord *cdrecord;
---
--- cdrecord = BRASERO_CD_RECORD (job);
---
--- if (written)
--- *written = cdrecord->priv->b_written;
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_get_fifo (BraseroRecorder *recorder,
--- gint *fifo)
---{
--- BraseroCDRecord *cdrecord;
---
--- cdrecord = BRASERO_CD_RECORD (recorder);
---
--- if (fifo)
--- *fifo = cdrecord->priv->fifo;
---
--- return BRASERO_BURN_OK;
---}
---
---static BraseroBurnResult
---brasero_cdrecord_get_action_string (BraseroJob *job,
--- BraseroBurnAction action,
--- char **string)
---{
--- job = brasero_job_get_slave (job);
--- if (!job)
--- return BRASERO_BURN_NOT_SUPPORTED;
---
--- return brasero_job_get_action_string (job, action, string);
---}
---
---void
---brasero_cdrecord_set_immediate (BraseroCDRecord *cdrecord, gint minbuf)
---{
--- g_return_if_fail (BRASERO_IS_CD_RECORD (cdrecord));
---
--- if (minbuf > 95 || minbuf < 25)
--- minbuf = 30;
---
--- cdrecord->priv->immediate = 1;
--- cdrecord->priv->minbuf = minbuf;
---}
--diff -urN brasero-0.4.4.orig/src/burn-cdrecord.h brasero-0.4.4/src/burn-cdrecord.h
----- brasero-0.4.4.orig/src/burn-cdrecord.h 2006-09-07 17:47:40.000000000 +0200
--+++ brasero-0.4.4/src/burn-cdrecord.h 1970-01-01 01:00:00.000000000 +0100
--@@ -1,59 +0,0 @@
---/***************************************************************************
--- * cdrecord.h
--- *
--- * dim jan 22 15:22:52 2006
--- * Copyright 2006 Rouquier Philippe
--- * brasero-app at wanadoo.fr
--- ***************************************************************************/
---
---/*
--- * This program is free software; you can redistribute it and/or modify
--- * it under the terms of the GNU General Public License as published by
--- * the Free Software Foundation; either version 2 of the License, or
--- * (at your option) any later version.
--- *
--- * This program is distributed in the hope that it will be useful,
--- * but WITHOUT ANY WARRANTY; without even the implied warranty of
--- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--- * GNU Library General Public License for more details.
--- *
--- * You should have received a copy of the GNU General Public License
--- * along with this program; if not, write to the Free Software
--- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--- */
---
---#ifndef CDRECORD_H
---#define CDRECORD_H
---
---#include <glib.h>
---#include <glib-object.h>
---
---#include "burn-process.h"
---
---G_BEGIN_DECLS
---
---#define BRASERO_TYPE_CD_RECORD (brasero_cdrecord_get_type ())
---#define BRASERO_CD_RECORD(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BRASERO_TYPE_CD_RECORD, BraseroCDRecord))
---#define BRASERO_CD_RECORD_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), BRASERO_TYPE_CD_RECORD, BraseroCDRecordClass))
---#define BRASERO_IS_CD_RECORD(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BRASERO_TYPE_CD_RECORD))
---#define BRASERO_IS_CD_RECORD_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), BRASERO_TYPE_CD_RECORD))
---#define BRASERO_CD_RECORD_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), BRASERO_TYPE_CD_RECORD, BraseroCDRecordClass))
---
---typedef struct BraseroCDRecordPrivate BraseroCDRecordPrivate;
---
---typedef struct {
--- BraseroProcess parent;
--- BraseroCDRecordPrivate *priv;
---} BraseroCDRecord;
---
---typedef struct {
--- BraseroProcessClass parent_class;
---} BraseroCDRecordClass;
---
---GType brasero_cdrecord_get_type ();
---BraseroCDRecord *brasero_cdrecord_new ();
---
---void
---brasero_cdrecord_set_immediate (BraseroCDRecord *cdrecord, gint minbuf);
---
---#endif /* CDRECORD_H */
--diff -urN brasero-0.4.4.orig/src/burn-mkisofs.c brasero-0.4.4/src/burn-mkisofs.c
----- brasero-0.4.4.orig/src/burn-mkisofs.c 2006-09-07 17:47:40.000000000 +0200
--+++ brasero-0.4.4/src/burn-mkisofs.c 2006-10-23 10:42:44.000000000 +0200
--@@ -704,7 +704,7 @@
-- gboolean res;
-- int tmp;
--
--- command = g_strdup_printf ("cdrecord -msinfo dev=%s",
--+ command = g_strdup_printf ("wodim -msinfo dev=%s",
-- NCB_DRIVE_GET_DEVICE (mkisofs->priv->drive));
--
-- res = g_spawn_command_line_sync (command,
--diff -urN brasero-0.4.4.orig/src/burn-wodim.c brasero-0.4.4/src/burn-wodim.c
----- brasero-0.4.4.orig/src/burn-wodim.c 1970-01-01 01:00:00.000000000 +0100
--+++ brasero-0.4.4/src/burn-wodim.c 2006-10-23 10:41:33.000000000 +0200
--@@ -0,0 +1,1042 @@
--+/***************************************************************************
--+ * wodim.c
--+ *
--+ * dim jan 22 15:22:52 2006
--+ * Copyright 2006 Rouquier Philippe
--+ * brasero-app at wanadoo.fr
--+ ***************************************************************************/
--+
--+/*
--+ * This program is free software; you can redistribute it and/or modify
--+ * it under the terms of the GNU General Public License as published by
--+ * the Free Software Foundation; either version 2 of the License, or
--+ * (at your option) any later version.
--+ *
--+ * This program is distributed in the hope that it will be useful,
--+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
--+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--+ * GNU Library General Public License for more details.
--+ *
--+ * You should have received a copy of the GNU General Public License
--+ * along with this program; if not, write to the Free Software
--+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--+ */
--+
--+
--+#ifdef HAVE_CONFIG_H
--+# include <config.h>
--+#endif
--+
--+#include <string.h>
--+#include <math.h>
--+
--+#include <glib.h>
--+#include <glib-object.h>
--+#include <glib/gi18n-lib.h>
--+#include <glib/gstdio.h>
--+
--+#include <nautilus-burn-drive.h>
--+
--+#include "burn-basics.h"
--+#include "burn-common.h"
--+#include "burn-wodim.h"
--+#include "burn-process.h"
--+#include "burn-recorder.h"
--+#include "burn-imager.h"
--+#include "brasero-ncb.h"
--+
--+static void brasero_wodim_class_init (BraseroWodimClass *klass);
--+static void brasero_wodim_init (BraseroWodim *sp);
--+static void brasero_wodim_finalize (GObject *object);
--+static void brasero_wodim_iface_init_record (BraseroRecorderIFace *iface);
--+
--+static BraseroBurnResult
--+brasero_wodim_stderr_read (BraseroProcess *process,
--+ const char *line);
--+static BraseroBurnResult
--+brasero_wodim_stdout_read (BraseroProcess *process,
--+ const char *line);
--+static BraseroBurnResult
--+brasero_wodim_set_argv (BraseroProcess *process,
--+ GPtrArray *argv,
--+ gboolean has_master,
--+ GError **error);
--+
--+static BraseroBurnResult
--+brasero_wodim_get_rate (BraseroJob *job,
--+ gint64 *rate);
--+static BraseroBurnResult
--+brasero_wodim_get_written (BraseroJob *job,
--+ gint64 *written);
--+static BraseroBurnResult
--+brasero_wodim_get_fifo (BraseroRecorder *recorder,
--+ gint *fifo);
--+
--+static BraseroBurnResult
--+brasero_wodim_set_drive (BraseroRecorder *recorder,
--+ NautilusBurnDrive *drive,
--+ GError **error);
--+static BraseroBurnResult
--+brasero_wodim_set_source (BraseroJob *job,
--+ const BraseroTrackSource *track,
--+ GError **error);
--+static BraseroBurnResult
--+brasero_wodim_set_flags (BraseroRecorder *recorder,
--+ BraseroRecorderFlag flags,
--+ GError **error);
--+static BraseroBurnResult
--+brasero_wodim_set_rate (BraseroJob *job,
--+ gint64 speed);
--+
--+static BraseroBurnResult
--+brasero_wodim_record (BraseroRecorder *recorder,
--+ GError **error);
--+static BraseroBurnResult
--+brasero_wodim_blank (BraseroRecorder *recorder,
--+ GError **error);
--+
--+static BraseroBurnResult
--+brasero_wodim_get_action_string (BraseroJob *job,
--+ BraseroBurnAction action,
--+ char **string);
--+
--+typedef enum {
--+ BRASERO_WODIM_ACTION_NONE,
--+ BRASERO_WODIM_ACTION_BLANK,
--+ BRASERO_WODIM_ACTION_RECORD
--+} BraseroWodimAction;
--+
--+struct BraseroWodimPrivate {
--+ BraseroWodimAction action;
--+
--+ NautilusBurnDrive *drive;
--+ BraseroTrackSource *track;
--+ BraseroTrackSource *inf;
--+ int speed;
--+
--+ gint64 current_track_end_pos;
--+ gint64 current_track_written;
--+ gint64 tracks_total_bytes;
--+ gint64 b_written;
--+
--+ int current_track_num;
--+ int track_count;
--+
--+ int fifo;
--+ gint64 cur_speed;
--+
--+ int minbuf;
--+
--+ int dao:1;
--+ int dummy:1;
--+ int multi:1;
--+ int nograce:1;
--+ int overburn:1;
--+ int immediate:1;
--+ int burnproof:1;
--+
--+ int blank_fast:1;
--+};
--+
--+static GObjectClass *parent_class = NULL;
--+
--+GType
--+brasero_wodim_get_type ()
--+{
--+ static GType type = 0;
--+
--+ if(type == 0) {
--+ static const GTypeInfo our_info = {
--+ sizeof (BraseroWodimClass),
--+ NULL,
--+ NULL,
--+ (GClassInitFunc)brasero_wodim_class_init,
--+ NULL,
--+ NULL,
--+ sizeof (BraseroWodim),
--+ 0,
--+ (GInstanceInitFunc)brasero_wodim_init,
--+ };
--+
--+ static const GInterfaceInfo recorder_info =
--+ {
--+ (GInterfaceInitFunc) brasero_wodim_iface_init_record,
--+ NULL,
--+ NULL
--+ };
--+
--+ type = g_type_register_static (BRASERO_TYPE_PROCESS,
--+ "BraseroWodim",
--+ &our_info,
--+ 0);
--+ g_type_add_interface_static (type,
--+ BRASERO_TYPE_RECORDER,
--+ &recorder_info);
--+ }
--+
--+ return type;
--+}
--+
--+static void
--+brasero_wodim_class_init (BraseroWodimClass *klass)
--+{
--+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
--+ BraseroJobClass *job_class = BRASERO_JOB_CLASS (klass);
--+ BraseroProcessClass *process_class = BRASERO_PROCESS_CLASS (klass);
--+
--+ parent_class = g_type_class_peek_parent(klass);
--+ object_class->finalize = brasero_wodim_finalize;
--+
--+ job_class->get_action_string = brasero_wodim_get_action_string;
--+ job_class->get_written = brasero_wodim_get_written;
--+ job_class->set_source = brasero_wodim_set_source;
--+ job_class->set_rate = brasero_wodim_set_rate;
--+ job_class->get_rate = brasero_wodim_get_rate;
--+
--+ process_class->stderr_func = brasero_wodim_stderr_read;
--+ process_class->stdout_func = brasero_wodim_stdout_read;
--+ process_class->set_argv = brasero_wodim_set_argv;
--+}
--+
--+static void
--+brasero_wodim_iface_init_record (BraseroRecorderIFace *iface)
--+{
--+ iface->blank = brasero_wodim_blank;
--+ iface->record = brasero_wodim_record;
--+ iface->set_drive = brasero_wodim_set_drive;
--+ iface->set_flags = brasero_wodim_set_flags;
--+ iface->get_fifo = brasero_wodim_get_fifo;
--+}
--+
--+static void
--+brasero_wodim_init (BraseroWodim *obj)
--+{
--+ obj->priv = g_new0 (BraseroWodimPrivate, 1);
--+}
--+
--+static void
--+brasero_wodim_finalize (GObject *object)
--+{
--+ BraseroWodim *cobj;
--+ cobj = BRASERO_WODIM(object);
--+
--+ if (cobj->priv->drive) {
--+ nautilus_burn_drive_unref (cobj->priv->drive);
--+ cobj->priv->drive = NULL;
--+ }
--+
--+ if (cobj->priv->track) {
--+ brasero_track_source_free (cobj->priv->track);
--+ cobj->priv->track = NULL;
--+ }
--+
--+ if (cobj->priv->inf) {
--+ brasero_track_source_free (cobj->priv->inf);
--+ cobj->priv->inf = NULL;
--+ }
--+
--+ g_free(cobj->priv);
--+ G_OBJECT_CLASS(parent_class)->finalize(object);
--+}
--+
--+BraseroWodim *
--+brasero_wodim_new ()
--+{
--+ BraseroWodim *obj;
--+
--+ obj = BRASERO_WODIM(g_object_new(BRASERO_TYPE_WODIM, NULL));
--+
--+ return obj;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_stderr_read (BraseroProcess *process, const char *line)
--+{
--+ BraseroWodim *wodim = BRASERO_WODIM (process);
--+
--+ if (strstr (line, "Cannot open SCSI driver.")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_PERMISSION,
--+ _("You don't seem to have the required permission to use this drive")));
--+ }
--+ else if (strstr (line, "No disk / Wrong disk!") != NULL) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_MEDIA_NONE,
--+ _("There doesn't seem to be a disc in the drive")));
--+ }
--+ else if (strstr (line, "This means that we are checking recorded media.") != NULL) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_MEDIA_NOT_WRITABLE,
--+ _("The CD has already been recorded")));
--+ }
--+ else if (strstr (line, "Cannot blank disk, aborting.") != NULL) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_MEDIA_NOT_REWRITABLE,
--+ _("The CD cannot be blanked")));
--+ }
--+ else if (!wodim->priv->overburn
--+ && strstr (line, "Data may not fit on current disk")) {
--+ /* we don't error out if overburn was chosen */
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_MEDIA_SPACE,
--+ _("The files selected did not fit on the CD")));
--+ }
--+ else if (strstr (line ,"wodim: A write error occured")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("an unknown error occured.")));
--+ /* FIXME: future message if overburn is activated.
--+ * a write error occured which was likely due to overburning the
--+ * disc */
--+ }
--+ else if (strstr (line, "Inappropriate audio coding")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_INCOMPATIBLE_FORMAT,
--+ _("All audio files must be stereo, 16-bit digital audio with 44100Hz samples")));
--+ }
--+ else if (strstr (line, "cannot write medium - incompatible format") != NULL) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_INCOMPATIBLE_FORMAT,
--+ _("The image does not seem to be a proper iso9660 file system")));
--+ }
--+ else if (strstr (line, "DMA speed too slow") != NULL) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_SLOW_DMA,
--+ _("The system is too slow to write the CD at this speed. Try a lower speed")));
--+ }
--+ else if (strstr (line, "Operation not permitted. Cannot send SCSI cmd via ioctl")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_SCSI_IOCTL,
--+ _("You don't seem to have the required permission to use this drive")));
--+ }
--+ else if (strstr (line, "Device or resource busy")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_BUSY_DRIVE,
--+ _("The drive seems to be busy (maybe check you have proper permissions to use it)")));
--+ }
--+ else if (strstr (line, "Illegal write mode for this drive")) {
--+ /* NOTE : when it happened I had to unlock the
--+ * drive with cdrdao and eject it. Should we ? */
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_BUSY_DRIVE,
--+ _("The drive seems to be busy (maybe you should reload the media)")));
--+ }
--+ else if (strstr (line, "wodim: No such file or directory. Cannot open")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("the image file cannot be found")));
--+ }
--+ else if (strstr (line, "Bad file descriptor. read error on input file")
--+ || strstr (line, "No tracks specified. Need at least one.")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("internal error")));
--+ }
--+ else if (strstr (line, "Could not write Lead-in")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("the cd information could not be written")));
--+ }
--+ else if (strstr (line, "Cannot fixate disk")) {
--+ /* FIXME: replace error message with
--+ * "the disc could not be closed" */
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("internal error")));
--+ }
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static void
--+brasero_wodim_check_fifo (BraseroWodim *wodim, int buf)
--+{
--+ BraseroJob *slave;
--+ gint64 rate = (wodim->priv->speed + 1) * CDR_SPEED;
--+
--+ slave = brasero_job_get_slave (BRASERO_JOB (wodim));
--+ if (!slave)
--+ return;
--+
--+ if (wodim->priv->fifo < 50) {
--+ /* we try to raise the rate */
--+ rate = (wodim->priv->speed * 2) * CDR_SPEED;
--+ }
--+ else if (wodim->priv->fifo > 95) {
--+ /* we try to lower the rate */
--+ if (buf < 90)
--+ rate = (wodim->priv->speed * 1.5) * CDR_SPEED;
--+ }
--+
--+ brasero_job_debug_message (BRASERO_JOB (wodim),
--+ "setting rate to %" G_GINT64_FORMAT,
--+ rate);
--+ brasero_job_set_rate (slave, rate);
--+}
--+
--+static void
--+brasero_wodim_compute (BraseroWodim *wodim,
--+ int mb_written,
--+ int mb_total,
--+ gdouble speed,
--+ int track_num)
--+{
--+ double percent;
--+ gint64 bytes;
--+ gint64 this_remain;
--+ gint64 total;
--+ long secs;
--+
--+ if (wodim->priv->tracks_total_bytes > 0)
--+ total = wodim->priv->tracks_total_bytes;
--+ else
--+ total = mb_total * 1048576;
--+
--+ if (track_num > wodim->priv->current_track_num) {
--+ wodim->priv->current_track_num = track_num;
--+ wodim->priv->current_track_end_pos += mb_total * 1048576;
--+ }
--+
--+ this_remain = (mb_total - mb_written) * 1048576;
--+ bytes = (total - wodim->priv->current_track_end_pos) + this_remain;
--+ wodim->priv->b_written = total - bytes;
--+
--+ secs = brasero_burn_common_compute_time_remaining (bytes, (double) speed * CDR_SPEED);
--+
--+ brasero_job_action_changed (BRASERO_JOB (wodim),
--+ BRASERO_BURN_ACTION_WRITING,
--+ FALSE);
--+
--+ if (wodim->priv->tracks_total_bytes > 0) {
--+ percent = 0.98 * (1.0 - (double) bytes / (double) wodim->priv->tracks_total_bytes);
--+ }
--+ else {
--+ percent = 0.98 * ((double) ((track_num - 1) / (double)wodim->priv->track_count)
--+ + ((double)mb_written / mb_total) / (double)wodim->priv->track_count);
--+ }
--+
--+ brasero_job_progress_changed (BRASERO_JOB (wodim), percent, secs);
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_stdout_read (BraseroProcess *process, const char *line)
--+{
--+ guint track;
--+ guint speed_1, speed_2;
--+ BraseroWodim *wodim;
--+ int mb_written = 0, mb_total = 0, fifo = 0, buf = 0;
--+
--+ wodim = BRASERO_WODIM (process);
--+
--+ if (sscanf (line, "Track %2u: %d of %d MB written (fifo %d%%) [buf %d%%] %d.%dx.",
--+ &track, &mb_written, &mb_total, &fifo, &buf, &speed_1, &speed_2) == 7) {
--+ gdouble speed;
--+
--+ wodim->priv->fifo = fifo;
--+ wodim->priv->cur_speed = speed_1 * CDR_SPEED + speed_2 * CDR_SPEED / 10;
--+
--+ wodim->priv->current_track_written = mb_written * 1048576;
--+ speed = (gdouble) speed_1 + (gdouble) speed_2 / 10.0;
--+ brasero_wodim_compute (wodim,
--+ mb_written,
--+ mb_total,
--+ speed,
--+ track);
--+
--+ brasero_wodim_check_fifo (wodim, buf);
--+ }
--+ else if (sscanf (line, "Track %2u: %d MB written (fifo %d%%) [buf %d%%] %d.%dx.",
--+ &track, &mb_written, &fifo, &buf, &speed_1, &speed_2) == 6) {
--+ int mb_total;
--+
--+ /* this line is printed when wodim writes on the fly */
--+ wodim->priv->fifo = fifo;
--+ wodim->priv->cur_speed = speed_1 * CDR_SPEED + speed_2 * CDR_SPEED / 10;
--+ wodim->priv->current_track_written = mb_written * 1048576;
--+
--+ if (wodim->priv->track->type == BRASERO_TRACK_SOURCE_IMAGER) {
--+ gdouble speed;
--+
--+ /* we must ask the imager what is the total size */
--+ brasero_imager_get_size (BRASERO_IMAGER (wodim->priv->track->contents.imager.obj),
--+ &wodim->priv->tracks_total_bytes,
--+ FALSE,
--+ NULL);
--+ mb_total = wodim->priv->tracks_total_bytes / 1048576;
--+ speed = (gdouble) speed_1 + (gdouble) speed_2 / 10.0;
--+ brasero_wodim_compute (wodim,
--+ mb_written,
--+ mb_total,
--+ speed,
--+ track);
--+ }
--+ else
--+ brasero_job_action_changed (BRASERO_JOB (wodim),
--+ BRASERO_BURN_ACTION_WRITING,
--+ FALSE);
--+
--+ brasero_wodim_check_fifo (wodim, buf);
--+ }
--+ else if (sscanf (line, "Track %*d: %*s %d MB ", &mb_total) == 1) {
--+ if (mb_total > 0) {
--+ wodim->priv->tracks_total_bytes += mb_total * 1048576;
--+ }
--+ }
--+ else if (strstr (line, "Sending CUE sheet")) {
--+ brasero_job_action_changed (BRASERO_JOB (process),
--+ BRASERO_BURN_ACTION_WRITING_CD_TEXT,
--+ FALSE);
--+ }
--+ else if (g_str_has_prefix (line, "Re-load disk and hit <CR>")
--+ || g_str_has_prefix (line, "send SIGUSR1 to continue")) {
--+ /* NOTE: There seems to be a BUG somewhere when writing raw images
--+ * with clone mode. After disc has been written and fixated wodim
--+ * asks the media to be reloaded. So we simply ignore this message
--+ * and returns that everything went well. Which is indeed the case */
--+ if (brasero_job_get_current_action (BRASERO_JOB (process)) == BRASERO_BURN_ACTION_FIXATING) {
--+ brasero_job_finished (BRASERO_JOB (process));
--+ return BRASERO_BURN_OK;
--+ }
--+
--+ /* This is not supposed to happen since we checked for the cd
--+ before starting, but we try to handle it anyway, since mmc
--+ profiling can fail. */
--+ /* NOTE : nautilus_burn_recorder used to send sigusr1 or return */
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_RELOAD_MEDIA,
--+ _("The media needs to be reloaded before being recorded")));
--+ }
--+ else if (g_str_has_prefix (line, "Fixating...")) {
--+ brasero_job_progress_changed (BRASERO_JOB (process),
--+ 0.98,
--+ -1);
--+ brasero_job_action_changed (BRASERO_JOB (process),
--+ BRASERO_BURN_ACTION_FIXATING,
--+ FALSE);
--+ }
--+ else if (g_str_has_prefix (line, "Last chance to quit, ")) {
--+ brasero_job_set_dangerous (BRASERO_JOB (process), TRUE);
--+ }
--+ else if (g_str_has_prefix (line, "Blanking PMA, TOC, pregap")
--+ || strstr (line, "Blanking entire disk")) {
--+ brasero_job_action_changed (BRASERO_JOB (process),
--+ BRASERO_BURN_ACTION_BLANKING,
--+ FALSE);
--+ }
--+ else if (strstr (line, "Use tsize= option in SAO mode to specify track size")) {
--+ brasero_job_error (BRASERO_JOB (process),
--+ g_error_new (BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("internal error")));
--+ }
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_set_argv_record (BraseroWodim *wodim,
--+ GPtrArray *argv,
--+ GError **error)
--+{
--+ if (!wodim->priv->track)
--+ return BRASERO_BURN_NOT_READY;
--+
--+ if (wodim->priv->immediate) {
--+ g_ptr_array_add (argv, g_strdup ("-immed"));
--+ g_ptr_array_add (argv, g_strdup_printf ("minbuf=%i", wodim->priv->minbuf));
--+ }
--+
--+ if (wodim->priv->speed > 0) {
--+ char *speed_str;
--+
--+ speed_str = g_strdup_printf ("speed=%d", wodim->priv->speed);
--+ g_ptr_array_add (argv, speed_str);
--+ }
--+
--+ if (wodim->priv->dao)
--+ g_ptr_array_add (argv, g_strdup ("-dao"));
--+ if (wodim->priv->overburn)
--+ g_ptr_array_add (argv, g_strdup ("-overburn"));
--+ if (wodim->priv->burnproof)
--+ g_ptr_array_add (argv, g_strdup ("driveropts=burnfree"));
--+ if (wodim->priv->multi)
--+ g_ptr_array_add (argv, g_strdup ("-multi"));
--+
--+ if (wodim->priv->track->type == BRASERO_TRACK_SOURCE_IMAGER) {
--+ BraseroTrackSourceType track_type;
--+ BraseroBurnResult result;
--+ BraseroImager *imager;
--+ int buffer_size;
--+ gint64 sectors;
--+
--+ imager = wodim->priv->track->contents.imager.obj;
--+
--+ /* we need to know what is the type of the track (audio / data) */
--+ result = brasero_imager_get_track_type (imager, &track_type);
--+ if (result != BRASERO_BURN_OK) {
--+ g_set_error (error,
--+ BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("imager doesn't seem to be ready"));
--+ return BRASERO_BURN_ERR;
--+ }
--+
--+ /* ask the size */
--+ result = brasero_imager_get_size (imager, §ors, TRUE, error);
--+ if (result != BRASERO_BURN_OK) {
--+ if (!error)
--+ g_set_error (error,
--+ BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("imager doesn't seem to be ready"));
--+ return BRASERO_BURN_ERR;
--+ }
--+
--+ /* we create a buffer depending on the size
--+ * buffer 4m> < 64m and is 1/25th of size otherwise */
--+ buffer_size = sectors * 2352 / 1024 / 1024 / 25;
--+ if (buffer_size > 32)
--+ buffer_size = 32;
--+ else if (buffer_size < 4)
--+ buffer_size = 4;
--+
--+ g_ptr_array_add (argv, g_strdup_printf ("fs=%im", buffer_size));
--+
--+ if (track_type == BRASERO_TRACK_SOURCE_ISO
--+ || track_type == BRASERO_TRACK_SOURCE_ISO_JOLIET) {
--+ g_ptr_array_add (argv, g_strdup_printf ("tsize=%Lis", sectors));
--+
--+ g_ptr_array_add (argv, g_strdup ("-data"));
--+ g_ptr_array_add (argv, g_strdup ("-nopad"));
--+ g_ptr_array_add (argv, g_strdup ("-"));
--+
--+ brasero_job_set_slave (BRASERO_JOB (wodim), BRASERO_JOB (imager));
--+ brasero_job_set_relay_slave_signals (BRASERO_JOB (wodim), FALSE);
--+ }
--+ else if (track_type == BRASERO_TRACK_SOURCE_RAW) {
--+ g_ptr_array_add (argv, g_strdup ("fs=16m"));
--+ g_ptr_array_add (argv, g_strdup ("-raw96r"));
--+ g_ptr_array_add (argv, g_strdup ("-clone"));
--+
--+ /* we need to generate the toc first */
--+ if (result != BRASERO_BURN_OK)
--+ return result;
--+
--+ brasero_job_set_slave (BRASERO_JOB (wodim), BRASERO_JOB (imager));
--+ brasero_job_set_relay_slave_signals (BRASERO_JOB (wodim), FALSE);
--+ }
--+ else if (track_type == BRASERO_TRACK_SOURCE_AUDIO) {
--+ GSList *iter;
--+
--+ /* we need to get the inf first */
--+ result = brasero_imager_set_output_type (imager,
--+ BRASERO_TRACK_SOURCE_INF,
--+ error);
--+ if (result != BRASERO_BURN_OK)
--+ return result;
--+
--+ brasero_job_set_slave (BRASERO_JOB (wodim), BRASERO_JOB (imager));
--+ brasero_job_set_relay_slave_signals (BRASERO_JOB (wodim), TRUE);
--+
--+ result = brasero_imager_get_track (imager,
--+ &wodim->priv->inf,
--+ error);
--+
--+ brasero_job_set_relay_slave_signals (BRASERO_JOB (wodim), FALSE);
--+
--+ if (result != BRASERO_BURN_OK)
--+ return result;
--+
--+ result = brasero_imager_set_output_type (imager,
--+ BRASERO_TRACK_SOURCE_AUDIO,
--+ error);
--+ if (result != BRASERO_BURN_OK)
--+ return result;
--+
--+ /* now we set the rate of the slave slightly above the speed */
--+ brasero_job_set_rate (BRASERO_JOB (imager),
--+ (wodim->priv->speed + 1) * CDR_SPEED);
--+
--+ /* now set the rest of the arguments */
--+ g_ptr_array_add (argv, g_strdup ("-dao"));
--+ g_ptr_array_add (argv, g_strdup ("-audio"));
--+ g_ptr_array_add (argv, g_strdup ("-useinfo"));
--+ g_ptr_array_add (argv, g_strdup ("-text"));
--+
--+ for (iter = wodim->priv->inf->contents.inf.files; iter; iter = iter->next) {
--+ gchar *arg;
--+
--+ arg = g_strdup (iter->data);
--+ g_ptr_array_add (argv, arg);
--+ }
--+ }
--+ else
--+ return BRASERO_BURN_NOT_SUPPORTED;
--+
--+ brasero_job_set_run_slave (BRASERO_JOB (wodim), TRUE);
--+ }
--+ else if (wodim->priv->track->type == BRASERO_TRACK_SOURCE_AUDIO) {
--+ GSList *iter;
--+
--+ /* CD-text cannot be written in tao mode (which is the default) */
--+ g_ptr_array_add (argv, g_strdup ("-dao"));
--+
--+ g_ptr_array_add (argv, g_strdup ("fs=16m"));
--+ g_ptr_array_add (argv, g_strdup ("-audio"));
--+ g_ptr_array_add (argv, g_strdup ("-pad"));
--+ g_ptr_array_add (argv, g_strdup ("-useinfo"));
--+ g_ptr_array_add (argv, g_strdup ("-text"));
--+
--+ for (iter = wodim->priv->track->contents.audio.files; iter; iter = iter->next) {
--+ gchar *arg;
--+
--+ arg = g_strdup (iter->data);
--+ g_ptr_array_add (argv, arg);
--+ }
--+
--+ brasero_job_set_run_slave (BRASERO_JOB (wodim), FALSE);
--+ }
--+ else if (wodim->priv->track->type == BRASERO_TRACK_SOURCE_ISO
--+ || wodim->priv->track->type == BRASERO_TRACK_SOURCE_ISO_JOLIET) {
--+ gchar *isopath;
--+
--+ isopath = brasero_track_source_get_iso_localpath (wodim->priv->track);
--+ if (!isopath)
--+ return BRASERO_BURN_ERR;
--+
--+ g_ptr_array_add (argv, g_strdup ("fs=16m"));
--+ g_ptr_array_add (argv, g_strdup ("-data"));
--+ g_ptr_array_add (argv, g_strdup ("-nopad"));
--+ g_ptr_array_add (argv, isopath);
--+
--+ brasero_job_set_run_slave (BRASERO_JOB (wodim), FALSE);
--+ }
--+ else if (wodim->priv->track->type == BRASERO_TRACK_SOURCE_RAW) {
--+ gchar *rawpath;
--+
--+ rawpath = brasero_track_source_get_raw_localpath (wodim->priv->track);
--+ if (!rawpath)
--+ return BRASERO_BURN_ERR;
--+
--+ g_ptr_array_add (argv, g_strdup ("fs=16m"));
--+ g_ptr_array_add (argv, g_strdup ("-raw96r"));
--+ g_ptr_array_add (argv, g_strdup ("-clone"));
--+ g_ptr_array_add (argv, rawpath);
--+
--+ brasero_job_set_run_slave (BRASERO_JOB (wodim), FALSE);
--+ }
--+ else if (wodim->priv->track->type == BRASERO_TRACK_SOURCE_CUE) {
--+ gchar *cue_str;
--+ gchar *cuepath;
--+
--+ g_ptr_array_add (argv, g_strdup ("fs=16m"));
--+ g_ptr_array_add (argv, g_strdup ("-dao"));
--+
--+ cuepath = brasero_track_source_get_cue_localpath (wodim->priv->track);
--+ if (!cuepath)
--+ return BRASERO_BURN_ERR;
--+
--+ cue_str = g_strdup_printf ("cuefile=%s", cuepath);
--+ g_free (cuepath);
--+
--+ g_ptr_array_add (argv, cue_str);
--+
--+ brasero_job_set_run_slave (BRASERO_JOB (wodim), FALSE);
--+ }
--+ else
--+ return BRASERO_BURN_NOT_SUPPORTED;
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_set_argv_blank (BraseroWodim *wodim, GPtrArray *argv)
--+{
--+ char *blank_str;
--+
--+ blank_str = g_strdup_printf ("blank=%s", wodim->priv->blank_fast ? "fast" : "all");
--+ g_ptr_array_add (argv, blank_str);
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_set_argv (BraseroProcess *process,
--+ GPtrArray *argv,
--+ gboolean has_master,
--+ GError **error)
--+{
--+ BraseroWodim *wodim;
--+ BraseroBurnResult result;
--+ char *dev_str;
--+
--+ wodim = BRASERO_WODIM (process);
--+
--+ if (has_master)
--+ return BRASERO_BURN_NOT_SUPPORTED;
--+
--+ if (!wodim->priv->drive)
--+ return BRASERO_BURN_NOT_READY;
--+
--+ g_ptr_array_add (argv, g_strdup ("wodim"));
--+ g_ptr_array_add (argv, g_strdup ("-v"));
--+
--+ dev_str = g_strdup_printf ("dev=%s",
--+ NCB_DRIVE_GET_DEVICE (wodim->priv->drive));
--+
--+ g_ptr_array_add (argv, dev_str);
--+
--+ if (wodim->priv->dummy)
--+ g_ptr_array_add (argv, g_strdup ("-dummy"));
--+
--+ if (wodim->priv->nograce)
--+ g_ptr_array_add (argv, g_strdup ("gracetime=0"));
--+
--+ if (wodim->priv->action == BRASERO_WODIM_ACTION_RECORD)
--+ result = brasero_wodim_set_argv_record (wodim, argv, error);
--+ else if (wodim->priv->action == BRASERO_WODIM_ACTION_BLANK)
--+ result = brasero_wodim_set_argv_blank (wodim, argv);
--+ else
--+ return BRASERO_BURN_NOT_READY;
--+
--+ if (result == BRASERO_BURN_OK || result == BRASERO_BURN_CANCEL) {
--+ brasero_job_action_changed (BRASERO_JOB (wodim),
--+ BRASERO_BURN_ACTION_PREPARING,
--+ FALSE);
--+ brasero_job_progress_changed (BRASERO_JOB (wodim), 0, -1);
--+ }
--+
--+ return result;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_set_drive (BraseroRecorder *recorder,
--+ NautilusBurnDrive *drive,
--+ GError **error)
--+{
--+ BraseroWodim *wodim;
--+ NautilusBurnMediaType media;
--+
--+ media = nautilus_burn_drive_get_media_type (drive);
--+ if (media > NAUTILUS_BURN_MEDIA_TYPE_CDRW)
--+ return BRASERO_BURN_NOT_SUPPORTED;
--+
--+ wodim = BRASERO_WODIM (recorder);
--+
--+ if (wodim->priv->drive) {
--+ nautilus_burn_drive_unref (wodim->priv->drive);
--+ wodim->priv->drive = NULL;
--+ }
--+
--+ wodim->priv->drive = drive;
--+ nautilus_burn_drive_ref (drive);
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_set_source (BraseroJob *job,
--+ const BraseroTrackSource *track,
--+ GError **error)
--+{
--+ BraseroWodim *wodim;
--+
--+ wodim = BRASERO_WODIM (job);
--+
--+ if (track->type != BRASERO_TRACK_SOURCE_AUDIO
--+ && track->type != BRASERO_TRACK_SOURCE_CUE
--+ && track->type != BRASERO_TRACK_SOURCE_RAW
--+ && track->type != BRASERO_TRACK_SOURCE_ISO
--+ && track->type != BRASERO_TRACK_SOURCE_ISO_JOLIET
--+ && track->type != BRASERO_TRACK_SOURCE_IMAGER)
--+ return BRASERO_BURN_NOT_SUPPORTED;
--+
--+ if (wodim->priv->inf) {
--+ brasero_track_source_free (wodim->priv->inf);
--+ wodim->priv->inf = NULL;
--+ }
--+
--+ if (wodim->priv->track)
--+ brasero_track_source_free (wodim->priv->track);
--+
--+ wodim->priv->track = brasero_track_source_copy (track);
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_set_flags (BraseroRecorder *recorder,
--+ BraseroRecorderFlag flags,
--+ GError **error)
--+{
--+ BraseroWodim *wodim;
--+
--+ wodim = BRASERO_WODIM (recorder);
--+
--+ wodim->priv->dummy = (flags & BRASERO_RECORDER_FLAG_DUMMY) != 0;
--+ wodim->priv->dao = (flags & BRASERO_RECORDER_FLAG_DAO) != 0;
--+ wodim->priv->nograce = (flags & BRASERO_RECORDER_FLAG_NOGRACE) != 0;
--+ wodim->priv->burnproof = (flags & BRASERO_RECORDER_FLAG_BURNPROOF) != 0;
--+ wodim->priv->overburn = (flags & BRASERO_RECORDER_FLAG_OVERBURN) != 0;
--+ wodim->priv->blank_fast = (flags & BRASERO_RECORDER_FLAG_FAST_BLANK) != 0;
--+ wodim->priv->multi = (flags & BRASERO_RECORDER_FLAG_MULTI) != 0;
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_set_rate (BraseroJob *job,
--+ gint64 speed)
--+{
--+ BraseroWodim *wodim;
--+
--+ if (brasero_job_is_running (job))
--+ return BRASERO_BURN_RUNNING;
--+
--+ wodim = BRASERO_WODIM (job);
--+ wodim->priv->speed = speed / CDR_SPEED;
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_blank (BraseroRecorder *recorder,
--+ GError **error)
--+{
--+ BraseroWodim *wodim;
--+ BraseroBurnResult result;
--+
--+ wodim = BRASERO_WODIM (recorder);
--+
--+ if (!nautilus_burn_drive_can_rewrite (wodim->priv->drive)) {
--+ g_set_error (error,
--+ BRASERO_BURN_ERROR,
--+ BRASERO_BURN_ERROR_GENERAL,
--+ _("the drive cannot rewrite CDs or DVDs"));
--+ return BRASERO_BURN_ERR;
--+ }
--+
--+ wodim->priv->action = BRASERO_WODIM_ACTION_BLANK;
--+ result = brasero_job_run (BRASERO_JOB (wodim), error);
--+ wodim->priv->action = BRASERO_WODIM_ACTION_NONE;
--+
--+ brasero_job_action_changed (BRASERO_JOB (wodim),
--+ BRASERO_BURN_ACTION_NONE,
--+ FALSE);
--+
--+ return result;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_record (BraseroRecorder *recorder,
--+ GError **error)
--+{
--+ BraseroWodim *wodim;
--+ BraseroBurnResult result;
--+
--+ wodim = BRASERO_WODIM (recorder);
--+
--+ if (!wodim->priv->track)
--+ return BRASERO_BURN_NOT_READY;
--+
--+ wodim->priv->action = BRASERO_WODIM_ACTION_RECORD;
--+
--+ /* set as slave if track is an imager (on the fly burning) */
--+ if (wodim->priv->track->type == BRASERO_TRACK_SOURCE_IMAGER) {
--+ BraseroJob *slave;
--+
--+ slave = BRASERO_JOB (wodim->priv->track->contents.imager.obj);
--+ brasero_job_set_slave (BRASERO_JOB (wodim), slave);
--+ brasero_job_set_relay_slave_signals (BRASERO_JOB (wodim), FALSE);
--+ brasero_job_set_run_slave (BRASERO_JOB (wodim), TRUE);
--+ }
--+ else
--+ brasero_job_set_run_slave (BRASERO_JOB (wodim), FALSE);
--+
--+ result = brasero_job_run (BRASERO_JOB (wodim), error);
--+ brasero_job_set_slave (BRASERO_JOB (wodim), NULL);
--+ wodim->priv->action = BRASERO_WODIM_ACTION_NONE;
--+ return result;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_get_rate (BraseroJob *job,
--+ gint64 *rate)
--+{
--+ BraseroWodim *wodim;
--+
--+ wodim = BRASERO_WODIM (job);
--+
--+ if (rate)
--+ *rate = wodim->priv->cur_speed;
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_get_written (BraseroJob *job,
--+ gint64 *written)
--+{
--+ BraseroWodim *wodim;
--+
--+ wodim = BRASERO_WODIM (job);
--+
--+ if (written)
--+ *written = wodim->priv->b_written;
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_get_fifo (BraseroRecorder *recorder,
--+ gint *fifo)
--+{
--+ BraseroWodim *wodim;
--+
--+ wodim = BRASERO_WODIM (recorder);
--+
--+ if (fifo)
--+ *fifo = wodim->priv->fifo;
--+
--+ return BRASERO_BURN_OK;
--+}
--+
--+static BraseroBurnResult
--+brasero_wodim_get_action_string (BraseroJob *job,
--+ BraseroBurnAction action,
--+ char **string)
--+{
--+ job = brasero_job_get_slave (job);
--+ if (!job)
--+ return BRASERO_BURN_NOT_SUPPORTED;
--+
--+ return brasero_job_get_action_string (job, action, string);
--+}
--+
--+void
--+brasero_wodim_set_immediate (BraseroWodim *wodim, gint minbuf)
--+{
--+ g_return_if_fail (BRASERO_IS_WODIM (wodim));
--+
--+ if (minbuf > 95 || minbuf < 25)
--+ minbuf = 30;
--+
--+ wodim->priv->immediate = 1;
--+ wodim->priv->minbuf = minbuf;
--+}
--diff -urN brasero-0.4.4.orig/src/burn-wodim.h brasero-0.4.4/src/burn-wodim.h
----- brasero-0.4.4.orig/src/burn-wodim.h 1970-01-01 01:00:00.000000000 +0100
--+++ brasero-0.4.4/src/burn-wodim.h 2006-10-23 10:41:18.000000000 +0200
--@@ -0,0 +1,59 @@
--+/***************************************************************************
--+ * wodim.h
--+ *
--+ * dim jan 22 15:22:52 2006
--+ * Copyright 2006 Rouquier Philippe
--+ * brasero-app at wanadoo.fr
--+ ***************************************************************************/
--+
--+/*
--+ * This program is free software; you can redistribute it and/or modify
--+ * it under the terms of the GNU General Public License as published by
--+ * the Free Software Foundation; either version 2 of the License, or
--+ * (at your option) any later version.
--+ *
--+ * This program is distributed in the hope that it will be useful,
--+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
--+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--+ * GNU Library General Public License for more details.
--+ *
--+ * You should have received a copy of the GNU General Public License
--+ * along with this program; if not, write to the Free Software
--+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--+ */
--+
--+#ifndef WODIM_H
--+#define WODIM_H
--+
--+#include <glib.h>
--+#include <glib-object.h>
--+
--+#include "burn-process.h"
--+
--+G_BEGIN_DECLS
--+
--+#define BRASERO_TYPE_WODIM (brasero_wodim_get_type ())
--+#define BRASERO_WODIM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BRASERO_TYPE_WODIM, BraseroWodim))
--+#define BRASERO_WODIM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), BRASERO_TYPE_WODIM, BraseroWodimClass))
--+#define BRASERO_IS_WODIM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BRASERO_TYPE_WODIM))
--+#define BRASERO_IS_WODIM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), BRASERO_TYPE_WODIM))
--+#define BRASERO_WODIM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), BRASERO_TYPE_WODIM, BraseroWodimClass))
--+
--+typedef struct BraseroWodimPrivate BraseroWodimPrivate;
--+
--+typedef struct {
--+ BraseroProcess parent;
--+ BraseroWodimPrivate *priv;
--+} BraseroWodim;
--+
--+typedef struct {
--+ BraseroProcessClass parent_class;
--+} BraseroWodimClass;
--+
--+GType brasero_wodim_get_type ();
--+BraseroWodim *brasero_wodim_new ();
--+
--+void
--+brasero_wodim_set_immediate (BraseroWodim *wodim, gint minbuf);
--+
--+#endif /* WODIM_H */
--diff -urN brasero-0.4.4.orig/src/Makefile.am brasero-0.4.4/src/Makefile.am
----- brasero-0.4.4.orig/src/Makefile.am 2006-09-07 17:47:40.000000000 +0200
--+++ brasero-0.4.4/src/Makefile.am 2006-10-23 10:42:15.000000000 +0200
--@@ -103,8 +103,8 @@
-- burn-imager.h \
-- burn-mkisofs.c \
-- burn-mkisofs.h \
--- burn-cdrecord.c \
--- burn-cdrecord.h \
--+ burn-wodim.c \
--+ burn-wodim.h \
-- burn-cdrdao.c \
-- burn-cdrdao.h \
-- burn-growisofs.c \
--diff -urN brasero-0.4.4.orig/src/Makefile.in brasero-0.4.4/src/Makefile.in
----- brasero-0.4.4.orig/src/Makefile.in 2006-09-07 17:48:00.000000000 +0200
--+++ brasero-0.4.4/src/Makefile.in 2006-10-23 10:42:08.000000000 +0200
--@@ -64,7 +64,7 @@
-- eggtrayicon.$(OBJEXT) tray.$(OBJEXT) burn.$(OBJEXT) \
-- burn-job.$(OBJEXT) burn-process.$(OBJEXT) \
-- burn-recorder.$(OBJEXT) burn-imager.$(OBJEXT) \
--- burn-mkisofs.$(OBJEXT) burn-cdrecord.$(OBJEXT) \
--+ burn-mkisofs.$(OBJEXT) burn-wodim.$(OBJEXT) \
-- burn-cdrdao.$(OBJEXT) burn-growisofs.$(OBJEXT) \
-- burn-readcd.$(OBJEXT) burn-mkisofs-base.$(OBJEXT) \
-- burn-dvd-rw-format.$(OBJEXT) burn-transcode.$(OBJEXT) \
--@@ -367,8 +367,8 @@
-- burn-imager.h \
-- burn-mkisofs.c \
-- burn-mkisofs.h \
--- burn-cdrecord.c \
--- burn-cdrecord.h \
--+ burn-wodim.c \
--+ burn-wodim.h \
-- burn-cdrdao.c \
-- burn-cdrdao.h \
-- burn-growisofs.c \
--@@ -486,7 +486,7 @@
-- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-basics.Po at am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-caps.Po at am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-cdrdao.Po at am__quote@
--- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-cdrecord.Po at am__quote@
--+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-wodim.Po at am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-common.Po at am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-dialog.Po at am__quote@
-- @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/burn-dvd-rw-format.Po at am__quote@
diff -Nur brasero-0.5.2-ORIG/src/burn-cdrecord.c brasero-0.5.2/src/burn-cdrecord.c
--- brasero-0.5.2-ORIG/src/burn-cdrecord.c 2007-06-01 17:07:38.000000000 -0300
+++ brasero-0.5.2/src/burn-cdrecord.c 2007-06-01 17:24:03.000000000 -0300
More information about the pkg-gnome-commits
mailing list