diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 928a1df2f..f9cdcda0a 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -566,7 +566,7 @@ SDL_EGL_InitializeOffscreen(_THIS, int device) EGLint num_egl_devices = 0; const char *egl_device_hint; - if (_this->gl_config.driver_loaded != 1) { + if (_this->gl_config.driver_loaded <= 0) { return SDL_SetError("SDL_EGL_LoadLibraryOnly() has not been called or has failed."); } diff --git a/src/video/offscreen/SDL_offscreenopengl.c b/src/video/offscreen/SDL_offscreenopengl.c index 45a09e2bf..28d4b5f6b 100644 --- a/src/video/offscreen/SDL_offscreenopengl.c +++ b/src/video/offscreen/SDL_offscreenopengl.c @@ -66,7 +66,13 @@ OFFSCREEN_GL_LoadLibrary(_THIS, const char* path) return ret; } + /* driver_loaded gets incremented by SDL_GL_LoadLibrary when we return, + but SDL_EGL_InitializeOffscreen checks that we're loaded before then, + so temporarily bump it since we know that LoadLibraryOnly succeeded. */ + + _this->gl_config.driver_loaded++; ret = SDL_EGL_InitializeOffscreen(_this, 0); + _this->gl_config.driver_loaded--; if (ret != 0) { return ret; }