Merge "SF: Fix repaint everything logic" into pi-dev
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index dfde30b..20a6d30 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1387,7 +1387,7 @@
if (sequenceId != getBE().mComposerSequenceId) {
return;
}
- repaintEverythingLocked();
+ repaintEverything();
}
void SurfaceFlinger::setVsyncEnabled(int disp, int enabled) {
@@ -1949,7 +1949,7 @@
ALOGV("setUpHWComposer");
for (size_t dpy=0 ; dpy<mDisplays.size() ; dpy++) {
- bool dirty = !mDisplays[dpy]->getDirtyRegion(false).isEmpty();
+ bool dirty = !mDisplays[dpy]->getDirtyRegion(mRepaintEverything).isEmpty();
bool empty = mDisplays[dpy]->getVisibleLayersSortedByZ().size() == 0;
bool wasEmpty = !mDisplays[dpy]->lastCompositionHadVisibleLayers;
@@ -3716,7 +3716,7 @@
mVisibleRegionsDirty = true;
mHasPoweredOff = true;
- repaintEverythingLocked();
+ repaintEverything();
struct sched_param param = {0};
param.sched_priority = 1;
@@ -4637,20 +4637,9 @@
return err;
}
-void SurfaceFlinger::repaintEverythingLocked() {
- android_atomic_or(1, &mRepaintEverything);
- for (size_t dpy = 0; dpy < mDisplays.size(); dpy++) {
- const sp<DisplayDevice>& displayDevice(mDisplays[dpy]);
- const Rect bounds(displayDevice->getBounds());
- displayDevice->dirtyRegion.orSelf(Region(bounds));
- }
- signalTransaction();
-}
-
void SurfaceFlinger::repaintEverything() {
- ConditionalLock _l(mStateLock,
- std::this_thread::get_id() != mMainThreadId);
- repaintEverythingLocked();
+ android_atomic_or(1, &mRepaintEverything);
+ signalTransaction();
}
// A simple RAII class to disconnect from an ANativeWindow* when it goes out of scope
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 14028ff..33706da 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -312,8 +312,6 @@
// force full composition on all displays
void repaintEverything();
- // Can only be called from the main thread or with mStateLock held
- void repaintEverythingLocked();
// returns the default Display
sp<const DisplayDevice> getDefaultDisplayDevice() const {