Merge "libhwcomposer: Allow 2 YUV layer frames to use MDP composition"
diff --git a/libexternal/external.cpp b/libexternal/external.cpp
index ecacd7b..b721195 100644
--- a/libexternal/external.cpp
+++ b/libexternal/external.cpp
@@ -240,8 +240,9 @@
     info.reserved[0] = 0;
     info.reserved[1] = 0;
     info.reserved[2] = 0;
+#ifndef FB_METADATA_VIDEO_INFO_CODE_SUPPORT
     info.reserved[3] = (info.reserved[3] & 0xFFFF) | (video_format << 16);
-
+#endif
     info.xoffset = 0;
     info.yoffset = 0;
     info.xres = active_h;
@@ -537,6 +538,16 @@
             ALOGD("In %s: FBIOPUT_VSCREENINFO failed Err Str = %s",
                                                  __FUNCTION__, strerror(errno));
         }
+#ifdef FB_METADATA_VIDEO_INFO_CODE_SUPPORT
+        struct msmfb_metadata metadata;
+        memset(&metadata, 0 , sizeof(metadata));
+        metadata.op = metadata_op_vic;
+        metadata.data.video_info_code = mode->video_format;
+        if (ioctl(mFd, MSMFB_METADATA_SET, &metadata) == -1) {
+            ALOGD("In %s: MSMFB_METADATA_SET failed Err Str = %s",
+                                                 __FUNCTION__, strerror(errno));
+        }
+#endif
         mCurrentMode = ID;
     }
 }
diff --git a/libgralloc/mapper.cpp b/libgralloc/mapper.cpp
index 197c372..b3e371a 100644
--- a/libgralloc/mapper.cpp
+++ b/libgralloc/mapper.cpp
@@ -117,7 +117,10 @@
             }
         }
     }
+    /* need to initialize the pointer to NULL otherwise unmapping for that
+     * buffer happens twice which leads to crash */
     hnd->base = 0;
+    hnd->base_metadata = 0;
     return 0;
 }
 
@@ -144,6 +147,7 @@
 
     private_handle_t* hnd = (private_handle_t*)handle;
     hnd->base = 0;
+    hnd->base_metadata = 0;
     void *vaddr;
     int err = gralloc_map(module, handle, &vaddr);
     if (err) {
@@ -190,6 +194,7 @@
         gralloc_unmap(module, handle);
     }
     hnd->base = 0;
+    hnd->base_metadata = 0;
     // Release the genlock
     if (-1 != hnd->genlockHandle) {
         return genlock_release_lock((native_handle_t *)handle);