From 49b6a35dfe37b15e9a4548c14d9f494e33493e34 Mon Sep 17 00:00:00 2001 From: zeromus Date: Thu, 23 Apr 2020 21:20:04 -0400 Subject: [PATCH] add another resizing part that I think is a bad idea --- BizHawk.Client.EmuHawk/MainForm.Events.cs | 2 +- BizHawk.Client.EmuHawk/MainForm.cs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index e7bf6c6740..a168e9044f 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -2041,7 +2041,7 @@ namespace BizHawk.Client.EmuHawk private void NDSSettingsMenuItem_Click(object sender, EventArgs e) { GenericCoreConfig.DoDialog(this, "NDS Settings", false, true); - FrameBufferResized(); + MaybeFrameBufferResized(); } private void NDSSyncSettingsMenuItem_Click(object sender, EventArgs e) diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index a2e2207701..924736e83f 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -810,6 +810,8 @@ namespace BizHawk.Client.EmuHawk private InputManager InputManager => Global.InputManager; private IVideoProvider _currentVideoProvider = NullVideo.Instance; + int _currentVideoProvider_last_width = -1; + int _currentVideoProvider_last_height = -1; private ISoundProvider _currentSoundProvider = new NullSound(44100 / 60); // Reasonable default until we have a core instance @@ -1084,8 +1086,26 @@ namespace BizHawk.Client.EmuHawk AddOnScreenMessage($"{fi.Name} saved."); } + /// + /// This is a separate function because sometimes we may knowingly want to force the layout to recalculate + /// When youre not sure, use this + /// + public void MaybeFrameBufferResized() + { + if (_currentVideoProvider_last_width == _currentVideoProvider.BufferWidth + && _currentVideoProvider_last_height == _currentVideoProvider.BufferHeight) + return; + FrameBufferResized(); + } + + /// + /// Forces the window layout to recalculate + /// public void FrameBufferResized() { + _currentVideoProvider_last_width = _currentVideoProvider.BufferWidth; + _currentVideoProvider_last_height = _currentVideoProvider.BufferHeight; + // run this entire thing exactly twice, since the first resize may adjust the menu stacking for (int i = 0; i < 2; i++) {