diff options
author | Colin Snover | 2016-10-22 12:41:39 -0500 |
---|---|---|
committer | Colin Snover | 2016-10-22 13:18:38 -0500 |
commit | 724385eb5e3154628a5e1655471d7cf4d67b7a70 (patch) | |
tree | c577376d689bf98c0afd68ab0f3b8aa00e589a30 /engines/sci/graphics/frameout.h | |
parent | 5280632b5182535c2d54956c1de55060e1d26dce (diff) | |
download | scummvm-rg350-724385eb5e3154628a5e1655471d7cf4d67b7a70.tar.gz scummvm-rg350-724385eb5e3154628a5e1655471d7cf4d67b7a70.tar.bz2 scummvm-rg350-724385eb5e3154628a5e1655471d7cf4d67b7a70.zip |
SCI32: Fix slow SCI2.1mid transitions
SSCI transitions code sends a large number of small show rects
to the graphics manager, one at a time, for each division of a
transition. Each time a rect is submitted, a call to showBits
is made. This design was used when transitions for SCI32 were
first implemented in ScummVM, and it worked OK because the
hardware surface was updated by EventManager::getSciEvent,
not showBits, so the large number of calls to showBits from the
transitions code did not adversely affect engine performance.
Later in SCI32 engine development, hardware surface updates
were changed to occur in showBits so that the hardware surface
would be updated at frame-out time, instead of at input-in time.
This change meant that now the large number of calls to showBits
from transitions became very expensive, and the engine would
stall constantly refreshing the entire hardware surface.
To fix this problem, the transitions code now (1) maximises the
size of rects coming from transitions, when possible, and (2) only
calls showBits when all the rects from one frame of a transition
have been calculated and added to the show rects list.
Additionally, there were some arithmetic errors in the
implementation of pixel dissolve that have been corrected in this
changeset.
Fixes Trac#9614.
Diffstat (limited to 'engines/sci/graphics/frameout.h')
-rw-r--r-- | engines/sci/graphics/frameout.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/engines/sci/graphics/frameout.h b/engines/sci/graphics/frameout.h index 9481b0ef5a..9738203b74 100644 --- a/engines/sci/graphics/frameout.h +++ b/engines/sci/graphics/frameout.h @@ -39,6 +39,7 @@ struct PlaneShowStyle; * Roughly equivalent to GraphicsMgr in the actual SCI engine. */ class GfxFrameout { + friend class GfxTransitions32; private: GfxCursor32 *_cursor; GfxPalette32 *_palette; |