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, &sectors, 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, &sectors, 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