Update Player instantiator API

Now servo/media player requires a new parameter for its creator, which
is a trait object that provides the GL parameters needed for setup the
generation of frames as GL textures.

This patch provides a dummy GL context trait object where the code
path will go to the default of raw frames.

Webaudio test expectation also were changed, adding two new failing
tests.
This commit is contained in:
Víctor Manuel Jáquez Leal 2019-04-30 17:47:20 +02:00
parent 834d3193a2
commit f9bee36b71
5 changed files with 42 additions and 11 deletions

View file

@ -70,6 +70,7 @@ use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseLis
use net_traits::{NetworkError, ResourceFetchTiming, ResourceTimingType};
use script_layout_interface::HTMLMediaData;
use servo_config::pref;
use servo_media::player::context::{GlContext, NativeDisplay, PlayerGLContext};
use servo_media::player::frame::{Frame, FrameRenderer};
use servo_media::player::{PlaybackState, Player, PlayerError, PlayerEvent, StreamType};
use servo_media::ServoMedia;
@ -160,6 +161,16 @@ impl FrameRenderer for MediaFrameRenderer {
}
}
struct PlayerContextDummy();
impl PlayerGLContext for PlayerContextDummy {
fn get_gl_context(&self) -> GlContext {
return GlContext::Unknown;
}
fn get_native_display(&self) -> NativeDisplay {
return NativeDisplay::Unknown;
}
}
#[must_root]
#[derive(JSTraceable, MallocSizeOf)]
enum SrcObject {
@ -1201,7 +1212,9 @@ impl HTMLMediaElement {
_ => StreamType::Seekable,
};
let player = ServoMedia::get().unwrap().create_player(stream_type);
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);