Avoided unwanted tray loading on eject of never grabbed drive
This commit is contained in:
parent
cedd85380e
commit
7e4191364a
@ -2090,6 +2090,7 @@ int Cdrskin_adjust_speed(struct CdrskiN *skin, int flag)
|
|||||||
bit0= skin->driveno points to a valid drive. The library
|
bit0= skin->driveno points to a valid drive. The library
|
||||||
will get reopened with that drive listed as only one
|
will get reopened with that drive listed as only one
|
||||||
and already grabbed.
|
and already grabbed.
|
||||||
|
bit1= do not load drive tray
|
||||||
@return 1 = success ,
|
@return 1 = success ,
|
||||||
0 = failure, drive is released, library initialized
|
0 = failure, drive is released, library initialized
|
||||||
-1 = failure, library is finished (and could not get initialized)
|
-1 = failure, library is finished (and could not get initialized)
|
||||||
@ -2122,7 +2123,7 @@ int Cdrskin_reinit_lib_with_adr(struct CdrskiN *skin, int flag)
|
|||||||
fprintf(stderr,"cdrskin : FATAL : Re-initialization of libburn failed\n");
|
fprintf(stderr,"cdrskin : FATAL : Re-initialization of libburn failed\n");
|
||||||
{ret= -1; goto ex;}
|
{ret= -1; goto ex;}
|
||||||
}
|
}
|
||||||
ret= Cdrskin_grab_drive(skin,1); /* uses burn_drive_scan_and_grab() */
|
ret= Cdrskin_grab_drive(skin,1|(flag&2));/* uses burn_drive_scan_and_grab() */
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
{ret=0; goto ex;}
|
{ret=0; goto ex;}
|
||||||
|
|
||||||
@ -2141,6 +2142,7 @@ ex:
|
|||||||
@param flag Bitfield for control purposes:
|
@param flag Bitfield for control purposes:
|
||||||
bit0= bus is unscanned, device is known,
|
bit0= bus is unscanned, device is known,
|
||||||
use burn_drive_scan_and_grab()
|
use burn_drive_scan_and_grab()
|
||||||
|
bit1= do not load drive tray
|
||||||
@return <=0 error, 1 success
|
@return <=0 error, 1 success
|
||||||
*/
|
*/
|
||||||
int Cdrskin_grab_drive(struct CdrskiN *skin, int flag)
|
int Cdrskin_grab_drive(struct CdrskiN *skin, int flag)
|
||||||
@ -2174,7 +2176,8 @@ int Cdrskin_grab_drive(struct CdrskiN *skin, int flag)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"cdrskin: experimental: Cdrskin_grab_drive() from shutdown libburn\n");
|
"cdrskin: experimental: Cdrskin_grab_drive() from shutdown libburn\n");
|
||||||
|
|
||||||
ret= burn_drive_scan_and_grab(&(skin->drives),skin->preskin->device_adr,1);
|
ret= burn_drive_scan_and_grab(&(skin->drives),skin->preskin->device_adr,
|
||||||
|
!(flag&2));
|
||||||
if(ret<=0) {
|
if(ret<=0) {
|
||||||
fprintf(stderr,"cdrskin: experimental: burn_drive_scan_and_grab ret=%d\n",
|
fprintf(stderr,"cdrskin: experimental: burn_drive_scan_and_grab ret=%d\n",
|
||||||
ret);
|
ret);
|
||||||
@ -2187,7 +2190,7 @@ int Cdrskin_grab_drive(struct CdrskiN *skin, int flag)
|
|||||||
if(strlen(skin->preskin->device_adr)<=0) {
|
if(strlen(skin->preskin->device_adr)<=0) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"cdrskin: experimental: Cdrskin_grab_drive() restarting libburn\n");
|
"cdrskin: experimental: Cdrskin_grab_drive() restarting libburn\n");
|
||||||
ret= Cdrskin_reinit_lib_with_adr(skin,1);
|
ret= Cdrskin_reinit_lib_with_adr(skin,1|(flag&2));
|
||||||
goto ex; /* this calls Cdrskin_grab() with persistent address or fails */
|
goto ex; /* this calls Cdrskin_grab() with persistent address or fails */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3447,7 +3450,7 @@ int Cdrskin_eject(struct CdrskiN *skin, int flag)
|
|||||||
|
|
||||||
#ifndef Cdrskin_burn_drive_eject_brokeN
|
#ifndef Cdrskin_burn_drive_eject_brokeN
|
||||||
|
|
||||||
if(Cdrskin_grab_drive(skin,0)>0)
|
if(Cdrskin_grab_drive(skin,2)>0)
|
||||||
Cdrskin_release_drive(skin,1);
|
Cdrskin_release_drive(skin,1);
|
||||||
if(skin->verbosity>=Cdrskin_verbose_debuG)
|
if(skin->verbosity>=Cdrskin_verbose_debuG)
|
||||||
ClN(fprintf(stderr,"cdrskin_debug: supposing drive eject to have worked\n"));
|
ClN(fprintf(stderr,"cdrskin_debug: supposing drive eject to have worked\n"));
|
||||||
|
Loading…
Reference in New Issue
Block a user