[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