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 Original line Diff line number Diff line
@@ -792,7 +792,6 @@ public final class DisplayManagerGlobal {
    public void setVirtualDisplaySurface(IVirtualDisplayCallback token, Surface surface) {
    public void setVirtualDisplaySurface(IVirtualDisplayCallback token, Surface surface) {
        try {
        try {
            mDm.setVirtualDisplaySurface(token, surface);
            mDm.setVirtualDisplaySurface(token, surface);
            setVirtualDisplayState(token, surface != null);
        } catch (RemoteException ex) {
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
            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) {
    void setVirtualDisplayRotation(IVirtualDisplayCallback token, @Surface.Rotation int rotation) {
        try {
        try {
            mDm.setVirtualDisplayRotation(token, rotation);
            mDm.setVirtualDisplayRotation(token, rotation);
+0 −3
Original line number Original line Diff line number Diff line
@@ -114,9 +114,6 @@ interface IDisplayManager {
    // No permissions required but must be same Uid as the creator.
    // No permissions required but must be same Uid as the creator.
    void releaseVirtualDisplay(in IVirtualDisplayCallback token);
    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.
    // No permissions required but must be same Uid as the creator.
    void setVirtualDisplayRotation(in IVirtualDisplayCallback token, int rotation);
    void setVirtualDisplayRotation(in IVirtualDisplayCallback token, int rotation);


+0 −12
Original line number Original line 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.
     * Sets the rotation of the virtual display.
     *
     *
+0 −20
Original line number Original line 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,
    private void setVirtualDisplayRotationInternal(IBinder appToken,
            @Surface.Rotation int rotation) {
            @Surface.Rotation int rotation) {
        int displayId;
        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
        @Override // Binder call
        public void setVirtualDisplayRotation(IVirtualDisplayCallback callback,
        public void setVirtualDisplayRotation(IVirtualDisplayCallback callback,
                @Surface.Rotation int rotation) {
                @Surface.Rotation int rotation) {
+11 −21
Original line number Original line Diff line number Diff line
@@ -207,13 +207,6 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
        return device;
        return device;
    }
    }


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

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


        public void setSurfaceLocked(Surface surface) {
        public void setSurfaceLocked(Surface surface) {
            if (!mStopped && mSurface != 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);
                    sendDisplayDeviceEventLocked(this, DISPLAY_DEVICE_EVENT_CHANGED);
                }
                }
                sendTraversalRequestLocked();
                sendTraversalRequestLocked();
                mSurface = surface;
                mSurface = surface;
                mInfo = null;
                mPendingChanges |= PENDING_SURFACE_CHANGE;
                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() {
        public void stopLocked() {
            Slog.d(TAG, "Virtual Display: stopping device " + mName);
            Slog.d(TAG, "Virtual Display: stopping device " + mName);
            setSurfaceLocked(null);
            setSurfaceLocked(null);
@@ -567,7 +553,11 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
                mInfo.touch = ((mFlags & VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH) == 0) ?
                mInfo.touch = ((mFlags & VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH) == 0) ?
                        DisplayDeviceInfo.TOUCH_NONE : DisplayDeviceInfo.TOUCH_VIRTUAL;
                        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.ownerUid = mOwnerUid;
                mInfo.ownerPackageName = mOwnerPackageName;
                mInfo.ownerPackageName = mOwnerPackageName;