Use apply_to_canvas in /pgen/3 as well
authorMegaBrutal <code+git@megabrutal.com>
Mon, 26 Dec 2022 22:30:00 +0000 (23:30 +0100)
committerMegaBrutal <code+git@megabrutal.com>
Mon, 26 Dec 2022 22:30:00 +0000 (23:30 +0100)
src/main.rs

index 8f6f15ea23a380e8c3853df4559fac9f05422d62..7b1598fbdad17f6bdcd217ef322b33c298fce8aa 100644 (file)
@@ -451,12 +451,10 @@ async fn img_pgen3(req: HttpRequest, path: web::Path<u32>, canvas2: web::Data<Ar
     let rgbimg: RgbImage = rgb_encode(ImageBuffer::new(TIMEAVATAR_SIZE_U32, TIMEAVATAR_SIZE_U32), &mut data.bytes())?;
     let resimg: RgbImage = ({
         let canvas_option = &mut *canvas2.lock().unwrap();
-        let mut canvas = match canvas_option.0.take() {
-            Some(canvas) => canvas,
-            None => Canvas::new(60 * TIMEAVATAR_SIZE_U32, 24 * TIMEAVATAR_SIZE_U32)?
-        };
-        overlay(&mut canvas.img, &rgbimg, minute * TIMEAVATAR_SIZE_I64, hour * TIMEAVATAR_SIZE_I64);
-        Ok(canvas_option.0.insert(canvas).img.clone())
+        Ok(apply_to_canvas(|mut canvas, _| {
+            overlay(&mut canvas.img, &rgbimg, minute * TIMEAVATAR_SIZE_I64, hour * TIMEAVATAR_SIZE_I64);
+            Ok(canvas)
+        }, &mut canvas_option.0, Some((60 * TIMEAVATAR_SIZE_U32, 24 * TIMEAVATAR_SIZE_U32)), "")?.img.clone())
     } as Result<RgbImage, CanvasError>)?;
     let cursor = image_to_cursor(resimg, scale)?;
     Ok(response_image!(cursor))