Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 0257cb64e4491c9033bccc46653056d9 > files > 22

compiz-0.7.8-3mdv2009.0.src.rpm

From e3012b1051a9c08e76acf1f29c0591573760f64d Mon Sep 17 00:00:00 2001
From: Colin Guthrie <git@colin.guthr.ie>
Date: Thu, 2 Oct 2008 20:33:21 +0100
Subject: [PATCH] Also check for tfp in server extensions

---
 src/screen.c |   30 ++++++++++++++++++++----------
 1 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/screen.c b/src/screen.c
index 081ad51..61a2e09 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1613,7 +1613,7 @@ addScreen (CompDisplay *display,
     Window		 *children;
     unsigned int	 nchildren;
     int			 defaultDepth, nvisinfo, nElements, value, i;
-    const char		 *glxExtensions, *glExtensions;
+    const char		 *glxExtensions, *glxServerExtensions, *glExtensions;
     XSetWindowAttributes attrib;
     GLfloat		 globalAmbient[]  = { 0.1f, 0.1f,  0.1f, 0.1f };
     GLfloat		 ambientLight[]   = { 0.0f, 0.0f,  0.0f, 0.0f };
@@ -1867,20 +1867,30 @@ addScreen (CompDisplay *display,
 	return FALSE;
     }
 
-    s->ctx = glXCreateContext (dpy, visinfo, NULL, !indirectRendering);
-    if (!s->ctx)
+    glxExtensions = glXQueryExtensionsString (dpy, screenNum);
+    glxServerExtensions = glXQueryServerString (dpy, screenNum, GLX_EXTENSIONS);
+    if (!strstr (glxExtensions, "GLX_EXT_texture_from_pixmap"))
     {
-	compLogMessage ("core", CompLogLevelFatal, "glXCreateContext failed");
-	XFree (visinfo);
+        if (!strstr (glxServerExtensions, "GLX_EXT_texture_from_pixmap"))
+        {
+            compLogMessage ("core", CompLogLevelFatal,
+                            "GLX_EXT_texture_from_pixmap is missing");
+            XFree (visinfo);
 
-	return FALSE;
+            return FALSE;
+        }
+        else
+        {
+            indirectRendering = 1;
+            strictBinding = 1;
+        }
     }
 
-    glxExtensions = glXQueryExtensionsString (dpy, screenNum);
-    if (!strstr (glxExtensions, "GLX_EXT_texture_from_pixmap"))
+    s->ctx = glXCreateContext (dpy, visinfo, NULL, !indirectRendering);
+    if (!s->ctx)
     {
 	compLogMessage ("core", CompLogLevelFatal,
-			"GLX_EXT_texture_from_pixmap is missing");
+			"glXCreateContext failed");
 	XFree (visinfo);
 
 	return FALSE;
-- 
1.6.0.2