From 7ff47365ed6a26d3ed5b55b8b4db7c7edbbda830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Fri, 5 Jul 2019 11:26:07 +0200 Subject: [PATCH] AudioContext shutdown --- components/script/dom/baseaudiocontext.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/components/script/dom/baseaudiocontext.rs b/components/script/dom/baseaudiocontext.rs index c977e495eb5..80eae097a8f 100644 --- a/components/script/dom/baseaudiocontext.rs +++ b/components/script/dom/baseaudiocontext.rs @@ -81,6 +81,7 @@ pub struct BaseAudioContext { eventtarget: EventTarget, #[ignore_malloc_size_of = "servo_media"] audio_context_impl: Arc>, + browsing_context_id: BrowsingContextId, /// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-destination destination: MutNullableDom, listener: MutNullableDom, @@ -125,6 +126,7 @@ impl BaseAudioContext { audio_context_impl: ServoMedia::get() .unwrap() .create_audio_context(&client_context_id, options.into()), + browsing_context_id, destination: Default::default(), listener: Default::default(), in_flight_resume_promises_queue: Default::default(), @@ -542,6 +544,18 @@ impl BaseAudioContextMethods for BaseAudioContext { } } +impl Drop for BaseAudioContext { + fn drop(&mut self) { + let client_context_id = ClientContextId::build( + self.browsing_context_id.namespace_id.0, + self.browsing_context_id.index.0.get(), + ); + ServoMedia::get() + .unwrap() + .shutdown_audio_context(&client_context_id, self.audio_context_impl.clone()); + } +} + impl From for AudioContextOptions { fn from(options: BaseAudioContextOptions) -> Self { match options {