diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index e0c0f5dec..7d785e34a 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -198,7 +198,6 @@ std::unique_ptr Source::createTile(const OverscaledTileID& overscaledT overscaledTileID.canonical.y, overscaledTileID.canonical.z); auto data = std::make_unique(overscaledTileID, parameters.texturePool, parameters.worker); - data->setObserver(this); data->setTileSource( std::make_unique(*data, resource, parameters.fileSource)); @@ -212,7 +211,6 @@ std::unique_ptr Source::createTile(const OverscaledTileID& overscaledT overscaledTileID.canonical.y, overscaledTileID.canonical.z); auto data = std::make_unique(overscaledTileID, id, parameters.style, parameters.mode); - data->setObserver(this); data->setTileSource( std::make_unique(*data, resource, parameters.fileSource)); @@ -222,7 +220,6 @@ std::unique_ptr Source::createTile(const OverscaledTileID& overscaledT } else if (type == SourceType::Annotations) { auto data = std::make_unique(overscaledTileID, id, parameters.style, parameters.mode); - data->setObserver(this); data->setTileSource(std::make_unique( *data, overscaledTileID, parameters.annotationManager)); @@ -232,7 +229,6 @@ std::unique_ptr Source::createTile(const OverscaledTileID& overscaledT } else if (type == SourceType::GeoJSON) { auto data = std::make_unique(overscaledTileID, id, parameters.style, parameters.mode); - data->setObserver(this); data->setTileSource( std::make_unique(*data, geojsonvt.get(), overscaledTileID)); @@ -296,6 +292,9 @@ bool Source::update(const UpdateParameters& parameters) { std::unique_ptr data = cache.get(dataTileID); if (!data) { data = createTile(dataTileID, parameters); + if (data) { + data->setObserver(this); + } } if (data) { return tileDataMap.emplace(dataTileID, std::move(data)).first->second.get();