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);
|
||||
|
||||
Ok(())
|
||||
|
||||
+1
-1
@@ -124,7 +124,7 @@ pub async fn wait_for_daemon() -> Result<(), Box<dyn Error>> {
|
||||
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 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>> {
|
||||
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(),
|
||||
|
||||
Reference in New Issue
Block a user