diff options
author | Mathias Agopian <mathias@google.com> | 2011-08-12 17:09:09 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2011-08-12 17:09:09 -0700 |
commit | b290b5e3cb0d3c5696279f8dd7f29a71fd7065da (patch) | |
tree | 90c6bf5d7444769b8d74bf715d1ce45f069821b1 /services/surfaceflinger | |
parent | 02bb0e4e3bccd0b5a87c46b248a8b05d3bb35844 (diff) | |
download | frameworks_base-b290b5e3cb0d3c5696279f8dd7f29a71fd7065da.zip frameworks_base-b290b5e3cb0d3c5696279f8dd7f29a71fd7065da.tar.gz frameworks_base-b290b5e3cb0d3c5696279f8dd7f29a71fd7065da.tar.bz2 |
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
Diffstat (limited to 'services/surfaceflinger')
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 55b354d..0425fc3 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -191,14 +191,13 @@ void Layer::setGeometry(hwc_layer_t* hwcl) * 1) buffer orientation/flip/mirror * 2) state transformation (window manager) * 3) layer orientation (screen orientation) + * mOrientation is already the composition of (2) and (3) * (NOTE: the matrices are multiplied in reverse order) */ const Transform bufferOrientation(mCurrentTransform); - const Transform& stateTransform(s.transform); const Transform layerOrientation(mOrientation); - - const Transform tr(layerOrientation * stateTransform * bufferOrientation); + const Transform tr(layerOrientation * bufferOrientation); // this gives us only the "orientation" component of the transform const uint32_t finalTransform = tr.getOrientation(); |