[Scummvm-cvs-logs] SF.net SVN: scummvm:[45810] scummvm/trunk/backends/platform/samsungtv

aquadran at users.sourceforge.net aquadran at users.sourceforge.net
Tue Nov 10 20:51:40 CET 2009


Revision: 45810
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45810&view=rev
Author:   aquadran
Date:     2009-11-10 19:51:40 +0000 (Tue, 10 Nov 2009)

Log Message:
-----------
properly fixed mouse positioning in game engine

Modified Paths:
--------------
    scummvm/trunk/backends/platform/samsungtv/events.cpp
    scummvm/trunk/backends/platform/samsungtv/graphics.cpp
    scummvm/trunk/backends/platform/samsungtv/sdl.h

Modified: scummvm/trunk/backends/platform/samsungtv/events.cpp
===================================================================
--- scummvm/trunk/backends/platform/samsungtv/events.cpp	2009-11-10 19:23:47 UTC (rev 45809)
+++ scummvm/trunk/backends/platform/samsungtv/events.cpp	2009-11-10 19:51:40 UTC (rev 45810)
@@ -29,6 +29,15 @@
 
 #if defined(SAMSUNGTV)
 
+void OSystem_SDL_SamsungTV::generateMouseMoveEvent(int x, int y) {
+	SDL_Event event;
+	memset(&event, 0, sizeof(event));
+	event.type = SDL_MOUSEMOTION;
+	event.motion.x = x;
+	event.motion.y = y;
+	SDL_PushEvent(&event);
+}
+
 void OSystem_SDL_SamsungTV::handleKbdMouse() {
 	uint32 curTime = getMillis();
 	if (curTime >= _km.last_time + _km.delay_time) {
@@ -93,7 +102,7 @@
 				_km.y_down_count = 1;
 			}
 
-			setMousePos(_km.x, _km.y);
+			generateMouseMoveEvent(_km.x, _km.y);
 		}
 	}
 }

Modified: scummvm/trunk/backends/platform/samsungtv/graphics.cpp
===================================================================
--- scummvm/trunk/backends/platform/samsungtv/graphics.cpp	2009-11-10 19:23:47 UTC (rev 45809)
+++ scummvm/trunk/backends/platform/samsungtv/graphics.cpp	2009-11-10 19:51:40 UTC (rev 45810)
@@ -542,8 +542,19 @@
 }
 
 void OSystem_SDL_SamsungTV::warpMouse(int x, int y) {
-	if (_mouseCurState.x != x || _mouseCurState.y != y)
+	int y1 = y;
+
+	if (_videoMode.aspectRatioCorrection && !_overlayVisible)
+		y1 = real2Aspect(y);
+
+	if (_mouseCurState.x != x || _mouseCurState.y != y) {
+		if (!_overlayVisible)
+			generateMouseMoveEvent(x * _videoMode.scaleFactor, y1 * _videoMode.scaleFactor);
+		else
+			generateMouseMoveEvent(x, y1);
+
 		setMousePos(x, y);
+	}
 }
 
 void OSystem_SDL_SamsungTV::setMouseCursor(const byte *buf, uint w, uint h, int hotspot_x, int hotspot_y, uint32 keycolor, int cursorTargetScale, const Graphics::PixelFormat *format) {

Modified: scummvm/trunk/backends/platform/samsungtv/sdl.h
===================================================================
--- scummvm/trunk/backends/platform/samsungtv/sdl.h	2009-11-10 19:23:47 UTC (rev 45809)
+++ scummvm/trunk/backends/platform/samsungtv/sdl.h	2009-11-10 19:51:40 UTC (rev 45810)
@@ -96,6 +96,7 @@
 	void setFullscreenMode(bool enable);
 
 	void handleKbdMouse();
+	void generateMouseMoveEvent(int x, int y);
 
 	virtual bool remapKey(SDL_Event &ev, Common::Event &event);
 };


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