[Scummvm-cvs-logs] SF.net SVN: scummvm:[50900] scummvm/branches/gsoc2010-opengl/backends

vgvgf at users.sourceforge.net vgvgf at users.sourceforge.net
Thu Jul 15 03:21:21 CEST 2010


Revision: 50900
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50900&view=rev
Author:   vgvgf
Date:     2010-07-15 01:21:20 +0000 (Thu, 15 Jul 2010)

Log Message:
-----------
Replaced the extra SDL functions added to GraphicsManager with an EventObserver in SdlGraphicsManager.

Modified Paths:
--------------
    scummvm/branches/gsoc2010-opengl/backends/events/sdl/sdl-events.cpp
    scummvm/branches/gsoc2010-opengl/backends/graphics/graphics.h
    scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.cpp
    scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.h
    scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp
    scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h
    scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp
    scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h

Modified: scummvm/branches/gsoc2010-opengl/backends/events/sdl/sdl-events.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/events/sdl/sdl-events.cpp	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/events/sdl/sdl-events.cpp	2010-07-15 01:21:20 UTC (rev 50900)
@@ -102,9 +102,6 @@
 	// Update the "keyboard mouse" coords
 	_km.x = x;
 	_km.y = y;
-
-	// Adjust for the screen scaling
-	((OSystem_SDL *)g_system)->getGraphicsManager()->adjustMouseEvent(event);
 }
 
 void SdlEventManager::handleKbdMouse() {
@@ -241,10 +238,6 @@
 	case SDL_JOYAXISMOTION:
 		return handleJoyAxisMotion(ev, event);
 
-	case SDL_VIDEOEXPOSE:
-		((OSystem_SDL *) g_system)->getGraphicsManager()->forceFullRedraw();
-		break;
-
 	case SDL_QUIT:
 		event.type = Common::EVENT_QUIT;
 		return true;
@@ -266,32 +259,6 @@
 	if (_scrollLock)
 		event.kbd.flags |= Common::KBD_SCRL;
 
-	// Alt-Return and Alt-Enter toggle full screen mode
-	if (event.kbd.hasFlags(Common::KBD_ALT) && (ev.key.keysym.sym == SDLK_RETURN || ev.key.keysym.sym == SDLK_KP_ENTER)) {
-		((OSystem_SDL *) g_system)->getGraphicsManager()->toggleFullScreen();
-		return false;
-	}
-
-	// Alt-S: Create a screenshot
-	if (event.kbd.hasFlags(Common::KBD_ALT) && ev.key.keysym.sym == 's') {
-		char filename[20];
-
-		for (int n = 0;; n++) {
-			SDL_RWops *file;
-
-			sprintf(filename, "scummvm%05d.bmp", n);
-			file = SDL_RWFromFile(filename, "r");
-			if (!file)
-				break;
-			SDL_RWclose(file);
-		}
-		if (((OSystem_SDL *) g_system)->getGraphicsManager()->saveScreenshot(filename))
-			printf("Saved '%s'\n", filename);
-		else
-			printf("Could not save screenshot!\n");
-		return false;
-	}
-
 	// Ctrl-m toggles mouse capture
 	if (event.kbd.hasFlags(Common::KBD_CTRL) && ev.key.keysym.sym == 'm') {
 		toggleMouseGrab();
@@ -323,12 +290,6 @@
 		return true;
 	}
 
-	// Ctrl-Alt-<key> will change the GFX mode
-	if ((event.kbd.flags & (Common::KBD_CTRL|Common::KBD_ALT)) == (Common::KBD_CTRL|Common::KBD_ALT)) {
-		if (((OSystem_SDL *) g_system)->getGraphicsManager()->handleScalerHotkeys((Common::KeyCode)ev.key.keysym.sym))
-			return false;
-	}
-
 	if (remapKey(ev, event))
 		return true;
 
@@ -354,10 +315,6 @@
 	if (_scrollLock)
 		event.kbd.flags |= Common::KBD_SCRL;
 
-	if (((OSystem_SDL *) g_system)->getGraphicsManager()->isScalerHotkey(event))
-		// Swallow these key up events
-		return false;
-
 	return true;
 }
 
@@ -365,7 +322,6 @@
 	event.type = Common::EVENT_MOUSEMOVE;
 	fillMouseEvent(event, ev.motion.x, ev.motion.y);
 
-	((OSystem_SDL *) g_system)->getGraphicsManager()->setMousePos(event.mouse.x, event.mouse.y);
 	return true;
 }
 

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/graphics.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/graphics.h	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/graphics.h	2010-07-15 01:21:20 UTC (rev 50900)
@@ -85,41 +85,6 @@
 	virtual void disableCursorPalette(bool disable) = 0;
 
 	virtual void displayMessageOnOSD(const char *msg) {}
