mirror of
https://github.com/libretro/Mesen.git
synced 2025-03-05 22:57:26 +00:00
UI: Minor fixes for display size when changing settings
This commit is contained in:
parent
b0dafd311a
commit
688d10a66b
@ -112,15 +112,18 @@ void VideoDecoder::DecodeFrame()
|
||||
aviRecorder->AddFrame(_videoFilter->GetOutputBuffer());
|
||||
}
|
||||
|
||||
FrameInfo frameInfo = _videoFilter->GetFrameInfo();
|
||||
if(_previousScale != EmulationSettings::GetVideoScale() || frameInfo.Height != _previousFrameInfo.Height || frameInfo.Width != _previousFrameInfo.Width) {
|
||||
ScreenSize screenSize;
|
||||
GetScreenSize(screenSize, true);
|
||||
if(_previousScale != EmulationSettings::GetVideoScale() || screenSize.Height != _previousScreenSize.Height || screenSize.Width != _previousScreenSize.Width) {
|
||||
MessageManager::SendNotification(ConsoleNotificationType::ResolutionChanged);
|
||||
}
|
||||
_previousScale = EmulationSettings::GetVideoScale();
|
||||
_previousFrameInfo = frameInfo;
|
||||
_previousScreenSize = screenSize;
|
||||
|
||||
_frameChanged = false;
|
||||
FrameInfo frameInfo = _videoFilter->GetFrameInfo();
|
||||
|
||||
_frameChanged = false;
|
||||
|
||||
VideoRenderer::GetInstance()->UpdateFrame(_videoFilter->GetOutputBuffer(), frameInfo.Width, frameInfo.Height);
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ private:
|
||||
atomic<bool> _stopFlag;
|
||||
uint32_t _frameCount = 0;
|
||||
|
||||
FrameInfo _previousFrameInfo = {};
|
||||
ScreenSize _previousScreenSize = {};
|
||||
double _previousScale = 0;
|
||||
|
||||
VideoFilterType _videoFilterType = VideoFilterType::None;
|
||||
|
@ -80,6 +80,7 @@ namespace Mesen.GUI.Forms.Config
|
||||
|
||||
protected override bool ValidateInput()
|
||||
{
|
||||
VideoFilterType orgFilter = ((VideoInfo)Entity).VideoFilter;
|
||||
UpdateObject();
|
||||
UpdatePalette();
|
||||
VideoFilterType filter = ((VideoInfo)Entity).VideoFilter;
|
||||
@ -94,6 +95,11 @@ namespace Mesen.GUI.Forms.Config
|
||||
} else {
|
||||
grpNtscFilter.Visible = false;
|
||||
}
|
||||
|
||||
if(filter != orgFilter) {
|
||||
nudScale.Value = filter == VideoFilterType.None ? 2 : 1;
|
||||
}
|
||||
|
||||
VideoInfo.ApplyConfig();
|
||||
return true;
|
||||
}
|
||||
|
@ -306,27 +306,22 @@ namespace Mesen.GUI.Forms
|
||||
{
|
||||
InteropEmu.ScreenSize size = InteropEmu.GetScreenSize(false);
|
||||
|
||||
Rectangle screenBounds = Screen.FromHandle(this.Handle).Bounds;
|
||||
if(size.Width > screenBounds.Width || size.Height > screenBounds.Height) {
|
||||
if(!_customSize && this.WindowState != FormWindowState.Maximized) {
|
||||
Size sizeGap = this.Size - this.ClientSize;
|
||||
|
||||
_regularScale = size.Scale;
|
||||
UpdateScaleMenu(size.Scale);
|
||||
|
||||
this.Resize -= frmMain_Resize;
|
||||
this.ClientSize = new Size(Math.Max(this.MinimumSize.Width - sizeGap.Width, size.Width), Math.Max(this.MinimumSize.Height - sizeGap.Height, size.Height + menuStrip.Height));
|
||||
this.Resize += frmMain_Resize;
|
||||
} else if(_customSize) {
|
||||
SetScaleBasedOnWindowSize();
|
||||
} else {
|
||||
if(!_customSize && this.WindowState != FormWindowState.Maximized) {
|
||||
Size sizeGap = this.Size - this.ClientSize;
|
||||
|
||||
_regularScale = size.Scale;
|
||||
UpdateScaleMenu(size.Scale);
|
||||
|
||||
this.Resize -= frmMain_Resize;
|
||||
this.ClientSize = new Size(Math.Max(this.MinimumSize.Width - sizeGap.Width, size.Width), Math.Max(this.MinimumSize.Height - sizeGap.Height, size.Height + menuStrip.Height));
|
||||
this.Resize += frmMain_Resize;
|
||||
} else if(_customSize) {
|
||||
SetScaleBasedOnWindowSize();
|
||||
}
|
||||
|
||||
ctrlRenderer.Size = new Size(size.Width, size.Height);
|
||||
ctrlRenderer.Left = (panelRenderer.Width - ctrlRenderer.Width) / 2;
|
||||
ctrlRenderer.Top = (panelRenderer.Height - ctrlRenderer.Height) / 2;
|
||||
}
|
||||
|
||||
ctrlRenderer.Size = new Size(size.Width, size.Height);
|
||||
ctrlRenderer.Left = (panelRenderer.Width - ctrlRenderer.Width) / 2;
|
||||
ctrlRenderer.Top = (panelRenderer.Height - ctrlRenderer.Height) / 2;
|
||||
}
|
||||
|
||||
private void frmMain_Resize(object sender, EventArgs e)
|
||||
@ -1462,7 +1457,8 @@ namespace Mesen.GUI.Forms
|
||||
if(_fullscreenMode) {
|
||||
IntPtr handle = this.Handle;
|
||||
this.BeginInvoke((MethodInvoker)(() => {
|
||||
this.ctrlRenderer.Top += this.menuStrip.Visible ? -menuStrip.Height : menuStrip.Height;
|
||||
int rendererTop = (panelRenderer.Height + (this.menuStrip.Visible ? menuStrip.Height : 0) - ctrlRenderer.Height) / 2;
|
||||
this.ctrlRenderer.Top = rendererTop + (this.menuStrip.Visible ? -menuStrip.Height : 0);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user