mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-16 09:47:06 +02:00
FB11109 Preview disabled image swap (Commerce only)
This commit is contained in:
parent
95d0e8aa56
commit
a74b093b60
6 changed files with 99 additions and 12 deletions
BIN
interface/resources/images/preview-privacy.png
Normal file
BIN
interface/resources/images/preview-privacy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
|
@ -209,6 +209,7 @@
|
|||
#include "commerce/QmlCommerce.h"
|
||||
|
||||
#include "webbrowser/WebBrowserSuggestionsEngine.h"
|
||||
#include <DesktopPreviewProvider.h>
|
||||
|
||||
// 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<PointerScriptingInterface>();
|
||||
DependencyManager::set<PickScriptingInterface>();
|
||||
DependencyManager::set<Cursor::Manager>();
|
||||
DependencyManager::set<DesktopPreviewProvider>();
|
||||
DependencyManager::set<AccountManager>(std::bind(&Application::getUserAgent, qApp));
|
||||
DependencyManager::set<StatTracker>();
|
||||
DependencyManager::set<ScriptEngines>(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<DesktopPreviewProvider>().data());
|
||||
scriptEngine->registerGlobalObject("Stats", Stats::getInstance());
|
||||
scriptEngine->registerGlobalObject("Settings", SettingsScriptingInterface::getInstance());
|
||||
scriptEngine->registerGlobalObject("Snapshot", DependencyManager::get<Snapshot>().data());
|
||||
|
|
|
@ -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()));
|
||||
|
||||
|
|
45
libraries/ui/src/DesktopPreviewProvider.cpp
Normal file
45
libraries/ui/src/DesktopPreviewProvider.cpp
Normal file
|
@ -0,0 +1,45 @@
|
|||
#include "DesktopPreviewProvider.h"
|
||||
#include <PathUtils.h>
|
||||
#include <QMetaEnum>
|
||||
#include <QtPlugin>
|
||||
#include <cassert>
|
||||
|
||||
DesktopPreviewProvider::DesktopPreviewProvider() {
|
||||
}
|
||||
|
||||
QSharedPointer<DesktopPreviewProvider> DesktopPreviewProvider::getInstance() {
|
||||
static QSharedPointer<DesktopPreviewProvider> instance = DependencyManager::get<DesktopPreviewProvider>();
|
||||
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<DesktopPreviewProvider::PreviewDisabledReasons>().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);
|
||||
}
|
41
libraries/ui/src/DesktopPreviewProvider.h
Normal file
41
libraries/ui/src/DesktopPreviewProvider.h
Normal file
|
@ -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 <DependencyManager.h>
|
||||
#include <QImage>
|
||||
|
||||
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> 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];
|
||||
};
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue