OSDN Git Service

surfaceflinger: recompute visibility after sideband stream change
authorJesse Hall <jessehall@google.com>
Tue, 30 Sep 2014 17:35:11 +0000 (10:35 -0700)
committerJesse Hall <jessehall@google.com>
Wed, 1 Oct 2014 16:00:34 +0000 (09:00 -0700)
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

services/surfaceflinger/Layer.cpp

index a36ddd9..fa07656 100644 (file)
@@ -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;