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

Commit 74c0bf65 authored by Patrick Williams's avatar Patrick Williams
Browse files

CE: Make TimeStats nullable

This CL allows CE instances without TimeStats. This will be used by the
short lived CE instances created in the upcoming renderScreenImpl
refactor.

Bug: 238643986
Test: presubmits
Change-Id: I7f996f3ce660b335f6228069aa04bba617806b68
parent 8aed5d2b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ public:
    virtual renderengine::RenderEngine& getRenderEngine() const = 0;
    virtual void setRenderEngine(renderengine::RenderEngine*) = 0;

    virtual TimeStats& getTimeStats() const = 0;
    virtual TimeStats* getTimeStats() const = 0;
    virtual void setTimeStats(const std::shared_ptr<TimeStats>&) = 0;

    virtual bool needsAnotherUpdate() const = 0;
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ public:
    renderengine::RenderEngine& getRenderEngine() const override;
    void setRenderEngine(renderengine::RenderEngine*) override;

    TimeStats& getTimeStats() const override;
    TimeStats* getTimeStats() const override;
    void setTimeStats(const std::shared_ptr<TimeStats>&) override;

    bool needsAnotherUpdate() const override;
+1 −1
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ public:
    MOCK_CONST_METHOD0(getRenderEngine, renderengine::RenderEngine&());
    MOCK_METHOD1(setRenderEngine, void(renderengine::RenderEngine*));

    MOCK_CONST_METHOD0(getTimeStats, TimeStats&());
    MOCK_CONST_METHOD0(getTimeStats, TimeStats*());
    MOCK_METHOD1(setTimeStats, void(const std::shared_ptr<TimeStats>&));

    MOCK_CONST_METHOD0(needsAnotherUpdate, bool());
+2 −2
Original line number Diff line number Diff line
@@ -72,8 +72,8 @@ void CompositionEngine::setRenderEngine(renderengine::RenderEngine* renderEngine
    mRenderEngine = renderEngine;
}

TimeStats& CompositionEngine::getTimeStats() const {
    return *mTimeStats.get();
TimeStats* CompositionEngine::getTimeStats() const {
    return mTimeStats.get();
}

void CompositionEngine::setTimeStats(const std::shared_ptr<TimeStats>& timeStats) {
+7 −4
Original line number Diff line number Diff line
@@ -1334,10 +1334,13 @@ std::optional<base::unique_fd> Output::composeSurfaces(

    const auto fence = std::move(fenceResult).value_or(Fence::NO_FENCE);

    if (auto& timeStats = getCompositionEngine().getTimeStats(); fence->isValid()) {
        timeStats.recordRenderEngineDuration(renderEngineStart, std::make_shared<FenceTime>(fence));
    if (auto timeStats = getCompositionEngine().getTimeStats()) {
        if (fence->isValid()) {
            timeStats->recordRenderEngineDuration(renderEngineStart,
                                                  std::make_shared<FenceTime>(fence));
        } else {
        timeStats.recordRenderEngineDuration(renderEngineStart, systemTime());
            timeStats->recordRenderEngineDuration(renderEngineStart, systemTime());
        }
    }

    for (auto* clientComposedLayer : clientCompositionLayersFE) {
Loading