From 951b7bcfb01f0de3bf8c447aa75c95fe25c20aee Mon Sep 17 00:00:00 2001 From: Acaki Date: Mon, 11 Aug 2025 20:54:16 +0800 Subject: [PATCH] refactor: disable pip toggle when metal renderer is used as it's not supported --- .../ViewControllers/SettingsViewController.m | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/VoidLink/ViewControllers/SettingsViewController.m b/VoidLink/ViewControllers/SettingsViewController.m index f6e770b9..47385be8 100644 --- a/VoidLink/ViewControllers/SettingsViewController.m +++ b/VoidLink/ViewControllers/SettingsViewController.m @@ -13,6 +13,7 @@ #import "TemporarySettings.h" #import "DataManager.h" #import "ThemeManager.h" +#import "Plot.h" #import #import @@ -1396,6 +1397,8 @@ BOOL isCustomResolution(int resolutionSelected) { NSInteger renderingBackend = [currentSettings.renderingBackend integerValue]; [self.renderingBackendSelector setSelectedSegmentIndex:renderingBackend]; + [self.renderingBackendSelector addTarget:self action:@selector(renderingBackendChanged:) forControlEvents:UIControlEventValueChanged]; + [self renderingBackendChanged:self.renderingBackendSelector]; // Update PiP state based on current selection [self.citrixX1MouseSwitch setOn:currentSettings.btMouseSupport]; [self.optimizeGamesSwitch setOn: currentSettings.optimizeGames]; @@ -1627,6 +1630,23 @@ BOOL isCustomResolution(int resolutionSelected) { } } +- (void)renderingBackendChanged:(UISegmentedControl *)sender { + // Disable PiP toggle when Metal renderer (index 0) is selected + if (sender.selectedSegmentIndex == RENDER_METAL) { + // Metal renderer selected - disable PiP + [self.pipSwitch setOn:NO animated:YES]; + [self.pipSwitch setEnabled:NO]; + } else { + // Other renderers - enable PiP toggle if iOS 15+ + if (@available(iOS 15.0, *)) { + [self.pipSwitch setEnabled:YES]; + } else { + [self.pipSwitch setOn:NO]; + [self.pipSwitch setEnabled:NO]; + } + } +} + - (void)onScreenWidgetChanged{ BOOL isIPhone = ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone);