[pango] Update test-pangocairo-threads to new threads API



commit d64005ea687a7263dc070c1314a4f211a2994fc9
Author: Behdad Esfahbod <behdad behdad org>
Date:   Thu Jan 3 23:40:02 2013 -0600

    Update test-pangocairo-threads to new threads API

 tests/test-pangocairo-threads.c |   32 +++++++++++++-------------------
 1 files changed, 13 insertions(+), 19 deletions(-)
---
diff --git a/tests/test-pangocairo-threads.c b/tests/test-pangocairo-threads.c
index 29c6aa5..7d2b68a 100644
--- a/tests/test-pangocairo-threads.c
+++ b/tests/test-pangocairo-threads.c
@@ -12,19 +12,19 @@ thread_func (gpointer data)
   int i;
   char *filename;
 
-  cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 500, 300);
+  cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 100, 100);
   cairo_t *cr = cairo_create (surface);
   PangoLayout *layout = pango_cairo_create_layout (cr);
 
-  cairo_set_source_rgb (cr, 1, 1, 1);
-  cairo_paint (cr);
-  cairo_set_source_rgb (cr, 0, 0, 0);
-
   pango_layout_set_text (layout, text, -1);
-  pango_layout_set_width (layout, 500 * PANGO_SCALE);
+  pango_layout_set_width (layout, 100 * PANGO_SCALE);
 
   for (i = 0; i < num_iters; i++)
     {
+      cairo_set_source_rgb (cr, 1, 1, 1);
+      cairo_paint (cr);
+      cairo_set_source_rgb (cr, 0, 0, 0);
+
       /* force a relayout */
       PangoWrapMode wrap = pango_layout_get_wrap (layout);
       wrap = wrap == PANGO_WRAP_WORD ? PANGO_WRAP_CHAR : PANGO_WRAP_WORD;
@@ -40,19 +40,12 @@ thread_func (gpointer data)
   return 0;
 }
 
-static void
-join_thread (gpointer thread, gpointer self)
-{
-  if (thread != self)
-    g_thread_join (thread);
-}
-
-
 int
 main (int argc, char **argv)
 {
   int num_threads = 2;
   int i;
+  GPtrArray *threads = g_ptr_array_new ();
 
   if (argc > 1)
     num_threads = atoi (argv[1]);
@@ -62,13 +55,14 @@ main (int argc, char **argv)
   g_type_init ();
   g_thread_init (NULL);
 
-  /* force pango module initializations */
-/*  thread_func (GINT_TO_POINTER (0)); */
-
   for (i = 0; i < num_threads; i++)
-    g_thread_create (thread_func, GINT_TO_POINTER (i+1), TRUE, NULL);
+    g_ptr_array_add (threads,
+		     g_thread_new (g_strdup_printf ("%d", i + 1),
+				   thread_func,
+				   GINT_TO_POINTER (i+1)));
 
-  g_thread_foreach (join_thread, g_thread_self ());
+  for (i = 0; i < num_threads; i++)
+    g_thread_join (g_ptr_array_index (threads, i));
 
   return 0;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]