From 85876feedcc347de73bf1b8f3edd1df33d6da40e Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 3 Nov 2006 20:22:54 +0000 Subject: [PATCH] Enabled TAO for multiple -data tracks (-audio still ends after 0 bytes) --- trunk/cdrskin/cdrskin_timestamp.h | 2 +- trunk/libburn/write.c | 33 ++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/trunk/cdrskin/cdrskin_timestamp.h b/trunk/cdrskin/cdrskin_timestamp.h index d72b30d9..68bdfc5d 100644 --- a/trunk/cdrskin/cdrskin_timestamp.h +++ b/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2006.11.03.151137" +#define Cdrskin_timestamP "2006.11.03.202403" diff --git a/trunk/libburn/write.c b/trunk/libburn/write.c index c2c6286a..53f5679c 100644 --- a/trunk/libburn/write.c +++ b/trunk/libburn/write.c @@ -543,8 +543,9 @@ int burn_write_track(struct burn_write_opts *o, struct burn_session *s, { struct burn_track *t = s->track[tnum]; struct burn_drive *d = o->drive; - int i, tmp = 0, open_ended = 0, ret; + int i, tmp = 0, open_ended = 0, ret, nwa; int sectors; + char msg[80]; d->rlba = -150; @@ -579,6 +580,16 @@ int burn_write_track(struct burn_write_opts *o, struct burn_session *s, } else { o->control = t->entry->control; d->send_write_parameters(d, o); + + /* ts A61103 */ + nwa = d->get_nwa(d); + sprintf(msg, "pre-track %2.2d : get_nwa()= %d , d->nwa= %d\n", + tnum+1, nwa, d->nwa); + libdax_msgs_submit(libdax_messenger, d->global_index, 0x000002, + LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_ZERO, + msg,0,0); + if (nwa > d->nwa) + d->nwa = nwa; } /* user data */ @@ -711,7 +722,7 @@ void burn_disc_write_sync(struct burn_write_opts *o, struct burn_disc *disc) struct buffer buf; struct burn_track *lt; int first = 1, i; - int res; + int nwa; char msg[80]; /* ts A60924 : libburn/message.c gets obsoleted @@ -729,16 +740,14 @@ void burn_disc_write_sync(struct burn_write_opts *o, struct burn_disc *disc) /* Apparently some drives require this command to be sent, and a few drives return crap. so we send the command, then ignore the result. */ - res = d->get_nwa(d); - + nwa = d->get_nwa(d); /* >>> ts A61031 : one should not ignore the "crap" but find out when and why it occurs. Multi-session will hardly work on base of flat guessing. */ - sprintf(msg, "Ignored nwa: %d", res); + sprintf(msg, "Inquired nwa: %d", nwa); libdax_msgs_submit(libdax_messenger, d->global_index, 0x00000002, - LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_ZERO, - msg, 0, 0); + LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_ZERO, msg,0,0); d->alba = d->start_lba; d->nwa = d->alba; @@ -788,10 +797,12 @@ return crap. so we send the command, then ignore the result. } else { if (first) { - /* ts A61030 : this made the burner take data */ - if(o->write_type == BURN_WRITE_TAO) - d->nwa= d->alba= 0; - else { + /* ts A61030 : 0 made the burner take data. */ + /* ts A61103 : Meanwhile d->nwa is updated in + burn_write_track() */ + if(o->write_type == BURN_WRITE_TAO) { + d->nwa= d->alba = 0; + } else { d->nwa = -150; d->alba = -150;