Do a cheesy implementation of glXWait/GetVideoSyncSGI() functions, but
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 13 Jun 2006 23:06:25 +0000 (23:06 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 13 Jun 2006 23:06:25 +0000 (23:06 +0000)
disable reporting the GLX_SGI_video_sync extension anyway.
Google Earth works now.

src/mesa/drivers/x11/fakeglx.c

index 259a2950425c7608a25dcfac5bab1e14fa520f9d..39469aec9254bea172341668ef5f18b3a4b2000e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  6.5.1
  *
  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  *
@@ -80,7 +80,7 @@
    "GLX_ARB_get_proc_address " \
    "GLX_EXT_visual_info " \
    "GLX_EXT_visual_rating " \
-   "GLX_SGI_video_sync " \
+   /*"GLX_SGI_video_sync "*/ \
    "GLX_SGIX_fbconfig " \
    "GLX_SGIX_pbuffer "
 
@@ -2274,19 +2274,26 @@ Fake_glXSwapIntervalSGI(int interval)
 
 /*** GLX_SGI_video_sync ***/
 
+static unsigned int FrameCounter = 0;
+
 static int
 Fake_glXGetVideoSyncSGI(unsigned int *count)
 {
-   (void) count;
+   /* this is a bogus implementation */
+   *count = FrameCounter++;
    return 0;
 }
 
 static int
 Fake_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
 {
-   (void) divisor;
-   (void) remainder;
-   (void) count;
+   if (divisor <= 0 || remainder < 0)
+      return GLX_BAD_VALUE;
+   /* this is a bogus implementation */
+   FrameCounter++;
+   while (FrameCounter % divisor != remainder)
+      FrameCounter++;
+   *count = FrameCounter;
    return 0;
 }