diff --git a/libburn/trunk/cdrskin/cdrskin_timestamp.h b/libburn/trunk/cdrskin/cdrskin_timestamp.h index 706989e4..7fc2521f 100644 --- a/libburn/trunk/cdrskin/cdrskin_timestamp.h +++ b/libburn/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2007.08.22.134731" +#define Cdrskin_timestamP "2007.08.22.173459" diff --git a/libburn/trunk/libburn/drive.c b/libburn/trunk/libburn/drive.c index d415f0a4..56f078c5 100644 --- a/libburn/trunk/libburn/drive.c +++ b/libburn/trunk/libburn/drive.c @@ -110,6 +110,7 @@ int burn_drive_is_released(struct burn_drive *d) -1 = drive is closed (i.e. released explicitely) 0 = drive is open, not grabbed (after scan, before 1st grab) 1 = drive is grabbed but BURN_DRIVE_IDLE + 2 = drive is grabbed, synchronous read/write interrupted 10 = drive is grabbing (BURN_DRIVE_GRABBING) 100 = drive is busy in cancelable state 1000 = drive is in non-cancelable state @@ -127,6 +128,9 @@ int burn_drive_is_occupied(struct burn_drive *d) return 0; if(d->busy == BURN_DRIVE_IDLE) return 1; + if(d->busy == BURN_DRIVE_READING_SYNC || + d->busy == BURN_DRIVE_WRITING_SYNC) + return 2; if(d->busy == BURN_DRIVE_READING || d->busy == BURN_DRIVE_WRITING) return 50; return 1000; diff --git a/libburn/trunk/libburn/libburn.h b/libburn/trunk/libburn/libburn.h index b2e80375..a67db165 100644 --- a/libburn/trunk/libburn/libburn.h +++ b/libburn/trunk/libburn/libburn.h @@ -251,8 +251,16 @@ enum burn_drive_status /* ts A61223 */ /** The drive is formatting media */ - BURN_DRIVE_FORMATTING + BURN_DRIVE_FORMATTING, + /* ts A70822 */ + /** The drive is busy in synchronous read (if you see this then it + has been interrupted) */ + BURN_DRIVE_READING_SYNC, + /** The drive is busy in synchronous write (if you see this then it + has been interrupted) */ + BURN_DRIVE_WRITING_SYNC + }; diff --git a/libburn/trunk/libburn/read.c b/libburn/trunk/libburn/read.c index 726d7bbb..c6e1285d 100644 --- a/libburn/trunk/libburn/read.c +++ b/libburn/trunk/libburn/read.c @@ -322,7 +322,7 @@ int burn_read_data(struct burn_drive *d, off_t byte_address, "Drive is busy on attempt to read data", 0, 0); return 0; } - d->busy = BURN_DRIVE_READING; + d->busy = BURN_DRIVE_READING_SYNC; d->buffer = &buf; start = byte_address / 2048; @@ -348,6 +348,7 @@ int burn_read_data(struct burn_drive *d, off_t byte_address, wpt += 2048; *data_count += 2048; } + d->buffer = NULL; d->busy = BURN_DRIVE_IDLE; return 0; } diff --git a/libburn/trunk/libburn/write.c b/libburn/trunk/libburn/write.c index 462fda28..175ac1f1 100644 --- a/libburn/trunk/libburn/write.c +++ b/libburn/trunk/libburn/write.c @@ -2027,7 +2027,7 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address, "Drive is busy on attempt to write random access",0,0); return 0; } - d->busy = BURN_DRIVE_WRITING; + d->busy = BURN_DRIVE_WRITING_SYNC; d->buffer = &buf; start = byte_address / 2048; @@ -2053,6 +2053,6 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address, d->sync_cache(d); d->buffer = NULL; d->busy = BURN_DRIVE_IDLE; - return(1); + return 1; }