summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUli Schlachter <psychon@znc.in>2011-07-01 10:26:28 +0200
committerUli Schlachter <psychon@znc.in>2011-07-01 10:26:28 +0200
commit59fadcf7d93a179554a3f615c02e48547d6b141e (patch)
tree584fdc2f459d76f7c13c13fdb64ec6ea8229dfd6
parent4495e08e9e5fbcd386bf398097c8276f7f5c862d (diff)
xlib-xcb: Fix api-special-cases test
The functions cairo_xlib_surface_set_size and cairo_xlib_surface_set_drawable didn't set the expected error when called with a finished surface. Signed-off-by: Uli Schlachter <psychon@znc.in>
-rw-r--r--src/cairo-xlib-xcb-surface.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cairo-xlib-xcb-surface.c b/src/cairo-xlib-xcb-surface.c
index 868844b1..16fabd87 100644
--- a/src/cairo-xlib-xcb-surface.c
+++ b/src/cairo-xlib-xcb-surface.c
@@ -418,6 +418,11 @@ cairo_xlib_surface_set_size (cairo_surface_t *abstract_surface,
if (unlikely (abstract_surface->status))
return;
+ if (unlikely (abstract_surface->finished)) {
+ status = _cairo_surface_set_error (abstract_surface,
+ _cairo_error (CAIRO_STATUS_SURFACE_FINISHED));
+ return;
+ }
if (surface->base.type != CAIRO_SURFACE_TYPE_XLIB) {
status = _cairo_surface_set_error (abstract_surface,
@@ -426,6 +431,10 @@ cairo_xlib_surface_set_size (cairo_surface_t *abstract_surface,
}
cairo_xcb_surface_set_size (&surface->xcb->base, width, height);
+ if (unlikely (surface->xcb->base.status)) {
+ status = _cairo_surface_set_error (abstract_surface,
+ _cairo_error (surface->xcb->base.status));
+ }
}
void
@@ -439,6 +448,11 @@ cairo_xlib_surface_set_drawable (cairo_surface_t *abstract_surface,
if (unlikely (abstract_surface->status))
return;
+ if (unlikely (abstract_surface->finished)) {
+ status = _cairo_surface_set_error (abstract_surface,
+ _cairo_error (CAIRO_STATUS_SURFACE_FINISHED));
+ return;
+ }
if (surface->base.type != CAIRO_SURFACE_TYPE_XLIB) {
status = _cairo_surface_set_error (abstract_surface,