summaryrefslogtreecommitdiffstats
path: root/src/datavisualizationqml2/abstractdeclarative_p.h
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-27 11:23:17 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-28 11:05:25 +0200
commit86b4e19ee160ee3e84210595db5e6af08a8b9e46 (patch)
treee1f7f1d8dbaa7cc520f7efc8b45868d29aa6c71f /src/datavisualizationqml2/abstractdeclarative_p.h
parent34a7223467a45e33c1b344f1e1880bc818b66b27 (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.h21
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)