X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJDeviceController.m;fp=Classes%2FNJDeviceController.m;h=bdd1bbf9e0c21f382f861c97bf9ec95c0877b3e7;hp=000df5f60a4f4d6be91dd8f1e391b02bc2423de7;hb=e7c0b2d96e9e3209b5ba80cc1fdc8e7213cb5302;hpb=5bf06d6aca4bf51b0a347021d69c90dd198c7cf8 diff --git a/Classes/NJDeviceController.m b/Classes/NJDeviceController.m index 000df5f..bdd1bbf 100644 --- a/Classes/NJDeviceController.m +++ b/Classes/NJDeviceController.m @@ -117,22 +117,27 @@ } } -- (void)hidManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device { - NJDevice *match = [[NJDevice alloc] initWithDevice:device]; - match.index = 1; +- (void)addDevice:(NJDevice *)device { BOOL available; do { available = YES; for (NJDevice *used in _devices) { - if ([used isEqual:match]) { - match.index += 1; + if ([used isEqual:device]) { + device.index += 1; available = NO; } } } while (!available); + + [_devices addObject:device]; +} - [_devices addObject:match]; +- (void)hidManager:(NJHIDManager *)manager deviceAdded:(IOHIDDeviceRef)device { + NJDevice *match = [[NJDevice alloc] initWithDevice:device]; + [devicesViewController beginUpdates]; + [self addDevice:match]; [devicesViewController addedDevice:match atIndex:_devices.count - 1]; + [devicesViewController endUpdates]; } - (NJDevice *)findDeviceByRef:(IOHIDDeviceRef)device { @@ -147,8 +152,10 @@ IOHIDDeviceRegisterInputValueCallback(device, NULL, NULL); if (match) { NSInteger idx = [_devices indexOfObjectIdenticalTo:match]; + [devicesViewController beginUpdates]; [_devices removeObjectAtIndex:idx]; [devicesViewController removedDevice:match atIndex:idx]; + [devicesViewController endUpdates]; } }