aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlmediaelement.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-05-27 19:01:31 +0200
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-05-29 16:17:36 +0200
commitdfbf7e37ab3376f87e85fded14761b6de464c54c (patch)
treebfdca28b74140bf8a2d9b0a58ce0463ba16960d2 /components/script/dom/htmlmediaelement.rs
parent2a61a0dbb02fae6354f76b1abe2fe2ac6c3cb85d (diff)
downloadservo-dfbf7e37ab3376f87e85fded14761b6de464c54c.tar.gz
servo-dfbf7e37ab3376f87e85fded14761b6de464c54c.zip
Allow simultaneous playback of audio and video for getUserMedia
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r--components/script/dom/htmlmediaelement.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index c816494fb70..322065ca8fd 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -846,13 +846,14 @@ impl HTMLMediaElement {
self.fetch_request(None);
},
SrcObject::MediaStream(ref stream) => {
- for stream in &*stream.get_tracks() {
+ let tracks = &*stream.get_tracks();
+ for (pos, track) in tracks.iter().enumerate() {
if let Err(_) = self
.player
.borrow()
.as_ref()
.unwrap()
- .set_stream(&stream.id())
+ .set_stream(&track.id(), pos == tracks.len() - 1)
{
self.queue_dedicated_media_source_failure_steps();
}
@@ -1222,13 +1223,13 @@ impl HTMLMediaElement {
_ => StreamType::Seekable,
};
- let player = ServoMedia::get()
- .unwrap()
- .create_player(stream_type, Box::new(PlayerContextDummy()));
-
let (action_sender, action_receiver) = ipc::channel().unwrap();
- player.register_event_handler(action_sender);
- player.register_frame_renderer(self.frame_renderer.clone());
+ let player = ServoMedia::get().unwrap().create_player(
+ stream_type,
+ action_sender,
+ Some(self.frame_renderer.clone()),
+ Box::new(PlayerContextDummy()),
+ );
*self.player.borrow_mut() = Some(player);