Merge "SurfaceView: Disable BLASTSync"

This commit is contained in:
Rob Carr
2020-11-05 23:28:38 +00:00
committed by Android (Google) Code Review

View File

@@ -432,7 +432,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
* This gets called on a RenderThread worker thread, so members accessed here must
* be protected by a lock.
*/
final boolean useBLAST = viewRoot.useBLAST();
final boolean useBLAST = useBLASTSync(viewRoot);
viewRoot.registerRtFrameCallback(frame -> {
try {
synchronized (mSurfaceControlLock) {
@@ -809,7 +809,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
* This gets called on a RenderThread worker thread, so members accessed here must
* be protected by a lock.
*/
final boolean useBLAST = viewRoot.useBLAST();
final boolean useBLAST = useBLASTSync(viewRoot);
viewRoot.registerRtFrameCallback(frame -> {
try {
synchronized (mSurfaceControlLock) {
@@ -1110,7 +1110,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
final boolean needBLASTSync =
(layoutSizeChanged || positionChanged || visibleChanged) &&
viewRoot.useBLAST();
useBLASTSync(viewRoot);
final boolean realSizeChanged = performSurfaceTransaction(viewRoot,
translator, creating, sizeChanged, needBLASTSync);
final boolean redrawNeeded = sizeChanged || creating ||
@@ -1352,7 +1352,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
private void applySurfaceTransforms(SurfaceControl surface, SurfaceControl.Transaction t,
Rect position, long frameNumber) {
final ViewRootImpl viewRoot = getViewRootImpl();
if (frameNumber > 0 && viewRoot != null && !viewRoot.useBLAST()) {
if (frameNumber > 0 && viewRoot != null && !useBLASTSync(viewRoot)) {
t.deferTransactionUntil(surface, viewRoot.getSurfaceControl(),
frameNumber);
}
@@ -1385,7 +1385,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
private void setParentSpaceRectangle(Rect position, long frameNumber) {
final ViewRootImpl viewRoot = getViewRootImpl();
final boolean useBLAST = viewRoot.useBLAST();
final boolean useBLAST = useBLASTSync(viewRoot);
if (useBLAST) {
synchronized (viewRoot.getBlastTransactionLock()) {
@@ -1444,7 +1444,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
@Override
public void positionLost(long frameNumber) {
final ViewRootImpl viewRoot = getViewRootImpl();
boolean useBLAST = viewRoot != null && viewRoot.useBLAST();
boolean useBLAST = viewRoot != null && useBLASTSync(viewRoot);
if (DEBUG) {
Log.d(TAG, String.format("%d windowPositionLost, frameNr = %d",
System.identityHashCode(this), frameNumber));
@@ -1920,4 +1920,8 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
+ "Exception requesting focus on embedded window", e);
}
}
private boolean useBLASTSync(ViewRootImpl viewRoot) {
return viewRoot.useBLAST() && mUseBlastAdapter;
}
}