diff options
3 files changed, 35 insertions, 17 deletions
diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java index 4148e00e6302..5e88d97c805e 100644 --- a/core/java/android/window/WindowContainerTransaction.java +++ b/core/java/android/window/WindowContainerTransaction.java @@ -1298,6 +1298,12 @@ public final class WindowContainerTransaction implements Parcelable { if ((mChangeMask & CHANGE_FOCUSABLE) != 0) { sb.append("focusable:" + mFocusable + ","); } + if ((mChangeMask & CHANGE_FORCE_TRANSLUCENT) != 0) { + sb.append("forceTranslucent:" + mForceTranslucent + ","); + } + if ((mChangeMask & CHANGE_HIDDEN) != 0) { + sb.append("hidden:" + mHidden + ","); + } if ((mChangeMask & CHANGE_DRAG_RESIZING) != 0) { sb.append("dragResizing:" + mDragResizing + ","); } diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index 804201088c59..fc85af5c2303 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -906,8 +906,12 @@ class TaskFragment extends WindowContainer<WindowContainer> { return mForceTranslucent; } - void setForceTranslucent(boolean set) { + boolean setForceTranslucent(boolean set) { + if (mForceTranslucent == set) { + return false; + } mForceTranslucent = set; + return true; } boolean isLeafTaskFragment() { diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index 8c9317a32483..cbf0a62a31fe 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -842,8 +842,9 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } if ((c.getChangeMask() & CHANGE_FORCE_TRANSLUCENT) != 0) { - tr.setForceTranslucent(c.getForceTranslucent()); - effects |= TRANSACT_EFFECTS_LIFECYCLE; + if (tr.setForceTranslucent(c.getForceTranslucent())) { + effects |= TRANSACT_EFFECTS_LIFECYCLE; + } } if ((c.getChangeMask() & WindowContainerTransaction.Change.CHANGE_DRAG_RESIZING) != 0) { @@ -964,8 +965,9 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } } if ((c.getChangeMask() & CHANGE_FORCE_TRANSLUCENT) != 0) { - taskFragment.setForceTranslucent(c.getForceTranslucent()); - effects |= TRANSACT_EFFECTS_LIFECYCLE; + if (taskFragment.setForceTranslucent(c.getForceTranslucent())) { + effects |= TRANSACT_EFFECTS_LIFECYCLE; + } } effects |= applyChanges(taskFragment, c); @@ -1568,26 +1570,32 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub case OP_TYPE_REORDER_TO_BOTTOM_OF_TASK: { final Task task = taskFragment.getTask(); if (task != null) { - task.mChildren.remove(taskFragment); - task.mChildren.add(0, taskFragment); - if (!taskFragment.hasChild()) { - // Ensure that the child layers are updated if the TaskFragment is empty. - task.assignChildLayers(); + if (task.mChildren.peekFirst() != taskFragment) { + task.mChildren.remove(taskFragment); + task.mChildren.add(0, taskFragment); + if (!taskFragment.hasChild()) { + // Ensure that the child layers are updated if the TaskFragment is + // empty. + task.assignChildLayers(); + } + effects |= TRANSACT_EFFECTS_LIFECYCLE; } - effects |= TRANSACT_EFFECTS_LIFECYCLE; } break; } case OP_TYPE_REORDER_TO_TOP_OF_TASK: { final Task task = taskFragment.getTask(); if (task != null) { - task.mChildren.remove(taskFragment); - task.mChildren.add(taskFragment); - if (!taskFragment.hasChild()) { - // Ensure that the child layers are updated if the TaskFragment is empty. - task.assignChildLayers(); + if (task.mChildren.peekLast() != taskFragment) { + task.mChildren.remove(taskFragment); + task.mChildren.add(taskFragment); + if (!taskFragment.hasChild()) { + // Ensure that the child layers are updated if the TaskFragment is + // empty. + task.assignChildLayers(); + } + effects |= TRANSACT_EFFECTS_LIFECYCLE; } - effects |= TRANSACT_EFFECTS_LIFECYCLE; } break; } |