[Mesa-dev] [PATCH 3/4] dri2: Don't call the dri2 flush hook for swapbuffers unless we have a context.

Ian Romanick idr at freedesktop.org
Tue Feb 22 11:07:48 PST 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 02/21/2011 02:41 PM, Eric Anholt wrote:
> The driver only has one reasonable place to look for its context to
> flush anything, which is the current context.  Don't bother it with
> having to check.

There are some odd interactions here, but I don't completely recall the
details.  Kristian implemented this function in this way for a specific
reason.  It was either to deal with glXSwapBuffers when no context was
current or to deal with glXSwapBuffers on a drawable that isn't bound to
a context.  Otherwise the flush method would have been associated with
the context (instead of with the screen).

> ---
>  src/glx/dri2_glx.c |    9 +++++++--
>  1 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
> index a275ba5..2c28bc2 100644
> --- a/src/glx/dri2_glx.c
> +++ b/src/glx/dri2_glx.c
> @@ -535,8 +535,13 @@ dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
>      CARD64 ret = 0;
>  
>  #ifdef __DRI2_FLUSH
> -    if (psc->f)
> -    	(*psc->f->flush)(priv->driDrawable);
> +    if (psc->f) {
> +       struct glx_context *gc = __glXGetCurrentContext();
> +
> +       if (gc) {
> +	  (*psc->f->flush)(priv->driDrawable);
> +       }
> +    }
>  #endif
>  
>      /* Old servers don't send invalidate events */

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAk1kCYQACgkQX1gOwKyEAw+8VgCfbPmxFENw5p0pdYPA4uaTbEKA
AogAoJV5DVlgJi4w2yPFGE0AJH4dN9WG
=o3/e
-----END PGP SIGNATURE-----


More information about the mesa-dev mailing list