bool defaultports;
uae_u32 age;
};
-static struct stored_jport stored_jports[MAX_JPORTS][8];
+static struct stored_jport stored_jports[MAX_JPORTS][MAX_STORED_JPORTS];
static uae_u32 stored_jport_cnt;
// return port where idc was previously plugged if any and forgot it.
-static int inputdevice_get_unplugged_device(struct inputdevconfig *idc)
+static int inputdevice_get_unplugged_device(struct inputdevconfig *idc, struct stored_jport **sjp)
{
for (int portnum = 0; portnum < MAX_JPORTS; portnum++) {
for (int i = 0; i < MAX_STORED_JPORTS; i++) {
if (jp->inuse && jp->jp.id == JPORT_UNPLUGGED) {
if (!_tcscmp(idc->name, jp->jp.idc.name) && !_tcscmp(idc->configname, jp->jp.idc.configname)) {
jp->inuse = false;
+ *sjp = jp;
return portnum;
}
}
struct jport *jp = &p->jports[i];
if (!_tcscmp(jp->idc.name, idc->name) && !_tcscmp(jp->idc.configname, idc->configname)) {
write_log(_T("On the fly unplugged stored, port %d '%s' (%s)\n"), i, jpt.idc.name, jpt.idc.configname);
+ jpt.mode = jp->mode;
+ jpt.autofire = jp->autofire;
inputdevice_store_used_device(&jpt, i, false);
}
}
for (i = 0; i < num; i++) {
if (df[i] == false) {
struct inputdevconfig idc;
+ struct stored_jport *sjp;
_tcscpy(idc.configname, inf->get_uniquename(i));
_tcscpy(idc.name, inf->get_friendlyname(i));
write_log(_T("INSERTED: %s (%s)\n"), idc.name, idc.configname);
changed = true;
- int portnum = inputdevice_get_unplugged_device(&idc);
+ int portnum = inputdevice_get_unplugged_device(&idc, &sjp);
if (portnum >= 0) {
write_log(_T("Inserting to port %d\n"), portnum);
jportscustom[i] = -1;
xfree(jports_configname[portnum]);
jports_name[portnum] = my_strdup(idc.name);
jports_configname[portnum] = my_strdup(idc.configname);
+ jportaf[portnum] = sjp->jp.autofire;
+ jportsmode[portnum] = sjp->jp.mode;
} else {
write_log(_T("Not inserted to any port\n"));
}