summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-09-13 16:45:46 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2012-09-13 16:45:46 +0100
commit69d97d97bea86e7f4223d857803fb7f0ec0d369f (patch)
tree6c480dcab67b802b9f24bce4f8e792ddd8d2cb68
parent6ee216000ae487492fceda0fb3fecb20bb9a41f6 (diff)
xlib: Force the fallback flush before updating the external Drawable
_cairo_surface_begin_modification() performs an internal flush, for which the xlib backend skips flushing the fallback surface as it will continue to use it for the subsequent operation. In the case where we are flushing prior to updating the Drawable, we need to perform an external flush which will trigger the posting of the damage from the fallback surface. Reported-by: Weng Xuetian <wengxt@gmail.com> References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/cairo-xlib-surface.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
index 4d1ef908..dd9fc117 100644
--- a/src/cairo-xlib-surface.c
+++ b/src/cairo-xlib-surface.c
@@ -2067,7 +2067,7 @@ cairo_xlib_surface_set_size (cairo_surface_t *abstract_surface,
return;
}
- status = _cairo_surface_begin_modification (abstract_surface);
+ status = _cairo_xlib_surface_flush (abstract_surface, 0);
if (unlikely (status)) {
_cairo_surface_set_error (abstract_surface, status);
return;
@@ -2128,7 +2128,7 @@ cairo_xlib_surface_set_drawable (cairo_surface_t *abstract_surface,
if (surface->owns_pixmap)
return;
- status = _cairo_surface_begin_modification (abstract_surface);
+ status = _cairo_xlib_surface_flush (abstract_surface, 0);
if (unlikely (status)) {
_cairo_surface_set_error (abstract_surface, status);
return;