Merge pull request #733 from fkaa/cocoa-memleak

Fix memory leak while creating NSEvent and swapping buffers (Fixes #514)
This commit is contained in:
Paul Rouget 2016-03-17 03:08:47 +01:00
commit a3543b700f

View file

@ -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(())
}