From 2e89ee7211a16f32542bc2862780082a8ed3cb8b Mon Sep 17 00:00:00 2001 From: Ward from fusion-voyager-3 Date: Sat, 16 Mar 2024 02:23:17 +0300 Subject: [PATCH] move from gio thread to std thread to fix async terminal logging --- debian/changelog | 2 +- .../recommended_addons_page/mod.rs | 28 +++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2cfe4a9..59f50e3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -pika-welcome (5.0.0-100pika7) pikauwu; urgency=low +pika-welcome (5.0.0-100pika8) pikauwu; urgency=low * Temp internet fix diff --git a/src/welcome_content_page/recommended_addons_page/mod.rs b/src/welcome_content_page/recommended_addons_page/mod.rs index b9c6711..e918eae 100644 --- a/src/welcome_content_page/recommended_addons_page/mod.rs +++ b/src/welcome_content_page/recommended_addons_page/mod.rs @@ -156,7 +156,6 @@ pub fn recommended_addons_page( gio::spawn_blocking( clone!(@strong checkpkg_status_loop_sender, @strong entry_checkpkg => move || loop { - thread::sleep(time::Duration::from_secs(6)); let checkpkg_command = Command::new("dpkg") .arg("-s") .arg(&entry_checkpkg) @@ -167,6 +166,7 @@ pub fn recommended_addons_page( } else { checkpkg_status_loop_sender.send_blocking(false).expect("The channel needs to be open."); } + thread::sleep(time::Duration::from_secs(6)); }), ); @@ -275,33 +275,39 @@ pub fn recommended_addons_page( recommended_addons_command_dialog.set_body(""); recommended_addons_command_dialog.present(); if &entry_row_button.widget_name() == "true" { - gio::spawn_blocking(clone!(@strong log_loop_sender, @strong log_status_loop_sender, @strong entry_packages => move || { - let command = run_addon_command(log_loop_sender, "remove", &entry_packages); + let log_status_loop_sender_clone = log_status_loop_sender.clone(); + let log_loop_sender_clone= log_loop_sender.clone(); + let entry_packages_clone= entry_packages.clone(); + std::thread::spawn(move || { + let command = run_addon_command(log_loop_sender_clone, "remove", &entry_packages_clone); match command { Ok(_) => { println!("Status: Addon Command Successful"); - log_status_loop_sender.send_blocking(true).expect("The channel needs to be open."); + log_status_loop_sender_clone.send_blocking(true).expect("The channel needs to be open."); } Err(_) => { println!("Status: Addon Command Failed"); - log_status_loop_sender.send_blocking(false).expect("The channel needs to be open."); + log_status_loop_sender_clone.send_blocking(false).expect("The channel needs to be open."); } } - })); + }); } else { - gio::spawn_blocking(clone!(@strong log_loop_sender, @strong log_status_loop_sender, @strong entry_packages => move || { - let command = run_addon_command(log_loop_sender, "install", &entry_packages); + let log_status_loop_sender_clone = log_status_loop_sender.clone(); + let log_loop_sender_clone= log_loop_sender.clone(); + let entry_packages_clone= entry_packages.clone(); + std::thread::spawn(move || { + let command = run_addon_command(log_loop_sender_clone, "install", &entry_packages_clone); match command { Ok(_) => { println!("Status: Addon Command Successful"); - log_status_loop_sender.send_blocking(true).expect("The channel needs to be open."); + log_status_loop_sender_clone.send_blocking(true).expect("The channel needs to be open."); } Err(_) => { println!("Status: Addon Command Failed"); - log_status_loop_sender.send_blocking(false).expect("The channel needs to be open."); + log_status_loop_sender_clone.send_blocking(false).expect("The channel needs to be open."); } } - })); + }); } }));