diff options
author | Uli Schlachter <psychon@znc.in> | 2012-09-25 11:58:18 +0200 |
---|---|---|
committer | Uli Schlachter <psychon@znc.in> | 2012-09-25 11:58:18 +0200 |
commit | 9735d1d716262a0c4f0a77363ce8c7d6064fa7d6 (patch) | |
tree | 1b8c189d484af5cfe819347988b34c2124f83e81 | |
parent | 2be125817ade58ca25cc6cc6b23e2f4dbea722c6 (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.c | 7 |
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, |