Browse Source

offscreen: Don't fail to create a window because of driver_loaded politics.

Fixes #4922.
Ryan C. Gordon 3 years ago
parent
commit
23b7bdef87
2 changed files with 7 additions and 1 deletions
  1. 1 1
      src/video/SDL_egl.c
  2. 6 0
      src/video/offscreen/SDL_offscreenopengl.c

+ 1 - 1
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.");
     }
 

+ 6 - 0
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;
     }