aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-qt/qt5/qtbase-5.0.2/0019-Fix-FBO-restoring-in-QOpenGLTextureGlyphCache.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-qt/qt5/qtbase-5.0.2/0019-Fix-FBO-restoring-in-QOpenGLTextureGlyphCache.patch')
-rw-r--r--recipes-qt/qt5/qtbase-5.0.2/0019-Fix-FBO-restoring-in-QOpenGLTextureGlyphCache.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/recipes-qt/qt5/qtbase-5.0.2/0019-Fix-FBO-restoring-in-QOpenGLTextureGlyphCache.patch b/recipes-qt/qt5/qtbase-5.0.2/0019-Fix-FBO-restoring-in-QOpenGLTextureGlyphCache.patch
new file mode 100644
index 00000000..96b0a71a
--- /dev/null
+++ b/recipes-qt/qt5/qtbase-5.0.2/0019-Fix-FBO-restoring-in-QOpenGLTextureGlyphCache.patch
@@ -0,0 +1,48 @@
+From dd2a427857612798071d3f8c23286322654669d6 Mon Sep 17 00:00:00 2001
+From: Valery Volgutov <valery.volgutov@lge.com>
+Date: Tue, 21 May 2013 12:02:19 -0700
+Subject: [PATCH] Fix FBO restoring in QOpenGLTextureGlyphCache
+
+QOpenGLTextureGlyphCache::restoreTextureData restores FBO which
+was binded before restoreTextureData call. More specifically,
+it restores QOpenGLContextPrivate's current_fbo member. This works
+if FBO was binded by QOpenGLFramebufferObject but not if FBO was
+binded using glBindFramebufferObject and rendering done via
+QOpenGLPaintDevice.
+
+This patch fixes it by querying current FBO using
+GL_FRAMEBUFFER_BINDING query and restoring it.
+
+Upstream-Status: Backport
+https://codereview.qt-project.org/#change,56608
+
+---
+ src/gui/opengl/qopengltextureglyphcache.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp
+index 4e20f6a..3e66bad 100644
+--- a/src/gui/opengl/qopengltextureglyphcache.cpp
++++ b/src/gui/opengl/qopengltextureglyphcache.cpp
+@@ -147,6 +147,9 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
+ return;
+ }
+
++ GLuint saveFbo;
++ glGetIntegerv(GL_FRAMEBUFFER_BINDING, &saveFbo);
++
+ int oldWidth = m_textureResource->m_width;
+ int oldHeight = m_textureResource->m_height;
+
+@@ -265,7 +268,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
+ glDeleteTextures(1, &tmp_texture);
+ glDeleteTextures(1, &oldTexture);
+
+- funcs.glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_func()->current_fbo);
++ funcs.glBindFramebuffer(GL_FRAMEBUFFER, saveFbo);
+
+ if (pex != 0) {
+ glViewport(0, 0, pex->width, pex->height);
+--
+1.7.9.5
+