[librsvg: 31/36] filters/mod: remove interior mutability



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]