1#![deny(unsafe_code)]
6
7use std::cell::Cell;
8use std::path::PathBuf;
9use std::rc::Rc;
10
11use base::generic_channel::RoutedReceiver;
12use compositing_traits::rendering_context::RenderingContext;
13use compositing_traits::{CompositorMsg, CompositorProxy};
14use constellation_traits::EmbedderToConstellationMessage;
15use crossbeam_channel::Sender;
16use embedder_traits::{EventLoopWaker, RefreshDriver, ShutdownState};
17use profile_traits::{mem, time};
18#[cfg(feature = "webxr")]
19use webxr::WebXrRegistry;
20
21pub use crate::compositor::{IOCompositor, WebRenderDebugOption};
22
23#[macro_use]
24mod tracing;
25
26mod compositor;
27mod largest_contentful_paint_calculator;
28mod painter;
29mod pinch_zoom;
30mod pipeline_details;
31mod refresh_driver;
32mod render_notifier;
33mod screenshot;
34mod touch;
35mod webview_manager;
36mod webview_renderer;
37
38pub struct InitialCompositorState {
40 pub compositor_proxy: CompositorProxy,
42 pub receiver: RoutedReceiver<CompositorMsg>,
44 pub embedder_to_constellation_sender: Sender<EmbedderToConstellationMessage>,
46 pub time_profiler_chan: time::ProfilerChan,
48 pub mem_profiler_chan: mem::ProfilerChan,
50 pub shutdown_state: Rc<Cell<ShutdownState>>,
53 pub rendering_context: Rc<dyn RenderingContext>,
55 pub event_loop_waker: Box<dyn EventLoopWaker>,
58 pub refresh_driver: Option<Rc<dyn RefreshDriver>>,
60 pub shaders_path: Option<PathBuf>,
62 #[cfg(feature = "webxr")]
64 pub webxr_registry: Box<dyn WebXrRegistry>,
65}