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

Commit eb3370d4 authored by Pablo Ceballos's avatar Pablo Ceballos
Browse files

Handle null Surface in createVirtualDisplay

One can pass a null Surface to createVirtualDisplay and then set the
Surface after creation. Properly handle the isSingleBuffered check for
this case.

Bug 31219726

Change-Id: I14ebaca58912fdb4989e0ba0f4c251df31e24617
parent 92a8a4a6
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1402,7 +1402,7 @@ public final class DisplayManagerService extends SystemService {
                throw new IllegalArgumentException("width, height, and densityDpi must be "
                        + "greater than 0");
            }
            if (surface.isSingleBuffered()) {
            if (surface != null && surface.isSingleBuffered()) {
                throw new IllegalArgumentException("Surface can't be single-buffered");
            }

@@ -1463,6 +1463,9 @@ public final class DisplayManagerService extends SystemService {

        @Override // Binder call
        public void setVirtualDisplaySurface(IVirtualDisplayCallback callback, Surface surface) {
            if (surface != null && surface.isSingleBuffered()) {
                throw new IllegalArgumentException("Surface can't be single-buffered");
            }
            final long token = Binder.clearCallingIdentity();
            try {
                setVirtualDisplaySurfaceInternal(callback.asBinder(), surface);