]> git.seodisparate.com - mpd_info_screen/commitdiff
Impl better handling of unknown image type
authorStephen Seo <seo.disparate@gmail.com>
Sun, 30 Oct 2022 08:54:33 +0000 (17:54 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Sun, 30 Oct 2022 10:41:50 +0000 (19:41 +0900)
src/display.rs

index 040c20650724ac504612e98443bf43cb5af9039b..316517a614c21b845587e2dc7d4f50eeb2d0ca4d 100644 (file)
@@ -8,6 +8,7 @@ use ggez::graphics::{
 };
 use ggez::{timer, Context, GameError, GameResult};
 use image::io::Reader as ImageReader;
+use image::DynamicImage;
 use std::io::Cursor;
 use std::path::PathBuf;
 use std::sync::atomic::AtomicBool;
@@ -398,18 +399,24 @@ impl MPDDisplay {
         }
 
         let img_result = if is_unknown_format {
-            let mut reader = ImageReader::new(Cursor::new(&image_ref));
-            reader = reader
+            let reader = ImageReader::new(Cursor::new(image_ref));
+            let guessed_reader = reader
                 .with_guessed_format()
-                .map_err(|e| format!("Error: Failed to guess format of album art image: {}", e))?;
-            reader.decode().map_err(|e| {
-                format!(
-                    "Error: Failed to decode album art image (guessed format): {}",
-                    e
-                )
-            })
+                .map_err(|e| format!("Error: Failed to guess format of album art image: {}", e));
+            if let Ok(reader) = guessed_reader {
+                reader.decode().map_err(|e| {
+                    format!(
+                        "Error: Failed to decode album art image (guessed format): {}",
+                        e
+                    )
+                })
+            } else {
+                // Convert Ok(_) to Ok(DynamicImage) which will never be used since the if statement
+                // covers it.
+                guessed_reader.map(|_| DynamicImage::default())
+            }
         } else {
-            ImageReader::with_format(Cursor::new(&image_ref), image_format)
+            ImageReader::with_format(Cursor::new(image_ref), image_format)
                 .decode()
                 .map_err(|e| format!("Error: Failed to decode album art image: {}", e))
         };