This fixes compilation with glib versions up to 2.30, such
as the one in CentOS 6.

Even with this patch the test fails though:

ERROR:/tmp/qemu-test/src/tests/vhost-user-test.c:165:wait_for_fds: assertion 
failed: (s->fds_num)

Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
 tests/vhost-user-test.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
index 8b2164b..4de64df 100644
--- a/tests/vhost-user-test.c
+++ b/tests/vhost-user-test.c
@@ -127,21 +127,24 @@ typedef struct TestServer {
     int fds_num;
     int fds[VHOST_MEMORY_MAX_NREGIONS];
     VhostUserMemory memory;
-    GMutex data_mutex;
-    GCond data_cond;
+    CompatGMutex data_mutex;
+    CompatGCond data_cond;
     int log_fd;
     uint64_t rings;
 } TestServer;
 
 #if !GLIB_CHECK_VERSION(2, 32, 0)
-static gboolean g_cond_wait_until(CompatGCond cond, CompatGMutex mutex,
+static gboolean g_cond_wait_until(CompatGCond *cond, CompatGMutex *mutex,
                                   gint64 end_time)
 {
     gboolean ret = FALSE;
     end_time -= g_get_monotonic_time();
     GTimeVal time = { end_time / G_TIME_SPAN_SECOND,
                       end_time % G_TIME_SPAN_SECOND };
-    ret = g_cond_timed_wait(cond, mutex, &time);
+    g_assert(mutex->once.status != G_ONCE_STATUS_PROGRESS);
+    g_once(&cond->once, do_g_cond_new, NULL);
+    ret = g_cond_timed_wait((GCond *) cond->once.retval,
+                            (GMutex *) mutex->once.retval, &time);
     return ret;
 }
 #endif
-- 
2.7.4


Reply via email to