aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch')
-rw-r--r--recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch157
1 files changed, 157 insertions, 0 deletions
diff --git a/recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch b/recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch
new file mode 100644
index 00000000..bebb3d95
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch
@@ -0,0 +1,157 @@
+From a34538ff13c520fa85df689255469a316f037d0d Mon Sep 17 00:00:00 2001
+From: Jani Hautakangas <jani.hautakangas@ixonos.com>
+Date: Thu, 16 May 2013 09:52:07 +0300
+Subject: [PATCH 09/12] QOpenGLPaintDevice sub-area support
+
+Allows creating QOpenGLPaintDevice targetting sub-area
+of binded framebuffer.
+
+Upstream-Status: Pending
+
+Change-Id: Ida2f079aa1ac0b87d36b54129e226399dbcdda80
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/gui/opengl/qopenglpaintdevice.cpp | 11 +++++++++++
+ src/gui/opengl/qopenglpaintdevice.h | 2 ++
+ src/gui/opengl/qopenglpaintdevice_p.h | 1 +
+ src/gui/opengl/qopenglpaintengine.cpp | 9 +++++++--
+ src/gui/opengl/qopenglpaintengine_p.h | 1 +
+ src/gui/opengl/qopengltextureglyphcache.cpp | 2 +-
+ 6 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp
+index a08d26f..cff3155 100644
+--- a/src/gui/opengl/qopenglpaintdevice.cpp
++++ b/src/gui/opengl/qopenglpaintdevice.cpp
+@@ -135,6 +135,12 @@ QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)
+ {
+ }
+
++QOpenGLPaintDevice::QOpenGLPaintDevice(int x, int y, int width, int height)
++ : d_ptr(new QOpenGLPaintDevicePrivate(QSize(width, height)))
++{
++ d_ptr->offset = QPoint(x,y);
++}
++
+ /*!
+ \internal
+ */
+@@ -212,6 +218,11 @@ QOpenGLContext *QOpenGLPaintDevice::context() const
+ return d_ptr->ctx;
+ }
+
++QPoint QOpenGLPaintDevice::offset() const
++{
++ return d_ptr->offset;
++}
++
+ /*!
+ Returns the pixel size of the paint device.
+
+diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h
+index 10cee84..a6683c5 100644
+--- a/src/gui/opengl/qopenglpaintdevice.h
++++ b/src/gui/opengl/qopenglpaintdevice.h
+@@ -53,12 +53,14 @@ public:
+ QOpenGLPaintDevice();
+ explicit QOpenGLPaintDevice(const QSize &size);
+ QOpenGLPaintDevice(int width, int height);
++ QOpenGLPaintDevice(int x, int y, int width, int height);
+ virtual ~QOpenGLPaintDevice();
+
+ int devType() const { return QInternal::OpenGL; }
+ QPaintEngine *paintEngine() const;
+
+ QOpenGLContext *context() const;
++ QPoint offset() const;
+ QSize size() const;
+ void setSize(const QSize &size);
+ void setDevicePixelRatio(qreal devicePixelRatio);
+diff --git a/src/gui/opengl/qopenglpaintdevice_p.h b/src/gui/opengl/qopenglpaintdevice_p.h
+index 0b01129..211f2f3 100644
+--- a/src/gui/opengl/qopenglpaintdevice_p.h
++++ b/src/gui/opengl/qopenglpaintdevice_p.h
+@@ -65,6 +65,7 @@ public:
+
+ public:
+ QSize size;
++ QPoint offset;
+ QOpenGLContext *ctx;
+
+ qreal dpmx;
+diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp
+index 8eeaa31..e17520e 100644
+--- a/src/gui/opengl/qopenglpaintengine.cpp
++++ b/src/gui/opengl/qopenglpaintengine.cpp
+@@ -2080,7 +2080,10 @@ bool QOpenGL2PaintEngineEx::begin(QPaintDevice *pdev)
+ for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i)
+ d->vertexAttributeArraysEnabledState[i] = false;
+
++ const QPoint offset = d->device->offset();
+ const QSize sz = d->device->size();
++ d->x = offset.x();
++ d->y = offset.y();
+ d->width = sz.width();
+ d->height = sz.height();
+ d->mode = BrushDrawingMode;
+@@ -2167,7 +2170,7 @@ void QOpenGL2PaintEngineEx::ensureActive()
+ d->device->ensureActiveTarget();
+
+ d->transferMode(BrushDrawingMode);
+- d->funcs.glViewport(0, 0, d->width, d->height);
++ d->funcs.glViewport(d->x, d->y, d->width, d->height);
+ d->needsSync = false;
+ d->shaderManager->setDirty();
+ d->syncGlState();
+@@ -2209,6 +2212,7 @@ void QOpenGL2PaintEngineExPrivate::updateClipScissorTest()
+ if (bounds == QRect(0, 0, width, height)) {
+ funcs.glDisable(GL_SCISSOR_TEST);
+ } else {
++ bounds = QRect(bounds.x(), bounds.y(), bounds.width(), bounds.height());
+ funcs.glEnable(GL_SCISSOR_TEST);
+ setScissor(bounds);
+ }
+@@ -2217,12 +2221,13 @@ void QOpenGL2PaintEngineExPrivate::updateClipScissorTest()
+
+ void QOpenGL2PaintEngineExPrivate::setScissor(const QRect &rect)
+ {
+- const int left = rect.left();
++ const int left = rect.left() + x;
+ const int width = rect.width();
+ int bottom = height - (rect.top() + rect.height());
+ if (device->paintFlipped()) {
+ bottom = rect.top();
+ }
++ bottom += y;
+ const int height = rect.height();
+
+ funcs.glScissor(left, bottom, width, height);
+diff --git a/src/gui/opengl/qopenglpaintengine_p.h b/src/gui/opengl/qopenglpaintengine_p.h
+index 9722ea3..07e3163 100644
+--- a/src/gui/opengl/qopenglpaintengine_p.h
++++ b/src/gui/opengl/qopenglpaintengine_p.h
+@@ -264,6 +264,7 @@ public:
+ QOpenGL2PaintEngineEx* q;
+ QOpenGLEngineShaderManager* shaderManager;
+ QOpenGLPaintDevice* device;
++ int x, y;
+ int width, height;
+ QOpenGLContext *ctx;
+ EngineMode mode;
+diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp
+index cd268cd..997bc35 100644
+--- a/src/gui/opengl/qopengltextureglyphcache.cpp
++++ b/src/gui/opengl/qopengltextureglyphcache.cpp
+@@ -310,7 +310,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
+ funcs->glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)oldFbo);
+
+ if (pex != 0) {
+- funcs->glViewport(0, 0, pex->width, pex->height);
++ funcs->glViewport(pex->x, pex->y, pex->width, pex->height);
+ pex->updateClipScissorTest();
+ } else {
+ if (m_vao.isCreated()) {
+--
+2.3.5
+