aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@nokia.com>2011-09-08 12:37:36 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-09-08 13:26:51 +0200
commitd970bcfa0498ad5277d9fcfe92059c3647e82d97 (patch)
tree7b5a55a31ae2260f404c756e323bb6001a16abc8 /src
parent5b0536d64b83eac53c4cf479152f3d72d545beaa (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.cpp23
-rw-r--r--src/declarative/scenegraph/util/qsgpainternode_p.h2
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;