• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef __glx_glvnd_dispatch_funcs_h__
2 #define __glx_glvnd_dispatch_funcs_h__
3 /*
4  * Helper functions used by g_glxglvnddispatchfuncs.c.
5  */
6 #include "glvnd/libglxabi.h"
7 #include "glxglvnd.h"
8 
9 #define __VND __glXGLVNDAPIExports
10 
AddFBConfigMapping(Display * dpy,GLXFBConfig config,__GLXvendorInfo * vendor)11 static inline int AddFBConfigMapping(Display *dpy, GLXFBConfig config,
12                                      __GLXvendorInfo *vendor)
13 {
14     return __VND->addVendorFBConfigMapping(dpy, config, vendor);
15 }
16 
AddFBConfigsMapping(Display * dpy,const GLXFBConfig * ret,int * nelements,__GLXvendorInfo * vendor)17 static inline int AddFBConfigsMapping(Display *dpy, const GLXFBConfig *ret,
18                                       int *nelements, __GLXvendorInfo *vendor)
19 {
20     int i, r;
21 
22     if (!nelements || !ret)
23         return 0;
24 
25     for (i = 0; i < *nelements; i++) {
26         r = __VND->addVendorFBConfigMapping(dpy, ret[i], vendor);
27         if (r) {
28             for (; i >= 0; i--)
29                 __VND->removeVendorFBConfigMapping(dpy, ret[i]);
30             break;
31         }
32     }
33     return r;
34 }
35 
AddDrawableMapping(Display * dpy,GLXDrawable drawable,__GLXvendorInfo * vendor)36 static inline int AddDrawableMapping(Display *dpy, GLXDrawable drawable,
37                                      __GLXvendorInfo *vendor)
38 {
39     return __VND->addVendorDrawableMapping(dpy, drawable, vendor);
40 }
41 
AddContextMapping(Display * dpy,GLXContext ctx,__GLXvendorInfo * vendor)42 static inline int AddContextMapping(Display *dpy, GLXContext ctx,
43                                     __GLXvendorInfo *vendor)
44 {
45     return __VND->addVendorContextMapping(dpy, ctx, vendor);
46 }
47 
GetDispatchFromDrawable(Display * dpy,GLXDrawable drawable)48 static inline __GLXvendorInfo *GetDispatchFromDrawable(Display *dpy,
49                                                        GLXDrawable drawable)
50 {
51     return __VND->vendorFromDrawable(dpy, drawable);
52 }
53 
GetDispatchFromContext(GLXContext ctx)54 static inline __GLXvendorInfo *GetDispatchFromContext(GLXContext ctx)
55 {
56     return __VND->vendorFromContext(ctx);
57 }
58 
GetDispatchFromFBConfig(Display * dpy,GLXFBConfig config)59 static inline __GLXvendorInfo *GetDispatchFromFBConfig(Display *dpy, GLXFBConfig config)
60 {
61     return __VND->vendorFromFBConfig(dpy, config);
62 }
63 
GetDispatchFromVisual(Display * dpy,const XVisualInfo * visual)64 static inline __GLXvendorInfo *GetDispatchFromVisual(Display *dpy,
65                                                      const XVisualInfo *visual)
66 {
67     return __VND->getDynDispatch(dpy, visual->screen);
68 }
69 
70 #endif // __glx_glvnd_dispatch_funcs_h__
71