glx: Assign unique serial number to GLXBadFBConfig error

Since commit f39fd3dce7 a new GLX error is issued in case context creation
fails. This broke wine on certain hardware: While wine installs an error handler
to ignore this kind of error, it does not function because it expects the
dpy->request serial number of the error to be incremented since the installation
of the handler.

Workaround this by artificially increasing the request number. This also
guarantees a unique serial number for the error.

Fixes: f39fd3dce7
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3969
Signed-off-by: Bastian Beranek <bastian.beischer@rwth-aachen.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10565>
This commit is contained in:
Bastian Beranek 2021-05-01 09:52:01 +02:00 committed by Marge Bot
parent 3326861f4f
commit 960c86d678
1 changed files with 3 additions and 0 deletions

View File

@ -146,6 +146,9 @@ glXCreateContextAttribsARB(Display *dpy, GLXFBConfig config,
* somehow on the client side. clean up the server resource and panic.
*/
xcb_glx_destroy_context(c, xid);
/* increment dpy->request in order to give a unique serial number to the
* error */
XNoOp(dpy);
__glXSendError(dpy, GLXBadFBConfig, xid, 0, False);
} else {
gc->xid = xid;