aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlmediaelement.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-02-27 12:13:25 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-03-25 09:29:30 +0100
commit36825b82f3e619df2205150ec6beed5703001e36 (patch)
treeea37bb99d2e1aacd951569ce49729eb4a2b28c5e /components/script/dom/htmlmediaelement.rs
parent7a67443fcb4eea1919ed77c302e25c3052c23721 (diff)
downloadservo-36825b82f3e619df2205150ec6beed5703001e36.tar.gz
servo-36825b82f3e619df2205150ec6beed5703001e36.zip
Shutdown player when HTMLMediaElement is dropped
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r--components/script/dom/htmlmediaelement.rs25
1 files changed, 17 insertions, 8 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 079bbd9d4bd..fcf2b4dda4c 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -1147,15 +1147,16 @@ impl HTMLMediaElement {
action_receiver.to_opaque(),
Box::new(move |message| {
let event: PlayerEvent = message.to().unwrap();
+ trace!("Player event {:?}", event);
let this = trusted_node.clone();
- task_source
- .queue_with_canceller(
- task!(handle_player_event: move || {
- this.root().handle_player_event(&event);
- }),
- &canceller,
- )
- .unwrap();
+ if let Err(err) = task_source.queue_with_canceller(
+ task!(handle_player_event: move || {
+ this.root().handle_player_event(&event);
+ }),
+ &canceller,
+ ) {
+ warn!("Could not queue player event handler task {:?}", err);
+ }
}),
);
@@ -1489,6 +1490,14 @@ impl HTMLMediaElement {
}
}
+impl Drop for HTMLMediaElement {
+ fn drop(&mut self) {
+ if let Err(err) = self.player.shutdown() {
+ warn!("Error shutting down player {:?}", err);
+ }
+ }
+}
+
impl HTMLMediaElementMethods for HTMLMediaElement {
// https://html.spec.whatwg.org/multipage/#dom-media-networkstate
fn NetworkState(&self) -> u16 {