Asynchronous GeometryTile deletion (#2051)
Co-authored-by: Tim Sylvester <tim@wetdogweather.com>
This commit is contained in:
@@ -62,8 +62,9 @@ public:
|
||||
TransformState transformState;
|
||||
Style style{fileSource, 1};
|
||||
AnnotationManager annotationManager{style};
|
||||
ImageManager imageManager;
|
||||
GlyphManager glyphManager;
|
||||
std::shared_ptr<ImageManager> imageManager = std::make_shared<ImageManager>();
|
||||
std::shared_ptr<GlyphManager> glyphManager = std::make_shared<GlyphManager>();
|
||||
std::shared_ptr<Scheduler> threadPool = Scheduler::GetBackground();
|
||||
|
||||
TileParameters tileParameters(MapMode mapMode = MapMode::Continuous) {
|
||||
return {1.0,
|
||||
@@ -87,6 +88,8 @@ public:
|
||||
transformState = transform.getState();
|
||||
}
|
||||
|
||||
~SourceTest() { threadPool->waitForEmpty(); }
|
||||
|
||||
void run() { loop.run(); }
|
||||
|
||||
void end() { loop.stop(); }
|
||||
@@ -167,7 +170,7 @@ TEST(Source, RasterTileEmpty) {
|
||||
FAIL() << "Should never be called";
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -203,7 +206,7 @@ TEST(Source, RasterDEMTileEmpty) {
|
||||
FAIL() << "Should never be called";
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -241,7 +244,7 @@ TEST(Source, VectorTileEmpty) {
|
||||
FAIL() << "Should never be called";
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -276,7 +279,7 @@ TEST(Source, RasterTileFail) {
|
||||
test.end();
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -311,7 +314,7 @@ TEST(Source, RasterDEMTileFail) {
|
||||
test.end();
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -348,7 +351,7 @@ TEST(Source, VectorTileFail) {
|
||||
test.end();
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -384,7 +387,7 @@ TEST(Source, RasterTileCorrupt) {
|
||||
test.end();
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -421,7 +424,7 @@ TEST(Source, RasterDEMTileCorrupt) {
|
||||
test.end();
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -458,7 +461,7 @@ TEST(Source, VectorTileCorrupt) {
|
||||
test.end();
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -492,7 +495,7 @@ TEST(Source, RasterTileCancel) {
|
||||
FAIL() << "Should never be called";
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -526,7 +529,7 @@ TEST(Source, RasterDEMTileCancel) {
|
||||
FAIL() << "Should never be called";
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -562,7 +565,7 @@ TEST(Source, VectorTileCancel) {
|
||||
FAIL() << "Should never be called";
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -607,7 +610,7 @@ TEST(Source, RasterTileAttribution) {
|
||||
source.setObserver(&test.styleObserver);
|
||||
source.loadDescription(*test.fileSource);
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
test.run();
|
||||
@@ -648,7 +651,7 @@ TEST(Source, RasterDEMTileAttribution) {
|
||||
source.setObserver(&test.styleObserver);
|
||||
source.loadDescription(*test.fileSource);
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
test.run();
|
||||
@@ -741,7 +744,7 @@ TEST(Source, CustomGeometrySourceSetTileData) {
|
||||
FAIL() << "Should never be called";
|
||||
};
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
@@ -778,8 +781,8 @@ public:
|
||||
MOCK_METHOD1(tileSetNecessity, void(TileNecessity));
|
||||
MOCK_METHOD1(tileSetMinimumUpdateInterval, void(Duration));
|
||||
|
||||
explicit FakeTileSource(Immutable<style::Source::Impl> impl_)
|
||||
: RenderTileSetSource(std::move(impl_)) {}
|
||||
explicit FakeTileSource(Immutable<style::Source::Impl> impl_, std::shared_ptr<Scheduler> threadPool_)
|
||||
: RenderTileSetSource(std::move(impl_), std::move(threadPool_)) {}
|
||||
void updateInternal(const Tileset& tileset,
|
||||
const std::vector<Immutable<style::LayerProperties>>& layers,
|
||||
const bool needsRendering,
|
||||
@@ -816,7 +819,7 @@ TEST(Source, InvisibleSourcesTileNecessity) {
|
||||
VectorSource initialized("source", Tileset{{"tiles"}});
|
||||
initialized.loadDescription(*test.fileSource);
|
||||
|
||||
FakeTileSource renderTilesetSource{initialized.baseImpl};
|
||||
FakeTileSource renderTilesetSource{initialized.baseImpl, test.threadPool};
|
||||
RenderSource* renderSource = &renderTilesetSource;
|
||||
LineLayer layer("id", "source");
|
||||
Immutable<LayerProperties> layerProperties = makeMutable<LineLayerProperties>(
|
||||
@@ -839,7 +842,7 @@ TEST(Source, SourceMinimumUpdateInterval) {
|
||||
VectorSource initialized("source", Tileset{{"tiles"}});
|
||||
initialized.loadDescription(*test.fileSource);
|
||||
|
||||
FakeTileSource renderTilesetSource{initialized.baseImpl};
|
||||
FakeTileSource renderTilesetSource{initialized.baseImpl, test.threadPool};
|
||||
RenderSource* renderSource = &renderTilesetSource;
|
||||
LineLayer layer("id", "source");
|
||||
Immutable<LayerProperties> layerProperties = makeMutable<LineLayerProperties>(
|
||||
@@ -882,8 +885,8 @@ TEST(Source, RenderTileSetSourceUpdate) {
|
||||
|
||||
class FakeRenderTileSetSource : public RenderTileSetSource {
|
||||
public:
|
||||
explicit FakeRenderTileSetSource(Immutable<style::Source::Impl> impl_)
|
||||
: RenderTileSetSource(std::move(impl_)) {}
|
||||
explicit FakeRenderTileSetSource(Immutable<style::Source::Impl> impl_, std::shared_ptr<Scheduler> threadPool_)
|
||||
: RenderTileSetSource(std::move(impl_), std::move(threadPool_)) {}
|
||||
|
||||
MOCK_METHOD0(mockedUpdateInternal, void());
|
||||
|
||||
@@ -903,7 +906,7 @@ TEST(Source, RenderTileSetSourceUpdate) {
|
||||
VectorSource initialized("source", Tileset{{"tiles"}});
|
||||
initialized.loadDescription(*test.fileSource);
|
||||
|
||||
FakeRenderTileSetSource renderTilesetSource{initialized.baseImpl};
|
||||
FakeRenderTileSetSource renderTilesetSource{initialized.baseImpl, test.threadPool};
|
||||
|
||||
LineLayer layer("id", "source");
|
||||
Immutable<LayerProperties> layerProperties = makeMutable<LineLayerProperties>(
|
||||
@@ -969,7 +972,7 @@ TEST(Source, GeoJSONSourceTilesAfterDataReset) {
|
||||
auto geoJSONData = GeoJSONData::create(mapbox::geojson::parse(
|
||||
R"({"geometry": {"type": "Point", "coordinates": [1.1, 1.1]}, "type": "Feature", "properties": {}})"));
|
||||
source.setGeoJSONData(geoJSONData);
|
||||
RenderGeoJSONSource renderSource{staticImmutableCast<GeoJSONSource::Impl>(source.baseImpl)};
|
||||
RenderGeoJSONSource renderSource{staticImmutableCast<GeoJSONSource::Impl>(source.baseImpl), test.threadPool};
|
||||
|
||||
CircleLayer layer("id", "source");
|
||||
Immutable<LayerProperties> layerProperties = makeMutable<CircleLayerProperties>(
|
||||
@@ -1026,7 +1029,7 @@ TEST(Source, SetMaxParentOverscaleFactor) {
|
||||
ASSERT_EQ(3, *source.getMaxOverscaleFactorForParentTiles());
|
||||
source.loadDescription(*test.fileSource);
|
||||
|
||||
auto renderSource = RenderSource::create(source.baseImpl);
|
||||
auto renderSource = RenderSource::create(source.baseImpl, test.threadPool);
|
||||
renderSource->setObserver(&test.renderSourceObserver);
|
||||
renderSource->update(source.baseImpl, layers, true, true, test.tileParameters());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user