mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
introduce a pipeline namespace installer
This commit is contained in:
parent
47aa1ccaa2
commit
34008a317b
7 changed files with 140 additions and 7 deletions
|
@ -22,7 +22,10 @@ use media::WindowGLContext;
|
|||
use metrics::PaintTimeMetrics;
|
||||
use msg::constellation_msg::TopLevelBrowsingContextId;
|
||||
use msg::constellation_msg::{BackgroundHangMonitorRegister, HangMonitorAlert, SamplerControlMsg};
|
||||
use msg::constellation_msg::{BrowsingContextId, HistoryStateId, PipelineId, PipelineNamespaceId};
|
||||
use msg::constellation_msg::{BrowsingContextId, HistoryStateId};
|
||||
use msg::constellation_msg::{
|
||||
PipelineId, PipelineNamespace, PipelineNamespaceId, PipelineNamespaceRequest,
|
||||
};
|
||||
use net::image_cache::ImageCacheImpl;
|
||||
use net_traits::image_cache::ImageCache;
|
||||
use net_traits::{IpcSend, ResourceThreads};
|
||||
|
@ -121,6 +124,9 @@ pub struct InitialPipelineState {
|
|||
/// A channel to the associated constellation.
|
||||
pub script_to_constellation_chan: ScriptToConstellationChan,
|
||||
|
||||
/// A sender to request pipeline namespace ids.
|
||||
pub namespace_request_sender: IpcSender<PipelineNamespaceRequest>,
|
||||
|
||||
/// A handle to register components for hang monitoring.
|
||||
/// None when in multiprocess mode.
|
||||
pub background_monitor_register: Option<Box<dyn BackgroundHangMonitorRegister>>,
|
||||
|
@ -164,15 +170,15 @@ pub struct InitialPipelineState {
|
|||
/// Information about the device pixel ratio.
|
||||
pub device_pixel_ratio: Scale<f32, CSSPixel, DevicePixel>,
|
||||
|
||||
/// The ID of the pipeline namespace for this script thread.
|
||||
pub pipeline_namespace_id: PipelineNamespaceId,
|
||||
|
||||
/// The event loop to run in, if applicable.
|
||||
pub event_loop: Option<Rc<EventLoop>>,
|
||||
|
||||
/// Information about the page to load.
|
||||
pub load_data: LoadData,
|
||||
|
||||
/// The ID of the pipeline namespace for this script thread.
|
||||
pub pipeline_namespace_id: PipelineNamespaceId,
|
||||
|
||||
/// Whether the browsing context in which pipeline is embedded is visible
|
||||
/// for the purposes of scheduling and resource management. This field is
|
||||
/// only used to notify script and compositor threads after spawning
|
||||
|
@ -278,6 +284,7 @@ impl Pipeline {
|
|||
parent_pipeline_id: state.parent_pipeline_id,
|
||||
opener: state.opener,
|
||||
script_to_constellation_chan: state.script_to_constellation_chan.clone(),
|
||||
namespace_request_sender: state.namespace_request_sender,
|
||||
background_hang_monitor_to_constellation_chan: state
|
||||
.background_hang_monitor_to_constellation_chan
|
||||
.clone(),
|
||||
|
@ -484,6 +491,7 @@ pub struct UnprivilegedPipelineContent {
|
|||
browsing_context_id: BrowsingContextId,
|
||||
parent_pipeline_id: Option<PipelineId>,
|
||||
opener: Option<BrowsingContextId>,
|
||||
namespace_request_sender: IpcSender<PipelineNamespaceRequest>,
|
||||
script_to_constellation_chan: ScriptToConstellationChan,
|
||||
background_hang_monitor_to_constellation_chan: IpcSender<HangMonitorAlert>,
|
||||
sampling_profiler_port: Option<IpcReceiver<SamplerControlMsg>>,
|
||||
|
@ -522,6 +530,10 @@ impl UnprivilegedPipelineContent {
|
|||
LTF: LayoutThreadFactory<Message = Message>,
|
||||
STF: ScriptThreadFactory<Message = Message>,
|
||||
{
|
||||
// Setup pipeline-namespace-installing for all threads in this process.
|
||||
// Idempotent in single-process mode.
|
||||
PipelineNamespace::set_installer_sender(self.namespace_request_sender);
|
||||
|
||||
let image_cache = Arc::new(ImageCacheImpl::new(self.webrender_api_sender.create_api()));
|
||||
let paint_time_metrics = PaintTimeMetrics::new(
|
||||
self.id,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue