aboutsummaryrefslogtreecommitdiffstats
path: root/components/servo/lib.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2017-08-16 09:45:13 -0500
committerGitHub <noreply@github.com>2017-08-16 09:45:13 -0500
commit4d10d39e8fe841c5fe2ac58da2daaa13c10c140e (patch)
treef77d68b734a6327898cc8c01505b0723bf45ed4a /components/servo/lib.rs
parentee94e2b7c0bd327abe8f9545b2a1f792f67a2bdd (diff)
parentcfe22e3979b7270833a4b450b25fb2157deb1da2 (diff)
downloadservo-4d10d39e8fe841c5fe2ac58da2daaa13c10c140e.tar.gz
servo-4d10d39e8fe841c5fe2ac58da2daaa13c10c140e.zip
Auto merge of #18114 - emilio:revert-webgl-refactor, r=nox
Revert "Auto merge of #17891 - MortimerGoro:webgl_move, r=glennw,emilio" This reverts commit 90f55ea4580e2a15f7d70d0491444f18b972d450, reversing changes made to 2e60b27a2186a8cba4b952960155dfcf3f47d7db. Doing that per Josh's request, since it's causing very frequent intermittent OOMs on the android builders. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18114) <!-- Reviewable:end -->
Diffstat (limited to 'components/servo/lib.rs')
-rw-r--r--components/servo/lib.rs45
1 files changed, 11 insertions, 34 deletions
diff --git a/components/servo/lib.rs b/components/servo/lib.rs
index 93e6d4cf454..07212a2b2d1 100644
--- a/components/servo/lib.rs
+++ b/components/servo/lib.rs
@@ -68,8 +68,6 @@ fn webdriver(_port: u16, _constellation: Sender<ConstellationMsg>) { }
use bluetooth::BluetoothThreadFactory;
use bluetooth_traits::BluetoothRequest;
-use canvas::gl_context::GLContextFactory;
-use canvas::webgl_thread::WebGLThreads;
use compositing::IOCompositor;
use compositing::compositor_thread::{self, CompositorProxy, CompositorReceiver, InitialCompositorState};
use compositing::windowing::WindowEvent;
@@ -151,7 +149,7 @@ impl<Window> Servo<Window> where Window: WindowMethods + 'static {
let mut resource_path = resources_dir_path().unwrap();
resource_path.push("shaders");
- let (mut webrender, webrender_api_sender) = {
+ let (webrender, webrender_api_sender) = {
// TODO(gw): Duplicates device_pixels_per_screen_px from compositor. Tidy up!
let scale_factor = window.hidpi_factor().get();
let device_pixel_ratio = match opts.device_pixels_per_px {
@@ -213,7 +211,7 @@ impl<Window> Servo<Window> where Window: WindowMethods + 'static {
debugger_chan,
devtools_chan,
supports_clipboard,
- &mut webrender,
+ &webrender,
webrender_document,
webrender_api_sender);
@@ -290,7 +288,7 @@ fn create_constellation(user_agent: Cow<'static, str>,
debugger_chan: Option<debugger::Sender>,
devtools_chan: Option<Sender<devtools_traits::DevtoolsControlMsg>>,
supports_clipboard: bool,
- webrender: &mut webrender::Renderer,
+ webrender: &webrender::Renderer,
webrender_document: webrender_api::DocumentId,
webrender_api_sender: webrender_api::RenderApiSender)
-> (Sender<ConstellationMsg>, SWManagerSenders) {
@@ -306,30 +304,6 @@ fn create_constellation(user_agent: Cow<'static, str>,
let resource_sender = public_resource_threads.sender();
- let (webvr_chan, webvr_constellation_sender, webvr_compositor) = if PREFS.is_webvr_enabled() {
- // WebVR initialization
- let (mut handler, sender) = WebVRCompositorHandler::new();
- let (webvr_thread, constellation_sender) = WebVRThread::spawn(sender);
- handler.set_webvr_thread_sender(webvr_thread.clone());
- (Some(webvr_thread), Some(constellation_sender), Some(handler))
- } else {
- (None, None, None)
- };
-
- // GLContext factory used to create WebGL Contexts
- let gl_factory = if opts::get().should_use_osmesa() {
- GLContextFactory::current_osmesa_handle().unwrap()
- } else {
- GLContextFactory::current_native_handle(&compositor_proxy).unwrap()
- };
-
- // Initialize WebGL Thread entry point.
- let (webgl_threads, image_handler) = WebGLThreads::new(gl_factory,
- webrender_api_sender.clone(),
- webvr_compositor.map(|c| c as Box<_>));
- // Set webrender external image handler for WebGL textures
- webrender.set_external_image_handler(image_handler);
-
let initial_state = InitialConstellationState {
compositor_proxy,
debugger_chan,
@@ -343,17 +317,20 @@ fn create_constellation(user_agent: Cow<'static, str>,
supports_clipboard,
webrender_document,
webrender_api_sender,
- webgl_threads,
- webvr_chan,
};
let (constellation_chan, from_swmanager_sender) =
Constellation::<script_layout_interface::message::Msg,
layout_thread::LayoutThread,
script::script_thread::ScriptThread>::start(initial_state);
- if let Some(webvr_constellation_sender) = webvr_constellation_sender {
- // Set constellation channel used by WebVR thread to broadcast events
- webvr_constellation_sender.send(constellation_chan.clone()).unwrap();
+ if PREFS.is_webvr_enabled() {
+ // WebVR initialization
+ let (mut handler, sender) = WebVRCompositorHandler::new();
+ let webvr_thread = WebVRThread::spawn(constellation_chan.clone(), sender);
+ handler.set_webvr_thread_sender(webvr_thread.clone());
+
+ webrender.set_vr_compositor_handler(handler);
+ constellation_chan.send(ConstellationMsg::SetWebVRThread(webvr_thread)).unwrap();
}
// channels to communicate with Service Worker Manager