mirror of
https://github.com/servo/servo.git
synced 2025-08-07 06:25:32 +01:00
Auto merge of #13695 - heycam:layer-init, r=Manishearth
avoid initializing image layers after repeat/origin values have already been written <!-- Please describe your changes on the following line: --> @bors-servo r=manishearth given in https://bugzilla.mozilla.org/show_bug.cgi?id=1309081 --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [ ] `./mach build -d` does not report any errors - [ ] `./mach test-tidy` does not report any errors - [ ] These changes fix #__ (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13695) <!-- Reviewable:end -->
This commit is contained in:
commit
4ca7ce6329
2 changed files with 22 additions and 15 deletions
|
@ -494,12 +494,9 @@ extern "C" {
|
||||||
}
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Gecko_EnsureImageLayersLength(layers: *mut nsStyleImageLayers,
|
pub fn Gecko_EnsureImageLayersLength(layers: *mut nsStyleImageLayers,
|
||||||
len: usize);
|
len: usize,
|
||||||
}
|
layer_type:
|
||||||
extern "C" {
|
nsStyleImageLayers_LayerType);
|
||||||
pub fn Gecko_InitializeImageLayer(layer: *mut nsStyleImageLayers_Layer,
|
|
||||||
layer_type:
|
|
||||||
nsStyleImageLayers_LayerType);
|
|
||||||
}
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Gecko_ResetStyleCoord(unit: *mut nsStyleUnit,
|
pub fn Gecko_ResetStyleCoord(unit: *mut nsStyleUnit,
|
||||||
|
|
|
@ -23,7 +23,7 @@ use gecko_bindings::bindings::{Gecko_SetNullImageValue, Gecko_SetGradientImageVa
|
||||||
use gecko_bindings::bindings::{Gecko_EnsureImageLayersLength, Gecko_CreateGradient};
|
use gecko_bindings::bindings::{Gecko_EnsureImageLayersLength, Gecko_CreateGradient};
|
||||||
use gecko_bindings::bindings::{Gecko_CopyImageValueFrom, Gecko_CopyFontFamilyFrom};
|
use gecko_bindings::bindings::{Gecko_CopyImageValueFrom, Gecko_CopyFontFamilyFrom};
|
||||||
use gecko_bindings::bindings::{Gecko_FontFamilyList_AppendGeneric, Gecko_FontFamilyList_AppendNamed};
|
use gecko_bindings::bindings::{Gecko_FontFamilyList_AppendGeneric, Gecko_FontFamilyList_AppendNamed};
|
||||||
use gecko_bindings::bindings::{Gecko_FontFamilyList_Clear, Gecko_InitializeImageLayer};
|
use gecko_bindings::bindings::{Gecko_FontFamilyList_Clear};
|
||||||
use gecko_bindings::bindings::ServoComputedValuesBorrowedOrNull;
|
use gecko_bindings::bindings::ServoComputedValuesBorrowedOrNull;
|
||||||
use gecko_bindings::structs;
|
use gecko_bindings::structs;
|
||||||
use gecko_bindings::sugar::ns_style_coord::{CoordDataValue, CoordData, CoordDataMut};
|
use gecko_bindings::sugar::ns_style_coord::{CoordDataValue, CoordData, CoordDataMut};
|
||||||
|
@ -949,9 +949,12 @@ fn static_assert() {
|
||||||
image_layers_field = "mImage" if shorthand == "background" else "mMask"
|
image_layers_field = "mImage" if shorthand == "background" else "mMask"
|
||||||
%>
|
%>
|
||||||
pub fn copy_${shorthand}_${name}_from(&mut self, other: &Self) {
|
pub fn copy_${shorthand}_${name}_from(&mut self, other: &Self) {
|
||||||
|
use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType;
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field},
|
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field},
|
||||||
other.gecko.${image_layers_field}.mLayers.len());
|
other.gecko.${image_layers_field}.mLayers.len(),
|
||||||
|
LayerType::${shorthand.title()});
|
||||||
}
|
}
|
||||||
for (layer, other) in self.gecko.${image_layers_field}.mLayers.iter_mut()
|
for (layer, other) in self.gecko.${image_layers_field}.mLayers.iter_mut()
|
||||||
.zip(other.gecko.${image_layers_field}.mLayers.iter())
|
.zip(other.gecko.${image_layers_field}.mLayers.iter())
|
||||||
|
@ -965,8 +968,11 @@ fn static_assert() {
|
||||||
|
|
||||||
pub fn set_${shorthand}_${name}(&mut self,
|
pub fn set_${shorthand}_${name}(&mut self,
|
||||||
v: longhands::${shorthand}_${name}::computed_value::T) {
|
v: longhands::${shorthand}_${name}::computed_value::T) {
|
||||||
|
use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType;
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, v.0.len());
|
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, v.0.len(),
|
||||||
|
LayerType::${shorthand.title()});
|
||||||
}
|
}
|
||||||
|
|
||||||
self.gecko.${image_layers_field}.${field_name}Count = v.0.len() as u32;
|
self.gecko.${image_layers_field}.${field_name}Count = v.0.len() as u32;
|
||||||
|
@ -1032,6 +1038,8 @@ fn static_assert() {
|
||||||
</%self:simple_image_array_property>
|
</%self:simple_image_array_property>
|
||||||
|
|
||||||
pub fn copy_${shorthand}_position_from(&mut self, other: &Self) {
|
pub fn copy_${shorthand}_position_from(&mut self, other: &Self) {
|
||||||
|
use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType;
|
||||||
|
|
||||||
self.gecko.${image_layers_field}.mPositionXCount
|
self.gecko.${image_layers_field}.mPositionXCount
|
||||||
= cmp::min(1, other.gecko.${image_layers_field}.mPositionXCount);
|
= cmp::min(1, other.gecko.${image_layers_field}.mPositionXCount);
|
||||||
self.gecko.${image_layers_field}.mPositionYCount
|
self.gecko.${image_layers_field}.mPositionYCount
|
||||||
|
@ -1040,7 +1048,8 @@ fn static_assert() {
|
||||||
other.gecko.${image_layers_field}.mLayers.mFirstElement.mPosition;
|
other.gecko.${image_layers_field}.mLayers.mFirstElement.mPosition;
|
||||||
unsafe {
|
unsafe {
|
||||||
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field},
|
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field},
|
||||||
other.gecko.${image_layers_field}.mLayers.len());
|
other.gecko.${image_layers_field}.mLayers.len(),
|
||||||
|
LayerType::${shorthand.title()});
|
||||||
}
|
}
|
||||||
for (layer, other) in self.gecko.${image_layers_field}.mLayers.iter_mut()
|
for (layer, other) in self.gecko.${image_layers_field}.mLayers.iter_mut()
|
||||||
.zip(other.gecko.${image_layers_field}.mLayers.iter())
|
.zip(other.gecko.${image_layers_field}.mLayers.iter())
|
||||||
|
@ -1077,8 +1086,11 @@ fn static_assert() {
|
||||||
|
|
||||||
pub fn set_${shorthand}_position(&mut self,
|
pub fn set_${shorthand}_position(&mut self,
|
||||||
v: longhands::${shorthand}_position::computed_value::T) {
|
v: longhands::${shorthand}_position::computed_value::T) {
|
||||||
|
use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType;
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, v.0.len());
|
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, v.0.len(),
|
||||||
|
LayerType::${shorthand.title()});
|
||||||
}
|
}
|
||||||
|
|
||||||
self.gecko.${image_layers_field}.mPositionXCount = v.0.len() as u32;
|
self.gecko.${image_layers_field}.mPositionXCount = v.0.len() as u32;
|
||||||
|
@ -1344,10 +1356,8 @@ fn static_assert() {
|
||||||
Gecko_SetNullImageValue(&mut image.mImage)
|
Gecko_SetNullImageValue(&mut image.mImage)
|
||||||
}
|
}
|
||||||
// XXXManishearth clear mSourceURI for masks
|
// XXXManishearth clear mSourceURI for masks
|
||||||
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, images.0.len());
|
Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, images.0.len(),
|
||||||
for image in &mut self.gecko.${image_layers_field}.mLayers {
|
LayerType::${shorthand.title()});
|
||||||
Gecko_InitializeImageLayer(image, LayerType::${shorthand.title()});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.gecko.${image_layers_field}.mImageCount = images.0.len() as u32;
|
self.gecko.${image_layers_field}.mImageCount = images.0.len() as u32;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue