HID Сообщить о обратном вызове в другом runLoop - PullRequest
3 голосов
/ 11 февраля 2012

Я запланировал HIDManager в главном потоке (runLoop), используя IOHIDManagerScheduleWithRunLoop.Итак, я получаю обратные вызовы для сопоставления и удаления устройства в главном потоке.

Но я запланировал устройство IOHIDDeviceScheduleWithRunLoop в другом потоке, скажем Thread-1.Согласно документации, когда я устанавливаю отчет, я должен получить обратный вызов в Run-цикле Thread-1.

IOHIDDeviceScheduleWithRunLoop (inIOHIDDeviceRef, CFRunLoopGetCurrent (), kCFRunLoopDefaultMode);

Но я получаю обратный вызов HIDReport в главном потоке.Любая помощь?

ОБНОВЛЕНИЕ:

Я вижу, что вызывается обратный вызов отчета, даже если я удалил IOHIDDeviceScheduleWithRunLoop.Обратный вызов отчета должен вызываться на устройстве RunLoop.

В соответствии с документацией IOHIDManagerScheduleWithRunLoop: «Это формально связывает HID Manager с циклом выполнения клиента. Это расписание будет распространяться на все устройства HID, перечисленные в данный момент.и новым устройствам HID, поскольку они сопоставляются с помощью диспетчера HID "

Это следует использовать только для сопоставления и удаления, но я получаю и входные отчеты.

1 Ответ

0 голосов
/ 11 февраля 2012

У вас есть runloop в потоке-1? Если это приложение командной строки, вы должны явно запустить цикл выполнения (вызвав, например, CFRunLoopRun ())

...