Allow latch unsignaled if there are no flag changes
Instead of checking the change flags, check if the value
of the flags changed instead.
Change-Id: I0999609666ff78a3af8ba55c88835a9a5a74e8bc
Test: presubmit
Fixes: 340362109
diff --git a/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp b/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp
index cfc8e99..97bd79f 100644
--- a/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp
+++ b/services/surfaceflinger/tests/unittests/LayerLifecycleManagerTest.cpp
@@ -592,4 +592,41 @@
mLifecycleManager.commitChanges();
}
+TEST_F(LayerLifecycleManagerTest, isSimpleBufferUpdate) {
+ auto layer = rootLayer(1);
+
+ // no buffer changes
+ EXPECT_FALSE(layer->isSimpleBufferUpdate({}));
+
+ {
+ layer_state_t state;
+ state.what = layer_state_t::eBufferChanged;
+ EXPECT_TRUE(layer->isSimpleBufferUpdate(state));
+ }
+
+ {
+ layer_state_t state;
+ state.what = layer_state_t::eReparent | layer_state_t::eBufferChanged;
+ EXPECT_FALSE(layer->isSimpleBufferUpdate(state));
+ }
+
+ {
+ layer_state_t state;
+ state.what = layer_state_t::ePositionChanged | layer_state_t::eBufferChanged;
+ state.x = 9;
+ state.y = 10;
+ EXPECT_FALSE(layer->isSimpleBufferUpdate(state));
+ }
+
+ {
+ layer->x = 9;
+ layer->y = 10;
+ layer_state_t state;
+ state.what = layer_state_t::ePositionChanged | layer_state_t::eBufferChanged;
+ state.x = 9;
+ state.y = 10;
+ EXPECT_TRUE(layer->isSimpleBufferUpdate(state));
+ }
+}
+
} // namespace android::surfaceflinger::frontend