diff options
author | Graydon Hoare <graydon@redhat.com> | 2004-02-02 11:20:44 +0000 |
---|---|---|
committer | Graydon Hoare <graydon@redhat.com> | 2004-02-02 11:20:44 +0000 |
commit | 34e0e7eec8a1a8434c5ad52fb754f2bbaf224ced (patch) | |
tree | 3f551f14b6312534cf8497ca73f4d0bbb172b0a2 | |
parent | b66bbf48790238174efd1491bfcd8c0d77f43f13 (diff) |
New predicate. (_cairo_xlib_surface_set_filter): Skip filterless servers. (_cairo_xlib_surface_clone_similar): Fix typo.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/cairo-xlib-surface.c | 8 | ||||
-rw-r--r-- | src/cairo_xlib_surface.c | 8 |
3 files changed, 17 insertions, 6 deletions
@@ -1,3 +1,10 @@ +2004-02-02 Graydon Hoare <graydon@redhat.com> + + * src/cairo_xlib_surface.c + (CAIRO_SURFACE_RENDER_HAS_FILTERS): New predicate. + (_cairo_xlib_surface_set_filter): Skip filterless servers. + (_cairo_xlib_surface_clone_similar): Fix typo. + 2004-01-27 Graydon Hoare <graydon@redhat.com> * src/cairoint.h (cairo_surface): New "filter" field. diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index f5923d2af..1630447f4 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -90,6 +90,7 @@ typedef struct cairo_xlib_surface { #define CAIRO_SURFACE_RENDER_HAS_TRIFAN(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) #define CAIRO_SURFACE_RENDER_HAS_PICTURE_TRANSFORM(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) +#define CAIRO_SURFACE_RENDER_HAS_FILTERS(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) static int _CAIRO_FORMAT_DEPTH (cairo_format_t format) @@ -320,9 +321,10 @@ _cairo_xlib_surface_set_filter (void *abstract_surface, cairo_filter_t filter) cairo_xlib_surface_t *surface = abstract_surface; char *render_filter; - if (!surface->picture) + if (!(surface->picture + && CAIRO_SURFACE_RENDER_HAS_FILTERS(surface))) return CAIRO_STATUS_SUCCESS; - + switch (filter) { case CAIRO_FILTER_FAST: render_filter = FilterFast; @@ -386,7 +388,7 @@ _cairo_xlib_surface_clone_similar (cairo_surface_t *src, if (clone == NULL) return NULL; - _cairo_xlib_surface_set_filter (clone, cairo_surface_get_filter(src_image)); + _cairo_xlib_surface_set_filter (clone, cairo_surface_get_filter(src)); _cairo_xlib_surface_set_image (clone, src_image); diff --git a/src/cairo_xlib_surface.c b/src/cairo_xlib_surface.c index f5923d2af..1630447f4 100644 --- a/src/cairo_xlib_surface.c +++ b/src/cairo_xlib_surface.c @@ -90,6 +90,7 @@ typedef struct cairo_xlib_surface { #define CAIRO_SURFACE_RENDER_HAS_TRIFAN(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) #define CAIRO_SURFACE_RENDER_HAS_PICTURE_TRANSFORM(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) +#define CAIRO_SURFACE_RENDER_HAS_FILTERS(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) static int _CAIRO_FORMAT_DEPTH (cairo_format_t format) @@ -320,9 +321,10 @@ _cairo_xlib_surface_set_filter (void *abstract_surface, cairo_filter_t filter) cairo_xlib_surface_t *surface = abstract_surface; char *render_filter; - if (!surface->picture) + if (!(surface->picture + && CAIRO_SURFACE_RENDER_HAS_FILTERS(surface))) return CAIRO_STATUS_SUCCESS; - + switch (filter) { case CAIRO_FILTER_FAST: render_filter = FilterFast; @@ -386,7 +388,7 @@ _cairo_xlib_surface_clone_similar (cairo_surface_t *src, if (clone == NULL) return NULL; - _cairo_xlib_surface_set_filter (clone, cairo_surface_get_filter(src_image)); + _cairo_xlib_surface_set_filter (clone, cairo_surface_get_filter(src)); _cairo_xlib_surface_set_image (clone, src_image); |