Always call onSourceLoaded observers (#15548)
* [core] add sources to source collection before triggering load * [test] add testcase for #15514 * [core] also call onSourceLoaded observers when no network request was necessary
This commit is contained in:
committed by
Dane Springmeyer
parent
1ef763c98e
commit
c7be3d52a7
@@ -1,6 +1,7 @@
|
||||
#include <mbgl/style/sources/custom_geometry_source.hpp>
|
||||
#include <mbgl/style/custom_tile_loader.hpp>
|
||||
#include <mbgl/style/sources/custom_geometry_source_impl.hpp>
|
||||
#include <mbgl/style/source_observer.hpp>
|
||||
#include <mbgl/actor/actor.hpp>
|
||||
#include <mbgl/actor/scheduler.hpp>
|
||||
#include <mbgl/tile/tile_id.hpp>
|
||||
@@ -25,6 +26,7 @@ const CustomGeometrySource::Impl& CustomGeometrySource::impl() const {
|
||||
void CustomGeometrySource::loadDescription(FileSource&) {
|
||||
baseImpl = makeMutable<CustomGeometrySource::Impl>(impl(), loader->self());
|
||||
loaded = true;
|
||||
observer->onSourceLoaded(*this);
|
||||
}
|
||||
|
||||
void CustomGeometrySource::setTileData(const CanonicalTileID& tileID,
|
||||
|
||||
@@ -41,6 +41,7 @@ void RasterSource::loadDescription(FileSource& fileSource) {
|
||||
if (urlOrTileset.is<Tileset>()) {
|
||||
baseImpl = makeMutable<Impl>(impl(), urlOrTileset.get<Tileset>());
|
||||
loaded = true;
|
||||
observer->onSourceLoaded(*this);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ void VectorSource::loadDescription(FileSource& fileSource) {
|
||||
if (urlOrTileset.is<Tileset>()) {
|
||||
baseImpl = makeMutable<Impl>(impl(), urlOrTileset.get<Tileset>());
|
||||
loaded = true;
|
||||
observer->onSourceLoaded(*this);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -140,9 +140,8 @@ void Style::Impl::addSource(std::unique_ptr<Source> source) {
|
||||
}
|
||||
|
||||
source->setObserver(this);
|
||||
source->loadDescription(fileSource);
|
||||
|
||||
sources.add(std::move(source));
|
||||
auto item = sources.add(std::move(source));
|
||||
item->loadDescription(fileSource);
|
||||
}
|
||||
|
||||
std::unique_ptr<Source> Style::Impl::removeSource(const std::string& id) {
|
||||
|
||||
Reference in New Issue
Block a user