mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
glx: Don't destroy DRI2 drawables for legacy glx drawables
For GLX 1.3 drawables, we can destroy the DRI2 drawable when the GLX drawable is destroyed. However, for legacy drawables, there os no good way of knowing when the application is done with it, so we just let the DRI2 drawable linger on the server. The server will destroy the DRI2 drawable when it destroys the X drawable or the client exits anyway. https://bugs.freedesktop.org/show_bug.cgi?id=30109
This commit is contained in:
parent
0392e48867
commit
4ebf07a426
2 changed files with 13 additions and 1 deletions
|
|
@ -210,7 +210,17 @@ dri2DestroyDrawable(__GLXDRIdrawable *base)
|
|||
|
||||
__glxHashDelete(pdp->dri2Hash, pdraw->base.xDrawable);
|
||||
(*psc->core->destroyDrawable) (pdraw->driDrawable);
|
||||
DRI2DestroyDrawable(psc->base.dpy, pdraw->base.xDrawable);
|
||||
|
||||
/* If it's a GLX 1.3 drawables, we can destroy the DRI2 drawable
|
||||
* now, as the application explicitly asked to destroy the GLX
|
||||
* drawable. Otherwise, for legacy drawables, we let the DRI2
|
||||
* drawable linger on the server, since there's no good way of
|
||||
* knowing when the application is done with it. The server will
|
||||
* destroy the DRI2 drawable when it destroys the X drawable or the
|
||||
* client exits anyway. */
|
||||
if (pdraw->base.xDrawable != pdraw->base.drawable)
|
||||
DRI2DestroyDrawable(psc->base.dpy, pdraw->base.xDrawable);
|
||||
|
||||
Xfree(pdraw);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -490,6 +490,8 @@ vbo_exec_DrawArrays(GLenum mode, GLint start, GLsizei count)
|
|||
if (!_mesa_validate_DrawArrays( ctx, mode, start, count ))
|
||||
return;
|
||||
|
||||
vbo_exec_FlushVertices_internal( ctx, GL_FALSE );
|
||||
|
||||
FLUSH_CURRENT( ctx, 0 );
|
||||
|
||||
if (!_mesa_valid_to_render(ctx, "glDrawArrays")) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue