Merge "Couple tweaks for surface control registry" into udc-dev am: 2ba4c12b83

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21482745

Change-Id: I85c92beec744ed992d37ab47eedeba3733c8ab97
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Winson Chung
2023-05-25 21:44:03 +00:00
committed by Automerger Merge Worker
4 changed files with 28 additions and 3 deletions

View File

@@ -786,7 +786,11 @@ public final class SurfaceControl implements Parcelable {
mReleaseStack = null; mReleaseStack = null;
} }
setUnreleasedWarningCallSite(callsite); setUnreleasedWarningCallSite(callsite);
addToRegistry(); if (nativeObject != 0) {
// Only add valid surface controls to the registry. This is called at the end of this
// method since its information is dumped if the process threshold is reached.
addToRegistry();
}
} }
/** /**
@@ -893,6 +897,10 @@ public final class SurfaceControl implements Parcelable {
"Only buffer layers can set a valid buffer size."); "Only buffer layers can set a valid buffer size.");
} }
if (mName == null) {
Log.w(TAG, "Missing name for SurfaceControl", new Throwable());
}
if ((mFlags & FX_SURFACE_MASK) == FX_SURFACE_NORMAL) { if ((mFlags & FX_SURFACE_MASK) == FX_SURFACE_NORMAL) {
setBLASTLayer(); setBLASTLayer();
} }
@@ -1254,6 +1262,9 @@ public final class SurfaceControl implements Parcelable {
} }
/** /**
* Note: Most callers should use {@link SurfaceControl.Builder} or one of the other constructors
* to build an instance of a SurfaceControl. This constructor is mainly used for
* unparceling and passing into an AIDL call as an out parameter.
* @hide * @hide
*/ */
public SurfaceControl() { public SurfaceControl() {
@@ -2495,6 +2506,7 @@ public final class SurfaceControl implements Parcelable {
public static SurfaceControl mirrorSurface(SurfaceControl mirrorOf) { public static SurfaceControl mirrorSurface(SurfaceControl mirrorOf) {
long nativeObj = nativeMirrorSurface(mirrorOf.mNativeObject); long nativeObj = nativeMirrorSurface(mirrorOf.mNativeObject);
SurfaceControl sc = new SurfaceControl(); SurfaceControl sc = new SurfaceControl();
sc.mName = mirrorOf.mName + " (mirror)";
sc.assignNativeObject(nativeObj, "mirrorSurface"); sc.assignNativeObject(nativeObj, "mirrorSurface");
return sc; return sc;
} }

View File

@@ -171,8 +171,7 @@ public class SurfaceControlViewHost {
public SurfacePackage(@NonNull SurfacePackage other) { public SurfacePackage(@NonNull SurfacePackage other) {
SurfaceControl otherSurfaceControl = other.mSurfaceControl; SurfaceControl otherSurfaceControl = other.mSurfaceControl;
if (otherSurfaceControl != null && otherSurfaceControl.isValid()) { if (otherSurfaceControl != null && otherSurfaceControl.isValid()) {
mSurfaceControl = new SurfaceControl(); mSurfaceControl = new SurfaceControl(otherSurfaceControl, "SurfacePackage");
mSurfaceControl.copyFrom(otherSurfaceControl, "SurfacePackage");
} }
mAccessibilityEmbeddedConnection = other.mAccessibilityEmbeddedConnection; mAccessibilityEmbeddedConnection = other.mAccessibilityEmbeddedConnection;
mInputToken = other.mInputToken; mInputToken = other.mInputToken;

View File

@@ -103,6 +103,18 @@ public class SurfaceControlRegistryTests {
assertEquals(hash0, SurfaceControlRegistry.getProcessInstance().hashCode()); assertEquals(hash0, SurfaceControlRegistry.getProcessInstance().hashCode());
} }
@Test
public void testInvalidSurfaceControlNotAddedToRegistry() {
int hash0 = SurfaceControlRegistry.getProcessInstance().hashCode();
// Verify no changes to the registry when dealing with invalid surface controls
SurfaceControl sc0 = new SurfaceControl();
SurfaceControl sc1 = new SurfaceControl(sc0, "test");
assertEquals(hash0, SurfaceControlRegistry.getProcessInstance().hashCode());
sc0.release();
sc1.release();
assertEquals(hash0, SurfaceControlRegistry.getProcessInstance().hashCode());
}
@Test @Test
public void testThresholds() { public void testThresholds() {
SurfaceControlRegistry registry = SurfaceControlRegistry.getProcessInstance(); SurfaceControlRegistry registry = SurfaceControlRegistry.getProcessInstance();

View File

@@ -2249,8 +2249,10 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener {
while (leashReference.getParent() != ancestor) { while (leashReference.getParent() != ancestor) {
leashReference = leashReference.getParent(); leashReference = leashReference.getParent();
} }
final SurfaceControl rootLeash = leashReference.makeAnimationLeash().setName( final SurfaceControl rootLeash = leashReference.makeAnimationLeash().setName(
"Transition Root: " + leashReference.getName()).build(); "Transition Root: " + leashReference.getName()).build();
rootLeash.setUnreleasedWarningCallSite("Transition.calculateTransitionRoots");
startT.setLayer(rootLeash, leashReference.getLastLayer()); startT.setLayer(rootLeash, leashReference.getLastLayer());
outInfo.addRootLeash(endDisplayId, rootLeash, outInfo.addRootLeash(endDisplayId, rootLeash,
ancestor.getBounds().left, ancestor.getBounds().top); ancestor.getBounds().left, ancestor.getBounds().top);