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

Reply via email to