summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeotiledmappingmanagerengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/maps/qgeotiledmappingmanagerengine.cpp')
-rw-r--r--src/location/maps/qgeotiledmappingmanagerengine.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/location/maps/qgeotiledmappingmanagerengine.cpp b/src/location/maps/qgeotiledmappingmanagerengine.cpp
index 4d05951e..1f44d640 100644
--- a/src/location/maps/qgeotiledmappingmanagerengine.cpp
+++ b/src/location/maps/qgeotiledmappingmanagerengine.cpp
@@ -264,6 +264,27 @@ void QGeoTiledMappingManagerEngine::engineTileFinished(const QGeoTileSpec &spec,
void QGeoTiledMappingManagerEngine::engineTileError(const QGeoTileSpec &spec, const QString &errorString)
{
+ Q_D(QGeoTiledMappingManagerEngine);
+
+ QSet<QGeoTiledMapData*> maps = d->tileHash_.value(spec);
+ typedef QSet<QGeoTiledMapData*>::const_iterator map_iter;
+ map_iter map = maps.constBegin();
+ map_iter mapEnd = maps.constEnd();
+ for (; map != mapEnd; ++map) {
+ QSet<QGeoTileSpec> tileSet = d->mapHash_.value(*map);
+
+ tileSet.remove(spec);
+ if (tileSet.isEmpty())
+ d->mapHash_.remove(*map);
+ else
+ d->mapHash_.insert(*map, tileSet);
+ }
+ d->tileHash_.remove(spec);
+
+ for (map = maps.constBegin(); map != mapEnd; ++map) {
+ (*map)->tileError(spec, errorString);
+ }
+
emit tileError(spec, errorString);
}