fix: built-in gyro not working when resuming stream
This commit is contained in:
1 parent
994a60c8a4
commit
0047bfe51f
1 file changed
+20
-12
@@ -1588,25 +1588,33 @@ static const double MOUSE_SPEED_DIVISOR = 1.25;
|
|||||||
|
|
||||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),
|
||||||
dispatch_get_main_queue(), ^{
|
dispatch_get_main_queue(), ^{
|
||||||
|
// Stop all existing timers to ensure a clean state.
|
||||||
|
[self stopTimerForAllControllers];
|
||||||
|
|
||||||
|
// Read the user's final setting from the stream configuration.
|
||||||
self->_gyroMode = self->_streamConfig.gyroMode;
|
self->_gyroMode = self->_streamConfig.gyroMode;
|
||||||
|
|
||||||
switch (self->_gyroMode) {
|
switch (self->_gyroMode) {
|
||||||
case AlwaysController:
|
case AlwaysController:
|
||||||
[self stopTimerForAllControllers];
|
for (VoidController* voidController in self->_voidControllers.allValues) {
|
||||||
for(VoidController* voidController in self->_voidControllers.allValues) [self updateTimerStateForController:voidController];
|
[self updateTimerStateForController:voidController];
|
||||||
break;
|
|
||||||
case GyroModeAuto:
|
|
||||||
if(self->_voidControllers.count == 0) [self assignControllers];
|
|
||||||
if(self->_voidControllers.count == 0 || ![self externalControllersHaveGyro]) nil;
|
|
||||||
else{
|
|
||||||
[self stopTimerForAllControllers];
|
|
||||||
for(VoidController* voidController in self->_voidControllers.allValues) [self updateTimerStateForController:voidController];
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GyroModeOff:
|
case GyroModeAuto:
|
||||||
[self stopTimerForAllControllers];
|
if ([self externalControllersHaveGyro]) {
|
||||||
|
for (VoidController* voidController in self->_voidControllers.allValues) {
|
||||||
|
[self updateTimerStateForController:voidController];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
[self updateTimerStateForController:self->_oscController];
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
|
case AlwaysDevice:
|
||||||
|
[self updateTimerStateForController:self->_oscController];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GyroModeOff:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in new issue
Block a user