mirror of
https://github.com/X11Libre/xserver.git
synced 2026-11-01 03:03:58 +00:00
Make sure DRI drawables are cleaned up when client dies.
The previous scheme didn't work when the client didn't create the core drawable, e.g. the root or composite overlay window. Use refcounting via special client resources to fix that.
This commit is contained in:
parent
5957aa6fdc
commit
4abd00dab7
7 changed files with 130 additions and 62 deletions
|
|
@ -61,6 +61,11 @@ xGLXSingleReply __glXReply;
|
|||
*/
|
||||
static __GLXclientState *__glXClients[MAXCLIENTS + 1];
|
||||
|
||||
/*
|
||||
** Client that called into GLX dispatch.
|
||||
*/
|
||||
ClientPtr __pGlxClient;
|
||||
|
||||
/*
|
||||
** Forward declarations.
|
||||
*/
|
||||
|
|
@ -549,6 +554,8 @@ static int __glXDispatch(ClientPtr client)
|
|||
GLboolean rendering = opcode <= X_GLXRenderLarge;
|
||||
__glXleaveServer(rendering);
|
||||
|
||||
__pGlxClient = client;
|
||||
|
||||
retval = (*proc)(cl, (GLbyte *) stuff);
|
||||
|
||||
__glXenterServer(rendering);
|
||||
|
|
|
|||
Loading…
Reference in a new issue