Revert SurfaceView back to Q's version

Revert API behavior changes to SurfaceView, snapping
back to Q's version.

Bug: 133378280
Test: none
Change-Id: I3a47f9bfdfab2d16707f952a9af672551736e681
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index add7376b..254d04e 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -27,7 +27,6 @@
 import android.graphics.BlendMode;
 import android.graphics.Canvas;
 import android.graphics.Color;
-import android.graphics.HardwareRenderer;
 import android.graphics.Paint;
 import android.graphics.PixelFormat;
 import android.graphics.PorterDuff;
@@ -202,29 +201,6 @@
 
     private SurfaceControl.Transaction mRtTransaction = new SurfaceControl.Transaction();
 
-    /**
-     * A callback which reflects an alpha value of this view onto the underlying surfaces.
-     *
-     * <p class="note"><strong>Note:</strong> This doesn't have to be defined as a member variable,
-     * but can be defined as an inline lambda when calling ViewRootImpl#registerRtFrameCallback().
-     * However when we do so, the callback is triggered only for a few times and stops working for
-     * some reason. It's suspected that there is a problem around garbage collection, and until
-     * the cause is fixed, we will keep this callback in a member variable.</p>
-    */
-    private HardwareRenderer.FrameDrawingCallback mSetSurfaceAlphaCallback = frame -> {
-        final ViewRootImpl viewRoot = getViewRootImpl();
-        if (viewRoot == null || viewRoot.mSurface == null || !viewRoot.mSurface.isValid()) {
-            // In this case, the alpha value is reflected on the screen in #updateSurface() later.
-            return;
-        }
-
-        final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
-        t.setAlpha(mSurfaceControl, getAlpha());
-        t.deferTransactionUntilSurface(mSurfaceControl, viewRoot.mSurface, frame);
-        t.setEarlyWakeup();
-        t.apply();
-    };
-
     public SurfaceView(Context context) {
         this(context, null);
     }
@@ -312,17 +288,6 @@
         updateSurface();
     }
 
-    @Override
-    public void setAlpha(float alpha) {
-        super.setAlpha(alpha);
-        final ViewRootImpl viewRoot = getViewRootImpl();
-        if (viewRoot == null) {
-            return;
-        }
-        viewRoot.registerRtFrameCallback(mSetSurfaceAlphaCallback);
-        invalidate();
-    }
-
     private void performDrawFinished() {
         if (mPendingReportDraws > 0) {
             mDrawFinished = true;
@@ -682,13 +647,6 @@
                         }
                         updateBackgroundVisibilityInTransaction(viewRoot.getSurfaceControl());
 
-                        // Alpha value change is handled in setAlpha() directly using a local
-                        // transaction. However it can happen that setAlpha() is called while
-                        // local transactions cannot be applied, so the value is stored in a View
-                        // but not yet reflected on the Surface.
-                        mSurfaceControl.setAlpha(getAlpha());
-                        mBackgroundControl.setAlpha(getAlpha());
-
                         // While creating the surface, we will set it's initial
                         // geometry. Outside of that though, we should generally
                         // leave it to the RenderThread.