summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-11-27 08:35:45 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-11-27 08:35:45 +0100
commit8c57e8c012d1045f2bdb30d376625a32c33fdfc4 (patch)
tree33cdd83e82fd59aa4b750f3e2dda3c445cd37abf /src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp
parentb13801fd550d4eef2e45ac3e11304571e0146dd9 (diff)
parentc83eefff976a5f2cd673f6b4a95922b13855dd29 (diff)
Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts: src/network/socket/qnativesocketengine_p.h src/network/ssl/qsslsocket_mac.cpp src/network/ssl/qsslsocket_mac_p.h src/widgets/kernel/qwidget.cpp Change-Id: I39592cb37d710dfaf8640769ba3c1b637927d7f4
Diffstat (limited to 'src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp')
-rw-r--r--src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp b/src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp
index bb3ea6981a..6f71fb637f 100644
--- a/src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp
+++ b/src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp
@@ -71,6 +71,7 @@ QOpenGLCompositorBackingStore::QOpenGLCompositorBackingStore(QWindow *window)
: QPlatformBackingStore(window),
m_window(window),
m_bsTexture(0),
+ m_bsTextureContext(0),
m_textures(new QPlatformTextureList),
m_lockedWidgetTextures(0)
{
@@ -78,6 +79,14 @@ QOpenGLCompositorBackingStore::QOpenGLCompositorBackingStore(QWindow *window)
QOpenGLCompositorBackingStore::~QOpenGLCompositorBackingStore()
{
+ if (m_bsTexture) {
+ QOpenGLContext *ctx = QOpenGLContext::currentContext();
+ if (ctx && m_bsTextureContext && ctx->shareGroup() == m_bsTextureContext->shareGroup())
+ glDeleteTextures(1, &m_bsTexture);
+ else
+ qWarning("QOpenGLCompositorBackingStore: Texture is not valid in the current context");
+ }
+
delete m_textures;
}
@@ -89,6 +98,8 @@ QPaintDevice *QOpenGLCompositorBackingStore::paintDevice()
void QOpenGLCompositorBackingStore::updateTexture()
{
if (!m_bsTexture) {
+ m_bsTextureContext = QOpenGLContext::currentContext();
+ Q_ASSERT(m_bsTextureContext);
glGenTextures(1, &m_bsTexture);
glBindTexture(GL_TEXTURE_2D, m_bsTexture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);