From d970bcfa0498ad5277d9fcfe92059c3647e82d97 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Thu, 8 Sep 2011 12:37:36 +0200 Subject: [PATCH] compile again MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: If041994fdadcd24f9b002bbcf76ce50f3b56ce87 Reviewed-on: http://codereview.qt-project.org/4431 Reviewed-by: Qt Sanity Bot Reviewed-by: Samuel Rødal --- src/declarative/scenegraph/util/qsgpainternode.cpp | 23 ++++++++++++++++--- src/declarative/scenegraph/util/qsgpainternode_p.h | 2 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/declarative/scenegraph/util/qsgpainternode.cpp b/src/declarative/scenegraph/util/qsgpainternode.cpp index 9a02d8b..90d66c0 100644 --- a/src/declarative/scenegraph/util/qsgpainternode.cpp +++ b/src/declarative/scenegraph/util/qsgpainternode.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include @@ -111,6 +112,7 @@ QSGPainterNode::QSGPainterNode(QSGPaintedItem *item) , m_multisampledFbo(0) , m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4) , m_texture(0) + , m_gl_device(0) , m_size(1, 1) , m_dirtyContents(false) , m_opaquePainting(false) @@ -135,6 +137,7 @@ QSGPainterNode::~QSGPainterNode() delete m_texture; delete m_fbo; delete m_multisampledFbo; + delete m_gl_device; } void QSGPainterNode::paint() @@ -144,10 +147,17 @@ void QSGPainterNode::paint() QPainter painter; if (m_actualRenderTarget == QSGPaintedItem::Image) painter.begin(&m_image); - else if (m_multisampledFbo) - painter.begin(m_multisampledFbo); - else - painter.begin(m_fbo); + else { + if (!m_gl_device) + m_gl_device = new QOpenGLPaintDevice(m_fboSize); + + if (m_multisampledFbo) + m_multisampledFbo->bind(); + else + m_fbo->bind(); + + painter.begin(m_gl_device); + } if (m_smoothPainting) { painter.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing @@ -178,6 +188,11 @@ void QSGPainterNode::paint() QOpenGLFramebufferObject::blitFramebuffer(m_fbo, dirtyRect, m_multisampledFbo, dirtyRect); } + if (m_multisampledFbo) + m_multisampledFbo->release(); + else if (m_fbo) + m_fbo->release(); + m_dirtyRect = QRect(); } diff --git a/src/declarative/scenegraph/util/qsgpainternode_p.h b/src/declarative/scenegraph/util/qsgpainternode_p.h index c14e770..435e86e 100644 --- a/src/declarative/scenegraph/util/qsgpainternode_p.h +++ b/src/declarative/scenegraph/util/qsgpainternode_p.h @@ -56,6 +56,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) class QOpenGLFramebufferObject; +class QOpenGLPaintDevice; class Q_DECLARATIVE_EXPORT QSGPainterTexture : public QSGPlainTexture { @@ -125,6 +126,7 @@ private: QSGTextureMaterial m_materialO; QSGGeometry m_geometry; QSGPainterTexture *m_texture; + QOpenGLPaintDevice *m_gl_device; QSize m_size; QSize m_fboSize; -- 1.7.2.5