replicant-frameworks_native/services/surfaceflinger
Mathias Agopian dea20b1f34 Fix a race in SurfaceFlinger that could cause layers to be leaked forever.
The transaction flags were atomically read-and-cleared to determine if
a transaction was needed, in the later case, mStateLock was taken to
keep the current state still during the transaction. This left a small
window open, where a layer could be removed after the transaction flags
were checked but before the transaction was started holding the lock.
In that situation eTraversalNeeded would be set but only seen during the
next transaction cycle; however, because we're handling this transaction
(because of another flag) it will be commited, "loosing" the information
about the layer being removed -- so when the next transaction cycle due
to eTraversalNeeded starts, it won't notice that layers have been removed
and won't populated the ditchedLayers array.

Change-Id: Iedea9e25fee8dd98a0c5bd5ad41a20fcadf75b47
2011-05-03 20:44:51 -07:00
..
DisplayHardware Merge "remove support for console in SurfaceFlinger" 2011-04-19 18:19:15 -07:00
tests frameworks/base: android_native_buffer_t -> ANativeWindowBuffer 2011-05-03 16:40:14 -07:00
Android.mk merge libsurfaceflinger_client into libgui 2011-03-25 18:42:40 -07:00
Barrier.h
clz.cpp
clz.h
GLExtensions.cpp
GLExtensions.h
Layer.cpp am ba5aebd1: am ac505b86: am f0556bb9: am 86d1d747: Merge "Add lock before calling initEglImage" 2011-04-27 13:54:08 -07:00
Layer.h SurfaceFlinger: Respect the PROTECTED gralloc bit. 2011-03-10 16:25:48 -08:00
LayerBase.cpp revert the surface purgatory list and dependent changes. 2011-03-09 17:00:41 -08:00
LayerBase.h SurfaceFlinger: Respect the PROTECTED gralloc bit. 2011-03-10 16:25:48 -08:00
LayerDim.cpp revert the surface purgatory list and dependent changes. 2011-03-09 17:00:41 -08:00
LayerDim.h am 50b029d5: am 7ba35f5a: Merge "[3418265] apply layer transformations to the DimLayer." into honeycomb 2011-02-02 16:46:46 -08:00
MessageQueue.cpp
MessageQueue.h
MODULE_LICENSE_APACHE2
SurfaceFlinger.cpp Fix a race in SurfaceFlinger that could cause layers to be leaked forever. 2011-05-03 20:44:51 -07:00
SurfaceFlinger.h Fix a race in SurfaceFlinger that could cause layers to be leaked forever. 2011-05-03 20:44:51 -07:00
TextureManager.cpp frameworks/base: android_native_buffer_t -> ANativeWindowBuffer 2011-05-03 16:40:14 -07:00
TextureManager.h
Transform.cpp
Transform.h