Skip to content

Commit

Permalink
[Impeller] Disable the wide gamut settings flag on iOS simulators (#4…
Browse files Browse the repository at this point in the history
…2331)

Wide gamut is not supported on the iOS simulator, and the iOS platform's FlutterView.isWideGamutSupported checked for this.  However, the ImageDecoder decides whether to enable wide gamut based on the engine's settings, so the flag in the settings needs to be modified for the simulator.
  • Loading branch information
jason-simmons committed May 26, 2023
1 parent f4dc96a commit 593d4d6
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,15 @@
settings.domain_network_policy = "";

// Whether to enable wide gamut colors.
#if TARGET_OS_SIMULATOR
// As of Xcode 14.1, the wide gamut surface pixel formats are not supported by
// the simulator.
settings.enable_wide_gamut = false;
#else
NSNumber* nsEnableWideGamut = [mainBundle objectForInfoDictionaryKey:@"FLTEnableWideGamut"];
BOOL enableWideGamut = nsEnableWideGamut ? nsEnableWideGamut.boolValue : YES;
settings.enable_wide_gamut = enableWideGamut;
#endif

// TODO(dnfield): We should reverse the order for all these settings so that command line options
// are preferred to plist settings. https://github.com/flutter/flutter/issues/124049
Expand Down
8 changes: 1 addition & 7 deletions shell/platform/darwin/ios/framework/Source/FlutterView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,6 @@ - (UIScreen*)screen {
}

- (BOOL)isWideGamutSupported {
#if TARGET_OS_SIMULATOR
// As of Xcode 14.1, the wide gamut surface pixel formats are not supported by
// the simulator.
return NO;
#endif

if (![_delegate isUsingImpeller]) {
return NO;
}
Expand All @@ -74,7 +68,7 @@ - (instancetype)initWithDelegate:(id<FlutterViewEngineDelegate>)delegate
if (self) {
_delegate = delegate;
_isWideGamutEnabled = isWideGamutEnabled;
if (_isWideGamutEnabled && self.isWideGamutSupported) {
if (_isWideGamutEnabled && !self.isWideGamutSupported) {
FML_DLOG(WARNING) << "Rendering wide gamut colors is turned on but isn't "
"supported, downgrading the color gamut to sRGB.";
}
Expand Down

0 comments on commit 593d4d6

Please sign in to comment.