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
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.