Merge "SF: Support to determine if the non-virtual displays are secure"
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp
index c51fd53..73de186 100644
--- a/libs/gui/BufferQueueConsumer.cpp
+++ b/libs/gui/BufferQueueConsumer.cpp
@@ -92,7 +92,7 @@
         // be discarded based on them.
 #ifdef QCOM_BSP
         char property[PROPERTY_VALUE_MAX];
-        if (property_get("ro.sf.default_app_buffer", property, NULL) > 0) {
+        if (property_get("sf.default.app_buffer_count", property, NULL) > 0) {
            if (!mCore->mQueue[0].mIsAutoTimestamp && mCore->mDefaultMaxBufferCount < 3) {
               const BufferItem& bufferItem(mCore->mQueue[0]);
               nsecs_t desiredPresent = bufferItem.mTimestamp;
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 5d2db47..1f17b5c 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -1222,6 +1222,8 @@
 static String8 getFormatStr(PixelFormat format) {
     switch (format) {
     case PIXEL_FORMAT_RGBA_8888:    return String8("RGBA_8888");
+    case PIXEL_FORMAT_RGBA_4444:    return String8("RGBA_4444");
+    case PIXEL_FORMAT_RGBA_5551:    return String8("RGBA_5551");
     case PIXEL_FORMAT_RGBX_8888:    return String8("RGBx_8888");
     case PIXEL_FORMAT_RGB_888:      return String8("RGB_888");
     case PIXEL_FORMAT_RGB_565:      return String8("RGB_565");
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 8f52fb1..2598d24 100755
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -164,7 +164,7 @@
 
 #ifdef QCOM_BSP
     char property[PROPERTY_VALUE_MAX];
-    if (property_get("ro.sf.default_app_buffer", property, NULL) > 0) {
+    if (property_get("sf.default.app_buffer_count", property, NULL) > 0) {
         mSurfaceFlingerConsumer->setDefaultMaxBufferCount(atoi(property));
     }
 #endif
@@ -477,7 +477,7 @@
 
     // this gives us only the "orientation" component of the transform
     const State& s(getDrawingState());
-    if (!isOpaque(s) || s.alpha != 0xFF) {
+    if (!isOpaque(s)) {
         layer.setBlending(mPremultipliedAlpha ?
                 HWC_BLENDING_PREMULT :
                 HWC_BLENDING_COVERAGE);
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 4a26326..41b8435 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -415,6 +415,12 @@
     status_t err;
     Mutex::Autolock _l(mStateLock);
 
+    /* Set the mask bit of the sigset to block the SIGPIPE signal */
+    sigset_t sigMask;
+    sigemptyset (&sigMask);
+    sigaddset(&sigMask, SIGPIPE);
+    sigprocmask(SIG_BLOCK, &sigMask, NULL);
+
     // initialize EGL for the default display
     mEGLDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
     eglInitialize(mEGLDisplay, NULL, NULL);
@@ -528,7 +534,7 @@
 
 status_t SurfaceFlinger::getDisplayConfigs(const sp<IBinder>& display,
         Vector<DisplayInfo>* configs) {
-    if (configs == NULL) {
+    if ((configs == NULL) || (display.get() == NULL)) {
         return BAD_VALUE;
     }