fix an orientation change drawing artifact.
a wrong orientation would be briefly shown when rotation the screen. this happened when the window manager set a custom transformation and the h/w composer was used. the custom transformation was applied twice in that case. Bug: 5037522 Change-Id: Ic1f87b63cd843f4475e4265d1624463825d775c4
This commit is contained in:
parent
f83b060b63
commit
c5953904ad
@ -191,14 +191,13 @@ void Layer::setGeometry(hwc_layer_t* hwcl)
|
|||||||
* 1) buffer orientation/flip/mirror
|
* 1) buffer orientation/flip/mirror
|
||||||
* 2) state transformation (window manager)
|
* 2) state transformation (window manager)
|
||||||
* 3) layer orientation (screen orientation)
|
* 3) layer orientation (screen orientation)
|
||||||
|
* mOrientation is already the composition of (2) and (3)
|
||||||
* (NOTE: the matrices are multiplied in reverse order)
|
* (NOTE: the matrices are multiplied in reverse order)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const Transform bufferOrientation(mCurrentTransform);
|
const Transform bufferOrientation(mCurrentTransform);
|
||||||
const Transform& stateTransform(s.transform);
|
|
||||||
const Transform layerOrientation(mOrientation);
|
const Transform layerOrientation(mOrientation);
|
||||||
|
const Transform tr(layerOrientation * bufferOrientation);
|
||||||
const Transform tr(layerOrientation * stateTransform * bufferOrientation);
|
|
||||||
|
|
||||||
// this gives us only the "orientation" component of the transform
|
// this gives us only the "orientation" component of the transform
|
||||||
const uint32_t finalTransform = tr.getOrientation();
|
const uint32_t finalTransform = tr.getOrientation();
|
||||||
|
Loading…
Reference in New Issue
Block a user