From 8cf39cdd292833d0cf54d944d31a6808dc454f43 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Sat, 24 Sep 2016 09:07:15 +0200 Subject: [PATCH] Only enable syncing after the first frame due to high initialization load --- include/openspace/engine/openspaceengine.h | 4 ++++ src/engine/openspaceengine.cpp | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/openspace/engine/openspaceengine.h b/include/openspace/engine/openspaceengine.h index 63e2451a1b..68994a2099 100644 --- a/include/openspace/engine/openspaceengine.h +++ b/include/openspace/engine/openspaceengine.h @@ -172,6 +172,10 @@ private: // The current state of the countdown; if it reaches '0', the application will close float _shutdownCountdown; + // The first frame might take some more time in the update loop, so we need to know to + // disable the synchronization; otherwise a hardware sync will kill us after 1 sec + bool _isFirstRenderingFirstFrame; + static OpenSpaceEngine* _engine; }; diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index 35e5e41805..fb10ac437e 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -151,6 +151,7 @@ OpenSpaceEngine::OpenSpaceEngine(std::string programName, , _isInShutdownMode(false) , _shutdownCountdown(0.f) , _shutdownWait(0.f) + , _isFirstRenderingFirstFrame(true) { _interactionHandler->setPropertyOwner(_globalPropertyNamespace.get()); _globalPropertyNamespace->addPropertySubOwner(_interactionHandler.get()); @@ -837,6 +838,10 @@ void OpenSpaceEngine::setRunTime(double d){ void OpenSpaceEngine::preSynchronization() { FileSys.triggerFilesystemEvents(); + + if (_isFirstRenderingFirstFrame) { + _windowWrapper->setSynchronization(false); + } _syncEngine->presync(_isMaster); if (_isMaster) { @@ -949,8 +954,15 @@ void OpenSpaceEngine::postDraw() { #endif } - if (_isInShutdownMode) + if (_isInShutdownMode) { _renderEngine->renderShutdownInformation(_shutdownCountdown, _shutdownWait); + } + + if (_isFirstRenderingFirstFrame) { + _windowWrapper->setSynchronization(true); + _isFirstRenderingFirstFrame = false; + } + } void OpenSpaceEngine::keyboardCallback(Key key, KeyModifier mod, KeyAction action) {