Bug #1270 » cpp11-mt.diff
| exiv2-0.26-svn-1/Makefile 2017-01-13 12:42:37.000000000 -0500 | ||
|---|---|---|
| 90 | 90 |
bugfixes-test.sh crw-test.sh curliotest.sh eps-preview-test.sh eps-test.sh exifdata-test.sh \ |
| 91 | 91 |
exiv2-test.sh httpiotest.sh icc-test.sh imagetest.sh iotest.sh iptctest.sh \ |
| 92 | 92 |
modify-test.sh path-test.sh preview-test.sh sshiotest.sh stringto-test.sh tiff-test.sh \ |
| 93 |
video-test.sh write-test.sh write-video-test.sh write2-test.sh xmpparser-test.sh webp-test.sh: |
|
| 93 |
video-test.sh write-test.sh write-video-test.sh write2-test.sh xmpparser-test.sh webp-test.sh \ |
|
| 94 |
mt-test.sh: |
|
| 94 | 95 |
cd test && ./$@ |
| 95 | 96 | |
| 96 | 97 |
# convenience targets for running selected test scripts |
| exiv2-0.26-svn-1/include/exiv2/image.hpp 2017-01-13 12:42:37.000000000 -0500 | ||
|---|---|---|
| 36 | 36 |
// + standard includes |
| 37 | 37 |
#include <string> |
| 38 | 38 |
#include <vector> |
| 39 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 40 |
#include <mutex> |
|
| 41 |
#endif |
|
| 39 | 42 | |
| 40 | 43 |
// ***************************************************************************** |
| 41 | 44 |
// namespace extensions |
| ... | ... | |
| 476 | 483 | |
| 477 | 484 |
int imageType() const { return imageType_; }
|
| 478 | 485 | |
| 486 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 487 |
static std::mutex mutex_; |
|
| 488 |
#endif |
|
| 489 | ||
| 479 | 490 |
protected: |
| 480 | 491 |
// DATA |
| 481 | 492 |
BasicIo::AutoPtr io_; //!< Image data IO pointer |
| exiv2-0.26-svn-1/include/exiv2/properties.hpp 2017-01-13 12:42:37.000000000 -0500 | ||
|---|---|---|
| 45 | 45 |
#include <string> |
| 46 | 46 |
#include <iosfwd> |
| 47 | 47 |
#include <memory> |
| 48 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 49 |
#include <mutex> |
|
| 50 |
#endif |
|
| 48 | 51 | |
| 49 | 52 |
// ***************************************************************************** |
| 50 | 53 |
// namespace extensions |
| ... | ... | |
| 238 | 241 |
@brief Get all registered namespaces (for both Exiv2 and XMPsdk) |
| 239 | 242 |
*/ |
| 240 | 243 |
static void registeredNamespaces(Exiv2::Dictionary& nsDict); |
| 244 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 245 |
static std::mutex mutex_; |
|
| 246 |
#endif |
|
| 241 | 247 | |
| 242 | 248 |
}; // class XmpProperties |
| 243 | 249 | |
| exiv2-0.26-svn-1/samples/CMakeLists.txt 2017-01-13 13:03:43.000000000 -0500 | ||
|---|---|---|
| 82 | 82 |
TARGET_LINK_LIBRARIES( geotag ${PRIVATE_VAR} exiv2lib Threads::Threads ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES})
|
| 83 | 83 |
INSTALL( TARGETS geotag ${INSTALL_TARGET_STANDARD_ARGS} )
|
| 84 | 84 | |
| 85 |
IF ( ${EXIV2_CPP_STANDARD} LESS 98 AND ${EXIV2_CPP_STANDARD} GREATER 10 )
|
|
| 86 |
SET( MULTITHREAD_SRC mt-test.cpp ) |
|
| 87 |
ADD_EXECUTABLE( mt-test ${MULTITHREAD_SRC} )
|
|
| 88 |
SET_PROPERTY( TARGET mt-test PROPERTY CXX_STANDARD 11) |
|
| 89 |
SET_TARGET_PROPERTIES( mt-test PROPERTIES OUTPUT_NAME mt-test ) |
|
| 90 |
TARGET_LINK_LIBRARIES( mt-test ${PRIVATE_VAR} exiv2lib Threads::Threads ${EXPAT_LIBRARIES} ${ZLIB_LIBRARIES})
|
|
| 91 |
INSTALL( TARGETS mt-test ${INSTALL_TARGET_STANDARD_ARGS} )
|
|
| 92 |
ENDIF() |
|
| 93 | ||
| 85 | 94 |
# ****************************************************************************** |
| 86 | 95 |
# Man page |
| 87 | 96 |
INSTALL( FILES exiv2samples.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
|
| exiv2-0.26-svn-1/samples/Makefile 2017-01-13 12:42:37.000000000 -0500 | ||
|---|---|---|
| 70 | 70 |
key-test.cpp \ |
| 71 | 71 |
largeiptc-test.cpp \ |
| 72 | 72 |
mmap-test.cpp \ |
| 73 |
mt-test.cpp \ |
|
| 73 | 74 |
prevtest.cpp \ |
| 74 | 75 |
remotetest.cpp \ |
| 75 | 76 |
stringto-test.cpp \ |
| exiv2-0.26-svn-1/samples/mt-test.cpp 2017-01-13 12:42:37.000000000 -0500 | ||
|---|---|---|
| 17 | 17 | |
| 18 | 18 |
// WARNING: auto_ptr is not supported in C++11 implemented by gcc 4.9/C++11 and later |
| 19 | 19 | |
| 20 |
// Addendum: Builds with gcc v6.2.0 with c++11 works on Linux and with MinGW64. |
|
| 21 | ||
| 20 | 22 |
#include <exiv2/exiv2.hpp> |
| 21 | 23 |
#include <iostream> |
| 22 | 24 |
#include <iomanip> |
| exiv2-0.26-svn-1/src/image.cpp 2017-01-13 12:42:37.000000000 -0500 | ||
|---|---|---|
| 72 | 72 |
#include <cstring> |
| 73 | 73 |
#include <cassert> |
| 74 | 74 |
#include <iostream> |
| 75 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 76 |
#include <mutex> |
|
| 77 |
#endif |
|
| 75 | 78 | |
| 76 | 79 |
#include <sys/types.h> |
| 77 | 80 |
#include <sys/stat.h> |
| ... | ... | |
| 281 | 288 |
static std::map<int,std::string> tags; |
| 282 | 289 |
static bool init = true; |
| 283 | 290 |
static char buffer[80]; |
| 291 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 292 |
static std::mutex tagNameInitMutex; |
|
| 293 |
#endif |
|
| 284 | 294 | |
| 285 | 295 |
if ( init ) {
|
| 296 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 297 |
std::lock_guard<std::mutex> guard(tagNameInitMutex); |
|
| 298 |
#endif |
|
| 286 | 299 |
int idx; |
| 287 | 300 |
const TagInfo* ti ; |
| 288 | 301 |
for (ti = Internal:: mnTagList(), idx = 0; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; |
| ... | ... | |
| 293 | 306 |
for (ti = Internal:: mpfTagList(), idx = 0; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; |
| 294 | 307 |
for (ti = Internal::Nikon1MakerNote::tagList(), idx = 0 |
| 295 | 308 |
; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; |
| 309 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 310 |
init = false; |
|
| 311 |
#endif |
|
| 296 | 312 |
} |
| 313 |
#ifndef EXV_USING_CPP_ELEVEN |
|
| 297 | 314 |
init = false; |
| 315 |
#endif |
|
| 298 | 316 | |
| 299 | 317 |
try {
|
| 300 | 318 |
result = tags[tag].c_str(); |
| exiv2-0.26-svn-1/src/properties.cpp 2017-01-13 12:42:37.000000000 -0500 | ||
|---|---|---|
| 47 | 47 |
#include <cstring> |
| 48 | 48 |
#include <cstdlib> |
| 49 | 49 |
#include <cctype> |
| 50 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 51 |
#include <mutex> |
|
| 52 |
#endif |
|
| 50 | 53 | |
| 51 | 54 |
// ***************************************************************************** |
| 52 | 55 |
namespace {
|
| ... | ... | |
| 2488 | 2491 |
} |
| 2489 | 2492 | |
| 2490 | 2493 |
XmpProperties::NsRegistry XmpProperties::nsRegistry_; |
| 2494 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 2495 |
std::mutex XmpProperties::mutex_; |
|
| 2496 |
#endif |
|
| 2491 | 2497 |
Internal::RWLock XmpProperties::rwLock_; |
| 2492 | 2498 | |
| 2493 | 2499 |
const XmpNsInfo* XmpProperties::lookupNsRegistry(const XmpNsInfo::Prefix& prefix) |
| 2494 | 2500 |
{
|
| 2501 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 2502 |
std::lock_guard<std::mutex> guard(mutex_); |
|
| 2503 |
#endif |
|
| 2495 | 2504 |
Internal::ScopedReadLock srl(rwLock_); |
| 2496 | 2505 |
return lookupNsRegistryUnsafe(prefix); |
| 2497 | 2506 |
} |
| ... | ... | |
| 2515 | 2524 |
&& ns2.substr(ns2.size() - 1, 1) != "#") ns2 += "/"; |
| 2516 | 2525 |
// Check if there is already a registered namespace with this prefix |
| 2517 | 2526 |
const XmpNsInfo* xnp = lookupNsRegistryUnsafe(XmpNsInfo::Prefix(prefix)); |
| 2527 |
#ifdef EXV_USING_CPP_ELEVEN |
|
| 2528 |
std::lock_guard<std::mutex> guard(mutex_); |
|
| 2529 |
#endif |
|
| 2518 | 2530 |
if (xnp) {
|
| 2519 | 2531 |
#ifndef SUPPRESS_WARNINGS |
| 2520 | 2532 |
if (strcmp(xnp->ns_, ns2.c_str()) != 0) {
|
- « Previous
- 1
- …
- 4
- 5
- 6
- Next »