fix(core): notify layer observer when source-layer or source-id changes (#4372)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -285,6 +285,44 @@ TEST(Layer, Observer) {
|
||||
};
|
||||
layer->setLineCap(lineCap);
|
||||
EXPECT_FALSE(layoutPropertyChanged);
|
||||
|
||||
// Notifies observer on source-layer change.
|
||||
// This is required so that the render orchestrator re-evaluates already-loaded
|
||||
// tiles when a layer's source-layer is changed at runtime (e.g. after addLayer).
|
||||
bool sourceLayerChanged = false;
|
||||
observer.layerChanged = [&](Layer& layer_) {
|
||||
EXPECT_EQ(layer.get(), &layer_);
|
||||
sourceLayerChanged = true;
|
||||
};
|
||||
layer->setSourceLayer("roads");
|
||||
EXPECT_TRUE(sourceLayerChanged);
|
||||
|
||||
// Does not notify observer on no-op source-layer change.
|
||||
sourceLayerChanged = false;
|
||||
observer.layerChanged = [&](Layer& layer_) {
|
||||
EXPECT_EQ(layer.get(), &layer_);
|
||||
sourceLayerChanged = true;
|
||||
};
|
||||
layer->setSourceLayer("roads");
|
||||
EXPECT_FALSE(sourceLayerChanged);
|
||||
|
||||
// Notifies observer on source ID change.
|
||||
bool sourceIDChanged = false;
|
||||
observer.layerChanged = [&](Layer& layer_) {
|
||||
EXPECT_EQ(layer.get(), &layer_);
|
||||
sourceIDChanged = true;
|
||||
};
|
||||
layer->setSourceID("other-source");
|
||||
EXPECT_TRUE(sourceIDChanged);
|
||||
|
||||
// Does not notify observer on no-op source ID change.
|
||||
sourceIDChanged = false;
|
||||
observer.layerChanged = [&](Layer& layer_) {
|
||||
EXPECT_EQ(layer.get(), &layer_);
|
||||
sourceIDChanged = true;
|
||||
};
|
||||
layer->setSourceID("other-source");
|
||||
EXPECT_FALSE(sourceIDChanged);
|
||||
}
|
||||
|
||||
TEST(Layer, DuplicateLayer) {
|
||||
|
||||
Reference in New Issue
Block a user