From 2020b032e83d1b61736a80a6815635aa7451deed Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Date: Thu, 6 Nov 2014 16:24:57 +0100
Subject: [PATCH] Check whether current context can be obtained when deleting
 textures.

Add a warning in that case.

Task-number: QTBUG-41966
Change-Id: I491ee9e13c9504040ab789951656983a736d9203
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
---
 src/plugins/wmf/evrd3dpresentengine.cpp          | 8 ++++++--
 src/qtmultimediaquicktools/qsgvideonode_i420.cpp | 8 ++++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/plugins/wmf/evrd3dpresentengine.cpp b/src/plugins/wmf/evrd3dpresentengine.cpp
index 42d0dea4e..9a508520e 100644
--- a/src/plugins/wmf/evrd3dpresentengine.cpp
+++ b/src/plugins/wmf/evrd3dpresentengine.cpp
@@ -184,8 +184,12 @@ D3DPresentEngine::~D3DPresentEngine()
         m_egl->destroySurface(m_eglDisplay, m_eglSurface);
         m_eglSurface = NULL;
     }
-    if (m_glTexture)
-        QOpenGLContext::currentContext()->functions()->glDeleteTextures(1, &m_glTexture);
+    if (m_glTexture) {
+        if (QOpenGLContext *current = QOpenGLContext::currentContext())
+            current->functions()->glDeleteTextures(1, &m_glTexture);
+        else
+            qWarning() << "D3DPresentEngine: Cannot obtain GL context, unable to delete textures";
+    }
 
     delete m_glContext;
     delete m_offscreenSurface;
diff --git a/src/qtmultimediaquicktools/qsgvideonode_i420.cpp b/src/qtmultimediaquicktools/qsgvideonode_i420.cpp
index 5b8b7ce8a..17b4924d0 100644
--- a/src/qtmultimediaquicktools/qsgvideonode_i420.cpp
+++ b/src/qtmultimediaquicktools/qsgvideonode_i420.cpp
@@ -227,8 +227,12 @@ QSGVideoMaterial_YUV420::QSGVideoMaterial_YUV420(const QVideoSurfaceFormat &form
 
 QSGVideoMaterial_YUV420::~QSGVideoMaterial_YUV420()
 {
-    if (!m_textureSize.isEmpty())
-        QOpenGLContext::currentContext()->functions()->glDeleteTextures(Num_Texture_IDs, m_textureIds);
+    if (!m_textureSize.isEmpty()) {
+        if (QOpenGLContext *current = QOpenGLContext::currentContext())
+            current->functions()->glDeleteTextures(Num_Texture_IDs, m_textureIds);
+        else
+            qWarning() << "QSGVideoMaterial_YUV420: Cannot obtain GL context, unable to delete textures";
+    }
 }
 
 void QSGVideoMaterial_YUV420::bind()
-- 
GitLab