Fixed bug 3529 - SDL_EGL_UnloadLibrary is not called at all on SDL_Quit

kaisyu

In case of OpenGLES, the sequences of loading and unloading driver library should be like that:

SDL_Init
  ...
  SDL_GL_LoadLibrary
    SDL_EGL_LoadLibrary
...
SDL_Quit
  ...
  SDL_GL_UnloadLibrary
    SDL_EGL_UnloadLibrary
...


However, according to my test results, the varible '_this->gl_config.driver_loaded' does not allow 'SDL_GL_UnloadLibrary' to call 'SDL_EGL_UnloadLibrary'.
This commit is contained in:
Sam Lantinga 2017-01-01 19:10:36 -08:00
parent 0cfa0aa11c
commit 67ed894353
4 changed files with 4 additions and 19 deletions

View File

@ -313,8 +313,6 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
} }
#endif #endif
_this->gl_config.driver_loaded = 1;
if (path) { if (path) {
SDL_strlcpy(_this->gl_config.driver_path, path, sizeof(_this->gl_config.driver_path) - 1); SDL_strlcpy(_this->gl_config.driver_path, path, sizeof(_this->gl_config.driver_path) - 1);
} else { } else {

View File

@ -133,7 +133,6 @@ DirectFB_GL_LoadLibrary(_THIS, const char *path)
SDL_DFB_DEBUG("Loaded library: %s\n", path); SDL_DFB_DEBUG("Loaded library: %s\n", path);
_this->gl_config.dll_handle = handle; _this->gl_config.dll_handle = handle;
_this->gl_config.driver_loaded = 1;
if (path) { if (path) {
SDL_strlcpy(_this->gl_config.driver_path, path, SDL_strlcpy(_this->gl_config.driver_path, path,
SDL_arraysize(_this->gl_config.driver_path)); SDL_arraysize(_this->gl_config.driver_path));
@ -151,16 +150,10 @@ static void
DirectFB_GL_UnloadLibrary(_THIS) DirectFB_GL_UnloadLibrary(_THIS)
{ {
#if 0 #if 0
int ret; int ret = GL_UnloadObject(_this->gl_config.dll_handle);
if (_this->gl_config.driver_loaded) {
ret = GL_UnloadObject(_this->gl_config.dll_handle);
if (ret) if (ret)
SDL_DFB_ERR("Error #%d trying to unload library.\n", ret); SDL_DFB_ERR("Error #%d trying to unload library.\n", ret);
_this->gl_config.dll_handle = NULL; _this->gl_config.dll_handle = NULL;
_this->gl_config.driver_loaded = 0;
}
#endif #endif
/* Free OpenGL memory */ /* Free OpenGL memory */
SDL_free(_this->gl_data); SDL_free(_this->gl_data);

View File

@ -70,8 +70,6 @@ Emscripten_GLES_LoadLibrary(_THIS, const char *path) {
return SDL_SetError("Could not initialize EGL"); return SDL_SetError("Could not initialize EGL");
} }
_this->gl_config.driver_loaded = 1;
if (path) { if (path) {
SDL_strlcpy(_this->gl_config.driver_path, path, sizeof(_this->gl_config.driver_path) - 1); SDL_strlcpy(_this->gl_config.driver_path, path, sizeof(_this->gl_config.driver_path) - 1);
} else { } else {

View File

@ -47,10 +47,6 @@
int int
PSP_GL_LoadLibrary(_THIS, const char *path) PSP_GL_LoadLibrary(_THIS, const char *path)
{ {
if (!_this->gl_config.driver_loaded) {
_this->gl_config.driver_loaded = 1;
}
return 0; return 0;
} }