From 42ced309d330e2fa61e7dea58588640003ca6318 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 15 May 2020 20:22:11 -0700 Subject: [PATCH] Restore the original GL attributes after EGLRenderer is destroyed --- app/streaming/video/ffmpeg-renderers/eglvid.cpp | 11 +++++++++++ app/streaming/video/ffmpeg-renderers/eglvid.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/app/streaming/video/ffmpeg-renderers/eglvid.cpp b/app/streaming/video/ffmpeg-renderers/eglvid.cpp index d7a71400..4086d069 100644 --- a/app/streaming/video/ffmpeg-renderers/eglvid.cpp +++ b/app/streaming/video/ffmpeg-renderers/eglvid.cpp @@ -66,6 +66,11 @@ EGLRenderer::EGLRenderer(IFFmpegRenderer *backendRenderer) { SDL_assert(backendRenderer); SDL_assert(backendRenderer->canExportEGL()); + + // Save these global parameters so we can restore them in our destructor + SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &m_OldContextProfileMask); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &m_OldContextMajorVersion); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &m_OldContextMinorVersion); } EGLRenderer::~EGLRenderer() @@ -85,6 +90,12 @@ EGLRenderer::~EGLRenderer() } SDL_GL_DeleteContext(m_Context); } + + // Reset the global properties back to what they were before + SDL_SetHint(SDL_HINT_OPENGL_ES_DRIVER, "0"); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, m_OldContextProfileMask); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, m_OldContextMajorVersion); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, m_OldContextMinorVersion); } bool EGLRenderer::prepareDecoderContext(AVCodecContext*, AVDictionary**) diff --git a/app/streaming/video/ffmpeg-renderers/eglvid.h b/app/streaming/video/ffmpeg-renderers/eglvid.h index f0f8a9f7..73a40618 100644 --- a/app/streaming/video/ffmpeg-renderers/eglvid.h +++ b/app/streaming/video/ffmpeg-renderers/eglvid.h @@ -37,5 +37,9 @@ private: PFNGLBINDVERTEXARRAYOESPROC m_glBindVertexArrayOES; PFNGLDELETEVERTEXARRAYSOESPROC m_glDeleteVertexArraysOES; + int m_OldContextProfileMask; + int m_OldContextMajorVersion; + int m_OldContextMinorVersion; + SDL_Renderer *m_DummyRenderer; };