Module: Mesa Branch: master Commit: 45575ff388cbb4c49480c6e5e8eea32d5c7d74a4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=45575ff388cbb4c49480c6e5e8eea32d5c7d74a4
Author: Rob Schneider <[email protected]> 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 <[email protected]> --- 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; _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
