From f4d51451fac0df9a5c7bf070d35166ac62ed01e8 Mon Sep 17 00:00:00 2001 From: Xiaopeng Li Date: Fri, 26 Nov 2021 00:23:26 +0800 Subject: [PATCH] Unique HalManagedMetalLayerDelegate class (#2209) * Unique HalManagedMetalLayerDelegate class * Remove once-cell dependency --- wgpu-hal/src/metal/surface.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/wgpu-hal/src/metal/surface.rs b/wgpu-hal/src/metal/surface.rs index b0a9ad998c..823b37ca2a 100644 --- a/wgpu-hal/src/metal/surface.rs +++ b/wgpu-hal/src/metal/surface.rs @@ -31,7 +31,6 @@ extern "C" fn layer_should_inherit_contents_scale_from_window( YES } -const CAML_DELEGATE_CLASS: &str = "HalManagedMetalLayerDelegate"; static CAML_DELEGATE_REGISTER: Once = Once::new(); #[derive(Debug)] @@ -39,9 +38,11 @@ pub struct HalManagedMetalLayerDelegate(&'static Class); impl HalManagedMetalLayerDelegate { pub fn new() -> Self { + let class_name = format!("HalManagedMetalLayerDelegate@{:p}", &CAML_DELEGATE_REGISTER); + CAML_DELEGATE_REGISTER.call_once(|| { type Fun = extern "C" fn(&Class, Sel, *mut Object, CGFloat, *mut Object) -> BOOL; - let mut decl = ClassDecl::new(CAML_DELEGATE_CLASS, class!(NSObject)).unwrap(); + let mut decl = ClassDecl::new(&class_name, class!(NSObject)).unwrap(); #[allow(trivial_casts)] // false positive unsafe { decl.add_class_method( @@ -51,7 +52,7 @@ impl HalManagedMetalLayerDelegate { } decl.register(); }); - Self(Class::get(CAML_DELEGATE_CLASS).unwrap()) + Self(Class::get(&class_name).unwrap()) } }