summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-03-17 16:03:03 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-03-17 16:04:44 +0100
commitb2259e94e953bb982bd65439c90a25717c9ca562 (patch)
tree47e65a32bbab848b73f105929197c3bcf28f7031
parent9c63b5bda1707453477e253d48bcf637e96919a7 (diff)
parentf4ba2fb9840279f986bd11ab6860e6a3125d9599 (diff)
Merge remote-tracking branch 'origin/5.6.0' into 5.6
-rw-r--r--src/chartsqml2/declarativechart.cpp8
-rw-r--r--src/chartsqml2/declarativechartnode.cpp28
2 files changed, 19 insertions, 17 deletions
diff --git a/src/chartsqml2/declarativechart.cpp b/src/chartsqml2/declarativechart.cpp
index ab0a612b..abff6836 100644
--- a/src/chartsqml2/declarativechart.cpp
+++ b/src/chartsqml2/declarativechart.cpp
@@ -512,14 +512,16 @@ QSGNode *DeclarativeChart::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdateP
if (!node) {
node = new DeclarativeChartNode(window());
- connect(window(), &QQuickWindow::beforeRendering,
- node->glRenderNode(), &DeclarativeRenderNode::render);
+ if (node->glRenderNode()) {
+ connect(window(), &QQuickWindow::beforeRendering,
+ node->glRenderNode(), &DeclarativeRenderNode::render);
+ }
}
const QRectF &bRect = boundingRect();
// Update GL data
- if (m_glXYDataManager->dataMap().size() || m_glXYDataManager->mapDirty()) {
+ if (node->glRenderNode() && (m_glXYDataManager->dataMap().size() || m_glXYDataManager->mapDirty())) {
const QRectF &plotArea = m_chart->plotArea();
const QSizeF &chartAreaSize = m_chart->size();
diff --git a/src/chartsqml2/declarativechartnode.cpp b/src/chartsqml2/declarativechartnode.cpp
index 7b89c032..7d423b25 100644
--- a/src/chartsqml2/declarativechartnode.cpp
+++ b/src/chartsqml2/declarativechartnode.cpp
@@ -39,27 +39,27 @@ DeclarativeChartNode::DeclarativeChartNode(QQuickWindow *window) :
m_textureSize(1, 1),
m_glRenderNode(0)
{
- initializeOpenGLFunctions();
-
// Our texture node must have a texture, so use a default one pixel texture
- GLuint defaultTexture = 0;
- glGenTextures(1, &defaultTexture);
- glBindTexture(GL_TEXTURE_2D, defaultTexture);
- uchar buf[4] = { 0, 0, 0, 0 };
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &buf);
-
+ QImage dummyImage(QSize(1, 1), QImage::Format_ARGB32);
+ uchar *imageData = dummyImage.bits();
+ imageData[0] = 0;
+ imageData[1] = 0;
+ imageData[2] = 0;
+ imageData[3] = 0;
QQuickWindow::CreateTextureOptions defaultTextureOptions = QQuickWindow::CreateTextureOptions(
QQuickWindow::TextureHasAlphaChannel | QQuickWindow::TextureOwnsGLTexture);
- m_texture = m_window->createTextureFromId(defaultTexture, QSize(1, 1), defaultTextureOptions);
+ m_texture = m_window->createTextureFromImage(dummyImage, defaultTextureOptions);
setTexture(m_texture);
setFiltering(QSGTexture::Linear);
- // Create child node for rendering GL graphics
- m_glRenderNode = new DeclarativeRenderNode(m_window);
- m_glRenderNode->setFlag(OwnedByParent);
- appendChildNode(m_glRenderNode);
- m_glRenderNode->setRect(0, 0, 0, 0); // Hide child node by default
+ if (QOpenGLContext::currentContext()) {
+ // Create child node for rendering GL graphics
+ m_glRenderNode = new DeclarativeRenderNode(m_window);
+ m_glRenderNode->setFlag(OwnedByParent);
+ appendChildNode(m_glRenderNode);
+ m_glRenderNode->setRect(0, 0, 0, 0); // Hide child node by default
+ }
}
DeclarativeChartNode::~DeclarativeChartNode()