Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a6745e9 authored by wangn's avatar wangn Committed by Kriti Dang
Browse files

[HDR]:UserDisabledHdrTypes is not updated after system reboot



After system boots,the UserDisabledHdrTypes also needs to be updated
in the display information.

Bug:265724287

Test: Prepare a HDR/DolbyVision TV which supports DolbyVision/HDR10/HLG.
1.Connect the STB to the TV.
2.On UI Settings -> Device Preferences -> Display & Sound -> Advanced
  Display settings -> Format Selection,choose manual,disable DolbyVision
  format and keep HDR10/HLG formats enabled.
3.Reboot STB ,Check 2) , it is same as previous saved result.
4.Open Netflix, search DolbyVision contents movie and check the format.
  It should only list HDR contents, no DolbyVision contents.

Change-Id: I4c38532ad973a85c289796a9372413bd5491ca26
Signed-off-by: default avatarwangn <nan.wang@vantiva.net>
parent 6964ec7b
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -845,6 +845,15 @@ public final class DisplayManagerService extends SystemService {
                for (int i = 0; i < userDisabledHdrTypeStrings.length; i++) {
                    mUserDisabledHdrTypes[i] = Integer.parseInt(userDisabledHdrTypeStrings[i]);
                }

                if (!mAreUserDisabledHdrTypesAllowed) {
                    mLogicalDisplayMapper.forEachLocked(
                            display -> {
                                display.setUserDisabledHdrTypes(mUserDisabledHdrTypes);
                                handleLogicalDisplayChangedLocked(display);
                            });
                }

            } catch (NumberFormatException e) {
                Slog.e(TAG, "Failed to parse USER_DISABLED_HDR_FORMATS. "
                        + "Clearing the setting.", e);
@@ -872,6 +881,15 @@ public final class DisplayManagerService extends SystemService {
                Settings.Global.USER_PREFERRED_RESOLUTION_WIDTH, Display.INVALID_DISPLAY_WIDTH);
        Display.Mode mode = new Display.Mode(width, height, refreshRate);
        mUserPreferredMode = isResolutionAndRefreshRateValid(mode) ? mode : null;
        if (mUserPreferredMode != null) {
            mDisplayDeviceRepo.forEachLocked((DisplayDevice device) -> {
                device.setUserPreferredDisplayModeLocked(mode);
            });
        } else {
            mLogicalDisplayMapper.forEachLocked((LogicalDisplay display) -> {
                configurePreferredDisplayModeLocked(display);
            });
        }
    }

    private DisplayInfo getDisplayInfoForFrameRateOverride(DisplayEventReceiver.FrameRateOverride[]