Enabled TAO for multiple -data tracks (-audio still ends after 0 bytes)

trunk@386
Thomas Schmitt 16 years ago
parent 684cfd0cd2
commit 66515523c1
  1. 2
      cdrskin/cdrskin_timestamp.h
  2. 33
      libburn/write.c

@ -1 +1 @@
#define Cdrskin_timestamP "2006.11.03.151137"
#define Cdrskin_timestamP "2006.11.03.202403"

@ -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;

Loading…
Cancel
Save