forked from bartvdbraak/blender
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.
This commit is contained in:
parent
4120c18c47
commit
e4a6602a9a
@ -464,31 +464,34 @@ bool GPG_Application::processEvent(GHOST_IEvent* event)
|
||||
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,6 +792,28 @@ void GPG_Application::stopEngine()
|
||||
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()
|
||||
{
|
||||
|
@ -77,6 +77,7 @@ public:
|
||||
GlobalSettings* getGlobalSettings(void);
|
||||
bool StartGameEngine(int stereoMode);
|
||||
void StopGameEngine();
|
||||
void EngineNextFrame();
|
||||
|
||||
protected:
|
||||
bool handleWheel(GHOST_IEvent* event);
|
||||
|
@ -970,6 +970,8 @@ int main(int argc, char** argv)
|
||||
{
|
||||
system->processEvents(false);
|
||||
system->dispatchEvents();
|
||||
app.EngineNextFrame();
|
||||
|
||||
if ((exitcode = app.getExitRequested()))
|
||||
{
|
||||
run = false;
|
||||
|
Loading…
Reference in New Issue
Block a user