libretro: Fix runtime aspect ratio changes not applying
This commit is contained in:
parent
0b84433533
commit
451c48406d
|
@ -89,6 +89,7 @@ public:
|
|||
virtual void SetVSync(bool enabled) = 0;
|
||||
|
||||
const s32 GetDisplayTopMargin() const { return m_display_top_margin; }
|
||||
const float GetDisplayAspectRatio() const { return m_display_aspect_ratio; }
|
||||
|
||||
void ClearDisplayTexture()
|
||||
{
|
||||
|
|
|
@ -103,6 +103,8 @@ bool LibretroHostInterface::Initialize()
|
|||
LoadSettings();
|
||||
FixIncompatibleSettings(true);
|
||||
UpdateLogging();
|
||||
|
||||
m_last_aspect_ratio = Settings::GetDisplayAspectRatioValue(g_settings.display_aspect_ratio);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -226,7 +228,7 @@ void LibretroHostInterface::GetSystemAVInfo(struct retro_system_av_info* info, b
|
|||
|
||||
std::memset(info, 0, sizeof(*info));
|
||||
|
||||
info->geometry.aspect_ratio = Settings::GetDisplayAspectRatioValue(g_settings.display_aspect_ratio);
|
||||
info->geometry.aspect_ratio = m_last_aspect_ratio;
|
||||
info->geometry.base_width = 320;
|
||||
info->geometry.base_height = 240;
|
||||
info->geometry.max_width = GPU::VRAM_WIDTH * resolution_scale;
|
||||
|
@ -334,6 +336,13 @@ void LibretroHostInterface::retro_run_frame()
|
|||
|
||||
System::RunFrame();
|
||||
|
||||
const float aspect_ratio = m_display->GetDisplayAspectRatio();
|
||||
if (aspect_ratio != m_last_aspect_ratio)
|
||||
{
|
||||
m_last_aspect_ratio = aspect_ratio;
|
||||
UpdateGeometry();
|
||||
}
|
||||
|
||||
m_display->Render();
|
||||
}
|
||||
|
||||
|
|
|
@ -97,6 +97,8 @@ private:
|
|||
bool m_rumble_interface_valid = false;
|
||||
bool m_supports_input_bitmasks = false;
|
||||
bool m_interfaces_initialized = false;
|
||||
|
||||
float m_last_aspect_ratio = 4.0f / 3.0f;
|
||||
};
|
||||
|
||||
extern LibretroHostInterface g_libretro_host_interface;
|
||||
|
|
Loading…
Reference in New Issue