mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-14 08:40:30 +01:00
gallium/xlib: Fix xmesa drawable creation
The first time you call glXMakeCurrent, current != ctx. As a result we
would never look up whether the drawable already had an XMesaDrawable,
and would instead always create one. Then XMesaBufferList would have two
different buffers for the same XID, and you'd be reading and drawing to
different places, and that's not what you want at all.
Instead just always look up the drawable.
Fixes: db8be355 (gallium/xlib: Remove drawable caching from the MakeCurrent path)
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1196
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
This commit is contained in:
parent
3bcd54f3fc
commit
3f840e5ccd
1 changed files with 2 additions and 6 deletions
|
|
@ -1198,9 +1198,7 @@ glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
|
|||
|
||||
if (draw) {
|
||||
/* Find the XMesaBuffer which corresponds to 'draw' */
|
||||
if (ctx == current) {
|
||||
drawBuffer = XMesaFindBuffer( dpy, draw );
|
||||
}
|
||||
drawBuffer = XMesaFindBuffer( dpy, draw );
|
||||
if (!drawBuffer) {
|
||||
/* drawable must be a new window! */
|
||||
drawBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, draw );
|
||||
|
|
@ -1213,9 +1211,7 @@ glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
|
|||
|
||||
if (read) {
|
||||
/* Find the XMesaBuffer which corresponds to 'read' */
|
||||
if (ctx == current) {
|
||||
readBuffer = XMesaFindBuffer( dpy, read );
|
||||
}
|
||||
readBuffer = XMesaFindBuffer( dpy, read );
|
||||
if (!readBuffer) {
|
||||
/* drawable must be a new window! */
|
||||
readBuffer = XMesaCreateWindowBuffer( xmctx->xm_visual, read );
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue