summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@nokia.com>2012-07-10 19:13:19 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-11 14:52:17 +0200
commit62e6608f6932c6d871d17b0ccce0c7b388866458 (patch)
treebcfcb8a120d3abd295ad9a894fb6b7fab27b28e1
parent376135c403bc44ab2d7966a85e227aa1534fb996 (diff)
Add protected virtual ensureActiveTarget() to QOpenGLPaintDevice
Make sure that QOpenGLPaintDevice supports it the same way as QGLPaintDevice::ensureActiveTarget dit. It is made virtual since the external code needs to manage FBOs for QOpenGLPaintEngine. Task-number: QTBUG-25995 Change-Id: Ieed9616f6a14204aae628d7febe6a11538496b3d Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
-rw-r--r--src/gui/opengl/qopenglpaintdevice.cpp11
-rw-r--r--src/gui/opengl/qopenglpaintdevice.h2
-rw-r--r--src/gui/opengl/qopenglpaintengine.cpp2
3 files changed, 15 insertions, 0 deletions
diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp
index 60f5e3192a..e070ee6c58 100644
--- a/src/gui/opengl/qopenglpaintdevice.cpp
+++ b/src/gui/opengl/qopenglpaintdevice.cpp
@@ -244,4 +244,15 @@ bool QOpenGLPaintDevice::paintFlipped() const
return d_ptr->flipped;
}
+/*!
+ This virtual method is provided as a callback to allow re-binding a
+ target frame buffer object when different QOpenGLPaintDevice instances
+ are issuing draw calls alternately on the same OpenGL context.
+
+ QPainter::beginNativePainting will also trigger this method.
+*/
+void QOpenGLPaintDevice::ensureActiveTarget()
+{
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h
index a07d11062f..44acbab031 100644
--- a/src/gui/opengl/qopenglpaintdevice.h
+++ b/src/gui/opengl/qopenglpaintdevice.h
@@ -80,6 +80,8 @@ public:
void setPaintFlipped(bool flipped);
bool paintFlipped() const;
+ virtual void ensureActiveTarget();
+
protected:
int metric(QPaintDevice::PaintDeviceMetric metric) const;
diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp
index 2f84a0f295..bbe5854031 100644
--- a/src/gui/opengl/qopenglpaintengine.cpp
+++ b/src/gui/opengl/qopenglpaintengine.cpp
@@ -2013,6 +2013,8 @@ void QOpenGL2PaintEngineEx::ensureActive()
}
if (d->needsSync) {
+ d->device->ensureActiveTarget();
+
d->transferMode(BrushDrawingMode);
glViewport(0, 0, d->width, d->height);
d->needsSync = false;