int mp3;
};
-static bool we_are_active;
static uae_u8 buffer[2352];
static struct cdtoc toc[102];
static int tracks;
if (_tcscmp (changed_prefs.cdimagefile, currprefs.cdimagefile)) {
_tcscpy (newfile, changed_prefs.cdimagefile);
- if (!we_are_active) {
- _tcscpy (currprefs.cdimagefile, newfile);
- device_func_init (0);
- }
changed_prefs.cdimagefile[0] = currprefs.cdimagefile[0] = 0;
imagechange = 3 * 50;
write_log (L"CD: eject\n");
newfile[0] = 0;
write_log (L"CD: delayed insert '%s'\n", currprefs.cdimagefile[0] ? currprefs.cdimagefile : L"<EMPTY>");
donotmountme = true;
- int un = scsi_do_disk_change (-1, 1);
+ int un = scsi_do_disk_device_change ();
donotmountme = false;
- if (un >= 0) {
- struct device_info di;
- media = sys_command_ismedia (DF_IOCTL, un, 1);
- if (sys_command_info (DF_IOCTL, un, &di))
- scsi_do_disk_change (di.id, 1);
- } else {
+ if (un < 0) {
device_func_init (DEVICE_TYPE_ANY); // active us again
parse_image ();
media = tracks > 0;
rp_cd_change (0, 0);
rp_cd_image_change (0, currprefs.cdimagefile[0] ? currprefs.cdimagefile : NULL);
#endif
- we_are_active = v ? true : false;
return v;
}
static void close_bus (void)
{
- we_are_active = false;
mp3decoder_close ();
#ifdef RETROPLATFORM
rp_cd_change (0, 1);
void scsidev_reset (void);
void scsidev_start_threads (void);
int scsi_do_disk_change (int device_id, int insert);
+int scsi_do_disk_device_change (void);
extern int log_scsi;
#define WINUAEPUBLICBETA 1
#define LANG_DLL 1
-#define WINUAEBETA L"10"
-#define WINUAEDATE MAKEBD(2010, 6, 19)
-#define WINUAEEXTRA L"RC1"
+#define WINUAEBETA L"11"
+#define WINUAEDATE MAKEBD(2010, 6, 20)
+#define WINUAEEXTRA L"RC2"
#define WINUAEREV L""
#define IHF_WINDOWHIDDEN 6
struct priv_devstruct *pdev = &pdevst[dev->aunit];
setpdev (pdev, dev);
}
+ if (dev->di.media_inserted) {
+ dev->di.media_inserted = 0;
+ scsi_do_disk_change (dev->di.id, 1);
+ }
}
}
if (devst[0].opencnt == 0)
struct priv_devstruct *pdev = &pdevst[dev->aunit];
setpdev (pdev, dev);
}
+ dev->di.media_inserted = 0;
}
if (devst[0].opencnt == 0)
sys_command_close (DF_IOCTL, 0);
return -1;
}
+int scsi_do_disk_device_change (void)
+{
+ int ret = scsiemul_switchscsi (currprefs.cdimagefile);
+ if (ret < 0) {
+ scsiemul_switchemu (currprefs.cdimagefile);
+ }
+ return ret;
+}
+
// device_id = -1 and insert==0 -> all medias going away
int scsi_do_disk_change (int device_id, int insert)
{
if (!change_sem)
return ret;
uae_sem_wait (&change_sem);
- if (device_id < 0 && insert) {
- ret = scsiemul_switchscsi (currprefs.cdimagefile);
- if (ret < 0) {
- scsiemul_switchemu (currprefs.cdimagefile);
- goto end;
- }
- }
for (i = 0; i < MAX_TOTAL_DEVICES; i++) {
struct devstruct *dev = &devst[i];
if (dev->di.id == device_id || (device_id < 0 && i == 0)) {
}
}
}
-end:
uae_sem_post (&change_sem);
return ret;
}