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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Jun 25 16:42:03 EEST 2009
Author: gw
Date: 2009-06-25 16:41:51 +0300 (Thu, 25 Jun 2009)
New Revision: 18790

Modified:
   projects/haf/trunk/clutter0.8/clutter/clutter-texture.c
   projects/haf/trunk/clutter0.8/clutter/eglx/clutter-eglx-texture-pixmap.c
   projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c
   projects/haf/trunk/clutter0.8/debian/changelog
Log:
  Gordon:
  Fixes: NB#124464 - Hildon-desktop crash
  * clutter/clutter-texture.c: Check for COGL_INVALID_HANDLE texture
    (other functions in clutter-texture checked, but not _paint)
  * clutter/eglx/clutter-eglx-texture-pixmap.c: Check for COGL_INVALID_HANDLE
    texture before rendering shapes.
  * clutter/x11/clutter-x11-texture-pixmap.c: Check for COGL_INVALID_HANDLE
    before rendering, alongside the surface (It is possible to have a surface,
    but no cogl_texture). Fix texture leak if cogl_texture_new_from_foreign
    failed. Remove red-bordered warning shape (we now render nothing if we
    were unable to get a texture).


Modified: projects/haf/trunk/clutter0.8/clutter/clutter-texture.c
===================================================================
--- projects/haf/trunk/clutter0.8/clutter/clutter-texture.c	2009-06-25 12:08:42 UTC (rev 18789)
+++ projects/haf/trunk/clutter0.8/clutter/clutter-texture.c	2009-06-25 13:41:51 UTC (rev 18790)
@@ -577,6 +577,7 @@
                 "painting texture '%s'",
 		clutter_actor_get_name (self) ? clutter_actor_get_name (self)
                                               : "unknown");
+
   col.alpha = clutter_actor_get_paint_opacity (self);
   cogl_color (&col);
 
@@ -587,6 +588,9 @@
 		x_1, y_1, x_2, y_2,
 		clutter_actor_get_opacity (self));
 
+  if (priv->texture == COGL_INVALID_HANDLE)
+    return;
+
   if (priv->repeat_x && priv->width > 0)
     t_w = CFX_QDIV (CLUTTER_INT_TO_FIXED (x_2 - x_1),
 		    CLUTTER_INT_TO_FIXED (priv->width));

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-25 12:08:42 UTC (rev 18789)
+++ projects/haf/trunk/clutter0.8/clutter/eglx/clutter-eglx-texture-pixmap.c	2009-06-25 13:41:51 UTC (rev 18790)
@@ -388,6 +388,9 @@
                             width, height, format))
     {
       g_debug ("%s: Unable to create cogl texture", __FUNCTION__);
+
+      glDeleteTextures (1, &priv->texture_id);
+
       CLUTTER_NOTE (TEXTURE, "Falling back to X11 manual mechanism");
       priv->use_fallback = TRUE;
       return;
@@ -707,7 +710,9 @@
                 "pixmap-height", &pixmap_height,
                 NULL);
 
-  if (priv->egl_surface == EGL_NO_SURFACE)
+  if (priv->egl_surface == EGL_NO_SURFACE ||
+      clutter_texture_get_cogl_texture(CLUTTER_TEXTURE(actor)) ==
+      COGL_INVALID_HANDLE)
     {
       /*
       guint         window;
@@ -718,7 +723,9 @@
                __FUNCTION__,
                name ? name : "null",
                pixmap, window, pixmap_width, pixmap_height, pixmap_depth);*/
-      clutter_eglx_texture_pixmap_paint_fail (actor);
+
+      /* No longer paint red fail rectangle - it just annoys users */
+      //clutter_eglx_texture_pixmap_paint_fail (actor);
       return;
     }
 

Modified: projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c
===================================================================
--- projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c	2009-06-25 12:08:42 UTC (rev 18789)
+++ projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c	2009-06-25 13:41:51 UTC (rev 18790)
@@ -1451,6 +1451,8 @@
   t_h = CFX_ONE;
 
   cogl_texture = clutter_texture_get_cogl_texture(CLUTTER_TEXTURE(self));
+  if (cogl_texture == COGL_INVALID_HANDLE)
+    return;
 
   /* so now we go through our shapes and render */
   for (shape = priv->shapes; shape; shape = shape->next)

Modified: projects/haf/trunk/clutter0.8/debian/changelog
===================================================================
--- projects/haf/trunk/clutter0.8/debian/changelog	2009-06-25 12:08:42 UTC (rev 18789)
+++ projects/haf/trunk/clutter0.8/debian/changelog	2009-06-25 13:41:51 UTC (rev 18790)
@@ -1,6 +1,16 @@
 clutter (0.8.2-0maemo38~unreleased) unstable; urgency=low
 
-  * foo
+  Gordon:
+  Fixes: NB#124464 - Hildon-desktop crash
+  * clutter/clutter-texture.c: Check for COGL_INVALID_HANDLE texture
+    (other functions in clutter-texture checked, but not _paint)
+  * clutter/eglx/clutter-eglx-texture-pixmap.c: Check for COGL_INVALID_HANDLE
+    texture before rendering shapes.
+  * clutter/x11/clutter-x11-texture-pixmap.c: Check for COGL_INVALID_HANDLE
+    before rendering, alongside the surface (It is possible to have a surface,
+    but no cogl_texture). Fix texture leak if cogl_texture_new_from_foreign
+    failed. Remove red-bordered warning shape (we now render nothing if we
+    were unable to get a texture).
 
  -- Gordon Williams <gordon.williams at collabora.co.uk>  Mon, 22 Jun 2009 10:29:47 +0300
 

More information about the maemo-commits mailing list