[PATCH 2/3] pthread-same-source: Add a reference image generation mode

Uli Schlachter <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
In this mode, only a single thread is active and calling into cairo at any time.
Thus, there can be no races between threads. Since this test is supposed to find
races between threads, the resulting image can be used as a reference image.

Signed-off-by: Uli Schlachter <[email protected]>
---
 test/pthread-same-source.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/test/pthread-same-source.c b/test/pthread-same-source.c
index 5960ca0..9db7332 100644
--- a/test/pthread-same-source.c
+++ b/test/pthread-same-source.c
@@ -28,6 +28,7 @@
 #include <pthread.h>
 
 #define N_THREADS 8
+#define GENERATE_REFERENCE 0
 
 #define WIDTH 64
 #define HEIGHT 8
@@ -136,6 +137,9 @@ draw (cairo_t *cr, int width, int height)
     cairo_status_t status;
     int i;
 
+    cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);
+    cairo_paint (cr);
+
     source = create_source (cairo_get_target (cr));
     status = cairo_surface_status (source);
     if (status) {
@@ -157,18 +161,24 @@ draw (cairo_t *cr, int width, int height)
             test_status = CAIRO_TEST_FAILURE;
 	    break;
         }
+#if GENERATE_REFERENCE
+	{
+	    cairo_test_status_t status = join_thread (cr, threads[i]);
+	    if (status != CAIRO_TEST_SUCCESS)
+		test_status = status;
+	}
+#endif
     }
 
     cairo_surface_destroy (source);
 
-    cairo_set_source_rgb (cr, 0.5, 0.5, 0.5);
-    cairo_paint (cr);
-
+#if !GENERATE_REFERENCE
     for (i = 0; i < N_THREADS; i++) {
 	cairo_test_status_t status = join_thread (cr, threads[i]);
 	if (status != CAIRO_TEST_SUCCESS)
 	    test_status = status;
     }
+#endif
 
     return test_status;
 }
-- 
1.9.1

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.