offscreen: Don't fail to create a window because of driver_loaded politics. Fixes #4922.
diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c
index 928a1df..f9cdcda 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 45a09e2..28d4b5f 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;
}