[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