From: Axel S. <si...@co...> - 2010-05-24 11:13:11
|
diffing dir... Sun May 23 21:15:11 EDT 2010 Hamish Mackenzie <ham...@go...> * Improved Win32 critical section init and only lock if threading is initialized. Ignore-this: 880ca168a60671ba8230faeb373022be { hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 22 + * Also g_static_mutex_lock and g_static_mutex_unlock cause problems ghci + * on windows so using a Win32 critical section instead hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 31 +#if defined( WIN32 ) +#include <windows.h> +#endif + hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 37 +static int threads_initialised = 0; +#if defined( WIN32 ) +static CRITICAL_SECTION gtk2hs_finalizer_mutex; +#else hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 42 +#endif hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 51 - static int threads_initialised = 0; hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 54 +#if defined( WIN32 ) + InitializeCriticalSection(>k2hs_finalizer_mutex); +#endif hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 65 - g_static_mutex_lock(>k2hs_finalizer_mutex); + int mutex_locked = 0; + if (threads_initialised) { +#if defined( WIN32 ) + EnterCriticalSection(>k2hs_finalizer_mutex); +#else + g_static_mutex_lock(>k2hs_finalizer_mutex); +#endif + mutex_locked = 1; + } hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 100 - g_static_mutex_unlock(>k2hs_finalizer_mutex); + if (mutex_locked) { +#if defined( WIN32 ) + LeaveCriticalSection(>k2hs_finalizer_mutex); +#else + g_static_mutex_unlock(>k2hs_finalizer_mutex); +#endif + } hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 114 - g_static_mutex_lock(>k2hs_finalizer_mutex); + int mutex_locked = 0; + if (threads_initialised) { +#if defined( WIN32 ) + EnterCriticalSection(>k2hs_finalizer_mutex); +#else + g_static_mutex_lock(>k2hs_finalizer_mutex); +#endif + mutex_locked = 1; + } hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 135 - g_static_mutex_unlock(>k2hs_finalizer_mutex); + if (mutex_locked) { +#if defined( WIN32 ) + LeaveCriticalSection(>k2hs_finalizer_mutex); +#else + g_static_mutex_unlock(>k2hs_finalizer_mutex); +#endif + } } |