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

Commit 5322ea49 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "SurfaceFlinger: ignore invisible layers" into rvc-dev am: 6b2f684f...

Merge "SurfaceFlinger: ignore invisible layers" into rvc-dev am: 6b2f684f am: f5b44da7 am: 80c90bb8

Change-Id: I9edb52cf541c7184d7c911ba820e0618942b49e1
parents f8868f5d 80c90bb8
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -174,8 +174,10 @@ void LayerHistoryV2::partitionLayers(nsecs_t now) {
                        return LayerVoteType::NoVote;
                }
            }();
            if (layer->isVisible() && (frameRate.rate > 0 || voteType == LayerVoteType::NoVote)) {
                info->setLayerVote(voteType, frameRate.rate);

            if (frameRate.rate > 0 || voteType == LayerVoteType::NoVote) {
                const auto type = layer->isVisible() ? voteType : LayerVoteType::NoVote;
                info->setLayerVote(type, frameRate.rate);
            } else {
                info->resetLayerVote();
            }
+29 −0
Original line number Diff line number Diff line
@@ -512,5 +512,34 @@ TEST_F(LayerHistoryTestV2, inactiveLayers) {
    EXPECT_EQ(1, frequentLayerCount(time));
}

TEST_F(LayerHistoryTestV2, invisibleExplicitLayer) {
    auto explicitVisiblelayer = createLayer();
    auto explicitInvisiblelayer = createLayer();

    EXPECT_CALL(*explicitVisiblelayer, isVisible()).WillRepeatedly(Return(true));
    EXPECT_CALL(*explicitVisiblelayer, getFrameRateForLayerTree())
            .WillRepeatedly(Return(
                    Layer::FrameRate(60.0f, Layer::FrameRateCompatibility::ExactOrMultiple)));

    EXPECT_CALL(*explicitInvisiblelayer, isVisible()).WillRepeatedly(Return(false));
    EXPECT_CALL(*explicitInvisiblelayer, getFrameRateForLayerTree())
            .WillRepeatedly(Return(
                    Layer::FrameRate(90.0f, Layer::FrameRateCompatibility::ExactOrMultiple)));

    nsecs_t time = systemTime();

    // Post a buffer to the layers to make them active
    history().record(explicitVisiblelayer.get(), time, time);
    history().record(explicitInvisiblelayer.get(), time, time);

    EXPECT_EQ(2, layerCount());
    ASSERT_EQ(1, history().summarize(time).size());
    EXPECT_EQ(LayerHistory::LayerVoteType::ExplicitExactOrMultiple,
              history().summarize(time)[0].vote);
    EXPECT_FLOAT_EQ(60.0f, history().summarize(time)[0].desiredRefreshRate);
    EXPECT_EQ(2, activeLayerCount());
    EXPECT_EQ(2, frequentLayerCount(time));
}

} // namespace
} // namespace android::scheduler