As reported in #451, with the Mac server, sleeping and resuming (on the
server) causes the mouse speed to double on the client upon resume.
Fix by removing the CFRunLoopSource from the run loop on screen disable
before releasing it. CFRunLoopAddSource in enable() retains the
CFRunLoopSource, so even though the source is released in disable(), the
run loop still has a copy. When the server comes out of sleep and the
screen is enable()'d, another event tap and run loop source are created
and added to the run loop, so the callback is now being called twice for
every mouse movement, and so on for every additional time the server
sleeps.
This is a better approach than the fix in 267f3ac41f, because although
that fixes the issue by disabling the event tap before the event tap and
run loop source are released, a memory leak still occurs since they are
retained by the run loop.
Additional references on the behavior of CFRunLoopAddSource:
https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFRunLoopRef/index.html#//apple_ref/c/func/CFRunLoopAddSourcehttp://www.cocoabuilder.com/archive/cocoa/242438-trouble-with-event-taps.html
This patch corrects issues with double click and adds triple click to
MacOSX. Double click was functioning but double clicking and then
dragging would not work.
This patch corrects issues with double click and adds triple click to
MacOSX. Double click was functioning but double clicking and then
dragging would not work.
This patch brings full 64-bit compatibility to Synergy on OS X by
replacing all obsolete 32-bit only Carbon functions with modern
equivalents. All functions introduced have been available since 10.4 so
this won't affect the minimum deployment target. Specifically:
Creating an empty CGEvent and getting its location is behaviourally
identical to GetGlobalMouse, and yes, both are in flipped coordinates.
This was tested with a multi-monitor configuration as well.
TrackMouseLocationWithOptions is behaviourally identical to
GetGlobalMouse in these cases because the timeout was 0 and none of the
other out params were used, except for the MouseTrackingResult in one
call was checked against kMouseTrackingTimedOut. Since the timeout was 0
and not kEventDurationForever, that value never could have been returned
anyway.
Instead of attempting to define SIntXX and UIntXX manually, MacTypes.h
is included on OS X. These types were wrong in 64-bit mode because of
this, causing type redefinition errors.
- renamed some functions for file drag/drop to be more similar to existing
- improved log messages for the library loader
- removed hack that blocked .exe and .lnk files (annoying for developers)
- removed hack that always clears dragging filename (not very robust)
- reordered includes to prevent accidental dependencies.
- moved arch specific files into their own folder (easier to include with cmake).
- renamed non-class files to reflect new code style (lower case with underscores).
- using full relative paths for includes (easier for understanding dependencies).
- using #pragma once instead of classic-style header guards.