return wasinvalid;
}
-static void inputdevice_get_previous_joy(struct uae_prefs *p, int portnum)
+static void inputdevice_get_previous_joy(struct uae_prefs *p, int portnum, bool userconfig)
{
+ struct jport *jpx = &p->jports[portnum];
+
+ if (!userconfig) {
+ // default.uae with unplugged device -> NONE
+ p->jports[portnum].id = JPORT_NONE;
+ return;
+ }
bool found = false;
int idx = 0;
- struct jport *jpx = &p->jports[portnum];
for (;;) {
struct jport *jp = inputdevice_get_used_device(portnum, idx);
if (!jp)
}
// joystick not found, select previously used or default
if (start == JSEM_JOYS && p->jports[portnum].id < JSEM_JOYS) {
- inputdevice_get_previous_joy(p, portnum);
+ inputdevice_get_previous_joy(p, portnum, true);
set_config_changed ();
return 1;
}
write_log(_T("Unplugged stored, port %d '%s' (%s)\n"), i, jp->idc.name, jp->idc.configname);
inputdevice_store_used_device(&jpt, i, defaultports);
freejport(p, i);
- inputdevice_get_previous_joy(p, i);
+ inputdevice_get_previous_joy(p, i, userconfig);
matched[i] = true;
}
}
struct jport *jp = &jport_config_store[i];
freejport(p, i);
if (jp->id != JPORT_NONE) {
- inputdevice_get_previous_joy(p, i);
+ inputdevice_get_previous_joy(p, i, userconfig);
write_log(_T("Port%d: ID=%d getting previous: %d\n"), i, jp->id, p->jports[i].id);
} else {
write_log(_T("Port%d: NONE\n"), i);