From e08c9db469ec2d5a7c96b3a8b15761872ae66417 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 7 Apr 2016 18:27:07 -0700 Subject: [PATCH 1/6] Expose GL property to QML --- interface/src/Application.cpp | 11 ++++++++++- interface/src/Application.h | 5 +++++ interface/src/main.cpp | 17 ++++++++++------- libraries/gl/src/gl/OpenGLVersionChecker.cpp | 15 ++++++++++++--- libraries/gl/src/gl/OpenGLVersionChecker.h | 2 +- libraries/networking/src/UserActivityLogger.cpp | 6 +++--- libraries/networking/src/UserActivityLogger.h | 4 ++-- 7 files changed, 43 insertions(+), 17 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 280f2c5d1f..0c2cd49ef5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -199,6 +199,8 @@ static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStanda static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation).append("/script.js"); #endif +QJsonObject Application::_glData {}; + Setting::Handle maxOctreePacketsPerSecond("maxOctreePPS", DEFAULT_MAX_OCTREE_PPS); const QHash Application::_acceptedExtensions { @@ -1303,7 +1305,9 @@ void Application::initializeGL() { InfoView::show(INFO_HELP_PATH, true); } + extern void setupPreferences(); + void Application::initializeUi() { AddressBarDialog::registerType(); ErrorDialog::registerType(); @@ -1315,6 +1319,12 @@ void Application::initializeUi() { auto offscreenUi = DependencyManager::get(); offscreenUi->create(_offscreenContext->getContext()); + + auto rootContext = offscreenUi->getRootContext(); + + // First set the GL property, so the desktop can use it for graphics workarounds + rootContext->setContextProperty("GL", _glData); + offscreenUi->setProxyWindow(_window->windowHandle()); offscreenUi->setBaseUrl(QUrl::fromLocalFile(PathUtils::resourcesPath() + "/qml/")); // OffscreenUi is a subclass of OffscreenQmlSurface specifically designed to @@ -1325,7 +1335,6 @@ void Application::initializeUi() { // do better detection in the offscreen UI of what has focus offscreenUi->setNavigationFocused(false); - auto rootContext = offscreenUi->getRootContext(); auto engine = rootContext->engine(); connect(engine, &QQmlEngine::quit, [] { qApp->quit(); diff --git a/interface/src/Application.h b/interface/src/Application.h index 116d2b2137..4f1badf0be 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -96,6 +96,9 @@ public: static void initPlugins(); static void shutdownPlugins(); + // Expose the gl metadata to QML + static void setGL(const QJsonObject& glData) { _glData = glData; } + Application(int& argc, char** argv, QElapsedTimer& startup_time); ~Application(); @@ -379,6 +382,8 @@ private: void maybeToggleMenuVisible(QMouseEvent* event) const; + static QJsonObject _glData; + MainWindow* _window; QElapsedTimer& _sessionRunTimer; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 9c07912b99..4fce190c2c 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -44,7 +44,7 @@ int main(int argc, const char* argv[]) { MiniDmpSender mpSender { BUG_SPLAT_DATABASE, BUG_SPLAT_APPLICATION_NAME, qPrintable(BuildInfo::VERSION), nullptr, BUG_SPLAT_FLAGS }; #endif - + QString applicationName = "High Fidelity Interface - " + qgetenv("USERNAME"); bool instanceMightBeRunning = true; @@ -105,13 +105,14 @@ int main(int argc, const char* argv[]) { // This is done separately from the main Application so that start-up and shut-down logic within the main Application is // not made more complicated than it already is. bool override = false; - QString glVersion; + QJsonObject glData; { OpenGLVersionChecker openGLVersionChecker(argc, const_cast(argv)); bool valid = true; - glVersion = openGLVersionChecker.checkVersion(valid, override); + glData = openGLVersionChecker.checkVersion(valid, override); if (!valid) { if (override) { + auto glVersion = glData["version"].toString(); qCDebug(interfaceapp, "Running on insufficient OpenGL version: %s.", glVersion.toStdString().c_str()); } else { qCDebug(interfaceapp, "Early exit due to OpenGL version."); @@ -139,21 +140,23 @@ int main(int argc, const char* argv[]) { // or in the main window ctor, before GL startup. Application::initPlugins(); + // GL must be available to the root QML context on startup. + Application::setGL(glData); + int exitCode; { QSettings::setDefaultFormat(QSettings::IniFormat); Application app(argc, const_cast(argv), startupTime); - // If we failed the OpenGLVersion check, log it. if (override) { auto& accountManager = AccountManager::getInstance(); if (accountManager.isLoggedIn()) { - UserActivityLogger::getInstance().insufficientGLVersion(glVersion); + UserActivityLogger::getInstance().insufficientGLVersion(glData); } else { - QObject::connect(&AccountManager::getInstance(), &AccountManager::loginComplete, [glVersion](){ + QObject::connect(&AccountManager::getInstance(), &AccountManager::loginComplete, [glData](){ static bool loggedInsufficientGL = false; if (!loggedInsufficientGL) { - UserActivityLogger::getInstance().insufficientGLVersion(glVersion); + UserActivityLogger::getInstance().insufficientGLVersion(glData); loggedInsufficientGL = true; } }); diff --git a/libraries/gl/src/gl/OpenGLVersionChecker.cpp b/libraries/gl/src/gl/OpenGLVersionChecker.cpp index 9a8c9f7a20..05dfc05457 100644 --- a/libraries/gl/src/gl/OpenGLVersionChecker.cpp +++ b/libraries/gl/src/gl/OpenGLVersionChecker.cpp @@ -13,6 +13,7 @@ #include #include +#include #include "Config.h" #include "GLWidget.h" @@ -22,7 +23,7 @@ OpenGLVersionChecker::OpenGLVersionChecker(int& argc, char** argv) : { } -QString OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { +QJsonObject OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { valid = true; override = false; @@ -38,12 +39,15 @@ QString OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { messageBox.setStandardButtons(QMessageBox::Ok); messageBox.setDefaultButton(QMessageBox::Ok); messageBox.exec(); - return QString(); + return QJsonObject(); } // Retrieve OpenGL version glWidget->initializeGL(); QString glVersion = QString((const char*)glGetString(GL_VERSION)); + QString glslVersion = QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION)); + QString glVendor = QString((const char*) glGetString(GL_VENDOR)); + QString glRenderer = QString((const char*)glGetString(GL_RENDERER)); delete glWidget; // Compare against minimum @@ -72,5 +76,10 @@ QString OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { override = messageBox.exec() == QMessageBox::Ignore; } - return glVersion; + return QJsonObject{ + { "version", glVersion }, + { "slVersion", glslVersion }, + { "vendor", glVendor }, + { "renderer", glRenderer }, + }; } diff --git a/libraries/gl/src/gl/OpenGLVersionChecker.h b/libraries/gl/src/gl/OpenGLVersionChecker.h index 1e45052626..913675af24 100644 --- a/libraries/gl/src/gl/OpenGLVersionChecker.h +++ b/libraries/gl/src/gl/OpenGLVersionChecker.h @@ -19,7 +19,7 @@ class OpenGLVersionChecker : public QApplication { public: OpenGLVersionChecker(int& argc, char** argv); - static QString checkVersion(bool& valid, bool& override); + static QJsonObject checkVersion(bool& valid, bool& override); }; #endif // hifi_OpenGLVersionChecker_h diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index 5fcc8a40c3..8eefaac9b0 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -85,11 +85,11 @@ void UserActivityLogger::launch(QString applicationVersion, bool previousSession logAction(ACTION_NAME, actionDetails); } -void UserActivityLogger::insufficientGLVersion(QString glVersion) { +void UserActivityLogger::insufficientGLVersion(const QJsonObject& glData) { const QString ACTION_NAME = "insufficient_gl"; QJsonObject actionDetails; - QString GL_VERSION = "glVersion"; - actionDetails.insert(GL_VERSION, glVersion); + QString GL_DATA = "glData"; + actionDetails.insert(GL_DATA, glData); logAction(ACTION_NAME, actionDetails); } diff --git a/libraries/networking/src/UserActivityLogger.h b/libraries/networking/src/UserActivityLogger.h index acc3b685cd..c48169d207 100644 --- a/libraries/networking/src/UserActivityLogger.h +++ b/libraries/networking/src/UserActivityLogger.h @@ -31,7 +31,7 @@ public slots: void launch(QString applicationVersion, bool previousSessionCrashed, int previousSessionRuntime); - void insufficientGLVersion(QString glVersion); + void insufficientGLVersion(const QJsonObject& glData); void changedDisplayName(QString displayName); void changedModel(QString typeOfModel, QString modelURL); @@ -48,4 +48,4 @@ private: bool _disabled; }; -#endif // hifi_UserActivityLogger_h \ No newline at end of file +#endif // hifi_UserActivityLogger_h From e54cfce3928adf291820a0657338384892ec74d3 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 7 Apr 2016 00:29:07 -0700 Subject: [PATCH 2/6] Disable qml alpha gradients for AMD --- interface/resources/qml/windows-uit/Frame.qml | 6 +++--- interface/resources/qml/windows-uit/Window.qml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/windows-uit/Frame.qml b/interface/resources/qml/windows-uit/Frame.qml index 918ee21eec..6b9d676bf7 100644 --- a/interface/resources/qml/windows-uit/Frame.qml +++ b/interface/resources/qml/windows-uit/Frame.qml @@ -59,9 +59,9 @@ Item { height: 1.66 * window.height x: (window.width - width) / 2 y: window.height / 2 - 0.375 * height - // FIXME: Alpha gradients display as fuschia under QtQuick 2.5 on OSX. - // Check again when have a later version of QtQuick. - visible: window && window.focus && pane.visible && Qt.platform.os != "osx" + // FIXME: Alpha gradients display as fuschia under QtQuick 2.5 on OSX/AMD + // because shaders are 4.2, and do not include #version declaration. + visible: window && window.focus && pane.visible && Qt.platform.os != "osx" && !~GL.vendor.indexOf("ATI") gradient: Gradient { // GradientStop position 0.5 is at full circumference of circle that fits inside the square. GradientStop { position: 0.0; color: "#ff000000" } // black, 100% opacity diff --git a/interface/resources/qml/windows-uit/Window.qml b/interface/resources/qml/windows-uit/Window.qml index 56f5e6c07d..8748f54291 100644 --- a/interface/resources/qml/windows-uit/Window.qml +++ b/interface/resources/qml/windows-uit/Window.qml @@ -142,9 +142,9 @@ Fadable { } LinearGradient { - // FIXME: Alpha gradients display as fuschia under QtQuick 2.5 on OSX. - // Check again when have a later version of QtQuick. - visible: modality != Qt.ApplicationModal && Qt.platform.os != "osx" + // FIXME: Alpha gradients display as fuschia under QtQuick 2.5 on OSX/AMD + // because shaders are 4.2, and do not include #version declaration. + visible: modality != Qt.ApplicationModal && Qt.platform.os != "osx" && !~GL.vendor.indexOf("ATI") anchors.top: contentBackground.bottom anchors.left: contentBackground.left width: contentBackground.width - 1 From d719b3692ec5328caf4e79e64b1a2f8f4e4b90b3 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 7 Apr 2016 18:28:53 -0700 Subject: [PATCH 3/6] Consolidate qml alpha gradient workaround to desktop --- interface/resources/qml/desktop/Desktop.qml | 4 ++++ interface/resources/qml/windows-uit/Frame.qml | 6 +++--- interface/resources/qml/windows-uit/Window.qml | 5 ++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/desktop/Desktop.qml b/interface/resources/qml/desktop/Desktop.qml index d2a3d7f7b9..beea0d8c64 100644 --- a/interface/resources/qml/desktop/Desktop.qml +++ b/interface/resources/qml/desktop/Desktop.qml @@ -34,6 +34,10 @@ FocusScope { // The VR version of the primary menu property var rootMenu: Menu { objectName: "rootMenu" } + // FIXME: Alpha gradients display as fuschia under QtQuick 2.5 on OSX/AMD + // because shaders are 4.2, and do not include #version declarations. + property bool gradientsSupported: Qt.platform.os != "osx" && !~GL.vendor.indexOf("ATI") + readonly property alias zLevels: zLevels QtObject { id: zLevels; diff --git a/interface/resources/qml/windows-uit/Frame.qml b/interface/resources/qml/windows-uit/Frame.qml index 6b9d676bf7..f21097ea62 100644 --- a/interface/resources/qml/windows-uit/Frame.qml +++ b/interface/resources/qml/windows-uit/Frame.qml @@ -20,6 +20,8 @@ Item { default property var decoration + property bool gradientsSupported: desktop.gradientsSupported + readonly property int iconSize: 22 readonly property int frameMargin: 9 readonly property int frameMarginLeft: frameMargin @@ -59,9 +61,7 @@ Item { height: 1.66 * window.height x: (window.width - width) / 2 y: window.height / 2 - 0.375 * height - // FIXME: Alpha gradients display as fuschia under QtQuick 2.5 on OSX/AMD - // because shaders are 4.2, and do not include #version declaration. - visible: window && window.focus && pane.visible && Qt.platform.os != "osx" && !~GL.vendor.indexOf("ATI") + visible: gradientsSupported && window && window.focus && pane.visible gradient: Gradient { // GradientStop position 0.5 is at full circumference of circle that fits inside the square. GradientStop { position: 0.0; color: "#ff000000" } // black, 100% opacity diff --git a/interface/resources/qml/windows-uit/Window.qml b/interface/resources/qml/windows-uit/Window.qml index 8748f54291..32fc816173 100644 --- a/interface/resources/qml/windows-uit/Window.qml +++ b/interface/resources/qml/windows-uit/Window.qml @@ -51,6 +51,7 @@ Fadable { // property bool pinnable: false // property bool pinned: false property bool resizable: false + property bool gradientsSupported: desktop.gradientsSupported property vector2d minSize: Qt.vector2d(100, 100) property vector2d maxSize: Qt.vector2d(1280, 800) @@ -142,9 +143,7 @@ Fadable { } LinearGradient { - // FIXME: Alpha gradients display as fuschia under QtQuick 2.5 on OSX/AMD - // because shaders are 4.2, and do not include #version declaration. - visible: modality != Qt.ApplicationModal && Qt.platform.os != "osx" && !~GL.vendor.indexOf("ATI") + visible: gradientsSupported && modality != Qt.ApplicationModal anchors.top: contentBackground.bottom anchors.left: contentBackground.left width: contentBackground.width - 1 From 52958ffc70945bc82db771c4df4636d9d5dc6232 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 11 Apr 2016 13:28:18 -0700 Subject: [PATCH 4/6] Move gl info queries to GLHelpers --- libraries/gl/src/gl/GLHelpers.cpp | 19 +++++++++++++++++++ libraries/gl/src/gl/GLHelpers.h | 4 ++++ libraries/gl/src/gl/OpenGLVersionChecker.cpp | 15 +++++---------- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/libraries/gl/src/gl/GLHelpers.cpp b/libraries/gl/src/gl/GLHelpers.cpp index c9de3ccd90..6b807d8baf 100644 --- a/libraries/gl/src/gl/GLHelpers.cpp +++ b/libraries/gl/src/gl/GLHelpers.cpp @@ -4,6 +4,7 @@ #include #include +#include const QSurfaceFormat& getDefaultOpenGLSurfaceFormat() { static QSurfaceFormat format; @@ -35,3 +36,21 @@ const QGLFormat& getDefaultGLFormat() { }); return glFormat; } + +QJsonObject getGLContextData() { + if (!QOpenGLContext::currentContext()) { + return QJsonObject(); + } + + QString glVersion = QString((const char*)glGetString(GL_VERSION)); + QString glslVersion = QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION)); + QString glVendor = QString((const char*) glGetString(GL_VENDOR)); + QString glRenderer = QString((const char*)glGetString(GL_RENDERER)); + + return QJsonObject { + { "version", glVersion }, + { "slVersion", glslVersion }, + { "vendor", glVendor }, + { "renderer", glRenderer }, + }; +} diff --git a/libraries/gl/src/gl/GLHelpers.h b/libraries/gl/src/gl/GLHelpers.h index 335272d991..b88284c24a 100644 --- a/libraries/gl/src/gl/GLHelpers.h +++ b/libraries/gl/src/gl/GLHelpers.h @@ -10,6 +10,8 @@ #ifndef hifi_GLHelpers_h #define hifi_GLHelpers_h +#include + // 16 bits of depth precision #define DEFAULT_GL_DEPTH_BUFFER_BITS 16 // 8 bits of stencil buffer (typically you really only need 1 bit for functionality @@ -21,4 +23,6 @@ class QGLFormat; const QSurfaceFormat& getDefaultOpenGLSurfaceFormat(); const QGLFormat& getDefaultGLFormat(); +QJsonObject getGLContextData(); + #endif diff --git a/libraries/gl/src/gl/OpenGLVersionChecker.cpp b/libraries/gl/src/gl/OpenGLVersionChecker.cpp index 05dfc05457..843385f720 100644 --- a/libraries/gl/src/gl/OpenGLVersionChecker.cpp +++ b/libraries/gl/src/gl/OpenGLVersionChecker.cpp @@ -17,6 +17,7 @@ #include "Config.h" #include "GLWidget.h" +#include "GLHelpers.h" OpenGLVersionChecker::OpenGLVersionChecker(int& argc, char** argv) : QApplication(argc, argv) @@ -44,10 +45,7 @@ QJsonObject OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { // Retrieve OpenGL version glWidget->initializeGL(); - QString glVersion = QString((const char*)glGetString(GL_VERSION)); - QString glslVersion = QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION)); - QString glVendor = QString((const char*) glGetString(GL_VENDOR)); - QString glRenderer = QString((const char*)glGetString(GL_RENDERER)); + QJsonObject glData = getGLContextData(); delete glWidget; // Compare against minimum @@ -55,6 +53,8 @@ QJsonObject OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { // - major_number.minor_number // - major_number.minor_number.release_number // Reference: https://www.opengl.org/sdk/docs/man/docbook4/xhtml/glGetString.xml + const QString version { "version" }; + QString glVersion = glData[version].toString(); QStringList versionParts = glVersion.split(QRegularExpression("[\\.\\s]")); int majorNumber = versionParts[0].toInt(); int minorNumber = versionParts[1].toInt(); @@ -76,10 +76,5 @@ QJsonObject OpenGLVersionChecker::checkVersion(bool& valid, bool& override) { override = messageBox.exec() == QMessageBox::Ignore; } - return QJsonObject{ - { "version", glVersion }, - { "slVersion", glslVersion }, - { "vendor", glVendor }, - { "renderer", glRenderer }, - }; + return glData; } From ab72d8d8fb4a3744d59a4aa6a3e22d58171c364d Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 11 Apr 2016 13:28:33 -0700 Subject: [PATCH 5/6] Init QML GL from share context --- interface/src/Application.cpp | 5 ----- interface/src/Application.h | 5 ----- interface/src/main.cpp | 4 +--- libraries/gl/src/gl/OffscreenQmlSurface.cpp | 6 ++++++ libraries/ui/src/OffscreenUi.cpp | 2 ++ 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0c2cd49ef5..ce7408368d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -199,8 +199,6 @@ static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStanda static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation).append("/script.js"); #endif -QJsonObject Application::_glData {}; - Setting::Handle maxOctreePacketsPerSecond("maxOctreePPS", DEFAULT_MAX_OCTREE_PPS); const QHash Application::_acceptedExtensions { @@ -1322,9 +1320,6 @@ void Application::initializeUi() { auto rootContext = offscreenUi->getRootContext(); - // First set the GL property, so the desktop can use it for graphics workarounds - rootContext->setContextProperty("GL", _glData); - offscreenUi->setProxyWindow(_window->windowHandle()); offscreenUi->setBaseUrl(QUrl::fromLocalFile(PathUtils::resourcesPath() + "/qml/")); // OffscreenUi is a subclass of OffscreenQmlSurface specifically designed to diff --git a/interface/src/Application.h b/interface/src/Application.h index 4f1badf0be..116d2b2137 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -96,9 +96,6 @@ public: static void initPlugins(); static void shutdownPlugins(); - // Expose the gl metadata to QML - static void setGL(const QJsonObject& glData) { _glData = glData; } - Application(int& argc, char** argv, QElapsedTimer& startup_time); ~Application(); @@ -382,8 +379,6 @@ private: void maybeToggleMenuVisible(QMouseEvent* event) const; - static QJsonObject _glData; - MainWindow* _window; QElapsedTimer& _sessionRunTimer; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 4fce190c2c..f41046f7c2 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -140,13 +140,11 @@ int main(int argc, const char* argv[]) { // or in the main window ctor, before GL startup. Application::initPlugins(); - // GL must be available to the root QML context on startup. - Application::setGL(glData); - int exitCode; { QSettings::setDefaultFormat(QSettings::IniFormat); Application app(argc, const_cast(argv), startupTime); + // If we failed the OpenGLVersion check, log it. if (override) { auto& accountManager = AccountManager::getInstance(); diff --git a/libraries/gl/src/gl/OffscreenQmlSurface.cpp b/libraries/gl/src/gl/OffscreenQmlSurface.cpp index 1d7824f789..6645910699 100644 --- a/libraries/gl/src/gl/OffscreenQmlSurface.cpp +++ b/libraries/gl/src/gl/OffscreenQmlSurface.cpp @@ -27,6 +27,7 @@ #include "OffscreenGLCanvas.h" #include "GLEscrow.h" +#include "GLHelpers.h" // Time between receiving a request to render the offscreen UI actually triggering @@ -222,6 +223,11 @@ void OffscreenQmlRenderThread::init() { return; } + // Expose GL data to QML + auto glData = getGLContextData(); + auto setGL = [=]{ _surface->getRootContext()->setContextProperty("GL", glData); }; + _surface->executeOnUiThread(setGL); + _renderControl->initialize(_canvas.getContext()); setupFbo(); _escrow.setRecycler([this](GLuint texture){ diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 269cf86e2d..68732b96bf 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -15,6 +15,8 @@ #include #include +#include + #include #include From 1df2fc78090bf614421fe89ee0fe0c52b066ab03 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 11 Apr 2016 13:59:08 -0700 Subject: [PATCH 6/6] Disable qml gradient for AMD for ContentSection --- interface/resources/qml/controls-uit/ContentSection.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/controls-uit/ContentSection.qml b/interface/resources/qml/controls-uit/ContentSection.qml index 427146aabe..86549afc9f 100644 --- a/interface/resources/qml/controls-uit/ContentSection.qml +++ b/interface/resources/qml/controls-uit/ContentSection.qml @@ -116,7 +116,7 @@ Column { LinearGradient { id: bottomBar - visible: isCollapsible + visible: desktop.gradientsSupported && isCollapsible width: frame.width height: visible ? 4 : 0 x: -hifi.dimensions.contentMargin.x