diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2021-06-02 19:06:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-02 19:06:15 +0200 |
| commit | 29f849485bf2ea9caa7ca3da7d93ece1daf4d7d5 (patch) | |
| tree | f0180f6659f9c060395a9eee010f18861dbad19b /src | |
| parent | a77df0d81bdfb12ef090bc53ed70219f293c04d1 (diff) | |
| parent | e297475f0d05b3c8cfbc5cee90add7d7a37c6a02 (diff) | |
| download | PROJ-29f849485bf2ea9caa7ca3da7d93ece1daf4d7d5.tar.gz PROJ-29f849485bf2ea9caa7ca3da7d93ece1daf4d7d5.zip | |
Merge pull request #2736 from rouault/cleanup_mutex
Cleanup: add proj/internal/mutex.hpp as compat layer for mingw32 for std::mutex
Diffstat (limited to 'src')
| -rw-r--r-- | src/networkfilemanager.cpp | 21 | ||||
| -rw-r--r-- | src/transformations/hgridshift.cpp | 26 | ||||
| -rw-r--r-- | src/transformations/vgridshift.cpp | 26 |
3 files changed, 12 insertions, 61 deletions
diff --git a/src/networkfilemanager.cpp b/src/networkfilemanager.cpp index fa6375b8..d331f4d6 100644 --- a/src/networkfilemanager.cpp +++ b/src/networkfilemanager.cpp @@ -40,25 +40,10 @@ #include "proj.h" #include "proj/internal/internal.hpp" #include "proj/internal/lru_cache.hpp" +#include "proj/internal/mutex.hpp" #include "proj_internal.h" #include "sqlite3_utils.hpp" -#ifdef __MINGW32__ -// mingw32-win32 doesn't implement std::mutex -namespace { -class MyMutex { - public: - // cppcheck-suppress functionStatic - void lock() { pj_acquire_lock(); } - // cppcheck-suppress functionStatic - void unlock() { pj_release_lock(); } -}; -} // namespace -#else -#include <mutex> -#define MyMutex std::mutex -#endif - #ifdef CURL_ENABLED #include <curl/curl.h> #include <sqlite3.h> // for sqlite3_snprintf @@ -152,7 +137,7 @@ class NetworkChunkCache { }; lru11::Cache< - Key, std::shared_ptr<std::vector<unsigned char>>, MyMutex, + Key, std::shared_ptr<std::vector<unsigned char>>, NS_PROJ::mutex, std::unordered_map< Key, typename std::list<lru11::KeyValuePair< @@ -176,7 +161,7 @@ class NetworkFilePropertiesCache { void clearMemoryCache(); private: - lru11::Cache<std::string, FileProperties, MyMutex> cache_{}; + lru11::Cache<std::string, FileProperties, NS_PROJ::mutex> cache_{}; }; // --------------------------------------------------------------------------- diff --git a/src/transformations/hgridshift.cpp b/src/transformations/hgridshift.cpp index 326bbb13..96b77c20 100644 --- a/src/transformations/hgridshift.cpp +++ b/src/transformations/hgridshift.cpp @@ -6,31 +6,16 @@ #include <time.h> #include "proj_internal.h" +#include "proj/internal/mutex.hpp" #include "grids.hpp" PROJ_HEAD(hgridshift, "Horizontal grid shift"); -using namespace NS_PROJ; - -#ifdef __MINGW32__ -// mingw32-win32 doesn't implement std::mutex -namespace { -class MyMutex { - public: - // cppcheck-suppress functionStatic - void lock() { pj_acquire_lock(); } - // cppcheck-suppress functionStatic - void unlock() { pj_release_lock(); } -}; -} -#else -#include <mutex> -#define MyMutex std::mutex -#endif - -static MyMutex gMutex{}; +static NS_PROJ::mutex gMutex{}; static std::set<std::string> gKnownGrids{}; +using namespace NS_PROJ; + namespace { // anonymous namespace struct hgridshiftData { double t_final = 0; @@ -208,7 +193,6 @@ PJ *TRANSFORMATION(hgridshift,0) { } void pj_clear_hgridshift_knowngrids_cache() { - gMutex.lock(); + NS_PROJ::lock_guard<NS_PROJ::mutex> lock(gMutex); gKnownGrids.clear(); - gMutex.unlock(); } diff --git a/src/transformations/vgridshift.cpp b/src/transformations/vgridshift.cpp index 7b234517..527fe1e8 100644 --- a/src/transformations/vgridshift.cpp +++ b/src/transformations/vgridshift.cpp @@ -6,32 +6,15 @@ #include <time.h> #include "proj_internal.h" +#include "proj/internal/mutex.hpp" #include "grids.hpp" PROJ_HEAD(vgridshift, "Vertical grid shift"); -using namespace NS_PROJ; - - -#ifdef __MINGW32__ -// mingw32-win32 doesn't implement std::mutex -namespace { -class MyMutex { - public: - // cppcheck-suppress functionStatic - void lock() { pj_acquire_lock(); } - // cppcheck-suppress functionStatic - void unlock() { pj_release_lock(); } -}; -} -#else -#include <mutex> -#define MyMutex std::mutex -#endif - -static MyMutex gMutex{}; +static NS_PROJ::mutex gMutex{}; static std::set<std::string> gKnownGrids{}; +using namespace NS_PROJ; namespace { // anonymous namespace struct vgridshiftData { @@ -251,7 +234,6 @@ PJ *TRANSFORMATION(vgridshift,0) { } void pj_clear_vgridshift_knowngrids_cache() { - gMutex.lock(); + NS_PROJ::lock_guard<NS_PROJ::mutex> lock(gMutex); gKnownGrids.clear(); - gMutex.unlock(); } |
