diff --git a/CHANGELOG.md b/CHANGELOG.md index e428fbbe..ef5e9fd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - On X11, fix `ResumeTimeReached` being fired too early. - On Web, replaced zero timeout for `ControlFlow::Poll` with `requestAnimationFrame` - On Web, fix a possible panic during event handling +- On macOS, fix `EventLoopProxy` leaking memory for every instance. # 0.22.0 (2020-03-09) diff --git a/src/platform_impl/macos/event_loop.rs b/src/platform_impl/macos/event_loop.rs index cc3d3928..01437b84 100644 --- a/src/platform_impl/macos/event_loop.rs +++ b/src/platform_impl/macos/event_loop.rs @@ -117,6 +117,14 @@ pub struct Proxy { unsafe impl Send for Proxy {} +impl Drop for Proxy { + fn drop(&mut self) { + unsafe { + CFRelease(self.source as _); + } + } +} + impl Clone for Proxy { fn clone(&self) -> Self { Proxy::new(self.sender.clone())