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

Commit 562f4b2c authored by Mathias Agopian's avatar Mathias Agopian
Browse files

handle surfaces posts independently from composition

surfaceflinger will now handle each surface post
as soon as possible and handle the composition
itself at VSYNC time as usual.

Change-Id: I6b1ae33fd56062d86e5419ebab8def0ca5803fbf
parent ea0c6c93
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -133,8 +133,7 @@ status_t MessageQueue::postMessage(
}

void MessageQueue::invalidate() {
//    mHandler->signalInvalidate();
    mEvents->requestNextVsync();
    mHandler->signalInvalidate();
}

void MessageQueue::refresh() {
+6 −11
Original line number Diff line number Diff line
@@ -407,8 +407,7 @@ void SurfaceFlinger::onMessageReceived(int32_t what)
{
    ATRACE_CALL();
    switch (what) {
        case MessageQueue::REFRESH: {
//        case MessageQueue::INVALIDATE: {
        case MessageQueue::INVALIDATE: {
            // if we're in a global transaction, don't do anything.
            const uint32_t mask = eTransactionNeeded | eTraversalNeeded;
            uint32_t transactionFlags = peekTransactionFlags(mask);
@@ -419,20 +418,16 @@ void SurfaceFlinger::onMessageReceived(int32_t what)
            // post surfaces (if needed)
            handlePageFlip();

//            signalRefresh();
//
//        } break;
//
//        case MessageQueue::REFRESH: {
            signalRefresh();

        } break;

        case MessageQueue::REFRESH: {

            handleRefresh();

            const DisplayHardware& hw(graphicPlane(0).displayHardware());

//            if (mDirtyRegion.isEmpty()) {
//                return;
//            }

            if (CC_UNLIKELY(mHwWorkListDirty)) {
                // build the h/w work list
                handleWorkList();