From a7cc291ce17bb2d4aa2b2d1fa481442926ec2566 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 6 Jun 2016 16:32:11 -0700 Subject: [PATCH] [core] Move setObserver out of Source::createTile --- src/mbgl/style/source.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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();