mirror of
https://github.com/servo/servo.git
synced 2025-09-20 11:50:09 +01:00
Bump ipc_channel and remove unnecessary lock in SystemFontServiceProxy (#39350)
Since IpcSender is now Sync (since `ipc_channel` 0.20.2), we can remove locks that were added just to make structs containing the sender `Sync` again. There is another occurrence of `Arc<Mutex<IpcSender<>>>` in `RequestBody`, however that sender is exchanged / updated, so cloning the sender instead of the Arc would change behavior, hence this PR does not touch it. Testing: Covered by existing tests --------- Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This commit is contained in:
parent
f03f9c7e1b
commit
d08be14c7a
3 changed files with 20 additions and 33 deletions
26
Cargo.lock
generated
26
Cargo.lock
generated
|
@ -378,7 +378,7 @@ dependencies = [
|
|||
"objc2-foundation 0.3.1",
|
||||
"parking_lot",
|
||||
"percent-encoding",
|
||||
"windows-sys 0.60.2",
|
||||
"windows-sys 0.52.0",
|
||||
"x11rb",
|
||||
]
|
||||
|
||||
|
@ -2557,7 +2557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.61.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3159,7 +3159,7 @@ dependencies = [
|
|||
"vec_map",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
"windows 0.61.3",
|
||||
"windows 0.58.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3178,7 +3178,7 @@ dependencies = [
|
|||
"gobject-sys",
|
||||
"libc",
|
||||
"system-deps 7.0.5",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4062,7 +4062,7 @@ dependencies = [
|
|||
"js-sys",
|
||||
"log",
|
||||
"wasm-bindgen",
|
||||
"windows-core 0.61.2",
|
||||
"windows-core 0.58.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4650,9 +4650,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ipc-channel"
|
||||
version = "0.20.1"
|
||||
version = "0.20.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1700f6b8b9f00cdd675f32fbb3a5be882213140dfe045805273221ca266c43f8"
|
||||
checksum = "f93600b5616c2d075f8af8dbd23c1d69278c5d24e4913d220cbc60b14c95c180"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"crossbeam-channel",
|
||||
|
@ -4663,7 +4663,7 @@ dependencies = [
|
|||
"serde",
|
||||
"tempfile",
|
||||
"uuid",
|
||||
"windows 0.58.0",
|
||||
"windows 0.61.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4674,7 +4674,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
|
|||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -7179,7 +7179,7 @@ dependencies = [
|
|||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys 0.4.15",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -7192,7 +7192,7 @@ dependencies = [
|
|||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys 0.9.4",
|
||||
"windows-sys 0.60.2",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -8653,7 +8653,7 @@ dependencies = [
|
|||
"getrandom 0.3.3",
|
||||
"once_cell",
|
||||
"rustix 1.0.8",
|
||||
"windows-sys 0.61.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -10193,7 +10193,7 @@ version = "0.1.11"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
|
||||
dependencies = [
|
||||
"windows-sys 0.61.0",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -86,7 +86,7 @@ icu_segmenter = "1.5.0"
|
|||
image = "0.25"
|
||||
imsz = "0.2"
|
||||
indexmap = { version = "2.11.4", features = ["std"] }
|
||||
ipc-channel = "0.20"
|
||||
ipc-channel = "0.20.2"
|
||||
itertools = "0.14"
|
||||
js = { package = "mozjs", git = "https://github.com/servo/mozjs" }
|
||||
keyboard-types = { version = "0.8.1", features = ["serde", "webdriver"] }
|
||||
|
|
|
@ -7,7 +7,7 @@ use std::collections::HashMap;
|
|||
use ipc_channel::ipc::{self, IpcSender};
|
||||
use log::debug;
|
||||
use malloc_size_of_derive::MallocSizeOf;
|
||||
use parking_lot::{Mutex, RwLock};
|
||||
use parking_lot::RwLock;
|
||||
use profile_traits::mem::ReportsChan;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use style::values::computed::font::SingleFontFamily;
|
||||
|
@ -44,7 +44,7 @@ pub struct SystemFontServiceProxySender(pub IpcSender<SystemFontServiceMessage>)
|
|||
impl SystemFontServiceProxySender {
|
||||
pub fn to_proxy(&self) -> SystemFontServiceProxy {
|
||||
SystemFontServiceProxy {
|
||||
sender: Mutex::new(self.0.clone()),
|
||||
sender: self.0.clone(),
|
||||
templates: Default::default(),
|
||||
}
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ struct FontTemplateCacheKey {
|
|||
/// `FontContext` instances.
|
||||
#[derive(Debug, MallocSizeOf)]
|
||||
pub struct SystemFontServiceProxy {
|
||||
sender: Mutex<IpcSender<SystemFontServiceMessage>>,
|
||||
sender: IpcSender<SystemFontServiceMessage>,
|
||||
templates: RwLock<HashMap<FontTemplateCacheKey, Vec<FontTemplateRef>>>,
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,6 @@ impl SystemFontServiceProxy {
|
|||
pub fn exit(&self) {
|
||||
let (response_chan, response_port) = ipc::channel().unwrap();
|
||||
self.sender
|
||||
.lock()
|
||||
.send(SystemFontServiceMessage::Exit(response_chan))
|
||||
.expect("Couldn't send SystemFontService exit message");
|
||||
response_port
|
||||
|
@ -77,7 +76,7 @@ impl SystemFontServiceProxy {
|
|||
}
|
||||
|
||||
pub fn to_sender(&self) -> SystemFontServiceProxySender {
|
||||
SystemFontServiceProxySender(self.sender.lock().clone())
|
||||
SystemFontServiceProxySender(self.sender.clone())
|
||||
}
|
||||
|
||||
pub fn get_system_font_instance(
|
||||
|
@ -89,7 +88,6 @@ impl SystemFontServiceProxy {
|
|||
) -> FontInstanceKey {
|
||||
let (response_chan, response_port) = ipc::channel().expect("failed to create IPC channel");
|
||||
self.sender
|
||||
.lock()
|
||||
.send(SystemFontServiceMessage::GetFontInstance(
|
||||
identifier,
|
||||
size,
|
||||
|
@ -101,11 +99,7 @@ impl SystemFontServiceProxy {
|
|||
|
||||
let instance_key = response_port.recv();
|
||||
if instance_key.is_err() {
|
||||
let font_thread_has_closed = self
|
||||
.sender
|
||||
.lock()
|
||||
.send(SystemFontServiceMessage::Ping)
|
||||
.is_err();
|
||||
let font_thread_has_closed = self.sender.send(SystemFontServiceMessage::Ping).is_err();
|
||||
assert!(
|
||||
font_thread_has_closed,
|
||||
"Failed to receive a response from live font cache"
|
||||
|
@ -135,7 +129,6 @@ impl SystemFontServiceProxy {
|
|||
|
||||
let (response_chan, response_port) = ipc::channel().expect("failed to create IPC channel");
|
||||
self.sender
|
||||
.lock()
|
||||
.send(SystemFontServiceMessage::GetFontTemplates(
|
||||
descriptor_to_match.cloned(),
|
||||
family_descriptor.clone(),
|
||||
|
@ -144,11 +137,7 @@ impl SystemFontServiceProxy {
|
|||
.expect("failed to send message to system font service");
|
||||
|
||||
let Ok(templates) = response_port.recv() else {
|
||||
let font_thread_has_closed = self
|
||||
.sender
|
||||
.lock()
|
||||
.send(SystemFontServiceMessage::Ping)
|
||||
.is_err();
|
||||
let font_thread_has_closed = self.sender.send(SystemFontServiceMessage::Ping).is_err();
|
||||
assert!(
|
||||
font_thread_has_closed,
|
||||
"Failed to receive a response from live font cache"
|
||||
|
@ -166,7 +155,6 @@ impl SystemFontServiceProxy {
|
|||
let (result_sender, result_receiver) =
|
||||
ipc::channel().expect("failed to create IPC channel");
|
||||
self.sender
|
||||
.lock()
|
||||
.send(SystemFontServiceMessage::GetFontKey(result_sender))
|
||||
.expect("failed to send message to system font service");
|
||||
result_receiver
|
||||
|
@ -178,7 +166,6 @@ impl SystemFontServiceProxy {
|
|||
let (result_sender, result_receiver) =
|
||||
ipc::channel().expect("failed to create IPC channel");
|
||||
self.sender
|
||||
.lock()
|
||||
.send(SystemFontServiceMessage::GetFontInstanceKey(result_sender))
|
||||
.expect("failed to send message to system font service");
|
||||
result_receiver
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue