bool RENDER_StartUpdate(void) { static int startCount = 0; if (GCC_UNLIKELY(render.updating)) return false; if (GCC_UNLIKELY(!render.active)) return false; if (GCC_UNLIKELY(render.frameskip.count<render.frameskip.max)) { render.frameskip.count++; return false; } render.frameskip.count=0; if (render.src.bpp == 8) { Check_Palette(); } RENDER_DrawLine = RENDER_StartLineHandler; if (GCC_UNLIKELY(CaptureState & (CAPTURE_IMAGE|CAPTURE_VIDEO))) render.fullFrame = true; else render.fullFrame = false; render.updating = true; return true; }
bool RENDER_StartUpdate(void) { if (GCC_UNLIKELY(render.updating)) return false; if (GCC_UNLIKELY(!render.active)) return false; if (GCC_UNLIKELY(render.frameskip.count<render.frameskip.max)) { render.frameskip.count++; return false; } render.frameskip.count=0; if (render.scale.inMode == scalerMode8) { Check_Palette(); } render.scale.inLine = 0; render.scale.outLine = 0; render.scale.cacheRead = (Bit8u*)&scalerSourceCache; render.scale.outWrite = 0; render.scale.outPitch = 0; Scaler_ChangedLines[0] = 0; Scaler_ChangedLineIndex = 0; /* Clearing the cache will first process the line to make sure it's never the same */ if (GCC_UNLIKELY( render.scale.clearCache) ) { // LOG_MSG("Clearing cache"); //Will always have to update the screen with this one anyway, so let's update already if (GCC_UNLIKELY(!GFX_StartUpdate( render.scale.outWrite, render.scale.outPitch ))) return false; render.fullFrame = true; render.scale.clearCache = false; RENDER_DrawLine = RENDER_ClearCacheHandler; } else { if (render.pal.changed) { /* Assume pal changes always do a full screen update anyway */ if (GCC_UNLIKELY(!GFX_StartUpdate( render.scale.outWrite, render.scale.outPitch ))) return false; RENDER_DrawLine = render.scale.linePalHandler; render.fullFrame = true; } else { RENDER_DrawLine = RENDER_StartLineHandler; if (GCC_UNLIKELY(CaptureState & (CAPTURE_IMAGE|CAPTURE_VIDEO))) render.fullFrame = true; else render.fullFrame = false; } } render.updating = true; return true; }