fix a memory corruption where a SF Client could be used after it's been destroyed
diff --git a/libs/surfaceflinger/Layer.h b/libs/surfaceflinger/Layer.h
index e16d9f4..a19c171 100644
--- a/libs/surfaceflinger/Layer.h
+++ b/libs/surfaceflinger/Layer.h
@@ -58,7 +58,7 @@
virtual uint32_t getTypeInfo() const { return typeInfo; }
Layer(SurfaceFlinger* flinger, DisplayID display,
- Client* c, int32_t i);
+ const sp<Client>& client, int32_t i);
virtual ~Layer();
@@ -66,8 +66,7 @@
return frontBuffer().getPixelFormat();
}
- status_t setBuffers( Client* client,
- uint32_t w, uint32_t h,
+ status_t setBuffers( uint32_t w, uint32_t h,
PixelFormat format, uint32_t flags=0);
virtual void onDraw(const Region& clip) const;
@@ -105,6 +104,7 @@
Region post(uint32_t* oldState, bool& recomputeVisibleRegions);
sp<SurfaceBuffer> peekBuffer();
void destroy();
+ void scheduleBroadcast();
class SurfaceLayer : public LayerBaseClient::Surface