material: set ->layer_index on new layers for unit0
authorRobert Bragg <robert@linux.intel.com>
Wed, 7 Jul 2010 18:23:57 +0000 (19:23 +0100)
committerRobert Bragg <robert@linux.intel.com>
Wed, 7 Jul 2010 19:46:04 +0000 (20:46 +0100)
We were mistakenly only initializing layer->layer_index for new layers
associated with texture units > 0. This had gone unnoticed because
normally layers associated with texture unit0 have a layer index of 0
too. Mutter was hitting this issue because it was initializing layer 1
before layer 0 for one of its materials so layer 1 was temporarily
associated with texture unit 0.

clutter/cogl/cogl/cogl-material.c

index 6a0bda2..e1b121a 100644 (file)
@@ -1841,8 +1841,8 @@ _cogl_material_get_layer (CoglMaterial *material,
       /* Since we passed a newly allocated layer we wouldn't expect
        * _set_layer_unit() to have to allocate *another* layer. */
       g_assert (new == layer);
-      layer->index = layer_index;
     }
+  layer->index = layer_index;
 
   for (i = 0; i < layer_info.n_layers_to_shift; i++)
     {