mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 23:46:15 +01:00
tests: Fix race conditions in mainloop/invoke test
1) The test was using GCond incorrectly (it always needs a state variable) 2) The state assertion was racing with the thread; just delete it. All we're really trying to test here is that the invoke runs by the time the thread is gone, and the function has an assertion that it runs in the correct thread. https://bugzilla.gnome.org/show_bug.cgi?id=674213
This commit is contained in:
parent
3054ecf109
commit
3ac2930e1a
@ -255,6 +255,7 @@ call_func (gpointer data)
|
||||
|
||||
static GMutex mutex;
|
||||
static GCond cond;
|
||||
static gboolean thread_ready;
|
||||
|
||||
static gpointer
|
||||
thread_func (gpointer data)
|
||||
@ -265,6 +266,7 @@ thread_func (gpointer data)
|
||||
g_main_context_push_thread_default (ctx);
|
||||
|
||||
g_mutex_lock (&mutex);
|
||||
thread_ready = TRUE;
|
||||
g_cond_signal (&cond);
|
||||
g_mutex_unlock (&mutex);
|
||||
|
||||
@ -300,13 +302,14 @@ test_invoke (void)
|
||||
* to another thread
|
||||
*/
|
||||
ctx = g_main_context_new ();
|
||||
g_mutex_lock (&mutex);
|
||||
thread = g_thread_new ("worker", thread_func, ctx);
|
||||
|
||||
g_cond_wait (&cond, &mutex);
|
||||
g_mutex_lock (&mutex);
|
||||
while (!thread_ready)
|
||||
g_cond_wait (&cond, &mutex);
|
||||
g_mutex_unlock (&mutex);
|
||||
|
||||
g_main_context_invoke (ctx, func, thread);
|
||||
g_assert_cmpint (count, ==, 2);
|
||||
|
||||
g_thread_join (thread);
|
||||
g_assert_cmpint (count, ==, 3);
|
||||
|
Loading…
Reference in New Issue
Block a user