CFRunLoopRunInMode está saliendo con el código 1, como si no se hubiera agregado nada
He creado un CGEventTap como este:
GetCurrentProcess(psn);
var mask = 1 << kCGEventLeftMouseDown | // CGEventMaskBit(kCGEventLeftMouseDown)
1 << kCGEventLeftMouseUp |
1 << kCGEventRightMouseDown |
1 << kCGEventRightMouseUp |
1 << kCGEventOtherMouseDown |
1 << kCGEventOtherMouseUp |
1 << kCGEventScrollWheel;
mouseEventTap = CGEventTapCreateForPSN(&psn, kCGHeadInsertEventTap, kCGEventTapOptionDefault, mask, null);
if (!mouseEventTap.isNull()) {
aRLS = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, mouseEventTap, 0);
CFRelease(mouseEventTap);
if (!aRLS.isNull()) {
aLoop = CFRunLoopGetCurrent();
CFRunLoopAddSource(aLoop, aRLS, kCFRunLoopCommonModes);
CFRelease(aRLS);
CFRelease(aLoop);
rez = CFRunLoopRunInMode(ostypes.CONST.kCFRunLoopCommonModes, 10, false); // figure out how to make this run indefinitely
// rez is 1 :(
}
}
MiCFRunLoopRun
sale inmediatamente, en lugar de ejecutarse durante 10 segundos. Y dice que el código es 1, lo que significa que no hay fuentes en ese modo. Pero claramente hice unCFRunLoopAddSource
a la opción de modos comuneskCFRunLoopRunFinished. The run loop mode mode has no sources or timers.
. Alguien sabe lo que pasa? Esto está en hilo no principal.