Revoke on exit

This commit is contained in:
Kovid Goyal 2023-01-29 15:08:43 +05:30
parent 20d3b0798d
commit e8f07e273b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -493,8 +493,8 @@ register_metadata_handler_for_track(MediaPlaybackTimedMetadataTrackList const &t
TimedMetadataTrack track = tracks.GetAt(index); TimedMetadataTrack track = tracks.GetAt(index);
tracks.SetPresentationMode((unsigned int)index, TimedMetadataTrackPresentationMode::ApplicationPresented); tracks.SetPresentationMode((unsigned int)index, TimedMetadataTrackPresentationMode::ApplicationPresented);
speak_revoker.cue_entered.push_back(track.CueEntered(winrt::auto_revoke, [cmd_id, marks](auto track, const auto& args) { speak_revoker.cue_entered.emplace_back(track.CueEntered(winrt::auto_revoke, [cmd_id, marks](auto track, const auto& args) {
if (main_loop_is_running.load()) { if (!main_loop_is_running.load()) return;
auto label = track.Label(); auto label = track.Label();
auto cue = args.Cue().template as<SpeechCue>(); auto cue = args.Cue().template as<SpeechCue>();
output(cmd_id, "cue_entered", {label, cue}); output(cmd_id, "cue_entered", {label, cue});
@ -512,15 +512,14 @@ register_metadata_handler_for_track(MediaPlaybackTimedMetadataTrackList const &t
break; break;
} }
} }
}
})); }));
speak_revoker.cue_exited.push_back(track.CueExited(winrt::auto_revoke, [cmd_id](auto track, const auto& args) { speak_revoker.cue_exited.emplace_back(track.CueExited(winrt::auto_revoke, [cmd_id](auto track, const auto& args) {
if (main_loop_is_running.load()) output( if (main_loop_is_running.load()) output(
cmd_id, "cue_exited", json_val(track.Label(), args.Cue().template as<SpeechCue>())); cmd_id, "cue_exited", json_val(track.Label(), args.Cue().template as<SpeechCue>()));
})); }));
speak_revoker.track_failed.push_back(track.TrackFailed(winrt::auto_revoke, [cmd_id](auto, const auto& args) { speak_revoker.track_failed.emplace_back(track.TrackFailed(winrt::auto_revoke, [cmd_id](auto, const auto& args) {
if (main_loop_is_running.load()) output( if (main_loop_is_running.load()) output(
cmd_id, "track_failed", {}); cmd_id, "track_failed", {});
})); }));
@ -838,6 +837,7 @@ run_main_loop(PyObject*, PyObject*) {
main_loop_is_running.store(false); main_loop_is_running.store(false);
try { try {
speak_revoker = {};
speech_synthesizer = SpeechSynthesizer{nullptr}; speech_synthesizer = SpeechSynthesizer{nullptr};
media_player = MediaPlayer{nullptr}; media_player = MediaPlayer{nullptr};
} catch(...) {} } catch(...) {}