From 6b3a316e1bc31aaf4938bc093b5b4c72a7fadf86 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 10 Oct 2024 12:55:19 -0400 Subject: [PATCH] Remove most usage of ReentrantMutex in font code (#33746) * Remove unnecessary ReentrantMutex usage for senders. Signed-off-by: Josh Matthews * Remove double lock for freetype face. Signed-off-by: Josh Matthews --------- Signed-off-by: Josh Matthews --- components/fonts/font_context.rs | 10 +++++----- components/fonts/platform/freetype/font.rs | 1 - components/fonts/system_font_service.rs | 6 +++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/components/fonts/font_context.rs b/components/fonts/font_context.rs index 82672bff209..d3c4a66ce66 100644 --- a/components/fonts/font_context.rs +++ b/components/fonts/font_context.rs @@ -17,7 +17,7 @@ use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; use malloc_size_of_derive::MallocSizeOf; use net_traits::request::{Destination, Referrer, RequestBuilder}; use net_traits::{fetch_async, CoreResourceThread, FetchResponseMsg, ResourceThreads}; -use parking_lot::{Mutex, ReentrantMutex, RwLock}; +use parking_lot::{Mutex, RwLock}; use servo_arc::Arc as ServoArc; use servo_url::ServoUrl; use style::computed_values::font_variant_caps::T as FontVariantCaps; @@ -49,10 +49,10 @@ static SMALL_CAPS_SCALE_FACTOR: f32 = 0.8; // Matches FireFox (see gfxFont.h) /// required. pub struct FontContext { system_font_service_proxy: Arc, - resource_threads: ReentrantMutex, + resource_threads: Mutex, /// A sender that can send messages and receive replies from the compositor. - compositor_api: ReentrantMutex, + compositor_api: Mutex, /// The actual instances of fonts ie a [`FontTemplate`] combined with a size and /// other font properties, along with the font data and a platform font instance. @@ -106,8 +106,8 @@ impl FontContext { #[allow(clippy::default_constructed_unit_structs)] Self { system_font_service_proxy, - resource_threads: ReentrantMutex::new(resource_threads.core_thread), - compositor_api: ReentrantMutex::new(compositor_api), + resource_threads: Mutex::new(resource_threads.core_thread), + compositor_api: Mutex::new(compositor_api), fonts: Default::default(), resolved_font_groups: Default::default(), web_fonts: Arc::new(RwLock::default()), diff --git a/components/fonts/platform/freetype/font.rs b/components/fonts/platform/freetype/font.rs index d7e02f7759e..89980ca62d6 100644 --- a/components/fonts/platform/freetype/font.rs +++ b/components/fonts/platform/freetype/font.rs @@ -150,7 +150,6 @@ impl PlatformFontMethods for PlatformFont { FontStyle::NORMAL }; - let face = self.face.lock(); let os2_table = face.os2_table(); let weight = os2_table .as_ref() diff --git a/components/fonts/system_font_service.rs b/components/fonts/system_font_service.rs index 3b62d468671..ee5183104b7 100644 --- a/components/fonts/system_font_service.rs +++ b/components/fonts/system_font_service.rs @@ -14,7 +14,7 @@ use atomic_refcell::AtomicRefCell; use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; use log::debug; use malloc_size_of_derive::MallocSizeOf; -use parking_lot::{ReentrantMutex, RwLock}; +use parking_lot::{Mutex, RwLock}; use serde::{Deserialize, Serialize}; use servo_config::pref; use servo_url::ServoUrl; @@ -121,7 +121,7 @@ pub struct SystemFontServiceProxySender(pub IpcSender) impl SystemFontServiceProxySender { pub fn to_proxy(&self) -> SystemFontServiceProxy { SystemFontServiceProxy { - sender: ReentrantMutex::new(self.0.clone()), + sender: Mutex::new(self.0.clone()), templates: Default::default(), data_cache: Default::default(), } @@ -384,7 +384,7 @@ struct FontTemplateCacheKey { /// `FontContext` instances. #[derive(Debug)] pub struct SystemFontServiceProxy { - sender: ReentrantMutex>, + sender: Mutex>, templates: RwLock>>, data_cache: RwLock>>, }