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