From 834a2a5c3b2f2241a379175bfcab80db721b1639 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 15 Jun 2017 12:49:09 -0700 Subject: [PATCH] Ensure monitor never shows frozen SpectatorCamera preview --- .../src/display-plugins/hmd/HmdDisplayPlugin.cpp | 16 ++++++++++++++++ .../src/display-plugins/hmd/HmdDisplayPlugin.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index ea91890f33..260ac5fa4c 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -743,3 +743,19 @@ HmdDisplayPlugin::~HmdDisplayPlugin() { float HmdDisplayPlugin::stutterRate() const { return _stutterRate.rate(); } + +bool HmdDisplayPlugin::setDisplayTexture(const QString& name) { + // Note: it is the caller's responsibility to keep the network texture in cache. + if (name.isEmpty()) { + _displayTexture.reset(); + _clearPreviewFlag = true; + return true; + } + auto textureCache = DependencyManager::get(); + auto displayNetworkTexture = textureCache->getTexture(name); + if (!displayNetworkTexture) { + return false; + } + _displayTexture = displayNetworkTexture->getGPUTexture(); + return !!_displayTexture; +} diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index aaa6e347e0..78b3889179 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -46,6 +46,8 @@ public: float stutterRate() const override; + virtual bool setDisplayTexture(const QString& name) override; + protected: virtual void hmdPresent() = 0; virtual bool isHmdMounted() const = 0;