Prepared formatting of DVD-RW

This commit is contained in:
2007-01-01 17:10:54 +00:00
parent ca9d11c692
commit 97fe858760
11 changed files with 152 additions and 38 deletions

View File

@ -447,8 +447,10 @@ void burn_disc_erase_sync(struct burn_drive *d, int fast)
/* ts A60825 : allow on parole to blank appendable CDs */
if ( ! (d->status == BURN_DISC_FULL ||
(d->status == BURN_DISC_APPENDABLE &&
! libburn_back_hack_42) ) )
! libburn_back_hack_42) ) ) {
d->cancel = 1;
return;
}
d->cancel = 0;
d->busy = BURN_DRIVE_ERASING;
d->erase(d, fast);
@ -475,6 +477,40 @@ void burn_disc_erase_sync(struct burn_drive *d, int fast)
burn_drive_inquire_media(d);
}
void burn_disc_format_sync(struct burn_drive *d, int flag)
{
int ret;
d->cancel = 0;
d->busy = BURN_DRIVE_FORMATTING;
ret = d->format_unit(d, 0);
if (ret <= 0)
d->cancel = 1;
/* reset the progress */
d->progress.session = 0;
d->progress.sessions = 1;
d->progress.track = 0;
d->progress.tracks = 1;
d->progress.index = 0;
d->progress.indices = 1;
d->progress.start_sector = 0;
d->progress.sectors = 0x10000;
d->progress.sector = 0;
while (!d->test_unit_ready(d) && d->get_erase_progress(d) == 0)
sleep(1);
while ((d->progress.sector = d->get_erase_progress(d)) > 0 ||
!d->test_unit_ready(d))
sleep(1);
d->progress.sector = 0x10000;
/* ts A61125 : update media state records */
burn_drive_mark_unready(d);
burn_drive_inquire_media(d);
}
enum burn_disc_status burn_disc_get_status(struct burn_drive *d)
{
/* ts A61007 */