Merge "Defer surfaceflinger composition until data latch" into oc-dev
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 746d3d9..9cd1214 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -2371,6 +2371,7 @@
bool visibleRegions = false;
bool frameQueued = false;
+ bool newDataLatched = false;
// Store the set of layers that need updates. This set must not change as
// buffers are being latched, as this could result in a deadlock.
@@ -2398,6 +2399,9 @@
const Region dirty(layer->latchBuffer(visibleRegions, latchTime));
layer->useSurfaceDamage();
invalidateLayerStack(layer->getLayerStack(), dirty);
+ if (!dirty.isEmpty()) {
+ newDataLatched = true;
+ }
}
mVisibleRegionsDirty |= visibleRegions;
@@ -2410,7 +2414,7 @@
}
// Only continue with the refresh if there is actually new work to do
- return !mLayersWithQueuedFrames.empty();
+ return !mLayersWithQueuedFrames.empty() && newDataLatched;
}
void SurfaceFlinger::invalidateHwcGeometry()