Declared that isoburn_cancel_prepared_write() waits until iso write thread ends
This commit is contained in:
parent
64e43541db
commit
5ca5d2e34b
@ -1,9 +1,12 @@
|
|||||||
SVN trunk (to become libisoburn-0.6.6.pl00.tar.gz)
|
SVN trunk (to become libisoburn-0.6.6.pl00.tar.gz)
|
||||||
===============================================================================
|
===============================================================================
|
||||||
libisoburn novelties:
|
libisoburn novelties:
|
||||||
- none yet -
|
* New API calls isoburn_igopt_set_disc_label(), isoburn_igopt_get_disc_label()
|
||||||
xorriso novelties:
|
xorriso novelties:
|
||||||
- none yet -
|
* Bug fix: -as mkisofs -print-size printed the size but also produced ISO image
|
||||||
|
* Build problem fix on Linux 2.4 in GNU xorriso libjte/checksum.c
|
||||||
|
* New -as mkisofs option -joliet-long
|
||||||
|
* New bootspec sparc_label=, new -as mkisofs options -sparc-boot , -sparc-label
|
||||||
|
|
||||||
libisoburn-0.6.4.pl00.tar.gz Tue Oct 26 2010
|
libisoburn-0.6.4.pl00.tar.gz Tue Oct 26 2010
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
@ -1724,6 +1724,7 @@ int isoburn_prepare_blind_grow(struct burn_drive *in_drive,
|
|||||||
image stream when one of above three calls is performed. It is mandatory to
|
image stream when one of above three calls is performed. It is mandatory to
|
||||||
either run isoburn_disc_write() or to revoke the preparations by the
|
either run isoburn_disc_write() or to revoke the preparations by the
|
||||||
call described here.
|
call described here.
|
||||||
|
If this call returns 0 or 1 then the write thread of libisofs has ended.
|
||||||
@since 0.1.0
|
@since 0.1.0
|
||||||
@param input_drive The drive resp. in_drive which was used with the
|
@param input_drive The drive resp. in_drive which was used with the
|
||||||
preparation call.
|
preparation call.
|
||||||
|
@ -998,8 +998,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
int flag)
|
int flag)
|
||||||
{
|
{
|
||||||
int ret, size, free_bytes, i, aborting= 0, emul, buffer_fill= 50, last_sector;
|
int ret, size, free_bytes, i, aborting= 0, emul, buffer_fill= 50, last_sector;
|
||||||
int iso_wait_counter= 0, iso_cancel_limit= 5, iso_break_limit= 20;
|
int iso_wait_counter= 0, iso_cancel_limit= 5;
|
||||||
int iso_cancelled= 0;
|
|
||||||
struct burn_progress progress;
|
struct burn_progress progress;
|
||||||
char *status_text, date_text[80], *speed_unit, mem_text[8];
|
char *status_text, date_text[80], *speed_unit, mem_text[8];
|
||||||
enum burn_drive_status drive_status;
|
enum burn_drive_status drive_status;
|
||||||
@ -1037,28 +1036,18 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
drive_status= burn_drive_get_status(drive, &progress);
|
drive_status= burn_drive_get_status(drive, &progress);
|
||||||
|
|
||||||
if(drive_status == BURN_DRIVE_IDLE) {
|
if(drive_status == BURN_DRIVE_IDLE) {
|
||||||
|
|
||||||
/* To avoid a race condition between burn_source and libisofs
|
/* To avoid a race condition between burn_source and libisofs
|
||||||
writer thread: Wait for ISO generator thread to have finished.
|
writer thread: Wait for ISO generator thread to have finished.
|
||||||
|
After some seconds kick it by isoburn_cancel_prepared_write()
|
||||||
|
which waits for the write thread to end.
|
||||||
*/
|
*/
|
||||||
if(image == NULL)
|
if(image == NULL)
|
||||||
break;
|
break;
|
||||||
if(!iso_image_generator_is_running(image))
|
if(!iso_image_generator_is_running(image))
|
||||||
break;
|
break;
|
||||||
iso_wait_counter++;
|
iso_wait_counter++;
|
||||||
if(iso_wait_counter > iso_cancel_limit && !iso_cancelled) {
|
if(iso_wait_counter > iso_cancel_limit) {
|
||||||
isoburn_cancel_prepared_write(drive, NULL, 0);
|
isoburn_cancel_prepared_write(drive, NULL, 0);
|
||||||
iso_cancelled= 1;
|
|
||||||
} else if(iso_wait_counter > iso_break_limit) {
|
|
||||||
|
|
||||||
/* >>> This can be dangerous. xorriso will free memory objects which
|
|
||||||
might be in use in the unstoppable libisofs thread.
|
|
||||||
The current implementation of ecma119.c:bs_cancel() seems to
|
|
||||||
wait for the writer thread to end. Probably one should make
|
|
||||||
this a part of the libisofs API specs and break the loop
|
|
||||||
directly after isoburn_cancel_prepared_write().
|
|
||||||
*/
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2010.11.05.144616"
|
#define Xorriso_timestamP "2010.11.06.133454"
|
||||||
|
Loading…
Reference in New Issue
Block a user