summaryrefslogtreecommitdiff
path: root/src/cairo-xcb-surface-render.c
diff options
context:
space:
mode:
authorUli Schlachter <psychon@znc.in>2011-08-02 22:34:54 +0200
committerUli Schlachter <psychon@znc.in>2011-08-02 22:34:54 +0200
commit7b5b29cc0ffc44066589d371d872e355ce56343b (patch)
tree742e48bf7cfcf9af63b9edd92ef72a8c614add6a /src/cairo-xcb-surface-render.c
parentd356deb18201dd8054cff158c95c6fd6f0f38dcd (diff)
xcb: Handle deferred clear in _upload_image_inplace
Fixes: clip-device-offset, image-surface-source, composite-integer-translate-source, move-to-show-surface, source-surface-scale-paint, translate-show-surface, perhaps even more? Signed-off-by: Uli Schlachter <psychon@znc.in>
Diffstat (limited to 'src/cairo-xcb-surface-render.c')
-rw-r--r--src/cairo-xcb-surface-render.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c
index 364e5c00..e08ca683 100644
--- a/src/cairo-xcb-surface-render.c
+++ b/src/cairo-xcb-surface-render.c
@@ -2692,11 +2692,16 @@ _upload_image_inplace (cairo_xcb_surface_t *surface,
if (! cairo_boxes_for_each_box (boxes, image_contains_box, &icb))
return CAIRO_INT_STATUS_UNSUPPORTED;
+ if (surface->deferred_clear) {
+ status = _cairo_xcb_surface_clear (surface);
+ if (unlikely (status))
+ return status;
+ }
+
status = _cairo_xcb_connection_acquire (surface->connection);
if (unlikely (status))
return status;
-
iub.surface = surface;
iub.image = image;
iub.gc = _cairo_xcb_screen_get_gc (surface->screen,