> >> Now that I think of it, have your experimented with the way screen >> updates are handled in ecl::Screen:flush_updates()? When there are >> more than 200 updated regions on the screen, the function simply >> updates its entire contents, which might be related to your >> observation that drawing more is faster. > > Good idea ... I did four more experiments, in otherwise the same setup as > yesterday, and reproduced yesterday's results to be sure. Summary: > > WITH statusbar, SOMETIMES update_all: 13.0 s (<- default) > WITH statusbar, ALWAYS update_all: 15.4 s > WITH statusbar, NEVER update_all: 13.3 s > NO statusbar, SOMETIMES update_all: 13.9 s > NO statusbar, ALWAYS update_all: 21.0 s (no typo!) > NO statusbar, NEVER update_all: 14.5 s > > So ... first of all, it seems like your choice of 200 updated regions hits a > sweet spot. Also: If Enigma just always flushes everything every time, the > difference between having the statusbar and not having it gets even more > pronounced. What this means ... I have no idea.
Interesting... and weird. Could this have something to do with alpha blending? What happens if you add SDL_SetSurfaceBlendMode(m_sdlsurface, SDL_BLENDMODE_NONE); to the constructor of ecl::Screen? - Daniel