diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-02-27 11:23:17 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-02-28 11:05:25 +0200 |
commit | 86b4e19ee160ee3e84210595db5e6af08a8b9e46 (patch) | |
tree | e1f7f1d8dbaa7cc520f7efc8b45868d29aa6c71f /src/datavisualizationqml2/abstractdeclarative_p.h | |
parent | 34a7223467a45e33c1b344f1e1880bc818b66b27 (diff) |
Introduce state storing for mac and android.
At least some mac and android environments do not handle
shared contexts properly, leading to slowdowns and/or artifacts.
Disable context sharing on mac and android, and instead
store and restore relevant opengl state.
Also improve renderer and context cleanup
Change-Id: I8fa596b95f6ff20d53c950a34b5c28513acbc18f
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualizationqml2/abstractdeclarative_p.h')
-rw-r--r-- | src/datavisualizationqml2/abstractdeclarative_p.h | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/datavisualizationqml2/abstractdeclarative_p.h b/src/datavisualizationqml2/abstractdeclarative_p.h index d44a154d..ac8bf9be 100644 --- a/src/datavisualizationqml2/abstractdeclarative_p.h +++ b/src/datavisualizationqml2/abstractdeclarative_p.h @@ -29,15 +29,24 @@ #ifndef ABSTRACTDECLARATIVE_P_H #define ABSTRACTDECLARATIVE_P_H +#if !defined(Q_OS_MAC) && !defined(Q_OS_ANDROID) +#define USE_SHARED_CONTEXT +#endif + #include "datavisualizationglobal_p.h" #include "abstract3dcontroller_p.h" #include "qabstract3dinputhandler.h" #include "declarativescene_p.h" +#ifndef USE_SHARED_CONTEXT +#include "glstatestore_p.h" +#endif + #include <QtCore/QAbstractItemModel> #include <QtQuick/QQuickItem> #include <QtQuick/QQuickWindow> #include <QtCore/QPointer> +#include <QtCore/QThread> QT_BEGIN_NAMESPACE_DATAVISUALIZATION @@ -158,13 +167,19 @@ signals: private: QPointer<Abstract3DController> m_controller; QRectF m_cachedGeometry; - QOpenGLContext *m_context; - QOpenGLContext *m_qtContext; - QQuickWindow *m_contextWindow; + QPointer<QQuickWindow> m_contextWindow; AbstractDeclarative::RenderingMode m_renderMode; int m_samples; int m_windowSamples; QSize m_initialisedSize; +#ifdef USE_SHARED_CONTEXT + QOpenGLContext *m_context; +#else + GLStateStore *m_stateStore; +#endif + QPointer<QOpenGLContext> m_qtContext; + QThread *m_mainThread; + QThread *m_contextThread; }; Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractDeclarative::SelectionFlags) |