From a74b093b60c3541c96e541bba44d5d799361469e Mon Sep 17 00:00:00 2001 From: Alexander Ivash Date: Thu, 11 Jan 2018 21:36:55 +0300 Subject: [PATCH] FB11109 Preview disabled image swap (Commerce only) --- .../resources/images/preview-privacy.png | Bin 0 -> 51845 bytes interface/src/Application.cpp | 3 ++ .../display-plugins/hmd/HmdDisplayPlugin.cpp | 14 ++---- libraries/ui/src/DesktopPreviewProvider.cpp | 45 ++++++++++++++++++ libraries/ui/src/DesktopPreviewProvider.h | 41 ++++++++++++++++ scripts/system/commerce/wallet.js | 8 +++- 6 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 interface/resources/images/preview-privacy.png create mode 100644 libraries/ui/src/DesktopPreviewProvider.cpp create mode 100644 libraries/ui/src/DesktopPreviewProvider.h diff --git a/interface/resources/images/preview-privacy.png b/interface/resources/images/preview-privacy.png new file mode 100644 index 0000000000000000000000000000000000000000..1a556b37f25f02cf0f3e1c1ec294725daef6cea1 GIT binary patch literal 51845 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 literal 0 HcmV?d00001 diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6849bd07b5..85545e9def 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -209,6 +209,7 @@ #include "commerce/QmlCommerce.h" #include "webbrowser/WebBrowserSuggestionsEngine.h" +#include // On Windows PC, NVidia Optimus laptop, we want to enable NVIDIA GPU // FIXME seems to be broken. @@ -632,6 +633,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); + DependencyManager::set(); DependencyManager::set(std::bind(&Application::getUserAgent, qApp)); DependencyManager::set(); DependencyManager::set(ScriptEngine::CLIENT_SCRIPT); @@ -5758,6 +5760,7 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe scriptEngine->registerFunction("OverlayWindow", QmlWindowClass::constructor); scriptEngine->registerGlobalObject("Menu", MenuScriptingInterface::getInstance()); + scriptEngine->registerGlobalObject("DesktopPreviewProvider", DependencyManager::get().data()); scriptEngine->registerGlobalObject("Stats", Stats::getInstance()); scriptEngine->registerGlobalObject("Settings", SettingsScriptingInterface::getInstance()); scriptEngine->registerGlobalObject("Snapshot", DependencyManager::get().data()); diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index 1d7fee38eb..90bb83a663 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -33,6 +33,7 @@ #include "../Logging.h" #include "../CompositorHelper.h" +#include "DesktopPreviewProvider.h" #include "render-utils/hmd_ui_vert.h" #include "render-utils/hmd_ui_frag.h" @@ -254,17 +255,9 @@ void HmdDisplayPlugin::internalPresent() { swapBuffers(); } else if (_clearPreviewFlag) { - QImage image; - if (_vsyncEnabled) { - image = QImage(PathUtils::resourcesPath() + "images/preview.png"); - } else { - image = QImage(PathUtils::resourcesPath() + "images/preview-disabled.png"); - } - image = image.mirrored(); - image = image.convertToFormat(QImage::Format_RGBA8888); - if (!_previewTexture) { - _previewTexture = gpu::Texture::createStrict( + QImage image = DesktopPreviewProvider::getInstance()->getPreviewDisabledImage(_vsyncEnabled); + _previewTexture = gpu::Texture::createStrict( gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA), image.width(), image.height(), gpu::Texture::MAX_NUM_MIPS, @@ -274,7 +267,6 @@ void HmdDisplayPlugin::internalPresent() { _previewTexture->setStoredMipFormat(gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA)); _previewTexture->assignStoredMip(0, image.byteCount(), image.constBits()); _previewTexture->setAutoGenerateMips(true); - } auto viewport = getViewportForSourceSize(uvec2(_previewTexture->getDimensions())); diff --git a/libraries/ui/src/DesktopPreviewProvider.cpp b/libraries/ui/src/DesktopPreviewProvider.cpp new file mode 100644 index 0000000000..4eeb058a57 --- /dev/null +++ b/libraries/ui/src/DesktopPreviewProvider.cpp @@ -0,0 +1,45 @@ +#include "DesktopPreviewProvider.h" +#include +#include +#include +#include + +DesktopPreviewProvider::DesktopPreviewProvider() { +} + +QSharedPointer DesktopPreviewProvider::getInstance() { + static QSharedPointer instance = DependencyManager::get(); + return instance; +} + +QImage DesktopPreviewProvider::getPreviewDisabledImage(bool vsyncEnabled) const { + + auto imageIndex = vsyncEnabled ? VSYNC : m_previewDisabledReason; + assert(imageIndex >= 0 && imageIndex <= VSYNC); + + static const QString imagePaths[] = { + "images/preview-disabled.png", // USER + "images/preview-privacy.png", // WALLET + "images/preview.png", // VSYNC + }; + + return !m_previewDisabled[imageIndex].isNull() ? m_previewDisabled[imageIndex] : loadPreviewImage(m_previewDisabled[imageIndex], PathUtils::resourcesPath() + imagePaths[imageIndex]); +} + +void DesktopPreviewProvider::setPreviewDisabledReason(PreviewDisabledReasons reason) { + m_previewDisabledReason = reason; +} + +void DesktopPreviewProvider::setPreviewDisabledReason(const QString& reasonString) { + PreviewDisabledReasons reason = USER; + bool ok = false; + + reason = (PreviewDisabledReasons) QMetaEnum::fromType().keyToValue(reasonString.toLatin1().data(), &ok); + if (ok) { + setPreviewDisabledReason(reason); + } +} + +QImage& DesktopPreviewProvider::loadPreviewImage(QImage& image, const QString& path) const { + return image = QImage(path).mirrored().convertToFormat(QImage::Format_RGBA8888); +} \ No newline at end of file diff --git a/libraries/ui/src/DesktopPreviewProvider.h b/libraries/ui/src/DesktopPreviewProvider.h new file mode 100644 index 0000000000..2204f26378 --- /dev/null +++ b/libraries/ui/src/DesktopPreviewProvider.h @@ -0,0 +1,41 @@ +// +// Created by Alexander Ivash on 2018/01/08 +// Copyright 2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include +#include + +class DesktopPreviewProvider : public QObject, public Dependency { + SINGLETON_DEPENDENCY + Q_OBJECT + + DesktopPreviewProvider(); + DesktopPreviewProvider(const DesktopPreviewProvider& other) = delete; +public: + enum PreviewDisabledReasons { + USER = 0, + SECURE_SCREEN + }; + Q_ENUM(PreviewDisabledReasons) + + int VSYNC { 2 }; + + static QSharedPointer DesktopPreviewProvider::getInstance(); + + QImage getPreviewDisabledImage(bool vsyncEnabled) const; + void setPreviewDisabledReason(PreviewDisabledReasons reason); + +public slots: + void setPreviewDisabledReason(const QString& reason); + +private: + QImage& loadPreviewImage(QImage& image, const QString& path) const; + + PreviewDisabledReasons m_previewDisabledReason = { USER }; + + mutable QImage m_previewDisabled[3]; +}; \ No newline at end of file diff --git a/scripts/system/commerce/wallet.js b/scripts/system/commerce/wallet.js index 0826325a57..f93d6714f1 100644 --- a/scripts/system/commerce/wallet.js +++ b/scripts/system/commerce/wallet.js @@ -562,9 +562,11 @@ break; case 'disableHmdPreview': isHmdPreviewDisabled = Menu.isOptionChecked("Disable Preview"); + DesktopPreviewProvider.setPreviewDisabledReason("SECURE_SCREEN"); Menu.setIsOptionChecked("Disable Preview", true); break; case 'maybeEnableHmdPreview': + DesktopPreviewProvider.setPreviewDisabledReason("USER"); Menu.setIsOptionChecked("Disable Preview", isHmdPreviewDisabled); break; case 'passphraseReset': @@ -635,7 +637,11 @@ // -Called when the TabletScriptingInterface::screenChanged() signal is emitted. The "type" argument can be either the string // value of "Home", "Web", "Menu", "QML", or "Closed". The "url" argument is only valid for Web and QML. function onTabletScreenChanged(type, url) { - onWalletScreen = (type === "QML" && url === WALLET_QML_SOURCE); + var onWalletScreenNow = (type === "QML" && url === WALLET_QML_SOURCE); + if (!onWalletScreenNow && onWalletScreen) { + DesktopPreviewProvider.setPreviewDisabledReason("USER"); + } + onWalletScreen = onWalletScreenNow; wireEventBridge(onWalletScreen); // Change button to active when window is first openend, false otherwise. if (button) {