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
Surface: Fix gralloc flags conflicting values.

Due to some custom code, unwanted flags (HW) got added with SW flags.
Restrict the flags to custom ones.

Change-Id: I2ab1c75eef4d6d16f0dd7d43aff3c7377486801a
sf: virtual display clean up

  Since HAL allows Virtual devices, remove virtual display id
  check during setup of virtual display.

Change-Id: I6ec93c0f06842b69e6677f05ae8b45fb1f4225f6
libgui: Fix building with QCOM_BSP + CAF display

Change-Id: Iaf0eb69fa7f409144a266ada683fceb835f62aff
Merge "fix a possible deadlock when removing a layer and destroying a client" into cm-10.2
frameworks/base: Make sure Singleton instantiations are exported

This fixes using Singletons across shared library borders
with gcc 4.7+

Change-Id: I84b9cc99add4ace64c16e4fa8414a4fc7e4693c7
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

frameworks/native: Fix build in ISO C++ 11 mode

Fix constructs that are considered new string literals in C++ 11 mode

Change-Id: Iadcad5f83c79e6726ca66ced5fc1e038b7587069
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

frameworks/native: Fix build in ISO C++11 mode

Change-Id: Icc19cde1bf9c72397ed8bda545e9056483d83e8d
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

binder: Fix ABI incompatibility between older and newer compilers

Parcel::writeString16's first parameter was a char16_t - defined to
uint16_t somewhere else.

With ISO C++11 compatible compilers, however, char16_t is a
compiler-defined-type that is not necessarily unsigned.

This causes the symbol to be different, breaking support for talking
to binary blobs built with pre-ISO C++11-compilers, such as the
Galaxy Nexus RIL.

Change-Id: Ibaa57fbd7d9fc4a95649d3b45d28d29963a9548b
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

frameworks/native: Fix build with ISO C++11 compilers

Fix macro definitions so they can't be confused with C++11 string
literals

Change-Id: I2856933291d08eed789188ea9be036324384e67f
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

surfaceflinger: Work around aliasing violations

Change-Id: I22e758390c1312e60bb4adac2365be201ba6f161
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

Conflicts:
	libs/gui/GLConsumer.cpp
gldual: Fix build with gcc 4.8+
Use -Wno-error=unused-parameter with gcc >= 4.8

Conflicts:
	opengl/tests/gldual/Android.mk

Change-Id: Ic08b20e7973f3f191393b20c90296872359377e6
Merge branch 'DJL10.2' of github.com:DJLIII-Kangs/android_frameworks_native into DJL10.2