Mesa (master): libgl-gdi: Avoid hangs on DLL_PROCESS_DETACH.
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Tue Jan 15 22:16:17 UTC 2013
Module: Mesa
Branch: master
Commit: 45575ff388cbb4c49480c6e5e8eea32d5c7d74a4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=45575ff388cbb4c49480c6e5e8eea32d5c7d74a4
Author: Rob Schneider <Swizzle at t-online.de>
Date: Tue Jan 15 11:49:12 2013 -0800
libgl-gdi: Avoid hangs on DLL_PROCESS_DETACH.
At process exit DLL_PROCESS_DETACH is signaled to DllMain(), where then
a final cleanup is triggered. In stw_cleanup() code is triggered that
tries to communicate a shutdown to the spawned threads -- however at
that time those threads have already been terminated by the OS and so
the process hangs.
v2: skip stw_cleanup_thread() too
Signed-off-by: José Fonseca <jfonseca at vmware.com>
---
src/gallium/targets/libgl-gdi/libgl_gdi.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/gallium/targets/libgl-gdi/libgl_gdi.c b/src/gallium/targets/libgl-gdi/libgl_gdi.c
index 112904a..3f7dc00 100644
--- a/src/gallium/targets/libgl-gdi/libgl_gdi.c
+++ b/src/gallium/targets/libgl-gdi/libgl_gdi.c
@@ -159,8 +159,10 @@ DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
break;
case DLL_PROCESS_DETACH:
- stw_cleanup_thread();
- stw_cleanup();
+ if (lpReserved == NULL) {
+ stw_cleanup_thread();
+ stw_cleanup();
+ }
break;
}
return TRUE;
More information about the mesa-commit
mailing list