diff options
author | Vicent Marti | 2008-07-22 17:39:30 +0000 |
---|---|---|
committer | Vicent Marti | 2008-07-22 17:39:30 +0000 |
commit | 10dff40de64b9c9e8b136a556a3a4bb6f69bc098 (patch) | |
tree | 6f79a139d869b44002a4070929056e9ef7ddc68d /gui/ThemeRenderer.cpp | |
parent | a9ab9c0189906229b7ec730fa78eeb18e966a9e1 (diff) | |
download | scummvm-rg350-10dff40de64b9c9e8b136a556a3a4bb6f69bc098.tar.gz scummvm-rg350-10dff40de64b9c9e8b136a556a3a4bb6f69bc098.tar.bz2 scummvm-rg350-10dff40de64b9c9e8b136a556a3a4bb6f69bc098.zip |
Dirty screen handling, round three.
svn-id: r33209
Diffstat (limited to 'gui/ThemeRenderer.cpp')
-rw-r--r-- | gui/ThemeRenderer.cpp | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/gui/ThemeRenderer.cpp b/gui/ThemeRenderer.cpp index d31067fbfd..1ca3d4fcc4 100644 --- a/gui/ThemeRenderer.cpp +++ b/gui/ThemeRenderer.cpp @@ -592,18 +592,13 @@ void ThemeRenderer::renderDirtyScreen() { if (_dirtyScreen.empty()) return; - Common::List<Common::Rect>::iterator cur; - for (Common::List<Common::Rect>::iterator d = _dirtyScreen.begin(); d != _dirtyScreen.end(); ++d) { - cur = d; - - do { - ++d; - if (cur->intersects(*d)) - d = _dirtyScreen.reverse_erase(d); - } while (d != _dirtyScreen.end()); - - d = cur; - _vectorRenderer->copyFrame(_system, *d); + Common::List<Common::Rect>::const_iterator i, j; + for (i = _dirtyScreen.begin(); i != _dirtyScreen.end(); ++i) { + for (j = i; j != _dirtyScreen.end(); ++j) + if (j != i && i->intersects(*j)) + j = _dirtyScreen.reverse_erase(j); + + _vectorRenderer->copyFrame(_system, *i); } _dirtyScreen.clear(); |