{
if (manual)
{
- if (MouseEventTap != IntPtr.Zero)
- {
- CF.CFRelease(MouseEventTap);
- MouseEventTap = IntPtr.Zero;
- }
if (MouseEventTapSource != IntPtr.Zero)
{
+ // Note: releasing the mach port (tap source)
+ // automatically releases the event tap.
+ CF.RunLoopRemoveSource(RunLoop, MouseEventTapSource, CF.RunLoopModeDefault);
CF.CFRelease(MouseEventTapSource);
MouseEventTapSource = IntPtr.Zero;
}
CFRunLoopRef rl,
CFRunLoopSourceRef source,
CFStringRef mode);
+
+ [DllImport(appServices, EntryPoint = "CFRunLoopRemoveSource")]
+ internal static extern void RunLoopRemoveSource(
+ CFRunLoopRef rl,
+ CFRunLoopSourceRef source,
+ CFStringRef mode);
}
}