Set up scanline getters for source pictures
authorSøren Sandmann Pedersen <sandmann@redhat.com>
Sun, 3 May 2009 02:42:59 +0000 (22:42 -0400)
committerSøren Sandmann Pedersen <sandmann@redhat.com>
Sat, 16 May 2009 19:12:35 +0000 (15:12 -0400)
pixman/pixman-conical-gradient.c
pixman/pixman-image.c
pixman/pixman-linear-gradient.c
pixman/pixman-radial-gradient.c
pixman/pixman-solid-fill.c

index 7f8853c..cd8d36c 100644 (file)
@@ -27,7 +27,8 @@
 static void
 conical_gradient_property_changed (pixman_image_t *image)
 {
-    
+    image->common.get_scanline_64 = (scanFetchProc)pixmanFetchSourcePict64;
+    image->common.get_scanline_32 = (scanFetchProc)pixmanFetchSourcePict;
 }
 
 PIXMAN_EXPORT pixman_image_t *
index d0bf102..859cb0d 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <assert.h>
 
 #include "pixman-private.h"
 
@@ -142,15 +143,10 @@ static void fbFetch64(bits_image_t * image, int x, int y, int width, uint64_t *b
 static void
 set_fetchers (pixman_image_t *image)
 {
-    if (IS_SOURCE_IMAGE (image))
-    {
-       image->common.get_scanline_64 = (scanFetchProc)pixmanFetchSourcePict64;
-       image->common.get_scanline_32 = (scanFetchProc)pixmanFetchSourcePict;
-    }
-    else
+    if (!IS_SOURCE_IMAGE (image))
     {
        bits_image_t *bits = (bits_image_t *)image;
-
+       
        if (bits->common.alpha_map)
        {
            image->common.get_scanline_64 =
@@ -186,6 +182,10 @@ _pixman_image_get_fetcher (pixman_image_t *image,
                           int             wide)
 {
     set_fetchers (image);
+
+    assert (image->common.get_scanline_64);
+    assert (image->common.get_scanline_32);
+    
     if (wide)
        return image->common.get_scanline_64;
     else
index 2a8605c..46217a0 100644 (file)
@@ -86,7 +86,8 @@ linear_gradient_classify (pixman_image_t *image,
 static void
 linear_gradient_property_changed (pixman_image_t *image)
 {
-    
+    image->common.get_scanline_64 = (scanFetchProc)pixmanFetchSourcePict64;
+    image->common.get_scanline_32 = (scanFetchProc)pixmanFetchSourcePict;
 }
 
 PIXMAN_EXPORT pixman_image_t *
index ca52c11..62f8f27 100644 (file)
@@ -27,7 +27,8 @@
 static void
 radial_gradient_property_changed (pixman_image_t *image)
 {
-    
+    image->common.get_scanline_64 = (scanFetchProc)pixmanFetchSourcePict64;
+    image->common.get_scanline_32 = (scanFetchProc)pixmanFetchSourcePict;
 }
 
 PIXMAN_EXPORT pixman_image_t *
index 2663012..b6e8ebb 100644 (file)
@@ -37,7 +37,8 @@ solid_fill_classify (pixman_image_t *image,
 static void
 solid_fill_property_changed (pixman_image_t *image)
 {
-    
+    image->common.get_scanline_64 = (scanFetchProc)pixmanFetchSourcePict64;
+    image->common.get_scanline_32 = (scanFetchProc)pixmanFetchSourcePict;
 }
 
 static uint32_t