DRI2: don't send DRI2 requests the server doesn't know about
authorJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 14 Jan 2010 00:01:51 +0000 (19:01 -0500)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 14 Jan 2010 00:01:51 +0000 (19:01 -0500)
At init time, NULL out the hooks that send the server new requests.
DRI2 never supported these extensions, so this preserves old behavior on
old servers with new Mesa.

src/glx/x11/dri2_glx.c

index e1688f38fff661655f114a6eccf526ab4d7c181a..7b0c52b50d4cf38c970469a8a5b608f5880e14e4 100644 (file)
@@ -575,11 +575,19 @@ dri2CreateScreen(__GLXscreenConfigs * psc, int screen,
    psp->swapBuffers = dri2SwapBuffers;
    psp->waitGL = dri2WaitGL;
    psp->waitX = dri2WaitX;
-   psp->getDrawableMSC = dri2DrawableGetMSC;
-   psp->waitForMSC = dri2WaitForMSC;
-   psp->waitForSBC = dri2WaitForSBC;
-   psp->setSwapInterval = dri2SetSwapInterval;
-   psp->getSwapInterval = dri2GetSwapInterval;
+   if (pdp->driMinor >= 2) {
+      psp->getDrawableMSC = dri2DrawableGetMSC;
+      psp->waitForMSC = dri2WaitForMSC;
+      psp->waitForSBC = dri2WaitForSBC;
+      psp->setSwapInterval = dri2SetSwapInterval;
+      psp->getSwapInterval = dri2GetSwapInterval;
+   } else {
+      psp->getDrawableMSC = NULL;
+      psp->waitForMSC = NULL;
+      psp->waitForSBC = NULL;
+      psp->setSwapInterval = NULL;
+      psp->getSwapInterval = NULL;
+   }
 
    /* DRI2 suports SubBuffer through DRI2CopyRegion, so it's always
     * available.*/