summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mathias Agopian <mathias@google.com> 2009-09-30 12:48:47 -0700
committer Mathias Agopian <mathias@google.com> 2009-09-30 12:48:47 -0700
commit6656dbc81273424d9b4bf78c42a4e179dbe1cb71 (patch)
tree8a4099c504d28f26b1e8cc33a4ff7b70303f12c1
parent7e4a587f6038bcf9b58ca615fce9e52fd47e30c3 (diff)
invalidate the surface when the physical changes
-rw-r--r--libs/surfaceflinger/Layer.cpp11
-rw-r--r--libs/surfaceflinger/LayerBase.cpp6
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;