Re: [PATCH 1/2 v2] pthread-same-source: Add ref image generation
"Bryce W. Harrington" <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
On Sat, Apr 12, 2014 at 12:11:54PM +0200, Uli Schlachter wrote: > When the new GENERATE_REFERENCE symbol is defined to 1, no threads are involved > at all. In this case, all operations are done sequentially by the main thread. > > Thus, in this mode no thread issues can occur and the result must be usable as > reference images. > > Signed-off-by: Uli Schlachter <[email protected]> > --- > Hi everyone, > > with this new version of the patch I got rid all pthread calls. It replaces > patches 1 and 2 of the series that I sent yesterday. I think that this version > is nicer than the one that I sent before. Ah, yes I agree. Sorry, was confused by the patch series numbering. Reviewed-by: Bryce Harrington <[email protected]> > Uli > > test/pthread-same-source.c | 25 ++++++++++++++++++++++--- > 1 file changed, 22 insertions(+), 3 deletions(-) > > diff --git a/test/pthread-same-source.c b/test/pthread-same-source.c > index d0eda4a..2b26d18 100644 > --- a/test/pthread-same-source.c > +++ b/test/pthread-same-source.c > @@ -24,8 +24,12 @@ > * Author: Benjamin Otte <[email protected]> > */ > > +#define GENERATE_REFERENCE 0 > + > #include "cairo-test.h" > +#if !GENERATE_REFERENCE > #include <pthread.h> > +#endif > > #define N_THREADS 8 > > @@ -110,7 +114,9 @@ create_source (cairo_surface_t *similar) > static cairo_test_status_t > draw (cairo_t *cr, int width, int height) > { > +#if !GENERATE_REFERENCE > pthread_t threads[N_THREADS]; > +#endif > thread_data_t thread_data[N_THREADS]; > cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; > cairo_surface_t *source; > @@ -125,12 +131,16 @@ draw (cairo_t *cr, int width, int height) > status); > } > > + cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); > + cairo_paint (cr); > + > for (i = 0; i < N_THREADS; i++) { > thread_data[i].target = cairo_surface_create_similar (cairo_get_target (cr), > CAIRO_CONTENT_COLOR_ALPHA, > 4 * WIDTH, 4 * HEIGHT); > thread_data[i].source = cairo_surface_reference (source); > thread_data[i].id = i; > +#if !GENERATE_REFERENCE > if (pthread_create (&threads[i], NULL, draw_thread, &thread_data[i]) != 0) { > threads[i] = pthread_self (); /* to indicate error */ > cairo_surface_destroy (thread_data[i].target); > @@ -138,13 +148,21 @@ draw (cairo_t *cr, int width, int height) > test_status = CAIRO_TEST_FAILURE; > break; > } > +#else > + { > + cairo_surface_t *surface = draw_thread(&thread_data[i]); > + cairo_set_source_surface (cr, surface, 0, 0); > + cairo_surface_destroy (surface); > + cairo_paint (cr); > + > + cairo_translate (cr, 0, 4 * HEIGHT); > + } > +#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++) { > void *surface; > > @@ -161,6 +179,7 @@ draw (cairo_t *cr, int width, int height) > test_status = CAIRO_TEST_FAILURE; > } > } > +#endif > > return test_status; > } > -- > 1.9.1 > > -- > cairo mailing list > [email protected] > http://lists.cairographics.org/mailman/listinfo/cairo -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo