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

Commit 4238e3e4 authored by Craig Mautner's avatar Craig Mautner
Browse files

Make the min layer go down through all windows

The min layer was set to only show the windows that matched
the specified app token. But that meant when dialogs were
launched it only showed the dialogs and not the background
windows.

Added improved debugging.

fixes bug 8502844.

Change-Id: I26b49568b872801ec9aa088df20317aa752dacd6
parent 63fba8c1
Loading
Loading
Loading
Loading
+18 −19
Original line number Diff line number Diff line
@@ -5365,6 +5365,9 @@ public class WindowManagerService extends IWindowManager.Stub
                    if (maxLayer < winAnim.mSurfaceLayer) {
                        maxLayer = winAnim.mSurfaceLayer;
                    }
                    if (minLayer > winAnim.mSurfaceLayer) {
                        minLayer = winAnim.mSurfaceLayer;
                    }

                    // Don't include wallpaper in bounds calculation
                    if (!ws.mIsWallpaper) {
@@ -5377,19 +5380,16 @@ public class WindowManagerService extends IWindowManager.Stub
                        frame.union(left, top, right, bottom);
                    }

                    if (ws.mAppToken != null && ws.mAppToken.token == appToken) {
                        if (minLayer > ws.mWinAnimator.mSurfaceLayer) {
                            minLayer = ws.mWinAnimator.mSurfaceLayer;
                        }
                        if (ws.isDisplayedLw()) {
                    if (ws.mAppToken != null && ws.mAppToken.token == appToken &&
                            ws.isDisplayedLw()) {
                        screenshotReady = true;
                    }

                    if (fullscreen) {
                        // No point in continuing down through windows.
                        break;
                    }
                }
                }

                if (appToken != null && appWin == null) {
                    // Can't find a window to snapshot.
@@ -5461,14 +5461,12 @@ public class WindowManagerService extends IWindowManager.Stub
                rawss = SurfaceControl.screenshot(dw, dh, minLayer, maxLayer);
            }
        } while (!screenshotReady && retryCount <= MAX_SCREENSHOT_RETRIES);
        if (DEBUG_SCREENSHOT && retryCount > MAX_SCREENSHOT_RETRIES) {
            Slog.i(TAG, "Screenshot max retries " + retryCount + " of " + appToken + " appWin="
                    + (appWin == null ? "null" : (appWin + " drawState="
                            + appWin.mWinAnimator.mDrawState)));
        }
        if (retryCount > MAX_SCREENSHOT_RETRIES)  Slog.i(TAG, "Screenshot max retries " +
                retryCount + " of " + appToken + " appWin=" + (appWin == null ?
                        "null" : (appWin + " drawState=" + appWin.mWinAnimator.mDrawState)));

        if (rawss == null) {
            Slog.w(TAG, "Failure taking screenshot for (" + dw + "x" + dh
            Slog.w(TAG, "Screenshot failure taking screenshot for (" + dw + "x" + dh
                    + ") to layer " + maxLayer);
            return null;
        }
@@ -5481,7 +5479,7 @@ public class WindowManagerService extends IWindowManager.Stub
        canvas.drawBitmap(rawss, matrix, null);
        canvas.setBitmap(null);

        if (DEBUG_SCREENSHOT) {
        if (true || DEBUG_SCREENSHOT) {
            // TEST IF IT's ALL BLACK
            int[] buffer = new int[bm.getWidth() * bm.getHeight()];
            bm.getPixels(buffer, 0, bm.getWidth(), 0, 0, bm.getWidth(), bm.getHeight());
@@ -5494,7 +5492,8 @@ public class WindowManagerService extends IWindowManager.Stub
            }
            if (allBlack) {
                Slog.i(TAG, "Screenshot " + appWin + " was all black! mSurfaceLayer=" +
                        (appWin != null ? appWin.mWinAnimator.mSurfaceLayer : "null"));
                        (appWin != null ? appWin.mWinAnimator.mSurfaceLayer : "null") +
                        " minLayer=" + minLayer + " maxLayer=" + maxLayer);
            }
        }