[Scummvm-cvs-logs] scummvm master -> 7319ccd84f6facbaa3875d1adc31f26cea94d223
somaen
einarjohan at somadalen.com
Thu Dec 13 21:09:11 CET 2012
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c785a2bca6 WINTERMUTE: Check renderTicket-owner before anything else.
e30271e6f6 WINTERMUTE: Correct the char-code check in BaseKeyboardState
af857147c2 WINTERMUTE: Privatize members in UITiledImage
9f9b6e2af8 WINTERMUTE: Further optimize drawTicket-checking.
7319ccd84f WINTERMUTE: Implement simple sprite-batching to speed up tileImage-drawing.
Commit: c785a2bca62b60f16a42275d8bb84e69033b6f9c
https://github.com/scummvm/scummvm/commit/c785a2bca62b60f16a42275d8bb84e69033b6f9c
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-13T11:34:45-08:00
Commit Message:
WINTERMUTE: Check renderTicket-owner before anything else.
Changed paths:
engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 3255156..c7af2b1 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -79,12 +79,12 @@ RenderTicket::~RenderTicket() {
}
bool RenderTicket::operator==(RenderTicket &t) {
- if ((t._srcRect != _srcRect) ||
- (t._dstRect != _dstRect) ||
- (t._mirror != _mirror) ||
- (t._owner != _owner) ||
+ if ((t._owner != _owner) ||
(t._hasAlpha != _hasAlpha) ||
- (t._colorMod != _colorMod)) {
+ (t._mirror != _mirror) ||
+ (t._colorMod != _colorMod) ||
+ (t._srcRect != _srcRect) ||
+ (t._dstRect != _dstRect)) {
return false;
}
return true;
Commit: e30271e6f6c4a09843ea85e1895f8093832f5af4
https://github.com/scummvm/scummvm/commit/e30271e6f6c4a09843ea85e1895f8093832f5af4
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-13T11:40:40-08:00
Commit Message:
WINTERMUTE: Correct the char-code check in BaseKeyboardState
Changed paths:
engines/wintermute/base/base_keyboard_state.cpp
diff --git a/engines/wintermute/base/base_keyboard_state.cpp b/engines/wintermute/base/base_keyboard_state.cpp
index 3123183..072a1bb 100644
--- a/engines/wintermute/base/base_keyboard_state.cpp
+++ b/engines/wintermute/base/base_keyboard_state.cpp
@@ -200,7 +200,8 @@ const char *BaseKeyboardState::scToString() {
bool BaseKeyboardState::readKey(Common::Event *event) {
//_currentPrintable = (event->type == SDL_TEXTINPUT); // TODO
_currentCharCode = keyCodeToVKey(event);
- if ((_currentCharCode <= 0x7E && _currentCharCode >= 0x20) || (_currentCharCode <= 0xFF && _currentCharCode >= 0x1F)) {
+ // Verify that this is a printable ISO-8859-character (including the upper charset)
+ if ((_currentCharCode <= 0x7E && _currentCharCode >= 0x20) || (_currentCharCode <= 0xFF && _currentCharCode >= 0xA0)) {
_currentPrintable = true;
} else {
_currentPrintable = false;
Commit: af857147c2198161a8389245fe31fe706e1faef2
https://github.com/scummvm/scummvm/commit/af857147c2198161a8389245fe31fe706e1faef2
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-13T11:55:17-08:00
Commit Message:
WINTERMUTE: Privatize members in UITiledImage
Changed paths:
engines/wintermute/ui/ui_tiled_image.h
diff --git a/engines/wintermute/ui/ui_tiled_image.h b/engines/wintermute/ui/ui_tiled_image.h
index c413e7f..edea84f 100644
--- a/engines/wintermute/ui/ui_tiled_image.h
+++ b/engines/wintermute/ui/ui_tiled_image.h
@@ -46,6 +46,7 @@ public:
bool display(int x, int y, int width, int height);
UITiledImage(BaseGame *inGame = NULL);
virtual ~UITiledImage();
+private:
BaseSubFrame *_image;
Rect32 _upLeft;
Rect32 _upMiddle;
Commit: 9f9b6e2af8342b88b45d858c979503f3df64f551
https://github.com/scummvm/scummvm/commit/9f9b6e2af8342b88b45d858c979503f3df64f551
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-13T11:55:49-08:00
Commit Message:
WINTERMUTE: Further optimize drawTicket-checking.
Changed paths:
engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index c7af2b1..7c0e9e7 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -83,8 +83,8 @@ bool RenderTicket::operator==(RenderTicket &t) {
(t._hasAlpha != _hasAlpha) ||
(t._mirror != _mirror) ||
(t._colorMod != _colorMod) ||
- (t._srcRect != _srcRect) ||
- (t._dstRect != _dstRect)) {
+ (t._dstRect != _dstRect) ||
+ (t._srcRect != _srcRect)) {
return false;
}
return true;
@@ -312,13 +312,18 @@ void BaseRenderOSystem::drawSurface(BaseSurfaceOSystem *owner, const Graphics::S
RenderTicket compare(owner, NULL, srcRect, dstRect, mirrorX, mirrorY, disableAlpha);
compare._colorMod = _colorMod;
RenderQueueIterator it;
- for (it = _renderQueue.begin(); it != _renderQueue.end(); ++it) {
- if ((*it)->_owner == owner && *(*it) == compare && (*it)->_isValid) {
- (*it)->_colorMod = _colorMod;
+ // Avoid calling end() and operator* every time, when potentially going through
+ // LOTS of tickets.
+ RenderQueueIterator endIterator = _renderQueue.end();
+ RenderTicket *compareTicket = NULL;
+ for (it = _renderQueue.begin(); it != endIterator; ++it) {
+ compareTicket = *it;
+ if (compareTicket->_owner == owner && *(compareTicket) == compare && compareTicket->_isValid) {
+ compareTicket->_colorMod = _colorMod;
if (_disableDirtyRects) {
- drawFromSurface(*it, NULL);
+ drawFromSurface(compareTicket, NULL);
} else {
- drawFromTicket(*it);
+ drawFromTicket(compareTicket);
}
return;
}
Commit: 7319ccd84f6facbaa3875d1adc31f26cea94d223
https://github.com/scummvm/scummvm/commit/7319ccd84f6facbaa3875d1adc31f26cea94d223
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2012-12-13T12:08:12-08:00
Commit Message:
WINTERMUTE: Implement simple sprite-batching to speed up tileImage-drawing.
Changed paths:
engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
engines/wintermute/base/gfx/osystem/base_render_osystem.h
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 7c0e9e7..c32054a 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -43,6 +43,7 @@ namespace Wintermute {
RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *surf, Common::Rect *srcRect, Common::Rect *dstRect, bool mirrorX, bool mirrorY, bool disableAlpha) : _owner(owner),
_srcRect(*srcRect), _dstRect(*dstRect), _drawNum(0), _isValid(true), _wantsDraw(true), _hasAlpha(!disableAlpha) {
_colorMod = 0;
+ _batchNum = 0;
_mirror = TransparentSurface::FLIP_NONE;
if (mirrorX) {
_mirror |= TransparentSurface::FLIP_V;
@@ -80,6 +81,7 @@ RenderTicket::~RenderTicket() {
bool RenderTicket::operator==(RenderTicket &t) {
if ((t._owner != _owner) ||
+ (t._batchNum != t._batchNum) ||
(t._hasAlpha != _hasAlpha) ||
(t._mirror != _mirror) ||
(t._colorMod != _colorMod) ||
@@ -100,6 +102,8 @@ BaseRenderOSystem::BaseRenderOSystem(BaseGame *inGame) : BaseRenderer(inGame) {
_blankSurface = new Graphics::Surface();
_drawNum = 1;
_needsFlip = true;
+ _spriteBatch = false;
+ _batchNum = 0;
_borderLeft = _borderRight = _borderTop = _borderBottom = 0;
_ratioX = _ratioY = 1.0f;
@@ -310,6 +314,9 @@ void BaseRenderOSystem::drawSurface(BaseSurfaceOSystem *owner, const Graphics::S
if (owner) { // Fade-tickets are owner-less
RenderTicket compare(owner, NULL, srcRect, dstRect, mirrorX, mirrorY, disableAlpha);
+ compare._batchNum = _batchNum;
+ if (_spriteBatch)
+ _batchNum++;
compare._colorMod = _colorMod;
RenderQueueIterator it;
// Avoid calling end() and operator* every time, when potentially going through
@@ -318,7 +325,7 @@ void BaseRenderOSystem::drawSurface(BaseSurfaceOSystem *owner, const Graphics::S
RenderTicket *compareTicket = NULL;
for (it = _renderQueue.begin(); it != endIterator; ++it) {
compareTicket = *it;
- if (compareTicket->_owner == owner && *(compareTicket) == compare && compareTicket->_isValid) {
+ if (*(compareTicket) == compare && compareTicket->_isValid) {
compareTicket->_colorMod = _colorMod;
if (_disableDirtyRects) {
drawFromSurface(compareTicket, NULL);
@@ -647,4 +654,16 @@ void BaseRenderOSystem::endSaveLoad() {
_drawNum = 1;
}
+bool BaseRenderOSystem::startSpriteBatch() {
+ _spriteBatch = true;
+ _batchNum = 1;
+ return STATUS_OK;
+}
+
+bool BaseRenderOSystem::endSpriteBatch() {
+ _spriteBatch = false;
+ _batchNum = 0;
+ return STATUS_OK;
+}
+
} // end of namespace Wintermute
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.h b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
index 1e9b4ed..1cef003 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.h
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
@@ -46,6 +46,7 @@ public:
Common::Rect _srcRect;
Common::Rect _dstRect;
uint32 _mirror;
+ uint32 _batchNum;
bool _hasAlpha;
bool _isValid;
@@ -97,6 +98,8 @@ public:
float getScaleRatioY() const {
return _ratioY;
}
+ virtual bool startSpriteBatch();
+ virtual bool endSpriteBatch();
void endSaveLoad();
void drawSurface(BaseSurfaceOSystem *owner, const Graphics::Surface *surf, Common::Rect *srcRect, Common::Rect *dstRect, bool mirrorX, bool mirrorY, bool disableAlpha = false);
BaseSurface *createSurface();
@@ -120,6 +123,8 @@ private:
int _borderBottom;
bool _disableDirtyRects;
+ bool _spriteBatch;
+ uint32 _batchNum;
float _ratioX;
float _ratioY;
uint32 _colorMod;
More information about the Scummvm-git-logs
mailing list