Port to glib 2.31.x g_thread API
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 23 Jan 2012 11:11:24 +0000 (11:11 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 23 Jan 2012 11:11:24 +0000 (11:11 +0000)
g_thread_init() is deprecated since glib 2.24, call g_type_init() instead.
Bump glib requirement accordingly.

g_thread_create is deprecated since 2.31, use g_thread_new() instead. When
building with a glib earlier than 2.31, provide a backwards compatibility shim.

[Added a comment about why we're using g_type_init() in a test that
doesn't otherwise use GObject -smcv]

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=44413
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
configure.ac
test/internals/refs.c

index 243cbbc..3ca922b 100644 (file)
@@ -192,7 +192,7 @@ fi
 # default (unless you don't have GLib), because they don't bloat the library
 # or binaries.
 if test "x$enable_modular_tests" != xno; then
-  PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22, gio-2.0 >= 2.22],
+  PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.24, gio-2.0 >= 2.24],
     [],
     [if test "x$enable_modular_tests" = xyes; then
       AC_MSG_NOTICE([Full test coverage (--enable-modular-tests=yes or --enable-tests=yes) requires GLib])
index bc0884e..db43a4d 100644 (file)
@@ -27,6 +27,7 @@
 #include <config.h>
 
 #include <glib.h>
+#include <glib-object.h>
 
 #define DBUS_COMPILATION    /* this test uses libdbus-internal */
 #include <dbus/dbus.h>
@@ -77,6 +78,11 @@ typedef struct {
   VoidFunc unlock;
 } Thread;
 
+/* provide backwards compatibility shim when building with a glib <= 2.30.x */
+#if !GLIB_CHECK_VERSION(2,31,0)
+#define g_thread_new(name,func,data) g_thread_create(func,data,TRUE,NULL)
+#endif
+
 static gpointer
 ref_thread (gpointer data)
 {
@@ -276,10 +282,9 @@ test_connection (Fixture *f,
   for (i = 0; i < N_THREADS; i++)
     {
       if ((i % 2) == 0)
-        f->threads[i] = g_thread_create (ref_thread, &public_api, TRUE, NULL);
+        f->threads[i] = g_thread_new (NULL, ref_thread, &public_api);
       else
-        f->threads[i] = g_thread_create (ref_thread, &internal_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, ref_thread, &internal_api);
 
       g_assert (f->threads[i] != NULL);
     }
@@ -289,11 +294,9 @@ test_connection (Fixture *f,
   for (i = 0; i < N_THREADS; i++)
     {
       if ((i % 2) == 0)
-        f->threads[i] = g_thread_create (cycle_thread, &public_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, cycle_thread, &public_api);
       else
-        f->threads[i] = g_thread_create (cycle_thread, &internal_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, cycle_thread, &internal_api);
 
       g_assert (f->threads[i] != NULL);
     }
@@ -303,11 +306,9 @@ test_connection (Fixture *f,
   for (i = 0; i < N_THREADS; i++)
     {
       if ((i % 2) == 0)
-        f->threads[i] = g_thread_create (unref_thread, &public_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, unref_thread, &public_api);
       else
-        f->threads[i] = g_thread_create (unref_thread, &internal_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, unref_thread, &internal_api);
 
       g_assert (f->threads[i] != NULL);
     }
@@ -360,10 +361,9 @@ test_server (Fixture *f,
   for (i = 0; i < N_THREADS; i++)
     {
       if ((i % 2) == 0)
-        f->threads[i] = g_thread_create (ref_thread, &public_api, TRUE, NULL);
+        f->threads[i] = g_thread_new (NULL, ref_thread, &public_api);
       else
-        f->threads[i] = g_thread_create (ref_thread, &internal_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, ref_thread, &internal_api);
 
       g_assert (f->threads[i] != NULL);
     }
@@ -373,11 +373,9 @@ test_server (Fixture *f,
   for (i = 0; i < N_THREADS; i++)
     {
       if ((i % 2) == 0)
-        f->threads[i] = g_thread_create (cycle_thread, &public_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, cycle_thread, &public_api);
       else
-        f->threads[i] = g_thread_create (cycle_thread, &internal_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, cycle_thread, &internal_api);
 
       g_assert (f->threads[i] != NULL);
     }
@@ -387,11 +385,9 @@ test_server (Fixture *f,
   for (i = 0; i < N_THREADS; i++)
     {
       if ((i % 2) == 0)
-        f->threads[i] = g_thread_create (unref_thread, &public_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, unref_thread, &public_api);
       else
-        f->threads[i] = g_thread_create (unref_thread, &internal_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, unref_thread, &internal_api);
 
       g_assert (f->threads[i] != NULL);
     }
@@ -426,7 +422,7 @@ test_message (Fixture *f,
 
   for (i = 0; i < N_THREADS; i++)
     {
-      f->threads[i] = g_thread_create (ref_thread, &public_api, TRUE, NULL);
+      f->threads[i] = g_thread_new (NULL, ref_thread, &public_api);
       g_assert (f->threads[i] != NULL);
     }
 
@@ -434,7 +430,7 @@ test_message (Fixture *f,
 
   for (i = 0; i < N_THREADS; i++)
     {
-      f->threads[i] = g_thread_create (cycle_thread, &public_api, TRUE, NULL);
+      f->threads[i] = g_thread_new (NULL, cycle_thread, &public_api);
       g_assert (f->threads[i] != NULL);
     }
 
@@ -442,7 +438,7 @@ test_message (Fixture *f,
 
   for (i = 0; i < N_THREADS; i++)
     {
-      f->threads[i] = g_thread_create (unref_thread, &public_api, TRUE, NULL);
+      f->threads[i] = g_thread_new (NULL, unref_thread, &public_api);
       g_assert (f->threads[i] != NULL);
     }
 
@@ -500,10 +496,9 @@ test_pending_call (Fixture *f,
   for (i = 0; i < N_THREADS; i++)
     {
       if ((i % 2) == 0)
-        f->threads[i] = g_thread_create (ref_thread, &public_api, TRUE, NULL);
+        f->threads[i] = g_thread_new (NULL, ref_thread, &public_api);
       else
-        f->threads[i] = g_thread_create (ref_thread, &internal_api, TRUE,
-            NULL);
+        f->threads[i] = g_thread_new (NULL, ref_thread, &internal_api);
 
       g_assert (f->threads[i] != NULL);
     }
@@ -515,16 +510,14 @@ test_pending_call (Fixture *f,
       switch (i % 3)
         {
           case 0:
-            f->threads[i] = g_thread_create (cycle_thread, &public_api, TRUE,
-                NULL);
+            f->threads[i] = g_thread_new (NULL, cycle_thread, &public_api);
             break;
           case 1:
-            f->threads[i] = g_thread_create (cycle_thread, &internal_api, TRUE,
-                NULL);
+            f->threads[i] = g_thread_new (NULL, cycle_thread, &internal_api);
             break;
           default:
-            f->threads[i] = g_thread_create (cycle_thread,
-                &unref_and_unlock_api, TRUE, NULL);
+            f->threads[i] = g_thread_new (NULL, cycle_thread,
+                &unref_and_unlock_api);
         }
 
       g_assert (f->threads[i] != NULL);
@@ -537,16 +530,14 @@ test_pending_call (Fixture *f,
       switch (i % 3)
         {
           case 0:
-            f->threads[i] = g_thread_create (unref_thread, &public_api, TRUE,
-                NULL);
+            f->threads[i] = g_thread_new (NULL, unref_thread, &public_api);
             break;
           case 1:
-            f->threads[i] = g_thread_create (unref_thread, &internal_api, TRUE,
-                NULL);
+            f->threads[i] = g_thread_new (NULL, unref_thread, &internal_api);
             break;
           default:
-            f->threads[i] = g_thread_create (unref_thread,
-                &unref_and_unlock_api, TRUE, NULL);
+            f->threads[i] = g_thread_new (NULL, unref_thread,
+                &unref_and_unlock_api);
         }
 
       g_assert (f->threads[i] != NULL);
@@ -595,7 +586,12 @@ int
 main (int argc,
     char **argv)
 {
-  g_thread_init (NULL);
+  /* In GLib >= 2.24, < 2.31 this acts like g_thread_init() but avoids
+   * the deprecation of that function. In GLib >= 2.32 this is not
+   * necessary at all.
+   */
+  g_type_init ();
+
   g_test_init (&argc, &argv, NULL);
   g_test_bug_base ("https://bugs.freedesktop.org/show_bug.cgi?id=");