From cb5fb901f94ae67e45c84a4789d20d42a111a568 Mon Sep 17 00:00:00 2001 From: Ivan Li Date: Mon, 16 Jan 2023 19:57:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=99=8D=E4=BD=8E=E6=88=AA=E5=9B=BE?= =?UTF-8?q?=E5=B4=A9=E6=BA=83=E6=A6=82=E7=8E=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/main.rs | 20 +++++++++++++------- src-tauri/src/picker/manager.rs | 12 ------------ src-tauri/src/picker/screenshot.rs | 8 +++++++- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 9b4ad86..b9dc33c 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -14,10 +14,16 @@ use paris::*; use picker::config::DisplayConfig; use picker::manager::Picker; use picker::screenshot::ScreenshotDto; -use std::vec; +use tauri::async_runtime::Mutex; +use once_cell::sync::OnceCell; + +static GET_SCREENSHOT_LOCK: OnceCell> = OnceCell::new(); #[tauri::command] async fn take_snapshot() -> Vec { + info!("Hi?"); + let _lock = GET_SCREENSHOT_LOCK.get_or_init(|| Mutex::new(false)).lock().await; + info!("Hi!"); let manager = Picker::global().await; let start = time::Instant::now(); @@ -38,17 +44,17 @@ async fn take_snapshot() -> Vec { #[tauri::command] async fn get_screenshot_by_config(config: DisplayConfig) -> Result { - info!("Hi"); - let manager = Picker::global(); - + info!("Hi?"); + // let _lock = GET_SCREENSHOT_LOCK.get_or_init(|| Mutex::new(false)).lock().await; + // info!("Hi!"); let start = time::Instant::now(); - let screenshot_dto = manager.await.get_screenshot_by_config(config).await; + let screenshot_dto = Picker::preview_display_by_config(config).await; info!("截图耗时 {} s", start.elapsed().as_seconds_f32()); match screenshot_dto { Ok(screenshot_dto) => Ok(screenshot_dto), Err(error) => { - error!("get_screenshot_by_config failed. {}", error); - Err(format!("get_screenshot_by_config failed. {}", error)) + error!("preview_display_by_config failed. {}", error); + Err(format!("preview_display_by_config failed. {}", error)) } } } diff --git a/src-tauri/src/picker/manager.rs b/src-tauri/src/picker/manager.rs index 5ccd375..6680edd 100644 --- a/src-tauri/src/picker/manager.rs +++ b/src-tauri/src/picker/manager.rs @@ -84,16 +84,4 @@ impl Picker { anyhow::Ok(screenshot.to_dto().await) } - - pub async fn get_screenshot_by_config( - &self, - config: DisplayConfig, - ) -> anyhow::Result { - let start = time::Instant::now(); - let mut picker = DisplayPicker::from_config(config)?; - let screenshot = picker.take_screenshot()?; - info!("Take Screenshot Spend: {}", start.elapsed()); - - anyhow::Ok(screenshot.to_dto().await) - } } diff --git a/src-tauri/src/picker/screenshot.rs b/src-tauri/src/picker/screenshot.rs index 563c22f..116619d 100644 --- a/src-tauri/src/picker/screenshot.rs +++ b/src-tauri/src/picker/screenshot.rs @@ -1,8 +1,9 @@ use image::ImageBuffer; use image::{ImageOutputFormat, Rgb}; -use paris::error; +use paris::{error, info}; use serde::{Deserialize, Serialize}; use std::iter; +use std::time::SystemTime; use super::{config::DisplayConfig, led_color::LedColor}; @@ -265,9 +266,14 @@ impl Screenshot { } pub async fn to_dto(&self) -> ScreenshotDto { + let rk = SystemTime::now(); + info!("[{:?} {:p}] to_dto", rk.elapsed(), &self); let encode_image = self.to_webp_base64().await; + info!("[{:?} {:p}] image", rk.elapsed(), &self); let config = self.config.clone(); + info!("[{:?} {:p}] cloned", rk.elapsed(), &self); let colors = self.get_colors(); + info!("[{:?} {:p}] colors", rk.elapsed(), &self); ScreenshotDto { encode_image, config,