Merge changes I0e90b3f3,Ib7769bde,I4c25f34f,I1ec6400a into jb-mr2-dev

* changes:
  implement display projection clipping in h/w composer
  refactor the crop region for hwc is calculated/set
  apply the projection's viewport to the visibleregion passed to hwc
  set correct crop rectangle in LayerBase::setCrop
diff --git a/cmds/dumpstate/dumpstate.c b/cmds/dumpstate/dumpstate.c
index 1b8f755..9a1839d 100644
--- a/cmds/dumpstate/dumpstate.c
+++ b/cmds/dumpstate/dumpstate.c
@@ -25,7 +25,7 @@
 #include <sys/time.h>
 #include <sys/wait.h>
 #include <unistd.h>
-#include <linux/capability.h>
+#include <sys/capability.h>
 #include <linux/prctl.h>
 
 #include <cutils/properties.h>
diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c
index c272e47..a58eca8 100644
--- a/cmds/installd/commands.c
+++ b/cmds/installd/commands.c
@@ -14,7 +14,7 @@
 ** limitations under the License.
 */
 
-#include <linux/capability.h>
+#include <sys/capability.h>
 #include "installd.h"
 #include <diskusage/dirsize.h>
 #include <selinux/android.h>
diff --git a/cmds/installd/installd.c b/cmds/installd/installd.c
index 2285e79..f81dfe5 100644
--- a/cmds/installd/installd.c
+++ b/cmds/installd/installd.c
@@ -14,7 +14,7 @@
 ** limitations under the License.
 */
 
-#include <linux/capability.h>
+#include <sys/capability.h>
 #include <linux/prctl.h>
 
 #include "installd.h"
diff --git a/include/gui/SurfaceControl.h b/include/gui/SurfaceControl.h
index 9268e7d..f70888d 100644
--- a/include/gui/SurfaceControl.h
+++ b/include/gui/SurfaceControl.h
@@ -57,7 +57,7 @@
     
     status_t    setLayerStack(int32_t layerStack);
     status_t    setLayer(int32_t layer);
-    status_t    setPosition(float x, float y);
+    status_t    setPosition(int32_t x, int32_t y);
     status_t    setSize(uint32_t w, uint32_t h);
     status_t    hide();
     status_t    show();
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 410ad5d..950d16a 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -735,7 +735,7 @@
 sp<Surface> Surface::readFromParcel(const Parcel& data) {
     sp<IBinder> binder(data.readStrongBinder());
     sp<IGraphicBufferProducer> bp(interface_cast<IGraphicBufferProducer>(binder));
-    return new Surface(bp);
+    return bp != NULL ? new Surface(bp): NULL;
 }
 
 // ----------------------------------------------------------------------------
diff --git a/libs/gui/SurfaceControl.cpp b/libs/gui/SurfaceControl.cpp
index e621b22..ef52269 100644
--- a/libs/gui/SurfaceControl.cpp
+++ b/libs/gui/SurfaceControl.cpp
@@ -106,7 +106,7 @@
     const sp<SurfaceComposerClient>& client(mClient);
     return client->setLayer(mSurface, layer);
 }
-status_t SurfaceControl::setPosition(float x, float y) {
+status_t SurfaceControl::setPosition(int32_t x, int32_t y) {
     status_t err = validate();
     if (err < 0) return err;
     const sp<SurfaceComposerClient>& client(mClient);