Remove most usage of ReentrantMutex in font code (#33746)

* Remove unnecessary ReentrantMutex usage for senders.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Remove double lock for freetype face.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
Josh Matthews 2024-10-10 12:55:19 -04:00 committed by GitHub
parent a591778a25
commit 6b3a316e1b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 8 additions and 9 deletions

View file

@ -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<SystemFontServiceProxy>,
resource_threads: ReentrantMutex<CoreResourceThread>,
resource_threads: Mutex<CoreResourceThread>,
/// A sender that can send messages and receive replies from the compositor.
compositor_api: ReentrantMutex<CrossProcessCompositorApi>,
compositor_api: Mutex<CrossProcessCompositorApi>,
/// 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()),

View file

@ -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()

View file

@ -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<SystemFontServiceMessage>)
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<IpcSender<SystemFontServiceMessage>>,
sender: Mutex<IpcSender<SystemFontServiceMessage>>,
templates: RwLock<HashMap<FontTemplateCacheKey, Vec<FontTemplateRef>>>,
data_cache: RwLock<HashMap<FontIdentifier, Arc<FontData>>>,
}