mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-04-28 06:21:23 +00:00
fix: highly improved GUI performance
This commit is contained in:
+3
-1
@@ -115,7 +115,9 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let response = make_request(request).await?;
|
let response = make_request(request)
|
||||||
|
.await
|
||||||
|
.map_err(|e| e as Box<dyn Error>)?;
|
||||||
println!("{} : {}", response.status, response.message);
|
println!("{} : {}", response.status, response.message);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
+1
-1
@@ -124,7 +124,7 @@ pub async fn wait_for_daemon() -> Result<(), Box<dyn Error>> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn make_request(request: Request) -> Result<Response, Box<dyn Error>> {
|
pub async fn make_request(request: Request) -> Result<Response, Box<dyn Error + Send + Sync>> {
|
||||||
let socket_path = get_runtime_dir().join("daemon.sock");
|
let socket_path = get_runtime_dir().join("daemon.sock");
|
||||||
let mut stream = UnixStream::connect(socket_path).await?;
|
let mut stream = UnixStream::connect(socket_path).await?;
|
||||||
|
|
||||||
|
|||||||
+35
-11
@@ -25,7 +25,9 @@ pub fn get_gui_config() -> GuiConfig {
|
|||||||
|
|
||||||
pub fn make_request_sync(request: Request) -> Result<Response, Box<dyn Error>> {
|
pub fn make_request_sync(request: Request) -> Result<Response, Box<dyn Error>> {
|
||||||
tokio::task::block_in_place(|| {
|
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>>) {
|
pub fn start_app_state_thread(audio_player_state_shared: Arc<Mutex<AudioPlayerState>>) {
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let sleep_duration = Duration::from_millis(100);
|
let sleep_duration = Duration::from_secs_f32(1.0 / 60.0);
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
wait_for_daemon().await.ok();
|
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 all_inputs_req = Request::get_inputs();
|
||||||
let looped_req = Request::get_loop();
|
let looped_req = Request::get_loop();
|
||||||
|
|
||||||
let state_res = make_request(state_req).await.unwrap_or_default();
|
let (
|
||||||
let file_path_res = make_request(file_path_req).await.unwrap_or_default();
|
state_res,
|
||||||
let is_paused_res = make_request(is_paused_req).await.unwrap_or_default();
|
file_path_res,
|
||||||
let volume_res = make_request(volume_req).await.unwrap_or_default();
|
is_paused_res,
|
||||||
let position_res = make_request(position_req).await.unwrap_or_default();
|
volume_res,
|
||||||
let duration_res = make_request(duration_req).await.unwrap_or_default();
|
position_res,
|
||||||
let current_input_res = make_request(current_input_req).await.unwrap_or_default();
|
duration_res,
|
||||||
let all_inputs_res = make_request(all_inputs_req).await.unwrap_or_default();
|
current_input_res,
|
||||||
let looped_res = make_request(looped_req).await.unwrap_or_default();
|
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 {
|
let state = match state_res.status {
|
||||||
true => serde_json::from_str::<PlayerState>(&state_res.message).unwrap(),
|
true => serde_json::from_str::<PlayerState>(&state_res.message).unwrap(),
|
||||||
|
|||||||
Reference in New Issue
Block a user