diff options
author | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-09-08 12:37:36 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-09-08 13:26:51 +0200 |
commit | d970bcfa0498ad5277d9fcfe92059c3647e82d97 (patch) | |
tree | 7b5a55a31ae2260f404c756e323bb6001a16abc8 /src | |
parent | 5b0536d64b83eac53c4cf479152f3d72d545beaa (diff) |
compile again
Change-Id: If041994fdadcd24f9b002bbcf76ce50f3b56ce87
Reviewed-on: http://codereview.qt-project.org/4431
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/scenegraph/util/qsgpainternode.cpp | 23 | ||||
-rw-r--r-- | 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 9a02d8bedd..90d66c094e 100644 --- a/src/declarative/scenegraph/util/qsgpainternode.cpp +++ b/src/declarative/scenegraph/util/qsgpainternode.cpp @@ -45,6 +45,7 @@ #include <private/qsgcontext_p.h> #include <qopenglframebufferobject.h> #include <qopenglfunctions.h> +#include <qopenglpaintdevice.h> #include <qmath.h> #include <qpainter.h> @@ -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 c14e7701fb..435e86e0d2 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; |