Loading services/core/java/com/android/server/am/ActivityManagerService.java +14 −3 Original line number Original line Diff line number Diff line Loading @@ -294,6 +294,7 @@ import android.database.ContentObserver; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.graphics.Point; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Rect; import android.hardware.display.DisplayManagerInternal; import android.location.LocationManager; import android.location.LocationManager; import android.media.audiofx.AudioEffect; import android.media.audiofx.AudioEffect; import android.metrics.LogMaker; import android.metrics.LogMaker; Loading Loading @@ -474,6 +475,7 @@ import java.util.Map; import java.util.Objects; import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong; Loading Loading @@ -25357,9 +25359,18 @@ public class ActivityManagerService extends IActivityManager.Stub } } } } } } if (updateFrameworkRes && mWindowManager != null) { if (updateFrameworkRes) { ActivityThread.currentActivityThread().getExecutor().execute( // Update system server components that need to know about changed overlays. Because the mWindowManager::onOverlayChanged); // overlay is applied in ActivityThread, we need to serialize through its thread too. final Executor executor = ActivityThread.currentActivityThread().getExecutor(); final DisplayManagerInternal display = LocalServices.getService(DisplayManagerInternal.class); if (display != null) { executor.execute(display::onOverlayChanged); } if (mWindowManager != null) { executor.execute(mWindowManager::onOverlayChanged); } } } } } services/core/java/com/android/server/display/DisplayDevice.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -143,6 +143,9 @@ abstract class DisplayDevice { public void requestDisplayModesInTransactionLocked(int colorMode, int modeId) { public void requestDisplayModesInTransactionLocked(int colorMode, int modeId) { } } public void onOverlayChangedLocked() { } /** /** * Sets the display layer stack while in a transaction. * Sets the display layer stack while in a transaction. */ */ Loading services/core/java/com/android/server/display/DisplayManagerService.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -2019,8 +2019,8 @@ public final class DisplayManagerService extends SystemService { @Override @Override public void onOverlayChanged() { public void onOverlayChanged() { synchronized (mSyncRoot) { synchronized (mSyncRoot) { if (updateLogicalDisplaysLocked()) { for (int i = 0; i < mDisplayDevices.size(); i++) { scheduleTraversalLocked(false); mDisplayDevices.get(i).onOverlayChangedLocked(); } } } } } } Loading services/core/java/com/android/server/display/LocalDisplayAdapter.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -600,6 +600,11 @@ final class LocalDisplayAdapter extends DisplayAdapter { } } } } @Override public void onOverlayChangedLocked() { updateDeviceInfoLocked(); } public boolean requestModeInTransactionLocked(int modeId) { public boolean requestModeInTransactionLocked(int modeId) { if (modeId == 0) { if (modeId == 0) { modeId = mDefaultModeId; modeId = mDefaultModeId; Loading services/core/java/com/android/server/wm/WindowManagerService.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -6613,7 +6613,7 @@ public class WindowManagerService extends IWindowManager.Stub public void onOverlayChanged() { public void onOverlayChanged() { synchronized (mWindowMap) { synchronized (mWindowMap) { mPolicy.onOverlayChangedLw(); mPolicy.onOverlayChangedLw(); mDisplayManagerInternal.onOverlayChanged(); getDefaultDisplayContentLocked().updateDisplayInfo(); requestTraversal(); requestTraversal(); } } } } Loading Loading
services/core/java/com/android/server/am/ActivityManagerService.java +14 −3 Original line number Original line Diff line number Diff line Loading @@ -294,6 +294,7 @@ import android.database.ContentObserver; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.graphics.Point; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Rect; import android.hardware.display.DisplayManagerInternal; import android.location.LocationManager; import android.location.LocationManager; import android.media.audiofx.AudioEffect; import android.media.audiofx.AudioEffect; import android.metrics.LogMaker; import android.metrics.LogMaker; Loading Loading @@ -474,6 +475,7 @@ import java.util.Map; import java.util.Objects; import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong; Loading Loading @@ -25357,9 +25359,18 @@ public class ActivityManagerService extends IActivityManager.Stub } } } } } } if (updateFrameworkRes && mWindowManager != null) { if (updateFrameworkRes) { ActivityThread.currentActivityThread().getExecutor().execute( // Update system server components that need to know about changed overlays. Because the mWindowManager::onOverlayChanged); // overlay is applied in ActivityThread, we need to serialize through its thread too. final Executor executor = ActivityThread.currentActivityThread().getExecutor(); final DisplayManagerInternal display = LocalServices.getService(DisplayManagerInternal.class); if (display != null) { executor.execute(display::onOverlayChanged); } if (mWindowManager != null) { executor.execute(mWindowManager::onOverlayChanged); } } } } }
services/core/java/com/android/server/display/DisplayDevice.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -143,6 +143,9 @@ abstract class DisplayDevice { public void requestDisplayModesInTransactionLocked(int colorMode, int modeId) { public void requestDisplayModesInTransactionLocked(int colorMode, int modeId) { } } public void onOverlayChangedLocked() { } /** /** * Sets the display layer stack while in a transaction. * Sets the display layer stack while in a transaction. */ */ Loading
services/core/java/com/android/server/display/DisplayManagerService.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -2019,8 +2019,8 @@ public final class DisplayManagerService extends SystemService { @Override @Override public void onOverlayChanged() { public void onOverlayChanged() { synchronized (mSyncRoot) { synchronized (mSyncRoot) { if (updateLogicalDisplaysLocked()) { for (int i = 0; i < mDisplayDevices.size(); i++) { scheduleTraversalLocked(false); mDisplayDevices.get(i).onOverlayChangedLocked(); } } } } } } Loading
services/core/java/com/android/server/display/LocalDisplayAdapter.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -600,6 +600,11 @@ final class LocalDisplayAdapter extends DisplayAdapter { } } } } @Override public void onOverlayChangedLocked() { updateDeviceInfoLocked(); } public boolean requestModeInTransactionLocked(int modeId) { public boolean requestModeInTransactionLocked(int modeId) { if (modeId == 0) { if (modeId == 0) { modeId = mDefaultModeId; modeId = mDefaultModeId; Loading
services/core/java/com/android/server/wm/WindowManagerService.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -6613,7 +6613,7 @@ public class WindowManagerService extends IWindowManager.Stub public void onOverlayChanged() { public void onOverlayChanged() { synchronized (mWindowMap) { synchronized (mWindowMap) { mPolicy.onOverlayChangedLw(); mPolicy.onOverlayChangedLw(); mDisplayManagerInternal.onOverlayChanged(); getDefaultDisplayContentLocked().updateDisplayInfo(); requestTraversal(); requestTraversal(); } } } } Loading