[librsvg: 31/36] filters/mod: remove interior mutability
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 31/36] filters/mod: remove interior mutability
- Date: Mon, 1 Jul 2019 01:56:14 +0000 (UTC)
commit b7adf20a868a073176303e3043eb1abad554a4af
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Jun 30 17:28:14 2019 +0200
filters/mod: remove interior mutability
rsvg_internals/src/filters/blend.rs | 2 +-
rsvg_internals/src/filters/color_matrix.rs | 2 +-
rsvg_internals/src/filters/component_transfer.rs | 2 +-
rsvg_internals/src/filters/composite.rs | 2 +-
rsvg_internals/src/filters/convolve_matrix.rs | 2 +-
rsvg_internals/src/filters/displacement_map.rs | 2 +-
rsvg_internals/src/filters/flood.rs | 2 +-
rsvg_internals/src/filters/gaussian_blur.rs | 2 +-
rsvg_internals/src/filters/image.rs | 2 +-
rsvg_internals/src/filters/light/lighting.rs | 2 +-
rsvg_internals/src/filters/merge.rs | 2 +-
rsvg_internals/src/filters/mod.rs | 71 ++++++++++++------------
rsvg_internals/src/filters/morphology.rs | 2 +-
rsvg_internals/src/filters/offset.rs | 2 +-
rsvg_internals/src/filters/tile.rs | 2 +-
rsvg_internals/src/filters/turbulence.rs | 2 +-
16 files changed, 51 insertions(+), 50 deletions(-)
---
diff --git a/rsvg_internals/src/filters/blend.rs b/rsvg_internals/src/filters/blend.rs
index 7afa4868..6075e78e 100644
--- a/rsvg_internals/src/filters/blend.rs
+++ b/rsvg_internals/src/filters/blend.rs
@@ -111,7 +111,7 @@ impl Filter for Blend {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, surface_type)?,
bounds,
diff --git a/rsvg_internals/src/filters/color_matrix.rs b/rsvg_internals/src/filters/color_matrix.rs
index b8a3bae8..de9de6f7 100644
--- a/rsvg_internals/src/filters/color_matrix.rs
+++ b/rsvg_internals/src/filters/color_matrix.rs
@@ -215,7 +215,7 @@ impl Filter for ColorMatrix {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, input.surface().surface_type())?,
bounds,
diff --git a/rsvg_internals/src/filters/component_transfer.rs
b/rsvg_internals/src/filters/component_transfer.rs
index 832feadd..a18f01da 100644
--- a/rsvg_internals/src/filters/component_transfer.rs
+++ b/rsvg_internals/src/filters/component_transfer.rs
@@ -378,7 +378,7 @@ impl Filter for ComponentTransfer {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, input.surface().surface_type())?,
bounds,
diff --git a/rsvg_internals/src/filters/composite.rs b/rsvg_internals/src/filters/composite.rs
index f824e8d7..b42701ac 100644
--- a/rsvg_internals/src/filters/composite.rs
+++ b/rsvg_internals/src/filters/composite.rs
@@ -201,7 +201,7 @@ impl Filter for Composite {
};
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, surface_type)?,
bounds,
diff --git a/rsvg_internals/src/filters/convolve_matrix.rs b/rsvg_internals/src/filters/convolve_matrix.rs
index c2867e74..d5ce1f17 100644
--- a/rsvg_internals/src/filters/convolve_matrix.rs
+++ b/rsvg_internals/src/filters/convolve_matrix.rs
@@ -350,7 +350,7 @@ impl Filter for ConvolveMatrix {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: output_surface,
bounds,
diff --git a/rsvg_internals/src/filters/displacement_map.rs b/rsvg_internals/src/filters/displacement_map.rs
index 38efd82b..b6c581cd 100644
--- a/rsvg_internals/src/filters/displacement_map.rs
+++ b/rsvg_internals/src/filters/displacement_map.rs
@@ -127,7 +127,7 @@ impl Filter for DisplacementMap {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, input.surface().surface_type())?,
bounds,
diff --git a/rsvg_internals/src/filters/flood.rs b/rsvg_internals/src/filters/flood.rs
index dae7412d..1bae1894 100644
--- a/rsvg_internals/src/filters/flood.rs
+++ b/rsvg_internals/src/filters/flood.rs
@@ -77,7 +77,7 @@ impl Filter for Flood {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, SurfaceType::SRgb)?,
bounds,
diff --git a/rsvg_internals/src/filters/gaussian_blur.rs b/rsvg_internals/src/filters/gaussian_blur.rs
index fc61c27f..723e643e 100644
--- a/rsvg_internals/src/filters/gaussian_blur.rs
+++ b/rsvg_internals/src/filters/gaussian_blur.rs
@@ -247,7 +247,7 @@ impl Filter for GaussianBlur {
};
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: output_surface,
bounds,
diff --git a/rsvg_internals/src/filters/image.rs b/rsvg_internals/src/filters/image.rs
index 77a0ce0c..e5b06a71 100644
--- a/rsvg_internals/src/filters/image.rs
+++ b/rsvg_internals/src/filters/image.rs
@@ -219,7 +219,7 @@ impl Filter for Image {
};
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, SurfaceType::SRgb)?,
bounds,
diff --git a/rsvg_internals/src/filters/light/lighting.rs b/rsvg_internals/src/filters/light/lighting.rs
index 5a11474e..61352199 100644
--- a/rsvg_internals/src/filters/light/lighting.rs
+++ b/rsvg_internals/src/filters/light/lighting.rs
@@ -485,7 +485,7 @@ impl Filter for Lighting {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: output_surface,
bounds,
diff --git a/rsvg_internals/src/filters/merge.rs b/rsvg_internals/src/filters/merge.rs
index c0118923..bbb5e630 100644
--- a/rsvg_internals/src/filters/merge.rs
+++ b/rsvg_internals/src/filters/merge.rs
@@ -160,7 +160,7 @@ impl Filter for Merge {
};
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: output_surface,
bounds,
diff --git a/rsvg_internals/src/filters/mod.rs b/rsvg_internals/src/filters/mod.rs
index c8eefa5a..5f425676 100644
--- a/rsvg_internals/src/filters/mod.rs
+++ b/rsvg_internals/src/filters/mod.rs
@@ -1,4 +1,3 @@
-use std::cell::{Cell, RefCell};
use std::ops::Deref;
use std::time::Instant;
@@ -79,17 +78,17 @@ pub mod turbulence;
/// The base filter primitive node containing common properties.
struct Primitive {
- x: Cell<Option<LengthHorizontal>>,
- y: Cell<Option<LengthVertical>>,
- width: Cell<Option<LengthHorizontal>>,
- height: Cell<Option<LengthVertical>>,
- result: RefCell<Option<String>>,
+ x: Option<LengthHorizontal>,
+ y: Option<LengthVertical>,
+ width: Option<LengthHorizontal>,
+ height: Option<LengthVertical>,
+ result: Option<String>,
}
/// The base node for filter primitives which accept input.
struct PrimitiveWithInput {
base: Primitive,
- in_: RefCell<Option<Input>>,
+ in_: Option<Input>,
}
impl Primitive {
@@ -97,24 +96,18 @@ impl Primitive {
#[inline]
fn new<T: Filter>() -> Primitive {
Primitive {
- x: Cell::new(None),
- y: Cell::new(None),
- width: Cell::new(None),
- height: Cell::new(None),
- result: RefCell::new(None),
+ x: None,
+ y: None,
+ width: None,
+ height: None,
+ result: None,
}
}
/// Returns the `BoundsBuilder` for bounds computation.
#[inline]
fn get_bounds<'a>(&self, ctx: &'a FilterContext) -> BoundsBuilder<'a> {
- BoundsBuilder::new(
- ctx,
- self.x.get(),
- self.y.get(),
- self.width.get(),
- self.height.get(),
- )
+ BoundsBuilder::new(ctx, self.x, self.y, self.width, self.height)
}
}
@@ -169,19 +162,27 @@ impl NodeTrait for Primitive {
for (attr, value) in pbag.iter() {
match attr {
- local_name!("x") => self.x.set(Some(
- attr.parse_and_validate(value, check_units_horizontal)?,
- )),
- local_name!("y") => self
- .y
- .set(Some(attr.parse_and_validate(value, check_units_vertical)?)),
- local_name!("width") => self.width.set(Some(
- attr.parse_and_validate(value, check_units_horizontal_and_ensure_nonnegative)?,
- )),
- local_name!("height") => self.height.set(Some(
- attr.parse_and_validate(value, check_units_vertical_and_ensure_nonnegative)?,
- )),
- local_name!("result") => *self.result.borrow_mut() = Some(value.to_string()),
+ local_name!("x") => {
+ self.x = Some(attr.parse_and_validate(value, check_units_horizontal)?)
+ }
+ local_name!("y") => {
+ self.y = Some(attr.parse_and_validate(value, check_units_vertical)?)
+ }
+ local_name!("width") => {
+ self.width =
+ Some(attr.parse_and_validate(
+ value,
+ check_units_horizontal_and_ensure_nonnegative,
+ )?)
+ }
+ local_name!("height") => {
+ self.height =
+ Some(attr.parse_and_validate(
+ value,
+ check_units_vertical_and_ensure_nonnegative,
+ )?)
+ }
+ local_name!("result") => self.result = Some(value.to_string()),
_ => (),
}
}
@@ -196,7 +197,7 @@ impl PrimitiveWithInput {
fn new<T: Filter>() -> PrimitiveWithInput {
PrimitiveWithInput {
base: Primitive::new::<T>(),
- in_: RefCell::new(None),
+ in_: None,
}
}
@@ -207,7 +208,7 @@ impl PrimitiveWithInput {
ctx: &FilterContext,
draw_ctx: &mut DrawingCtx,
) -> Result<FilterInput, FilterError> {
- ctx.get_input(draw_ctx, self.in_.borrow().as_ref())
+ ctx.get_input(draw_ctx, self.in_.as_ref())
}
}
@@ -217,7 +218,7 @@ impl NodeTrait for PrimitiveWithInput {
for (attr, value) in pbag.iter() {
match attr {
- local_name!("in") => drop(self.in_.replace(Some(Input::parse(attr, value)?))),
+ local_name!("in") => drop(self.in_ = Some(Input::parse(attr, value)?)),
_ => (),
}
}
diff --git a/rsvg_internals/src/filters/morphology.rs b/rsvg_internals/src/filters/morphology.rs
index 02beebc1..23741166 100644
--- a/rsvg_internals/src/filters/morphology.rs
+++ b/rsvg_internals/src/filters/morphology.rs
@@ -146,7 +146,7 @@ impl Filter for Morphology {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, input.surface().surface_type())?,
bounds,
diff --git a/rsvg_internals/src/filters/offset.rs b/rsvg_internals/src/filters/offset.rs
index d55f70e2..e4fa299e 100644
--- a/rsvg_internals/src/filters/offset.rs
+++ b/rsvg_internals/src/filters/offset.rs
@@ -96,7 +96,7 @@ impl Filter for Offset {
}
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, input.surface().surface_type())?,
bounds,
diff --git a/rsvg_internals/src/filters/tile.rs b/rsvg_internals/src/filters/tile.rs
index 7cf22e27..156a80f7 100644
--- a/rsvg_internals/src/filters/tile.rs
+++ b/rsvg_internals/src/filters/tile.rs
@@ -98,7 +98,7 @@ impl Filter for Tile {
};
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: output_surface,
bounds,
diff --git a/rsvg_internals/src/filters/turbulence.rs b/rsvg_internals/src/filters/turbulence.rs
index 9fd8a82f..b096096b 100644
--- a/rsvg_internals/src/filters/turbulence.rs
+++ b/rsvg_internals/src/filters/turbulence.rs
@@ -412,7 +412,7 @@ impl Filter for Turbulence {
};
Ok(FilterResult {
- name: self.base.result.borrow().clone(),
+ name: self.base.result.clone(),
output: FilterOutput {
surface: SharedImageSurface::new(output_surface, surface_type)?,
bounds,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]