From 597ae648b37e748af52fb733e7a9cff4d4e8e012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= <tomi.korpipaa@digia.com> Date: Thu, 6 Nov 2014 07:43:33 +0200 Subject: [PATCH] Fixed crash with Qt 5.4 software renderer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Id56053764835e13bf475d76230ea4a6c356161ca Reviewed-by: Pasi Keränen <pasi.keranen@digia.com> --- src/canvas3d.cpp | 8 ++++++-- src/canvas3d_p.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/canvas3d.cpp b/src/canvas3d.cpp index 5b503c5..dad073e 100644 --- a/src/canvas3d.cpp +++ b/src/canvas3d.cpp @@ -95,8 +95,8 @@ Canvas::Canvas(QQuickItem *parent): #else m_maxSamples(4), #endif - m_samples(0), m_devicePixelRatio(1.0f), + m_isSoftwareRendered(false), m_isContextAttribsSet(false), m_antialiasFbo(0), m_renderFbo(0), @@ -111,6 +111,10 @@ Canvas::Canvas(QQuickItem *parent): m_runningInDesigner = QGuiApplication::applicationDisplayName() == "Qml2Puppet"; setFlag(ItemHasContents, !m_runningInDesigner); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) + if (QCoreApplication::testAttribute(Qt::AA_UseSoftwareOpenGL)) + m_isSoftwareRendered = true; +#endif } /*! @@ -323,7 +327,7 @@ CanvasContext *Canvas::getContext(const QString &type, const QVariantMap &option surfaceFormat.setSwapBehavior(QSurfaceFormat::SingleBuffer); surfaceFormat.setSwapInterval(0); - if (m_contextAttribs.antialias()) + if (m_contextAttribs.antialias() && !m_isSoftwareRendered) surfaceFormat.setSamples(m_maxSamples); else surfaceFormat.setSamples(0); diff --git a/src/canvas3d_p.h b/src/canvas3d_p.h index 82f00ae..fec9f80 100644 --- a/src/canvas3d_p.h +++ b/src/canvas3d_p.h @@ -125,9 +125,9 @@ private: QQuickWindow *m_contextWindow; int m_maxSamples; - int m_samples; float m_devicePixelRatio; + bool m_isSoftwareRendered; bool m_runningInDesigner; CanvasContextAttributes m_contextAttribs; bool m_isContextAttribsSet; -- GitLab