From: Søren Sandmann Pedersen <s...@redhat.com>

And move it into pixman-implementation.c which is where it belongs
logically.
---
 pixman/pixman-fast-path.c      |    2 +-
 pixman/pixman-glyph.c          |    4 +-
 pixman/pixman-implementation.c |  112 ++++++++++++++++++++++++++++++++++++++++
 pixman/pixman-private.h        |   24 ++++----
 pixman/pixman-utils.c          |  112 ----------------------------------------
 pixman/pixman.c                |    2 +-
 6 files changed, 128 insertions(+), 128 deletions(-)

diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c
index d26f6e7..83c317f 100644
--- a/pixman/pixman-fast-path.c
+++ b/pixman/pixman-fast-path.c
@@ -1258,7 +1258,7 @@ fast_composite_tiled_repeat (pixman_implementation_t *imp,
        mask_flags = FAST_PATH_IS_OPAQUE;
     }
 
-    if (_pixman_lookup_composite_function (
+    if (_pixman_implementation_lookup_composite (
            imp->toplevel, info->op,
            src_image->common.extended_format_code, src_flags,
            mask_format, mask_flags,
diff --git a/pixman/pixman-glyph.c b/pixman/pixman-glyph.c
index cbc3637..30a4099 100644
--- a/pixman/pixman-glyph.c
+++ b/pixman/pixman-glyph.c
@@ -464,7 +464,7 @@ pixman_composite_glyphs_no_mask (pixman_op_t            op,
                    glyph_format = glyph_img->common.extended_format_code;
                    glyph_flags = glyph_img->common.flags;
                    
-                   _pixman_lookup_composite_function (
+                   _pixman_implementation_lookup_composite (
                        get_implementation(), op,
                        src->common.extended_format_code, src->common.flags,
                        glyph_format, glyph_flags | extra,
@@ -576,7 +576,7 @@ add_glyphs (pixman_glyph_cache_t *cache,
                white_src = TRUE;
            }
 
-           _pixman_lookup_composite_function (
+           _pixman_implementation_lookup_composite (
                get_implementation(), PIXMAN_OP_ADD,
                src_format, info.src_flags,
                mask_format, info.mask_flags,
diff --git a/pixman/pixman-implementation.c b/pixman/pixman-implementation.c
index 18da162..1da9d82 100644
--- a/pixman/pixman-implementation.c
+++ b/pixman/pixman-implementation.c
@@ -65,6 +65,118 @@ _pixman_implementation_create (pixman_implementation_t 
*delegate,
     return imp;
 }
 
+#define N_CACHED_FAST_PATHS 8
+
+typedef struct
+{
+    struct
+    {
+       pixman_implementation_t *       imp;
+       pixman_fast_path_t              fast_path;
+    } cache [N_CACHED_FAST_PATHS];
+} cache_t;
+
+PIXMAN_DEFINE_THREAD_LOCAL (cache_t, fast_path_cache);
+
+pixman_bool_t
+_pixman_implementation_lookup_composite (pixman_implementation_t  *toplevel,
+                                        pixman_op_t               op,
+                                        pixman_format_code_t      src_format,
+                                        uint32_t                  src_flags,
+                                        pixman_format_code_t      mask_format,
+                                        uint32_t                  mask_flags,
+                                        pixman_format_code_t      dest_format,
+                                        uint32_t                  dest_flags,
+                                        pixman_implementation_t **out_imp,
+                                        pixman_composite_func_t  *out_func)
+{
+    pixman_implementation_t *imp;
+    cache_t *cache;
+    int i;
+
+    /* Check cache for fast paths */
+    cache = PIXMAN_GET_THREAD_LOCAL (fast_path_cache);
+
+    for (i = 0; i < N_CACHED_FAST_PATHS; ++i)
+    {
+       const pixman_fast_path_t *info = &(cache->cache[i].fast_path);
+
+       /* Note that we check for equality here, not whether
+        * the cached fast path matches. This is to prevent
+        * us from selecting an overly general fast path
+        * when a more specific one would work.
+        */
+       if (info->op == op                      &&
+           info->src_format == src_format      &&
+           info->mask_format == mask_format    &&
+           info->dest_format == dest_format    &&
+           info->src_flags == src_flags        &&
+           info->mask_flags == mask_flags      &&
+           info->dest_flags == dest_flags      &&
+           info->func)
+       {
+           *out_imp = cache->cache[i].imp;
+           *out_func = cache->cache[i].fast_path.func;
+
+           goto update_cache;
+       }
+    }
+
+    for (imp = toplevel; imp != NULL; imp = imp->delegate)
+    {
+       const pixman_fast_path_t *info = imp->fast_paths;
+
+       while (info->op != PIXMAN_OP_NONE)
+       {
+           if ((info->op == op || info->op == PIXMAN_OP_any)           &&
+               /* Formats */
+               ((info->src_format == src_format) ||
+                (info->src_format == PIXMAN_any))                      &&
+               ((info->mask_format == mask_format) ||
+                (info->mask_format == PIXMAN_any))                     &&
+               ((info->dest_format == dest_format) ||
+                (info->dest_format == PIXMAN_any))                     &&
+               /* Flags */
+               (info->src_flags & src_flags) == info->src_flags        &&
+               (info->mask_flags & mask_flags) == info->mask_flags     &&
+               (info->dest_flags & dest_flags) == info->dest_flags)
+           {
+               *out_imp = imp;
+               *out_func = info->func;
+
+               /* Set i to the last spot in the cache so that the
+                * move-to-front code below will work
+                */
+               i = N_CACHED_FAST_PATHS - 1;
+
+               goto update_cache;
+           }
+
+           ++info;
+       }
+    }
+    return FALSE;
+
+update_cache:
+    if (i)
+    {
+       while (i--)
+           cache->cache[i + 1] = cache->cache[i];
+
+       cache->cache[0].imp = *out_imp;
+       cache->cache[0].fast_path.op = op;
+       cache->cache[0].fast_path.src_format = src_format;
+       cache->cache[0].fast_path.src_flags = src_flags;
+       cache->cache[0].fast_path.mask_format = mask_format;
+       cache->cache[0].fast_path.mask_flags = mask_flags;
+       cache->cache[0].fast_path.dest_format = dest_format;
+       cache->cache[0].fast_path.dest_flags = dest_flags;
+       cache->cache[0].fast_path.func = *out_func;
+    }
+
+    return TRUE;
+}
+
 pixman_combine_32_func_t
 _pixman_implementation_lookup_combiner (pixman_implementation_t *imp,
                                        pixman_op_t              op,
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index fe5f7c6..e671508 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -489,6 +489,18 @@ pixman_implementation_t *
 _pixman_implementation_create (pixman_implementation_t *delegate,
                               const pixman_fast_path_t *fast_paths);
 
+pixman_bool_t
+_pixman_implementation_lookup_composite (pixman_implementation_t  *toplevel,
+                                        pixman_op_t               op,
+                                        pixman_format_code_t      src_format,
+                                        uint32_t                  src_flags,
+                                        pixman_format_code_t      mask_format,
+                                        uint32_t                  mask_flags,
+                                        pixman_format_code_t      dest_format,
+                                        uint32_t                  dest_flags,
+                                        pixman_implementation_t **out_imp,
+                                        pixman_composite_func_t  *out_func);
+
 pixman_combine_32_func_t
 _pixman_implementation_lookup_combiner (pixman_implementation_t *imp,
                                        pixman_op_t              op,
@@ -770,18 +782,6 @@ pixman_contract (uint32_t *      dst,
                  const uint64_t *src,
                  int             width);
 
-pixman_bool_t
-_pixman_lookup_composite_function (pixman_implementation_t     *toplevel,
-                                  pixman_op_t                  op,
-                                  pixman_format_code_t         src_format,
-                                  uint32_t                     src_flags,
-                                  pixman_format_code_t         mask_format,
-                                  uint32_t                     mask_flags,
-                                  pixman_format_code_t         dest_format,
-                                  uint32_t                     dest_flags,
-                                  pixman_implementation_t    **out_imp,
-                                  pixman_composite_func_t     *out_func);
-
 /* Region Helpers */
 pixman_bool_t
 pixman_region32_copy_from_region16 (pixman_region32_t *dst,
diff --git a/pixman/pixman-utils.c b/pixman/pixman-utils.c
index 93c061a..5633f8f 100644
--- a/pixman/pixman-utils.c
+++ b/pixman/pixman-utils.c
@@ -30,118 +30,6 @@
 
 #include "pixman-private.h"
 
-#define N_CACHED_FAST_PATHS 8
-
-typedef struct
-{
-    struct
-    {
-       pixman_implementation_t *       imp;
-       pixman_fast_path_t              fast_path;
-    } cache [N_CACHED_FAST_PATHS];
-} cache_t;
-
-PIXMAN_DEFINE_THREAD_LOCAL (cache_t, fast_path_cache);
-
-pixman_bool_t
-_pixman_lookup_composite_function (pixman_implementation_t     *toplevel,
-                                  pixman_op_t                  op,
-                                  pixman_format_code_t         src_format,
-                                  uint32_t                     src_flags,
-                                  pixman_format_code_t         mask_format,
-                                  uint32_t                     mask_flags,
-                                  pixman_format_code_t         dest_format,
-                                  uint32_t                     dest_flags,
-                                  pixman_implementation_t    **out_imp,
-                                  pixman_composite_func_t     *out_func)
-{
-    pixman_implementation_t *imp;
-    cache_t *cache;
-    int i;
-
-    /* Check cache for fast paths */
-    cache = PIXMAN_GET_THREAD_LOCAL (fast_path_cache);
-
-    for (i = 0; i < N_CACHED_FAST_PATHS; ++i)
-    {
-       const pixman_fast_path_t *info = &(cache->cache[i].fast_path);
-
-       /* Note that we check for equality here, not whether
-        * the cached fast path matches. This is to prevent
-        * us from selecting an overly general fast path
-        * when a more specific one would work.
-        */
-       if (info->op == op                      &&
-           info->src_format == src_format      &&
-           info->mask_format == mask_format    &&
-           info->dest_format == dest_format    &&
-           info->src_flags == src_flags        &&
-           info->mask_flags == mask_flags      &&
-           info->dest_flags == dest_flags      &&
-           info->func)
-       {
-           *out_imp = cache->cache[i].imp;
-           *out_func = cache->cache[i].fast_path.func;
-
-           goto update_cache;
-       }
-    }
-
-    for (imp = toplevel; imp != NULL; imp = imp->delegate)
-    {
-       const pixman_fast_path_t *info = imp->fast_paths;
-
-       while (info->op != PIXMAN_OP_NONE)
-       {
-           if ((info->op == op || info->op == PIXMAN_OP_any)           &&
-               /* Formats */
-               ((info->src_format == src_format) ||
-                (info->src_format == PIXMAN_any))                      &&
-               ((info->mask_format == mask_format) ||
-                (info->mask_format == PIXMAN_any))                     &&
-               ((info->dest_format == dest_format) ||
-                (info->dest_format == PIXMAN_any))                     &&
-               /* Flags */
-               (info->src_flags & src_flags) == info->src_flags        &&
-               (info->mask_flags & mask_flags) == info->mask_flags     &&
-               (info->dest_flags & dest_flags) == info->dest_flags)
-           {
-               *out_imp = imp;
-               *out_func = info->func;
-
-               /* Set i to the last spot in the cache so that the
-                * move-to-front code below will work
-                */
-               i = N_CACHED_FAST_PATHS - 1;
-
-               goto update_cache;
-           }
-
-           ++info;
-       }
-    }
-    return FALSE;
-
-update_cache:
-    if (i)
-    {
-       while (i--)
-           cache->cache[i + 1] = cache->cache[i];
-
-       cache->cache[0].imp = *out_imp;
-       cache->cache[0].fast_path.op = op;
-       cache->cache[0].fast_path.src_format = src_format;
-       cache->cache[0].fast_path.src_flags = src_flags;
-       cache->cache[0].fast_path.mask_format = mask_format;
-       cache->cache[0].fast_path.mask_flags = mask_flags;
-       cache->cache[0].fast_path.dest_format = dest_format;
-       cache->cache[0].fast_path.dest_flags = dest_flags;
-       cache->cache[0].fast_path.func = *out_func;
-    }
-
-    return TRUE;
-}
-
 pixman_bool_t
 _pixman_multiply_overflows_size (size_t a, size_t b)
 {
diff --git a/pixman/pixman.c b/pixman/pixman.c
index 994ef38..739cc79 100644
--- a/pixman/pixman.c
+++ b/pixman/pixman.c
@@ -669,7 +669,7 @@ pixman_image_composite32 (pixman_op_t      op,
      */
     op = optimize_operator (op, src_flags, mask_flags, dest_flags);
 
-    if (_pixman_lookup_composite_function (
+    if (_pixman_implementation_lookup_composite (
            get_implementation (), op,
            src_format, src_flags, mask_format, mask_flags, dest_format, 
dest_flags,
            &imp, &func))
-- 
1.7.4

_______________________________________________
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman

Reply via email to