diff --git a/src/map/dem.cpp b/src/map/dem.cpp index 28e45ba5..0f8f0beb 100644 --- a/src/map/dem.cpp +++ b/src/map/dem.cpp @@ -139,15 +139,9 @@ DEM::Entry *DEM::loadTile(const Tile &tile) } } -double DEM::elevation(const Coordinates &c) +double DEM::elevationLockFree(const Coordinates &c) { - if (_dir.isEmpty()) - return NAN; - Tile tile(floor(c.lon()), floor(c.lat())); - - _lock.lock(); - Entry *e = _data.object(tile); double ele; @@ -158,23 +152,17 @@ double DEM::elevation(const Coordinates &c) } else ele = height(c, e); - _lock.unlock(); - return ele; } -double DEM::elevationLockFree(const Coordinates &c) +double DEM::elevation(const Coordinates &c) { - Tile tile(floor(c.lon()), floor(c.lat())); - Entry *e = _data.object(tile); - double ele; + if (_dir.isEmpty()) + return NAN; - if (!e) { - e = loadTile(tile); - ele = height(c, e); - _data.insert(tile, e, e->data().size() / 1024); - } else - ele = height(c, e); + _lock.lock(); + double ele = elevationLockFree(c); + _lock.unlock(); return ele; }