diff --git a/.pick_status.json b/.pick_status.json index cdf797d4d1e..df27e3365f8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -427,7 +427,7 @@ "description": "glx: Provide glvnd wrapper for glXSwapIntervalEXT", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "60ebeb4608a871ba89ba081c1c6e7ebdd5efec9a" }, diff --git a/src/glx/g_glxglvnddispatchfuncs.c b/src/glx/g_glxglvnddispatchfuncs.c index 0f02ed2d321..e0ea27c0b18 100644 --- a/src/glx/g_glxglvnddispatchfuncs.c +++ b/src/glx/g_glxglvnddispatchfuncs.c @@ -87,6 +87,7 @@ const char * const __glXDispatchTableStrings[DI_LAST_INDEX] = { __ATTRIB(SelectEventSGIX), // glXSwapBuffers implemented by libglvnd __ATTRIB(SwapBuffersMscOML), + __ATTRIB(SwapIntervalEXT), __ATTRIB(SwapIntervalMESA), __ATTRIB(SwapIntervalSGI), // glXUseXFont implemented by libglvnd @@ -893,6 +894,24 @@ static int dispatch_SwapIntervalMESA(unsigned int interval) +static void dispatch_SwapIntervalEXT(Display *dpy, GLXDrawable drawable, int interval) +{ + PFNGLXSWAPINTERVALEXTPROC pSwapIntervalEXT; + __GLXvendorInfo *dd; + + dd = GetDispatchFromDrawable(dpy, drawable); + if (dd == NULL) + return; + + __FETCH_FUNCTION_PTR(SwapIntervalEXT); + if (pSwapIntervalEXT == NULL) + return; + + pSwapIntervalEXT(dpy, drawable, interval); +} + + + static Bool dispatch_WaitForMscOML(Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, @@ -974,6 +993,7 @@ const void * const __glXDispatchFunctions[DI_LAST_INDEX + 1] = { __ATTRIB(ReleaseTexImageEXT), __ATTRIB(SelectEventSGIX), __ATTRIB(SwapBuffersMscOML), + __ATTRIB(SwapIntervalEXT), __ATTRIB(SwapIntervalMESA), __ATTRIB(SwapIntervalSGI), __ATTRIB(WaitForMscOML), diff --git a/src/glx/g_glxglvnddispatchindices.h b/src/glx/g_glxglvnddispatchindices.h index 3ba50a74abb..b65d078098f 100644 --- a/src/glx/g_glxglvnddispatchindices.h +++ b/src/glx/g_glxglvnddispatchindices.h @@ -79,6 +79,7 @@ typedef enum __GLXdispatchIndex { DI_SelectEventSGIX, // SwapBuffers implemented by libglvnd DI_SwapBuffersMscOML, + DI_SwapIntervalEXT, DI_SwapIntervalMESA, DI_SwapIntervalSGI, // UseXFont implemented by libglvnd