From b05ce12eab0ef67cc8099e954f575f6ee6570544 Mon Sep 17 00:00:00 2001 From: d34d Date: Fri, 11 Mar 2016 14:30:19 -0800 Subject: [PATCH] Themes: Check theme api level in onBootPhase This check should be done once the system has reached the PHASE_ACTIVITY_MANAGER_READY otherwise we can end up getting a boot failure within the ThemeManagerService Change-Id: If3e9c8885d8718224cf7d8fed0c0fb82ebe0fcab TICKET: CYNGNOS-2230 --- .../platform/internal/ThemeManagerService.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/ThemeManagerService.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/ThemeManagerService.java index c78f187..24a7e26 100644 --- a/cm/lib/main/java/org/cyanogenmod/platform/internal/ThemeManagerService.java +++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/ThemeManagerService.java @@ -245,19 +245,18 @@ public class ThemeManagerService extends SystemService { mContext.registerReceiver(mUserChangeReceiver, filter); mPM = mContext.getPackageManager(); - - if (!isThemeApiUpToDate()) { - Log.d(TAG, "The system has been upgraded to a theme new api, " + - "checking if currently set theme is compatible"); - removeObsoleteThemeOverlayIfExists(); - updateThemeApi(); - } } @Override public void onBootPhase(int phase) { super.onBootPhase(phase); if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY) { + if (!isThemeApiUpToDate()) { + Log.d(TAG, "The system has been upgraded to a theme new api, " + + "checking if currently set theme is compatible"); + removeObsoleteThemeOverlayIfExists(); + updateThemeApi(); + } registerAppsFailureReceiver(); processInstalledThemes(); } @@ -304,6 +303,11 @@ public class ThemeManagerService extends SystemService { String pkgName = entry.getValue(); String defaultPkg = defaults.get(component); + if (defaultPkg == null) { + Log.d(TAG, "Default package is null, skipping " + component); + continue; + } + // Check that the default overlay theme is not currently set if (defaultPkg.equals(pkgName)) { Log.d(TAG, "Current overlay theme is same as default. " +