summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/screen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/screen.cpp')
-rw-r--r--src/emu/screen.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp
index d1c7eed720d..5e220df4c00 100644
--- a/src/emu/screen.cpp
+++ b/src/emu/screen.cpp
@@ -1178,6 +1178,16 @@ bool screen_device::update_partial(int scanline)
return false;
}
+ // if we left off in the middle of a scanline, eg. with update_now(), finish that scanline first
+ if (m_partial_scan_hpos > 0)
+ {
+ update_partial(m_last_partial_scan + 1, 0);
+
+ // check again if scanline was already rendered
+ if (scanline < m_last_partial_scan)
+ return true;
+ }
+
// set the range of scanlines to render
rectangle clip(m_visarea);
clip.sety((std::max)(clip.top(), m_last_partial_scan), (std::min)(clip.bottom(), scanline));
@@ -1192,10 +1202,6 @@ bool screen_device::update_partial(int scanline)
// otherwise, render
LOG_PARTIAL_UPDATES(("updating %d-%d\n", clip.top(), clip.bottom()));
- // if we left off in the middle of a scanline, eg. with update_now(), finish that scanline first
- if (m_partial_scan_hpos > 0)
- update_partial(m_last_partial_scan, 0);
-
u32 flags = 0;
{
auto profile = g_profiler.start(PROFILER_VIDEO);