replicant-frameworks_native/services/surfaceflinger
Mathias Agopian 34cd9b72f1 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.

Bug: 4483049

Change-Id: Ibb5989312f871339928ee1aa3f9567770d72969b
2011-05-23 16:13:20 -07:00
..
DisplayHardware [3171580] SurfaceFlinger Bypass mode. (DO NOT MERGE) 2010-12-03 17:35:07 -08:00
tests fix [3118445] Transform * Transform does not work as expected 2010-10-24 14:53:05 -07:00
Android.mk minor clean-up. SurfaceFlinger doesn't need libpixelflinger.so. (DO NOT MERGE) 2011-01-25 14:18:15 -08:00
Barrier.h move native services under services/ 2010-07-14 17:59:35 -07:00
BlurFilter.cpp move native services under services/ 2010-07-14 17:59:35 -07:00
BlurFilter.h move native services under services/ 2010-07-14 17:59:35 -07:00
clz.cpp move native services under services/ 2010-07-14 17:59:35 -07:00
clz.h move native services under services/ 2010-07-14 17:59:35 -07:00
GLExtensions.cpp add support for [1974164] Be able to take a screen shot on the device 2010-09-24 14:56:39 -07:00
GLExtensions.h add support for [1974164] Be able to take a screen shot on the device 2010-09-24 14:56:39 -07:00
Layer.cpp revert the surface purgatory list and dependent changes. 2011-03-09 17:00:41 -08:00
Layer.h revert the surface purgatory list and dependent changes. 2011-03-09 17:00:41 -08:00
LayerBase.cpp revert the surface purgatory list and dependent changes. 2011-03-09 17:00:41 -08:00
LayerBase.h revert the surface purgatory list and dependent changes. 2011-03-09 17:00:41 -08:00
LayerBlur.cpp surfaceflinger / GL extensions cleanup 2010-09-15 17:15:31 -07:00
LayerBlur.h move native services under services/ 2010-07-14 17:59:35 -07:00
LayerBuffer.cpp really fix [3118445] Transform * Transform does not work as expected 2010-10-27 18:04:11 -07:00
LayerBuffer.h fix [3123221] Video sticks playing back upside down following orientation switch 2010-10-24 19:03:58 -07:00
LayerDim.cpp revert the surface purgatory list and dependent changes. 2011-03-09 17:00:41 -08:00
LayerDim.h move native services under services/ 2010-07-14 17:59:35 -07:00
MessageQueue.cpp deliver invalidate messages AFTER other messages 2010-10-11 14:11:15 -07:00
MessageQueue.h move native services under services/ 2010-07-14 17:59:35 -07:00
MODULE_LICENSE_APACHE2 move native services under services/ 2010-07-14 17:59:35 -07:00
SurfaceFlinger.cpp Fix a race in SurfaceFlinger that could cause layers to be leaked forever. 2011-05-23 16:13:20 -07:00
SurfaceFlinger.h Fix a race in SurfaceFlinger that could cause layers to be leaked forever. 2011-05-23 16:13:20 -07:00
TextureManager.cpp surfaceflinger / GL extensions cleanup 2010-09-15 17:15:31 -07:00
TextureManager.h fix [2931513] Add support for setting the orientation of an ANativeWindow 2010-08-24 15:40:50 -07:00
Transform.cpp really fix [3118445] Transform * Transform does not work as expected 2010-10-27 18:04:11 -07:00
Transform.h fix [3118445] Transform * Transform does not work as expected 2010-10-24 14:53:05 -07:00