diff options
| -rw-r--r-- | progs/xdemos/pbutil.c | 38 | ||||
| -rw-r--r-- | progs/xdemos/pbutil.h | 8 | 
2 files changed, 45 insertions, 1 deletions
diff --git a/progs/xdemos/pbutil.c b/progs/xdemos/pbutil.c index 479abc983c..d0bbd1b0fc 100644 --- a/progs/xdemos/pbutil.c +++ b/progs/xdemos/pbutil.c @@ -9,7 +9,6 @@   * to the GLX_SGIX_fbconfig/pbuffer extensions.   */ -  #include <stdio.h>  #include <string.h>  #include "pbutil.h" @@ -293,6 +292,43 @@ PrintFBConfigInfo(Display *dpy, int screen, FBCONFIG config, Bool horizFormat) +GLXContext +CreateContext(Display *dpy, int screen, FBCONFIG config) +{ +   int pbSupport = QueryPbuffers(dpy, screen); +#if defined(GLX_VERSION_1_3) +   if (pbSupport == 1) { +      /* GLX 1.3 */ +      GLXContext c; +      c = glXCreateNewContext(dpy, config, GLX_RGBA_TYPE, NULL, True); +      if (!c) { +         /* try indirect */ +         c = glXCreateNewContext(dpy, config, GLX_RGBA_TYPE, NULL, False); +      } +      return c; +   } +#endif +#if defined(GLX_SGIX_fbconfig) && defined(GLX_SGIX_pbuffer) +   if (pbSupport == 2) { +      GLXContext c; +      c = glXCreateContextWithConfigSGIX(dpy, config, GLX_RGBA_TYPE_SGIX, NULL, True); +      if (!c) { +         c = glXCreateContextWithConfigSGIX(dpy, config, GLX_RGBA_TYPE_SGIX, NULL, False); +      } +      return c; +   } +#endif +   return 0; +} + + +void +DestroyContext(Display *dpy, GLXContext ctx) +{ +   glXDestroyContext(dpy, ctx); +} + +  /* This is only used by CreatePbuffer() */  static int XErrorFlag = 0;  static int HandleXError(Display *dpy, XErrorEvent *event) diff --git a/progs/xdemos/pbutil.h b/progs/xdemos/pbutil.h index e877f20625..e95b2565a2 100644 --- a/progs/xdemos/pbutil.h +++ b/progs/xdemos/pbutil.h @@ -46,6 +46,14 @@ extern XVisualInfo *  GetVisualFromFBConfig(Display *dpy, int screen, FBCONFIG config); +extern GLXContext +CreateContext(Display *dpy, int screen, FBCONFIG config); + + +extern void +DestroyContext(Display *dpy, GLXContext ctx); + +  extern PBUFFER  CreatePbuffer(Display *dpy, int screen, FBCONFIG config,  	      int width, int height, Bool preserve, Bool largest);  | 
