Merge changes I6f21d272,Ic0f72593 into rvc-dev am: f6567d2ef5
Change-Id: I46c50102d587fce6bf02c2275b8f680d233bdc1d
This commit is contained in:
@@ -98,7 +98,10 @@ public class SurfaceControlViewHost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release the SurfaceControl associated with the SurfacePackage.
|
* Release the {@link SurfaceControl} associated with this package.
|
||||||
|
* It's not necessary to call this if you pass the package to
|
||||||
|
* {@link SurfaceView#setChildSurfacePackage} as {@link SurfaceView} will
|
||||||
|
* take ownership in that case.
|
||||||
*/
|
*/
|
||||||
public void release() {
|
public void release() {
|
||||||
if (mSurfaceControl != null) {
|
if (mSurfaceControl != null) {
|
||||||
@@ -230,7 +233,7 @@ public class SurfaceControlViewHost {
|
|||||||
* and render the object unusable.
|
* and render the object unusable.
|
||||||
*/
|
*/
|
||||||
public void release() {
|
public void release() {
|
||||||
mViewRoot.dispatchDetachedFromWindow();
|
mViewRoot.die(false /* immediate */);
|
||||||
mSurfaceControl.release();
|
mSurfaceControl.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -496,8 +496,17 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
|
|||||||
|
|
||||||
updateSurface();
|
updateSurface();
|
||||||
releaseSurfaces();
|
releaseSurfaces();
|
||||||
mHaveFrame = false;
|
|
||||||
|
|
||||||
|
// We don't release this as part of releaseSurfaces as
|
||||||
|
// that is also called on transient visibility changes. We can't
|
||||||
|
// recreate this Surface, so only release it when we are fully
|
||||||
|
// detached.
|
||||||
|
if (mSurfacePackage != null) {
|
||||||
|
mSurfacePackage.release();
|
||||||
|
mSurfacePackage = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
mHaveFrame = false;
|
||||||
super.onDetachedFromWindow();
|
super.onDetachedFromWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1546,7 +1555,9 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
|
|||||||
* Display the view-hierarchy embedded within a {@link SurfaceControlViewHost.SurfacePackage}
|
* Display the view-hierarchy embedded within a {@link SurfaceControlViewHost.SurfacePackage}
|
||||||
* within this SurfaceView. If this SurfaceView is above it's host Surface (see
|
* within this SurfaceView. If this SurfaceView is above it's host Surface (see
|
||||||
* {@link #setZOrderOnTop} then the embedded Surface hierarchy will be able to receive
|
* {@link #setZOrderOnTop} then the embedded Surface hierarchy will be able to receive
|
||||||
* input.
|
* input. This will take ownership of the SurfaceControl contained inside the SurfacePackage
|
||||||
|
* and free the caller of the obligation to call
|
||||||
|
* {@link SurfaceControlViewHost.SurfacePackage#release}.
|
||||||
*
|
*
|
||||||
* @param p The SurfacePackage to embed.
|
* @param p The SurfacePackage to embed.
|
||||||
*/
|
*/
|
||||||
@@ -1556,6 +1567,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
|
|||||||
mSurfacePackage.getSurfaceControl() : null;
|
mSurfacePackage.getSurfaceControl() : null;
|
||||||
if (mSurfaceControl != null && lastSc != null) {
|
if (mSurfaceControl != null && lastSc != null) {
|
||||||
mTmpTransaction.reparent(lastSc, null).apply();
|
mTmpTransaction.reparent(lastSc, null).apply();
|
||||||
|
mSurfacePackage.release();
|
||||||
} else if (mSurfaceControl != null) {
|
} else if (mSurfaceControl != null) {
|
||||||
reparentSurfacePackage(mTmpTransaction, p);
|
reparentSurfacePackage(mTmpTransaction, p);
|
||||||
mTmpTransaction.apply();
|
mTmpTransaction.apply();
|
||||||
|
|||||||
Reference in New Issue
Block a user