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

Commit e8417902 authored by Ján Sebechlebský's avatar Ján Sebechlebský Committed by Automerger Merge Worker
Browse files

Merge "Refactor showToastWhereUidIsRunning to avoid excessive locking" into...

Merge "Refactor showToastWhereUidIsRunning to avoid excessive locking" into udc-dev am: 9f22dc7c am: de505247

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22356805



Change-Id: I0645b2263eeef667a78abbf19a37202ea6cc9fe4
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9820c79c de505247
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -1046,18 +1046,30 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
     */
    void showToastWhereUidIsRunning(int uid, String text, @Toast.Duration int duration,
            Looper looper) {
        synchronized (mVirtualDeviceLock) {
        ArrayList<Integer> displayIdsForUid = getDisplayIdsWhereUidIsRunning(uid);
        if (displayIdsForUid.isEmpty()) {
            return;
        }
        DisplayManager displayManager = mContext.getSystemService(DisplayManager.class);
            for (int i = 0; i < mVirtualDisplays.size(); i++) {
                if (mVirtualDisplays.valueAt(i).getWindowPolicyController().containsUid(uid)) {
                    Display display = displayManager.getDisplay(mVirtualDisplays.keyAt(i));
        for (int i = 0; i < displayIdsForUid.size(); i++) {
            Display display = displayManager.getDisplay(displayIdsForUid.get(i));
            if (display != null && display.isValid()) {
                Toast.makeText(mContext.createDisplayContext(display), looper, text,
                        duration).show();
            }
        }
    }

    private ArrayList<Integer> getDisplayIdsWhereUidIsRunning(int uid) {
        ArrayList<Integer> displayIdsForUid = new ArrayList<>();
        synchronized (mVirtualDeviceLock) {
            for (int i = 0; i < mVirtualDisplays.size(); i++) {
                if (mVirtualDisplays.valueAt(i).getWindowPolicyController().containsUid(uid)) {
                    displayIdsForUid.add(mVirtualDisplays.keyAt(i));
                }
            }
        }
        return displayIdsForUid;
    }

    boolean isDisplayOwnedByVirtualDevice(int displayId) {