diff --git a/include/mbgl/storage/network_status.hpp b/include/mbgl/storage/network_status.hpp index 1b5471a44e7..d7f502a3b22 100644 --- a/include/mbgl/storage/network_status.hpp +++ b/include/mbgl/storage/network_status.hpp @@ -1,7 +1,6 @@ #pragma once -#include - +#include #include #include @@ -27,7 +26,7 @@ class NetworkStatus { static void Unsubscribe(util::AsyncTask* async); private: - static util::Atomic online; + static std::atomic online; static std::mutex mtx; static std::set observers; }; diff --git a/include/mbgl/util/run_loop.hpp b/include/mbgl/util/run_loop.hpp index 56965c97e6d..25f07c03129 100644 --- a/include/mbgl/util/run_loop.hpp +++ b/include/mbgl/util/run_loop.hpp @@ -1,11 +1,11 @@ #pragma once -#include #include #include #include #include +#include #include #include #include @@ -59,7 +59,7 @@ class RunLoop : private util::noncopyable { template std::unique_ptr invokeCancellable(Fn&& fn, Args&&... args) { - auto flag = std::make_shared>(); + auto flag = std::make_shared>(); *flag = false; auto tuple = std::make_tuple(std::move(args)...); @@ -77,7 +77,7 @@ class RunLoop : private util::noncopyable { template std::unique_ptr invokeWithCallback(Fn&& fn, Cb&& callback, Args&&... args) { - auto flag = std::make_shared>(); + auto flag = std::make_shared>(); *flag = false; // Create a lambda L1 that invokes another lambda L2 on the current RunLoop R, that calls @@ -114,7 +114,7 @@ class RunLoop : private util::noncopyable { template class Invoker : public WorkTask { public: - Invoker(F&& f, P&& p, std::shared_ptr> canceled_ = nullptr) + Invoker(F&& f, P&& p, std::shared_ptr> canceled_ = nullptr) : canceled(std::move(canceled_)), func(std::move(f)), params(std::move(p)) { @@ -148,7 +148,7 @@ class RunLoop : private util::noncopyable { } std::recursive_mutex mutex; - std::shared_ptr> canceled; + std::shared_ptr> canceled; F func; P params; diff --git a/platform/android/src/async_task.cpp b/platform/android/src/async_task.cpp index 6a9263baff2..7b78eadb0c7 100644 --- a/platform/android/src/async_task.cpp +++ b/platform/android/src/async_task.cpp @@ -1,9 +1,9 @@ #include "run_loop_impl.hpp" #include -#include #include +#include #include namespace mbgl { @@ -45,7 +45,7 @@ class AsyncTask::Impl : public RunLoop::Impl::Runnable { // TODO: Use std::atomic_flag if we ever drop // support for ARMv5 - util::Atomic queued; + std::atomic queued; std::function task; }; diff --git a/platform/android/src/run_loop_impl.hpp b/platform/android/src/run_loop_impl.hpp index 121a5127d14..a3efa92a836 100644 --- a/platform/android/src/run_loop_impl.hpp +++ b/platform/android/src/run_loop_impl.hpp @@ -2,11 +2,11 @@ #include "jni.hpp" -#include #include #include #include +#include #include #include #include @@ -43,7 +43,7 @@ class RunLoop::Impl { ALooper* loop = nullptr; RunLoop* runLoop = nullptr; - util::Atomic running; + std::atomic running; private: friend RunLoop; diff --git a/src/mbgl/geometry/glyph_atlas.hpp b/src/mbgl/geometry/glyph_atlas.hpp index 5252963f51f..b9170c1cafe 100644 --- a/src/mbgl/geometry/glyph_atlas.hpp +++ b/src/mbgl/geometry/glyph_atlas.hpp @@ -2,12 +2,12 @@ #include #include -#include #include #include #include #include +#include #include #include #include @@ -57,7 +57,7 @@ class GlyphAtlas : public util::noncopyable { BinPack bin; std::unordered_map, FontStackHash> index; const std::unique_ptr data; - util::Atomic dirty; + std::atomic dirty; mbgl::optional texture; }; diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp index 635c83e3c0c..cf461e43891 100644 --- a/src/mbgl/renderer/bucket.hpp +++ b/src/mbgl/renderer/bucket.hpp @@ -2,9 +2,10 @@ #include #include -#include #include +#include + #define BUFFER_OFFSET_0 ((GLbyte*)nullptr) #define BUFFER_OFFSET(i) ((BUFFER_OFFSET_0) + (i)) @@ -50,7 +51,7 @@ class Bucket : private util::noncopyable { virtual void swapRenderData() {} protected: - util::Atomic uploaded { false }; + std::atomic uploaded { false }; }; } // namespace mbgl diff --git a/src/mbgl/sprite/sprite_atlas.hpp b/src/mbgl/sprite/sprite_atlas.hpp index 4f44eb9ac93..990ba59e039 100644 --- a/src/mbgl/sprite/sprite_atlas.hpp +++ b/src/mbgl/sprite/sprite_atlas.hpp @@ -3,11 +3,11 @@ #include #include #include -#include #include #include #include +#include #include #include #include @@ -92,7 +92,7 @@ class SpriteAtlas : public util::noncopyable { std::map images; std::set uninitialized; std::unique_ptr data; - util::Atomic dirty; + std::atomic dirty; bool fullUploadRequired = true; mbgl::optional texture; uint32_t filter = 0; diff --git a/src/mbgl/storage/network_status.cpp b/src/mbgl/storage/network_status.cpp index bc538a5f381..1ef5619bd6a 100644 --- a/src/mbgl/storage/network_status.cpp +++ b/src/mbgl/storage/network_status.cpp @@ -9,7 +9,7 @@ namespace mbgl { -util::Atomic NetworkStatus::online(true); +std::atomic NetworkStatus::online(true); std::mutex NetworkStatus::mtx; std::set NetworkStatus::observers; diff --git a/src/mbgl/style/bucket_parameters.hpp b/src/mbgl/style/bucket_parameters.hpp index 8c1da72f252..3b42e7c41bd 100644 --- a/src/mbgl/style/bucket_parameters.hpp +++ b/src/mbgl/style/bucket_parameters.hpp @@ -3,8 +3,8 @@ #include #include #include -#include +#include #include namespace mbgl { @@ -24,7 +24,7 @@ class BucketParameters { public: BucketParameters(const OverscaledTileID& tileID_, const GeometryTileLayer& layer_, - const util::Atomic& obsolete_, + const std::atomic& obsolete_, uintptr_t tileUID_, bool& partialParse_, SpriteStore& spriteStore_, @@ -51,7 +51,7 @@ class BucketParameters { const OverscaledTileID& tileID; const GeometryTileLayer& layer; - const util::Atomic& obsolete; + const std::atomic& obsolete; uintptr_t tileUID; bool& partialParse; SpriteStore& spriteStore; diff --git a/src/mbgl/text/glyph_pbf.hpp b/src/mbgl/text/glyph_pbf.hpp index c238cbb5d76..85f4b62e6fe 100644 --- a/src/mbgl/text/glyph_pbf.hpp +++ b/src/mbgl/text/glyph_pbf.hpp @@ -2,10 +2,10 @@ #include #include -#include #include #include +#include #include #include #include @@ -29,7 +29,7 @@ class GlyphPBF : private util::noncopyable { } private: - util::Atomic parsed; + std::atomic parsed; std::unique_ptr req; GlyphStoreObserver* observer = nullptr; }; diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp index 6072e2b1da8..891aba0432c 100644 --- a/src/mbgl/tile/geometry_tile.hpp +++ b/src/mbgl/tile/geometry_tile.hpp @@ -3,9 +3,9 @@ #include #include #include -#include #include +#include #include #include #include @@ -73,7 +73,7 @@ class GeometryTile : public Tile { PlacementConfig targetConfig; // Used to signal the worker that it should abandon parsing this tile as soon as possible. - util::Atomic obsolete { false }; + std::atomic obsolete { false }; }; } // namespace mbgl diff --git a/src/mbgl/tile/tile_worker.cpp b/src/mbgl/tile/tile_worker.cpp index fe75c867412..5761ca83b9b 100644 --- a/src/mbgl/tile/tile_worker.cpp +++ b/src/mbgl/tile/tile_worker.cpp @@ -22,7 +22,7 @@ TileWorker::TileWorker(OverscaledTileID id_, SpriteStore& spriteStore_, GlyphAtlas& glyphAtlas_, GlyphStore& glyphStore_, - const util::Atomic& obsolete_, + const std::atomic& obsolete_, const MapMode mode_) : id(std::move(id_)), spriteStore(spriteStore_), diff --git a/src/mbgl/tile/tile_worker.hpp b/src/mbgl/tile/tile_worker.hpp index b25858c955e..872c058b439 100644 --- a/src/mbgl/tile/tile_worker.hpp +++ b/src/mbgl/tile/tile_worker.hpp @@ -2,13 +2,13 @@ #include #include -#include #include #include #include #include #include +#include #include #include #include @@ -49,7 +49,7 @@ class TileWorker : public util::noncopyable { SpriteStore&, GlyphAtlas&, GlyphStore&, - const util::Atomic&, + const std::atomic&, const MapMode); ~TileWorker(); @@ -73,7 +73,7 @@ class TileWorker : public util::noncopyable { SpriteStore& spriteStore; GlyphAtlas& glyphAtlas; GlyphStore& glyphStore; - const util::Atomic& obsolete; + const std::atomic& obsolete; const MapMode mode; bool partialParse = false; diff --git a/src/mbgl/util/atomic.hpp b/src/mbgl/util/atomic.hpp deleted file mode 100644 index 3f68bf46a57..00000000000 --- a/src/mbgl/util/atomic.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include -#include - -namespace mbgl { -namespace util { - -// std::atomic is implemented lock free which -// is not supported by ARMv5 but the code generated -// seems to be using that and not working at all, -// thus, this naive implementation using mutexes. -#if defined(__ANDROID__) && defined(__ARM_ARCH_5TE__) - -template -class Atomic { -public: - Atomic() = default; - explicit Atomic(const T& data_) : data(data_) {} - - void operator=(const T& other) { - std::lock_guard lock(mtx); - data = other; - } - - operator bool() const { - std::lock_guard lock(mtx); - - return data; - } - -private: - T data; - mutable std::mutex mtx; -}; - -#else - -template -using Atomic = std::atomic; - -#endif - -} // namespace util -} // namespace mbgl diff --git a/src/mbgl/util/raster.hpp b/src/mbgl/util/raster.hpp index a30c086323b..34e7c676781 100644 --- a/src/mbgl/util/raster.hpp +++ b/src/mbgl/util/raster.hpp @@ -3,7 +3,8 @@ #include #include #include -#include + +#include namespace mbgl { @@ -34,7 +35,7 @@ class Raster { private: // raw pixels have been loaded - util::Atomic loaded { false }; + std::atomic loaded { false }; // filters Scaling filter = Scaling::Nearest; diff --git a/src/mbgl/util/thread.hpp b/src/mbgl/util/thread.hpp index 0de897d726d..643d272b258 100644 --- a/src/mbgl/util/thread.hpp +++ b/src/mbgl/util/thread.hpp @@ -6,7 +6,6 @@ #include #include -#include #include #include #include