diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index e4deaf8f4b..20fc9a2290 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -720,7 +720,7 @@ void OpenGLDisplayPlugin::present() { } gpu::Backend::freeGPUMemSize.set(gpu::gl::getFreeDedicatedMemory()); - } else { + } else if (alwaysPresent()) { internalPresent(); } _movingAveragePresent.addSample((float)(usecTimestampNow() - startPresent)); diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index 5c653f8a0a..49a38ecb4c 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -88,6 +88,11 @@ protected: glm::uvec2 getSurfaceSize() const; glm::uvec2 getSurfacePixels() const; + // Some display plugins require us to always execute some present logic, + // whether we have a frame or not (Oculus Mobile plugin) + // Such plugins must be prepared to do the right thing if the `_currentFrame` + // is not populated + virtual bool alwaysPresent() const { return false; } void updateCompositeFramebuffer(); diff --git a/libraries/oculusMobilePlugin/src/OculusMobileDisplayPlugin.h b/libraries/oculusMobilePlugin/src/OculusMobileDisplayPlugin.h index 4a0a21e995..a98989655e 100644 --- a/libraries/oculusMobilePlugin/src/OculusMobileDisplayPlugin.h +++ b/libraries/oculusMobilePlugin/src/OculusMobileDisplayPlugin.h @@ -57,6 +57,7 @@ protected: void internalPresent() override; void hmdPresent() override { throw std::runtime_error("Unused"); } bool isHmdMounted() const override; + bool alwaysPresent() const override { return true; } static const char* NAME; mutable gl::Context* _mainContext{ nullptr }; diff --git a/tools/nitpick/src/AWSInterface.cpp b/tools/nitpick/src/AWSInterface.cpp index 63d5af9272..4e83460b9e 100644 --- a/tools/nitpick/src/AWSInterface.cpp +++ b/tools/nitpick/src/AWSInterface.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -589,4 +590,4 @@ void AWSInterface::updateAWS() { QStringList parameters = QStringList() << "-c" << _pythonCommand + " " + filename; process->start("sh", parameters); #endif -} \ No newline at end of file +}