diff options
| author | 2009-09-30 12:48:47 -0700 | |
|---|---|---|
| committer | 2009-09-30 12:48:47 -0700 | |
| commit | 6656dbc81273424d9b4bf78c42a4e179dbe1cb71 (patch) | |
| tree | 8a4099c504d28f26b1e8cc33a4ff7b70303f12c1 | |
| parent | 7e4a587f6038bcf9b58ca615fce9e52fd47e30c3 (diff) | |
invalidate the surface when the physical changes
| -rw-r--r-- | libs/surfaceflinger/Layer.cpp | 11 | ||||
| -rw-r--r-- | libs/surfaceflinger/LayerBase.cpp | 6 |
2 files changed, 10 insertions, 7 deletions
diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp index d59f205d3c..022388aa4c 100644 --- a/libs/surfaceflinger/Layer.cpp +++ b/libs/surfaceflinger/Layer.cpp @@ -330,10 +330,6 @@ uint32_t Layer::doTransaction(uint32_t flags) int(mBuffers[0]->getWidth()), int(mBuffers[0]->getHeight()), int(mBuffers[1]->getWidth()), int(mBuffers[1]->getHeight())); - // record the new size, form this point on, when the client request a - // buffer, it'll get the new size. - setDrawingSize(temp.requested_w, temp.requested_h); - // we're being resized and there is a freeze display request, // acquire a freeze lock, so that the screen stays put // until we've redrawn at the new size; this is to avoid @@ -346,9 +342,10 @@ uint32_t Layer::doTransaction(uint32_t flags) } } - // recompute the visible region - flags |= Layer::eVisibleRegion; - this->contentDirty = true; + // record the new size, form this point on, when the client request a + // buffer, it'll get the new size. + setDrawingSize(temp.requested_w, temp.requested_h); + // all buffers need reallocation lcblk->reallocate(); } diff --git a/libs/surfaceflinger/LayerBase.cpp b/libs/surfaceflinger/LayerBase.cpp index df1407d4a1..d83c8429eb 100644 --- a/libs/surfaceflinger/LayerBase.cpp +++ b/libs/surfaceflinger/LayerBase.cpp @@ -202,6 +202,12 @@ uint32_t LayerBase::doTransaction(uint32_t flags) editTemp.h = temp.requested_h; } + if ((front.w != temp.w) || (front.h != temp.h)) { + // invalidate and recompute the visible regions if needed + flags |= Layer::eVisibleRegion; + this->contentDirty = true; + } + if (temp.sequence != front.sequence) { // invalidate and recompute the visible regions if needed flags |= eVisibleRegion; |