summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2020-02-12 18:49:55 +0100
committerrabite <rabite@posteo.de>2020-02-12 19:16:31 +0100
commit77fdb0a754f334c00306c6af6f654c581df748b5 (patch)
tree1b01924af83efe1e0d78204122e7c0b968e3cde7
parent26017763ed93abe59529306d76efe7e3d4ad0d28 (diff)
reduce latency by not running in unnecessary thread pool
reduce latency by not running in unnecessary thread pool
-rw-r--r--src/files.rs27
-rw-r--r--src/listview.rs30
2 files changed, 23 insertions, 34 deletions
diff --git a/src/files.rs b/src/files.rs
index c02e2a8..4326714 100644
--- a/src/files.rs
+++ b/src/files.rs
@@ -393,26 +393,21 @@ impl Files {
}
pub fn enqueue_jobs(&mut self, n: usize) {
- let pool = get_pool();
let from = self.meta_upto.unwrap_or(0);
self.meta_upto = Some(from + n);
- let mut jobs =
- pool.install(|| {
- let c = match self.cache.clone() {
- Some(cache) => cache,
- None => return vec![]
- };
+ let cache = match self.cache.clone() {
+ Some(cache) => cache,
+ None => return
+ };
- self.iter_files_mut()
- .skip(from)
- .take(n)
- // To turn into IndexedParallelIter
- .collect::<Vec<&mut File>>()
- .into_par_iter()
- .filter_map(|f| f.prepare_meta_job(&c))
- .collect::<Vec<_>>()
- });
+ let mut jobs = self.iter_files_mut()
+ .collect::<Vec<&mut File>>()
+ .into_par_iter()
+ .skip(from)
+ .take(n)
+ .filter_map(|f| f.prepare_meta_job(&cache))
+ .collect::<Vec<_>>();
self.jobs.append(&mut jobs);
}
diff --git a/src/listview.rs b/src/listview.rs
index 13f5ba6..e2bbed9 100644
--- a/src/listview.rs
+++ b/src/listview.rs
@@ -300,9 +300,6 @@ impl FileListBuilder {
}
pub fn build(mut self) -> HResult<ListView<Files>> {
- // Create new IO pool to not block the main render pool, or other busy IO pools
- let pool = crate::files::get_pool();
-
let c = &self.cache;
let s = self.stale.clone();
let core = self.core;
@@ -316,8 +313,8 @@ impl FileListBuilder {
_ => false
};
- let files = pool.install(|| -> HResult<Files> {
- let mut files = match source {
+ let mut files =
+ match source {
FileSource::Files(f) => Ok(f),
FileSource::Path(f) => {
c.as_ref()
@@ -327,25 +324,22 @@ impl FileListBuilder {
}
}?;
- // Check/set hidden flag and recalculate number of files if it's different
- if !files.show_hidden == cfg.show_hidden() {
- files.show_hidden = cfg.show_hidden();
- files.recalculate_len();
- }
-
- // TODO: Fix sorting so it works with lazy/partial sorting
- if !nosort {
- files.sort();
- }
+ // Check/set hidden flag and recalculate number of files if it's different
+ if !files.show_hidden == cfg.show_hidden() {
+ files.show_hidden = cfg.show_hidden();
+ files.recalculate_len();
+ }
- Ok(files)
- })?;
+ // TODO: Fix sorting so it works with lazy/partial sorting
+ if !nosort {
+ files.sort();
+ }
let mut view = ListView::new(&core, files);
selected_file
.or_else(|| c.as_ref()
- .and_then(|c| c.get_selection(&view.content.directory).ok()))
+ .and_then(|c| c.get_selection(&view.content.directory).ok()))
.map(|f| view.select_file(&f));
self.stale.map(|s| view.content.stale = Some(s));