aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2008-12-10 19:39:26 +0000
committerFilippos Karapetis2008-12-10 19:39:26 +0000
commit39871b84de6733f624f3aeee3deac16a04ac3943 (patch)
tree327ee61cd6cdcc9df8950bdc8de2140b34ae06dd /engines
parent5f4518a2ad36573516f1568cc6fca613bc31a8c0 (diff)
downloadscummvm-rg350-39871b84de6733f624f3aeee3deac16a04ac3943.tar.gz
scummvm-rg350-39871b84de6733f624f3aeee3deac16a04ac3943.tar.bz2
scummvm-rg350-39871b84de6733f624f3aeee3deac16a04ac3943.zip
Some more dirty rectangle fixes, only 2 known glitches are left
svn-id: r35296
Diffstat (limited to 'engines')
-rw-r--r--engines/saga/events.cpp2
-rw-r--r--engines/saga/font.cpp3
-rw-r--r--engines/saga/render.cpp8
3 files changed, 7 insertions, 6 deletions
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);
}
}