summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2014-09-30 10:35:11 -0700
committerJesse Hall <jessehall@google.com>2014-10-01 09:00:34 -0700
commit5bf786d8f00ff8eee64ebf330dac55e33a0f97b1 (patch)
tree665dab472019def8a3b9d249503fb89e964dbe3b
parent5ee2c9d20c0fbecf6b4a482eb8d8bfdf85d0d424 (diff)
downloadnative-5bf786d8f00ff8eee64ebf330dac55e33a0f97b1.tar.gz
surfaceflinger: recompute visibility after sideband stream change
We normally recompute layer visibility when a layer gets its first buffer; before then it's treated as invisible. Sideband layers never get a buffer (as far as SurfaceFlinger knows), so never became visible. Now we also recompute visibility when a layer gets a new sideband stream. Bug: 17752511 Change-Id: I84e150f196eb2eb7bcd2616248e5e3fa73624809
-rw-r--r--services/surfaceflinger/Layer.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index a36ddd9581..fa07656e23 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -1042,6 +1042,10 @@ Region Layer::latchBuffer(bool& recomputeVisibleRegions)
if (android_atomic_acquire_cas(true, false, &mSidebandStreamChanged) == 0) {
// mSidebandStreamChanged was true
mSidebandStream = mSurfaceFlingerConsumer->getSidebandStream();
+ recomputeVisibleRegions = true;
+
+ const State& s(getDrawingState());
+ return s.transform.transform(Region(Rect(s.active.w, s.active.h)));
}
Region outDirtyRegion;