Apply position updates immediately.
Restores the behavior prior to moving transform
in to geometry state. Now geometry state and scaling
mode only control parameters which would cause
buffer scaling.
Bug: 27729195
Bug: 27687126
Change-Id: I653b84e74407f2533c92f7647e2609fc043ed0a4
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index afaba1f..ac99cd0 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -1495,7 +1495,13 @@
if (mCurrentState.requested.transform.tx() == x && mCurrentState.requested.transform.ty() == y)
return false;
mCurrentState.sequence++;
+
+ // We update the requested and active position simultaneously because
+ // we want to apply the position portion of the transform matrix immediately,
+ // but still delay scaling when resizing a SCALING_MODE_FREEZE layer.
mCurrentState.requested.transform.set(x, y);
+ mCurrentState.active.transform.set(x, y);
+
mCurrentState.modified = true;
setTransactionFlags(eTransactionNeeded);
return true;