From f1da3ec584e5956c8090ac9a958447e4f5e78da2 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Mon, 30 Mar 2020 14:52:46 -0600 Subject: [PATCH] Frontend: Don't call DoneCurrent if the context isnt already current --- src/yuzu/bootmanager.cpp | 5 ++++- src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 4e9ced8ba..eaded2640 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -141,7 +141,7 @@ public: } ~OpenGLSharedContext() { - context->doneCurrent(); + DoneCurrent(); } void SwapBuffers() override { @@ -156,6 +156,9 @@ public: } void DoneCurrent() override { + if (!is_current) { + return; + } context->doneCurrent(); is_current = false; } diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp index ee61179a0..3522dcf6d 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp @@ -37,16 +37,24 @@ public: } void MakeCurrent() override { - SDL_GL_MakeCurrent(window, context); + if (is_current) { + return; + } + is_current = SDL_GL_MakeCurrent(window, context) == 0; } void DoneCurrent() override { + if (!is_current) { + return; + } SDL_GL_MakeCurrent(window, nullptr); + is_current = false; } private: SDL_Window* window; SDL_GLContext context; + bool is_current = false; }; bool EmuWindow_SDL2_GL::SupportsRequiredGLExtensions() {