From a6a1d7b386cbecaad84e026bba8f9725aa3ca07f Mon Sep 17 00:00:00 2001 From: lali Date: Tue, 26 Sep 2023 19:11:51 +0200 Subject: fix: add mutex lock to preview threads (#430) * [fix] add mutex lock to preview threads Do not spawn 100s of threads when I'm holding down the arrow key. * [fix] add mutex lock to preview threads Do not spawn 100s of threads when I'm holding down the arrow key. --- src/preview/preview_file.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/preview/preview_file.rs b/src/preview/preview_file.rs index 96fccb3..9b4194a 100644 --- a/src/preview/preview_file.rs +++ b/src/preview/preview_file.rs @@ -1,5 +1,6 @@ use std::path; use std::process::{Command, Output}; +use std::sync::Mutex; use std::thread; use std::time; @@ -7,8 +8,13 @@ use ratatui::layout::Rect; use crate::context::AppContext; use crate::event::AppEvent; +use crate::lazy_static; use crate::ui::{views, AppBackend}; +lazy_static! { + static ref GUARD: Mutex<()> = Mutex::new(()); +} + pub enum PreviewFileState { Loading, Error { message: String }, @@ -79,6 +85,7 @@ impl Background { .insert(path.clone(), PreviewFileState::Loading); let _ = thread::spawn(move || { + let _locked = GUARD.lock().unwrap(); let file_full_path = path.as_path(); let res = Command::new(script) -- cgit v1.2.3