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

Commit 32ce29d9 authored by Pascal Mütschard's avatar Pascal Mütschard Committed by Android (Google) Code Review
Browse files

Merge "Adds a flush jank data layer state update type."

parents 2fb064ff b39918f8
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -684,6 +684,9 @@ void layer_state_t::merge(const layer_state_t& other) {
        what |= eDimmingEnabledChanged;
        dimmingEnabled = other.dimmingEnabled;
    }
    if (other.what & eFlushJankData) {
        what |= eFlushJankData;
    }
    if ((other.what & what) != other.what) {
        ALOGE("Unmerged SurfaceComposer Transaction properties. LayerState::merge needs updating? "
              "other.what=0x%" PRIX64 " what=0x%" PRIX64 " unmerged flags=0x%" PRIX64,
+13 −0
Original line number Diff line number Diff line
@@ -1181,6 +1181,19 @@ sp<IBinder> SurfaceComposerClient::Transaction::getDefaultApplyToken() {
void SurfaceComposerClient::Transaction::setDefaultApplyToken(sp<IBinder> applyToken) {
    sApplyToken = applyToken;
}

status_t SurfaceComposerClient::Transaction::sendSurfaceFlushJankDataTransaction(
        const sp<SurfaceControl>& sc) {
    Transaction t;
    layer_state_t* s = t.getLayerState(sc);
    if (!s) {
        return BAD_INDEX;
    }

    s->what |= layer_state_t::eFlushJankData;
    t.registerSurfaceControlForCallback(sc);
    return t.apply(/*sync=*/false, /* oneWay=*/true);
}
// ---------------------------------------------------------------------------

sp<IBinder> SurfaceComposerClient::createDisplay(const String8& displayName, bool secure,
+1 −1
Original line number Diff line number Diff line
@@ -170,7 +170,7 @@ struct layer_state_t {
        eTransparentRegionChanged = 0x00000020,
        eFlagsChanged = 0x00000040,
        eLayerStackChanged = 0x00000080,
        /* unused = 0x00000100, */
        eFlushJankData = 0x00000100,
        /* unused = 0x00000200, */
        eDimmingEnabledChanged = 0x00000400,
        eShadowRadiusChanged = 0x00000800,
+2 −0
Original line number Diff line number Diff line
@@ -742,6 +742,8 @@ public:

        static sp<IBinder> getDefaultApplyToken();
        static void setDefaultApplyToken(sp<IBinder> applyToken);

        static status_t sendSurfaceFlushJankDataTransaction(const sp<SurfaceControl>& sc);
    };

    status_t clearLayerFrameStats(const sp<IBinder>& token) const;
+4 −0
Original line number Diff line number Diff line
@@ -4830,6 +4830,10 @@ uint32_t SurfaceFlinger::setClientStateLocked(const FrameTimelineInfo& frameTime
                                          s.trustedPresentationListener);
    }

    if (what & layer_state_t::eFlushJankData) {
        // Do nothing. Processing the transaction completed listeners currently cause the flush.
    }

    if (layer->setTransactionCompletedListeners(callbackHandles,
                                                layer->willPresentCurrentTransaction())) {
        flags |= eTraversalNeeded;