summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-08-10 17:42:05 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-08-10 17:44:25 +0100
commit2a2a19457bb934f9585bfdb97730fab99c8e386c (patch)
treee563ff6e518a7b060498b9184feb6d39c121816f /src
parent2e8ce34454a4d93986f590b1d2b024d1a1eb6bde (diff)
[surface] Check for a NULL snapshot
The backend is permitted to return a NULL surface when snapshotting to indicate that it cannot (or choses not to) implement the method.
Diffstat (limited to 'src')
-rw-r--r--src/cairo-surface.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index 8c8b8677c..84a301216 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -1633,19 +1633,21 @@ _cairo_surface_snapshot (cairo_surface_t *surface)
if (surface->backend->snapshot != NULL) {
snapshot = surface->backend->snapshot (surface);
- if (unlikely (snapshot->status))
- return snapshot;
-
- /* Is this surface just a proxy - e.g. paginated surfaces? */
- if (snapshot->backend != surface->backend) {
- cairo_surface_t *previous;
-
- previous = _cairo_surface_has_snapshot (surface,
- snapshot->backend,
- snapshot->content);
- if (previous != NULL) {
- cairo_surface_destroy (snapshot);
- return cairo_surface_reference (previous);
+ if (snapshot != NULL) {
+ if (unlikely (snapshot->status))
+ return snapshot;
+
+ /* Is this surface just a proxy - e.g. paginated surfaces? */
+ if (snapshot->backend != surface->backend) {
+ cairo_surface_t *previous;
+
+ previous = _cairo_surface_has_snapshot (surface,
+ snapshot->backend,
+ snapshot->content);
+ if (previous != NULL) {
+ cairo_surface_destroy (snapshot);
+ return cairo_surface_reference (previous);
+ }
}
}
}