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
+ }
}
|