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

Commit 35bf5bcc authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix virtual display power state management." into main

parents ab2b2fd6 9451efd2
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -792,7 +792,6 @@ public final class DisplayManagerGlobal {
    public void setVirtualDisplaySurface(IVirtualDisplayCallback token, Surface surface) {
        try {
            mDm.setVirtualDisplaySurface(token, surface);
            setVirtualDisplayState(token, surface != null);
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
        }
@@ -815,14 +814,6 @@ public final class DisplayManagerGlobal {
        }
    }

    void setVirtualDisplayState(IVirtualDisplayCallback token, boolean isOn) {
        try {
            mDm.setVirtualDisplayState(token, isOn);
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
        }
    }

    void setVirtualDisplayRotation(IVirtualDisplayCallback token, @Surface.Rotation int rotation) {
        try {
            mDm.setVirtualDisplayRotation(token, rotation);
+0 −3
Original line number Diff line number Diff line
@@ -114,9 +114,6 @@ interface IDisplayManager {
    // No permissions required but must be same Uid as the creator.
    void releaseVirtualDisplay(in IVirtualDisplayCallback token);

    // No permissions required but must be same Uid as the creator.
    void setVirtualDisplayState(in IVirtualDisplayCallback token, boolean isOn);

    // No permissions required but must be same Uid as the creator.
    void setVirtualDisplayRotation(in IVirtualDisplayCallback token, int rotation);

+0 −12
Original line number Diff line number Diff line
@@ -111,18 +111,6 @@ public final class VirtualDisplay {
        }
    }

    /**
     * Sets the on/off state for a virtual display.
     *
     * @param isOn Whether the display should be on or off.
     * @hide
     */
    public void setDisplayState(boolean isOn) {
        if (mToken != null) {
            mGlobal.setVirtualDisplayState(mToken, isOn);
        }
    }

    /**
     * Sets the rotation of the virtual display.
     *
+0 −20
Original line number Diff line number Diff line
@@ -2093,16 +2093,6 @@ public final class DisplayManagerService extends SystemService {
        }
    }

    private void setVirtualDisplayStateInternal(IBinder appToken, boolean isOn) {
        synchronized (mSyncRoot) {
            if (mVirtualDisplayAdapter == null) {
                return;
            }

            mVirtualDisplayAdapter.setVirtualDisplayStateLocked(appToken, isOn);
        }
    }

    private void setVirtualDisplayRotationInternal(IBinder appToken,
            @Surface.Rotation int rotation) {
        int displayId;
@@ -4614,16 +4604,6 @@ public final class DisplayManagerService extends SystemService {
            }
        }

        @Override // Binder call
        public void setVirtualDisplayState(IVirtualDisplayCallback callback, boolean isOn) {
            final long token = Binder.clearCallingIdentity();
            try {
                setVirtualDisplayStateInternal(callback.asBinder(), isOn);
            } finally {
                Binder.restoreCallingIdentity(token);
            }
        }

        @Override // Binder call
        public void setVirtualDisplayRotation(IVirtualDisplayCallback callback,
                @Surface.Rotation int rotation) {
+11 −21
Original line number Diff line number Diff line
@@ -207,13 +207,6 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
        return device;
    }

    void setVirtualDisplayStateLocked(IBinder appToken, boolean isOn) {
        VirtualDisplayDevice device = mVirtualDisplayDevices.get(appToken);
        if (device != null) {
            device.setDisplayState(isOn);
        }
    }

    DisplayDevice getDisplayDevice(IBinder appToken) {
        return mVirtualDisplayDevices.get(appToken);
    }
@@ -273,7 +266,6 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
        private boolean mStopped;
        private int mPendingChanges;
        private Display.Mode mMode;
        private boolean mIsDisplayOn;
        private int mDisplayIdToMirror;
        private boolean mIsWindowManagerMirroring;
        private DisplayCutout mDisplayCutout;
@@ -299,9 +291,8 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
            mCallback = callback;
            mProjection = projection;
            mMediaProjectionCallback = mediaProjectionCallback;
            mDisplayState = Display.STATE_UNKNOWN;
            mDisplayState = Display.STATE_ON;
            mPendingChanges |= PENDING_SURFACE_CHANGE;
            mIsDisplayOn = surface != null;
            mDisplayIdToMirror = virtualDisplayConfig.getDisplayIdToMirror();
            mIsWindowManagerMirroring = virtualDisplayConfig.isWindowManagerMirroringEnabled();
        }
@@ -394,6 +385,8 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
                float sdrBrightnessState, DisplayOffloadSessionImpl displayOffloadSession) {
            if (state != mDisplayState) {
                mDisplayState = state;
                mInfo = null;
                sendDisplayDeviceEventLocked(this, DISPLAY_DEVICE_EVENT_CHANGED);
                if (state == Display.STATE_OFF) {
                    mCallback.dispatchDisplayPaused();
                } else {
@@ -416,12 +409,13 @@ public class VirtualDisplayAdapter extends DisplayAdapter {

        public void setSurfaceLocked(Surface surface) {
            if (!mStopped && mSurface != surface) {
                if ((mSurface != null) != (surface != null)) {
                if (mDisplayState == Display.STATE_ON
                        && ((mSurface == null) != (surface == null))) {
                    mInfo = null;
                    sendDisplayDeviceEventLocked(this, DISPLAY_DEVICE_EVENT_CHANGED);
                }
                sendTraversalRequestLocked();
                mSurface = surface;
                mInfo = null;
                mPendingChanges |= PENDING_SURFACE_CHANGE;
            }
        }
@@ -439,14 +433,6 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
            }
        }

        void setDisplayState(boolean isOn) {
            if (mIsDisplayOn != isOn) {
                mIsDisplayOn = isOn;
                mInfo = null;
                sendDisplayDeviceEventLocked(this, DISPLAY_DEVICE_EVENT_CHANGED);
            }
        }

        public void stopLocked() {
            Slog.d(TAG, "Virtual Display: stopping device " + mName);
            setSurfaceLocked(null);
@@ -567,7 +553,11 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
                mInfo.touch = ((mFlags & VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH) == 0) ?
                        DisplayDeviceInfo.TOUCH_NONE : DisplayDeviceInfo.TOUCH_VIRTUAL;

                mInfo.state = mIsDisplayOn ? Display.STATE_ON : Display.STATE_OFF;
                if (mSurface == null) {
                    mInfo.state = Display.STATE_OFF;
                } else {
                    mInfo.state = mDisplayState;
                }

                mInfo.ownerUid = mOwnerUid;
                mInfo.ownerPackageName = mOwnerPackageName;