dsda: cache syncsettings until reboot
works around crash described in #4104
This commit is contained in:
parent
918783126e
commit
d804496cc2
|
@ -97,20 +97,21 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
|
|||
|
||||
private DoomSettings _settings;
|
||||
private DoomSyncSettings _syncSettings;
|
||||
private DoomSyncSettings _finalSyncSettings;
|
||||
|
||||
public DoomSettings GetSettings()
|
||||
=> _settings.Clone();
|
||||
|
||||
public DoomSyncSettings GetSyncSettings()
|
||||
=> _syncSettings.Clone();
|
||||
=> _finalSyncSettings.Clone();
|
||||
|
||||
public PutSettingsDirtyBits PutSettings(object o)
|
||||
=> PutSettingsDirtyBits.None;
|
||||
|
||||
public PutSettingsDirtyBits PutSyncSettings(DoomSyncSettings o)
|
||||
{
|
||||
var ret = DoomSyncSettings.NeedsReboot(_syncSettings, o);
|
||||
_syncSettings = o;
|
||||
var ret = DoomSyncSettings.NeedsReboot(_finalSyncSettings, o);
|
||||
_finalSyncSettings = o;
|
||||
return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace BizHawk.Emulation.Cores.Computers.Doom
|
|||
{
|
||||
var ser = new BasicServiceProvider(this);
|
||||
ServiceProvider = ser;
|
||||
_syncSettings = lp.SyncSettings ?? new DoomSyncSettings();
|
||||
_finalSyncSettings = _syncSettings = lp.SyncSettings ?? new DoomSyncSettings();
|
||||
_settings = lp.Settings ?? new DoomSettings();
|
||||
_controllerDeck = new DoomControllerDeck(_syncSettings.InputFormat, _syncSettings.Player1Present, _syncSettings.Player2Present, _syncSettings.Player3Present, _syncSettings.Player4Present);
|
||||
_loadCallback = LoadCallback;
|
||||
|
|
Loading…
Reference in New Issue