[librsvg] element: move is_accessed_by_reference method
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] element: move is_accessed_by_reference method
- Date: Sat, 4 Apr 2020 21:20:11 +0000 (UTC)
commit 879775ec60c1a6f972208885f29ad6d545ee3883
Author: Paolo Borelli <pborelli gnome org>
Date: Sat Apr 4 23:18:47 2020 +0200
element: move is_accessed_by_reference method
rsvg_internals/src/document.rs | 19 +------------------
rsvg_internals/src/element.rs | 12 ++++++++++++
2 files changed, 13 insertions(+), 18 deletions(-)
---
diff --git a/rsvg_internals/src/document.rs b/rsvg_internals/src/document.rs
index 2d8cf50f..55c32ba2 100644
--- a/rsvg_internals/src/document.rs
+++ b/rsvg_internals/src/document.rs
@@ -343,7 +343,7 @@ impl<'i> AcquiredNodes<'i> {
let node = self.lookup_node(fragment, element_types)?;
- if node_is_accessed_by_reference(&node) {
+ if node.is_element() && node.borrow_element().is_accessed_by_reference() {
self.acquire_ref(&node)
} else {
Ok(AcquiredNode {
@@ -366,23 +366,6 @@ impl<'i> AcquiredNodes<'i> {
}
}
-// Returns whether a node of a particular type is only accessed by reference
-// from other nodes' atributes. The node could in turn cause other nodes
-// to get referenced, potentially causing reference cycles.
-fn node_is_accessed_by_reference(node: &Node) -> bool {
- use ElementType::*;
-
- if !node.is_element() {
- return false;
- }
-
- match node.borrow_element().get_type() {
- ClipPath | Filter | LinearGradient | Marker | Mask | Pattern | RadialGradient => true,
-
- _ => false,
- }
-}
-
/// Keeps a stack of nodes and can check if a certain node is contained in the stack
///
/// Sometimes parts of the code cannot plainly use the implicit stack of acquired
diff --git a/rsvg_internals/src/element.rs b/rsvg_internals/src/element.rs
index f547c099..53335df7 100644
--- a/rsvg_internals/src/element.rs
+++ b/rsvg_internals/src/element.rs
@@ -383,6 +383,18 @@ impl Element {
pub fn as_filter_effect(&self) -> Option<&dyn FilterEffect> {
self.element_impl.as_filter_effect()
}
+
+ /// Returns whether an element of a particular type is only accessed by reference
+ // from other elements' attributes. The element could in turn cause other nodes
+ // to get referenced, potentially causing reference cycles.
+ pub fn is_accessed_by_reference(&self) -> bool {
+ use ElementType::*;
+
+ match self.element_type {
+ ClipPath | Filter | LinearGradient | Marker | Mask | Pattern | RadialGradient => true,
+ _ => false,
+ }
+ }
}
impl fmt::Display for Element {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]