#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];
};
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);