[Scummvm-cvs-logs] SF.net SVN: scummvm:[33982] scummvm/branches/branch-0-12-0/backends/ platform/ds/arm9/source

agent-q at users.sourceforge.net agent-q at users.sourceforge.net
Mon Aug 18 00:50:39 CEST 2008


Revision: 33982
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33982&view=rev
Author:   agent-q
Date:     2008-08-17 22:50:39 +0000 (Sun, 17 Aug 2008)

Log Message:
-----------
DS: Fix cursor palette bug

Modified Paths:
--------------
    scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/dsmain.cpp
    scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.cpp
    scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.h

Modified: scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/dsmain.cpp
===================================================================
--- scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/dsmain.cpp	2008-08-17 22:50:05 UTC (rev 33981)
+++ scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/dsmain.cpp	2008-08-17 22:50:39 UTC (rev 33982)
@@ -699,6 +699,8 @@
 	mouseHotspotX = hotspotX;
 	mouseHotspotY = hotspotY;
 
+	//consolePrintf("Set cursor icon %d, %d\n", w, h);
+
 	{
 		int off = 128*64;
 	

Modified: scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.cpp
===================================================================
--- scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.cpp	2008-08-17 22:50:05 UTC (rev 33981)
+++ scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.cpp	2008-08-17 22:50:39 UTC (rev 33982)
@@ -460,10 +460,25 @@
 void OSystem_DS::warpMouse(int x, int y) {
 }
 
+
 void OSystem_DS::setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, int hotspotY, byte keycolor, int targetCursorScale) {
-	DS::setCursorIcon(buf, w, h, keycolor, hotspotX, hotspotY);
+	if ((w > 0) && (w < 64) && (h > 0) && (h < 64))
+	{
+		memcpy(_cursorImage, buf, w * h);
+		_cursorW = w;
+		_cursorH = h;
+		_cursorHotX = hotspotX;
+		_cursorHotY = hotspotY;
+		_cursorKey = keycolor;
+		_cursorScale = targetCursorScale;
+		refreshCursor();
+	}
 }
 
+void OSystem_DS::refreshCursor() {
+	DS::setCursorIcon(_cursorImage, _cursorW, _cursorH, _cursorKey, _cursorHotX, _cursorHotY);
+}
+
 void OSystem_DS::addEvent(Common::Event& e) {
 	eventQueue[queuePos++] = e;
 }

Modified: scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.h
===================================================================
--- scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.h	2008-08-17 22:50:05 UTC (rev 33981)
+++ scummvm/branches/branch-0-12-0/backends/platform/ds/arm9/source/osystem_ds.h	2008-08-17 22:50:39 UTC (rev 33982)
@@ -64,6 +64,15 @@
 
 	u16 _palette[256];
 	u16 _cursorPalette[256];
+
+	u8 _cursorImage[64 * 64];
+	uint _cursorW;
+	uint _cursorH;
+	int _cursorHotX;
+	int _cursorHotY;
+	byte _cursorKey;
+	int _cursorScale;
+
 	
 	Graphics::Surface* createTempFrameBuffer();
 	bool _disableCursorPalette;
@@ -168,9 +177,11 @@
 
 	virtual void setCursorPalette(const byte *colors, uint start, uint num);
 
-	virtual void disableCursorPalette(bool dis) { _disableCursorPalette = dis; }
+	virtual void disableCursorPalette(bool dis) { _disableCursorPalette = dis; refreshCursor(); }
 
 	FilesystemFactory *getFilesystemFactory();
+
+	void refreshCursor();
 };
 
 static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list