2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
2000-04-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+ * glib.h (G_TRYLOCK): Made the debugging G_TRYLOCK call also work
+ for compilers with funnt G_STMT_(START|END) macros.
+
+ * tests/thread-test.c: Implemented a check for that.
+
* gutils.c (g_getenv): Changed the win32 part of this function to
be thread safe and to make the returned environment string
persistent to match the UN*X behavior. This is again a response to
#name); \
g_static_mutex_unlock (&G_LOCK_NAME (name)); \
}G_STMT_END
-# define G_TRYLOCK(name) G_STMT_START{ \
- g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
+# define G_TRYLOCK(name) \
+ (g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
"file %s: line %d (%s): try locking: %s ", \
__FILE__, __LINE__, G_GNUC_PRETTY_FUNCTION, \
- #name); \
- }G_STMT_END, g_static_mutex_trylock (&G_LOCK_NAME (name))
+ #name), g_static_mutex_trylock (&G_LOCK_NAME (name)))
# else /* !G_DEBUG_LOCKS */
# define G_LOCK(name) g_static_mutex_lock (&G_LOCK_NAME (name))
# define G_UNLOCK(name) g_static_mutex_unlock (&G_LOCK_NAME (name))
#name); \
g_static_mutex_unlock (&G_LOCK_NAME (name)); \
}G_STMT_END
-# define G_TRYLOCK(name) G_STMT_START{ \
- g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
+# define G_TRYLOCK(name) \
+ (g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
"file %s: line %d (%s): try locking: %s ", \
__FILE__, __LINE__, G_GNUC_PRETTY_FUNCTION, \
- #name); \
- }G_STMT_END, g_static_mutex_trylock (&G_LOCK_NAME (name))
+ #name), g_static_mutex_trylock (&G_LOCK_NAME (name)))
# else /* !G_DEBUG_LOCKS */
# define G_LOCK(name) g_static_mutex_lock (&G_LOCK_NAME (name))
# define G_UNLOCK(name) g_static_mutex_unlock (&G_LOCK_NAME (name))
static GMutex* test_g_mutex_mutex = NULL;
static guint test_g_mutex_int = 0;
+G_LOCK_DEFINE_STATIC (test_g_mutex);
static void
test_g_mutex_thread (gpointer data)
{
g_assert (GPOINTER_TO_INT (data) == 42);
g_assert (g_mutex_trylock (test_g_mutex_mutex) == FALSE);
+ g_assert (G_TRYLOCK (test_g_mutex) == FALSE);
g_mutex_lock (test_g_mutex_mutex);
g_assert (test_g_mutex_int == 42);
g_mutex_unlock (test_g_mutex_mutex);
test_g_mutex_mutex = g_mutex_new ();
g_assert (g_mutex_trylock (test_g_mutex_mutex));
+ g_assert (G_TRYLOCK (test_g_mutex));
thread = g_thread_create (test_g_mutex_thread,
GINT_TO_POINTER (42),
0, TRUE, TRUE, G_THREAD_PRIORITY_NORMAL);
g_usleep (G_MICROSEC);
test_g_mutex_int = 42;
+ G_UNLOCK (test_g_mutex);
g_mutex_unlock (test_g_mutex_mutex);
g_thread_join (thread);
g_mutex_free (test_g_mutex_mutex);