Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a36bf926 authored by Chia-I Wu's avatar Chia-I Wu
Browse files

surfaceflinger: refresh after latching any buffer

We should not skip refresh when a latched buffer happens to have an
empty dirty region.  Also, we should signal a layer update when we
skip refresh.

Bug: 62752640
Test: manual
Change-Id: Ia603e7eeb37491c6ece7ea08d5d1e3b7ba93e6fa
parent 77e9eeba
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -408,6 +408,7 @@ public:
     * to figure out if the content or size of a surface has changed.
     */
    Region latchBuffer(bool& recomputeVisibleRegions, nsecs_t latchTime);
    bool isBufferLatched() const { return mRefreshPending; }

    bool isPotentialCursor() const { return mPotentialCursor;}

+2 −2
Original line number Diff line number Diff line
@@ -2457,7 +2457,7 @@ bool SurfaceFlinger::handlePageFlip()
        const Region dirty(layer->latchBuffer(visibleRegions, latchTime));
        layer->useSurfaceDamage();
        invalidateLayerStack(layer->getLayerStack(), dirty);
        if (!dirty.isEmpty()) {
        if (layer->isBufferLatched()) {
            newDataLatched = true;
        }
    }
@@ -2467,7 +2467,7 @@ bool SurfaceFlinger::handlePageFlip()
    // If we will need to wake up at some time in the future to deal with a
    // queued frame that shouldn't be displayed during this vsync period, wake
    // up during the next vsync period to check again.
    if (frameQueued && mLayersWithQueuedFrames.empty()) {
    if (frameQueued && (mLayersWithQueuedFrames.empty() || !newDataLatched)) {
        signalLayerUpdate();
    }