From 507eeff45604e4f0f029eabf39bb324c844b4b10 Mon Sep 17 00:00:00 2001 From: Bear-03 <64696287+Bear-03@users.noreply.github.com> Date: Tue, 26 Jul 2022 17:29:40 +0200 Subject: [PATCH] Fix: Call utterance_end callback on WinRT --- src/backends/winrt.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/backends/winrt.rs b/src/backends/winrt.rs index d6377db..4b05f4c 100644 --- a/src/backends/winrt.rs +++ b/src/backends/winrt.rs @@ -114,10 +114,23 @@ impl WinRt { let utterances_clone = tts.utterances.clone(); tts.player.MediaEnded(&TypedEventHandler::new( move |player: &Option, _args| { - utterances_clone.lock().unwrap().pop_front(); // Utterance that just ended + let mut utterances = utterances_clone.lock().unwrap(); - if let Some(utterance) = utterances_clone.lock().unwrap().front() { - utterance.speak( + let ended_utterance = utterances.pop_front().unwrap(); + + if let Some(callback) = CALLBACKS + .lock() + .unwrap() + .get_mut(&bid) + .unwrap() + .utterance_end + .as_mut() + { + callback(ended_utterance.id); + } + + if let Some(new_utterance) = utterances.front() { + new_utterance.speak( &synth_clone, player.as_ref().unwrap(), CALLBACKS.lock().unwrap().get_mut(&bid).unwrap(),