mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Webrender external image handler demux
This commit is contained in:
parent
7d589ed4f5
commit
ba9cf85fb3
11 changed files with 172 additions and 126 deletions
|
@ -50,6 +50,7 @@ pub use servo_url;
|
|||
pub use style;
|
||||
pub use style_traits;
|
||||
pub use webrender_api;
|
||||
pub use webrender_traits;
|
||||
pub use webvr;
|
||||
pub use webvr_traits;
|
||||
|
||||
|
@ -112,6 +113,7 @@ use std::cmp::max;
|
|||
use std::path::PathBuf;
|
||||
use std::rc::Rc;
|
||||
use webrender::{RendererKind, ShaderPrecacheFlags};
|
||||
use webrender_traits::{WebrenderExternalImageHandler, WebrenderImageHandlerType};
|
||||
use webvr::{VRServiceManager, WebVRCompositorHandler, WebVRThread};
|
||||
|
||||
pub use gleam::gl;
|
||||
|
@ -688,9 +690,11 @@ fn create_constellation(
|
|||
GLContextFactory::current_native_handle(&compositor_proxy)
|
||||
};
|
||||
|
||||
let mut webrender_external_image_handler = Box::new(WebrenderExternalImageHandler::new());
|
||||
|
||||
// Initialize WebGL Thread entry point.
|
||||
let webgl_threads = gl_factory.map(|factory| {
|
||||
let (webgl_threads, _image_handler, output_handler) = WebGLThreads::new(
|
||||
let (webgl_threads, image_handler, output_handler) = WebGLThreads::new(
|
||||
factory,
|
||||
window_gl,
|
||||
webrender_api_sender.clone(),
|
||||
|
@ -698,7 +702,8 @@ fn create_constellation(
|
|||
);
|
||||
|
||||
// Set webrender external image handler for WebGL textures
|
||||
//webrender.set_external_image_handler(image_handler);
|
||||
webrender_external_image_handler
|
||||
.set_handler(image_handler, WebrenderImageHandlerType::WebGL);
|
||||
|
||||
// Set DOM to texture handler, if enabled.
|
||||
if let Some(output_handler) = output_handler {
|
||||
|
@ -712,11 +717,14 @@ fn create_constellation(
|
|||
GlContext::Unknown => None,
|
||||
_ => {
|
||||
let (glplayer_threads, image_handler) = GLPlayerThreads::new();
|
||||
webrender.set_external_image_handler(image_handler);
|
||||
webrender_external_image_handler
|
||||
.set_handler(image_handler, WebrenderImageHandlerType::Media);
|
||||
Some(glplayer_threads)
|
||||
},
|
||||
};
|
||||
|
||||
webrender.set_external_image_handler(webrender_external_image_handler);
|
||||
|
||||
let player_context = WindowGLContext {
|
||||
glplayer_chan: glplayer_threads.as_ref().map(|threads| threads.pipeline()),
|
||||
..player_context
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue