[glib] win32 threads: use our own data, not system_thread
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] win32 threads: use our own data, not system_thread
- Date: Thu, 13 Oct 2011 02:57:54 +0000 (UTC)
commit e0c9757b9b0d7074923f96716adb3bff07b32349
Author: Ryan Lortie <desrt desrt ca>
Date: Wed Oct 12 22:53:52 2011 -0400
win32 threads: use our own data, not system_thread
Stop using the generic system_thread field in GRealThread. Use our own
pointer instead.
glib/gthread-win32.c | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
---
diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c
index c8af9c8..98c683a 100644
--- a/glib/gthread-win32.c
+++ b/glib/gthread-win32.c
@@ -463,10 +463,19 @@ struct _GThreadData
gboolean joinable;
};
+typedef struct
+{
+ GRealThread thread;
+
+ GThreadData *data;
+} GThreadWin32;
+
void
g_system_thread_free (GRealThread *thread)
{
- g_slice_free (GRealThread, thread);
+ GThreadWin32 *wt = (GThreadWin32 *) thread;
+
+ g_slice_free (GThreadWin32, wt);
}
void
@@ -497,11 +506,11 @@ g_system_thread_new (GThreadFunc func,
gboolean joinable,
GError **error)
{
- GRealThread *thread;
+ GThreadWin32 *thread;
guint ignore;
GThreadData *retval;
- thread = g_slice_new0 (GRealThread);
+ thread = g_slice_new0 (GThreadWin32);
retval = g_new(GThreadData, 1);
retval->func = func;
retval->data = thread;
@@ -518,13 +527,13 @@ g_system_thread_new (GThreadFunc func,
"Error creating thread: %s", win_error);
g_free (retval);
g_free (win_error);
- g_slice_free (GRealThread, thread);
+ g_slice_free (GThreadWin32, thread);
return NULL;
}
- *(GThreadData **) &(thread->system_thread) = retval;
+ thread->data = retval;
- return thread;
+ return (GRealThread *) thread;
}
void
@@ -536,7 +545,8 @@ g_thread_yield (void)
void
g_system_thread_wait (GRealThread *thread)
{
- GThreadData *target = *(GThreadData **)&(thread->system_thread);
+ GThreadWin32 *wt = (GThreadWin32 *) thread;
+ GThreadData *target = wt->data;
g_return_if_fail (target->joinable);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]