Mac: Fix mouse tap on 10.5.
There's no Block support in the runtime on 10.5, so the old code wouldn't work.
This commit is contained in:
parent
f43141b289
commit
4f1c2fd2c3
1 changed files with 11 additions and 4 deletions
|
@ -131,6 +131,12 @@ Cocoa_MouseTapCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
SemaphorePostCallback(CFRunLoopTimerRef timer, void *info)
|
||||||
|
{
|
||||||
|
SDL_SemPost((SDL_sem*)info);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
Cocoa_MouseTapThread(void *data)
|
Cocoa_MouseTapThread(void *data)
|
||||||
{
|
{
|
||||||
|
@ -163,10 +169,11 @@ Cocoa_MouseTapThread(void *data)
|
||||||
|
|
||||||
tapdata->runloop = CFRunLoopGetCurrent();
|
tapdata->runloop = CFRunLoopGetCurrent();
|
||||||
CFRunLoopAddSource(tapdata->runloop, tapdata->runloopSource, kCFRunLoopCommonModes);
|
CFRunLoopAddSource(tapdata->runloop, tapdata->runloopSource, kCFRunLoopCommonModes);
|
||||||
CFRunLoopPerformBlock(tapdata->runloop, kCFRunLoopCommonModes, ^{
|
CFRunLoopTimerContext context = {.info = tapdata->runloopStartedSemaphore};
|
||||||
/* We signal this *after* the run loop has started, indicating it's safe to CFRunLoopStop it. */
|
/* We signal the runloop started semaphore *after* the run loop has started, indicating it's safe to CFRunLoopStop it. */
|
||||||
SDL_SemPost(tapdata->runloopStartedSemaphore);
|
CFRunLoopTimerRef timer = CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent(), 0, 0, 0, &SemaphorePostCallback, &context);
|
||||||
});
|
CFRunLoopAddTimer(tapdata->runloop, timer, kCFRunLoopCommonModes);
|
||||||
|
CFRelease(timer);
|
||||||
|
|
||||||
/* Run the event loop to handle events in the event tap. */
|
/* Run the event loop to handle events in the event tap. */
|
||||||
CFRunLoopRun();
|
CFRunLoopRun();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue