mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 01:30:08 +01:00
glx: Suppress BadDrawable from DRI2CopyRegion
This can happen when an X window is destroyed behind our back. We use DRI2CopyRegion behind the scenes in many places (like flushing the fake front to the real front) so we have to ignore X errors triggered in that case. The glean test cases trigger this consistently as they don't destroy the GLX drawable nicely, they just destroy the X window.
This commit is contained in:
parent
4eead42550
commit
094c6fbc45
1 changed files with 14 additions and 1 deletions
|
|
@ -62,6 +62,8 @@ static Bool
|
|||
DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire);
|
||||
static Status
|
||||
DRI2EventToWire(Display *dpy, XEvent *event, xEvent *wire);
|
||||
static int
|
||||
DRI2Error(Display *display, xError *err, XExtCodes *codes, int *ret_code);
|
||||
|
||||
static /* const */ XExtensionHooks dri2ExtensionHooks = {
|
||||
NULL, /* create_gc */
|
||||
|
|
@ -73,7 +75,7 @@ static /* const */ XExtensionHooks dri2ExtensionHooks = {
|
|||
DRI2CloseDisplay, /* close_display */
|
||||
DRI2WireToEvent, /* wire_to_event */
|
||||
DRI2EventToWire, /* event_to_wire */
|
||||
NULL, /* error */
|
||||
DRI2Error, /* error */
|
||||
NULL, /* error_string */
|
||||
};
|
||||
|
||||
|
|
@ -160,6 +162,17 @@ DRI2EventToWire(Display *dpy, XEvent *event, xEvent *wire)
|
|||
return Success;
|
||||
}
|
||||
|
||||
static int
|
||||
DRI2Error(Display *display, xError *err, XExtCodes *codes, int *ret_code)
|
||||
{
|
||||
if (err->majorCode == codes->major_opcode &&
|
||||
err->errorCode == BadDrawable &&
|
||||
err->minorCode == X_DRI2CopyRegion)
|
||||
return True;
|
||||
|
||||
return False;
|
||||
}
|
||||
|
||||
Bool
|
||||
DRI2QueryExtension(Display * dpy, int *eventBase, int *errorBase)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue