replicant-frameworks_native/services/surfaceflinger
Jeff Brown 4c05dd175e Ensure that viewport and frame are initialized.
onInitializeDisplays() was posting a transaction with changes
to the display projection.  Unfortunately, it only set the
display orientation field and left viewport and frame
uninitialized.

The uninitialized values flowed downstream and found themselves
baked into a bogus DisplayDevice mGlobalTransform.  That transform
was then applied to some Rects which were turned into Regions
that were them combined with other Regions.

Under certain situations, the uninitialized data might have
a largish value, resulting in the creation of Regions with
components in excess of the Region max-value limit of 0x7ffffff
(note that this is not INT_MAX).  Later when performing a
binary operation using the Region, the Spanner would loop
indefinitely trying to figure out how to stuff a humongous
region inside of a max-value region.  Not content to try
just once, the Spanner would continue trying again and
again, pegging the CPU and hanging surface flinger during boot.

Insanity soon followed.

Bug: 7130713
Change-Id: I0016f0c9662185be833474c212a1dd408096ae23
2012-09-09 00:07:17 -07:00
..
DisplayHardware libgui: move fence handling into ConsumerBase 2012-09-06 17:54:53 -07:00
tests Banish DisplayID from the SurfaceFlinger API. 2012-08-27 14:40:17 -07:00
Android.mk add libsurfaceflinger_ddmconnection for PDK build 2012-08-31 20:08:33 -07:00
Barrier.h
Client.cpp Eradicate DisplayID. 2012-08-27 17:43:43 -07:00
Client.h Banish DisplayID from the SurfaceFlinger API. 2012-08-27 14:40:17 -07:00
clz.cpp
clz.h implement: "Add an ANativeWindow API for SurfaceFlinger to suggest an optimal buffer orientation" 2011-07-19 15:24:46 -07:00
DdmConnection.cpp add libsurfaceflinger_ddmconnection for PDK build 2012-08-31 20:08:33 -07:00
DdmConnection.h add libsurfaceflinger_ddmconnection for PDK build 2012-08-31 20:08:33 -07:00
DisplayDevice.cpp display projection API now has a single function instead of 3 2012-09-04 19:30:46 -07:00
DisplayDevice.h display projection API now has a single function instead of 3 2012-09-04 19:30:46 -07:00
EventThread.cpp Add timeout when waiting for HW vsync 2012-08-31 16:47:44 -07:00
EventThread.h Eradicate DisplayID. 2012-08-27 17:43:43 -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 the visibleRegion was never set in hwcomposer 2012-09-04 20:25:39 -07:00
Layer.h Eradicate DisplayID. 2012-08-27 17:43:43 -07:00
LayerBase.cpp fix a problem where all hwc layers would have the SKIP flags set 2012-09-05 16:49:04 -07:00
LayerBase.h the visible region sent to HWC was garbage 2012-08-31 18:41:22 -07:00
LayerDim.cpp Eradicate DisplayID. 2012-08-27 17:43:43 -07:00
LayerDim.h Eradicate DisplayID. 2012-08-27 17:43:43 -07:00
LayerScreenshot.cpp Eradicate DisplayID. 2012-08-27 17:43:43 -07:00
LayerScreenshot.h Eradicate DisplayID. 2012-08-27 17:43:43 -07:00
MessageQueue.cpp one more step towards multiple display support 2012-07-10 14:29:27 -07:00
MessageQueue.h one more step towards multiple display support 2012-07-10 14:29:27 -07:00
MODULE_LICENSE_APACHE2
SurfaceFlinger.cpp Ensure that viewport and frame are initialized. 2012-09-09 00:07:17 -07:00
SurfaceFlinger.h implement display viewport and frame 2012-09-04 16:59:06 -07:00
SurfaceTextureLayer.cpp update the binder protocol for connect to match that of queueBuffer 2012-04-23 20:06:02 -07:00
SurfaceTextureLayer.h update the binder protocol for connect to match that of queueBuffer 2012-04-23 20:06:02 -07:00
Transform.cpp Ensure that viewport and frame are initialized. 2012-09-09 00:07:17 -07:00
Transform.h SurfaceFlinger: SCALING_MODE_FREEZE cropping support 2012-05-09 12:53:13 -07:00