-
-	/**
-	 * Marks the screen for a full redraw
-	 */
-	virtual void forceFullRedraw() {};
-
-	/**
-	 * Handles the scalar hotkeys
-	 */
-	virtual bool handleScalerHotkeys(Common::KeyCode key) { return false; };
-
-	/**
-	 * Returns if the event passed is a hotkey for the graphics scalers
-	 */
-	virtual bool isScalerHotkey(const Common::Event &event) { return false; };
-
-	/**
-	 * Adjusts mouse event coords for the current scaler
-	 */
-	virtual void adjustMouseEvent(Common::Event &event) {};
-
-	/**
-	 * Updates the mouse cursor position
-	 */
-	virtual void setMousePos(int x, int y) {};
-
-	/**
-	 * Toggles fullscreen
-	 */
-	virtual void toggleFullScreen() {};
-
-	/**
-	 * Saves a screenshot to a file
-	 */
-	virtual bool saveScreenshot(const char *filename) { return false; };
 };
 
 #endif

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.cpp	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.cpp	2010-07-15 01:21:20 UTC (rev 50900)
@@ -474,16 +474,21 @@
 	SdlGraphicsManager::warpMouse(x, y);
 }
 
-void LinuxmotoSdlGraphicsManager::adjustMouseEvent(Common::Event &event) {
-	if (!_overlayVisible) {
-		if (_videoMode.mode == GFX_HALF) {
-			event.mouse.x *= 2;
-			event.mouse.y *= 2;
+void LinuxmotoSdlGraphicsManager::adjustMouseEvent(const Common::Event &event) {
+	if (!event.synthetic) {
+		Common::Event newEvent(event);
+		newEvent.synthetic = true;
+		if (!_overlayVisible) {
+			if (_videoMode.mode == GFX_HALF) {
+				event.mouse.x *= 2;
+				event.mouse.y *= 2;
+			}
+			newEvent.mouse.x /= _videoMode.scaleFactor;
+			newEvent.mouse.y /= _videoMode.scaleFactor;
+			if (_videoMode.aspectRatioCorrection)
+				newEvent.mouse.y = aspect2Real(newEvent.mouse.y);
 		}
-		event.mouse.x /= _videoMode.scaleFactor;
-		event.mouse.y /= _videoMode.scaleFactor;
-		if (_videoMode.aspectRatioCorrection)
-			event.mouse.y = aspect2Real(event.mouse.y);
+		g_system->getEventManager()->pushEvent(newEvent);
 	}
 }
 

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.h	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/linuxmotosdl/linuxmotosdl-graphics.h	2010-07-15 01:21:20 UTC (rev 50900)
@@ -42,7 +42,9 @@
 	virtual void showOverlay();
 	virtual void hideOverlay();
 	virtual void warpMouse(int x, int y);
-	virtual void adjustMouseEvent(Common::Event &event);
+
+protected:
+	virtual void adjustMouseEvent(const Common::Event &event);
 };
 
 #endif

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.cpp	2010-07-15 01:21:20 UTC (rev 50900)
@@ -122,30 +122,6 @@
 }
 
 
-void OpenGLSdlGraphicsManager::forceFullRedraw() {
-
-}
-
-bool OpenGLSdlGraphicsManager::handleScalerHotkeys(const SDL_KeyboardEvent &key) {
-	return false;
-}
-
-bool OpenGLSdlGraphicsManager::isScalerHotkey(const Common::Event &event) {
-	return false;
-}
-
-void OpenGLSdlGraphicsManager::adjustMouseEvent(Common::Event &event) {
-
-}
-
-void OpenGLSdlGraphicsManager::toggleFullScreen() {
-
-}
-
-bool OpenGLSdlGraphicsManager::saveScreenshot(const char *filename) {
-	return false;
-}
-
 //
 // Intern
 //

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/openglsdl/openglsdl-graphics.h	2010-07-15 01:21:20 UTC (rev 50900)
@@ -50,13 +50,6 @@
 
 	virtual void warpMouse(int x, int y);
 
-	virtual void forceFullRedraw();
-	virtual bool handleScalerHotkeys(const SDL_KeyboardEvent &key);
-	virtual bool isScalerHotkey(const Common::Event &event);
-	virtual void adjustMouseEvent(Common::Event &event);
-	virtual void toggleFullScreen();
-	virtual bool saveScreenshot(const char *filename);
-
 protected:
 	virtual void internUpdateScreen();
 

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp	2010-07-15 01:21:20 UTC (rev 50900)
@@ -184,6 +184,9 @@
 #else
 	_videoMode.fullscreen = true;
 #endif
+
+	// Register the graphics manager as a event observer
+	g_system->getEventManager()->getEventDispatcher()->registerObserver(this, 2, false);
 }
 
 SdlGraphicsManager::~SdlGraphicsManager() {
@@ -2087,16 +2090,17 @@
 	return false;
 }
 
