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())