Probably fixed startup gtk errors
This commit is contained in:
parent
4c5a38dfc2
commit
cb1125dfbc
2 changed files with 14 additions and 14 deletions
|
@ -39,7 +39,7 @@ impl Default for LauncherState {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LauncherState {
|
impl LauncherState {
|
||||||
pub fn get(status_page: Option<&libadwaita::StatusPage>) -> std::io::Result<Self> {
|
pub fn get<T: Fn(&str)>(status: T) -> std::io::Result<Self> {
|
||||||
let config = config::get()?;
|
let config = config::get()?;
|
||||||
|
|
||||||
// Check wine existance
|
// Check wine existance
|
||||||
|
@ -55,18 +55,14 @@ impl LauncherState {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check game installation status
|
// Check game installation status
|
||||||
if let Some(status_page) = &status_page {
|
status("Updating game info...");
|
||||||
status_page.set_description(Some("Updating game info..."));
|
|
||||||
}
|
|
||||||
|
|
||||||
let game = Game::new(&config.game.path);
|
let game = Game::new(&config.game.path);
|
||||||
let diff = game.try_get_diff()?;
|
let diff = game.try_get_diff()?;
|
||||||
|
|
||||||
Ok(match diff {
|
Ok(match diff {
|
||||||
VersionDiff::Latest(_) => {
|
VersionDiff::Latest(_) => {
|
||||||
if let Some(status_page) = &status_page {
|
status("Updating voice info...");
|
||||||
status_page.set_description(Some("Updating voice info..."));
|
|
||||||
}
|
|
||||||
|
|
||||||
for voice_package in &config.game.voices {
|
for voice_package in &config.game.voices {
|
||||||
let mut voice_package = VoicePackage::with_locale(match VoiceLocale::from_str(voice_package) {
|
let mut voice_package = VoicePackage::with_locale(match VoiceLocale::from_str(voice_package) {
|
||||||
|
@ -74,9 +70,7 @@ impl LauncherState {
|
||||||
None => return Err(Error::new(ErrorKind::Other, format!("Incorrect voice locale \"{}\" specified in the config", voice_package)))
|
None => return Err(Error::new(ErrorKind::Other, format!("Incorrect voice locale \"{}\" specified in the config", voice_package)))
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
if let Some(status_page) = &status_page {
|
status(format!("Updating voice info ({})...", voice_package.locale().to_name()).as_str());
|
||||||
status_page.set_description(Some(format!("Updating voice info ({})...", voice_package.locale().to_name()).as_str()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace voice package struct with the one constructed in the game's folder
|
// Replace voice package struct with the one constructed in the game's folder
|
||||||
// so it'll properly calculate its difference instead of saying "not installed"
|
// so it'll properly calculate its difference instead of saying "not installed"
|
||||||
|
@ -97,9 +91,7 @@ impl LauncherState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(status_page) = &status_page {
|
status("Updating patch info...");
|
||||||
status_page.set_description(Some("Updating patch info..."));
|
|
||||||
}
|
|
||||||
|
|
||||||
let patch = Patch::try_fetch(config.patch.servers.clone())?;
|
let patch = Patch::try_fetch(config.patch.servers.clone())?;
|
||||||
|
|
||||||
|
|
|
@ -530,8 +530,16 @@ impl App {
|
||||||
this.widgets.status_page.show();
|
this.widgets.status_page.show();
|
||||||
this.widgets.launcher_content.hide();
|
this.widgets.launcher_content.hide();
|
||||||
|
|
||||||
|
let (sender, receiver) = glib::MainContext::channel::<String>(glib::PRIORITY_DEFAULT);
|
||||||
|
|
||||||
|
receiver.attach(None, clone!(@strong this.widgets.status_page as status_page => move |description| {
|
||||||
|
status_page.set_description(Some(&description));
|
||||||
|
|
||||||
|
glib::Continue(true)
|
||||||
|
}));
|
||||||
|
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
match LauncherState::get(Some(&this.widgets.status_page)) {
|
match LauncherState::get(move |status| sender.send(status.to_string()).unwrap()) {
|
||||||
Ok(state) => {
|
Ok(state) => {
|
||||||
this.set_state(state.clone());
|
this.set_state(state.clone());
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue