Commit graph

98 commits

Author SHA1 Message Date
Artem Pavlenko
bd961c4da2 update copyright year [skip ci] 2021-01-05 14:39:07 +00:00
Mathis Logemann
64054fade4 compiler independent warning ignore
Signed-off-by: Mathis Logemann <mathisloge@gmail.com>
2020-11-19 17:25:10 +01:00
artemp
333ef9fde1 update copyright year 2017-05-05 13:02:01 +02:00
artemp
5745bedbd9 update copyright year to 2016 2016-12-20 17:57:22 +01:00
artemp
d3293f73e1 c++ format 2016-07-25 15:55:50 +02:00
artemp
8bc4b28a76 small formatting 2016-04-06 11:36:18 +02:00
artemp
085a2afe40 minor formatting 2016-02-18 17:17:44 +01:00
Dane Springmeyer
7608040906 centralize warning suppression 2015-11-07 17:53:09 -08:00
Matt Amos
3d7b84a598 Fix deadlock in recursive datasource registration.
The datasource cache was taking an exclusive lock on the simple
mutex used to protect the singleton's data pointer. This works
okay when everyone always calls it non-recursively, but when the
recursive flag is true then it will always deadlock when called
on any directory with subdirectories.

Additionally, many methods which accessed private data members of
the cache were not protected by any locks.

Since the call pattern of registering datasources is strictly
tree-shaped then it's a good candidate for a recursive mutex. This
has a slightly higher overhead than a simple mutex, so rather than
change the singleton's mutex to be recursive, I've added a new
instance mutex to the datasource cache.

Also, added a very basic test which reproduces the problem and
shows that it's fixed with this patch.
2015-08-23 20:25:35 +01:00
artemp
8c6bf0eef6 update copyright notice 2015-06-16 12:49:16 +02:00
artemp
0a24e8cfca remove unused #include's 2015-06-16 10:04:50 +02:00
artemp
2eaa90033a move singleton to util/singleton.hpp
move windows UTF conversion routines to util/utf_conv_win.hpp
2015-06-02 11:10:41 +01:00
artemp
a8a90b7656 use std::lock_guard instead of unique_lock (better fit for the job) 2015-05-20 16:12:22 +01:00
Dane Springmeyer
2a33ead4cc finish centralizing boost::filesystem usage to single cpp file - refs #1177 2015-01-06 00:33:33 -08:00
artemp
333965b588 update copyright year 2014-11-20 15:25:50 +01:00
Dane Springmeyer
83588937b9 silence boost warnings 2014-10-21 16:37:27 -07:00
Dane Springmeyer
9a78c6dfe1 improve register_datasources + drop filesystem v2 support since v3 is default in boost >= 1.46 2014-10-13 17:43:14 -07:00
Dane Springmeyer
51f62ad083 dodge #2505 by avoiding registering gdal/ogr plugin 2014-10-06 18:19:52 -07:00
Dane Springmeyer
e9e5ec4a6b quick fix for #2451 2014-09-30 21:29:55 -07:00
Dane Springmeyer
578da31702 use extern template to fix osx -flto bug - closes #2339 2014-08-08 14:16:49 -07:00
Dane Springmeyer
d27b45553a use emplace/emplace_back over insert/push_back - refs #2336 2014-08-05 15:19:37 -07:00
Dane Springmeyer
cb3a4e10b7 reduce lock-time when creating datasources - #2317 2014-07-28 16:17:31 -07:00
Dane Springmeyer
133f399777 iwyu 2014-07-23 14:16:11 -07:00
Dane Springmeyer
8dcd85a708 iwyu 2014-07-23 14:02:36 -07:00
artemp
fe215a684e c++11 style : replace (almost) all typedef with type alias's 2014-07-07 18:23:15 +01:00
Dane Springmeyer
8ae1b6da03 fix boost directory iterator to use wide paths - closes #2273
Conflicts:
	src/font_engine_freetype.cpp
2014-06-21 14:07:57 -07:00
Dane Springmeyer
d58def6cdb silence debug print 2014-03-08 19:54:43 -08:00
Dane Springmeyer
3d90715883 only return true if plugins are actually newly registered 2014-02-06 18:24:56 -08:00
Dane Springmeyer
88613fc2ec check filesystem before trying to open plugin + only report unique directories searched - closes #2131
Conflicts:
	src/datasource_cache.cpp
2014-02-06 17:08:38 -08:00
Vross
43735a65d4 datasource_cache: display correctly the error message 2013-10-21 19:26:40 +02:00
artemp
7adee4ab36 c++11 : remove boost::make_shared includes 2013-10-17 15:09:56 +01:00
artemp
0e40b3c87d == c++11
use std::thread (removes boost.thread dependency)
2013-10-11 13:20:46 +01:00
artemp
b315eb2167 + use std::shared_ptr and std::make_shared 2013-09-20 14:01:27 +01:00
Dane Springmeyer
3b2bdba7b0 iwyu 2013-06-02 20:19:33 -07:00
Dane Springmeyer
0365d3e081 start centralizing filesystem operations in mapnik::util::fs - refs #1177 2013-06-02 19:28:24 -07:00
Dane Springmeyer
3fbf4df67d add support for statically linking datasource input plugins - closes #1810 and #1821 - refs #249 2013-05-16 11:55:58 -07:00
Dane Springmeyer
79a216f349 remove ltdl to reduce dependencies and because calling dlopen/LoadLibrary is easy 2013-04-09 19:37:02 -07:00
Dane Springmeyer
55ec6a7942 cleanups around exception handling 2013-03-22 17:58:33 -07:00
Dane Springmeyer
f9514e5d2c formatting 2013-03-22 17:44:27 -07:00
Dane Springmeyer
3256037eb6 forward declare the lt_dlhandle type to avoid needing header in datasource_cache.hpp 2013-03-22 17:37:56 -07:00
Dane Springmeyer
dca04fc9d4 iwyu 2013-01-13 22:02:18 -08:00
Dane Springmeyer
7e2f5caf0a remove uneeded c_str() call 2013-01-06 11:34:36 -08:00
Dane Springmeyer
c5410fac7e remove bind option for datasources - refs #962 2012-12-17 10:03:07 -08:00
Dane Springmeyer
c0021d0760 remove unused iostream includes and unnecessary usage of ostringstream - refs #1055 2012-12-06 23:06:12 -08:00
Dane Springmeyer
10f6fbc731 improve error message when datasource plugin is not available 2012-10-30 11:00:24 -07:00
artemp
11e6ba0c09 + make client methods non-static in classes derived from
mapnik::singleton<> (TODO: apply to all)
+ ensure client methods are accessed through instance() method
2012-09-07 14:56:30 +01:00
artemp
a513d3f97d + code: avoid exposing unsafe static methods in datasource_cache ( #1451)
+ python: remove redundent 'instance' method (mapnik.DatasourceCache)
+ python: reflect plugin_directories method
+ tests: update python usage

TODO: consider using similar approach in FontEngine etc..
TODO: consider returning reference from singleton::instance() to
      safeguard from accidental deleting a 'singleton' pointer
2012-09-05 12:53:37 +01:00
Dane Springmeyer
d33496baa7 split up code that handles datasource plugin registration 2012-06-13 19:25:59 -04:00
kunitoki
b60c508c1c - finish thrashing all the useless ifdef MAPNIK_LOG 2012-04-09 21:41:56 +02:00
kunitoki
1f351e0e09 implement new debug system 2012-04-08 02:20:56 +02:00