diff options
-rw-r--r-- | pixman/pixman-arm-neon.c | 3 | ||||
-rw-r--r-- | pixman/pixman-arm-simd.c | 3 | ||||
-rw-r--r-- | pixman/pixman-fast-path.c | 3 | ||||
-rw-r--r-- | pixman/pixman-general.c | 3 | ||||
-rw-r--r-- | pixman/pixman-implementation.c | 4 | ||||
-rw-r--r-- | pixman/pixman-mmx.c | 3 | ||||
-rw-r--r-- | pixman/pixman-private.h | 3 | ||||
-rw-r--r-- | pixman/pixman-sse2.c | 3 | ||||
-rw-r--r-- | pixman/pixman-vmx.c | 3 |
9 files changed, 18 insertions, 10 deletions
diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c index 1f2430c..df7166f 100644 --- a/pixman/pixman-arm-neon.c +++ b/pixman/pixman-arm-neon.c @@ -339,9 +339,10 @@ BIND_COMBINE_U (out_reverse) pixman_implementation_t * _pixman_implementation_create_arm_neon (void) { + static pixman_implementation_t arm_neon_imp; pixman_implementation_t *general = _pixman_implementation_create_fast_path (); pixman_implementation_t *imp = - _pixman_implementation_create (general, arm_neon_fast_paths); + _pixman_implementation_create (&arm_neon_imp, general, arm_neon_fast_paths); imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u; imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c index 389c9e0..40a0348 100644 --- a/pixman/pixman-arm-simd.c +++ b/pixman/pixman-arm-simd.c @@ -410,8 +410,9 @@ static const pixman_fast_path_t arm_simd_fast_paths[] = pixman_implementation_t * _pixman_implementation_create_arm_simd (void) { + static pixman_implementation_t arm_simd_imp; pixman_implementation_t *general = _pixman_implementation_create_fast_path (); - pixman_implementation_t *imp = _pixman_implementation_create (general, arm_simd_fast_paths); + pixman_implementation_t *imp = _pixman_implementation_create (&arm_simd_imp, general, arm_simd_fast_paths); return imp; } diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c index f03752f..73c4871 100644 --- a/pixman/pixman-fast-path.c +++ b/pixman/pixman-fast-path.c @@ -2044,8 +2044,9 @@ fast_path_fill (pixman_implementation_t *imp, pixman_implementation_t * _pixman_implementation_create_fast_path (void) { + static pixman_implementation_t fast_path_imp; pixman_implementation_t *general = _pixman_implementation_create_general (); - pixman_implementation_t *imp = _pixman_implementation_create (general, c_fast_paths); + pixman_implementation_t *imp = _pixman_implementation_create (&fast_path_imp, general, c_fast_paths); imp->fill = fast_path_fill; diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c index fc742c0..f9e5789 100644 --- a/pixman/pixman-general.c +++ b/pixman/pixman-general.c @@ -306,7 +306,8 @@ general_fill (pixman_implementation_t *imp, pixman_implementation_t * _pixman_implementation_create_general (void) { - pixman_implementation_t *imp = _pixman_implementation_create (NULL, general_fast_path); + static pixman_implementation_t general_imp; + pixman_implementation_t *imp = _pixman_implementation_create (&general_imp, NULL, general_fast_path); _pixman_setup_combiner_functions_32 (imp); _pixman_setup_combiner_functions_64 (imp); diff --git a/pixman/pixman-implementation.c b/pixman/pixman-implementation.c index bc3749e..fa5d066 100644 --- a/pixman/pixman-implementation.c +++ b/pixman/pixman-implementation.c @@ -112,10 +112,10 @@ delegate_fill (pixman_implementation_t *imp, } pixman_implementation_t * -_pixman_implementation_create (pixman_implementation_t *delegate, +_pixman_implementation_create (pixman_implementation_t *imp, + pixman_implementation_t *delegate, const pixman_fast_path_t *fast_paths) { - pixman_implementation_t *imp = malloc (sizeof (pixman_implementation_t)); pixman_implementation_t *d; int i; diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c index d51b40c..c694130 100644 --- a/pixman/pixman-mmx.c +++ b/pixman/pixman-mmx.c @@ -3342,8 +3342,9 @@ mmx_fill (pixman_implementation_t *imp, pixman_implementation_t * _pixman_implementation_create_mmx (void) { + static pixman_implementation_t mmx_imp; pixman_implementation_t *general = _pixman_implementation_create_fast_path (); - pixman_implementation_t *imp = _pixman_implementation_create (general, mmx_fast_paths); + pixman_implementation_t *imp = _pixman_implementation_create (&mmx_imp, general, mmx_fast_paths); imp->combine_32[PIXMAN_OP_OVER] = mmx_combine_over_u; imp->combine_32[PIXMAN_OP_OVER_REVERSE] = mmx_combine_over_reverse_u; diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h index dedea0b..6f2875f 100644 --- a/pixman/pixman-private.h +++ b/pixman/pixman-private.h @@ -437,7 +437,8 @@ struct pixman_implementation_t }; pixman_implementation_t * -_pixman_implementation_create (pixman_implementation_t *delegate, +_pixman_implementation_create (pixman_implementation_t *imp, + pixman_implementation_t *delegate, const pixman_fast_path_t *fast_paths); void diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c index 3dd7967..02de910 100644 --- a/pixman/pixman-sse2.c +++ b/pixman/pixman-sse2.c @@ -6490,12 +6490,13 @@ __attribute__((__force_align_arg_pointer__)) pixman_implementation_t * _pixman_implementation_create_sse2 (void) { + static pixman_implementation_t sse2_imp; #ifdef USE_MMX pixman_implementation_t *fallback = _pixman_implementation_create_mmx (); #else pixman_implementation_t *fallback = _pixman_implementation_create_fast_path (); #endif - pixman_implementation_t *imp = _pixman_implementation_create (fallback, sse2_fast_paths); + pixman_implementation_t *imp = _pixman_implementation_create (&sse2_imp, fallback, sse2_fast_paths); /* SSE2 constants */ mask_565_r = create_mask_2x32_128 (0x00f80000, 0x00f80000); diff --git a/pixman/pixman-vmx.c b/pixman/pixman-vmx.c index e811cf7..2052781 100644 --- a/pixman/pixman-vmx.c +++ b/pixman/pixman-vmx.c @@ -1615,8 +1615,9 @@ static const pixman_fast_path_t vmx_fast_paths[] = pixman_implementation_t * _pixman_implementation_create_vmx (void) { + static pixman_implementation_t vmx_imp; pixman_implementation_t *fast = _pixman_implementation_create_fast_path (); - pixman_implementation_t *imp = _pixman_implementation_create (fast, vmx_fast_paths); + pixman_implementation_t *imp = _pixman_implementation_create (&vmx_imp, fast, vmx_fast_paths); /* Set up function pointers */ |