fix: highly improved GUI performance

This commit is contained in:
2026-01-02 03:59:05 +03:00
parent c5086189d6
commit a7af1caace
3 changed files with 39 additions and 13 deletions
+35 -11
View File
@@ -25,7 +25,9 @@ pub fn get_gui_config() -> GuiConfig {
pub fn make_request_sync(request: Request) -> Result<Response, Box<dyn Error>> {
tokio::task::block_in_place(|| {
tokio::runtime::Handle::current().block_on(make_request(request))
tokio::runtime::Handle::current()
.block_on(make_request(request))
.map_err(|e| e as Box<dyn Error>)
})
}
@@ -42,7 +44,7 @@ pub fn format_time_pair(position: f32, duration: f32) -> String {
pub fn start_app_state_thread(audio_player_state_shared: Arc<Mutex<AudioPlayerState>>) {
tokio::spawn(async move {
let sleep_duration = Duration::from_millis(100);
let sleep_duration = Duration::from_secs_f32(1.0 / 60.0);
loop {
wait_for_daemon().await.ok();
@@ -57,15 +59,37 @@ pub fn start_app_state_thread(audio_player_state_shared: Arc<Mutex<AudioPlayerSt
let all_inputs_req = Request::get_inputs();
let looped_req = Request::get_loop();
let state_res = make_request(state_req).await.unwrap_or_default();
let file_path_res = make_request(file_path_req).await.unwrap_or_default();
let is_paused_res = make_request(is_paused_req).await.unwrap_or_default();
let volume_res = make_request(volume_req).await.unwrap_or_default();
let position_res = make_request(position_req).await.unwrap_or_default();
let duration_res = make_request(duration_req).await.unwrap_or_default();
let current_input_res = make_request(current_input_req).await.unwrap_or_default();
let all_inputs_res = make_request(all_inputs_req).await.unwrap_or_default();
let looped_res = make_request(looped_req).await.unwrap_or_default();
let (
state_res,
file_path_res,
is_paused_res,
volume_res,
position_res,
duration_res,
current_input_res,
all_inputs_res,
looped_res,
) = tokio::join!(
make_request(state_req),
make_request(file_path_req),
make_request(is_paused_req),
make_request(volume_req),
make_request(position_req),
make_request(duration_req),
make_request(current_input_req),
make_request(all_inputs_req),
make_request(looped_req),
);
let state_res = state_res.unwrap_or_default();
let file_path_res = file_path_res.unwrap_or_default();
let is_paused_res = is_paused_res.unwrap_or_default();
let volume_res = volume_res.unwrap_or_default();
let position_res = position_res.unwrap_or_default();
let duration_res = duration_res.unwrap_or_default();
let current_input_res = current_input_res.unwrap_or_default();
let all_inputs_res = all_inputs_res.unwrap_or_default();
let looped_res = looped_res.unwrap_or_default();
let state = match state_res.status {
true => serde_json::from_str::<PlayerState>(&state_res.message).unwrap(),