[maemo-commits] [maemo-commits] r18761 - in projects/haf/trunk/clutter0.8: clutter/eglx debian

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Jun 18 18:24:11 EEST 2009
Author: gw
Date: 2009-06-18 18:24:01 +0300 (Thu, 18 Jun 2009)
New Revision: 18761

Modified:
   projects/haf/trunk/clutter0.8/clutter/eglx/clutter-eglx-texture-pixmap.c
   projects/haf/trunk/clutter0.8/debian/changelog
Log:
  * clutter/eglx/clutter-eglx-texture-pixmap.c: When we fail to create a
    pixmap surface for our pixmap (probably because of low SGX wrapped memory),
    use our fallback GLES-only code.    


Modified: projects/haf/trunk/clutter0.8/clutter/eglx/clutter-eglx-texture-pixmap.c
===================================================================
--- projects/haf/trunk/clutter0.8/clutter/eglx/clutter-eglx-texture-pixmap.c	2009-06-18 14:28:01 UTC (rev 18760)
+++ projects/haf/trunk/clutter0.8/clutter/eglx/clutter-eglx-texture-pixmap.c	2009-06-18 15:24:01 UTC (rev 18761)
@@ -123,6 +123,8 @@
   EGLint red = -1, green = -1, blue = -1, alpha = -1, stencil = -1;
   EGLint rgba_bindable = -1, rgb_bindable = -1, tex_target = -1;
 
+  if (!conf) return;
+
   eglGetConfigAttrib (clutter_eglx_display (),
 		      conf,
 		      EGL_RED_SIZE, &red);
@@ -312,10 +314,13 @@
 
   if (priv->egl_surface == EGL_NO_SURFACE)
     {
-      g_warning ("%s: error %x, failed to create %s surface for %lx",
+      g_warning ("%s: error %x, failed to create %s surface for %lx, "
+                 "using GLES fallback.",
 	       __FUNCTION__, eglGetError (),
 	       pixmap ? "pixmap" : "window",
 	       pixmap ? pixmap : window);
+
+      priv->use_fallback = TRUE;
       return;
     }
 
@@ -447,25 +452,25 @@
                             EGLSurface *surface, Pixmap pixmap,
                             int depth)
 {
-   EGLConfig configs[20];
-   int i, nconfigs = 0;
-   EGLBoolean ret;
-   gboolean has_alpha = depth==32;
+  EGLConfig configs[20];
+  int i, nconfigs = 0;
+  EGLBoolean ret;
+  gboolean has_alpha = depth==32;
 
-   ret = eglChooseConfig (display, pixmap_config, configs,
-                          G_N_ELEMENTS (configs), &nconfigs);
+  ret = eglChooseConfig (display, pixmap_config, configs,
+                         G_N_ELEMENTS (configs), &nconfigs);
 
-   if (ret != EGL_TRUE)
-     {
-       g_debug ("%s: eglChooseConfig failed: %x", __FUNCTION__, eglGetError());
-       return NULL;
-     }
+  if (ret != EGL_TRUE)
+    {
+      g_debug ("%s: eglChooseConfig failed: %x", __FUNCTION__, eglGetError());
+      return NULL;
+    }
    /*else
      {
        g_debug ("%s: got %d matching configs", __FUNCTION__, nconfigs);
      }*/
 
-   for (i = 0; i < nconfigs; ++i)
+  for (i = 0; i < nconfigs; ++i)
     {
       if (has_alpha)
         *surface = eglCreatePixmapSurface (display, configs[i],
@@ -477,14 +482,15 @@
                                            pixmap_creation_config_rgb);
 
       if (*surface != EGL_NO_SURFACE)
-        break;
+        return configs[i];
 
       g_debug ("%s: eglCreatePixmapSurface failed for config:",
                __FUNCTION__);
       print_config_info (configs[i]);
    }
 
-   return configs[i];
+   /* We failed to get any surface */
+   return NULL;
 }
 
 static void

Modified: projects/haf/trunk/clutter0.8/debian/changelog
===================================================================
--- projects/haf/trunk/clutter0.8/debian/changelog	2009-06-18 14:28:01 UTC (rev 18760)
+++ projects/haf/trunk/clutter0.8/debian/changelog	2009-06-18 15:24:01 UTC (rev 18761)
@@ -2,8 +2,12 @@
 
   Kimmo:
   * Fix some minor Coverity issues, such as unused variables.
+  Gordon:
+  * clutter/eglx/clutter-eglx-texture-pixmap.c: When we fail to create a
+    pixmap surface for our pixmap (probably because of low SGX wrapped memory),
+    use our fallback GLES-only code.    
 
- -- Gordon Williams <gordon.williams at collabora.co.uk>  Mon, 15 Jun 2009 09:26:15 +0300
+ -- Gordon Williams <gordon.williams at collabora.co.uk>  Thu, 18 Jun 2009 16:22:15 +0100
 
 clutter (0.8.2-0maemo36) unstable; urgency=low
 

More information about the maemo-commits mailing list