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.
This commit is contained in:
parent
bb4fddd593
commit
1e9b550f44
|
@ -36,6 +36,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Cursor position not reported to apps when mouse is moved with button held outside of window
|
- Cursor position not reported to apps when mouse is moved with button held outside of window
|
||||||
- No live config update when starting Alacritty with a broken configuration file
|
- No live config update when starting Alacritty with a broken configuration file
|
||||||
- PTY not drained to the end with the `--hold` flag enabled
|
- PTY not drained to the end with the `--hold` flag enabled
|
||||||
|
- High CPU usage on BSD with live config reload enabled
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,11 @@ use alacritty_terminal::thread;
|
||||||
|
|
||||||
use crate::event::{Event, EventProxy};
|
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<PathBuf>, event_proxy: EventProxy) {
|
pub fn watch(mut paths: Vec<PathBuf>, event_proxy: EventProxy) {
|
||||||
// Canonicalize all paths, filtering out the ones that do not exist.
|
// Canonicalize all paths, filtering out the ones that do not exist.
|
||||||
paths = paths
|
paths = paths
|
||||||
|
@ -30,7 +35,7 @@ pub fn watch(mut paths: Vec<PathBuf>, event_proxy: EventProxy) {
|
||||||
|
|
||||||
// The Duration argument is a debouncing period.
|
// The Duration argument is a debouncing period.
|
||||||
let (tx, rx) = mpsc::channel();
|
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,
|
Ok(watcher) => watcher,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
error!("Unable to watch config file: {}", err);
|
error!("Unable to watch config file: {}", err);
|
||||||
|
|
Loading…
Reference in New Issue