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();
}
};