diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 8fd4bbc..0d64379 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2013.02.26.080127" +#define Cdrskin_timestamP "2013.03.04.211258" diff --git a/libburn/mmc.c b/libburn/mmc.c index 33a8488..65e80d5 100644 --- a/libburn/mmc.c +++ b/libburn/mmc.c @@ -4250,14 +4250,22 @@ int mmc_get_write_performance(struct burn_drive *d) return 0; /* first command execution to learn number of descriptors and - dxfer_len */ + dxfer_len + */ ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr); + if (max_descr > 0 && ret > 0) { + /* Some drives announce only 1 descriptor if asked for 0. + So ask twice for non-0 descriptors. + */ + ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr); + } /* fprintf(stderr,"LIBBURN_DEBUG: ACh alloc_len = %d , ret = %d\n", alloc_len, ret); */ if (max_descr > 0 && ret > 0) - /* second execution with announced length */ + /* final execution with announced length */ + max_descr = (alloc_len - 8) / 16; ret = mmc_get_write_performance_al(d, &alloc_len, &max_descr); return ret; }