Loading services/surfaceflinger/SurfaceFlinger.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -788,6 +788,8 @@ void SurfaceFlinger::handlePageFlip() } unlockPageFlip(currentLayers); mDirtyRegion.orSelf(getAndClearInvalidateRegion()); mDirtyRegion.andSelf(screenRegion); } Loading Loading @@ -1798,12 +1800,24 @@ status_t SurfaceFlinger::onTransact( } void SurfaceFlinger::repaintEverything() { Mutex::Autolock _l(mStateLock); const DisplayHardware& hw(graphicPlane(0).displayHardware()); mDirtyRegion.set(hw.bounds()); const Rect bounds(hw.getBounds()); setInvalidateRegion(Region(bounds)); signalEvent(); } void SurfaceFlinger::setInvalidateRegion(const Region& reg) { Mutex::Autolock _l(mInvalidateLock); mInvalidateRegion = reg; } Region SurfaceFlinger::getAndClearInvalidateRegion() { Mutex::Autolock _l(mInvalidateLock); Region reg(mInvalidateRegion); mInvalidateRegion.clear(); return reg; } // --------------------------------------------------------------------------- status_t SurfaceFlinger::renderScreenToTexture(DisplayID dpy, Loading services/surfaceflinger/SurfaceFlinger.h +7 −0 Original line number Diff line number Diff line Loading @@ -308,6 +308,9 @@ private: void composeSurfaces(const Region& dirty); void setInvalidateRegion(const Region& reg); Region getAndClearInvalidateRegion(); ssize_t addClientLayer(const sp<Client>& client, const sp<LayerBaseClient>& lbc); status_t addLayer_l(const sp<LayerBase>& layer); Loading Loading @@ -367,6 +370,10 @@ private: bool mLayersRemoved; DefaultKeyedVector< wp<IBinder>, wp<Layer> > mLayerMap; // access must be protected by mInvalidateLock mutable Mutex mInvalidateLock; Region mInvalidateRegion; // constant members (no synchronization needed for access) sp<IMemoryHeap> mServerHeap; surface_flinger_cblk_t* mServerCblk; Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -788,6 +788,8 @@ void SurfaceFlinger::handlePageFlip() } unlockPageFlip(currentLayers); mDirtyRegion.orSelf(getAndClearInvalidateRegion()); mDirtyRegion.andSelf(screenRegion); } Loading Loading @@ -1798,12 +1800,24 @@ status_t SurfaceFlinger::onTransact( } void SurfaceFlinger::repaintEverything() { Mutex::Autolock _l(mStateLock); const DisplayHardware& hw(graphicPlane(0).displayHardware()); mDirtyRegion.set(hw.bounds()); const Rect bounds(hw.getBounds()); setInvalidateRegion(Region(bounds)); signalEvent(); } void SurfaceFlinger::setInvalidateRegion(const Region& reg) { Mutex::Autolock _l(mInvalidateLock); mInvalidateRegion = reg; } Region SurfaceFlinger::getAndClearInvalidateRegion() { Mutex::Autolock _l(mInvalidateLock); Region reg(mInvalidateRegion); mInvalidateRegion.clear(); return reg; } // --------------------------------------------------------------------------- status_t SurfaceFlinger::renderScreenToTexture(DisplayID dpy, Loading
services/surfaceflinger/SurfaceFlinger.h +7 −0 Original line number Diff line number Diff line Loading @@ -308,6 +308,9 @@ private: void composeSurfaces(const Region& dirty); void setInvalidateRegion(const Region& reg); Region getAndClearInvalidateRegion(); ssize_t addClientLayer(const sp<Client>& client, const sp<LayerBaseClient>& lbc); status_t addLayer_l(const sp<LayerBase>& layer); Loading Loading @@ -367,6 +370,10 @@ private: bool mLayersRemoved; DefaultKeyedVector< wp<IBinder>, wp<Layer> > mLayerMap; // access must be protected by mInvalidateLock mutable Mutex mInvalidateLock; Region mInvalidateRegion; // constant members (no synchronization needed for access) sp<IMemoryHeap> mServerHeap; surface_flinger_cblk_t* mServerCblk; Loading