summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2010-07-10 15:47:12 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2010-07-11 09:43:55 -0400
commitf18bcf1f6e984c33dca30ad1ce03c58628fe39df (patch)
tree41e6da38dc6f5a646e27939d41cf11f8b62f1552
parent5c935473d8a193b3510f8605a6658ea6ac998fd1 (diff)
Hide the global implementation variable behind a force_inline function.
Previously the global variable was called 'imp' which was confusing with the argument to various other functions also being called imp.
-rw-r--r--pixman/pixman.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/pixman/pixman.c b/pixman/pixman.c
index 56c95368..b76143f3 100644
--- a/pixman/pixman.c
+++ b/pixman/pixman.c
@@ -30,7 +30,16 @@
#include <stdlib.h>
-static pixman_implementation_t *imp;
+static force_inline pixman_implementation_t *
+get_implementation (void)
+{
+ static pixman_implementation_t *global_implementation;
+
+ if (!global_implementation)
+ global_implementation = _pixman_choose_implementation ();
+
+ return global_implementation;
+}
typedef struct operator_info_t operator_info_t;
@@ -813,10 +822,7 @@ pixman_image_composite32 (pixman_op_t op,
_pixman_image_validate (mask);
_pixman_image_validate (dest);
- if (!imp)
- imp = _pixman_choose_implementation ();
-
- do_composite (imp, op,
+ do_composite (get_implementation(), op,
src, mask, dest,
src_x, src_y,
mask_x, mask_y,
@@ -838,10 +844,8 @@ pixman_blt (uint32_t *src_bits,
int width,
int height)
{
- if (!imp)
- imp = _pixman_choose_implementation ();
-
- return _pixman_implementation_blt (imp, src_bits, dst_bits, src_stride, dst_stride,
+ return _pixman_implementation_blt (get_implementation(),
+ src_bits, dst_bits, src_stride, dst_stride,
src_bpp, dst_bpp,
src_x, src_y,
dst_x, dst_y,
@@ -858,10 +862,8 @@ pixman_fill (uint32_t *bits,
int height,
uint32_t xor)
{
- if (!imp)
- imp = _pixman_choose_implementation ();
-
- return _pixman_implementation_fill (imp, bits, stride, bpp, x, y, width, height, xor);
+ return _pixman_implementation_fill (
+ get_implementation(), bits, stride, bpp, x, y, width, height, xor);
}
static uint32_t