mirror of
https://github.com/patarapolw/cjdic2.git
synced 2026-11-09 17:39:35 +00:00
try spawn blocking
This commit is contained in:
1 parent
413376d3f3
commit
079fdd512c
3 files changed
+16
-3
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,
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ pub async fn init_yomitan(
|
|||||||
.map(|d| data_dir.join(&d.filepath))
|
.map(|d| data_dir.join(&d.filepath))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
let state = state.inner().clone();
|
||||||
|
let app_clone = app.clone();
|
||||||
|
|
||||||
|
let update_count = tokio::task::spawn_blocking(move || {
|
||||||
let update_count = Cell::new(0usize);
|
let update_count = Cell::new(0usize);
|
||||||
|
|
||||||
state.load_yomitan_zip_dir(
|
state.load_yomitan_zip_dir(
|
||||||
@@ -66,7 +70,8 @@ pub async fn init_yomitan(
|
|||||||
&yomitan_assets,
|
&yomitan_assets,
|
||||||
lang.as_str(),
|
lang.as_str(),
|
||||||
|r| {
|
|r| {
|
||||||
update_count.set(update_count.get() + r.new_dicts.len() + r.to_be_removed_dicts.len());
|
update_count
|
||||||
|
.set(update_count.get() + r.new_dicts.len() + r.to_be_removed_dicts.len());
|
||||||
app.emit("load-yomitan-dir", r).unwrap();
|
app.emit("load-yomitan-dir", r).unwrap();
|
||||||
},
|
},
|
||||||
|r| {
|
|r| {
|
||||||
@@ -74,11 +79,15 @@ pub async fn init_yomitan(
|
|||||||
app.emit("yomitan-import-progress", r).unwrap();
|
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.get() > 0 {
|
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