Move media backend initialization to process startup.

This commit is contained in:
Josh Matthews 2019-03-29 15:31:01 -04:00
parent 17204544d9
commit eebd831ea5
8 changed files with 12 additions and 11 deletions

3
Cargo.lock generated
View file

@ -2398,6 +2398,8 @@ dependencies = [
"script 0.0.1", "script 0.0.1",
"script_layout_interface 0.0.1", "script_layout_interface 0.0.1",
"script_traits 0.0.1", "script_traits 0.0.1",
"servo-media 0.1.0 (git+https://github.com/servo/media)",
"servo-media-auto 0.1.0 (git+https://github.com/servo/media)",
"servo_config 0.0.1", "servo_config 0.0.1",
"servo_geometry 0.0.1", "servo_geometry 0.0.1",
"servo_url 0.0.1", "servo_url 0.0.1",
@ -3531,7 +3533,6 @@ dependencies = [
"serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-media 0.1.0 (git+https://github.com/servo/media)", "servo-media 0.1.0 (git+https://github.com/servo/media)",
"servo-media-auto 0.1.0 (git+https://github.com/servo/media)",
"servo_allocator 0.0.1", "servo_allocator 0.0.1",
"servo_arc 0.1.1", "servo_arc 0.1.1",
"servo_atoms 0.0.1", "servo_atoms 0.0.1",

View file

@ -97,7 +97,6 @@ servo_atoms = {path = "../atoms"}
servo_config = {path = "../config"} servo_config = {path = "../config"}
servo_geometry = {path = "../geometry" } servo_geometry = {path = "../geometry" }
servo-media = {git = "https://github.com/servo/media"} servo-media = {git = "https://github.com/servo/media"}
servo-media-auto = {git = "https://github.com/servo/media"}
servo_rand = {path = "../rand"} servo_rand = {path = "../rand"}
servo_url = {path = "../url"} servo_url = {path = "../url"}
smallvec = { version = "0.6", features = ["std", "union"] } smallvec = { version = "0.6", features = ["std", "union"] }

View file

@ -51,7 +51,6 @@ use servo_media::audio::context::{OfflineAudioContextOptions, RealTimeAudioConte
use servo_media::audio::decoder::AudioDecoderCallbacks; use servo_media::audio::decoder::AudioDecoderCallbacks;
use servo_media::audio::graph::NodeId; use servo_media::audio::graph::NodeId;
use servo_media::ServoMedia; use servo_media::ServoMedia;
use servo_media_auto::Backend;
use std::cell::Cell; use std::cell::Cell;
use std::collections::{HashMap, VecDeque}; use std::collections::{HashMap, VecDeque};
use std::mem; use std::mem;
@ -109,8 +108,6 @@ impl BaseAudioContext {
}, },
}; };
ServoMedia::init::<Backend>();
let context = BaseAudioContext { let context = BaseAudioContext {
eventtarget: EventTarget::new_inherited(), eventtarget: EventTarget::new_inherited(),
audio_context_impl: ServoMedia::get() audio_context_impl: ServoMedia::get()

View file

@ -72,7 +72,6 @@ use servo_config::pref;
use servo_media::player::frame::{Frame, FrameRenderer}; use servo_media::player::frame::{Frame, FrameRenderer};
use servo_media::player::{PlaybackState, Player, PlayerError, PlayerEvent, StreamType}; use servo_media::player::{PlaybackState, Player, PlayerError, PlayerEvent, StreamType};
use servo_media::ServoMedia; use servo_media::ServoMedia;
use servo_media_auto::Backend;
use servo_url::ServoUrl; use servo_url::ServoUrl;
use std::cell::Cell; use std::cell::Cell;
use std::collections::VecDeque; use std::collections::VecDeque;
@ -276,7 +275,6 @@ pub enum ReadyState {
impl HTMLMediaElement { impl HTMLMediaElement {
pub fn new_inherited(tag_name: LocalName, prefix: Option<Prefix>, document: &Document) -> Self { pub fn new_inherited(tag_name: LocalName, prefix: Option<Prefix>, document: &Document) -> Self {
ServoMedia::init::<Backend>();
Self { Self {
htmlelement: HTMLElement::new_inherited(tag_name, prefix, document), htmlelement: HTMLElement::new_inherited(tag_name, prefix, document),
network_state: Cell::new(NetworkState::Empty), network_state: Cell::new(NetworkState::Empty),

View file

@ -17,7 +17,6 @@ use crate::dom::promise::Promise;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use servo_media::streams::capture::{Constrain, ConstrainRange, MediaTrackConstraintSet}; use servo_media::streams::capture::{Constrain, ConstrainRange, MediaTrackConstraintSet};
use servo_media::ServoMedia; use servo_media::ServoMedia;
use servo_media_auto::Backend;
use std::rc::Rc; use std::rc::Rc;
#[dom_struct] #[dom_struct]
@ -27,7 +26,6 @@ pub struct MediaDevices {
impl MediaDevices { impl MediaDevices {
pub fn new_inherited() -> MediaDevices { pub fn new_inherited() -> MediaDevices {
ServoMedia::init::<Backend>();
MediaDevices { MediaDevices {
eventtarget: EventTarget::new_inherited(), eventtarget: EventTarget::new_inherited(),
} }

View file

@ -41,7 +41,6 @@ use servo_media::webrtc::{
SignalingState, WebRtcController, WebRtcSignaller, SignalingState, WebRtcController, WebRtcSignaller,
}; };
use servo_media::ServoMedia; use servo_media::ServoMedia;
use servo_media_auto::Backend;
use std::cell::Cell; use std::cell::Cell;
use std::rc::Rc; use std::rc::Rc;
@ -159,7 +158,6 @@ impl RTCPeerConnection {
RTCPeerConnectionBinding::Wrap, RTCPeerConnectionBinding::Wrap,
); );
let signaller = this.make_signaller(); let signaller = this.make_signaller();
ServoMedia::init::<Backend>();
*this.controller.borrow_mut() = Some(ServoMedia::get().unwrap().create_webrtc(signaller)); *this.controller.borrow_mut() = Some(ServoMedia::get().unwrap().create_webrtc(signaller));
if let Some(ref servers) = config.iceServers { if let Some(ref servers) = config.iceServers {
if let Some(ref server) = servers.get(0) { if let Some(ref server) = servers.get(0) {

View file

@ -65,6 +65,8 @@ script_layout_interface = {path = "../script_layout_interface"}
script_traits = {path = "../script_traits"} script_traits = {path = "../script_traits"}
servo_config = {path = "../config"} servo_config = {path = "../config"}
servo_geometry = {path = "../geometry"} servo_geometry = {path = "../geometry"}
servo-media = {git = "https://github.com/servo/media"}
servo-media-auto = {git = "https://github.com/servo/media"}
servo_url = {path = "../url"} servo_url = {path = "../url"}
style = {path = "../style", features = ["servo"]} style = {path = "../style", features = ["servo"]}
style_traits = {path = "../style_traits", features = ["servo"]} style_traits = {path = "../style_traits", features = ["servo"]}

View file

@ -103,6 +103,8 @@ use profile_traits::time;
use script_traits::{ConstellationMsg, SWManagerSenders, ScriptToConstellationChan}; use script_traits::{ConstellationMsg, SWManagerSenders, ScriptToConstellationChan};
use servo_config::opts; use servo_config::opts;
use servo_config::{pref, prefs}; use servo_config::{pref, prefs};
use servo_media::ServoMedia;
use servo_media_auto::Backend;
use std::borrow::Cow; use std::borrow::Cow;
use std::cmp::max; use std::cmp::max;
use std::path::PathBuf; use std::path::PathBuf;
@ -182,6 +184,10 @@ where
// Global configuration options, parsed from the command line. // Global configuration options, parsed from the command line.
let opts = opts::get(); let opts = opts::get();
if !opts.multiprocess {
ServoMedia::init::<Backend>();
}
// Make sure the gl context is made current. // Make sure the gl context is made current.
window.prepare_for_composite(); window.prepare_for_composite();
@ -751,6 +757,8 @@ pub fn run_content_process(token: String) {
script::init(); script::init();
script::init_service_workers(sw_senders); script::init_service_workers(sw_senders);
ServoMedia::init::<Backend>();
unprivileged_content.start_all::<script_layout_interface::message::Msg, unprivileged_content.start_all::<script_layout_interface::message::Msg,
layout_thread::LayoutThread, layout_thread::LayoutThread,
script::script_thread::ScriptThread>( script::script_thread::ScriptThread>(