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

Commit 7af807ed authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Use shared surface session for snapshot surface

So when drawing snapshot starting window, it doesn't need to
have an extra IPC ISurfaceComposer::createConnection to
surfaceflinger every time.

WallpaperService/SurfaceControlViewHost also use that, so the
instance SurfaceComposerClient::getDefault() is usually already
available to use directly.

Bug: 297502610
Flag: EXEMPT reduce unnecessary invocation
Test: Task snapshot starting window is normal from hot launch app.
Change-Id: I644aaca1d0cc88bb2a6969381b5a373dc9280ae1
parent 4cc6b39f
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ import android.os.IBinder;
import android.util.Log;
import android.view.InsetsState;
import android.view.SurfaceControl;
import android.view.SurfaceSession;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowManager;
@@ -185,7 +184,6 @@ public class SnapshotDrawerUtils {

        private void drawSizeMismatchSnapshot() {
            final HardwareBuffer buffer = mSnapshot.getHardwareBuffer();
            final SurfaceSession session = new SurfaceSession();

            // We consider nearly matched dimensions as there can be rounding errors and the user
            // won't notice very minute differences from scaling one dimension more than the other
@@ -193,7 +191,7 @@ public class SnapshotDrawerUtils {
                    && !Flags.drawSnapshotAspectRatioMatch();

            // Keep a reference to it such that it doesn't get destroyed when finalized.
            SurfaceControl childSurfaceControl = new SurfaceControl.Builder(session)
            SurfaceControl childSurfaceControl = new SurfaceControl.Builder()
                    .setName(mTitle + " - task-snapshot-surface")
                    .setBLASTLayer()
                    .setFormat(buffer.getFormat())