display: Add hook for triggering screen update

DSI command mode panels do not need to be refreshed on each
vsync. Due to one frame latency in CABL LUT calculation, when CABL is
enabled for DSI command mode panels, the LUT doesnt get updated for last
frame. Triggering an extra update for DSI command mode panels fixes it.

Change-Id: I7a22e338609430746dda4d3081ff199109a95035
diff --git a/libhwcomposer/hwc_qclient.cpp b/libhwcomposer/hwc_qclient.cpp
index ee31e6c..c130208 100644
--- a/libhwcomposer/hwc_qclient.cpp
+++ b/libhwcomposer/hwc_qclient.cpp
@@ -54,7 +54,7 @@
     ALOGD_IF(QCLIENT_DEBUG,"QClient Destructor invoked");
 }
 
-void QClient::notifyCallback(uint32_t msg, uint32_t value) {
+status_t QClient::notifyCallback(uint32_t msg, uint32_t value) {
     switch(msg) {
         case IQService::SECURING:
             securing(value);
@@ -62,9 +62,13 @@
         case IQService::UNSECURING:
             unsecuring(value);
             break;
+        case IQService::SCREEN_REFRESH:
+            return screenRefresh();
+            break;
         default:
-            return;
+            return NO_ERROR;
     }
+    return NO_ERROR;
 }
 
 void QClient::securing(uint32_t startEnd) {
@@ -93,4 +97,14 @@
         mHwcContext->proc->invalidate(mHwcContext->proc);
 }
 
+android::status_t QClient::screenRefresh() {
+    status_t result = NO_INIT;
+#ifdef QCOM_BSP
+    if(mHwcContext->proc) {
+        mHwcContext->proc->invalidate(mHwcContext->proc);
+        result = NO_ERROR;
+    }
+#endif
+    return result;
+}
 }