5c5398c
From 5f566bed4abd8d5efedd36fa41a9aebbba2c93ef Mon Sep 17 00:00:00 2001
5c5398c
From: Adam Jackson <ajax@redhat.com>
5c5398c
Date: Thu, 20 Aug 2009 14:17:05 -0400
5c5398c
Subject: [PATCH] dri2: Don't crash in SwapBuffers for non DRI2_Flush drivers
5c5398c
5c5398c
---
5c5398c
 glx/glxdri2.c |   13 +++++++++----
5c5398c
 1 files changed, 9 insertions(+), 4 deletions(-)
5c5398c
5c5398c
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
5c5398c
index f0df040..b408c2f 100644
5c5398c
--- a/glx/glxdri2.c
5c5398c
+++ b/glx/glxdri2.c
5c5398c
@@ -173,10 +173,15 @@ __glXDRIdrawableSwapBuffers(__GLXdrawable *drawable)
5c5398c
     __GLXDRIdrawable *priv = (__GLXDRIdrawable *) drawable;
5c5398c
     __GLXDRIscreen *screen = priv->screen;
5c5398c
 
5c5398c
-    (*screen->flush->flushInvalidate)(priv->driDrawable);
5c5398c
-
5c5398c
-    if (DRI2SwapBuffers(drawable->pDraw) != Success)
5c5398c
-	return FALSE;
5c5398c
+    if (screen->flush) {
5c5398c
+	(*screen->flush->flushInvalidate)(priv->driDrawable);
5c5398c
+
5c5398c
+	if (DRI2SwapBuffers(drawable->pDraw) != Success)
5c5398c
+	    return FALSE;
5c5398c
+    } else {
5c5398c
+	__glXDRIdrawableCopySubBuffer(drawable, 0, 0,
5c5398c
+				      priv->width, priv->height);
5c5398c
+    }
5c5398c
 
5c5398c
     return TRUE;
5c5398c
 }
5c5398c
-- 
5c5398c
1.6.4
5c5398c