void Director::draw() { if (!_dirtyRects.empty()) { mergeDirtyRects(); for (uint i = 0; i < _dirtyRects.size(); ++i) { drawRect(_dirtyRects[i]); } _dirtyRects.resize(0); _surface.update(); } else g_system->updateScreen(); }
void Screen::update() { // Merge the dirty rects mergeDirtyRects(); // Loop through copying dirty areas to the physical screen Common::List<Common::Rect>::iterator i; for (i = _dirtyRects.begin(); i != _dirtyRects.end(); ++i) { const Common::Rect &r = *i; const byte *srcP = (const byte *)getBasePtr(r.left, r.top); g_system->copyRectToScreen(srcP, _surface.pitch, r.left, r.top, r.width(), r.height()); } // Signal the physical screen to update g_system->updateScreen(); _dirtyRects.clear(); }