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

Commit 7581cddf authored by Chong Zhang's avatar Chong Zhang
Browse files

Make sure surface control is really valid before giving it to client

Checking mSurfaceControl!=null is not enough to ensure the surface is
valid. tryStartExitingAnimation() could destroy/save the surface before
app is stopped, if it decided the surface is no longer needed.

Use WSA.hasSurface() to check if the surface control is really valid.

bug: 30766796
Change-Id: I7724f1929d4ebc3f9a7a3b19eec638d7a7d7b910
parent 4ecc9d2d
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -2908,12 +2908,11 @@ public class WindowManagerService extends IWindowManager.Stub
                    }
                    result |= RELAYOUT_RES_SURFACE_CHANGED;
                }
                final WindowSurfaceController surfaceController = winAnimator.mSurfaceController;
                if (viewVisibility == View.VISIBLE && surfaceController != null) {
                if (viewVisibility == View.VISIBLE && winAnimator.hasSurface()) {
                    // We already told the client to go invisible, but the message may not be
                    // handled yet, or it might want to draw a last frame. If we already have a
                    // surface, let the client use that, but don't create new surface at this point.
                    surfaceController.getSurface(outSurface);
                    winAnimator.mSurfaceController.getSurface(outSurface);
                } else {
                    if (DEBUG_VISIBILITY) Slog.i(TAG_WM, "Releasing surface in: " + win);