diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index daf25a4e..57eb257 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -719,8 +719,8 @@
                 null, null);
         try {
             String[] settings = ArrayUtils.concat(String.class, SystemSettings.SETTINGS_TO_BACKUP,
-                    OmniSettings.OMNI_SETTINGS_TO_BACKUP, KEY_SYSTEM);
-            return extractRelevantValues(cursor, settings);
+                    OmniSettings.OMNI_SETTINGS_TO_BACKUP);
+            return extractRelevantValues(cursor, settings, KEY_SYSTEM);
         } finally {
             cursor.close();
         }
diff --git a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
index 0c38057..975d2ed 100644
--- a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
+++ b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
@@ -441,7 +441,6 @@
 
     private val settingsListener = object : OmniSettingsService.OmniSettingsObserver {
         override fun onIntSettingChanged(key: String, newValue: Int) {
-            clock?.events?.onColorPaletteChanged(resources)
             updateColors()
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
index 5d5ca2a..801e444 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
@@ -992,11 +992,11 @@
     @VisibleForTesting
     final class RestartAction extends SinglePressAction implements LongPressAction {
         RestartAction() {
-            super(R.drawable.ic_restart, com.android.systemui.R.string.global_action_reboot);
+            super(R.drawable.ic_restart, com.android.systemui.res.R.string.global_action_reboot);
             if (mRebootMenu) {
-                mMessageResId = com.android.systemui.R.string.global_action_reboot_sub;
+                mMessageResId = com.android.systemui.res.R.string.global_action_reboot_sub;
             } else if (advancedRebootEnabled(mContext)) {
-                mMessageResId = com.android.systemui.R.string.global_action_reboot_more;
+                mMessageResId = com.android.systemui.res.R.string.global_action_reboot_more;
             }
         }
 
@@ -1051,7 +1051,7 @@
 
     private final class RebootRecoveryAction extends SinglePressAction {
         private RebootRecoveryAction() {
-            super(com.android.systemui.R.drawable.ic_restart_recovery, com.android.systemui.R.string.global_action_reboot_recovery);
+            super(com.android.systemui.res.R.drawable.ic_restart_recovery, com.android.systemui.res.R.string.global_action_reboot_recovery);
         }
 
         @Override
@@ -1072,7 +1072,7 @@
 
     private final class RebootBootloaderAction extends SinglePressAction {
         private RebootBootloaderAction() {
-            super(com.android.systemui.R.drawable.ic_restart_bootloader, com.android.systemui.R.string.global_action_reboot_bootloader);
+            super(com.android.systemui.res.R.drawable.ic_restart_bootloader, com.android.systemui.res.R.string.global_action_reboot_bootloader);
         }
 
         @Override
@@ -1093,7 +1093,7 @@
 
     private final class RebootFastbootAction extends SinglePressAction {
         private RebootFastbootAction() {
-            super(com.android.systemui.R.drawable.ic_restart_fastboot, com.android.systemui.R.string.global_action_reboot_fastboot);
+            super(com.android.systemui.res.R.drawable.ic_restart_fastboot, com.android.systemui.res.R.string.global_action_reboot_fastboot);
         }
 
         @Override
diff --git a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt
index ad97b21..817e670 100644
--- a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt
@@ -309,7 +309,7 @@
         // TODO(b/377493351) : start using proper logout API once it is available.
         // Using reboot is a temporary solution.
         if (isLogoutToSystemUserEnabled.value) {
-            withContext(backgroundDispatcher) { statusBarService.reboot(false) }
+            withContext(backgroundDispatcher) { statusBarService.reboot(false, null) }
         }
     }
 
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index bfd8790..3951c0c 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -1133,21 +1133,21 @@
                 mLastBroadcastBatteryCapacityLevel = mHealthInfo.batteryCapacityLevel;
 
                 final int maxChargingMicroWatt;
-                if (mLastMaxChargingVoltage <= 0) {
-                    mLastMaxChargingVoltage = DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT;
+                if (mLastBroadcastMaxChargingVoltage <= 0) {
+                    mLastBroadcastMaxChargingVoltage = DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT;
                 }
-                if (mLastMaxChargingCurrent > 0) {
+                if (mLastBroadcastMaxChargingCurrent > 0) {
                     // Calculating muW = muA * muV / (10^6 mu^2 / mu); splitting up the divisor
                     // to maintain precision equally on both factors.
-                    maxChargingMicroWatt = (mLastMaxChargingCurrent / 1000)
-                            * (mLastMaxChargingVoltage / 1000);
+                    maxChargingMicroWatt = (mLastBroadcastMaxChargingCurrent / 1000)
+                            * (mLastBroadcastMaxChargingVoltage / 1000);
                 } else {
                     maxChargingMicroWatt = -1;
                 }
 
                 if (DEBUG) {
-                    Slog.d(TAG, "mLastMaxChargingCurrent = " + mLastMaxChargingCurrent +
-                            " mLastMaxChargingVoltage = " + mLastMaxChargingVoltage +
+                    Slog.d(TAG, "mLastBroadcastMaxChargingCurrent = " + mLastBroadcastMaxChargingCurrent +
+                            " mLastBroadcastMaxChargingVoltage = " + mLastBroadcastMaxChargingVoltage +
                             " maxChargingMicroWatt = " + maxChargingMicroWatt);
                 }
                 if (mFastChargingLedSupported) {
