[Scummvm-cvs-logs] SF.net SVN: scummvm:[52503] scummvm/branches/gsoc2010-opengl/backends
vgvgf at users.sourceforge.net
vgvgf at users.sourceforge.net
Fri Sep 3 06:23:02 CEST 2010
Revision: 52503
http://scummvm.svn.sourceforge.net/scummvm/?rev=52503&view=rev
Author: vgvgf
Date: 2010-09-03 04:23:01 +0000 (Fri, 03 Sep 2010)
Log Message:
-----------
SDL/OPENGL: Fix backend initialization when building with ENABLE_VKEYBD.
Modified Paths:
--------------
scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.cpp
scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.h
scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp
scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h
scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp
Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.cpp 2010-09-03 03:47:05 UTC (rev 52502)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.cpp 2010-09-03 04:23:01 UTC (rev 52503)
@@ -62,9 +62,6 @@
_gamePalette = (byte *)calloc(sizeof(byte) * 4, 256);
_cursorPalette = (byte *)calloc(sizeof(byte) * 4, 256);
-
- // Register the graphics manager as a event observer
- g_system->getEventManager()->getEventDispatcher()->registerObserver(this, 2, false);
}
OpenGLGraphicsManager::~OpenGLGraphicsManager() {
@@ -83,6 +80,11 @@
delete _cursorTexture;
}
+void OpenGLGraphicsManager::initEventObserver() {
+ // Register the graphics manager as a event observer
+ g_system->getEventManager()->getEventDispatcher()->registerObserver(this, 10, false);
+}
+
//
// Feature
//
Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.h 2010-09-03 03:47:05 UTC (rev 52502)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/opengl/opengl-graphics.h 2010-09-03 04:23:01 UTC (rev 52503)
@@ -57,6 +57,8 @@
OpenGLGraphicsManager();
virtual ~OpenGLGraphicsManager();
+ virtual void initEventObserver();
+
virtual bool hasFeature(OSystem::Feature f);
virtual void setFeatureState(OSystem::Feature f, bool enable);
virtual bool getFeatureState(OSystem::Feature f);
Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp 2010-09-03 03:47:05 UTC (rev 52502)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.cpp 2010-09-03 04:23:01 UTC (rev 52503)
@@ -184,9 +184,6 @@
#else
_videoMode.fullscreen = true;
#endif
-
- // Register the graphics manager as a event observer
- g_system->getEventManager()->getEventDispatcher()->registerObserver(this, 2, false);
}
SdlGraphicsManager::~SdlGraphicsManager() {
@@ -202,6 +199,11 @@
free(_mouseData);
}
+void SdlGraphicsManager::initEventObserver() {
+ // Register the graphics manager as a event observer
+ g_system->getEventManager()->getEventDispatcher()->registerObserver(this, 10, false);
+}
+
bool SdlGraphicsManager::hasFeature(OSystem::Feature f) {
return
(f == OSystem::kFeatureFullscreenMode) ||
Modified: scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h 2010-09-03 03:47:05 UTC (rev 52502)
+++ scummvm/branches/gsoc2010-opengl/backends/graphics/sdl/sdl-graphics.h 2010-09-03 04:23:01 UTC (rev 52503)
@@ -78,6 +78,8 @@
SdlGraphicsManager();
virtual ~SdlGraphicsManager();
+ virtual void initEventObserver();
+
virtual bool hasFeature(OSystem::Feature f);
virtual void setFeatureState(OSystem::Feature f, bool enable);
virtual bool getFeatureState(OSystem::Feature f);
Modified: scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp
===================================================================
--- scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp 2010-09-03 03:47:05 UTC (rev 52502)
+++ scummvm/branches/gsoc2010-opengl/backends/platform/sdl/sdl.cpp 2010-09-03 04:23:01 UTC (rev 52503)
@@ -81,21 +81,8 @@
// Check if backend has not been initialized
assert(!_inited);
- // Creates the backend managers, if they don't exist yet (we check
- // for this to allow subclasses to provide their own).
- if (_eventManager == 0)
- _eventManager = new SdlEventManager(this);
+ int graphicsManagerType = 0;
- if (_savefileManager == 0)
- _savefileManager = new DefaultSaveFileManager();
-
- if (_mixerManager == 0) {
- _mixerManager = new SdlMixerManager();
-
- // Setup and start mixer
- _mixerManager->init();
- }
-
if (_graphicsManager == 0) {
#ifdef USE_OPENGL
if (ConfMan.hasKey("gfx_mode")) {
@@ -110,14 +97,44 @@
}
// If the gfx_mode is from OpenGL, create the OpenGL graphics manager
- if (use_opengl)
+ if (use_opengl) {
_graphicsManager = new OpenGLSdlGraphicsManager();
+ graphicsManagerType = 1;
+ }
}
#endif
- if (_graphicsManager == 0)
+ if (_graphicsManager == 0) {
_graphicsManager = new SdlGraphicsManager();
+ graphicsManagerType = 0;
+ }
}
+ // Creates the backend managers, if they don't exist yet (we check
+ // for this to allow subclasses to provide their own).
+ if (_eventManager == 0)
+ _eventManager = new SdlEventManager(this);
+
+ // We have to initialize the graphics manager before the event manager
+ // so the virtual keyboard can be initialized, but we have to add the
+ // graphics manager as an event observer after initializing the event
+ // manager.
+ if (graphicsManagerType == 0)
+ ((SdlGraphicsManager *)_graphicsManager)->initEventObserver();
+#ifdef USE_OPENGL
+ else if (graphicsManagerType == 1)
+ ((OpenGLSdlGraphicsManager *)_graphicsManager)->initEventObserver();
+#endif
+
+ if (_savefileManager == 0)
+ _savefileManager = new DefaultSaveFileManager();
+
+ if (_mixerManager == 0) {
+ _mixerManager = new SdlMixerManager();
+
+ // Setup and start mixer
+ _mixerManager->init();
+ }
+
if (_audiocdManager == 0)
_audiocdManager = new SdlAudioCDManager();
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