From b10f1efc48343fc5590127ec6d890ffbb8b5bd02 Mon Sep 17 00:00:00 2001 From: Xiaopeng Li Date: Sat, 10 Aug 2024 00:48:56 +0800 Subject: [PATCH] Retain calayer after creation (#546) * Retain calayer after creation * Fix fmt * fix create_calayer test --- cocoa/src/quartzcore.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cocoa/src/quartzcore.rs b/cocoa/src/quartzcore.rs index 649384d..65bfa68 100644 --- a/cocoa/src/quartzcore.rs +++ b/cocoa/src/quartzcore.rs @@ -65,7 +65,11 @@ impl CALayer { #[inline] pub fn new() -> CALayer { - unsafe { CALayer(msg_send![class!(CALayer), layer]) } + unsafe { + let id: id = msg_send![class!(CALayer), layer]; + let _: id = msg_send![id, retain]; + CALayer(id) + } } #[inline] @@ -1680,3 +1684,15 @@ pub type CVSMPTETimeFlags = u32; pub const kCVSMPTETimeValid: CVSMPTETimeFlags = 1 << 0; pub const kCVSMPTETimeRunning: CVSMPTETimeFlags = 1 << 1; + +#[cfg(test)] +mod test { + use super::CALayer; + + #[test] + fn create_calayer() { + objc::rc::autoreleasepool(|| { + let _ = CALayer::new(); + }); + } +}