mirror of
https://github.com/patarapolw/cjdic2.git
synced 2026-11-08 17:35:18 +00:00
try spawn blocking
This commit is contained in:
1 parent
413376d3f3
commit
079fdd512c
3 files changed
+29
-16
No files matched your search
@@ -6,3 +6,6 @@ resolver = "3"
|
|||||||
lto = true
|
lto = true
|
||||||
codegen-units = 1
|
codegen-units = 1
|
||||||
strip = true
|
strip = true
|
||||||
|
# debug = true # keep symbols
|
||||||
|
# lto = false # disable LTO
|
||||||
|
# opt-level = 1 # reduce but don't maximize optimization
|
||||||
@@ -40,6 +40,7 @@ pub enum SqlParam {
|
|||||||
Bool(bool),
|
Bool(bool),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
pub struct AppService {
|
pub struct AppService {
|
||||||
db: Database,
|
db: Database,
|
||||||
tokenizer: Tokenizer,
|
tokenizer: Tokenizer,
|
||||||
|
|||||||
+25
-16
@@ -59,26 +59,35 @@ pub async fn init_yomitan(
|
|||||||
.map(|d| data_dir.join(&d.filepath))
|
.map(|d| data_dir.join(&d.filepath))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let update_count = Cell::new(0usize);
|
let state = state.inner().clone();
|
||||||
|
let app_clone = app.clone();
|
||||||
|
|
||||||
state.load_yomitan_zip_dir(
|
let update_count = tokio::task::spawn_blocking(move || {
|
||||||
zip_files,
|
let update_count = Cell::new(0usize);
|
||||||
&yomitan_assets,
|
|
||||||
lang.as_str(),
|
|
||||||
|r| {
|
|
||||||
update_count.set(update_count.get() + r.new_dicts.len() + r.to_be_removed_dicts.len());
|
|
||||||
app.emit("load-yomitan-dir", r).unwrap();
|
|
||||||
},
|
|
||||||
|r| {
|
|
||||||
update_count.set(update_count.get() + 1);
|
|
||||||
app.emit("yomitan-import-progress", r).unwrap();
|
|
||||||
},
|
|
||||||
)?;
|
|
||||||
|
|
||||||
if update_count.get() > 0 {
|
state.load_yomitan_zip_dir(
|
||||||
|
zip_files,
|
||||||
|
&yomitan_assets,
|
||||||
|
lang.as_str(),
|
||||||
|
|r| {
|
||||||
|
update_count
|
||||||
|
.set(update_count.get() + r.new_dicts.len() + r.to_be_removed_dicts.len());
|
||||||
|
app.emit("load-yomitan-dir", r).unwrap();
|
||||||
|
},
|
||||||
|
|r| {
|
||||||
|
update_count.set(update_count.get() + 1);
|
||||||
|
app.emit("yomitan-import-progress", r).unwrap();
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
Ok::<usize, CJDicError>(update_count.get())
|
||||||
|
})
|
||||||
|
.await
|
||||||
|
.map_err(|e| CJDicError::Error(e.to_string()))??;
|
||||||
|
|
||||||
|
if update_count > 0 {
|
||||||
println!("Request app restart?",);
|
println!("Request app restart?",);
|
||||||
// Request app restart anyway
|
// Request app restart anyway
|
||||||
app.request_restart();
|
app_clone.request_restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Reference in new issue
Block a user