From e16165cd167eb9b07708b4988be71263aa7d3fa1 Mon Sep 17 00:00:00 2001 From: antonioginer Date: Thu, 5 Aug 2021 18:58:15 +0200 Subject: emu/render.cpp: Fixed automatic sizing of snapshots/recordings. (#8397) This fixes bad scaling on snapshots and recording when using -uesx and forced scale factors. --- src/emu/render.cpp | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/emu/render.cpp b/src/emu/render.cpp index 236a1d56330..1c176929aad 100644 --- a/src/emu/render.cpp +++ b/src/emu/render.cpp @@ -899,7 +899,11 @@ template render_target::render_target(render_manager &manager, T && , m_listindex(0) , m_width(640) , m_height(480) + , m_keepaspect(false) + , m_int_overscan(false) , m_pixel_aspect(0.0f) + , m_int_scale_x(0) + , m_int_scale_y(0) , m_max_refresh(0) , m_orientation(0) , m_base_view(nullptr) @@ -913,20 +917,25 @@ template render_target::render_target(render_manager &manager, T && m_base_layerconfig.set_zoom_to_screen(manager.machine().options().artwork_crop()); // aspect and scale options - m_keepaspect = (manager.machine().options().keep_aspect() && !(flags & RENDER_CREATE_HIDDEN)); - m_int_overscan = manager.machine().options().int_overscan(); - m_int_scale_x = manager.machine().options().int_scale_x(); - m_int_scale_y = manager.machine().options().int_scale_y(); - if (m_manager.machine().options().auto_stretch_xy()) - m_scale_mode = SCALE_FRACTIONAL_AUTO; - else if (manager.machine().options().uneven_stretch_x()) - m_scale_mode = SCALE_FRACTIONAL_X; - else if (manager.machine().options().uneven_stretch_y()) - m_scale_mode = SCALE_FRACTIONAL_Y; - else if (manager.machine().options().uneven_stretch()) - m_scale_mode = SCALE_FRACTIONAL; + if (!(flags & RENDER_CREATE_HIDDEN)) + { + m_keepaspect = manager.machine().options().keep_aspect(); + m_int_overscan = manager.machine().options().int_overscan(); + m_int_scale_x = manager.machine().options().int_scale_x(); + m_int_scale_y = manager.machine().options().int_scale_y(); + if (m_manager.machine().options().auto_stretch_xy()) + m_scale_mode = SCALE_FRACTIONAL_AUTO; + else if (manager.machine().options().uneven_stretch_x()) + m_scale_mode = SCALE_FRACTIONAL_X; + else if (manager.machine().options().uneven_stretch_y()) + m_scale_mode = SCALE_FRACTIONAL_Y; + else if (manager.machine().options().uneven_stretch()) + m_scale_mode = SCALE_FRACTIONAL; + else + m_scale_mode = SCALE_INTEGER; + } else - m_scale_mode = SCALE_INTEGER; + m_scale_mode = SCALE_FRACTIONAL; // determine the base orientation based on options if (!manager.machine().options().rotate()) -- cgit v1.2.3