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

Commit b12428a1 authored by Craig Mautner's avatar Craig Mautner
Browse files

Save most recent thumbnail Bitmap for reuse.

This keeps Recents from taking two identical screenshots, one for
the Recents thumbnail and one for the pause activity thumbnail.

Fixes bug 7351766.

Change-Id: Ia4d12802151666ec36e4d9b395cf10e1e02dc37f
parent 5b88cd72
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
@@ -280,6 +281,13 @@ final class ActivityStack {
     */
    boolean mDismissKeyguardOnNextActivity = false;

    /**
     * Save the most recent screenshot for reuse. This keeps Recents from taking two identical
     * screenshots, one for the Recents thumbnail and one for the pauseActivity thumbnail.
     */
    private ActivityRecord mLastScreenshotActivity = null;
    private Bitmap mLastScreenshotBitmap = null;

    int mThumbnailWidth = -1;
    int mThumbnailHeight = -1;

@@ -931,8 +939,16 @@ final class ActivityStack {
        }

        if (w > 0) {
            return mService.mWindowManager.screenshotApplications(who.appToken,
                    Display.DEFAULT_DISPLAY, w, h);
            if (who != mLastScreenshotActivity || mLastScreenshotBitmap == null
                    || mLastScreenshotBitmap.getWidth() != w
                    || mLastScreenshotBitmap.getHeight() != h) {
                mLastScreenshotActivity = who;
                mLastScreenshotBitmap = mService.mWindowManager.screenshotApplications(
                        who.appToken, Display.DEFAULT_DISPLAY, w, h);
            }
            if (mLastScreenshotBitmap != null) {
                return mLastScreenshotBitmap.copy(Config.ARGB_8888, true);
            }
        }
        return null;
    }