-void SdlGraphicsManager::forceFullRedraw() {
-	_forceFull = true;
-}
-
-void SdlGraphicsManager::adjustMouseEvent(Common::Event &event) {
-	if (!_overlayVisible) {
-		event.mouse.x /= _videoMode.scaleFactor;
-		event.mouse.y /= _videoMode.scaleFactor;
-		if (_videoMode.aspectRatioCorrection)
-			event.mouse.y = aspect2Real(event.mouse.y);
+void SdlGraphicsManager::adjustMouseEvent(const Common::Event &event) {
+	if (!event.synthetic) {
+		Common::Event newEvent(event);
+		newEvent.synthetic = true;
+		if (!_overlayVisible) {
+			newEvent.mouse.x /= _videoMode.scaleFactor;
+			newEvent.mouse.y /= _videoMode.scaleFactor;
+			if (_videoMode.aspectRatioCorrection)
+				newEvent.mouse.y = aspect2Real(newEvent.mouse.y);
+		}
+		g_system->getEventManager()->pushEvent(newEvent);
 	}
 }
 
@@ -2112,4 +2116,63 @@
 #endif
 }
 
+bool SdlGraphicsManager::notifyEvent(const Common::Event &event) {
+	switch (event.type) {
+	case Common::EVENT_KEYDOWN:
+		// Alt-Return and Alt-Enter toggle full screen mode
+		if (event.kbd.hasFlags(Common::KBD_ALT) &&
+			(event.kbd.keycode == Common::KEYCODE_RETURN ||
+			event.kbd.keycode == SDLK_KP_ENTER)) {
+			toggleFullScreen();
+			return true;
+		}
+
+		// Alt-S: Create a screenshot
+		if (event.kbd.hasFlags(Common::KBD_ALT) && event.kbd.keycode == 's') {
+			char filename[20];
+
+			for (int n = 0;; n++) {
+				SDL_RWops *file;
+
+				sprintf(filename, "scummvm%05d.bmp", n);
+				file = SDL_RWFromFile(filename, "r");
+				if (!file)
+					break;
+				SDL_RWclose(file);
+			}
+			if (saveScreenshot(filename))
+				printf("Saved '%s'\n", filename);
+			else
+				printf("Could not save screenshot!\n");
+			return true;
+		}
+
+		// Ctrl-Alt-<key> will change the GFX mode
+		if ((event.kbd.flags & (Common::KBD_CTRL|Common::KBD_ALT)) == (Common::KBD_CTRL|Common::KBD_ALT)) {
+			if (handleScalerHotkeys(event.kbd.keycode))
+				return true;
+		}
+	case Common::EVENT_KEYUP:
+		return isScalerHotkey(event);
+	case Common::EVENT_MOUSEMOVE:
+		if (event.synthetic)
+			setMousePos(event.mouse.x, event.mouse.y);
+	case Common::EVENT_LBUTTONDOWN:
+	case Common::EVENT_RBUTTONDOWN:
+	case Common::EVENT_WHEELUP:
+	case Common::EVENT_WHEELDOWN:
+	case Common::EVENT_MBUTTONDOWN:
+	case Common::EVENT_LBUTTONUP:
+	case Common::EVENT_RBUTTONUP:
+	case Common::EVENT_MBUTTONUP:
+		adjustMouseEvent(event);
+		return !event.synthetic;
+	/*case SDL_VIDEOEXPOSE:
+		_forceFull = true;
+		return false;*/
+	}
+
+	return false;
+}
+
 #endif

Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h	2010-07-14 22:43:59 UTC (rev 50899)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h	2010-07-15 01:21:20 UTC (rev 50900)
@@ -27,8 +27,9 @@
 #define BACKENDS_GRAPHICS_SDL_H
 
 #include "backends/graphics/graphics.h"
+#include "graphics/scaler.h"
+#include "common/events.h"
 #include "common/system.h"
-#include "graphics/scaler.h"
 
 #if defined(__SYMBIAN32__)
 #include <esdl\SDL.h>
@@ -72,7 +73,7 @@
 /**
  * SDL graphics manager
  */
-class SdlGraphicsManager : public GraphicsManager {
+class SdlGraphicsManager : public GraphicsManager, public Common::EventObserver  {
 public:
 	SdlGraphicsManager();
 	virtual ~SdlGraphicsManager();
@@ -127,13 +128,8 @@
 	virtual void displayMessageOnOSD(const char *msg);
 #endif
 
-	virtual void forceFullRedraw();
-	virtual bool handleScalerHotkeys(Common::KeyCode key);
-	virtual bool isScalerHotkey(const Common::Event &event);
-	virtual void adjustMouseEvent(Common::Event &event);
-	virtual void setMousePos(int x, int y);
-	virtual void toggleFullScreen();
-	virtual bool saveScreenshot(const char *filename);
+	// Override from Common::EventObserver
+	bool notifyEvent(const Common::Event &event);
 
 protected:
 #ifdef USE_OSD
@@ -313,6 +309,13 @@
 	virtual int effectiveScreenHeight() const;
 
 	virtual void setGraphicsModeIntern();
+
+	virtual bool handleScalerHotkeys(Common::KeyCode key);
+	virtual bool isScalerHotkey(const Common::Event &event);
+	virtual void adjustMouseEvent(const Common::Event &event);
+	virtual void setMousePos(int x, int y);
+	virtual void toggleFullScreen();
+	virtual bool saveScreenshot(const char *filename);
 };
 
 #endif


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