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

Commit ee969aa8 authored by Jim Miller's avatar Jim Miller
Browse files

Fix 2797185: Show 3D Recents on xlarge device

This fixes a bug where some xlarge devices weren't showing 3D recent apps.
The cause was that the config wasn't guaranteed to be loaded by
the time we reach init() in PhoneWindowManager.

The fix looks at the property on-demand, which can't happen
until after the user sees the home screen, which guarantees the
configuration is loaded.

Change-Id: Ic41196f7a15218033b831e6e9cf9d536e0712844
parent 5c769a47
Loading
Loading
Loading
Loading
+16 −14
Original line number Diff line number Diff line
@@ -270,7 +270,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    Intent mHomeIntent;
    Intent mCarDockIntent;
    Intent mDeskDockIntent;
    Intent mRecentAppsIntent;
    boolean mSearchKeyPressed;
    boolean mConsumeSearchKeyUp;

@@ -292,6 +291,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    // Nothing to see here, move along...
    int mFancyRotationAnimation;
    
    // Enable 3D recents based on config settings.
    private Boolean mUse3dRecents;

    ShortcutManager mShortcutManager;
    PowerManager.WakeLock mBroadcastWakeLock;

@@ -493,9 +495,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
     * Create (if necessary) and launch the recent apps dialog
     */
    void showRecentAppsDialog() {
        if (mRecentAppsIntent != null) {
        // We can't initialize this in init() since the configuration hasn't been loaded yet.
        if (mUse3dRecents == null) {
            mUse3dRecents = mContext.getResources().getBoolean(R.bool.config_enableRecentApps3D);
        }
        
        // Use 3d Recents dialog
        if (mUse3dRecents) {
            try {
                mContext.startActivity(mRecentAppsIntent);
                Intent intent = new Intent();
                intent.setClassName("com.android.systemui", 
                        "com.android.systemui.statusbar.RecentApplicationsActivity");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
                        | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                mContext.startActivity(intent);
                return;
            } catch (ActivityNotFoundException e) {
                Log.e(TAG, "Failed to launch RecentAppsIntent", e);
@@ -535,17 +548,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        mDeskDockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

        boolean use3dRecents = mContext.getResources().getBoolean(R.bool.config_enableRecentApps3D);
        if (use3dRecents) {
            mRecentAppsIntent = new Intent();
            mRecentAppsIntent.setClassName("com.android.systemui", 
                    "com.android.systemui.statusbar.RecentApplicationsActivity");
            mRecentAppsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
                    | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        } else {
            mRecentAppsIntent = null;
        }

        PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
        mBroadcastWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                "PhoneWindowManager.mBroadcastWakeLock");