Merge "libgui: Copyback all region except dirty region for newly allocated buffer"
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())