X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglx%2Fx11%2Fdri2.c;h=91053d3fb61d539a49556e3f8c99842ec86b09b9;hb=538539d8791e5b3b1ea2e95473b589934d94497e;hp=2cb5d3463afd92d220d8dfa10e79bb76a05b64bc;hpb=7b5ad23c7f7f9016f725cb1caa3cf8971aeedbc8;p=mesa.git diff --git a/src/glx/x11/dri2.c b/src/glx/x11/dri2.c index 2cb5d3463af..91053d3fb61 100644 --- a/src/glx/x11/dri2.c +++ b/src/glx/x11/dri2.c @@ -81,40 +81,52 @@ static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay, dri2Info, dri2ExtensionName, &dri2ExtensionHooks, - 0, NULL) + 1, NULL) static Bool DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire) { XExtDisplayInfo *info = DRI2FindDisplay(dpy); + XExtDisplayInfo *glx_info = __glXFindDisplay(dpy); + static int glx_event_base; + static Bool found_glx_info = False; XextCheckExtension(dpy, info, dri2ExtensionName, False); switch ((wire->u.u.type & 0x7f) - info->codes->first_event) { + +#ifdef X_DRI2SwapBuffers case DRI2_BufferSwapComplete: { GLXBufferSwapComplete *aevent = (GLXBufferSwapComplete *)event; xDRI2BufferSwapComplete *awire = (xDRI2BufferSwapComplete *)wire; - switch (awire->type) { + aevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *) wire); + aevent->type = + (glx_info->codes->first_event + GLX_BufferSwapComplete) & 0x75; + aevent->send_event = (awire->type & 0x80) != 0; + aevent->display = dpy; + aevent->drawable = awire->drawable; + switch (awire->event_type) { case DRI2_EXCHANGE_COMPLETE: - aevent->event_type = GLX_EXCHANGE_COMPLETE; + aevent->event_type = GLX_EXCHANGE_COMPLETE_INTEL; break; case DRI2_BLIT_COMPLETE: - aevent->event_type = GLX_BLIT_COMPLETE; + aevent->event_type = GLX_BLIT_COMPLETE_INTEL; break; case DRI2_FLIP_COMPLETE: - aevent->event_type = GLX_FLIP_COMPLETE; + aevent->event_type = GLX_FLIP_COMPLETE_INTEL; break; default: /* unknown swap completion type */ return False; } - aevent->drawable = awire->drawable; aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo; aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo; aevent->sbc = ((CARD64)awire->sbc_hi << 32) | awire->sbc_lo; return True; } +#endif + default: /* client doesn't support server event */ break; @@ -447,6 +459,7 @@ DRI2CopyRegion(Display * dpy, XID drawable, XserverRegion region, SyncHandle(); } +#ifdef X_DRI2SwapBuffers static void load_swap_req(xDRI2SwapBuffersReq *req, CARD64 target, CARD64 divisor, CARD64 remainder) @@ -488,7 +501,9 @@ void DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc, UnlockDisplay(dpy); SyncHandle(); } +#endif +#ifdef X_DRI2GetMSC Bool DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc, CARD64 *sbc) { @@ -519,7 +534,9 @@ Bool DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc, return True; } +#endif +#ifdef X_DRI2WaitMSC static void load_msc_req(xDRI2WaitMSCReq *req, CARD64 target, CARD64 divisor, CARD64 remainder) @@ -563,7 +580,9 @@ Bool DRI2WaitMSC(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor, return True; } +#endif +#ifdef X_DRI2WaitSBC static void load_sbc_req(xDRI2WaitSBCReq *req, CARD64 target) { @@ -602,7 +621,9 @@ Bool DRI2WaitSBC(Display *dpy, XID drawable, CARD64 target_sbc, CARD64 *ust, return True; } +#endif +#ifdef X_DRI2SwapInterval void DRI2SwapInterval(Display *dpy, XID drawable, int interval) { XExtDisplayInfo *info = DRI2FindDisplay(dpy); @@ -619,5 +640,6 @@ void DRI2SwapInterval(Display *dpy, XID drawable, int interval) UnlockDisplay(dpy); SyncHandle(); } +#endif #endif /* GLX_DIRECT_RENDERING */