for your consideration: sync settings return flags instead of a bool, so we can have more granularity in what needs resetting than just "reboot core". for instance, we would like to minimize the number of times the window layout is redone by not doing it when the screen settings havent changed. HOWEVER, while I was writing this commit message, I realized, I should probably do it just by being more cautious in kicking off the layout (unless the data coming from the core has changed, a layout shouldnt happen). So I am going to make this commit, in case it inspires anyone, and then revert it.

This commit is contained in:
zeromus 2020-04-23 21:05:56 -04:00
parent c5ff7edba9
commit c878c85dae
47 changed files with 199 additions and 180 deletions

View File

@ -195,7 +195,7 @@ namespace BizHawk.Client.Common
_ => (object) null _ => (object) null
}; };
public bool PutSettings(object settings) => Emulator switch public PutSettingsDirtyBits PutSettings(object settings) => Emulator switch
{ {
GPGX gpgx => gpgx.PutSettings((GPGX.GPGXSettings) settings), GPGX gpgx => gpgx.PutSettings((GPGX.GPGXSettings) settings),
LibsnesCore snes => snes.PutSettings((LibsnesCore.SnesSettings) settings), LibsnesCore snes => snes.PutSettings((LibsnesCore.SnesSettings) settings),
@ -204,7 +204,7 @@ namespace BizHawk.Client.Common
QuickNES quickNes => quickNes.PutSettings((QuickNES.QuickNESSettings) settings), QuickNES quickNes => quickNes.PutSettings((QuickNES.QuickNESSettings) settings),
SMS sms => sms.PutSettings((SMS.SmsSettings) settings), SMS sms => sms.PutSettings((SMS.SmsSettings) settings),
WonderSwan ws => ws.PutSettings((WonderSwan.Settings) settings), WonderSwan ws => ws.PutSettings((WonderSwan.Settings) settings),
_ => false _ => PutSettingsDirtyBits.None
}; };
public void SetRenderPlanes(params bool[] args) public void SetRenderPlanes(params bool[] args)

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using BizHawk.Emulation.Common;
namespace BizHawk.Client.Common namespace BizHawk.Client.Common
{ {
@ -26,7 +27,7 @@ namespace BizHawk.Client.Common
string GetDisplayType(); string GetDisplayType();
string GetBoardName(); string GetBoardName();
object GetSettings(); object GetSettings();
bool PutSettings(object settings); PutSettingsDirtyBits PutSettings(object settings);
void SetRenderPlanes(params bool[] args); void SetRenderPlanes(params bool[] args);
} }
} }

View File

@ -2305,11 +2305,12 @@ namespace BizHawk.Client.EmuHawk
public void PutCoreSettings(object o) public void PutCoreSettings(object o)
{ {
var settable = new SettingsAdapter(Emulator); var settable = new SettingsAdapter(Emulator);
if (settable.HasSettings && settable.PutSettings(o)) if (!settable.HasSettings)
{ return;
var dirty = settable.PutSettings(o);
if(dirty.HasFlag(PutSettingsDirtyBits.RebootCore))
FlagNeedsReboot(); FlagNeedsReboot();
} }
}
// TODO: Get/Put settings/sync settings methods could become a service we instantiate and use and pass to other forms // TODO: Get/Put settings/sync settings methods could become a service we instantiate and use and pass to other forms
/// <summary> /// <summary>
@ -2322,8 +2323,12 @@ namespace BizHawk.Client.EmuHawk
{ {
AddOnScreenMessage("Attempt to change sync-relevant settings while recording BLOCKED."); AddOnScreenMessage("Attempt to change sync-relevant settings while recording BLOCKED.");
} }
else if (settable.HasSyncSettings && settable.PutSyncSettings(o)) else
{ {
if (!settable.HasSyncSettings)
return;
var dirty = settable.PutSyncSettings(o);
if(dirty.HasFlag(PutSettingsDirtyBits.RebootCore))
FlagNeedsReboot(); FlagNeedsReboot();
} }
} }

View File

@ -41,7 +41,7 @@ namespace BizHawk.Emulation.Common
/// </summary> /// </summary>
/// <param name="o">an object of the same type as the return for GetSettings</param> /// <param name="o">an object of the same type as the return for GetSettings</param>
/// <returns>true if a core reboot will be required to make the changes effective</returns> /// <returns>true if a core reboot will be required to make the changes effective</returns>
bool PutSettings(TSettings o); PutSettingsDirtyBits PutSettings(TSettings o);
/// <summary> /// <summary>
/// changes the movie-sync relevant settings. THIS SHOULD NEVER BE CALLED WHILE RECORDING /// changes the movie-sync relevant settings. THIS SHOULD NEVER BE CALLED WHILE RECORDING
@ -49,7 +49,19 @@ namespace BizHawk.Emulation.Common
/// </summary> /// </summary>
/// <param name="o">an object of the same type as the return for GetSyncSettings</param> /// <param name="o">an object of the same type as the return for GetSyncSettings</param>
/// <returns>true if a core reboot will be required to make the changes effective</returns> /// <returns>true if a core reboot will be required to make the changes effective</returns>
bool PutSyncSettings(TSync o); PutSettingsDirtyBits PutSyncSettings(TSync o);
}
//note: this is a bit of a frail API. If a frontend wants a new flag, cores won't know to yea or nay it
//this could be solved by adding a KnownSettingsDirtyBits on the settings interface
//or, in a pinch, the same thing could be done with THESE flags, so that the interface doesn't
//change but newly-aware cores can simply manifest that they know about more bits, in the same variable they return the bits in
[Flags]
public enum PutSettingsDirtyBits
{
None = 0,
RebootCore = 1,
ScreenLayoutChanged = 2,
} }
/// <summary> /// <summary>
@ -126,7 +138,7 @@ namespace BizHawk.Emulation.Common
} }
/// <exception cref="InvalidOperationException">does not have non-sync settings</exception> /// <exception cref="InvalidOperationException">does not have non-sync settings</exception>
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
if (!HasSettings) if (!HasSettings)
{ {
@ -134,11 +146,11 @@ namespace BizHawk.Emulation.Common
} }
_tmp1[0] = o; _tmp1[0] = o;
return (bool)_puts.Invoke(_emu, _tmp1); return (PutSettingsDirtyBits)_puts.Invoke(_emu, _tmp1);
} }
/// <exception cref="InvalidOperationException">does not have sync settings</exception> /// <exception cref="InvalidOperationException">does not have sync settings</exception>
public bool PutSyncSettings(object o) public PutSettingsDirtyBits PutSyncSettings(object o)
{ {
if (!HasSyncSettings) if (!HasSyncSettings)
{ {
@ -146,7 +158,7 @@ namespace BizHawk.Emulation.Common
} }
_tmp1[0] = o; _tmp1[0] = o;
return (bool)_putss.Invoke(_emu, _tmp1); return (PutSettingsDirtyBits)_putss.Invoke(_emu, _tmp1);
} }
} }
} }

View File

