diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-09-13 16:45:46 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-09-13 16:45:46 +0100 |
commit | 69d97d97bea86e7f4223d857803fb7f0ec0d369f (patch) | |
tree | 6c480dcab67b802b9f24bce4f8e792ddd8d2cb68 | |
parent | 6ee216000ae487492fceda0fb3fecb20bb9a41f6 (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.c | 4 |
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; |