39 Commits

Author SHA1 Message Date
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
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
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
9a93b21159 remove unused member variable + make singleton always thread safe 2015-06-02 10:32:30 +01:00
artemp
5361d21beb move mapnik::noncopyable to mapnik::util::noncopyable where it belongs 2015-01-07 13:11:09 +01:00
artemp
333965b588 update copyright year 2014-11-20 15:25:50 +01: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
378ab71a51 more -fvisibility=hidden fixes for osx 2014-08-09 14:23:23 -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
aa63d6c9a0 include cleanups where we used to use boost 2014-08-04 14:42:51 -07:00
Dane Springmeyer
8dcd85a708 iwyu 2014-07-23 14:02:36 -07: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
Dane Springmeyer
c480d9d878 break out benchmark suite into individual cpp 2013-11-14 23:11:21 -08:00
artemp
62af2e6765 + replace <boost/shared_ptr.hpp> with <memory> 2013-09-20 14:13:23 +01:00
artemp
b315eb2167 + use std::shared_ptr and std::make_shared 2013-09-20 14:01:27 +01: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
f6870a6b70 correct the ltdl forward declare type 2013-03-22 19:47:57 -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
43244efb7d Merge branch 'master' of github.com:mapnik/mapnik into no-bind 2012-12-17 13:03:11 -08:00
Dane Springmeyer
c5410fac7e remove bind option for datasources - refs #962 2012-12-17 10:03:07 -08:00
Dane Springmeyer
bb27156df0 use internal noncopyable class to speed up compile times slightly 2012-12-16 18:19:52 -08: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
a12b8f1d2f c++ style 2012-09-03 10:27:48 -07:00
Dane Springmeyer
d33496baa7 split up code that handles datasource plugin registration 2012-06-13 19:25:59 -04:00
Dane Springmeyer
17d13cff67 whitespace fixes - closes #911 2012-02-01 17:53:35 -08:00
Artem Pavlenko
771a8ad72f use mutex from base class 2011-11-18 09:39:57 +00:00
Dane Springmeyer
3520033b0d in multithreaded mode lock before creating a datasource - closes #951 2011-11-17 18:47:09 -08:00
kunitoki
eb13c8c6be - another bunch of coding style fixes in includes 2011-10-23 16:09:47 +02:00
kunitoki
f1fb0c1939 - fix copyright to 2011 (script to do this will follow) 2011-10-23 15:04:25 +02:00
Robert Coup
1dce437120 #622 add optional late-binding of datasources 2010-10-24 06:34:18 +00:00
Dane Springmeyer
4f9d6e135c output metadata about the searched plugin directories if a plugin cannot be found - closes #568 2010-07-15 21:11:41 +00:00
Artem Pavlenko
246731874b + apply 'mapnik-format' to *.cpp *.hpp 2010-06-02 11:03:30 +00:00
Dane Springmeyer
14ef2b36f0 expose list of registered plugins as a 'plugin_names()' method of DatasourceCache similar to the FontEngine.face_names() - closes #246 2009-06-22 06:59:56 +00:00
David
3c97052c5e - more include order reversion 2007-10-08 18:10:31 +00:00
Artem Pavlenko
992af4747d 1. move include to mapnik/include
2. update demos,bibdibgs etc.
2006-10-04 11:22:18 +00:00