diff options
author | Marco Bubke <marco.bubke@digia.com> | 2012-10-15 12:31:40 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-15 14:28:48 +0200 |
commit | f36c55cd4724a8023ff34036b74c96982714f63a (patch) | |
tree | 383326e81e1b3495af6213e910f6af4612bfef47 /src/quick/items/qquickwindowmanager.cpp | |
parent | 21d4bd1c63053ec3f3e1f6733553de0d8c46e544 (diff) |
Adding DesignerWindowManager for Qt Quick Designer
DesignerWindowManager implements a render path just for
Qt Quick Designer, which is single threaded and does not
open visible windows.
Change-Id: I02b0d1b819a7a5391b9bb14ee6efa1a32e0c8ad7
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src/quick/items/qquickwindowmanager.cpp')
-rw-r--r-- | src/quick/items/qquickwindowmanager.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/quick/items/qquickwindowmanager.cpp b/src/quick/items/qquickwindowmanager.cpp index 6596343bc8..dd27182ffe 100644 --- a/src/quick/items/qquickwindowmanager.cpp +++ b/src/quick/items/qquickwindowmanager.cpp @@ -74,6 +74,8 @@ extern Q_GUI_EXPORT QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_ DEFINE_BOOL_CONFIG_OPTION(qmlNoThreadedRenderer, QML_BAD_GUI_RENDER_LOOP); DEFINE_BOOL_CONFIG_OPTION(qmlForceThreadedRenderer, QML_FORCE_THREADED_RENDERER); // Might trigger graphics driver threading bugs, use at own risk +QQuickWindowManager *QQuickWindowManager::s_instance = 0; + QQuickWindowManager::~QQuickWindowManager() { } @@ -124,11 +126,9 @@ public: QQuickWindowManager *QQuickWindowManager::instance() { - static QQuickWindowManager *theInstance; - - if (!theInstance) { + if (!s_instance) { - theInstance = QSGContext::createWindowManager(); + s_instance = QSGContext::createWindowManager(); bool bufferQueuing = QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::BufferQueueingOpenGL); bool fancy = bufferQueuing @@ -148,13 +148,19 @@ QQuickWindowManager *QQuickWindowManager::instance() if (fixedAnimationSteps) QUnifiedTimer::instance(true)->setConsistentTiming(true); - if (!theInstance) { - theInstance = fancy + if (!s_instance) { + s_instance = fancy ? (QQuickWindowManager*) new QQuickRenderThreadSingleContextWindowManager : (QQuickWindowManager*) new QQuickTrivialWindowManager; } } - return theInstance; + return s_instance; +} + +void QQuickWindowManager::setInstance(QQuickWindowManager *instance) +{ + Q_ASSERT(!s_instance); + s_instance = instance; } QQuickTrivialWindowManager::QQuickTrivialWindowManager() |