Fixes #2583, clean up EGL initialization
diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c
index 7f90cdb..0185f66 100644
--- a/src/video/SDL_egl.c
+++ b/src/video/SDL_egl.c
@@ -189,7 +189,7 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
dll_handle = SDL_LoadObject(egl_path);
}
/* Try loading a EGL symbol, if it does not work try the default library paths */
- if (SDL_LoadFunction(dll_handle, "eglChooseConfig") == NULL) {
+ if (dll_handle == NULL || SDL_LoadFunction(dll_handle, "eglChooseConfig") == NULL) {
if (dll_handle != NULL) {
SDL_UnloadObject(dll_handle);
}
@@ -198,7 +198,10 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
path = DEFAULT_EGL;
}
dll_handle = SDL_LoadObject(path);
- if (dll_handle == NULL) {
+ if (dll_handle == NULL || SDL_LoadFunction(dll_handle, "eglChooseConfig") == NULL) {
+ if (dll_handle != NULL) {
+ SDL_UnloadObject(dll_handle);
+ }
return SDL_SetError("Could not load EGL library");
}
SDL_ClearError();
@@ -235,8 +238,6 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
}
#endif
- _this->egl_data->dll_handle = dll_handle;
- _this->egl_data->egl_dll_handle = egl_dll_handle;
_this->gl_config.driver_loaded = 1;
if (path) {