pixman: Branch 'master'

Søren Sandmann Pedersen sandmann at kemper.freedesktop.org
Fri Jul 17 19:42:29 PDT 2009


 pixman/pixman-access.c     |    2 +-
 pixman/pixman-accessor.h   |    4 ++--
 pixman/pixman-bits-image.c |    2 ++
 pixman/pixman-edge.c       |    4 +++-
 pixman/pixman-fast-path.c  |    4 ++--
 pixman/pixman-general.c    |    2 +-
 pixman/pixman-image.c      |   11 ++++++-----
 pixman/pixman-private.h    |    2 --
 pixman/pixman-utils.c      |   10 +++++-----
 9 files changed, 22 insertions(+), 19 deletions(-)

New commits:
commit 934f4f4604ccf06db5d5aec07e58f0a0fbe7d283
Author: Søren Sandmann Pedersen <sandmann at redhat.com>
Date:   Fri Jul 17 22:40:41 2009 -0400

    Move read and write functions to the bits_image_t struct.
    
    Those fields were duplicated between image_common and bits_image_t
    before.

diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
index 64f3b7f..19f70d7 100644
--- a/pixman/pixman-access.c
+++ b/pixman/pixman-access.c
@@ -3444,7 +3444,7 @@ _pixman_bits_image_setup_raw_accessors_accessors (bits_image_t *image);
 void
 _pixman_bits_image_setup_raw_accessors (bits_image_t *image)
 {
-    if (image->common.read_func || image->common.write_func)
+    if (image->read_func || image->write_func)
 	_pixman_bits_image_setup_raw_accessors_accessors (image);
     else
 	setup_accessors (image);
diff --git a/pixman/pixman-accessor.h b/pixman/pixman-accessor.h
index a72c52a..90c8ea7 100644
--- a/pixman/pixman-accessor.h
+++ b/pixman/pixman-accessor.h
@@ -3,9 +3,9 @@
 #define ACCESS(sym) sym##_accessors
 
 #define READ(img, ptr)							\
-    ((img)->common.read_func ((ptr), sizeof(*(ptr))))
+    (((bits_image_t *)(img))->read_func ((ptr), sizeof(*(ptr))))
 #define WRITE(img, ptr,val)						\
-    ((img)->common.write_func ((ptr), (val), sizeof (*(ptr))))
+    (((bits_image_t *)(img))->write_func ((ptr), (val), sizeof (*(ptr))))
 
 #define MEMCPY_WRAPPED(img, dst, src, size)				\
     do {								\
diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index e366c85..75c5d3a 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -954,6 +954,8 @@ pixman_image_create_bits (pixman_format_code_t format,
     image->bits.height = height;
     image->bits.bits = bits;
     image->bits.free_me = free_me;
+    image->bits.read_func = NULL;
+    image->bits.write_func = NULL;
 
     /* The rowstride is stored in number of uint32_t */
     image->bits.rowstride = rowstride_bytes / (int) sizeof (uint32_t);
diff --git a/pixman/pixman-edge.c b/pixman/pixman-edge.c
index 80e1e5c..81a2e96 100644
--- a/pixman/pixman-edge.c
+++ b/pixman/pixman-edge.c
@@ -370,7 +370,9 @@ pixman_rasterize_edges (pixman_image_t *image,
                         pixman_fixed_t  t,
                         pixman_fixed_t  b)
 {
-    if (image->common.read_func || image->common.write_func)
+    return_if_fail (image->type == BITS);
+    
+    if (image->bits.read_func || image->bits.write_func)
 	pixman_rasterize_edges_accessors (image, l, r, t, b);
     else
 	pixman_rasterize_edges_no_accessors (image, l, r, t, b);
diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c
index e27bd8c..8de922f 100644
--- a/pixman/pixman-fast-path.c
+++ b/pixman/pixman-fast-path.c
@@ -1217,8 +1217,8 @@ fast_path_composite (pixman_implementation_t *imp,
         && (src->common.filter == PIXMAN_FILTER_NEAREST)
         && PIXMAN_FORMAT_BPP (dest->bits.format) == 32
         && src->bits.format == dest->bits.format
-        && !src->common.read_func && !src->common.write_func
-        && !dest->common.read_func && !dest->common.write_func)
+        && !src->bits.read_func && !src->bits.write_func
+        && !dest->bits.read_func && !dest->bits.write_func)
     {
 	/* ensure that the transform matrix only has a scale */
 	if (src->common.transform->matrix[0][1] == 0 &&
diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
index df98b98..898474f 100644
--- a/pixman/pixman-general.c
+++ b/pixman/pixman-general.c
@@ -134,7 +134,7 @@ general_composite_rect  (pixman_implementation_t *imp,
      */
     if (!wide &&
         !dest->common.alpha_map &&
-        !dest->common.write_func &&
+        !dest->bits.write_func &&
         (op == PIXMAN_OP_ADD || op == PIXMAN_OP_OVER) &&
         (dest->bits.format == PIXMAN_a8r8g8b8 ||
          dest->bits.format == PIXMAN_x8r8g8b8))
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index f6bda58..8b4fb64 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -115,8 +115,6 @@ _pixman_image_allocate (void)
 	common->alpha_map = NULL;
 	common->component_alpha = FALSE;
 	common->ref_count = 1;
-	common->read_func = NULL;
-	common->write_func = NULL;
 	common->classify = NULL;
 	common->client_clip = FALSE;
 	common->destroy_func = NULL;
@@ -450,10 +448,13 @@ pixman_image_set_accessors (pixman_image_t *           image,
 {
     return_if_fail (image != NULL);
 
-    image->common.read_func = read_func;
-    image->common.write_func = write_func;
+    if (image->type == BITS)
+    {
+	image->bits.read_func = read_func;
+	image->bits.write_func = write_func;
 
-    image_property_changed (image);
+	image_property_changed (image);
+    }
 }
 
 PIXMAN_EXPORT uint32_t *
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index 07259a0..052f3a9 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -88,8 +88,6 @@ struct image_common
     int                         alpha_origin_x;
     int                         alpha_origin_y;
     pixman_bool_t               component_alpha;
-    pixman_read_memory_func_t   read_func;
-    pixman_write_memory_func_t  write_func;
     classify_func_t             classify;
     property_changed_func_t     property_changed;
     fetch_scanline_t            get_scanline_32;
diff --git a/pixman/pixman-utils.c b/pixman/pixman-utils.c
index b011601..3dfacde 100644
--- a/pixman/pixman-utils.c
+++ b/pixman/pixman-utils.c
@@ -678,11 +678,11 @@ _pixman_run_fast_path (const pixman_fast_path_t *paths,
         && (!mask || (mask->common.filter != PIXMAN_FILTER_CONVOLUTION &&
                       mask->common.repeat != PIXMAN_REPEAT_PAD &&
                       mask->common.repeat != PIXMAN_REPEAT_REFLECT))
-        && !src->common.read_func && !src->common.write_func
-        && !(mask && mask->common.read_func)
-        && !(mask && mask->common.write_func)
-        && !dest->common.read_func
-        && !dest->common.write_func)
+        && !src->bits.read_func && !src->bits.write_func
+        && !(mask && mask->bits.read_func)
+        && !(mask && mask->bits.write_func)
+        && !dest->bits.read_func
+        && !dest->bits.write_func)
     {
 	const pixman_fast_path_t *info;
 	pixman_bool_t pixbuf;


More information about the xorg-commit mailing list