util: use util_same_surface() to compare surface pointers
authorBrian Paul <brianp@vmware.com>
Thu, 6 Aug 2009 15:02:36 +0000 (09:02 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 7 Aug 2009 19:48:26 +0000 (13:48 -0600)
src/gallium/auxiliary/util/u_blit.c

index f7cc7dd3759bdc8f003380709f6f1e0149a27e5f..739aa51564ed9de7ce26e247b51d7ce42b46ca42 100644 (file)
@@ -328,8 +328,9 @@ util_blit_pixels(struct blit_state *ctx,
                                       PIPE_TEXTURE_USAGE_SAMPLER, 0));
 
    /* do the regions overlap? */
-   overlap = (src == dst) && regions_overlap(srcX0, srcY0, srcX1, srcY1,
-                                             dstX0, dstY0, dstX1, dstY1);
+   overlap = util_same_surface(src, dst) &&
+      regions_overlap(srcX0, srcY0, srcX1, srcY1,
+                      dstX0, dstY0, dstX1, dstY1);
 
    /*
     * Check for simple case:  no format conversion, no flipping, no stretching,
@@ -343,7 +344,6 @@ util_blit_pixels(struct blit_state *ctx,
        (dstX1 - dstX0) == (srcX1 - srcX0) &&
        (dstY1 - dstY0) == (srcY1 - srcY0) &&
        !overlap) {
-      /* FIXME: this will most surely fail for overlapping rectangles */
       pipe->surface_copy(pipe,
                         dst, dstX0, dstY0, /* dest */
                         src, srcX0, srcY0, /* src */