@ -257,18 +257,18 @@ namespace BizHawk.Emulation.Cores.Arcades.MAME
#region ISettable #region ISettable
public object GetSettings() => null; public object GetSettings() => null;
public bool PutSettings(object o) => false; public PutSettingsDirtyBits PutSettings(object o) => PutSettingsDirtyBits.None;
public SyncSettings GetSyncSettings() public SyncSettings GetSyncSettings()
{ {
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class SyncSettings public class SyncSettings

View File

@ -11,10 +11,10 @@ namespace BizHawk.Emulation.Cores.Calculators
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(TI83Settings o) public PutSettingsDirtyBits PutSettings(TI83Settings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public object GetSyncSettings() public object GetSyncSettings()
@ -22,9 +22,9 @@ namespace BizHawk.Emulation.Cores.Calculators
return null; return null;
} }
public bool PutSyncSettings(object o) public PutSettingsDirtyBits PutSyncSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public class TI83Settings public class TI83Settings

View File

@ -25,7 +25,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(AmstradCPCSettings o) public PutSettingsDirtyBits PutSettings(AmstradCPCSettings o)
{ {
// restore user settings to devices // restore user settings to devices
@ -42,14 +42,14 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(AmstradCPCSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(AmstradCPCSyncSettings o)
{ {
bool ret = AmstradCPCSyncSettings.NeedsReboot(SyncSettings, o); bool ret = AmstradCPCSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class AmstradCPCSettings public class AmstradCPCSettings

View File

@ -20,16 +20,16 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII
public object GetSyncSettings() => null; public object GetSyncSettings() => null;
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_settings = o; _settings = o;
_machine.Video.IsMonochrome = _settings.Monochrome; _machine.Video.IsMonochrome = _settings.Monochrome;
SetCallbacks(); SetCallbacks();
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(object o) => false; public PutSettingsDirtyBits PutSyncSettings(object o) => PutSettingsDirtyBits.None;
} }
} }

View File

@ -16,16 +16,16 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(C64Settings o) public PutSettingsDirtyBits PutSettings(C64Settings o)
{ {
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(C64SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(C64SyncSettings o)
{ {
SyncSettings = o; SyncSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
internal C64Settings Settings { get; private set; } internal C64Settings Settings { get; private set; }

View File

@ -16,18 +16,18 @@ namespace BizHawk.Emulation.Cores.Computers.MSX
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(MSXSettings o) public PutSettingsDirtyBits PutSettings(MSXSettings o)
{ {
bool ret = MSXSettings.RebootNeeded(Settings, o); bool ret = MSXSettings.RebootNeeded(Settings, o);
Settings = o; Settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(MSXSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(MSXSyncSettings o)
{ {
bool ret = MSXSyncSettings.RebootNeeded(SyncSettings, o); bool ret = MSXSyncSettings.RebootNeeded(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal MSXSettings Settings { get; private set; } internal MSXSettings Settings { get; private set; }

View File

@ -20,7 +20,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
public ZXSpectrumSyncSettings GetSyncSettings() => SyncSettings.Clone(); public ZXSpectrumSyncSettings GetSyncSettings() => SyncSettings.Clone();
public bool PutSettings(ZXSpectrumSettings o) public PutSettingsDirtyBits PutSettings(ZXSpectrumSettings o)
{ {
// restore user settings to devices // restore user settings to devices
if (_machine?.AYDevice != null) if (_machine?.AYDevice != null)
@ -39,14 +39,14 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(ZXSpectrumSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(ZXSpectrumSyncSettings o)
{ {
bool ret = ZXSpectrumSyncSettings.NeedsReboot(SyncSettings, o); bool ret = ZXSpectrumSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class ZXSpectrumSettings public class ZXSpectrumSettings

View File

@ -21,7 +21,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(A2600Settings o) public PutSettingsDirtyBits PutSettings(A2600Settings o)
{ {
if (Settings == null || Settings.SECAMColors != o.SECAMColors) if (Settings == null || Settings.SECAMColors != o.SECAMColors)
{ {
@ -29,14 +29,14 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
} }
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(A2600SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(A2600SyncSettings o)
{ {
bool ret = A2600SyncSettings.NeedsReboot(SyncSettings, o); bool ret = A2600SyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal A2600Settings Settings { get; private set; } internal A2600Settings Settings { get; private set; }

View File

@ -18,17 +18,17 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(A7800Settings o) public PutSettingsDirtyBits PutSettings(A7800Settings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(A7800SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(A7800SyncSettings o)
{ {
bool ret = A7800SyncSettings.NeedsReboot(_syncSettings, o); bool ret = A7800SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private A7800Settings _settings = new A7800Settings(); private A7800Settings _settings = new A7800Settings();

View File

@ -18,18 +18,18 @@ namespace BizHawk.Emulation.Cores.ColecoVision
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(ColecoSettings o) public PutSettingsDirtyBits PutSettings(ColecoSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(ColecoSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(ColecoSyncSettings o)
{ {
bool ret = o.SkipBiosIntro != _syncSettings.SkipBiosIntro; bool ret = o.SkipBiosIntro != _syncSettings.SkipBiosIntro;
ret |= ColecoSyncSettings.NeedsReboot(_syncSettings, o); ret |= ColecoSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class ColecoSettings public class ColecoSettings

View File

@ -19,17 +19,17 @@ namespace BizHawk.Emulation.Cores.Consoles.ChannelF
return SyncSettings.Clone(); return SyncSettings.Clone();
} }
public bool PutSettings(ChannelFSettings o) public PutSettingsDirtyBits PutSettings(ChannelFSettings o)
{ {
Settings = o; Settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(ChannelFSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(ChannelFSyncSettings o)
{ {
bool ret = ChannelFSyncSettings.NeedsReboot(SyncSettings, o); bool ret = ChannelFSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class ChannelFSettings public class ChannelFSettings

View File

@ -19,17 +19,17 @@ namespace BizHawk.Emulation.Cores.Consoles.Vectrex
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(VectrexSettings o) public PutSettingsDirtyBits PutSettings(VectrexSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(VectrexSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(VectrexSyncSettings o)
{ {
bool ret = VectrexSyncSettings.NeedsReboot(_syncSettings, o); bool ret = VectrexSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private VectrexSettings _settings = new VectrexSettings(); private VectrexSettings _settings = new VectrexSettings();

View File

@ -18,17 +18,17 @@ namespace BizHawk.Emulation.Cores.Intellivision
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(IntvSettings o) public PutSettingsDirtyBits PutSettings(IntvSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(IntvSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(IntvSyncSettings o)
{ {
bool ret = IntvSyncSettings.NeedsReboot(_syncSettings, o); bool ret = IntvSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private IntvSettings _settings = new IntvSettings(); private IntvSettings _settings = new IntvSettings();

View File

@ -16,17 +16,17 @@ namespace BizHawk.Emulation.Cores.Consoles.O2Hawk
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(O2Settings o) public PutSettingsDirtyBits PutSettings(O2Settings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(O2SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(O2SyncSettings o)
{ {
bool ret = O2SyncSettings.NeedsReboot(_syncSettings, o); bool ret = O2SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public O2Settings _settings = new O2Settings(); public O2Settings _settings = new O2Settings();

View File

@ -330,19 +330,19 @@ namespace BizHawk.Emulation.Cores.Consoles.NEC.PCFX
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
var ret = Settings.NeedsReboot(_settings, o); var ret = Settings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
SetLayerSettings(); SetLayerSettings();
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private void SetNativeSettingsBeforeInit() private void SetNativeSettingsBeforeInit()

View File

@ -15,7 +15,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
LibmGBA.Layers mask = 0; LibmGBA.Layers mask = 0;
if (o.DisplayBG0) mask |= LibmGBA.Layers.BG0; if (o.DisplayBG0) mask |= LibmGBA.Layers.BG0;
@ -51,7 +51,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
LibmGBA.BizSetPalette(Core, palette); LibmGBA.BizSetPalette(Core, palette);
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
private Settings _settings; private Settings _settings;
@ -139,11 +139,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private SyncSettings _syncSettings; private SyncSettings _syncSettings;

View File

@ -18,16 +18,16 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBA
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private SyncSettings _syncSettings; private SyncSettings _syncSettings;

View File

@ -20,17 +20,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(GBSettings o) public PutSettingsDirtyBits PutSettings(GBSettings o)
{ {
_settings = o; _settings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBSyncSettings o)
{ {
bool ret = GBSyncSettings.NeedsReboot(_syncSettings, o); bool ret = GBSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBSettings _settings = new GBSettings(); private GBSettings _settings = new GBSettings();

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink
public GBLinkSyncSettings GetSyncSettings() => linkSyncSettings.Clone(); public GBLinkSyncSettings GetSyncSettings() => linkSyncSettings.Clone();
public bool PutSettings(GBLinkSettings o) public PutSettingsDirtyBits PutSettings(GBLinkSettings o)
{ {
linkSettings = o; linkSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBLinkSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBLinkSyncSettings o)
{ {
bool ret = GBLinkSyncSettings.NeedsReboot(linkSyncSettings, o); bool ret = GBLinkSyncSettings.NeedsReboot(linkSyncSettings, o);
linkSyncSettings = o; linkSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBLinkSettings linkSettings = new GBLinkSettings(); private GBLinkSettings linkSettings = new GBLinkSettings();

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink3x
public GBLink3xSyncSettings GetSyncSettings() => Link3xSyncSettings.Clone(); public GBLink3xSyncSettings GetSyncSettings() => Link3xSyncSettings.Clone();
public bool PutSettings(GBLink3xSettings o) public PutSettingsDirtyBits PutSettings(GBLink3xSettings o)
{ {
Link3xSettings = o; Link3xSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBLink3xSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBLink3xSyncSettings o)
{ {
bool ret = GBLink3xSyncSettings.NeedsReboot(Link3xSyncSettings, o); bool ret = GBLink3xSyncSettings.NeedsReboot(Link3xSyncSettings, o);
Link3xSyncSettings = o; Link3xSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBLink3xSettings Link3xSettings = new GBLink3xSettings(); private GBLink3xSettings Link3xSettings = new GBLink3xSettings();

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawkLink4x
public GBLink4xSyncSettings GetSyncSettings() => Link4xSyncSettings.Clone(); public GBLink4xSyncSettings GetSyncSettings() => Link4xSyncSettings.Clone();
public bool PutSettings(GBLink4xSettings o) public PutSettingsDirtyBits PutSettings(GBLink4xSettings o)
{ {
Link4xSettings = o; Link4xSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GBLink4xSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GBLink4xSyncSettings o)
{ {
bool ret = GBLink4xSyncSettings.NeedsReboot(Link4xSyncSettings, o); bool ret = GBLink4xSyncSettings.NeedsReboot(Link4xSyncSettings, o);
Link4xSyncSettings = o; Link4xSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GBLink4xSettings Link4xSettings = new GBLink4xSettings(); private GBLink4xSettings Link4xSettings = new GBLink4xSettings();

View File

@ -14,7 +14,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(GambatteSettings o) public PutSettingsDirtyBits PutSettings(GambatteSettings o)
{ {
_settings = o; _settings = o;
if (IsCGBMode()) if (IsCGBMode())
@ -26,7 +26,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
ChangeDMGColors(_settings.GBPalette); ChangeDMGColors(_settings.GBPalette);
} }
return false; return PutSettingsDirtyBits.None;
} }
public GambatteSyncSettings GetSyncSettings() public GambatteSyncSettings GetSyncSettings()
@ -34,11 +34,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(GambatteSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GambatteSyncSettings o)
{ {
bool ret = GambatteSyncSettings.NeedsReboot(_syncSettings, o); bool ret = GambatteSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GambatteSettings _settings; private GambatteSettings _settings;

View File

@ -21,14 +21,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.Gameboy
); );
} }
public bool PutSettings(GambatteLinkSettings o) public PutSettingsDirtyBits PutSettings(GambatteLinkSettings o)
{ {
return L.PutSettings(o.L) || R.PutSettings(o.R); return (PutSettingsDirtyBits)((int)L.PutSettings(o.L) | (int)R.PutSettings(o.R));
} }
public bool PutSyncSettings(GambatteLinkSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GambatteLinkSyncSettings o)
{ {
return L.PutSyncSettings(o.L) || R.PutSyncSettings(o.R); return (PutSettingsDirtyBits)((int)L.PutSyncSettings(o.L) | (int)R.PutSyncSettings(o.R));
} }
public class GambatteLinkSettings public class GambatteLinkSettings

View File

@ -245,18 +245,18 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
var ret = Settings.NeedsReboot(_settings, o); var ret = Settings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -14,17 +14,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(N64Settings o) public PutSettingsDirtyBits PutSettings(N64Settings o)
{ {
_settings = o; _settings = o;
return true; return PutSettingsDirtyBits.RebootCore;
} }
public bool PutSyncSettings(N64SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(N64SyncSettings o)
{ {
_syncSettings = o; _syncSettings = o;
SetControllerButtons(); SetControllerButtons();
return true; return PutSettingsDirtyBits.RebootCore;
} }
private void SetControllerButtons() private void SetControllerButtons()

View File

@ -30,14 +30,14 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
return ret; return ret;
} }
public bool PutSettings(MelonSettings o) public PutSettingsDirtyBits PutSettings(MelonSettings o)
{ {
_settings = o ?? new MelonSettings(); _settings = o ?? new MelonSettings();
SetScaleFactor(_settings.ScaleFactor); SetScaleFactor(_settings.ScaleFactor);
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(MelonSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(MelonSyncSettings o)
{ {
if (o == null) if (o == null)
{ {
@ -54,7 +54,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
SetTimeAtBoot(o.TimeAtBoot); SetTimeAtBoot(o.TimeAtBoot);
// At present, no sync settings can be modified without requiring a reboot. // At present, no sync settings can be modified without requiring a reboot.
return true; return PutSettingsDirtyBits.RebootCore;
} }
[DllImport(dllPath)] [DllImport(dllPath)]

View File

@ -12,7 +12,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
public NESSyncSettings GetSyncSettings() => SyncSettings.Clone(); public NESSyncSettings GetSyncSettings() => SyncSettings.Clone();
public bool PutSettings(NESSettings o) public PutSettingsDirtyBits PutSettings(NESSettings o)
{ {
Settings = o; Settings = o;
if (Settings.ClipLeftAndRight) if (Settings.ClipLeftAndRight)
@ -30,14 +30,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
apu.m_vol = Settings.APU_vol; apu.m_vol = Settings.APU_vol;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(NESSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(NESSyncSettings o)
{ {
bool ret = NESSyncSettings.NeedsReboot(SyncSettings, o); bool ret = NESSyncSettings.NeedsReboot(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal NESSettings Settings = new NESSettings(); internal NESSettings Settings = new NESSettings();

View File

@ -21,21 +21,21 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES
return _syncSettingsNext.Clone(); return _syncSettingsNext.Clone();
} }
public bool PutSettings(QuickNESSettings o) public PutSettingsDirtyBits PutSettings(QuickNESSettings o)
{ {
_settings = o; _settings = o;
QN.qn_set_sprite_limit(Context, _settings.NumSprites); QN.qn_set_sprite_limit(Context, _settings.NumSprites);
RecalculateCrops(); RecalculateCrops();
CalculatePalette(); CalculatePalette();
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(QuickNESSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(QuickNESSyncSettings o)
{ {
bool ret = QuickNESSyncSettings.NeedsReboot(_syncSettings, o); bool ret = QuickNESSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettingsNext = o; _syncSettingsNext = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private QuickNESSettings _settings; private QuickNESSettings _settings;

View File

@ -14,7 +14,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(SnesSettings o) public PutSettingsDirtyBits PutSettings(SnesSettings o)
{ {
bool refreshNeeded = o.Palette != _settings.Palette; bool refreshNeeded = o.Palette != _settings.Palette;
_settings = o; _settings = o;
@ -23,17 +23,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
RefreshPalette(); RefreshPalette();
} }
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SnesSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SnesSyncSettings o)
{ {
bool ret = o.LeftPort != _syncSettings.LeftPort bool ret = o.LeftPort != _syncSettings.LeftPort
|| o.RightPort != _syncSettings.RightPort || o.RightPort != _syncSettings.RightPort
|| o.LimitAnalogChangeSensitivity != _syncSettings.LimitAnalogChangeSensitivity; || o.LimitAnalogChangeSensitivity != _syncSettings.LimitAnalogChangeSensitivity;
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private SnesSettings _settings; private SnesSettings _settings;

View File

@ -308,7 +308,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES9X
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_settings = o; _settings = o;
int s = 0; int s = 0;
@ -334,14 +334,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES9X
if (o.ShowSprites3) l |= 2048; if (o.ShowSprites3) l |= 2048;
_core.biz_set_layers(l); _core.biz_set_layers(l);
return false; // no reboot needed return PutSettingsDirtyBits.None; // no reboot needed
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public class Settings public class Settings

View File

@ -58,7 +58,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubGBHawk
public GBHawk.GBHawk.GBSettings GetSettings() => _GBCore.GetSettings(); public GBHawk.GBHawk.GBSettings GetSettings() => _GBCore.GetSettings();
public GBHawk.GBHawk.GBSyncSettings GetSyncSettings() => _GBCore.GetSyncSettings(); public GBHawk.GBHawk.GBSyncSettings GetSyncSettings() => _GBCore.GetSyncSettings();
public bool PutSettings(GBHawk.GBHawk.GBSettings o) => _GBCore.PutSettings(o); public PutSettingsDirtyBits PutSettings(GBHawk.GBHawk.GBSettings o) => _GBCore.PutSettings(o);
public bool PutSyncSettings(GBHawk.GBHawk.GBSyncSettings o) => _GBCore.PutSyncSettings(o); public PutSettingsDirtyBits PutSyncSettings(GBHawk.GBHawk.GBSyncSettings o) => _GBCore.PutSyncSettings(o);
} }
} }

View File

@ -84,7 +84,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SubNESHawk
public NES.NES.NESSettings GetSettings() => _nesCore.GetSettings(); public NES.NES.NESSettings GetSettings() => _nesCore.GetSettings();
public NES.NES.NESSyncSettings GetSyncSettings() => _nesCore.GetSyncSettings(); public NES.NES.NESSyncSettings GetSyncSettings() => _nesCore.GetSyncSettings();
public bool PutSettings(NES.NES.NESSettings o) => _nesCore.PutSettings(o); public PutSettingsDirtyBits PutSettings(NES.NES.NESSettings o) => _nesCore.PutSettings(o);
public bool PutSyncSettings(NES.NES.NESSyncSettings o) => _nesCore.PutSyncSettings(o); public PutSettingsDirtyBits PutSyncSettings(NES.NES.NESSyncSettings o) => _nesCore.PutSyncSettings(o);
} }
} }

View File

@ -234,18 +234,18 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.VB
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
var ret = Settings.NeedsReboot(_settings, o); var ret = Settings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -17,7 +17,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(PCESettings o) public PutSettingsDirtyBits PutSettings(PCESettings o)
{ {
bool ret; bool ret;
if (o.ArcadeCardRewindHack != Settings.ArcadeCardRewindHack if (o.ArcadeCardRewindHack != Settings.ArcadeCardRewindHack
@ -32,14 +32,14 @@ namespace BizHawk.Emulation.Cores.PCEngine
Settings = o; Settings = o;
return ret; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(PCESyncSettings o) public PutSettingsDirtyBits PutSyncSettings(PCESyncSettings o)
{ {
bool ret = PCESyncSettings.NeedsReboot(o, _syncSettings); bool ret = PCESyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public PCESettings Settings; public PCESettings Settings;

View File

@ -166,16 +166,16 @@ namespace BizHawk.Emulation.Cores.Consoles.SNK
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -16,17 +16,17 @@ namespace BizHawk.Emulation.Cores.Sega.GGHawkLink
return linkSyncSettings.Clone(); return linkSyncSettings.Clone();
} }
public bool PutSettings(GGLinkSettings o) public PutSettingsDirtyBits PutSettings(GGLinkSettings o)
{ {
linkSettings = o; linkSettings = o;
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GGLinkSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GGLinkSyncSettings o)
{ {
bool ret = GGLinkSyncSettings.NeedsReboot(linkSyncSettings, o); bool ret = GGLinkSyncSettings.NeedsReboot(linkSyncSettings, o);
linkSyncSettings = o; linkSyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private GGLinkSettings linkSettings = new GGLinkSettings(); private GGLinkSettings linkSettings = new GGLinkSettings();

View File

@ -229,16 +229,16 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(object o) public PutSettingsDirtyBits PutSettings(object o)
{ {
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, o); var ret = SyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -9,18 +9,18 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem
public SmsSyncSettings GetSyncSettings() => SyncSettings.Clone(); public SmsSyncSettings GetSyncSettings() => SyncSettings.Clone();
public bool PutSettings(SmsSettings o) public PutSettingsDirtyBits PutSettings(SmsSettings o)
{ {
bool ret = SmsSettings.RebootNeeded(Settings, o); bool ret = SmsSettings.RebootNeeded(Settings, o);
Settings = o; Settings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SmsSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SmsSyncSettings o)
{ {
bool ret = SmsSyncSettings.RebootNeeded(SyncSettings, o); bool ret = SmsSyncSettings.RebootNeeded(SyncSettings, o);
SyncSettings = o; SyncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
internal SmsSettings Settings { get; private set; } internal SmsSettings Settings { get; private set; }

View File

@ -439,7 +439,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn
return _settings.Clone(); return _settings.Clone();
} }
public bool PutSettings(Settings s) public PutSettingsDirtyBits PutSettings(Settings s)
{ {
var ret = Settings.NeedsReboot(_settings, s); var ret = Settings.NeedsReboot(_settings, s);
_settings = s; _settings = s;
@ -449,7 +449,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn
//(the correct aspect ratio is no longer an option for other reasons) //(the correct aspect ratio is no longer an option for other reasons)
//_core.SetVideoParameters(s.CorrectAspectRatio, s.HBlend, s.HOverscan, sls, sle); //_core.SetVideoParameters(s.CorrectAspectRatio, s.HBlend, s.HOverscan, sls, sle);
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public SyncSettings GetSyncSettings() public SyncSettings GetSyncSettings()
@ -457,11 +457,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.Saturn
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSyncSettings(SyncSettings s) public PutSettingsDirtyBits PutSyncSettings(SyncSettings s)
{ {
var ret = SyncSettings.NeedsReboot(_syncSettings, s); var ret = SyncSettings.NeedsReboot(_syncSettings, s);
_syncSettings = s; _syncSettings = s;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private void SetVideoParameters() private void SetVideoParameters()

View File

@ -21,19 +21,19 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
return _syncSettings.Clone(); return _syncSettings.Clone();
} }
public bool PutSettings(GPGXSettings o) public PutSettingsDirtyBits PutSettings(GPGXSettings o)
{ {
bool ret = GPGXSettings.NeedsReboot(_settings, o); bool ret = GPGXSettings.NeedsReboot(_settings, o);
_settings = o; _settings = o;
Core.gpgx_set_draw_mask(_settings.GetDrawMask()); Core.gpgx_set_draw_mask(_settings.GetDrawMask());
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(GPGXSyncSettings o) public PutSettingsDirtyBits PutSyncSettings(GPGXSyncSettings o)
{ {
bool ret = GPGXSyncSettings.NeedsReboot(_syncSettings, o); bool ret = GPGXSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
private class UintToHexConverter : TypeConverter private class UintToHexConverter : TypeConverter

View File

@ -1271,17 +1271,17 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
return _SyncSettings.Clone(); return _SyncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_Settings.Validate(); _Settings.Validate();
_Settings = o; _Settings = o;
//TODO - store settings into core? or we can just keep doing it before frameadvance //TODO - store settings into core? or we can just keep doing it before frameadvance
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
//currently LEC and pad settings changes both require reboot //currently LEC and pad settings changes both require reboot
bool reboot = true; bool reboot = true;
@ -1293,7 +1293,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
_SyncSettings = o; _SyncSettings = o;
return reboot; return reboot ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
#endregion #endregion

View File

@ -158,19 +158,19 @@ namespace BizHawk.Emulation.Cores.WonderSwan
public SyncSettings GetSyncSettings() => _syncSettings.Clone(); public SyncSettings GetSyncSettings() => _syncSettings.Clone();
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_settings = o; _settings = o;
var native = _settings.GetNativeSettings(); var native = _settings.GetNativeSettings();
BizSwan.bizswan_putsettings(Core, ref native); BizSwan.bizswan_putsettings(Core, ref native);
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool ret = SyncSettings.NeedsReboot(o, _syncSettings); bool ret = SyncSettings.NeedsReboot(o, _syncSettings);
_syncSettings = o; _syncSettings = o;
return ret; return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
} }

View File

@ -1,5 +1,6 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using BizHawk.Common; using BizHawk.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Libretro namespace BizHawk.Emulation.Cores.Libretro
{ {
@ -49,17 +50,17 @@ namespace BizHawk.Emulation.Cores.Libretro
return _SyncSettings.Clone(); return _SyncSettings.Clone();
} }
public bool PutSettings(Settings o) public PutSettingsDirtyBits PutSettings(Settings o)
{ {
_Settings.Validate(); _Settings.Validate();
_Settings = o; _Settings = o;
//TODO - store settings into core? or we can just keep doing it before frameadvance //TODO - store settings into core? or we can just keep doing it before frameadvance
return false; return PutSettingsDirtyBits.None;
} }
public bool PutSyncSettings(SyncSettings o) public PutSettingsDirtyBits PutSyncSettings(SyncSettings o)
{ {
bool reboot = false; bool reboot = false;
@ -68,7 +69,7 @@ namespace BizHawk.Emulation.Cores.Libretro
_SyncSettings = o; _SyncSettings = o;
return reboot; return reboot ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None;
} }
} }