mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Use ROUTER::add_typed_route
instead of ROUTER::add_route
everywhere (#33866)
* Use ROUTER::add_typed_route where possible Signed-off-by: Simon Wülker <simon.wuelker@arcor.de> * Update webxr, media and ipc-channel Signed-off-by: Simon Wülker <simon.wuelker@arcor.de> --------- Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
parent
ff374c1428
commit
e33bae6d0a
40 changed files with 177 additions and 195 deletions
36
Cargo.lock
generated
36
Cargo.lock
generated
|
@ -3693,9 +3693,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ipc-channel"
|
name = "ipc-channel"
|
||||||
version = "0.18.3"
|
version = "0.19.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c7f4c80f2df4fc64fb7fc2cff69fc034af26e6e6617ea9f1313131af464b9ca0"
|
checksum = "6fb8251fb7bcd9ccd3725ed8deae9fe7db8e586495c9eb5b0c52e6233e5e75ea"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode",
|
"bincode",
|
||||||
"crossbeam-channel",
|
"crossbeam-channel",
|
||||||
|
@ -4064,7 +4064,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
|
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"windows-targets 0.52.6",
|
"windows-targets 0.48.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -6344,7 +6344,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media"
|
name = "servo-media"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"servo-media-audio",
|
"servo-media-audio",
|
||||||
|
@ -6357,7 +6357,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-audio"
|
name = "servo-media-audio"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byte-slice-cast",
|
"byte-slice-cast",
|
||||||
"euclid",
|
"euclid",
|
||||||
|
@ -6378,7 +6378,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-derive"
|
name = "servo-media-derive"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -6388,7 +6388,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-dummy"
|
name = "servo-media-dummy"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ipc-channel",
|
"ipc-channel",
|
||||||
"servo-media",
|
"servo-media",
|
||||||
|
@ -6402,7 +6402,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer"
|
name = "servo-media-gstreamer"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byte-slice-cast",
|
"byte-slice-cast",
|
||||||
"glib",
|
"glib",
|
||||||
|
@ -6436,7 +6436,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render"
|
name = "servo-media-gstreamer-render"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gstreamer",
|
"gstreamer",
|
||||||
"gstreamer-video",
|
"gstreamer-video",
|
||||||
|
@ -6446,7 +6446,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render-android"
|
name = "servo-media-gstreamer-render-android"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glib",
|
"glib",
|
||||||
"gstreamer",
|
"gstreamer",
|
||||||
|
@ -6460,7 +6460,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render-unix"
|
name = "servo-media-gstreamer-render-unix"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glib",
|
"glib",
|
||||||
"gstreamer",
|
"gstreamer",
|
||||||
|
@ -6475,7 +6475,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-player"
|
name = "servo-media-player"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ipc-channel",
|
"ipc-channel",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -6487,7 +6487,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-streams"
|
name = "servo-media-streams"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"uuid",
|
"uuid",
|
||||||
|
@ -6496,12 +6496,12 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-traits"
|
name = "servo-media-traits"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-webrtc"
|
name = "servo-media-webrtc"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ed1d4c7c11c93e7e66afc0224fc15f70d6b1fe83"
|
source = "git+https://github.com/servo/media#12dfb35619520eb6e78e25e9a975d625f6484a13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"log",
|
"log",
|
||||||
|
@ -8296,7 +8296,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webxr"
|
name = "webxr"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
source = "git+https://github.com/servo/webxr#e3249c3df967f16fab9928d053708bfb43487af3"
|
source = "git+https://github.com/servo/webxr#2094e041f6b59ca8a2aa3ab572e69e3cf7fae6ab"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crossbeam-channel",
|
"crossbeam-channel",
|
||||||
"euclid",
|
"euclid",
|
||||||
|
@ -8313,7 +8313,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webxr-api"
|
name = "webxr-api"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
source = "git+https://github.com/servo/webxr#e3249c3df967f16fab9928d053708bfb43487af3"
|
source = "git+https://github.com/servo/webxr#2094e041f6b59ca8a2aa3ab572e69e3cf7fae6ab"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"euclid",
|
"euclid",
|
||||||
"ipc-channel",
|
"ipc-channel",
|
||||||
|
@ -8440,7 +8440,7 @@ version = "0.1.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -70,7 +70,7 @@ icu_segmenter = "1.5.0"
|
||||||
image = "0.24"
|
image = "0.24"
|
||||||
imsz = "0.2"
|
imsz = "0.2"
|
||||||
indexmap = { version = "2.5.0", features = ["std"] }
|
indexmap = { version = "2.5.0", features = ["std"] }
|
||||||
ipc-channel = "0.18"
|
ipc-channel = "0.19"
|
||||||
itertools = "0.13"
|
itertools = "0.13"
|
||||||
tikv-jemalloc-sys = "0.6.0"
|
tikv-jemalloc-sys = "0.6.0"
|
||||||
tikv-jemallocator = "0.6.0"
|
tikv-jemallocator = "0.6.0"
|
||||||
|
@ -145,6 +145,8 @@ webpki-roots = "0.25"
|
||||||
webrender = { git = "https://github.com/servo/webrender", branch = "0.65", features = ["capture"] }
|
webrender = { git = "https://github.com/servo/webrender", branch = "0.65", features = ["capture"] }
|
||||||
webrender_api = { git = "https://github.com/servo/webrender", branch = "0.65" }
|
webrender_api = { git = "https://github.com/servo/webrender", branch = "0.65" }
|
||||||
webrender_traits = { path = "components/shared/webrender" }
|
webrender_traits = { path = "components/shared/webrender" }
|
||||||
|
webxr = { git = "https://github.com/servo/webxr" }
|
||||||
|
webxr-api = { git = "https://github.com/servo/webxr" }
|
||||||
wgpu-core = { git = "https://github.com/gfx-rs/wgpu", rev = "2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" }
|
wgpu-core = { git = "https://github.com/gfx-rs/wgpu", rev = "2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" }
|
||||||
wgpu-types = { git = "https://github.com/gfx-rs/wgpu", rev = "2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" }
|
wgpu-types = { git = "https://github.com/gfx-rs/wgpu", rev = "2b15a2b24b69e105ebdbb5e8a859e2df75e441c1" }
|
||||||
windows-sys = "0.59"
|
windows-sys = "0.59"
|
||||||
|
|
|
@ -45,5 +45,5 @@ unicode-script = { workspace = true }
|
||||||
webrender = { workspace = true }
|
webrender = { workspace = true }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webrender_traits = { workspace = true }
|
webrender_traits = { workspace = true }
|
||||||
webxr = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
webxr = { workspace = true, features = ["ipc"] }
|
||||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
webxr-api = { workspace = true, features = ["ipc"] }
|
||||||
|
|
|
@ -46,7 +46,7 @@ tracing = { workspace = true, optional = true }
|
||||||
webrender = { workspace = true }
|
webrender = { workspace = true }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webrender_traits = { workspace = true }
|
webrender_traits = { workspace = true }
|
||||||
webxr = { git = "https://github.com/servo/webxr" }
|
webxr = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
surfman = { workspace = true }
|
surfman = { workspace = true }
|
||||||
|
|
|
@ -51,7 +51,7 @@ webgpu = { path = "../webgpu" }
|
||||||
webrender = { workspace = true }
|
webrender = { workspace = true }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webrender_traits = { workspace = true }
|
webrender_traits = { workspace = true }
|
||||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
webxr-api = { workspace = true, features = ["ipc"] }
|
||||||
|
|
||||||
[target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies]
|
[target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies]
|
||||||
gaol = "0.2.1"
|
gaol = "0.2.1"
|
||||||
|
|
|
@ -594,9 +594,11 @@ where
|
||||||
T: for<'de> Deserialize<'de> + Serialize + Send + 'static,
|
T: for<'de> Deserialize<'de> + Serialize + Send + 'static,
|
||||||
{
|
{
|
||||||
let (crossbeam_sender, crossbeam_receiver) = unbounded();
|
let (crossbeam_sender, crossbeam_receiver) = unbounded();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
ipc_receiver.to_opaque(),
|
ipc_receiver,
|
||||||
Box::new(move |message| drop(crossbeam_sender.send(message.to::<T>()))),
|
Box::new(move |message| {
|
||||||
|
let _ = crossbeam_sender.send(message);
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
crossbeam_receiver
|
crossbeam_receiver
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,11 +86,10 @@ impl NetworkListener {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
ipc_receiver.to_opaque(),
|
ipc_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let msg = message.to();
|
match message {
|
||||||
match msg {
|
|
||||||
Ok(FetchResponseMsg::ProcessResponse(request_id, res)) => {
|
Ok(FetchResponseMsg::ProcessResponse(request_id, res)) => {
|
||||||
listener.check_redirect(request_id, res)
|
listener.check_redirect(request_id, res)
|
||||||
},
|
},
|
||||||
|
|
|
@ -240,21 +240,19 @@ impl Pipeline {
|
||||||
let (script_to_devtools_ipc_sender, script_to_devtools_ipc_receiver) =
|
let (script_to_devtools_ipc_sender, script_to_devtools_ipc_receiver) =
|
||||||
ipc::channel().expect("Pipeline script to devtools chan");
|
ipc::channel().expect("Pipeline script to devtools chan");
|
||||||
let devtools_sender = (*devtools_sender).clone();
|
let devtools_sender = (*devtools_sender).clone();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
script_to_devtools_ipc_receiver.to_opaque(),
|
script_to_devtools_ipc_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| match message {
|
||||||
match message.to::<ScriptToDevtoolsControlMsg>() {
|
Err(e) => {
|
||||||
Err(e) => {
|
error!("Cast to ScriptToDevtoolsControlMsg failed ({}).", e)
|
||||||
error!("Cast to ScriptToDevtoolsControlMsg failed ({}).", e)
|
},
|
||||||
},
|
Ok(message) => {
|
||||||
Ok(message) => {
|
if let Err(e) = devtools_sender
|
||||||
if let Err(e) = devtools_sender
|
.send(DevtoolsControlMsg::FromScript(message))
|
||||||
.send(DevtoolsControlMsg::FromScript(message))
|
{
|
||||||
{
|
warn!("Sending to devtools failed ({:?})", e)
|
||||||
warn!("Sending to devtools failed ({:?})", e)
|
}
|
||||||
}
|
},
|
||||||
},
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
script_to_devtools_ipc_sender
|
script_to_devtools_ipc_sender
|
||||||
|
|
|
@ -69,9 +69,9 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::wrong_self_convention)] // It is an alias to the underlying module
|
#[allow(clippy::wrong_self_convention)] // It is an alias to the underlying module
|
||||||
pub fn to_opaque(self) -> ipc_channel::ipc::OpaqueIpcReceiver {
|
pub fn to_ipc_receiver(self) -> ipc_channel::ipc::IpcReceiver<T> {
|
||||||
match self {
|
match self {
|
||||||
GLPlayerReceiver::Ipc(receiver) => receiver.to_opaque(),
|
GLPlayerReceiver::Ipc(receiver) => receiver,
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -560,11 +560,11 @@ async fn obtain_response(
|
||||||
let devtools_bytes = devtools_bytes.clone();
|
let devtools_bytes = devtools_bytes.clone();
|
||||||
let chunk_requester2 = chunk_requester.clone();
|
let chunk_requester2 = chunk_requester.clone();
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
body_port.to_opaque(),
|
body_port,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
info!("Received message");
|
info!("Received message");
|
||||||
let bytes: Vec<u8> = match message.to().unwrap() {
|
let bytes: Vec<u8> = match message.unwrap() {
|
||||||
BodyChunkResponse::Chunk(bytes) => bytes,
|
BodyChunkResponse::Chunk(bytes) => bytes,
|
||||||
BodyChunkResponse::Done => {
|
BodyChunkResponse::Done => {
|
||||||
// Step 3, abort these parallel steps.
|
// Step 3, abort these parallel steps.
|
||||||
|
|
|
@ -98,10 +98,10 @@ fn create_request_body_with_content(content: Vec<u8>) -> RequestBody {
|
||||||
let content_len = content.len();
|
let content_len = content.len();
|
||||||
|
|
||||||
let (chunk_request_sender, chunk_request_receiver) = ipc::channel().unwrap();
|
let (chunk_request_sender, chunk_request_receiver) = ipc::channel().unwrap();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
chunk_request_receiver.to_opaque(),
|
chunk_request_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let request = message.to().unwrap();
|
let request = message.unwrap();
|
||||||
if let BodyChunkRequest::Connect(sender) = request {
|
if let BodyChunkRequest::Connect(sender) = request {
|
||||||
let _ = sender.send(BodyChunkResponse::Chunk(content.clone()));
|
let _ = sender.send(BodyChunkResponse::Chunk(content.clone()));
|
||||||
let _ = sender.send(BodyChunkResponse::Done);
|
let _ = sender.send(BodyChunkResponse::Done);
|
||||||
|
|
|
@ -157,10 +157,10 @@ fn setup_dom_listener(
|
||||||
) -> UnboundedReceiver<DomMsg> {
|
) -> UnboundedReceiver<DomMsg> {
|
||||||
let (sender, receiver) = unbounded_channel();
|
let (sender, receiver) = unbounded_channel();
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
dom_action_receiver.to_opaque(),
|
dom_action_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let dom_action = message.to().expect("Ws dom_action message to deserialize");
|
let dom_action = message.expect("Ws dom_action message to deserialize");
|
||||||
trace!("handling WS DOM action: {:?}", dom_action);
|
trace!("handling WS DOM action: {:?}", dom_action);
|
||||||
match dom_action {
|
match dom_action {
|
||||||
WebSocketDomAction::SendMessage(MessageData::Text(data)) => {
|
WebSocketDomAction::SendMessage(MessageData::Text(data)) => {
|
||||||
|
|
|
@ -65,10 +65,10 @@ impl Profiler {
|
||||||
// be unregistered, because as long as the memory profiler is running the system memory
|
// be unregistered, because as long as the memory profiler is running the system memory
|
||||||
// reporter can make measurements.
|
// reporter can make measurements.
|
||||||
let (system_reporter_sender, system_reporter_receiver) = ipc::channel().unwrap();
|
let (system_reporter_sender, system_reporter_receiver) = ipc::channel().unwrap();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
system_reporter_receiver.to_opaque(),
|
system_reporter_receiver,
|
||||||
Box::new(|message| {
|
Box::new(|message| {
|
||||||
let request: ReporterRequest = message.to().unwrap();
|
let request: ReporterRequest = message.unwrap();
|
||||||
system_reporter::collect_reports(request)
|
system_reporter::collect_reports(request)
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
|
@ -116,7 +116,7 @@ webdriver = { workspace = true }
|
||||||
webgpu = { path = "../webgpu" }
|
webgpu = { path = "../webgpu" }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webrender_traits = { workspace = true }
|
webrender_traits = { workspace = true }
|
||||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
webxr-api = { workspace = true, features = ["ipc"] }
|
||||||
xml5ever = { workspace = true }
|
xml5ever = { workspace = true }
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "ios"))'.dependencies]
|
[target.'cfg(not(target_os = "ios"))'.dependencies]
|
||||||
|
|
|
@ -114,10 +114,10 @@ impl TransmitBodyConnectHandler {
|
||||||
let mut body_handler = self.clone();
|
let mut body_handler = self.clone();
|
||||||
body_handler.reset_in_memory_done();
|
body_handler.reset_in_memory_done();
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
chunk_request_receiver.to_opaque(),
|
chunk_request_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let request = message.to().unwrap();
|
let request = message.unwrap();
|
||||||
match request {
|
match request {
|
||||||
BodyChunkRequest::Connect(sender) => {
|
BodyChunkRequest::Connect(sender) => {
|
||||||
body_handler.start_reading(sender);
|
body_handler.start_reading(sender);
|
||||||
|
@ -397,11 +397,10 @@ impl ExtractedBody {
|
||||||
source,
|
source,
|
||||||
);
|
);
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
chunk_request_receiver.to_opaque(),
|
chunk_request_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let request = message.to().unwrap();
|
match message.unwrap() {
|
||||||
match request {
|
|
||||||
BodyChunkRequest::Connect(sender) => {
|
BodyChunkRequest::Connect(sender) => {
|
||||||
body_handler.start_reading(sender);
|
body_handler.start_reading(sender);
|
||||||
},
|
},
|
||||||
|
|
|
@ -116,14 +116,14 @@ impl AnalyserNode {
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
let this = Trusted::new(&*object);
|
let this = Trusted::new(&*object);
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
recv.to_opaque(),
|
recv,
|
||||||
Box::new(move |block| {
|
Box::new(move |block| {
|
||||||
let this = this.clone();
|
let this = this.clone();
|
||||||
let _ = source.queue_with_canceller(
|
let _ = source.queue_with_canceller(
|
||||||
task!(append_analysis_block: move || {
|
task!(append_analysis_block: move || {
|
||||||
let this = this.root();
|
let this = this.root();
|
||||||
this.push_block(block.to().unwrap())
|
this.push_block(block.unwrap())
|
||||||
}),
|
}),
|
||||||
&canceller,
|
&canceller,
|
||||||
);
|
);
|
||||||
|
|
|
@ -245,8 +245,8 @@ pub fn response_async<T: AsyncBluetoothListener + DomObject + 'static>(
|
||||||
promise: Some(TrustedPromise::new(promise.clone())),
|
promise: Some(TrustedPromise::new(promise.clone())),
|
||||||
receiver: Trusted::new(receiver),
|
receiver: Trusted::new(receiver),
|
||||||
}));
|
}));
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
action_receiver.to_opaque(),
|
action_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
struct ListenerTask<T: AsyncBluetoothListener + DomObject> {
|
struct ListenerTask<T: AsyncBluetoothListener + DomObject> {
|
||||||
context: Arc<Mutex<BluetoothContext<T>>>,
|
context: Arc<Mutex<BluetoothContext<T>>>,
|
||||||
|
@ -265,7 +265,7 @@ pub fn response_async<T: AsyncBluetoothListener + DomObject + 'static>(
|
||||||
|
|
||||||
let task = ListenerTask {
|
let task = ListenerTask {
|
||||||
context: context.clone(),
|
context: context.clone(),
|
||||||
action: message.to().unwrap(),
|
action: message.unwrap(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let result = task_source.queue_unconditionally(task);
|
let result = task_source.queue_unconditionally(task);
|
||||||
|
|
|
@ -607,10 +607,10 @@ impl EventSourceMethods for EventSource {
|
||||||
task_source: global.networking_task_source(),
|
task_source: global.networking_task_source(),
|
||||||
canceller: Some(global.task_canceller(TaskSourceName::Networking)),
|
canceller: Some(global.task_canceller(TaskSourceName::Networking)),
|
||||||
};
|
};
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
action_receiver.to_opaque(),
|
action_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
listener.notify_fetch(message.to().unwrap());
|
listener.notify_fetch(message.unwrap());
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
let cancel_receiver = ev.canceller.borrow_mut().initialize();
|
let cancel_receiver = ev.canceller.borrow_mut().initialize();
|
||||||
|
|
|
@ -306,8 +306,9 @@ impl FakeXRDeviceMethods for FakeXRDevice {
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
||||||
ROUTER.add_route(
|
|
||||||
receiver.to_opaque(),
|
ROUTER.add_typed_route(
|
||||||
|
receiver.to_ipc_receiver(),
|
||||||
Box::new(move |_| {
|
Box::new(move |_| {
|
||||||
let trusted = trusted
|
let trusted = trusted
|
||||||
.take()
|
.take()
|
||||||
|
|
|
@ -229,14 +229,11 @@ impl GamepadHapticActuatorMethods for GamepadHapticActuator {
|
||||||
context,
|
context,
|
||||||
};
|
};
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
effect_complete_receiver.to_opaque(),
|
effect_complete_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| match message {
|
||||||
let msg = message.to::<bool>();
|
Ok(msg) => listener.handle_completed(msg),
|
||||||
match msg {
|
Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err),
|
||||||
Ok(msg) => listener.handle_completed(msg),
|
|
||||||
Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err),
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -301,14 +298,11 @@ impl GamepadHapticActuatorMethods for GamepadHapticActuator {
|
||||||
context,
|
context,
|
||||||
};
|
};
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
effect_stop_receiver.to_opaque(),
|
effect_stop_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| match message {
|
||||||
let msg = message.to::<bool>();
|
Ok(msg) => listener.handle_stopped(msg),
|
||||||
match msg {
|
Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err),
|
||||||
Ok(msg) => listener.handle_stopped(msg),
|
|
||||||
Err(err) => warn!("Error receiving a GamepadMsg: {:?}", err),
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -847,10 +847,10 @@ impl GlobalScope {
|
||||||
task_source,
|
task_source,
|
||||||
canceller,
|
canceller,
|
||||||
};
|
};
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
timer_ipc_port.to_opaque(),
|
timer_ipc_port,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let event = message.to().unwrap();
|
let event = message.unwrap();
|
||||||
timer_listener.handle(event);
|
timer_listener.handle(event);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
@ -1435,14 +1435,11 @@ impl GlobalScope {
|
||||||
task_source,
|
task_source,
|
||||||
context,
|
context,
|
||||||
};
|
};
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
broadcast_control_receiver.to_opaque(),
|
broadcast_control_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| match message {
|
||||||
let msg = message.to();
|
Ok(msg) => listener.handle(msg),
|
||||||
match msg {
|
Err(err) => warn!("Error receiving a BroadcastMsg: {:?}", err),
|
||||||
Ok(msg) => listener.handle(msg),
|
|
||||||
Err(err) => warn!("Error receiving a BroadcastMsg: {:?}", err),
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
let router_id = BroadcastChannelRouterId::new();
|
let router_id = BroadcastChannelRouterId::new();
|
||||||
|
@ -1491,14 +1488,11 @@ impl GlobalScope {
|
||||||
task_source,
|
task_source,
|
||||||
context,
|
context,
|
||||||
};
|
};
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
port_control_receiver.to_opaque(),
|
port_control_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| match message {
|
||||||
let msg = message.to();
|
Ok(msg) => listener.notify(msg),
|
||||||
match msg {
|
Err(err) => warn!("Error receiving a MessagePortMsg: {:?}", err),
|
||||||
Ok(msg) => listener.notify(msg),
|
|
||||||
Err(err) => warn!("Error receiving a MessagePortMsg: {:?}", err),
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
let router_id = MessagePortRouterId::new();
|
let router_id = MessagePortRouterId::new();
|
||||||
|
@ -2021,13 +2015,10 @@ impl GlobalScope {
|
||||||
task_canceller,
|
task_canceller,
|
||||||
};
|
};
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
recv.to_opaque(),
|
recv.to_ipc_receiver(),
|
||||||
Box::new(move |msg| {
|
Box::new(move |msg| {
|
||||||
file_listener.handle(
|
file_listener.handle(msg.expect("Deserialization of file listener msg failed."));
|
||||||
msg.to()
|
|
||||||
.expect("Deserialization of file listener msg failed."),
|
|
||||||
);
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -2050,13 +2041,10 @@ impl GlobalScope {
|
||||||
task_canceller,
|
task_canceller,
|
||||||
};
|
};
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
recv.to_opaque(),
|
recv.to_ipc_receiver(),
|
||||||
Box::new(move |msg| {
|
Box::new(move |msg| {
|
||||||
file_listener.handle(
|
file_listener.handle(msg.expect("Deserialization of file listener msg failed."));
|
||||||
msg.to()
|
|
||||||
.expect("Deserialization of file listener msg failed."),
|
|
||||||
);
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,8 +76,8 @@ pub fn response_async<T: AsyncWGPUListener + DomObject + 'static>(
|
||||||
.task_canceller(TaskSourceName::DOMManipulation);
|
.task_canceller(TaskSourceName::DOMManipulation);
|
||||||
let mut trusted: Option<TrustedPromise> = Some(TrustedPromise::new(promise.clone()));
|
let mut trusted: Option<TrustedPromise> = Some(TrustedPromise::new(promise.clone()));
|
||||||
let trusted_receiver = Trusted::new(receiver);
|
let trusted_receiver = Trusted::new(receiver);
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
action_receiver.to_opaque(),
|
action_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let trusted = if let Some(trusted) = trusted.take() {
|
let trusted = if let Some(trusted) = trusted.take() {
|
||||||
trusted
|
trusted
|
||||||
|
@ -92,7 +92,7 @@ pub fn response_async<T: AsyncWGPUListener + DomObject + 'static>(
|
||||||
};
|
};
|
||||||
let result = task_source.queue_with_canceller(
|
let result = task_source.queue_with_canceller(
|
||||||
task!(process_webgpu_task: move|| {
|
task!(process_webgpu_task: move|| {
|
||||||
context.response(message.to().unwrap(), CanGc::note());
|
context.response(message.unwrap(), CanGc::note());
|
||||||
}),
|
}),
|
||||||
&canceller,
|
&canceller,
|
||||||
);
|
);
|
||||||
|
|
|
@ -1077,14 +1077,15 @@ impl HTMLImageElement {
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.networking_task_source_with_canceller();
|
.networking_task_source_with_canceller();
|
||||||
let generation = elem.generation.get();
|
let generation = elem.generation.get();
|
||||||
ROUTER.add_route(
|
|
||||||
responder_receiver.to_opaque(),
|
ROUTER.add_typed_route(
|
||||||
|
responder_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
debug!("Got image {:?}", message);
|
debug!("Got image {:?}", message);
|
||||||
// Return the image via a message to the script thread, which marks
|
// Return the image via a message to the script thread, which marks
|
||||||
// the element as dirty and triggers a reflow.
|
// the element as dirty and triggers a reflow.
|
||||||
let element = trusted_node.clone();
|
let element = trusted_node.clone();
|
||||||
let image: PendingImageResponse = message.to().unwrap();
|
let image: PendingImageResponse = message.unwrap();
|
||||||
let selected_source_clone = selected_source.clone();
|
let selected_source_clone = selected_source.clone();
|
||||||
let _ = task_source.queue_with_canceller(
|
let _ = task_source.queue_with_canceller(
|
||||||
task!(process_image_response_for_environment_change: move || {
|
task!(process_image_response_for_environment_change: move || {
|
||||||
|
|
|
@ -1372,10 +1372,10 @@ impl HTMLMediaElement {
|
||||||
let (task_source, canceller) = window
|
let (task_source, canceller) = window
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.media_element_task_source_with_canceller();
|
.media_element_task_source_with_canceller();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
action_receiver.to_opaque(),
|
action_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let event = message.to().unwrap();
|
let event = message.unwrap();
|
||||||
trace!("Player event {:?}", event);
|
trace!("Player event {:?}", event);
|
||||||
let this = trusted_node.clone();
|
let this = trusted_node.clone();
|
||||||
if let Err(err) = task_source.queue_with_canceller(
|
if let Err(err) = task_source.queue_with_canceller(
|
||||||
|
@ -1415,10 +1415,10 @@ impl HTMLMediaElement {
|
||||||
let (task_source, canceller) = window
|
let (task_source, canceller) = window
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.media_element_task_source_with_canceller();
|
.media_element_task_source_with_canceller();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
image_receiver.to_opaque(),
|
image_receiver.to_ipc_receiver(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let msg = message.to().unwrap();
|
let msg = message.unwrap();
|
||||||
let this = trusted_node.clone();
|
let this = trusted_node.clone();
|
||||||
if let Err(err) = task_source.queue_with_canceller(
|
if let Err(err) = task_source.queue_with_canceller(
|
||||||
task!(handle_glplayer_message: move || {
|
task!(handle_glplayer_message: move || {
|
||||||
|
|
|
@ -153,14 +153,11 @@ impl ServiceWorkerContainerMethods for ServiceWorkerContainer {
|
||||||
|
|
||||||
let (job_result_sender, job_result_receiver) = ipc::channel().expect("ipc channel failure");
|
let (job_result_sender, job_result_receiver) = ipc::channel().expect("ipc channel failure");
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
job_result_receiver.to_opaque(),
|
job_result_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| match message {
|
||||||
let msg = message.to();
|
Ok(msg) => handler.handle(msg),
|
||||||
match msg {
|
Err(err) => warn!("Error receiving a JobResult: {:?}", err),
|
||||||
Ok(msg) => handler.handle(msg),
|
|
||||||
Err(err) => warn!("Error receiving a JobResult: {:?}", err),
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -268,9 +268,9 @@ impl WebSocketMethods for WebSocket {
|
||||||
|
|
||||||
let task_source = global.websocket_task_source();
|
let task_source = global.websocket_task_source();
|
||||||
let canceller = global.task_canceller(WebsocketTaskSource::NAME);
|
let canceller = global.task_canceller(WebsocketTaskSource::NAME);
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
dom_event_receiver.to_opaque(),
|
dom_event_receiver.to_ipc_receiver(),
|
||||||
Box::new(move |message| match message.to().unwrap() {
|
Box::new(move |message| match message.unwrap() {
|
||||||
WebSocketNetworkEvent::ConnectionEstablished { protocol_in_use } => {
|
WebSocketNetworkEvent::ConnectionEstablished { protocol_in_use } => {
|
||||||
let open_thread = ConnectionEstablishedTask {
|
let open_thread = ConnectionEstablishedTask {
|
||||||
address: address.clone(),
|
address: address.clone(),
|
||||||
|
|
|
@ -1934,10 +1934,10 @@ impl Window {
|
||||||
let (responder, responder_listener) =
|
let (responder, responder_listener) =
|
||||||
ProfiledIpc::channel(self.global().time_profiler_chan().clone()).unwrap();
|
ProfiledIpc::channel(self.global().time_profiler_chan().clone()).unwrap();
|
||||||
let image_cache_chan = self.image_cache_chan.clone();
|
let image_cache_chan = self.image_cache_chan.clone();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
responder_listener.to_opaque(),
|
responder_listener.to_ipc_receiver(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let _ = image_cache_chan.send((pipeline_id, message.to().unwrap()));
|
let _ = image_cache_chan.send((pipeline_id, message.unwrap()));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
self.image_cache
|
self.image_cache
|
||||||
|
|
|
@ -204,10 +204,10 @@ impl XRSession {
|
||||||
let (task_source, canceller) = window
|
let (task_source, canceller) = window
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
frame_receiver.to_opaque(),
|
frame_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let frame: Frame = message.to().unwrap();
|
let frame: Frame = message.unwrap();
|
||||||
let time = CrossProcessInstant::now();
|
let time = CrossProcessInstant::now();
|
||||||
let this = this.clone();
|
let this = this.clone();
|
||||||
let _ = task_source.queue_with_canceller(
|
let _ = task_source.queue_with_canceller(
|
||||||
|
@ -235,13 +235,13 @@ impl XRSession {
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
receiver.to_opaque(),
|
receiver.to_ipc_receiver(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let this = this.clone();
|
let this = this.clone();
|
||||||
let _ = task_source.queue_with_canceller(
|
let _ = task_source.queue_with_canceller(
|
||||||
task!(xr_event_callback: move || {
|
task!(xr_event_callback: move || {
|
||||||
this.root().event_callback(message.to().unwrap(), CanGc::note());
|
this.root().event_callback(message.unwrap(), CanGc::note());
|
||||||
}),
|
}),
|
||||||
&canceller,
|
&canceller,
|
||||||
);
|
);
|
||||||
|
@ -1047,14 +1047,14 @@ impl XRSessionMethods for XRSession {
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
receiver.to_opaque(),
|
receiver.to_ipc_receiver(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let this = this.clone();
|
let this = this.clone();
|
||||||
let _ = task_source.queue_with_canceller(
|
let _ = task_source.queue_with_canceller(
|
||||||
task!(update_session_framerate: move || {
|
task!(update_session_framerate: move || {
|
||||||
let session = this.root();
|
let session = this.root();
|
||||||
session.apply_nominal_framerate(message.to().unwrap());
|
session.apply_nominal_framerate(message.unwrap());
|
||||||
if let Some(promise) = session.update_framerate_promise.borrow_mut().take() {
|
if let Some(promise) = session.update_framerate_promise.borrow_mut().take() {
|
||||||
promise.resolve_native(&());
|
promise.resolve_native(&());
|
||||||
};
|
};
|
||||||
|
|
|
@ -121,8 +121,8 @@ impl XRSystemMethods for XRSystem {
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
receiver.to_opaque(),
|
receiver.to_ipc_receiver(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
// router doesn't know this is only called once
|
// router doesn't know this is only called once
|
||||||
let trusted = if let Some(trusted) = trusted.take() {
|
let trusted = if let Some(trusted) = trusted.take() {
|
||||||
|
@ -131,7 +131,7 @@ impl XRSystemMethods for XRSystem {
|
||||||
error!("supportsSession callback called twice!");
|
error!("supportsSession callback called twice!");
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
let message: Result<(), webxr_api::Error> = if let Ok(message) = message.to() {
|
let message: Result<(), webxr_api::Error> = if let Ok(message) = message {
|
||||||
message
|
message
|
||||||
} else {
|
} else {
|
||||||
error!("supportsSession callback given incorrect payload");
|
error!("supportsSession callback given incorrect payload");
|
||||||
|
@ -242,14 +242,14 @@ impl XRSystemMethods for XRSystem {
|
||||||
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
||||||
let (frame_sender, frame_receiver) = ipc_crate::channel().unwrap();
|
let (frame_sender, frame_receiver) = ipc_crate::channel().unwrap();
|
||||||
let mut frame_receiver = Some(frame_receiver);
|
let mut frame_receiver = Some(frame_receiver);
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
receiver.to_opaque(),
|
receiver.to_ipc_receiver(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
// router doesn't know this is only called once
|
// router doesn't know this is only called once
|
||||||
let trusted = trusted.take().unwrap();
|
let trusted = trusted.take().unwrap();
|
||||||
let this = this.clone();
|
let this = this.clone();
|
||||||
let frame_receiver = frame_receiver.take().unwrap();
|
let frame_receiver = frame_receiver.take().unwrap();
|
||||||
let message: Result<Session, webxr_api::Error> = if let Ok(message) = message.to() {
|
let message: Result<Session, webxr_api::Error> = if let Ok(message) = message {
|
||||||
message
|
message
|
||||||
} else {
|
} else {
|
||||||
error!("requestSession callback given incorrect payload");
|
error!("requestSession callback given incorrect payload");
|
||||||
|
|
|
@ -154,16 +154,16 @@ impl XRTestMethods for XRTest {
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
let (sender, receiver) = ipc::channel(global.time_profiler_chan().clone()).unwrap();
|
||||||
ROUTER.add_route(
|
|
||||||
receiver.to_opaque(),
|
ROUTER.add_typed_route(
|
||||||
|
receiver.to_ipc_receiver(),
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let trusted = trusted
|
let trusted = trusted
|
||||||
.take()
|
.take()
|
||||||
.expect("SimulateDeviceConnection callback called twice");
|
.expect("SimulateDeviceConnection callback called twice");
|
||||||
let this = this.clone();
|
let this = this.clone();
|
||||||
let message = message
|
let message =
|
||||||
.to()
|
message.expect("SimulateDeviceConnection callback given incorrect payload");
|
||||||
.expect("SimulateDeviceConnection callback given incorrect payload");
|
|
||||||
|
|
||||||
let _ = task_source.queue_with_canceller(
|
let _ = task_source.queue_with_canceller(
|
||||||
task!(request_session: move || {
|
task!(request_session: move || {
|
||||||
|
@ -209,8 +209,8 @@ impl XRTestMethods for XRTest {
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.dom_manipulation_task_source_with_canceller();
|
.dom_manipulation_task_source_with_canceller();
|
||||||
|
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
receiver.to_opaque(),
|
receiver.to_ipc_receiver(),
|
||||||
Box::new(move |_| {
|
Box::new(move |_| {
|
||||||
len -= 1;
|
len -= 1;
|
||||||
if len == 0 {
|
if len == 0 {
|
||||||
|
|
|
@ -32,11 +32,12 @@ pub fn generate_cache_listener_for_element<
|
||||||
.task_manager()
|
.task_manager()
|
||||||
.networking_task_source_with_canceller();
|
.networking_task_source_with_canceller();
|
||||||
let generation = elem.generation_id();
|
let generation = elem.generation_id();
|
||||||
ROUTER.add_route(
|
|
||||||
responder_receiver.to_opaque(),
|
ROUTER.add_typed_route(
|
||||||
|
responder_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let element = trusted_node.clone();
|
let element = trusted_node.clone();
|
||||||
let image: PendingImageResponse = message.to().unwrap();
|
let image: PendingImageResponse = message.unwrap();
|
||||||
debug!("Got image {:?}", image);
|
debug!("Got image {:?}", image);
|
||||||
let _ = task_source.queue_with_canceller(
|
let _ = task_source.queue_with_canceller(
|
||||||
task!(process_image_response: move || {
|
task!(process_image_response: move || {
|
||||||
|
|
|
@ -83,8 +83,8 @@ webgpu = { path = "../webgpu" }
|
||||||
webrender = { workspace = true }
|
webrender = { workspace = true }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webrender_traits = { workspace = true }
|
webrender_traits = { workspace = true }
|
||||||
webxr = { git = "https://github.com/servo/webxr" }
|
webxr = { workspace = true }
|
||||||
webxr-api = { git = "https://github.com/servo/webxr" }
|
webxr-api = { workspace = true }
|
||||||
|
|
||||||
[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_arch = "arm"), not(target_arch = "aarch64")))'.dependencies]
|
[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_arch = "arm"), not(target_arch = "aarch64")))'.dependencies]
|
||||||
gaol = "0.2.1"
|
gaol = "0.2.1"
|
||||||
|
|
|
@ -991,11 +991,11 @@ fn create_compositor_channel(
|
||||||
};
|
};
|
||||||
|
|
||||||
let compositor_proxy_clone = compositor_proxy.clone();
|
let compositor_proxy_clone = compositor_proxy.clone();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
compositor_ipc_receiver.to_opaque(),
|
compositor_ipc_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
compositor_proxy_clone.send(CompositorMsg::CrossProcess(
|
compositor_proxy_clone.send(CompositorMsg::CrossProcess(
|
||||||
message.to().expect("Could not convert Compositor message"),
|
message.expect("Could not convert Compositor message"),
|
||||||
));
|
));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
|
@ -28,4 +28,4 @@ servo_config = { path = "../../config" }
|
||||||
sparkle = { workspace = true }
|
sparkle = { workspace = true }
|
||||||
style = { workspace = true }
|
style = { workspace = true }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
webxr-api = { workspace = true, features = ["ipc"] }
|
||||||
|
|
|
@ -23,4 +23,4 @@ num-traits = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
servo_url = { path = "../../url" }
|
servo_url = { path = "../../url" }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
webxr-api = { workspace = true, features = ["ipc"] }
|
||||||
|
|
|
@ -532,10 +532,10 @@ impl FetchThread {
|
||||||
let (to_fetch_sender, from_fetch_sender) = ipc::channel().unwrap();
|
let (to_fetch_sender, from_fetch_sender) = ipc::channel().unwrap();
|
||||||
|
|
||||||
let sender_clone = sender.clone();
|
let sender_clone = sender.clone();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
from_fetch_sender.to_opaque(),
|
from_fetch_sender,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
let message: FetchResponseMsg = message.to().unwrap();
|
let message: FetchResponseMsg = message.unwrap();
|
||||||
let _ = sender_clone.send(ToFetchThreadMessage::FetchResponse(message));
|
let _ = sender_clone.send(ToFetchThreadMessage::FetchResponse(message));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
|
@ -35,8 +35,8 @@ where
|
||||||
self.ipc_receiver.try_recv()
|
self.ipc_receiver.try_recv()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn to_opaque(self) -> ipc::OpaqueIpcReceiver {
|
pub fn to_ipc_receiver(self) -> ipc::IpcReceiver<T> {
|
||||||
self.ipc_receiver.to_opaque()
|
self.ipc_receiver
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,11 +75,11 @@ impl ProfilerChan {
|
||||||
{
|
{
|
||||||
// Register the memory reporter.
|
// Register the memory reporter.
|
||||||
let (reporter_sender, reporter_receiver) = ipc::channel().unwrap();
|
let (reporter_sender, reporter_receiver) = ipc::channel().unwrap();
|
||||||
ROUTER.add_route(
|
ROUTER.add_typed_route(
|
||||||
reporter_receiver.to_opaque(),
|
reporter_receiver,
|
||||||
Box::new(move |message| {
|
Box::new(move |message| {
|
||||||
// Just injects an appropriate event into the paint thread's queue.
|
// Just injects an appropriate event into the paint thread's queue.
|
||||||
let request: ReporterRequest = message.to().unwrap();
|
let request: ReporterRequest = message.unwrap();
|
||||||
channel_for_reporter.send(msg(request.reports_channel));
|
channel_for_reporter.send(msg(request.reports_channel));
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
|
@ -45,4 +45,4 @@ webdriver = { workspace = true }
|
||||||
webgpu = { path = "../../webgpu" }
|
webgpu = { path = "../../webgpu" }
|
||||||
webrender_api = { workspace = true }
|
webrender_api = { workspace = true }
|
||||||
webrender_traits = { workspace = true }
|
webrender_traits = { workspace = true }
|
||||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
webxr-api = { workspace = true, features = ["ipc"] }
|
||||||
|
|
|
@ -95,7 +95,7 @@ ohos-vsync = "0.1"
|
||||||
nix = { workspace = true, features = ["fs"] }
|
nix = { workspace = true, features = ["fs"] }
|
||||||
surfman = { workspace = true, features = ["sm-angle-default"] }
|
surfman = { workspace = true, features = ["sm-angle-default"] }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
webxr = { git = "https://github.com/servo/webxr" }
|
webxr = { workspace = true }
|
||||||
|
|
||||||
|
|
||||||
[target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies]
|
[target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies]
|
||||||
|
@ -118,7 +118,7 @@ raw-window-handle = "0.6"
|
||||||
shellwords = "1.0.0"
|
shellwords = "1.0.0"
|
||||||
surfman = { workspace = true, features = ["sm-x11", "sm-raw-window-handle-06"] }
|
surfman = { workspace = true, features = ["sm-x11", "sm-raw-window-handle-06"] }
|
||||||
tinyfiledialogs = "3.0"
|
tinyfiledialogs = "3.0"
|
||||||
webxr = { git = "https://github.com/servo/webxr", features = ["ipc", "glwindow", "headless"] }
|
webxr = { workspace = true, features = ["ipc", "glwindow", "headless"] }
|
||||||
winit = "0.30.5"
|
winit = "0.30.5"
|
||||||
|
|
||||||
[target.'cfg(any(all(target_os = "linux", not(target_env = "ohos")), target_os = "windows"))'.dependencies]
|
[target.'cfg(any(all(target_os = "linux", not(target_env = "ohos")), target_os = "windows"))'.dependencies]
|
||||||
|
@ -128,6 +128,6 @@ image = { workspace = true }
|
||||||
sig = "1.0"
|
sig = "1.0"
|
||||||
|
|
||||||
[target.'cfg(target_os = "windows")'.dependencies]
|
[target.'cfg(target_os = "windows")'.dependencies]
|
||||||
webxr = { git = "https://github.com/servo/webxr", features = ["ipc", "glwindow", "headless", "openxr-api"] }
|
webxr = { workspace = true, features = ["ipc", "glwindow", "headless", "openxr-api"] }
|
||||||
windows-sys = { workspace = true, features = ["Win32_Graphics_Gdi"] }
|
windows-sys = { workspace = true, features = ["Win32_Graphics_Gdi"] }
|
||||||
libservo = { path = "../../components/servo", features = ["no-wgl"] }
|
libservo = { path = "../../components/servo", features = ["no-wgl"] }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue