glx: Send DestroyContext protocol at the correct times
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 7 Dec 2011 21:31:27 +0000 (13:31 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 19 Dec 2011 22:55:31 +0000 (14:55 -0800)
commit4dbd13cb3f5aeff6ddc85fd091b4677369c19778
tree6386f735fdd356d300ae5bde2a6971e587e32a82
parent3b9b42250ca9f0da6e979afc047d1c8524466076
glx: Send DestroyContext protocol at the correct times

Send the DestroyContext protocol immediately when glXDestroyContext is
called, and never call it when glXFreeContextEXT is called.  In both
cases, either destroy the client-side structures or, if the context is
current, set xid to None so that the client-side structures will be
destroyed later.

I believe this restores the behavior of the original SGI code.  See
src/glx/x11 around commit 5df82c8.  The spec doesn't say anything
about glXDestroyContext not really destroying imported contexts (it
acts like glXFreeContextEXT instead), but that's what the original
code did.  Note that glXFreeContextEXT on a non-imported context does
not destroy it either.

Fixes the piglit test glx-free-context.

NOTE: This is a candidate for the 7.11 branch.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/glx/dri2_glx.c
src/glx/dri_glx.c
src/glx/drisw_glx.c
src/glx/glxclient.h
src/glx/glxcmds.c
src/glx/indirect_glx.c