hwc: Add check for dirtyRect clear call.

We should call clear in dirtyRect only if its a
valid region to clear.
CRs-Fixed: 768200
Change-Id: If627170e9f4893fe13a85a9929511858132d5405
diff --git a/libhwcomposer/hwc_copybit.cpp b/libhwcomposer/hwc_copybit.cpp
index 546a67b..ee5b3b7 100644
--- a/libhwcomposer/hwc_copybit.cpp
+++ b/libhwcomposer/hwc_copybit.cpp
@@ -533,19 +533,21 @@
     }
 
     mDirtyLayerIndex =  checkDirtyRect(ctx, list, dpy);
-    if( mDirtyLayerIndex != -1){
-          hwc_layer_1_t *layer = &list->hwLayers[mDirtyLayerIndex];
+    hwc_rect_t clearRegion = {0,0,0,0};
+    if (CBUtils::getuiClearRegion(list, clearRegion, layerProp)){
+        if (mDirtyLayerIndex != -1){
+            hwc_layer_1_t *layer = &list->hwLayers[mDirtyLayerIndex];
 #ifdef QCOM_BSP
-          clear(renderBuffer,layer->dirtyRect);
+             hwc_rect_t result = getIntersection(layer->dirtyRect,clearRegion);
+             if(isValidRect(result))
+               clear(renderBuffer,result);
 #else
-          clear(renderBuffer,layer->displayFrame);
+             clear(renderBuffer,clearRegion);
 #endif
-    } else {
-          hwc_rect_t clearRegion = {0,0,0,0};
-          if(CBUtils::getuiClearRegion(list, clearRegion, layerProp))
+        } else {
              clear(renderBuffer, clearRegion);
+        }
     }
-
     // numAppLayers-1, as we iterate from 0th layer index with HWC_COPYBIT flag
     for (int i = 0; i <= (ctx->listStats[dpy].numAppLayers-1); i++) {
         if(!(layerProp[i].mFlags & HWC_COPYBIT)) {