mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
net: Raed RippyPNG resource once at startup. (#34954)
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
716fa9387d
commit
2115b6a6db
4 changed files with 18 additions and 4 deletions
|
@ -115,6 +115,7 @@ use devtools_traits::{
|
||||||
ChromeToDevtoolsControlMsg, DevtoolsControlMsg, DevtoolsPageInfo, NavigationState,
|
ChromeToDevtoolsControlMsg, DevtoolsControlMsg, DevtoolsPageInfo, NavigationState,
|
||||||
ScriptToDevtoolsControlMsg,
|
ScriptToDevtoolsControlMsg,
|
||||||
};
|
};
|
||||||
|
use embedder_traits::resources::{self, Resource};
|
||||||
use embedder_traits::{
|
use embedder_traits::{
|
||||||
Cursor, EmbedderMsg, EmbedderProxy, MediaSessionEvent, MediaSessionPlaybackState,
|
Cursor, EmbedderMsg, EmbedderProxy, MediaSessionEvent, MediaSessionPlaybackState,
|
||||||
};
|
};
|
||||||
|
@ -479,6 +480,11 @@ pub struct Constellation<STF, SWF> {
|
||||||
|
|
||||||
/// User agent string to report in network requests.
|
/// User agent string to report in network requests.
|
||||||
user_agent: Cow<'static, str>,
|
user_agent: Cow<'static, str>,
|
||||||
|
|
||||||
|
/// The image bytes associated with the RippyPNG embedder resource.
|
||||||
|
/// Read during startup and provided to image caches that are created
|
||||||
|
/// on an as-needed basis, rather than retrieving it every time.
|
||||||
|
rippy_data: Vec<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// State needed to construct a constellation.
|
/// State needed to construct a constellation.
|
||||||
|
@ -693,6 +699,8 @@ where
|
||||||
wgpu_image_map: state.wgpu_image_map,
|
wgpu_image_map: state.wgpu_image_map,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let rippy_data = resources::read_bytes(Resource::RippyPNG);
|
||||||
|
|
||||||
let mut constellation: Constellation<STF, SWF> = Constellation {
|
let mut constellation: Constellation<STF, SWF> = Constellation {
|
||||||
namespace_receiver,
|
namespace_receiver,
|
||||||
namespace_ipc_sender,
|
namespace_ipc_sender,
|
||||||
|
@ -759,6 +767,7 @@ where
|
||||||
player_context: state.player_context,
|
player_context: state.player_context,
|
||||||
active_media_session: None,
|
active_media_session: None,
|
||||||
user_agent: state.user_agent,
|
user_agent: state.user_agent,
|
||||||
|
rippy_data,
|
||||||
};
|
};
|
||||||
|
|
||||||
constellation.run();
|
constellation.run();
|
||||||
|
@ -1007,6 +1016,7 @@ where
|
||||||
webxr_registry: self.webxr_registry.clone(),
|
webxr_registry: self.webxr_registry.clone(),
|
||||||
player_context: self.player_context.clone(),
|
player_context: self.player_context.clone(),
|
||||||
user_agent: self.user_agent.clone(),
|
user_agent: self.user_agent.clone(),
|
||||||
|
rippy_data: self.rippy_data.clone(),
|
||||||
});
|
});
|
||||||
|
|
||||||
let pipeline = match result {
|
let pipeline = match result {
|
||||||
|
|
|
@ -195,6 +195,9 @@ pub struct InitialPipelineState {
|
||||||
|
|
||||||
/// User agent string to report in network requests.
|
/// User agent string to report in network requests.
|
||||||
pub user_agent: Cow<'static, str>,
|
pub user_agent: Cow<'static, str>,
|
||||||
|
|
||||||
|
/// The image bytes associated with the RippyPNG embedder resource.
|
||||||
|
pub rippy_data: Vec<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct NewPipeline {
|
pub struct NewPipeline {
|
||||||
|
@ -291,6 +294,7 @@ impl Pipeline {
|
||||||
webxr_registry: state.webxr_registry,
|
webxr_registry: state.webxr_registry,
|
||||||
player_context: state.player_context,
|
player_context: state.player_context,
|
||||||
user_agent: state.user_agent,
|
user_agent: state.user_agent,
|
||||||
|
rippy_data: state.rippy_data,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Spawn the child process.
|
// Spawn the child process.
|
||||||
|
@ -494,6 +498,7 @@ pub struct UnprivilegedPipelineContent {
|
||||||
webxr_registry: Option<webxr_api::Registry>,
|
webxr_registry: Option<webxr_api::Registry>,
|
||||||
player_context: WindowGLContext,
|
player_context: WindowGLContext,
|
||||||
user_agent: Cow<'static, str>,
|
user_agent: Cow<'static, str>,
|
||||||
|
rippy_data: Vec<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UnprivilegedPipelineContent {
|
impl UnprivilegedPipelineContent {
|
||||||
|
@ -509,6 +514,7 @@ impl UnprivilegedPipelineContent {
|
||||||
|
|
||||||
let image_cache = Arc::new(ImageCacheImpl::new(
|
let image_cache = Arc::new(ImageCacheImpl::new(
|
||||||
self.cross_process_compositor_api.clone(),
|
self.cross_process_compositor_api.clone(),
|
||||||
|
self.rippy_data,
|
||||||
));
|
));
|
||||||
let (content_process_shutdown_chan, content_process_shutdown_port) = unbounded();
|
let (content_process_shutdown_chan, content_process_shutdown_port) = unbounded();
|
||||||
STF::create(
|
STF::create(
|
||||||
|
|
|
@ -7,7 +7,6 @@ use std::collections::HashMap;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use std::{mem, thread};
|
use std::{mem, thread};
|
||||||
|
|
||||||
use embedder_traits::resources::{self, Resource};
|
|
||||||
use imsz::imsz_from_reader;
|
use imsz::imsz_from_reader;
|
||||||
use ipc_channel::ipc::{IpcSender, IpcSharedMemory};
|
use ipc_channel::ipc::{IpcSender, IpcSharedMemory};
|
||||||
use log::{debug, warn};
|
use log::{debug, warn};
|
||||||
|
@ -415,10 +414,9 @@ pub struct ImageCacheImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ImageCache for ImageCacheImpl {
|
impl ImageCache for ImageCacheImpl {
|
||||||
fn new(compositor_api: CrossProcessCompositorApi) -> ImageCacheImpl {
|
fn new(compositor_api: CrossProcessCompositorApi, rippy_data: Vec<u8>) -> ImageCacheImpl {
|
||||||
debug!("New image cache");
|
debug!("New image cache");
|
||||||
|
|
||||||
let rippy_data = resources::read_bytes(Resource::RippyPNG);
|
|
||||||
// Uses an estimate of the system cpus to decode images
|
// Uses an estimate of the system cpus to decode images
|
||||||
// See https://doc.rust-lang.org/stable/std/thread/fn.available_parallelism.html
|
// See https://doc.rust-lang.org/stable/std/thread/fn.available_parallelism.html
|
||||||
// If no information can be obtained about the system, uses 4 threads as a default
|
// If no information can be obtained about the system, uses 4 threads as a default
|
||||||
|
|
|
@ -99,7 +99,7 @@ pub enum ImageCacheResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait ImageCache: Sync + Send {
|
pub trait ImageCache: Sync + Send {
|
||||||
fn new(compositor_api: CrossProcessCompositorApi) -> Self
|
fn new(compositor_api: CrossProcessCompositorApi, rippy_data: Vec<u8>) -> Self
|
||||||
where
|
where
|
||||||
Self: Sized;
|
Self: Sized;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue