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

Commit 8e8c07cd authored by Chong Zhang's avatar Chong Zhang Committed by android-build-merger
Browse files

Merge \"Don\'t release surface if relayout is visible\" into nyc-mr1-dev

am: 465376c5

Change-Id: I47d834d26cee248900d268bbe027ea82fd7c286a
parents 4b39cfe2 465376c5
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -2907,9 +2907,23 @@ public class WindowManagerService extends IWindowManager.Stub
                    }
                    result |= RELAYOUT_RES_SURFACE_CHANGED;
                }
                final WindowSurfaceController surfaceController = winAnimator.mSurfaceController;
                if (viewVisibility == View.VISIBLE && surfaceController != null) {
                    // 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);
                } else {
                    if (DEBUG_VISIBILITY) Slog.i(TAG_WM, "Releasing surface in: " + win);

                    try {
                        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "wmReleaseOutSurface_"
                                + win.mAttrs.getTitle());
                        outSurface.release();
                if (DEBUG_VISIBILITY) Slog.i(TAG_WM, "Releasing surface in: " + win);
                    } finally {
                        Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
                    }
                }
            }

            if (focusMayChange) {
@@ -3044,6 +3058,7 @@ public class WindowManagerService extends IWindowManager.Stub
        } else {
            // For some reason there isn't a surface.  Clear the
            // caller's object so they see the same state.
            Slog.w(TAG_WM, "Failed to create surface control for " + win);
            outSurface.release();
        }
        return result;