egl: SDL_EGL_LoadLibaryOnly() shouldn't set _this->gl_config.driver_loaded = 1 This is handled in in the higher-level SDL_GL_LoadLibrary(). All uses of SDL_EGL_LoadLibrary (which calls the Only version) are just target-specific wrappers for their own GL_LoadLibrary hook, with two exceptions which now handle driver_loaded correctly (although it's questionable if these init-if-no-one-did-it-correctly-already code blocks should exist at all, fwiw). Fixes Bugzilla #5190.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c
index 5893905..3358f47 100644
--- a/src/video/SDL_egl.c
+++ b/src/video/SDL_egl.c
@@ -438,8 +438,6 @@ SDL_EGL_LoadLibraryOnly(_THIS, const char *egl_path)
LOAD_FUNC_EGLEXT(eglQueryDevicesEXT);
LOAD_FUNC_EGLEXT(eglGetPlatformDisplayEXT);
- _this->gl_config.driver_loaded = 1;
-
if (path) {
SDL_strlcpy(_this->gl_config.driver_path, path, sizeof(_this->gl_config.driver_path) - 1);
} else {
diff --git a/src/video/cocoa/SDL_cocoaopengles.m b/src/video/cocoa/SDL_cocoaopengles.m
index a45a9f5..0f551de 100644
--- a/src/video/cocoa/SDL_cocoaopengles.m
+++ b/src/video/cocoa/SDL_cocoaopengles.m
@@ -109,10 +109,12 @@ Cocoa_GLES_SetupWindow(_THIS, SDL_Window * window)
if (_this->egl_data == NULL) {
+ SDL_assert(!_this->gl_config.driver_loaded);
if (SDL_EGL_LoadLibrary(_this, NULL, EGL_DEFAULT_DISPLAY, 0) < 0) {
SDL_EGL_UnloadLibrary(_this);
return -1;
}
+ _this->gl_config.driver_loaded = 1;
}
/* Create the GLES window surface */
diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c
index e4bfe49..5ee46d8 100644
--- a/src/video/windows/SDL_windowsopengles.c
+++ b/src/video/windows/SDL_windowsopengles.c
@@ -107,12 +107,13 @@ WIN_GLES_SetupWindow(_THIS, SDL_Window * window)
SDL_Window *current_win = SDL_GL_GetCurrentWindow();
SDL_GLContext current_ctx = SDL_GL_GetCurrentContext();
-
if (_this->egl_data == NULL) {
+ SDL_assert(!_this->gl_config.driver_loaded);
if (SDL_EGL_LoadLibrary(_this, NULL, EGL_DEFAULT_DISPLAY, 0) < 0) {
SDL_EGL_UnloadLibrary(_this);
return -1;
}
+ _this->gl_config.driver_loaded = 1;
}
/* Create the GLES window surface */