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

Commit e49dfd53 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6573866 from 6c457787 to rvc-release

Change-Id: If087d25d146c415f3fbbae6cc6c8ca88d233e123
parents 88edd7ca 6c457787
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -3640,7 +3640,8 @@ void InputDispatcher::updateWindowHandlesForDisplayLocked(
            continue;
            continue;
        }
        }


        if (oldHandlesById.find(handle->getId()) != oldHandlesById.end()) {
        if ((oldHandlesById.find(handle->getId()) != oldHandlesById.end()) &&
                (oldHandlesById.at(handle->getId())->getToken() == handle->getToken())) {
            const sp<InputWindowHandle>& oldHandle = oldHandlesById.at(handle->getId());
            const sp<InputWindowHandle>& oldHandle = oldHandlesById.at(handle->getId());
            oldHandle->updateFrom(handle);
            oldHandle->updateFrom(handle);
            newHandles.push_back(oldHandle);
            newHandles.push_back(oldHandle);
+5 −0
Original line number Original line Diff line number Diff line
@@ -148,6 +148,11 @@ private:
    virtual status_t updateActiveBuffer() = 0;
    virtual status_t updateActiveBuffer() = 0;
    virtual status_t updateFrameNumber(nsecs_t latchTime) = 0;
    virtual status_t updateFrameNumber(nsecs_t latchTime) = 0;


    // We generate InputWindowHandles for all buffered layers regardless of whether they
    // have an InputChannel. This is to enable the InputDispatcher to do PID based occlusion
    // detection.
    bool needsInputInfo() const override { return true; }

protected:
protected:
    struct BufferInfo {
    struct BufferInfo {
        nsecs_t mDesiredPresentTime;
        nsecs_t mDesiredPresentTime;
+1 −15
Original line number Original line Diff line number Diff line
@@ -33,7 +33,6 @@
#include <renderengine/Image.h>
#include <renderengine/Image.h>


#include "EffectLayer.h"
#include "EffectLayer.h"
#include "FrameTracer/FrameTracer.h"
#include "TimeStats/TimeStats.h"
#include "TimeStats/TimeStats.h"


namespace android {
namespace android {
@@ -98,9 +97,6 @@ void BufferStateLayer::onLayerDisplayed(const sp<Fence>& releaseFence) {


    // Prevent tracing the same release multiple times.
    // Prevent tracing the same release multiple times.
    if (mPreviousFrameNumber != mPreviousReleasedFrameNumber) {
    if (mPreviousFrameNumber != mPreviousReleasedFrameNumber) {
        mFlinger->mFrameTracer->traceFence(getSequence(), mPreviousBufferId, mPreviousFrameNumber,
                                           std::make_shared<FenceTime>(releaseFence),
                                           FrameTracer::FrameEvent::RELEASE_FENCE);
        mPreviousReleasedFrameNumber = mPreviousFrameNumber;
        mPreviousReleasedFrameNumber = mPreviousFrameNumber;
    }
    }
}
}
@@ -277,9 +273,6 @@ bool BufferStateLayer::setBuffer(const sp<GraphicBuffer>& buffer, const sp<Fence
    const int32_t layerId = getSequence();
    const int32_t layerId = getSequence();
    mFlinger->mTimeStats->setPostTime(layerId, mCurrentState.frameNumber, getName().c_str(),
    mFlinger->mTimeStats->setPostTime(layerId, mCurrentState.frameNumber, getName().c_str(),
                                      postTime);
                                      postTime);
    mFlinger->mFrameTracer->traceNewLayer(layerId, getName().c_str());
    mFlinger->mFrameTracer->traceTimestamp(layerId, buffer->getId(), mCurrentState.frameNumber,
                                           postTime, FrameTracer::FrameEvent::POST);
    desiredPresentTime = desiredPresentTime <= 0 ? 0 : desiredPresentTime;
    desiredPresentTime = desiredPresentTime <= 0 ? 0 : desiredPresentTime;
    mCurrentState.desiredPresentTime = desiredPresentTime;
    mCurrentState.desiredPresentTime = desiredPresentTime;


@@ -580,20 +573,13 @@ status_t BufferStateLayer::updateTexImage(bool& /*recomputeVisibleRegions*/, nse
        status_t err = bindTextureImage();
        status_t err = bindTextureImage();
        if (err != NO_ERROR) {
        if (err != NO_ERROR) {
            mFlinger->mTimeStats->onDestroy(layerId);
            mFlinger->mTimeStats->onDestroy(layerId);
            mFlinger->mFrameTracer->onDestroy(layerId);
            return BAD_VALUE;
            return BAD_VALUE;
        }
        }
    }
    }


    const uint64_t bufferID = getCurrentBufferId();
    mFlinger->mTimeStats->setAcquireFence(layerId, mDrawingState.frameNumber,
    mFlinger->mTimeStats->setAcquireFence(layerId, mDrawingState.frameNumber,
                                          mBufferInfo.mFenceTime);
                                          std::make_shared<FenceTime>(mDrawingState.acquireFence));
    mFlinger->mFrameTracer->traceFence(layerId, bufferID, mDrawingState.frameNumber,
                                       mBufferInfo.mFenceTime,
                                       FrameTracer::FrameEvent::ACQUIRE_FENCE);
    mFlinger->mTimeStats->setLatchTime(layerId, mDrawingState.frameNumber, latchTime);
    mFlinger->mTimeStats->setLatchTime(layerId, mDrawingState.frameNumber, latchTime);
    mFlinger->mFrameTracer->traceTimestamp(layerId, bufferID, mDrawingState.frameNumber, latchTime,
                                           FrameTracer::FrameEvent::LATCH);


    mCurrentStateModified = false;
    mCurrentStateModified = false;


+10 −6
Original line number Original line Diff line number Diff line
@@ -208,13 +208,17 @@ Error Display::getDisplayVsyncPeriod(nsecs_t* outVsyncPeriod) const {
        *outVsyncPeriod = static_cast<nsecs_t>(vsyncPeriodNanos);
        *outVsyncPeriod = static_cast<nsecs_t>(vsyncPeriodNanos);
    } else {
    } else {
        // Get the default vsync period
        // Get the default vsync period
        HWConfigId configId = 0;
        std::shared_ptr<const Display::Config> config;
        auto intError_2_1 = mComposer.getActiveConfig(mId, &configId);
        error = getActiveConfig(&config);
        error = static_cast<Error>(intError_2_1);
        if (error != Error::NONE) {
        if (error == Error::NONE) {
            return error;
            auto config = mConfigs.at(configId);
            *outVsyncPeriod = config->getVsyncPeriod();
        }
        }
        if (!config) {
            // HWC has updated the display modes and hasn't notified us yet.
            return Error::BAD_CONFIG;
        }

        *outVsyncPeriod = config->getVsyncPeriod();
    }
    }


    return error;
    return error;
+24 −4
Original line number Original line Diff line number Diff line
@@ -229,13 +229,23 @@ void Layer::removeFromCurrentState() {
    mFlinger->markLayerPendingRemovalLocked(this);
    mFlinger->markLayerPendingRemovalLocked(this);
}
}


sp<Layer> Layer::getRootLayer() {
    sp<Layer> parent = getParent();
    if (parent == nullptr) {
        return this;
    }
    return parent->getRootLayer();
}

void Layer::onRemovedFromCurrentState() {
void Layer::onRemovedFromCurrentState() {
    auto layersInTree = getLayersInTree(LayerVector::StateSet::Current);
    // Use the root layer since we want to maintain the hierarchy for the entire subtree.
    auto layersInTree = getRootLayer()->getLayersInTree(LayerVector::StateSet::Current);
    std::sort(layersInTree.begin(), layersInTree.end());
    std::sort(layersInTree.begin(), layersInTree.end());
    for (const auto& layer : layersInTree) {

    traverse(LayerVector::StateSet::Current, [&](Layer* layer) {
        layer->removeFromCurrentState();
        layer->removeFromCurrentState();
        layer->removeRelativeZ(layersInTree);
        layer->removeRelativeZ(layersInTree);
    }
    });
}
}


void Layer::addToCurrentState() {
void Layer::addToCurrentState() {
@@ -2343,6 +2353,16 @@ bool Layer::isRemovedFromCurrentState() const {
}
}


InputWindowInfo Layer::fillInputInfo() {
InputWindowInfo Layer::fillInputInfo() {
    if (!hasInputInfo()) {
        mDrawingState.inputInfo.name = getName();
        mDrawingState.inputInfo.ownerUid = mCallingUid;
        mDrawingState.inputInfo.ownerPid = mCallingPid;
        mDrawingState.inputInfo.inputFeatures =
            InputWindowInfo::INPUT_FEATURE_NO_INPUT_CHANNEL;
        mDrawingState.inputInfo.layoutParamsFlags = InputWindowInfo::FLAG_NOT_TOUCH_MODAL;
        mDrawingState.inputInfo.displayId = getLayerStack();
    }

    InputWindowInfo info = mDrawingState.inputInfo;
    InputWindowInfo info = mDrawingState.inputInfo;
    info.id = sequence;
    info.id = sequence;


@@ -2424,7 +2444,7 @@ sp<Layer> Layer::getClonedRoot() {
    return mDrawingParent.promote()->getClonedRoot();
    return mDrawingParent.promote()->getClonedRoot();
}
}


bool Layer::hasInput() const {
bool Layer::hasInputInfo() const {
    return mDrawingState.inputInfo.token != nullptr;
    return mDrawingState.inputInfo.token != nullptr;
}
}


Loading