Bug 1309081 - Initialize image layer as part of Gecko_EnsureImageLayersLength. r?manishearth draft
authorCameron McCormack <cam@mcc.id.au>
Tue, 11 Oct 2016 10:53:33 +0800
changeset 423375 6a9766bc8a2a9f6b9e7cda73e83cb338edff1954
parent 419992 b193834a94b6804ac1499294b35f8f573d7cc010
child 423376 7e2297efd2dbbe63c9151262a92eee163abab0c2
push id31889
push userbmo:cam@mcc.id.au
push dateTue, 11 Oct 2016 03:20:47 +0000
reviewersmanishearth
bugs1309081
milestone52.0a1
Bug 1309081 - Initialize image layer as part of Gecko_EnsureImageLayersLength. r?manishearth MozReview-Commit-ID: 4MszPafvcKs
layout/style/ServoBindings.cpp
layout/style/ServoBindings.h
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -786,26 +786,26 @@ Gecko_CopyStyleContentsFrom(nsStyleConte
   aContent->AllocateContents(count);
 
   for (uint32_t i = 0; i < count; ++i) {
     aContent->ContentAt(i) = aOther->ContentAt(i);
   }
 }
 
 void
-Gecko_EnsureImageLayersLength(nsStyleImageLayers* aLayers, size_t aLen)
+Gecko_EnsureImageLayersLength(nsStyleImageLayers* aLayers, size_t aLen,
+                              nsStyleImageLayers::LayerType aLayerType)
 {
-  aLayers->mLayers.EnsureLengthAtLeast(aLen);
-}
+  size_t oldLength = aLayers->mLayers.Length();
 
-void
-Gecko_InitializeImageLayer(nsStyleImageLayers::Layer* aLayer,
-                                nsStyleImageLayers::LayerType aLayerType)
-{
-  aLayer->Initialize(aLayerType);
+  aLayers->mLayers.EnsureLengthAtLeast(aLen);
+
+  for (size_t i = oldLength; i < aLen; ++i) {
+    aLayers->mLayers[i].Initialize(aLayerType);
+  }
 }
 
 void
 Gecko_ResetStyleCoord(nsStyleUnit* aUnit, nsStyleUnion* aValue)
 {
   nsStyleCoord::Reset(*aUnit, *aValue);
 }
 
--- a/layout/style/ServoBindings.h
+++ b/layout/style/ServoBindings.h
@@ -290,20 +290,18 @@ void Gecko_EnsureTArrayCapacity(void* ar
 void Gecko_ClearPODTArray(void* array, size_t elem_size, size_t elem_align);
 
 // Clear the mContents field in nsStyleContent. This is needed to run the
 // destructors, otherwise we'd leak the images (though we still don't support
 // those), strings, and whatnot.
 void Gecko_ClearStyleContents(nsStyleContent* content);
 void Gecko_CopyStyleContentsFrom(nsStyleContent* content, const nsStyleContent* other);
 
-void Gecko_EnsureImageLayersLength(nsStyleImageLayers* layers, size_t len);
-
-void Gecko_InitializeImageLayer(nsStyleImageLayers::Layer* layer,
-                                nsStyleImageLayers::LayerType layer_type);
+void Gecko_EnsureImageLayersLength(nsStyleImageLayers* layers, size_t len,
+                                   nsStyleImageLayers::LayerType layer_type);
 
 // Clean up pointer-based coordinates
 void Gecko_ResetStyleCoord(nsStyleUnit* unit, nsStyleUnion* value);
 
 // Set an nsStyleCoord to a computed `calc()` value
 void Gecko_SetStyleCoordCalcValue(nsStyleUnit* unit, nsStyleUnion* value, nsStyleCoord::CalcValue calc);
 
 void Gecko_CopyClipPathValueFrom(mozilla::StyleClipPath* dst, const mozilla::StyleClipPath* src);