[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