[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