[librsvg: 19/30] SavedCr::new - return the error from cr.save




commit b0e4f3f8889f0eb618ae5eda6d2d6dc49c59a7bc
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Jun 21 18:37:13 2021 -0500

    SavedCr::new - return the error from cr.save
    
    Hmmmm, we can't deal with impl Drop in the same way, since destructors
    can't fail.
    
    Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/516>

 src/drawing_ctx.rs | 12 ++++++------
 src/handle.rs      |  4 ++--
 2 files changed, 8 insertions(+), 8 deletions(-)
---
diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs
index 89a2162d..e6f41992 100644
--- a/src/drawing_ctx.rs
+++ b/src/drawing_ctx.rs
@@ -250,9 +250,9 @@ pub fn draw_tree(
 pub struct SavedCr(cairo::Context);
 
 impl SavedCr {
-    pub fn new(cr: &cairo::Context) -> SavedCr {
-        cr.save();
-        SavedCr(cr.clone())
+    pub fn new(cr: &cairo::Context) -> Result<SavedCr, cairo::Error> {
+        cr.save()?;
+        Ok(SavedCr(cr.clone()))
     }
 }
 
@@ -675,7 +675,7 @@ impl DrawingCtx {
         let res = if clipping {
             draw_fn(acquired_nodes, self)
         } else {
-            let _saved_cr = SavedCr::new(&self.cr);
+            let _saved_cr = SavedCr::new(&self.cr)?;
 
             let Opacity(UnitInterval(opacity)) = stacking_ctx.opacity;
 
@@ -1311,7 +1311,7 @@ impl DrawingCtx {
                 clipping,
                 None,
                 &mut |_an, dc| {
-                    let _saved_cr = SavedCr::new(&dc.cr);
+                    let _saved_cr = SavedCr::new(&dc.cr)?;
 
                     if let Some(_params) =
                         dc.push_new_viewport(Some(vbox), image.rect, image.aspect, clip_mode)
@@ -1346,7 +1346,7 @@ impl DrawingCtx {
 
         let mut bbox = bbox.unwrap();
 
-        let _saved_cr = SavedCr::new(&self.cr);
+        let _saved_cr = SavedCr::new(&self.cr)?;
 
         self.cr
             .set_antialias(cairo::Antialias::from(span.text_rendering));
diff --git a/src/handle.rs b/src/handle.rs
index 830f4e6d..db15281c 100644
--- a/src/handle.rs
+++ b/src/handle.rs
@@ -253,7 +253,7 @@ impl Handle {
 
         let viewport = Rect::from(*viewport);
 
-        let _saved_cr = SavedCr::new(&cr);
+        let _saved_cr = SavedCr::new(&cr)?;
 
         let res = draw_tree(
             DrawingMode::LimitToStack { node, root },
@@ -345,7 +345,7 @@ impl Handle {
 
         // Render, transforming so element is at the new viewport's origin
 
-        let _saved_cr = SavedCr::new(&cr);
+        let _saved_cr = SavedCr::new(&cr)?;
 
         let factor =
             (element_viewport.width / ink_r.width()).min(element_viewport.height / ink_r.height());


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]