libgui: Copyback all region except dirty region for newly allocated buffer

- Inside Surface::lock if new buffer is allocated and DirtyRegion does not
cover complete buffer bounds then copyback may not cover all remaining area
as it copyback only area covered by dirty regions from other buffers. This
will lead to left out black area which may cause flicker.

Change-Id: I4a3f7a56fc5fbaf4af926584919577d8d34bed57
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 5360e0d..7859609 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -877,9 +877,13 @@
         if (canCopyBack) {
             Mutex::Autolock lock(mMutex);
             Region oldDirtyRegion;
-            for(int i = 0 ; i < NUM_BUFFER_SLOTS; i++ ) {
-                if(i != backBufferSlot && !mSlots[i].dirtyRegion.isEmpty())
-                    oldDirtyRegion.orSelf(mSlots[i].dirtyRegion);
+            if(mSlots[backBufferSlot].dirtyRegion.isEmpty()) {
+                oldDirtyRegion.set(bounds);
+            } else {
+                for(int i = 0 ; i < NUM_BUFFER_SLOTS; i++ ) {
+                    if(i != backBufferSlot && !mSlots[i].dirtyRegion.isEmpty())
+                        oldDirtyRegion.orSelf(mSlots[i].dirtyRegion);
+                }
             }
             const Region copyback(oldDirtyRegion.subtract(newDirtyRegion));
             if (!copyback.isEmpty())