From 8c61a3150b3696c96009c05b4d5e0807ee153182 Mon Sep 17 00:00:00 2001 From: kossLAN Date: Fri, 29 May 2026 21:06:28 -0400 Subject: [PATCH] metal: split copy device holder --- src/backends/metal/video.rs | 33 ++----------------------- src/backends/metal/video/copy_device.rs | 33 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 31 deletions(-) create mode 100644 src/backends/metal/video/copy_device.rs diff --git a/src/backends/metal/video.rs b/src/backends/metal/video.rs index 4e1d3a59..2d8c5365 100644 --- a/src/backends/metal/video.rs +++ b/src/backends/metal/video.rs @@ -1,9 +1,11 @@ +mod copy_device; mod hardware_cursor; mod lease; mod properties; #[allow(unused_imports)] pub use { + copy_device::CopyDeviceHolder, hardware_cursor::{MetalHardwareCursor, MetalHardwareCursorChange}, lease::{MetalLease, MetalLeaseData}, properties::{DefaultProperty, TypedProperty}, @@ -99,17 +101,6 @@ pub struct MetalRenderContext { pub copy_device: Rc, } -pub struct CopyDeviceHolder { - pub registry: Rc, - pub devnum: dev_t, - pub dev: OnceCell>>, -} - -impl Debug for CopyDeviceHolder { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - f.debug_struct("CopyDeviceHolder").finish_non_exhaustive() - } -} pub struct MetalDrmDevice { pub backend: Rc, @@ -2447,23 +2438,3 @@ impl MetalBackend { connector.schedule_present(); } } - -impl CopyDeviceHolder { - pub fn get(&self) -> Option> { - self.dev - .get_or_init( - || match self.registry.get(self.devnum)?.create_device().map(Some) { - Ok(d) => d, - Err(e) => { - log::error!( - "Could not get copy device for {}: {}", - self.devnum, - ErrorFmt(e), - ); - None - } - }, - ) - .clone() - } -} diff --git a/src/backends/metal/video/copy_device.rs b/src/backends/metal/video/copy_device.rs new file mode 100644 index 00000000..09d75824 --- /dev/null +++ b/src/backends/metal/video/copy_device.rs @@ -0,0 +1,33 @@ +use super::*; + +pub struct CopyDeviceHolder { + pub registry: Rc, + pub devnum: dev_t, + pub dev: OnceCell>>, +} + +impl Debug for CopyDeviceHolder { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + f.debug_struct("CopyDeviceHolder").finish_non_exhaustive() + } +} + +impl CopyDeviceHolder { + pub fn get(&self) -> Option> { + self.dev + .get_or_init( + || match self.registry.get(self.devnum)?.create_device().map(Some) { + Ok(d) => d, + Err(e) => { + log::error!( + "Could not get copy device for {}: {}", + self.devnum, + ErrorFmt(e), + ); + None + } + }, + ) + .clone() + } +}