From 61a15c146560f03f9a85dddb9a5b617e4b7bbf31 Mon Sep 17 00:00:00 2001 From: DanyalZia Date: Sun, 26 Jan 2014 18:59:40 +0500 Subject: [PATCH] Fix a bug where changing resolution wouldn't make a difference on a fly --- GPU/GLES/Framebuffer.cpp | 8 ++++++++ Windows/WndMainWindow.cpp | 12 +++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/GPU/GLES/Framebuffer.cpp b/GPU/GLES/Framebuffer.cpp index 3b30393b18..cdfa9bae1e 100644 --- a/GPU/GLES/Framebuffer.cpp +++ b/GPU/GLES/Framebuffer.cpp @@ -1520,6 +1520,14 @@ void FramebufferManager::EndFrame() { if (resized_) { DestroyAllFBOs(); glstate.viewport.set(0, 0, PSP_CoreParameter().pixelWidth, PSP_CoreParameter().pixelHeight); + int zoom = g_Config.iInternalResolution; + if (zoom != 0) + { + PSP_CoreParameter().renderWidth = 480 * zoom; + PSP_CoreParameter().renderHeight = 272 * zoom; + PSP_CoreParameter().outputWidth = 480 * zoom; + PSP_CoreParameter().outputHeight = 272 * zoom; + } resized_ = false; } diff --git a/Windows/WndMainWindow.cpp b/Windows/WndMainWindow.cpp index 40a535401b..fff41c0f17 100644 --- a/Windows/WndMainWindow.cpp +++ b/Windows/WndMainWindow.cpp @@ -225,12 +225,13 @@ namespace MainWindow // Round up to a zoom factor for the render size. int zoom = g_Config.iInternalResolution; if (zoom == 0) // auto mode + { zoom = (rc.right - rc.left + 479) / 480; - - PSP_CoreParameter().renderWidth = 480 * zoom; - PSP_CoreParameter().renderHeight = 272 * zoom; - PSP_CoreParameter().outputWidth = 480 * zoom; - PSP_CoreParameter().outputHeight = 272 * zoom; + PSP_CoreParameter().renderWidth = 480 * zoom; + PSP_CoreParameter().renderHeight = 272 * zoom; + PSP_CoreParameter().outputWidth = 480 * zoom; + PSP_CoreParameter().outputHeight = 272 * zoom; + } if (displayOSM) { I18NCategory *g = GetI18NCategory("Graphics"); @@ -259,6 +260,7 @@ namespace MainWindow g_Config.iInternalResolution = 0; } + // Taking auto-texture scaling into account if (g_Config.iTexScalingLevel == TEXSCALING_AUTO) setTexScalingMultiplier(0);