diff options
author | Filippos Karapetis | 2008-12-07 00:27:39 +0000 |
---|---|---|
committer | Filippos Karapetis | 2008-12-07 00:27:39 +0000 |
commit | 5d1e3fd03e21e9486168783b31d18d8738b2a559 (patch) | |
tree | a3f672bd9f9fbe7bf1864bb208d309616a857a62 /engines/saga/render.cpp | |
parent | c69cacfe2d0c66cc82c9194080bfb9bdeac28845 (diff) | |
download | scummvm-rg350-5d1e3fd03e21e9486168783b31d18d8738b2a559.tar.gz scummvm-rg350-5d1e3fd03e21e9486168783b31d18d8738b2a559.tar.bz2 scummvm-rg350-5d1e3fd03e21e9486168783b31d18d8738b2a559.zip |
Some dirty rectangle related code
svn-id: r35267
Diffstat (limited to 'engines/saga/render.cpp')
-rw-r--r-- | engines/saga/render.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/engines/saga/render.cpp b/engines/saga/render.cpp index e78e6f9947..85448bc412 100644 --- a/engines/saga/render.cpp +++ b/engines/saga/render.cpp @@ -204,14 +204,22 @@ void Render::drawScene() { _system->updateScreen(); } +void Render::addDirtyRect(Common::Rect rect) { + // Check if the new rectangle is contained within another in the list + Common::List<Common::Rect>::const_iterator it; + for (it = _dirtyRects.begin(); it != _dirtyRects.end(); ++it) { + if (it->contains(rect)) + return; + } + + _dirtyRects.push_back(rect); +} + void Render::drawDirtyRects() { if (_fullRefresh) { _system->copyRectToScreen(_vm->_gfx->getBackBufferPixels(), _vm->_gfx->getBackBufferWidth(), 0, 0, _vm->_gfx->getBackBufferWidth(), _vm->_gfx->getBackBufferHeight()); } else { - - // TODO: check if dirty rectangles are intersecting or contained within each other - Common::List<Common::Rect>::const_iterator it; for (it = _dirtyRects.begin(); it != _dirtyRects.end(); ++it) { g_system->copyRectToScreen(_vm->_gfx->getBackBufferPixels(), it->width(), it->left, it->top, it->width(), it->height()); |