aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/api/cocoa/mod.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/api/cocoa/mod.rs b/src/api/cocoa/mod.rs
index 08fabdd..bec56d2 100644
--- a/src/api/cocoa/mod.rs
+++ b/src/api/cocoa/mod.rs
@@ -224,12 +224,16 @@ impl<'a> Iterator for PollEventsIterator<'a> {
let event: Option<Event>;
unsafe {
+ let pool = NSAutoreleasePool::new(nil);
+
let nsevent = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_(
NSAnyEventMask.bits() | NSEventMaskPressure.bits(),
NSDate::distantPast(nil),
NSDefaultRunLoopMode,
YES);
event = NSEventToEvent(self.window, nsevent);
+
+ let _: () = msg_send![pool, release];
}
event
}
@@ -249,12 +253,16 @@ impl<'a> Iterator for WaitEventsIterator<'a> {
let event: Option<Event>;
unsafe {
+ let pool = NSAutoreleasePool::new(nil);
+
let nsevent = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_(
NSAnyEventMask.bits() | NSEventMaskPressure.bits(),
NSDate::distantFuture(nil),
NSDefaultRunLoopMode,
YES);
event = NSEventToEvent(self.window, nsevent);
+
+ let _: () = msg_send![pool, release];
}
if event.is_none() {
@@ -749,7 +757,11 @@ impl GlContext for Window {
#[inline]
fn swap_buffers(&self) -> Result<(), ContextError> {
- unsafe { self.context.flushBuffer(); }
+ unsafe {
+ let pool = NSAutoreleasePool::new(nil);
+ self.context.flushBuffer();
+ let _: () = msg_send![pool, release];
+ }
Ok(())
}