[cogl] handle_automatic_blend_enable(): consider layers with invalid textures
authorRobert Bragg <robert@linux.intel.com>
Thu, 2 Apr 2009 10:50:44 +0000 (11:50 +0100)
committerRobert Bragg <robert@linux.intel.com>
Thu, 2 Apr 2009 10:50:44 +0000 (11:50 +0100)
A layer object may be instantiated when setting a combine mode, but before a
texture is associated. (e.g. this is done by the pango renderer) if this is the
case we shouldn't call cogl_texture_get_format() with an invalid cogl handle.

This patch skips over layers without a texture handle when determining if any
textures have an alpha channel.

clutter/cogl/common/cogl-material.c

index 47fdc81..bd8eb0c 100644 (file)
@@ -100,6 +100,12 @@ handle_automatic_blend_enable (CoglMaterial *material)
   for (tmp = material->layers; tmp != NULL; tmp = tmp->next)
     {
       CoglMaterialLayer *layer = tmp->data;
+
+      /* NB: A layer may have a combine mode set on it but not yet have an
+       * associated texture. */
+      if (!layer->texture)
+        continue;
+
       if (cogl_texture_get_format (layer->texture) & COGL_A_BIT)
        material->flags |= COGL_MATERIAL_FLAG_ENABLE_BLEND;
     }