replicant-frameworks_native/services/surfaceflinger
Mathias Agopian 7cc6df5957 fix a possible deadlock when removing a layer and destroying a client
generally the last reference to a Layer is released in commitTransaction()
with mStateLock held. Layer itself only holds weak references to Client,
however, ~Layer() briefly promotes this weak reference -- during that time
the all other strong references to that Client go away, ~Layer is left with
the last one... then hell breaks loose as ~Client is called, which in turn
needs to acquire mStateLock.

We fix this by holding a temporary copy of the drawing state during
the transaction so that the side-effects of copying the current
state into the drawing state are seen only after mStateLock has
been released.

Bug: 9106453
Change-Id: Ic5348ac12283500ead87286a37565e8da35f1db2
2013-06-05 14:38:23 -07:00
..
DisplayHardware BufferQueue: track buffer-queue by instance vs. by reference 2013-05-23 22:17:54 +00:00
tests Surface can now be created only from an IGraphicBufferProducer 2013-03-12 18:45:09 -07:00
Android.mk make all libsurfaceflinger and libsensorservice symbols's visibility hidden 2013-05-09 16:51:37 -07:00
Barrier.h
Client.cpp get rid of ISurface 2013-03-12 17:11:48 -07:00
Client.h get rid of ISurface 2013-03-12 17:11:48 -07:00
clz.h implement: "Add an ANativeWindow API for SurfaceFlinger to suggest an optimal buffer orientation" 2011-07-19 15:24:46 -07:00
Colorizer.h Add a --color option to dumpsys SurfaceFlinger 2013-04-22 21:51:28 +02:00
DdmConnection.cpp fix SurfaceFlinger DDMS debugging 2012-10-07 16:41:12 -07:00
DdmConnection.h add libsurfaceflinger_ddmconnection for PDK build 2012-08-31 20:08:33 -07:00
DisplayDevice.cpp reformat Rect.{cpp|h} 2013-05-10 18:03:31 -07:00
DisplayDevice.h clean-up/simplify all dump() APIs 2013-04-22 21:51:28 +02:00
EventThread.cpp clean-up/simplify all dump() APIs 2013-04-22 21:51:28 +02:00
EventThread.h clean-up/simplify all dump() APIs 2013-04-22 21:51:28 +02:00
FrameTracker.cpp SurfaceFlinger: add win anim frame time tracking 2013-02-08 13:32:21 -08:00
FrameTracker.h SurfaceFlinger: add win anim frame time tracking 2013-02-08 13:32:21 -08:00
GLExtensions.cpp don't use compile-time configuration of libgui as much as possible 2013-03-29 15:33:47 -07:00
GLExtensions.h
Layer.cpp Prevent opaque windows from making framebuffer translucent 2013-05-24 10:51:41 -07:00
Layer.h Add a --color option to dumpsys SurfaceFlinger 2013-04-22 21:51:28 +02:00
LayerDim.cpp get rid of ISurface 2013-03-12 17:11:48 -07:00
LayerDim.h get rid of ISurface 2013-03-12 17:11:48 -07:00
MessageQueue.cpp fix another bug where screenshots could end-up all black 2013-04-10 16:27:17 -07:00
MessageQueue.h fix another bug where screenshots could end-up all black 2013-04-10 16:27:17 -07:00
MODULE_LICENSE_APACHE2
SurfaceFlinger.cpp fix a possible deadlock when removing a layer and destroying a client 2013-06-05 14:38:23 -07:00
SurfaceFlinger.h Prevent opaque windows from making framebuffer translucent 2013-05-24 10:51:41 -07:00
SurfaceFlingerConsumer.cpp BufferQueue: track buffer-queue by instance vs. by reference 2013-05-23 22:17:54 +00:00
SurfaceFlingerConsumer.h Rename ISurfaceTexture and SurfaceTexture 2012-12-18 13:10:48 -08:00
SurfaceTextureLayer.cpp get rid of purgatory and fix QueuesToWindowComposer query 2013-03-14 19:18:13 -07:00
SurfaceTextureLayer.h get rid of purgatory and fix QueuesToWindowComposer query 2013-03-14 19:18:13 -07:00
Transform.cpp implement display projection clipping in h/w composer 2013-02-28 18:43:04 -08:00
Transform.h implement display projection clipping in h/w composer 2013-02-28 18:43:04 -08:00