diff --git a/crates/gpui/src/platform.rs b/crates/gpui/src/platform.rs index 7946a71d6d5eb5454ef728364a7400af34743e67..45de306ad25634e16f82ab0fe3d65d2da1201841 100644 --- a/crates/gpui/src/platform.rs +++ b/crates/gpui/src/platform.rs @@ -4,9 +4,6 @@ mod app_menu; mod keystroke; -#[cfg(not(target_os = "macos"))] -mod cosmic_text; - #[cfg(target_os = "linux")] mod linux; @@ -51,8 +48,6 @@ use uuid::Uuid; pub use app_menu::*; pub use keystroke::*; -#[cfg(not(target_os = "macos"))] -pub(crate) use cosmic_text::*; #[cfg(target_os = "linux")] pub(crate) use linux::*; #[cfg(target_os = "macos")] @@ -105,7 +100,6 @@ pub fn guess_compositor() -> &'static str { } } -// todo("windows") #[cfg(target_os = "windows")] pub(crate) fn current_platform(_headless: bool) -> Rc { Rc::new(WindowsPlatform::new()) @@ -413,8 +407,6 @@ pub(crate) trait PlatformTextSystem: Send + Sync { raster_bounds: Bounds, ) -> Result<(Size, Vec)>; fn layout_line(&self, text: &str, font_size: Pixels, runs: &[FontRun]) -> LineLayout; - #[cfg(target_os = "windows")] - fn destroy(&self); } #[derive(PartialEq, Eq, Hash, Clone)] diff --git a/crates/gpui/src/platform/cosmic_text.rs b/crates/gpui/src/platform/cosmic_text.rs deleted file mode 100644 index f7a54b65ba0012c6bce6042b9714f349c628b590..0000000000000000000000000000000000000000 --- a/crates/gpui/src/platform/cosmic_text.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod text_system; - -pub(crate) use text_system::*; diff --git a/crates/gpui/src/platform/linux.rs b/crates/gpui/src/platform/linux.rs index fe2f08296c52678727b1b0dfe76759fb342ec940..cfba4b4907a918fff3e7990ded95ea06510e7ee1 100644 --- a/crates/gpui/src/platform/linux.rs +++ b/crates/gpui/src/platform/linux.rs @@ -1,6 +1,7 @@ mod dispatcher; mod headless; mod platform; +mod text_system; mod wayland; mod x11; mod xdg_desktop_portal; @@ -8,5 +9,6 @@ mod xdg_desktop_portal; pub(crate) use dispatcher::*; pub(crate) use headless::*; pub(crate) use platform::*; +pub(crate) use text_system::*; pub(crate) use wayland::*; pub(crate) use x11::*; diff --git a/crates/gpui/src/platform/cosmic_text/text_system.rs b/crates/gpui/src/platform/linux/text_system.rs similarity index 99% rename from crates/gpui/src/platform/cosmic_text/text_system.rs rename to crates/gpui/src/platform/linux/text_system.rs index 07358048586398ddc42ced3099a851d3f2a4a683..dc7bf6ca5f9e17870b95a1659afffbd5d475324a 100644 --- a/crates/gpui/src/platform/cosmic_text/text_system.rs +++ b/crates/gpui/src/platform/linux/text_system.rs @@ -177,9 +177,6 @@ impl PlatformTextSystem for CosmicTextSystem { fn layout_line(&self, text: &str, font_size: Pixels, runs: &[FontRun]) -> LineLayout { self.0.write().layout_line(text, font_size, runs) } - - #[cfg(target_os = "windows")] - fn destroy(&self) {} } impl CosmicTextSystemState { diff --git a/crates/gpui/src/platform/test/platform.rs b/crates/gpui/src/platform/test/platform.rs index 0483953028b658aec88f9f6989201282af68549f..d26317f50e17e380d67692bf625536c9597b455a 100644 --- a/crates/gpui/src/platform/test/platform.rs +++ b/crates/gpui/src/platform/test/platform.rs @@ -49,7 +49,7 @@ impl TestPlatform { let text_system = Arc::new(crate::platform::mac::MacTextSystem::new()); #[cfg(target_os = "linux")] - let text_system = Arc::new(crate::platform::cosmic_text::CosmicTextSystem::new()); + let text_system = Arc::new(crate::platform::linux::CosmicTextSystem::new()); #[cfg(target_os = "windows")] let text_system = Arc::new(crate::platform::windows::DirectWriteTextSystem::new().unwrap()); diff --git a/crates/gpui/src/platform/windows/direct_write.rs b/crates/gpui/src/platform/windows/direct_write.rs index f721834c7c7b70e26a89e3871b303126f741c6fd..912dee7893416108d79b6040b88921428b413412 100644 --- a/crates/gpui/src/platform/windows/direct_write.rs +++ b/crates/gpui/src/platform/windows/direct_write.rs @@ -171,6 +171,11 @@ impl DirectWriteTextSystem { font_id_by_identifier: HashMap::default(), }))) } + + pub(crate) fn destroy(&self) { + let mut lock = self.0.write(); + unsafe { ManuallyDrop::drop(&mut lock.components.bitmap_factory) }; + } } impl PlatformTextSystem for DirectWriteTextSystem { @@ -239,11 +244,6 @@ impl PlatformTextSystem for DirectWriteTextSystem { ..Default::default() }) } - - fn destroy(&self) { - let mut lock = self.0.write(); - unsafe { ManuallyDrop::drop(&mut lock.components.bitmap_factory) }; - } } impl DirectWriteState { diff --git a/crates/gpui/src/platform/windows/platform.rs b/crates/gpui/src/platform/windows/platform.rs index 3b2f5095e2150a9fbe32e19b28e7158191735905..6dbe14ffedfe9990fc0f6c016062705dba5fb36c 100644 --- a/crates/gpui/src/platform/windows/platform.rs +++ b/crates/gpui/src/platform/windows/platform.rs @@ -49,7 +49,7 @@ pub(crate) struct WindowsPlatform { icon: HICON, background_executor: BackgroundExecutor, foreground_executor: ForegroundExecutor, - text_system: Arc, + text_system: Arc, clipboard_hash_format: u32, clipboard_metadata_format: u32, } @@ -90,13 +90,8 @@ impl WindowsPlatform { let dispatcher = Arc::new(WindowsDispatcher::new()); let background_executor = BackgroundExecutor::new(dispatcher.clone()); let foreground_executor = ForegroundExecutor::new(dispatcher); - let text_system = if let Some(direct_write) = DirectWriteTextSystem::new().log_err() { - log::info!("Using direct write text system."); - Arc::new(direct_write) as Arc - } else { - log::info!("Using cosmic text system."); - Arc::new(CosmicTextSystem::new()) as Arc - }; + let text_system = + Arc::new(DirectWriteTextSystem::new().expect("Error creating DirectWriteTextSystem")); let icon = load_icon().unwrap_or_default(); let state = RefCell::new(WindowsPlatformState::new()); let raw_window_handles = RwLock::new(SmallVec::new());