From 811eafda576dd38a4bbff779d078762dbb3bd8b4 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 4 Mar 2017 16:42:31 +1000 Subject: [PATCH] VideoCommon: Store last window request width/height This avoids the need to send a window resize event every frame. --- Source/Core/VideoCommon/RenderBase.cpp | 14 +++++++++----- Source/Core/VideoCommon/RenderBase.h | 4 ++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 784a294785..990f01d53d 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -619,10 +619,8 @@ void Renderer::UpdateDrawRectangle() void Renderer::SetWindowSize(int width, int height) { - if (width < 1) - width = 1; - if (height < 1) - height = 1; + width = std::max(width, 1); + height = std::max(height, 1); // Scale the window size by the EFB scale. CalculateTargetScale(width, height, &width, &height); @@ -659,7 +657,13 @@ void Renderer::SetWindowSize(int width, int height) width -= width % 4; height -= height % 4; - Host_RequestRenderWindowSize(width, height); + // Track the last values of width/height to avoid sending a window resize event every frame. + if (width != m_last_window_request_width || height != m_last_window_request_height) + { + m_last_window_request_width = width; + m_last_window_request_height = height; + Host_RequestRenderWindowSize(width, height); + } } void Renderer::CheckFifoRecording() diff --git a/Source/Core/VideoCommon/RenderBase.h b/Source/Core/VideoCommon/RenderBase.h index 3afa8761d4..a8323c27a2 100644 --- a/Source/Core/VideoCommon/RenderBase.h +++ b/Source/Core/VideoCommon/RenderBase.h @@ -192,6 +192,10 @@ private: unsigned int m_efb_scale_denominatorX = 1; unsigned int m_efb_scale_denominatorY = 1; + // These will be set on the first call to SetWindowSize. + int m_last_window_request_width = 0; + int m_last_window_request_height = 0; + // frame dumping std::thread m_frame_dump_thread; Common::Event m_frame_dump_start;