brasero r823 - in trunk: . src src/plugins/checksum



Author: philippr
Date: Tue May 20 17:50:18 2008
New Revision: 823
URL: http://svn.gnome.org/viewvc/brasero?rev=823&view=rev

Log:
	Use BraseroVolSrc for functions in brasero-volume-read

	* src/burn-volume-read.c (brasero_volume_file_close),
	(brasero_volume_file_open), (brasero_volume_file_check_state):
	* src/burn-volume-read.h:
	* src/burn-volume-source.c
	(brasero_volume_source_read_device_handle),
	(brasero_volume_source_close), (brasero_volume_source_open_file),
	(brasero_volume_source_open_fd),
	(brasero_volume_source_open_device_handle),
	(brasero_volume_source_open_device_path),
	(brasero_volume_source_ref):
	* src/burn-volume-source.h:
	* src/plugins/checksum/burn-checksum-files.c
	(brasero_checksum_files_merge_with_former_session):

Modified:
   trunk/ChangeLog
   trunk/src/burn-volume-read.c
   trunk/src/burn-volume-read.h
   trunk/src/burn-volume-source.c
   trunk/src/burn-volume-source.h
   trunk/src/plugins/checksum/burn-checksum-files.c

Modified: trunk/src/burn-volume-read.c
==============================================================================
--- trunk/src/burn-volume-read.c	(original)
+++ trunk/src/burn-volume-read.c	Tue May 20 17:50:18 2008
@@ -41,7 +41,7 @@
 	/* size in bytes for the current extent */
 	guint extent_size;
 
-	BraseroDeviceHandle *device;
+	BraseroVolSrc *src;
 	GSList *extents_backward;
 	GSList *extents_forward;
 	guint position;
@@ -50,31 +50,26 @@
 void
 brasero_volume_file_close (BraseroVolFileHandle *handle)
 {
-	brasero_device_handle_close (handle->device);
 	g_slist_free (handle->extents_forward);
 	g_slist_free (handle->extents_backward);
 	g_free (handle);
 }
 
 BraseroVolFileHandle *
