From: Toni Wilen Date: Sun, 18 Mar 2018 13:34:04 +0000 (+0200) Subject: Re-insert CD immediately if system is reset and delayed insert is currently active. X-Git-Tag: 4000~145 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=c4fca99972a6bbe8212d91287dacc0a2d4fd5695;p=francis%2Fwinuae.git Re-insert CD immediately if system is reset and delayed insert is currently active. --- diff --git a/blkdev.cpp b/blkdev.cpp index 77aa1327..ae537ae4 100644 --- a/blkdev.cpp +++ b/blkdev.cpp @@ -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]; diff --git a/devices.cpp b/devices.cpp index ca4ad4c8..5b73a72f 100644 --- a/devices.cpp +++ b/devices.cpp @@ -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 diff --git a/include/blkdev.h b/include/blkdev.h index 6292024d..97b871cd 100644 --- a/include/blkdev.h +++ b/include/blkdev.h @@ -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);