diff options
author | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2010-12-19 21:46:33 +0100 |
---|---|---|
committer | Christoph Bumiller <e0425955@student.tuwien.ac.at> | 2010-12-19 21:46:33 +0100 |
commit | 0f68236a2487dbeb0396b996debcda595b0b54a1 (patch) | |
tree | 938ae3b779349b6dba6f5a891550604f9a9ca895 /src/egl/main/egldriver.c | |
parent | d047168d81cfeb39a98f3ae16416872facc6237c (diff) | |
parent | 237880463d5168cad8df0bae6018b5fd76617777 (diff) |
Merge remote branch 'origin/master' into nvc0-new
Diffstat (limited to 'src/egl/main/egldriver.c')
-rw-r--r-- | src/egl/main/egldriver.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c index ff0011c4b1..e5d8a39a4c 100644 --- a/src/egl/main/egldriver.c +++ b/src/egl/main/egldriver.c @@ -186,11 +186,22 @@ _eglLoadModule(_EGLModule *mod) static void _eglUnloadModule(_EGLModule *mod) { +#if defined(_EGL_OS_UNIX) /* destroy the driver */ if (mod->Driver && mod->Driver->Unload) mod->Driver->Unload(mod->Driver); + + /* + * XXX At this point (atexit), the module might be the last reference to + * libEGL. Closing the module might unmap libEGL and give problems. + */ +#if 0 if (mod->Handle) close_library(mod->Handle); +#endif +#elif defined(_EGL_OS_WINDOWS) + /* XXX Windows unloads DLLs before atexit */ +#endif mod->Driver = NULL; mod->Handle = NULL; @@ -670,12 +681,7 @@ _eglUnloadDrivers(void) { /* this is called at atexit time */ if (_eglModules) { -#if defined(_EGL_OS_UNIX) _eglDestroyArray(_eglModules, _eglFreeModule); -#elif defined(_EGL_OS_WINDOWS) - /* XXX Windows unloads DLLs before atexit */ - _eglDestroyArray(_eglModules, NULL); -#endif _eglModules = NULL; } } |