summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/surfaceflinger/Layer.cpp2
-rw-r--r--services/surfaceflinger/tests/unittests/FrameRateSelectionStrategyTest.cpp13
2 files changed, 15 insertions, 0 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index e780a1e8f7..a73c5115b1 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -1352,6 +1352,8 @@ bool Layer::setFrameRateSelectionStrategy(FrameRateSelectionStrategy strategy) {
mDrawingState.frameRateSelectionStrategy = strategy;
mDrawingState.sequence++;
mDrawingState.modified = true;
+
+ updateTreeHasFrameRateVote();
setTransactionFlags(eTransactionNeeded);
return true;
}
diff --git a/services/surfaceflinger/tests/unittests/FrameRateSelectionStrategyTest.cpp b/services/surfaceflinger/tests/unittests/FrameRateSelectionStrategyTest.cpp
index ffe6f245b5..20ea0c080a 100644
--- a/services/surfaceflinger/tests/unittests/FrameRateSelectionStrategyTest.cpp
+++ b/services/surfaceflinger/tests/unittests/FrameRateSelectionStrategyTest.cpp
@@ -153,6 +153,19 @@ TEST_P(FrameRateSelectionStrategyTest, SetParentAndGet) {
EXPECT_EQ(FRAME_RATE_VOTE1, layer3->getFrameRateForLayerTree());
EXPECT_EQ(FrameRateSelectionStrategy::Self,
layer3->getDrawingState().frameRateSelectionStrategy);
+
+ layer1->setFrameRateSelectionStrategy(FrameRateSelectionStrategy::Self);
+ commitTransaction();
+
+ EXPECT_EQ(FRAME_RATE_VOTE1, layer1->getFrameRateForLayerTree());
+ EXPECT_EQ(FrameRateSelectionStrategy::Self,
+ layer1->getDrawingState().frameRateSelectionStrategy);
+ EXPECT_EQ(FRAME_RATE_VOTE2, layer2->getFrameRateForLayerTree());
+ EXPECT_EQ(FrameRateSelectionStrategy::OverrideChildren,
+ layer2->getDrawingState().frameRateSelectionStrategy);
+ EXPECT_EQ(FRAME_RATE_VOTE2, layer3->getFrameRateForLayerTree());
+ EXPECT_EQ(FrameRateSelectionStrategy::Self,
+ layer3->getDrawingState().frameRateSelectionStrategy);
}
} // namespace