| #ifndef __glx_glvnd_dispatch_funcs_h__ |
| #define __glx_glvnd_dispatch_funcs_h__ |
| /* |
| * Helper functions used by g_glxglvnddispatchfuncs.c. |
| */ |
| #include "glvnd/libglxabi.h" |
| #include "glxglvnd.h" |
| |
| #define __VND __glXGLVNDAPIExports |
| |
| static inline int AddFBConfigMapping(Display *dpy, GLXFBConfig config, |
| __GLXvendorInfo *vendor) |
| { |
| return __VND->addVendorFBConfigMapping(dpy, config, vendor); |
| } |
| |
| static inline int AddFBConfigsMapping(Display *dpy, const GLXFBConfig *ret, |
| int *nelements, __GLXvendorInfo *vendor) |
| { |
| int i, r; |
| |
| if (!nelements || !ret) |
| return 0; |
| |
| for (i = 0; i < *nelements; i++) { |
| r = __VND->addVendorFBConfigMapping(dpy, ret[i], vendor); |
| if (r) { |
| for (; i >= 0; i--) |
| __VND->removeVendorFBConfigMapping(dpy, ret[i]); |
| break; |
| } |
| } |
| return r; |
| } |
| |
| static inline int AddDrawableMapping(Display *dpy, GLXDrawable drawable, |
| __GLXvendorInfo *vendor) |
| { |
| return __VND->addVendorDrawableMapping(dpy, drawable, vendor); |
| } |
| |
| static inline int AddContextMapping(Display *dpy, GLXContext ctx, |
| __GLXvendorInfo *vendor) |
| { |
| return __VND->addVendorContextMapping(dpy, ctx, vendor); |
| } |
| |
| static inline __GLXvendorInfo *GetDispatchFromDrawable(Display *dpy, |
| GLXDrawable drawable) |
| { |
| return __VND->vendorFromDrawable(dpy, drawable); |
| } |
| |
| static inline __GLXvendorInfo *GetDispatchFromContext(GLXContext ctx) |
| { |
| return __VND->vendorFromContext(ctx); |
| } |
| |
| static inline __GLXvendorInfo *GetDispatchFromFBConfig(Display *dpy, GLXFBConfig config) |
| { |
| return __VND->vendorFromFBConfig(dpy, config); |
| } |
| |
| static inline __GLXvendorInfo *GetDispatchFromVisual(Display *dpy, |
| const XVisualInfo *visual) |
| { |
| return __VND->getDynDispatch(dpy, visual->screen); |
| } |
| |
| #endif // __glx_glvnd_dispatch_funcs_h__ |