brasero r823 - in trunk: . src src/plugins/checksum
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r823 - in trunk: . src src/plugins/checksum
- Date: Tue, 20 May 2008 17:50:18 +0000 (UTC)
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]