diff options
author | Mathias Agopian <mathias@google.com> | 2009-12-11 00:56:10 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-12-11 00:56:10 -0800 |
commit | f9b0e826689cca5ecbd40aa49f3ea7f7c73ad2a2 (patch) | |
tree | 3754aea1ac6f237145cddaadd66fba56d8abd939 /libs/surfaceflinger | |
parent | 7eb6ec1f44ade4c7bf3d23cbcfe29a17bbd940b1 (diff) | |
download | frameworks_base-f9b0e826689cca5ecbd40aa49f3ea7f7c73ad2a2.zip frameworks_base-f9b0e826689cca5ecbd40aa49f3ea7f7c73ad2a2.tar.gz frameworks_base-f9b0e826689cca5ecbd40aa49f3ea7f7c73ad2a2.tar.bz2 |
fix [2269582] [TOP-10][Passion_1506][APT:Camera]Sometimes camera preview screen is truncated after launching and back to home screen by home key repeatedly
When a surface is removed from the screen while it holds a "freeze lock", the
release of that lock happens in the destructor as a "safety net". However, it
doesn't trigger an update at that point.
Make sure that "freeze locks" are released from the transaction at the point
a surface is removed from the screen (if it's not on screen, it shouldn't
prevent the screen to redraw, and therefore cannot hold a freeze lock).
The refresh corresponding to that transaction will pick it up as soon as possible.
Diffstat (limited to 'libs/surfaceflinger')
-rw-r--r-- | libs/surfaceflinger/Layer.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp index b12c749..1870d3a 100644 --- a/libs/surfaceflinger/Layer.cpp +++ b/libs/surfaceflinger/Layer.cpp @@ -93,6 +93,7 @@ sp<LayerBaseClient::Surface> Layer::createSurface() const status_t Layer::ditch() { // the layer is not on screen anymore. free as much resources as possible + mFreezeLock.clear(); destroy(); return NO_ERROR; } |