int (*glsym_glXWaitVideoSync) (int a, int b, unsigned int *c) = NULL;
XID (*glsym_glXCreatePixmap) (Display *a, void *b, Pixmap c, const int *d) = NULL;
void (*glsym_glXDestroyPixmap) (Display *a, XID b) = NULL;
-void (*glsym_glXQueryDrawable) (Display *a, XID b, int c, unsigned int *d) = NULL;
+int (*glsym_glXQueryDrawable) (Display *a, XID b, int c, unsigned int *d) = NULL;
int (*glsym_glXSwapIntervalSGI) (int a) = NULL;
void (*glsym_glXSwapIntervalEXT) (Display *s, GLXDrawable b, int c) = NULL;
void (*glsym_glXReleaseBuffersMESA) (Display *a, XID b) = NULL;
FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmapARB", glsym_func_void);
FINDSYM(glsym_glXDestroyPixmap, "glXDestroyPixmap", glsym_func_void);
- FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableEXT", glsym_func_void);
- FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableARB", glsym_func_void);
- FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawable", glsym_func_void);
+ FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawable", glsym_func_int);
+ FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableEXT", glsym_func_int);
+ FINDSYM(glsym_glXQueryDrawable, "glXQueryDrawableARB", glsym_func_int);
FINDSYM(glsym_glXSwapIntervalSGI, "glXSwapIntervalMESA", glsym_func_int);
FINDSYM(glsym_glXSwapIntervalSGI, "glXSwapIntervalSGI", glsym_func_int);
# define GLX_BACK_BUFFER_AGE_EXT 0x20f4
#endif
-extern void (*glsym_glXQueryDrawable) (Display *a, XID b, int c, unsigned int *d);
+extern int (*glsym_glXQueryDrawable) (Display *a, XID b, int c, unsigned int *d);
extern void (*glsym_glXSwapIntervalEXT) (Display *s, GLXDrawable b, int c);
extern int (*glsym_glXSwapIntervalSGI) (int a);
extern int (*glsym_glXGetVideoSync) (unsigned int *a);
unsigned int age = 0;
if (glsym_glXQueryDrawable)
- glsym_glXQueryDrawable(ob->disp, ob->glxwin,
- GLX_BACK_BUFFER_AGE_EXT, &age);
+ {
+ if (glsym_glXQueryDrawable(ob->disp, ob->glxwin,
+ GLX_BACK_BUFFER_AGE_EXT, &age) < 1)
+ age = 0;
+ }
#endif
if (age == 1) swap_mode = MODE_COPY;
else if (age == 2) swap_mode = MODE_DOUBLE;