diff --git a/VoidLink/Input/ControllerSupport.m b/VoidLink/Input/ControllerSupport.m index cae6359f..6944c746 100644 --- a/VoidLink/Input/ControllerSupport.m +++ b/VoidLink/Input/ControllerSupport.m @@ -162,7 +162,7 @@ static void ApplyAdaptiveTriggerEffect(GCDualSenseAdaptiveTrigger* trigger, { #if !TARGET_OS_TV if (controller.hardware == ControllerHardwareG8PlusMFi) { - NSLog(@"[G8Rumble] route native rumble low=%hu high=%hu", lowFreqMotor, highFreqMotor); + // NSLog(@"[G8Rumble] route native rumble low=%hu high=%hu", lowFreqMotor, highFreqMotor); [_gameSirG8MFiRumbler setLowFrequencyMotor:lowFreqMotor highFrequencyMotor:highFreqMotor]; return; } @@ -191,12 +191,14 @@ static void ApplyAdaptiveTriggerEffect(GCDualSenseAdaptiveTrigger* trigger, return; } + /* NSLog(@"[G8Rumble] rumble request controller=%hu low=%hu high=%hu preference=%ld vendor=%@", controllerNumber, lowFreqMotor, highFreqMotor, (long)preference, voidController.gamepad.vendorName); + */ // physical controller connected: switch (preference) { diff --git a/VoidLink/Utility/PublicExtensions.swift b/VoidLink/Utility/PublicExtensions.swift index 1532038f..70ae8b95 100644 --- a/VoidLink/Utility/PublicExtensions.swift +++ b/VoidLink/Utility/PublicExtensions.swift @@ -192,6 +192,10 @@ public extension UISegmentedControl { } private func storePreviousSelectedSegmentIndex(_ value: Int) { + guard canStorePreviousSelectedSegmentIndex(value) else { + return + } + objc_setAssociatedObject( self, &previousSelectedSegmentIndexKey, @@ -200,6 +204,16 @@ public extension UISegmentedControl { ) } + private func canStorePreviousSelectedSegmentIndex(_ value: Int) -> Bool { + guard value != UISegmentedControl.noSegment else { + return true + } + guard value >= 0 && value < numberOfSegments else { + return false + } + return isEnabledForSegment(at: value) + } + private func storeLastKnownSelectedSegmentIndex(_ value: Int) { objc_setAssociatedObject( self, diff --git a/VoidLink/ViewControllers/MainFrameViewController.m b/VoidLink/ViewControllers/MainFrameViewController.m index b49165f1..9252d3fc 100644 --- a/VoidLink/ViewControllers/MainFrameViewController.m +++ b/VoidLink/ViewControllers/MainFrameViewController.m @@ -1402,8 +1402,13 @@ static NSMutableSet* hostList; // Enable frame pacing mode selector only if not in stream view AND not in performance mode BOOL shouldEnableFrameQueueSettings = !_settingsExpandedInStreamView && (self.settingsViewController.renderingBackendSelector.selectedSegmentIndex != RENDER_METAL); // [self.settingsViewController.framePacingModeSelector setEnabled:shouldEnableFrameQueueSettings]; - [self.settingsViewController.framePacingModeSelector setEnabled:!_settingsExpandedInStreamView forSegmentAtIndex:FramePacingModeOff]; - [self.settingsViewController.framePacingModeSelector setEnabled:!_settingsExpandedInStreamView forSegmentAtIndex:FramePacingModeLegacy]; + + if(self.settingsViewController.framePacingModeSelector.selectedSegmentIndex != FramePacingModeOff + && self.settingsViewController.framePacingModeSelector.selectedSegmentIndex != FramePacingModeLegacy) { + [self.settingsViewController.framePacingModeSelector setEnabled:!_settingsExpandedInStreamView forSegmentAtIndex:FramePacingModeOff]; + [self.settingsViewController.framePacingModeSelector setEnabled:!_settingsExpandedInStreamView forSegmentAtIndex:FramePacingModeLegacy]; + } + else [self.settingsViewController.framePacingModeSelector setEnabled:!_settingsExpandedInStreamView]; if(FrameInterpolator.deviceSupportsInterpolation){ [self.settingsViewController.framePacingModeSelector setEnabled:_settingsViewController.framerateSelector.selectedSegmentIndex != _settingsViewController.framerateSelector.numberOfSegments-1