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;
|
handled = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GHOST_kEventWindowUpdate:
|
// 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
|
||||||
GHOST_IWindow* window = event->getWindow();
|
// as reference. (see EngineNextFrame)
|
||||||
if (!m_system->validWindow(window)) break;
|
//case GHOST_kEventWindowUpdate:
|
||||||
// Update the state of the game engine
|
// {
|
||||||
if (m_kxsystem && !m_exitRequested)
|
// GHOST_IWindow* window = event->getWindow();
|
||||||
{
|
// if (!m_system->validWindow(window)) break;
|
||||||
// Proceed to next frame
|
// // Update the state of the game engine
|
||||||
window->activateDrawingContext();
|
// if (m_kxsystem && !m_exitRequested)
|
||||||
|
// {
|
||||||
|
// // Proceed to next frame
|
||||||
|
// window->activateDrawingContext();
|
||||||
|
|
||||||
// first check if we want to exit
|
// // first check if we want to exit
|
||||||
m_exitRequested = m_ketsjiengine->GetExitCode();
|
// m_exitRequested = m_ketsjiengine->GetExitCode();
|
||||||
|
//
|
||||||
// kick the engine
|
// // kick the engine
|
||||||
bool renderFrame = m_ketsjiengine->NextFrame();
|
// bool renderFrame = m_ketsjiengine->NextFrame();
|
||||||
if (renderFrame)
|
// if (renderFrame)
|
||||||
{
|
// {
|
||||||
// render the frame
|
// // render the frame
|
||||||
m_ketsjiengine->Render();
|
// m_ketsjiengine->Render();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
m_exitString = m_ketsjiengine->GetExitString();
|
// m_exitString = m_ketsjiengine->GetExitString();
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
|
//
|
||||||
case GHOST_kEventWindowSize:
|
case GHOST_kEventWindowSize:
|
||||||
{
|
{
|
||||||
GHOST_IWindow* window = event->getWindow();
|
GHOST_IWindow* window = event->getWindow();
|
||||||
@ -789,6 +792,28 @@ void GPG_Application::stopEngine()
|
|||||||
m_engineRunning = false;
|
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()
|
void GPG_Application::exitEngine()
|
||||||
{
|
{
|
||||||
|
@ -77,6 +77,7 @@ public:
|
|||||||
GlobalSettings* getGlobalSettings(void);
|
GlobalSettings* getGlobalSettings(void);
|
||||||
bool StartGameEngine(int stereoMode);
|
bool StartGameEngine(int stereoMode);
|
||||||
void StopGameEngine();
|
void StopGameEngine();
|
||||||
|
void EngineNextFrame();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool handleWheel(GHOST_IEvent* event);
|
bool handleWheel(GHOST_IEvent* event);
|
||||||
|
@ -970,6 +970,8 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
system->processEvents(false);
|
system->processEvents(false);
|
||||||
system->dispatchEvents();
|
system->dispatchEvents();
|
||||||
|
app.EngineNextFrame();
|
||||||
|
|
||||||
if ((exitcode = app.getExitRequested()))
|
if ((exitcode = app.getExitRequested()))
|
||||||
{
|
{
|
||||||
run = false;
|
run = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user