From a76a07d2c93e8a7100b9b6e84f1ef0a5c52b8bb1 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Sat, 3 Feb 2007 13:00:16 +0000 Subject: [PATCH] Finish the frame without drawing if there's screen reset Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2796 --- src/gui/render.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gui/render.cpp b/src/gui/render.cpp index 37316ea7..d82f39f7 100644 --- a/src/gui/render.cpp +++ b/src/gui/render.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: render.cpp,v 1.50 2007-01-24 16:29:09 harekiet Exp $ */ +/* $Id: render.cpp,v 1.51 2007-02-03 13:00:16 harekiet Exp $ */ #include #include @@ -121,6 +121,19 @@ static void RENDER_StartLineHandler(const void * s) { render.scale.outLine++; } +static void RENDER_FinishLineHandler(const void * s) { + if (s) { + const Bitu *src = (Bitu*)s; + Bitu *cache = (Bitu*)(render.scale.cacheRead); + for (Bits x=render.src.start;x>0;) { + cache[0] = src[0]; + x--; src++; cache++; + } + } + render.scale.cacheRead += render.scale.cachePitch; +} + + static void RENDER_ClearCacheHandler(const void * src) { Bitu x, width; Bit32u *srcLine, *cacheLine; @@ -462,6 +475,9 @@ forcenormal: render.pal.last = 255; render.pal.changed = false; memset(render.pal.modified, 0, sizeof(render.pal.modified)); + //Finish this frame using a copy only handler + RENDER_DrawLine = RENDER_FinishLineHandler; + render.scale.outWrite = 0; /* Signal the next frame to first reinit the cache */ render.scale.clearCache = true; render.active=true;