Declared that isoburn_cancel_prepared_write() waits until iso write thread ends
This commit is contained in:
parent
aa8315189c
commit
3cd2b2543e
@ -1,9 +1,12 @@
|
||||
SVN trunk (to become libisoburn-0.6.6.pl00.tar.gz)
|
||||
===============================================================================
|
||||
libisoburn novelties:
|
||||
- none yet -
|
||||
* New API calls isoburn_igopt_set_disc_label(), isoburn_igopt_get_disc_label()
|
||||
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
|
||||
===============================================================================
|
||||
|
@ -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
|
||||
either run isoburn_disc_write() or to revoke the preparations by the
|
||||
call described here.
|
||||
If this call returns 0 or 1 then the write thread of libisofs has ended.
|
||||
@since 0.1.0
|
||||
@param input_drive The drive resp. in_drive which was used with the
|
||||
preparation call.
|
||||
|
@ -998,8 +998,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
int flag)
|
||||
{
|
||||
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_cancelled= 0;
|
||||
int iso_wait_counter= 0, iso_cancel_limit= 5;
|
||||
struct burn_progress progress;
|
||||
char *status_text, date_text[80], *speed_unit, mem_text[8];
|
||||
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);
|
||||
|
||||
if(drive_status == BURN_DRIVE_IDLE) {
|
||||
|
||||
/* To avoid a race condition between burn_source and libisofs
|
||||
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)
|
||||
break;
|
||||
if(!iso_image_generator_is_running(image))
|
||||
break;
|
||||
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);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2010.11.05.144616"
|
||||
#define Xorriso_timestamP "2010.11.06.133454"
|
||||
|
Loading…
Reference in New Issue
Block a user