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

Commit 27050eb0 authored by Sahil Sonar's avatar Sahil Sonar 💬
Browse files

base: Force 60Hz refresh rate on boot with prop [1/2]



[ SahilSonar - Murena ]
    FP5 device has a glitchy boot animation with peak refresh rate.
    This should be fixed the kernel/dtb, which is prebuilt from
    stock right now. This change introduces framework workaround
    that FP uses on their stock firmware which forces 60Hz during
    boot animation and switches back to user preference after boot.
    Also, added a prop check to avoid forcing this on other devices.

Co-authored-by: default avatarhaibiao.lu@t2mobile.com <haibiao.lu@t2mobile.com>
parent 3a006cb4
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.os.Message;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Temperature;
import android.os.UserHandle;
import android.provider.DeviceConfig;
@@ -139,6 +140,8 @@ public class DisplayModeDirector {
    private DesiredDisplayModeSpecsListener mDesiredDisplayModeSpecsListener;

    private boolean mAlwaysRespectAppRequest;
    private boolean mFirstUpdateFlashRate = false;
    private boolean forceBoot60Hz = SystemProperties.getBoolean("ro.display.force_boot_60hz", false);

    /**
     * The allowed refresh rate switching type. This is used by SurfaceFlinger.
@@ -1302,8 +1305,13 @@ public class DisplayModeDirector {

        private void updateRefreshRateSettingLocked() {
            final ContentResolver cr = mContext.getContentResolver();
            float minRefreshRate = Settings.System.getFloatForUser(cr,
            float minRefreshRate = 60f;
            if (mFirstUpdateFlashRate == false && forceBoot60Hz) {
                mFirstUpdateFlashRate = true;
            } else {
                minRefreshRate = Settings.System.getFloatForUser(cr,
                    Settings.System.MIN_REFRESH_RATE, 0f, cr.getUserId());
            }
            float peakRefreshRate = Settings.System.getFloatForUser(cr,
                    Settings.System.PEAK_REFRESH_RATE, mDefaultPeakRefreshRate, cr.getUserId());
            updateRefreshRateSettingLocked(minRefreshRate, peakRefreshRate, mDefaultRefreshRate);