From 1d4c93b4da7ee61e6936490ad4fa314f487fb167 Mon Sep 17 00:00:00 2001 From: Jan-Henrik Bruhn Date: Tue, 19 Mar 2024 22:11:06 +0100 Subject: [PATCH] Improve performance of blocking --- src/streamer.rs | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/streamer.rs b/src/streamer.rs index 686d9b5..435b346 100644 --- a/src/streamer.rs +++ b/src/streamer.rs @@ -40,23 +40,25 @@ impl StreamerBackend { )) .map(move |_| { let mut buffer = [0_i16; BUFFER_SIZE]; - renderer.on_start_of_batch(); - buffer.fill_with(|| { - let sample = renderer - .next_sample() - .expect("renderer should never return an Error"); - let sample = match sample { - awedio::NextSample::Sample(s) => s, - awedio::NextSample::MetadataChanged => { - unreachable!("we never change metadata mid-batch") - } - awedio::NextSample::Paused => 0, - awedio::NextSample::Finished => 0, - }; - sample + renderer.on_start_of_batch(); + tokio::task::block_in_place(|| { + buffer.fill_with(|| { + let sample = renderer + .next_sample() + .expect("renderer should never return an Error"); + let sample = match sample { + awedio::NextSample::Sample(s) => s, + awedio::NextSample::MetadataChanged => { + unreachable!("we never change metadata mid-batch") + } + awedio::NextSample::Paused => 0, + awedio::NextSample::Finished => 0, + }; + sample + }); + }); + Box::new(buffer) }); - Box::new(buffer) - }); loop { s.broadcast(stream.next().await.expect("Should not end!"))