libexternal: Call new IOCTL to commit on external display

From post() for external call the new ioctl MSMFB_OVERLAY_COMMIT
to update the external display.

The new IOCTL is faster than the default PAN and waits for DMAE to finish before
returning. This fixes tearing.

Bug: 7249589

Acked-by: Arun Kumar K.R <akumarkr@codeaurora.org>
Change-Id: Ic755e634d5f141a567c7d93f39c74bb087cd7044
diff --git a/libexternal/external.cpp b/libexternal/external.cpp
index 1c4a477..92a129b 100644
--- a/libexternal/external.cpp
+++ b/libexternal/external.cpp
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (C) 2010 The Android Open Source Project
  * Copyright (C) 2012, The Linux Foundation. All rights reserved.
@@ -421,6 +422,8 @@
         }
         // Store the external display
         mExternalDisplay = connected;
+        ALOGD_IF(DEBUG, "In %s: mExternalDisplay = %d", __FUNCTION__,
+                                                         mExternalDisplay);
         const char* prop = (connected) ? "1" : "0";
         // set system property
         property_set("hw.hdmiON", prop);
@@ -461,12 +464,16 @@
     return ret;
 }
 
+/*
+ * commits the changes to the external display
+ * mExternalDisplay has the mixer number(1-> HDMI 2-> WFD)
+ */
 bool ExternalDisplay::post()
 {
     if(mFd == -1) {
         return false;
-    } else if(ioctl(mFd, FBIOPUT_VSCREENINFO, &mVInfo) == -1) {
-         ALOGE("%s: FBIOPUT_VSCREENINFO failed, str: %s", __FUNCTION__,
+    } else if(ioctl(mFd, MSMFB_OVERLAY_COMMIT, &mExternalDisplay) == -1) {
+         ALOGE("%s: MSMFB_OVERLAY_COMMIT failed, str: %s", __FUNCTION__,
                                                           strerror(errno));
          return false;
     }