From: Toni Wilen Date: Sun, 20 Jun 2010 17:02:34 +0000 (+0300) Subject: 2200b11 X-Git-Tag: 2200~8 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=968c88da47a0e2b9762c3b7e97d355e6eb82b15c;p=francis%2Fwinuae.git 2200b11 --- diff --git a/blkdev_cdimage.cpp b/blkdev_cdimage.cpp index e1c1930d..a41677f9 100644 --- a/blkdev_cdimage.cpp +++ b/blkdev_cdimage.cpp @@ -45,7 +45,6 @@ struct cdtoc int mp3; }; -static bool we_are_active; static uae_u8 buffer[2352]; static struct cdtoc toc[102]; static int tracks; @@ -1030,10 +1029,6 @@ void cdimage_vsync (void) 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"); @@ -1053,14 +1048,9 @@ void cdimage_vsync (void) newfile[0] = 0; write_log (L"CD: delayed insert '%s'\n", currprefs.cdimagefile[0] ? currprefs.cdimagefile : L""); 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; @@ -1094,13 +1084,11 @@ static int open_bus (int flags) 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); diff --git a/include/scsidev.h b/include/scsidev.h index 64c1a2f0..b76904b6 100644 --- a/include/scsidev.h +++ b/include/scsidev.h @@ -13,6 +13,7 @@ void scsidev_install (void); 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; diff --git a/od-win32/win32.h b/od-win32/win32.h index 3f0559d8..6fbcf940 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -18,9 +18,9 @@ #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 diff --git a/scsiemul.cpp b/scsiemul.cpp index 425cb9a4..b1c6d927 100644 --- a/scsiemul.cpp +++ b/scsiemul.cpp @@ -311,6 +311,10 @@ static int scsiemul_switchscsi (const TCHAR *name) 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) @@ -344,6 +348,7 @@ static int scsiemul_switchemu (const TCHAR *name) 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); @@ -352,6 +357,15 @@ static int scsiemul_switchemu (const TCHAR *name) 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) { @@ -361,13 +375,6 @@ 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)) { @@ -392,7 +399,6 @@ int scsi_do_disk_change (int device_id, int insert) } } } -end: uae_sem_post (&change_sem); return ret; }