Make sure reports are only sent from one thread

This commit is contained in:
Lior Halphon 2020-05-30 18:43:09 +03:00
parent 4d91081046
commit 59b94b92ca
1 changed files with 8 additions and 4 deletions

View File

@ -115,7 +115,7 @@
[NSCursor unhide]; [NSCursor unhide];
} }
[[NSNotificationCenter defaultCenter] removeObserver:self]; [[NSNotificationCenter defaultCenter] removeObserver:self];
[lastController setRumbleAmplitude:0]; [self setRumble:0];
[JOYController unregisterListener:self]; [JOYController unregisterListener:self];
} }
- (instancetype)initWithCoder:(NSCoder *)coder - (instancetype)initWithCoder:(NSCoder *)coder
@ -272,7 +272,9 @@
- (void)setRumble:(double)amp - (void)setRumble:(double)amp
{ {
[lastController setRumbleAmplitude:amp]; dispatch_async(dispatch_get_main_queue(), ^{
[lastController setRumbleAmplitude:amp];
});
} }
- (void)controller:(JOYController *)controller movedAxis:(JOYAxis *)axis - (void)controller:(JOYController *)controller movedAxis:(JOYAxis *)axis
@ -301,7 +303,7 @@
{ {
if (![self.window isMainWindow]) return; if (![self.window isMainWindow]) return;
if (controller != lastController) { if (controller != lastController) {
[lastController setRumbleAmplitude:0]; [self setRumble:0];
lastController = controller; lastController = controller;
} }
@ -319,7 +321,9 @@
![preferred_joypad isEqualToString:controller.uniqueID]) { ![preferred_joypad isEqualToString:controller.uniqueID]) {
continue; continue;
} }
[controller setPlayerLEDs:1 << player]; dispatch_async(dispatch_get_main_queue(), ^{
[controller setPlayerLEDs:1 << player];
});
NSDictionary *mapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"JoyKitInstanceMapping"][controller.uniqueID]; NSDictionary *mapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"JoyKitInstanceMapping"][controller.uniqueID];
if (!mapping) { if (!mapping) {
mapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"JoyKitNameMapping"][controller.deviceName]; mapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"JoyKitNameMapping"][controller.deviceName];