diff options
Diffstat (limited to 'services/core/java/com/android/server/wm/TransitionController.java')
-rw-r--r-- | services/core/java/com/android/server/wm/TransitionController.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java index b05c6b4839e5..7169c2cfa0f6 100644 --- a/services/core/java/com/android/server/wm/TransitionController.java +++ b/services/core/java/com/android/server/wm/TransitionController.java @@ -150,6 +150,13 @@ class TransitionController { final ArrayList<ActivityRecord> mValidateActivityCompat = new ArrayList<>(); /** + * List of display areas which were last sent as "closing"-type and haven't yet had a + * corresponding "opening"-type transition. A mismatch here is usually related to issues in + * keyguard unlock. + */ + final ArrayList<DisplayArea> mValidateDisplayVis = new ArrayList<>(); + + /** * Currently playing transitions (in the order they were started). When finished, records are * removed from this list. */ @@ -922,6 +929,15 @@ class TransitionController { ar.getSyncTransaction().setPosition(ar.getSurfaceControl(), tmpPos.x, tmpPos.y); } mValidateActivityCompat.clear(); + for (int i = 0; i < mValidateDisplayVis.size(); ++i) { + final DisplayArea da = mValidateDisplayVis.get(i); + if (!da.isAttached() || da.getSurfaceControl() == null) continue; + if (da.isVisibleRequested()) { + Slog.e(TAG, "DisplayArea became visible outside of a transition: " + da); + da.getSyncTransaction().show(da.getSurfaceControl()); + } + } + mValidateDisplayVis.clear(); } /** |