[librsvg/librsvg-2.48] pixbuf_utils: don't call get_dimensions_sub twice.



commit 1800bbf311de25f13e81f8c54d6b6af4294c56c9
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Apr 23 18:26:29 2020 -0500

    pixbuf_utils: don't call get_dimensions_sub twice.

 librsvg/pixbuf_utils.rs | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)
---
diff --git a/librsvg/pixbuf_utils.rs b/librsvg/pixbuf_utils.rs
index a3b5d833..f726a3dc 100644
--- a/librsvg/pixbuf_utils.rs
+++ b/librsvg/pixbuf_utils.rs
@@ -98,6 +98,10 @@ struct SizeMode {
 }
 
 fn get_final_size(dimensions: &RsvgDimensionData, size_mode: &SizeMode) -> (i32, i32) {
+    if dimensions.width == 0 || dimensions.height == 0 {
+        return (0, 0);
+    }
+
     let in_width = dimensions.width;
     let in_height = dimensions.height;
 
@@ -159,7 +163,7 @@ fn render_to_pixbuf_at_size(
     height: i32,
     dpi: Dpi,
 ) -> Result<Pixbuf, RenderingError> {
-    if width == 0 || height == 0 {
+    if width == 0 || height == 0 || dimensions.width == 0 || dimensions.height == 0 {
         return empty_pixbuf();
     }
 
@@ -172,17 +176,14 @@ fn render_to_pixbuf_at_size(
             f64::from(height) / f64::from(dimensions.height),
         );
 
-        let dimensions = handle.get_dimensions_sub(None, dpi, &SizeCallback::default(), false)?;
-        if !(dimensions.width == 0 || dimensions.height == 0) {
-            let viewport = cairo::Rectangle {
-                x: 0.0,
-                y: 0.0,
-                width: f64::from(dimensions.width),
-                height: f64::from(dimensions.height),
-            };
+        let viewport = cairo::Rectangle {
+            x: 0.0,
+            y: 0.0,
+            width: f64::from(dimensions.width),
+            height: f64::from(dimensions.height),
+        };
 
-            handle.render_document(&cr, &viewport, dpi, false)?;
-        }
+        handle.render_document(&cr, &viewport, dpi, false)?;
     }
 
     let shared_surface = SharedImageSurface::wrap(surface, SurfaceType::SRgb)?;
@@ -239,7 +240,7 @@ fn pixbuf_from_file_with_size_mode(
         };
 
         handle
-            .get_dimensions(dpi, &SizeCallback::default(), false)
+            .get_dimensions_sub(None, dpi, &SizeCallback::default(), false)
             .and_then(|dimensions| {
                 let (width, height) = get_final_size(&dimensions, size_mode);
 


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