From 1e9b550f447bb4e1caf1e5ad36f760f1ef869b25 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Thu, 17 Dec 2020 00:52:03 +0000 Subject: Increase file watcher delay on BSD Since BSD does not support inotify polling in the `notify` crate and instead relies on manual filesystem polling, this would cause a high CPU usage at 100 polls a second. A separate polling rate of once per second is now used for platforms which do not support filesystem polling, allowing users to still make use of live config reload on BSD. Fixes #3871. --- alacritty/src/config/monitor.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'alacritty') diff --git a/alacritty/src/config/monitor.rs b/alacritty/src/config/monitor.rs index 5d388182..4a694fac 100644 --- a/alacritty/src/config/monitor.rs +++ b/alacritty/src/config/monitor.rs @@ -10,6 +10,11 @@ use alacritty_terminal::thread; use crate::event::{Event, EventProxy}; +#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))] +const DEBOUNCE_DELAY: Duration = Duration::from_millis(10); +#[cfg(not(any(target_os = "linux", target_os = "macos", target_os = "windows")))] +const DEBOUNCE_DELAY: Duration = Duration::from_millis(1000); + pub fn watch(mut paths: Vec, event_proxy: EventProxy) { // Canonicalize all paths, filtering out the ones that do not exist. paths = paths @@ -30,7 +35,7 @@ pub fn watch(mut paths: Vec, event_proxy: EventProxy) { // The Duration argument is a debouncing period. let (tx, rx) = mpsc::channel(); - let mut watcher = match watcher(tx, Duration::from_millis(10)) { + let mut watcher = match watcher(tx, DEBOUNCE_DELAY) { Ok(watcher) => watcher, Err(err) => { error!("Unable to watch config file: {}", err); -- cgit