]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Re-insert CD immediately if system is reset and delayed insert is currently active.
authorToni Wilen <twilen@winuae.net>
Sun, 18 Mar 2018 13:34:04 +0000 (15:34 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 18 Mar 2018 13:34:04 +0000 (15:34 +0200)
blkdev.cpp
devices.cpp
include/blkdev.h

index 77aa132778bfd133fda42f890d5d1a077fca0563..ae537ae4838f7ef71b375a907157b47b0e1c8635 100644 (file)
@@ -511,7 +511,24 @@ void blkdev_cd_change (int unitnum, const TCHAR *name)
 #endif
 }
 
-void device_func_reset (void)
+void device_func_reset(void)
+{
+       // if reset during delayed CD change, re-insert the CD immediately
+       for (int i = 0; i < MAX_TOTAL_SCSI_DEVICES; i++) {
+               struct blkdevstate *st = &state[i];
+               if (st->imagechangetime > 0 && st->newimagefile[0] && !currprefs.cdslots[i].name[0]) {
+                       _tcscpy(changed_prefs.cdslots[i].name, st->newimagefile);
+                       _tcscpy(currprefs.cdslots[i].name, st->newimagefile);
+                       cd_statusline_label(i);
+               }
+               st->imagechangetime = 0;
+               st->newimagefile[0] = 0;
+               st->mediawaschanged = false;
+               st->waspaused = false;
+       }
+}
+
+void device_func_free(void)
 {
        for (int i = 0; i < MAX_TOTAL_SCSI_DEVICES; i++) {
                struct blkdevstate *st = &state[i];
index ca4ad4c8ad2cd3da7d702f92306b1c262a766bb0..5b73a72fc3f51304eef15d3a9426d5df27127d87 100644 (file)
@@ -324,6 +324,7 @@ void reset_all_systems (void)
        native2amiga_reset ();
        dongle_reset ();
        sampler_init ();
+       device_func_reset();
        uae_int_requested = 0;
 }
 
@@ -390,7 +391,7 @@ void do_leave_program (void)
 #endif
        gayle_free ();
        idecontroller_free();
-       device_func_reset ();
+       device_func_free();
 #ifdef WITH_LUA
        uae_lua_free ();
 #endif
index 6292024da9bae3e92361be2007651e60b4876a33..97b871cdd0a988bd12a37a843d66679c51df6321 100644 (file)
@@ -160,6 +160,7 @@ struct device_functions {
 };
 
 extern int device_func_init(int flags);
+extern void device_func_free(void);
 extern void device_func_reset(void);
 extern int sys_command_open (int unitnum);
 extern int sys_command_open_tape (int unitnum, const TCHAR *tape_directory, bool readonly);