[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49998] trunk/blender/source/gameengine/ GamePlayer/ghost: Fix for [#32361] " Blenderplayer quad-buffer maximum 100Hz Fps" reported by HG1.

Mitchell Stokes mogurijin at gmail.com
Sun Aug 19 01:46:37 CEST 2012


Revision: 49998
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49998
Author:   moguri
Date:     2012-08-18 23:46:37 +0000 (Sat, 18 Aug 2012)
Log Message:
-----------
Fix for [#32361] "Blenderplayer quad-buffer maximum 100Hz Fps" reported by HG1.

Allowing the Blenderplayer to break 100fps by making it less dependent on Ghost's messages.

Modified Paths:
--------------
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.h
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp

Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2012-08-18 21:12:08 UTC (rev 49997)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2012-08-18 23:46:37 UTC (rev 49998)
@@ -464,31 +464,34 @@
 			handled = false;
 			break;
 
-		case GHOST_kEventWindowUpdate:
-			{
-				GHOST_IWindow* window = event->getWindow();
-				if (!m_system->validWindow(window)) break;
-				// Update the state of the game engine
-				if (m_kxsystem && !m_exitRequested)
-				{
-					// Proceed to next frame
-					window->activateDrawingContext();
+		// The player now runs as often as it can (repsecting vsync and fixedtime).
+		// This allows the player to break 100fps, but this code is being left here
+		// as reference. (see EngineNextFrame)
+		//case GHOST_kEventWindowUpdate:
+		//	{
+		//		GHOST_IWindow* window = event->getWindow();
+		//		if (!m_system->validWindow(window)) break;
+		//		// Update the state of the game engine
+		//		if (m_kxsystem && !m_exitRequested)
+		//		{
+		//			// Proceed to next frame
+		//			window->activateDrawingContext();
 
-					// first check if we want to exit
-					m_exitRequested = m_ketsjiengine->GetExitCode();
-					
-					// kick the engine
-					bool renderFrame = m_ketsjiengine->NextFrame();
-					if (renderFrame)
-					{
-						// render the frame
-						m_ketsjiengine->Render();
-					}
-				}
-				m_exitString = m_ketsjiengine->GetExitString();
-			}
-			break;
-		
+		//			// first check if we want to exit
+		//			m_exitRequested = m_ketsjiengine->GetExitCode();
+		//			
+		//			// kick the engine
+		//			bool renderFrame = m_ketsjiengine->NextFrame();
+		//			if (renderFrame)
+		//			{
+		//				// render the frame
+		//				m_ketsjiengine->Render();
+		//			}
+		//		}
+		//		m_exitString = m_ketsjiengine->GetExitString();
+		//	}
+		//	break;
+		//
 		case GHOST_kEventWindowSize:
 			{
 			GHOST_IWindow* window = event->getWindow();
@@ -789,7 +792,29 @@
 	m_engineRunning = false;
 }
 
+void GPG_Application::EngineNextFrame()
+{
+	// Update the state of the game engine
+	if (m_kxsystem && !m_exitRequested)
+	{
+		// Proceed to next frame
+		if (m_mainWindow)
+			m_mainWindow->activateDrawingContext();
 
+		// first check if we want to exit
+		m_exitRequested = m_ketsjiengine->GetExitCode();
+		
+		// kick the engine
+		bool renderFrame = m_ketsjiengine->NextFrame();
+		if (renderFrame && m_mainWindow)
+		{
+			// render the frame
+			m_ketsjiengine->Render();
+		}
+	}
+	m_exitString = m_ketsjiengine->GetExitString();
+}
+
 void GPG_Application::exitEngine()
 {
 	// We only want to kill the engine if it has been initialized

Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.h
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.h	2012-08-18 21:12:08 UTC (rev 49997)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.h	2012-08-18 23:46:37 UTC (rev 49998)
@@ -77,6 +77,7 @@
 			GlobalSettings* getGlobalSettings(void);
 			bool StartGameEngine(int stereoMode);
 			void StopGameEngine();
+			void EngineNextFrame();
 
 protected:
 	bool	handleWheel(GHOST_IEvent* event);

Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp	2012-08-18 21:12:08 UTC (rev 49997)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp	2012-08-18 23:46:37 UTC (rev 49998)
@@ -970,6 +970,8 @@
 						{
 							system->processEvents(false);
 							system->dispatchEvents();
+							app.EngineNextFrame();
+
 							if ((exitcode = app.getExitRequested()))
 							{
 								run = false;




More information about the Bf-blender-cvs mailing list