diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2008-10-20 22:04:58 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2008-10-20 23:20:25 +0100 |
commit | c7951c4a368baaeeadca4e2a18d3ad45225380a0 (patch) | |
tree | 183db074f3bb0173ac6f21a56f99cbf3a39b0d18 /src/cairo-directfb-surface.c | |
parent | 98933fd4b8579b68623a8212015769b058db43f5 (diff) |
[directfb] Perfom text fallback if emulating clip regions.
Fallback if we have a clip that is not a simple region.
Diffstat (limited to 'src/cairo-directfb-surface.c')
-rw-r--r-- | src/cairo-directfb-surface.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/cairo-directfb-surface.c b/src/cairo-directfb-surface.c index ee0e5de48..b2116880e 100644 --- a/src/cairo-directfb-surface.c +++ b/src/cairo-directfb-surface.c @@ -38,14 +38,13 @@ #include "cairoint.h" #include "cairo-directfb.h" -#include <stdlib.h> - #include <directfb.h> #include <direct/types.h> #include <direct/debug.h> #include <direct/memcpy.h> #include <direct/util.h> +#include "cairo-clip-private.h" /* * Rectangle works fine. @@ -1704,6 +1703,17 @@ _cairo_directfb_surface_show_glyphs (void *abstract_dst, if (pattern->type != CAIRO_PATTERN_TYPE_SOLID) return CAIRO_INT_STATUS_UNSUPPORTED; + /* Fallback if we need to emulate clip regions */ + if (dst->base.clip && + (dst->base.clip->mode != CAIRO_CLIP_MODE_REGION || + dst->base.clip->surface != NULL)) + { + return CAIRO_INT_STATUS_UNSUPPORTED; + } + + if (! _cairo_operator_bounded_by_mask (op)) + return CAIRO_INT_STATUS_UNSUPPORTED; + if (! _directfb_get_operator (op, &sblend, &dblend) || sblend == DSBF_DESTALPHA || sblend == DSBF_INVDESTALPHA) { |