-brasero_volume_file_open (const gchar *path,
+brasero_volume_file_open (BraseroVolSrc *src,
 			  BraseroVolFile *file)
 {
 	BraseroVolFileHandle *handle;
 	BraseroVolFileExtent *extent;
-	BraseroScsiErrCode error;
-	BraseroScsiResult result;
+	gboolean result;
 	GSList *node;
 
 	if (file->isdir)
 		return NULL;
 
 	handle = g_new0 (BraseroVolFileHandle, 1);
-	handle->device = brasero_device_handle_open (path, &error);
-	if (!handle->device) {
-		g_free (handle);
-		return NULL;
-	}
+	handle->src = src;
+	brasero_volume_source_ref (src);
 
 	handle->extents_forward = g_slist_copy (file->specific.file.extents);
 
@@ -90,18 +85,14 @@
 	handle->extent_last = BRASERO_SIZE_TO_SECTORS (extent->size, 2048) + extent->block;
 
 	/* start loading first block */
-	result = brasero_mmc1_read_block (handle->device,
-					  TRUE,
-					  BRASERO_SCSI_BLOCK_TYPE_ANY,
-					  BRASERO_SCSI_BLOCK_HEADER_NONE,
-					  BRASERO_SCSI_BLOCK_NO_SUBCHANNEL,
-					  handle->position,
-					  1,
-					  handle->buffer,
-					  sizeof (handle->buffer),
-					  &error);
+	result = BRASERO_VOL_SRC_SEEK (handle->src, handle->position, SEEK_SET,  NULL);
+	if (!result) {
+		brasero_volume_file_close (handle);
+		return NULL;
+	}
 
-	if (result != BRASERO_SCSI_OK) {
+	result = BRASERO_VOL_SRC_READ (handle->src, (gchar *) handle->buffer, 1, NULL);
+	if (!result) {
 		brasero_volume_file_close (handle);
 		return NULL;
 	}
@@ -120,7 +111,7 @@
 BraseroBurnResult
 brasero_volume_file_check_state (BraseroVolFileHandle *handle)
 {
-	BraseroBurnResult result;
+	gboolean result;
 
 	/* check if we need to load a new block */
 	if (handle->offset < handle->buffer_max)
@@ -149,17 +140,7 @@
 		handle->extent_last = BRASERO_SIZE_TO_SECTORS (extent->size, 2048) + extent->block;
 	}
 
-	result = brasero_mmc1_read_block (handle->device,
-					  TRUE,
-					  BRASERO_SCSI_BLOCK_TYPE_ANY,
-					  BRASERO_SCSI_BLOCK_HEADER_NONE,
-					  BRASERO_SCSI_BLOCK_NO_SUBCHANNEL,
-					  handle->position,
-					  1,
-					  handle->buffer,
-					  sizeof (handle->buffer),
-					  NULL);
-
+	result = BRASERO_VOL_SRC_READ (handle->src, (char *) handle->buffer, 1, NULL);
 	if (result != BRASERO_SCSI_OK)
 		return BRASERO_BURN_ERR;
 

Modified: trunk/src/burn-volume-read.h
==============================================================================
--- trunk/src/burn-volume-read.h	(original)
+++ trunk/src/burn-volume-read.h	Tue May 20 17:50:18 2008
@@ -28,13 +28,14 @@
 #include <glib.h>
 
 #include "burn-basics.h"
+#include "burn-volume-source.h"
 
 G_BEGIN_DECLS
 
 typedef struct _BraseroVolFileHandle BraseroVolFileHandle;
 
 BraseroVolFileHandle *
-brasero_volume_file_open (const gchar *path,
+brasero_volume_file_open (BraseroVolSrc *src,
 			  BraseroVolFile *file);
 
 void

Modified: trunk/src/burn-volume-source.c
==============================================================================
--- trunk/src/burn-volume-source.c	(original)
+++ trunk/src/burn-volume-source.c	Tue May 20 17:50:18 2008
@@ -103,7 +103,7 @@
 					  BRASERO_SCSI_BLOCK_TYPE_ANY,
 					  BRASERO_SCSI_BLOCK_HEADER_NONE,
 					  BRASERO_SCSI_BLOCK_NO_SUBCHANNEL,
-					  src->position,
+					  src->position ++,
 					  blocks,
 					  (unsigned char *) buffer,
 					  blocks * ISO9660_BLOCK_SIZE,
@@ -122,6 +122,10 @@
 void
 brasero_volume_source_close (BraseroVolSrc *src)
 {
+	src->ref --;
+	if (src->ref > 0)
+		return;
+
 	if (src->seek == brasero_volume_source_seek_fd)
 		fclose (src->data);
 
@@ -146,6 +150,7 @@
 	}
 
 	src = g_new0 (BraseroVolSrc, 1);
+	src->ref = 1;
 	src->data = file;
 	src->seek = brasero_volume_source_seek_fd;
 	src->read = brasero_volume_source_read_fd;
@@ -183,6 +188,7 @@
 	}
 
 	src = g_new0 (BraseroVolSrc, 1);
+	src->ref = 1;
 	src->data = file;
 	src->seek = brasero_volume_source_seek_fd;
 	src->read = brasero_volume_source_read_fd;
@@ -196,8 +202,35 @@
 	BraseroVolSrc *src;
 
 	src = g_new0 (BraseroVolSrc, 1);
+	src->ref = 1;
 	src->data = handle;
 	src->seek = brasero_volume_source_seek_device_handle;
 	src->read = brasero_volume_source_read_device_handle;
 	return src;
 }
+
+BraseroVolSrc *
+brasero_volume_source_open_device_path (const gchar *path,
+					GError **error)
+{
+	BraseroScsiErrCode err;
+	BraseroDeviceHandle *handle;
+
+	handle = brasero_device_handle_open (path, &err);
+	if (!handle) {
+		g_set_error (error,
+			     BRASERO_BURN_ERROR,
+			     BRASERO_BURN_ERROR_GENERAL,
+			     brasero_scsi_strerror (err));
+		return NULL;
+	}
+
+	return brasero_volume_source_open_device_handle (handle, error);
+}
+
+void
+brasero_volume_source_ref (BraseroVolSrc *vol)
+{
+	vol->ref ++;
+}
+

Modified: trunk/src/burn-volume-source.h
==============================================================================
--- trunk/src/burn-volume-source.h	(original)
+++ trunk/src/burn-volume-source.h	Tue May 20 17:50:18 2008
@@ -46,6 +46,7 @@
 	BraseroVolSrcSeekFunc seek;
 	guint64 position;
 	gpointer data;
+	guint ref;
 };
 
 #define BRASERO_VOL_SRC_SEEK(vol_MACRO, block_MACRO, whence_MACRO, error_MACRO)	\
@@ -54,10 +55,15 @@
 #define BRASERO_VOL_SRC_READ(vol_MACRO, buffer_MACRO, num_MACRO, error_MACRO)	\
 	vol_MACRO->read (vol_MACRO, buffer_MACRO, num_MACRO, error_MACRO)
 
+
 BraseroVolSrc *
 brasero_volume_source_open_device_handle (BraseroDeviceHandle *handle,
 					  GError **error);
 BraseroVolSrc *
+brasero_volume_source_open_device_path (const gchar *path,
+					GError **error);
+
+BraseroVolSrc *
 brasero_volume_source_open_file (const gchar *path,
 				 GError **error);
 BraseroVolSrc *
@@ -65,6 +71,9 @@
 			       GError **error);
 
 void
+brasero_volume_source_ref (BraseroVolSrc *vol);
+
+void
 brasero_volume_source_close (BraseroVolSrc *src);
 
 G_END_DECLS

Modified: trunk/src/plugins/checksum/burn-checksum-files.c
==============================================================================
--- trunk/src/plugins/checksum/burn-checksum-files.c	(original)
+++ trunk/src/plugins/checksum/burn-checksum-files.c	Tue May 20 17:50:18 2008
@@ -424,7 +424,11 @@
 	}
 
 	BRASERO_JOB_LOG (self, "Found file %s on %s", file, device);
-	handle = brasero_volume_file_open (device, file);
+	brasero_volume_source_open_device_path (device, error);
+	if (!vol)
+		return BRASERO_BURN_ERR;
+
+	handle = brasero_volume_file_open (vol, file);
 	brasero_volume_source_close (vol);
 	g_free (device);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]