aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src
diff options
context:
space:
mode:
Diffstat (limited to 'mumd/src')
-rw-r--r--mumd/src/audio.rs18
1 files changed, 8 insertions, 10 deletions
diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs
index 0aae1cf..afe644c 100644
--- a/mumd/src/audio.rs
+++ b/mumd/src/audio.rs
@@ -492,17 +492,15 @@ impl<S> StreamingSignal for FromStream<S>
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Frame> {
let s = self.get_mut();
- match s.next.take() {
- Some(v) => {
- match S::poll_next(Pin::new(&mut s.stream), cx) {
- Poll::Ready(val) => {
- s.next = val;
- Poll::Ready(v)
- }
- Poll::Pending => Poll::Pending
- }
+ if s.next.is_none() {
+ return Poll::Ready(<Self::Frame as Frame>::EQUILIBRIUM);
+ }
+ match S::poll_next(Pin::new(&mut s.stream), cx) {
+ Poll::Ready(val) => {
+ let ret = mem::replace(&mut s.next, val);
+ Poll::Ready(ret.unwrap())
}
- None => Poll::Ready(<Self::Frame as Frame>::EQUILIBRIUM)
+ Poll::Pending => Poll::Pending,
}
}