summaryrefslogtreecommitdiff
path: root/src/cairo-cache.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2004-12-20 09:43:59 +0000
committerAlexander Larsson <alexl@redhat.com>2004-12-20 09:43:59 +0000
commit5c1c5e67dc18c3ad96a1d885b4c7331d48036158 (patch)
tree592c6ac3818b96d47dfec887f50d9e62720e5d51 /src/cairo-cache.c
parent8fe87a32a8bf4754a24e27aad74c1f1f5dbe9fc7 (diff)
downloadcairo-5c1c5e67dc18c3ad96a1d885b4c7331d48036158.tar.gz
Add _cairo_gstate_restore_external_state, _cairo_fixed_integer_floor and _cairo_fixed_integer_ceil.
Call _cairo_gstate_restore_external_state on restore. Fix cache-misses. Implement floor and ceil Restore surface clip region on restroe. (_calculate_region_for_intermediate_clip_surface), (_cairo_gstate_clip_and_composite_trapezoids), (_cairo_gstate_show_surface), (_cairo_gstate_show_glyphs): Create intermediate clip surfaces of the minimal required size.
Diffstat (limited to 'src/cairo-cache.c')
-rw-r--r--src/cairo-cache.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/cairo-cache.c b/src/cairo-cache.c
index 48848162d..9e0777844 100644
--- a/src/cairo-cache.c
+++ b/src/cairo-cache.c
@@ -180,10 +180,12 @@ _cache_lookup (cairo_cache_t *cache,
if (predicate != NULL)
{
/* We are looking up an exact entry. */
- if (*probe != NULL
- && *probe != DEAD_ENTRY
- && (*probe)->hashcode == hash
- && predicate (cache, key, *probe))
+ if (*probe == NULL)
+ /* Found an empty spot, there can't be a match */
+ break;
+ else if (*probe != DEAD_ENTRY
+ && (*probe)->hashcode == hash
+ && predicate (cache, key, *probe))
return probe;
}
else