s5pc110: hwcomposer: update to hwcomposer HAL v1 api

Change-Id: I2dc71cca002a1c36898831c54e2bea281ac98744
diff --git a/exynos3/s5pc110/libhwcomposer/SecHWC.cpp b/exynos3/s5pc110/libhwcomposer/SecHWC.cpp
index f8a3d1a..88a8e8c 100644
--- a/exynos3/s5pc110/libhwcomposer/SecHWC.cpp
+++ b/exynos3/s5pc110/libhwcomposer/SecHWC.cpp
@@ -23,6 +23,8 @@
  *
  */
 
+#define HWC_REMOVE_DEPRECATED_VERSIONS 1
+
 #include <sys/resource.h>
 #include <cutils/log.h>
 #include <cutils/atomic.h>
@@ -52,7 +54,7 @@
     }
 };
 
-static void dump_layer(hwc_layer_t const* l) {
+static void dump_layer(hwc_layer_1_t const* l) {
     ALOGD("\ttype=%d, flags=%08x, handle=%p, tr=%02x, blend=%04x, {%d,%d,%d,%d}, {%d,%d,%d,%d}",
             l->compositionType, l->flags, l->handle, l->transform, l->blending,
             l->sourceCrop.left,
@@ -65,7 +67,7 @@
             l->displayFrame.bottom);
 }
 
-static int set_src_dst_info(hwc_layer_t *cur,
+static int set_src_dst_info(hwc_layer_1_t *cur,
                             struct hwc_win_info_t *win,
                             struct sec_img *src_img,
                             struct sec_img *dst_img,
@@ -127,7 +129,7 @@
     return 0;
 }
 
-static int get_hwc_compos_decision(hwc_layer_t* cur)
+static int get_hwc_compos_decision(hwc_layer_1_t* cur)
 {
     if(cur->flags & HWC_SKIP_LAYER || !cur->handle) {
         ALOGV("%s::is_skip_layer %d cur->handle %x",
@@ -166,7 +168,7 @@
 }
 
 static int assign_overlay_window(struct hwc_context_t *ctx,
-                                 hwc_layer_t *cur,
+                                 hwc_layer_1_t *cur,
                                  int win_idx,
                                  int layer_idx)
 {
@@ -214,7 +216,8 @@
     return;
 }
 
-static int hwc_prepare(hwc_composer_device_t *dev, hwc_layer_list_t* list)
+static int hwc_prepare(hwc_composer_device_1_t *dev,
+                       size_t numDisplays, hwc_display_contents_1_t** displays)
 {
 
     struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
@@ -222,6 +225,12 @@
     int compositionType = 0;
     int ret;
 
+    // Compat
+    hwc_display_contents_1_t* list = NULL;
+    if (numDisplays > 0) {
+        list = displays[0];
+    }
+
     //if geometry is not changed, there is no need to do any work here
     if( !list || (!(list->flags & HWC_GEOMETRY_CHANGED)))
         return 0;
@@ -236,7 +245,7 @@
     ALOGV("%s:: hwc_prepare list->numHwLayers %d", __func__, list->numHwLayers);
 
     for (int i = 0; i < list->numHwLayers ; i++) {
-        hwc_layer_t* cur = &list->hwLayers[i];
+        hwc_layer_1_t* cur = &list->hwLayers[i];
 
         if (overlay_win_cnt < NUM_OF_WIN) {
             compositionType = get_hwc_compos_decision(cur);
@@ -278,15 +287,13 @@
     return 0;
 }
 
-static int hwc_set(hwc_composer_device_t *dev,
-                   hwc_display_t dpy,
-                   hwc_surface_t sur,
-                   hwc_layer_list_t* list)
+static int hwc_set(hwc_composer_device_1_t *dev,
+                   size_t numDisplays, hwc_display_contents_1_t** displays)
 {
     struct hwc_context_t *ctx = (struct hwc_context_t *)dev;
     unsigned int phyAddr[MAX_NUM_PLANES];
     int skipped_window_mask = 0;
-    hwc_layer_t* cur;
+    hwc_layer_1_t* cur;
     struct hwc_win_info_t *win;
     int ret;
     struct sec_img src_img;
@@ -294,6 +301,11 @@
     struct sec_rect src_rect;
     struct sec_rect dst_rect;
 
+    // Only support one display
+    hwc_display_t dpy = displays[0]->dpy;
+    hwc_surface_t sur = displays[0]->sur;
+    hwc_display_contents_1_t* list = displays[0];
+
     if (dpy == NULL && sur == NULL && list == NULL) {
         // release our resources, the screen is turning off
         // in our case, there is nothing to do.
@@ -461,14 +473,30 @@
     return 0;
 }
 
-static void hwc_registerProcs(struct hwc_composer_device* dev,
+static void hwc_registerProcs(struct hwc_composer_device_1* dev,
         hwc_procs_t const* procs)
 {
     struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
     ctx->procs = const_cast<hwc_procs_t *>(procs);
 }
 
-static int hwc_query(struct hwc_composer_device* dev,
+static int hwc_blank(struct hwc_composer_device_1 *dev,
+        int disp, int blank)
+{
+    struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
+    if (blank) {
+        // release our resources, the screen is turning off
+        // in our case, there is nothing to do.
+        ctx->num_of_fb_layer_prev = 0;
+        return 0;
+    }
+    else {
+        // No need to unblank, will unblank on set()
+        return 0;
+    }
+}
+
+static int hwc_query(struct hwc_composer_device_1* dev,
         int what, int* value)
 {
     struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
@@ -500,7 +528,7 @@
 pthread_cond_t vsync_condition = PTHREAD_COND_INITIALIZER;
 #endif
 
-static int hwc_eventControl(struct hwc_composer_device* dev,
+static int hwc_eventControl(struct hwc_composer_device_1* dev, int dpy,
         int event, int enabled)
 {
     struct hwc_context_t* ctx = (struct hwc_context_t*)dev;
@@ -632,10 +660,6 @@
     return ret;
 }
 
-static const struct hwc_methods hwc_methods = {
-    eventControl: hwc_eventControl
-};
-
 static int hwc_device_open(const struct hw_module_t* module, const char* name,
         struct hw_device_t** device)
 {
@@ -664,15 +688,16 @@
 
     /* initialize the procs */
     dev->device.common.tag = HARDWARE_DEVICE_TAG;
-    dev->device.common.version = HWC_DEVICE_API_VERSION_0_3;
+    dev->device.common.version = HWC_DEVICE_API_VERSION_1_0;
     dev->device.common.module = const_cast<hw_module_t*>(module);
     dev->device.common.close = hwc_device_close;
 
     dev->device.prepare = hwc_prepare;
     dev->device.set = hwc_set;
-    dev->device.registerProcs = hwc_registerProcs;
+    dev->device.eventControl = hwc_eventControl;
+    dev->device.blank = hwc_blank;
     dev->device.query = hwc_query;
-    dev->device.methods = &hwc_methods;
+    dev->device.registerProcs = hwc_registerProcs;
 
     *device = &dev->device.common;
 
diff --git a/exynos3/s5pc110/libhwcomposer/SecHWCUtils.h b/exynos3/s5pc110/libhwcomposer/SecHWCUtils.h
index ac81c0b..ff9ef4a 100644
--- a/exynos3/s5pc110/libhwcomposer/SecHWCUtils.h
+++ b/exynos3/s5pc110/libhwcomposer/SecHWCUtils.h
@@ -112,7 +112,7 @@
 };
 
 struct hwc_context_t {
-    hwc_composer_device_t     device;
+    hwc_composer_device_1_t     device;
 
     /* our private state goes below here */
     struct hwc_win_info_t     win[NUM_OF_WIN];