Merge "Adjust SurfaceView visibility on parent change" into qt-dev am: f1c4f30c54
am: ebd1e66515

Change-Id: I96d579dbe69733bf7211e97a423071fa61be494a
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index e5a1cdf..5e527536 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -849,6 +849,10 @@
                 position.width() / (float) mSurfaceWidth,
                 0.0f, 0.0f,
                 position.height() / (float) mSurfaceHeight);
+        if (mViewVisibility) {
+            mRtTransaction.show(surface);
+        }
+
     }
 
     private void setParentSpaceRectangle(Rect position, long frameNumber) {
@@ -915,27 +919,15 @@
             if (mSurfaceControl == null) {
                 return;
             }
-            if (mRtHandlingPositionUpdates) {
-                mRtHandlingPositionUpdates = false;
-                // This callback will happen while the UI thread is blocked, so we can
-                // safely access other member variables at this time.
-                // So do what the UI thread would have done if RT wasn't handling position
-                // updates.
-                if (!mScreenRect.isEmpty() && !mScreenRect.equals(mRTLastReportedPosition)) {
-                    try {
-                        if (DEBUG) {
-                            Log.d(TAG, String.format("%d updateSurfacePosition, "
-                                            + "postion = [%d, %d, %d, %d]",
-                                    System.identityHashCode(this),
-                                    mScreenRect.left, mScreenRect.top,
-                                    mScreenRect.right, mScreenRect.bottom));
-                        }
-                        setParentSpaceRectangle(mScreenRect, frameNumber);
-                    } catch (Exception ex) {
-                        Log.e(TAG, "Exception configuring surface", ex);
-                    }
-                }
+
+            if (frameNumber > 0) {
+                final ViewRootImpl viewRoot = getViewRootImpl();
+
+                mRtTransaction.deferTransactionUntilSurface(mSurfaceControl, viewRoot.mSurface,
+                        frameNumber);
             }
+            mRtTransaction.hide(mSurfaceControl);
+            mRtTransaction.apply();
         }
     };