[cairo] [PATCH] [cairo-gl] Fix support for gl window surface resizes

Chris Wilson chris at chris-wilson.co.uk
Fri Jan 7 07:40:29 PST 2011


On Fri, 7 Jan 2011 16:31:43 +0200, Alexandros Frantzis <alexandros.frantzis at linaro.org> wrote:
> From 94ced6d4c126fc8142dd32b2e761be8f9012ef52 Mon Sep 17 00:00:00 2001
> From: Alexandros Frantzis <alexandros.frantzis at linaro.org>
> Date: Fri, 7 Jan 2011 13:27:27 +0200
> Subject: [PATCH 2/2] gl: Ensure that gl surface resizes are properly applied
> 
> If a gl surface is resized (with cairo_gl_surface_set_size()) while being the
> current target, the resize does not take effect until the target changes to a
> different surface and back to the original one. This patch adds tracking of
> pending resizes and ensures that a resize always take effect the next time
> a resized surface is used as the target.
> ---
>  src/cairo-gl-device.c  |    4 +++-
>  src/cairo-gl-private.h |    1 +
>  src/cairo-gl-surface.c |    2 ++
>  3 files changed, 6 insertions(+), 1 deletions(-)
> 
> diff --git a/src/cairo-gl-device.c b/src/cairo-gl-device.c
> index 3793f9d..44b37d9 100644
> --- a/src/cairo-gl-device.c
> +++ b/src/cairo-gl-device.c
> @@ -279,7 +279,7 @@ void
>  _cairo_gl_context_set_destination (cairo_gl_context_t *ctx,
>                                     cairo_gl_surface_t *surface)
>  {
> -    if (ctx->current_target == surface)
> +    if (ctx->current_target == surface && ! surface->resize_pending)
>          return;

Hmm, don't you need to invalidate all contexts that have this surface as
they current target?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the cairo mailing list