summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author antonioginer <antonioginer@users.noreply.github.com>2021-08-05 18:58:15 +0200
committer GitHub <noreply@github.com>2021-08-06 02:58:15 +1000
commite16165cd167eb9b07708b4988be71263aa7d3fa1 (patch)
tree36dd3360d481759956a43a9e0df04536b4cfeda2
parentaaf23770a3350d3838bf323f54c7fe0a69a90e42 (diff)
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.
-rw-r--r--src/emu/render.cpp35
1 files 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 <typename T> 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 <typename T> 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())