summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUli Schlachter <psychon@znc.in>2012-09-25 11:58:18 +0200
committerUli Schlachter <psychon@znc.in>2012-09-25 11:58:18 +0200
commit9735d1d716262a0c4f0a77363ce8c7d6064fa7d6 (patch)
tree1b8c189d484af5cfe819347988b34c2124f83e81
parent2be125817ade58ca25cc6cc6b23e2f4dbea722c6 (diff)
mark_dirty: Check surface status
This problem was introduced in commit "xlib: Implement SHM fallbacks and fast upload paths". Before, cairo_surface_mark_dirty() directly called cairo_surface_mark_dirty_rectangle() with special "magical arguments" and thus didn't need any checks on the surface status. Fixes: api-special-cases Signed-off-by: Uli Schlachter <psychon@znc.in>
-rw-r--r--src/cairo-surface.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index cbb2cfe7..c11e9e71 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -1512,6 +1512,13 @@ cairo_surface_mark_dirty (cairo_surface_t *surface)
{
cairo_rectangle_int_t extents;
+ if (unlikely (surface->status))
+ return;
+ if (unlikely (surface->finished)) {
+ _cairo_surface_set_error (surface, _cairo_error (CAIRO_STATUS_SURFACE_FINISHED));
+ return;
+ }
+
_cairo_surface_get_extents (surface, &extents);
cairo_surface_mark_dirty_rectangle (surface,
extents.x, extents.y,