From 39871b84de6733f624f3aeee3deac16a04ac3943 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 10 Dec 2008 19:39:26 +0000 Subject: Some more dirty rectangle fixes, only 2 known glitches are left svn-id: r35296 --- engines/saga/events.cpp | 2 -- engines/saga/font.cpp | 3 +-- engines/saga/render.cpp | 8 ++++++-- 3 files changed, 7 insertions(+), 6 deletions(-) (limited to 'engines/saga') diff --git a/engines/saga/events.cpp b/engines/saga/events.cpp index 3933881b61..0f99790b47 100644 --- a/engines/saga/events.cpp +++ b/engines/saga/events.cpp @@ -383,8 +383,6 @@ int Events::handleOneShot(Event *event) { free(buf); free(resourceData); - _vm->_render->setFullRefresh(true); - // Draw the scene. It won't be drawn by Render::drawScene(), as a placard is up _vm->_scene->draw(); } diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp index 58c37a9e74..c1d01295a7 100644 --- a/engines/saga/font.cpp +++ b/engines/saga/font.cpp @@ -409,8 +409,7 @@ void Font::outFont(const FontStyle &drawFont, const char *text, size_t count, co } // end per-character processing rowLimit = (_vm->_gfx->getBackBufferHeight() < (textPoint.y + drawFont.header.charHeight)) ? _vm->_gfx->getBackBufferHeight() : textPoint.y + drawFont.header.charHeight; - // TODO: for now we add a dirty rect that ends at the right of the screen - _vm->_render->addDirtyRect(Common::Rect(textPoint.x, textPoint.y, _vm->_gfx->getBackBufferWidth(), rowLimit)); + _vm->_render->addDirtyRect(Common::Rect(point.x, point.y, textPoint.x, rowLimit)); } diff --git a/engines/saga/render.cpp b/engines/saga/render.cpp index 3bee811eab..57cb1ca325 100644 --- a/engines/saga/render.cpp +++ b/engines/saga/render.cpp @@ -82,7 +82,10 @@ void Render::drawScene() { int curMode = _vm->_interface->getMode(); assert(_initialized); - // TODO: Remove this + // TODO: Remove this to use dirty rectangles + // 2 known glitches exist: + // - When a placard is up, the text is not shown correctly + // - Sprite::drawClip() can draw sprites incorrectly in isometric scenes in ITE _fullRefresh = true; #ifdef SAGA_DEBUG @@ -221,7 +224,8 @@ void Render::addDirtyRect(Common::Rect rect) { break; // we need to break now, as the list is changed } } - _dirtyRects.push_back(rectClipped); + if (_vm->_interface->getFadeMode() != kFadeOut) + _dirtyRects.push_back(rectClipped); } } -- cgit v1.2.3