From 86b4e19ee160ee3e84210595db5e6af08a8b9e46 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 27 Feb 2014 11:23:17 +0200 Subject: Introduce state storing for mac and android. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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ää --- src/datavisualizationqml2/abstractdeclarative_p.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/datavisualizationqml2/abstractdeclarative_p.h') 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 #include #include #include +#include QT_BEGIN_NAMESPACE_DATAVISUALIZATION @@ -158,13 +167,19 @@ signals: private: QPointer m_controller; QRectF m_cachedGeometry; - QOpenGLContext *m_context; - QOpenGLContext *m_qtContext; - QQuickWindow *m_contextWindow; + QPointer 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 m_qtContext; + QThread *m_mainThread; + QThread *m_contextThread; }; Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractDeclarative::SelectionFlags) -- cgit v1.2.3