mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 20:08:06 +02:00
Revert "glx: Remove pointless GLX_INTEL_swap_event paranoia"
This reverts commit19c57ea3bf. This commit is causing a reproducible crash of GNOME shell on Xorg server. Revert it for now and we may investigate it further in the future. Fixes #8542. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23589> (cherry picked from commitbbd4284016)
This commit is contained in:
parent
37531fa0ce
commit
9bd71cd601
4 changed files with 23 additions and 2 deletions
|
|
@ -2254,7 +2254,7 @@
|
|||
"description": "Revert \"glx: Remove pointless GLX_INTEL_swap_event paranoia\"",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "19c57ea3bf6d77cf6f07f2a56e781f55b0e6013b"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -652,7 +652,7 @@ unsigned dri2GetSwapEventType(Display* dpy, XID drawable)
|
|||
struct glx_display *glx_dpy = __glXInitialize(dpy);
|
||||
__GLXDRIdrawable *pdraw;
|
||||
pdraw = dri2GetGlxDrawableFromXDrawableId(dpy, drawable);
|
||||
if (!pdraw)
|
||||
if (!pdraw || !(pdraw->eventMask & GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK))
|
||||
return 0;
|
||||
return glx_dpy->codes.first_event + GLX_BufferSwapComplete;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,6 +60,10 @@ ChangeDrawableAttribute(Display * dpy, GLXDrawable drawable,
|
|||
const CARD32 * attribs, size_t num_attribs)
|
||||
{
|
||||
struct glx_display *priv = __glXInitialize(dpy);
|
||||
#ifdef GLX_DIRECT_RENDERING
|
||||
__GLXDRIdrawable *pdraw;
|
||||
int i;
|
||||
#endif
|
||||
CARD32 *output;
|
||||
CARD8 opcode;
|
||||
|
||||
|
|
@ -87,6 +91,22 @@ ChangeDrawableAttribute(Display * dpy, GLXDrawable drawable,
|
|||
UnlockDisplay(dpy);
|
||||
SyncHandle();
|
||||
|
||||
#ifdef GLX_DIRECT_RENDERING
|
||||
pdraw = GetGLXDRIDrawable(dpy, drawable);
|
||||
|
||||
if (!pdraw)
|
||||
return;
|
||||
|
||||
for (i = 0; i < num_attribs; i++) {
|
||||
switch(attribs[i * 2]) {
|
||||
case GLX_EVENT_MASK:
|
||||
/* Keep a local copy for masking out DRI2 proto events as needed */
|
||||
pdraw->eventMask = attribs[i * 2 + 1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -127,6 +127,7 @@ struct __GLXDRIdrawableRec
|
|||
struct glx_screen *psc;
|
||||
GLenum textureTarget;
|
||||
GLenum textureFormat; /* EXT_texture_from_pixmap support */
|
||||
unsigned long eventMask;
|
||||
int refcount;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue