[PATCH v3 1/7] winebus.sys: Add OS/X IOHID bus

Ken Thomases ken at codeweavers.com
Mon Nov 7 13:15:56 CST 2016


On Nov 7, 2016, at 10:00 AM, Sebastian Lackner <sebastian at fds-team.de> wrote:
> 
> On 04.11.2016 13:45, Aric Stewart wrote:
>> v2: remove Unload code as it will never be triggered
>> v3: Suggestions from Ken Thomases
>>    Merge Implement adding IOHID devices into this patch
>> 
>> Signed-off-by: Aric Stewart <aric at codeweavers.com>
>> ---
>> dlls/winebus.sys/Makefile.in |   3 +-
>> dlls/winebus.sys/bus.h       |   1 +
>> dlls/winebus.sys/bus_iohid.c | 255 +++++++++++++++++++++++++++++++++++++++++++
>> dlls/winebus.sys/main.c      |   3 +
>> 4 files changed, 261 insertions(+), 1 deletion(-)
>> create mode 100644 dlls/winebus.sys/bus_iohid.c
>> 

>> +    IOHIDManagerScheduleWithRunLoop(hid_manager, run_loop, kCFRunLoopDefaultMode);
>> +    if (IOHIDManagerOpen( hid_manager, 0 ) != kIOReturnSuccess)
>> +    {
>> +        ERR("Couldn't open IOHIDManager.\n");
>> +        IOHIDManagerUnscheduleFromRunLoop(hid_manager, run_loop, kCFRunLoopDefaultMode);
>> +        CFRelease(hid_manager);
>> +        return 0;
>> +    }
>> +
>> +    CFRunLoopRun();
>> +    TRACE("Run Loop exiting\n");
>> +
>> +    IOHIDManagerRegisterDeviceMatchingCallback(hid_manager, NULL, NULL);
>> +    IOHIDManagerUnscheduleFromRunLoop(hid_manager, run_loop, kCFRunLoopDefaultMode);
> 
> Can you be sure that run_loop is still valid here?

The run loop is still valid.  It's a permanent property of the thread.  Running a run loop is a transient thing you can do with it.  It still exists after a given run is stopped.  (It could be run again.  Running a run loop can be nested.  Etc.)

-Ken




More information about the wine-devel mailing list