diff options
-rw-r--r-- | graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_CMakeLists.txt | 9 | ||||
-rw-r--r-- | graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_StreamManager.cpp | 22 |
2 files changed, 31 insertions, 0 deletions
diff --git a/graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_CMakeLists.txt b/graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_CMakeLists.txt new file mode 100644 index 000000000000..aabf015a6dc5 --- /dev/null +++ b/graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_CMakeLists.txt @@ -0,0 +1,9 @@ +--- lib/Alembic/AbcCoreOgawa/CMakeLists.txt.orig 2015-01-15 18:28:49 UTC ++++ lib/Alembic/AbcCoreOgawa/CMakeLists.txt +@@ -100,3 +100,6 @@ IF( NOT ALEMBIC_NO_TESTS ) + ADD_SUBDIRECTORY( Tests ) + ENDIF() + ++IF( CMAKE_COMPILER_IS_GNUCXX ) ++ TARGET_LINK_LIBRARIES( AlembicAbcCoreOgawa atomic ) ++ENDIF() diff --git a/graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_StreamManager.cpp b/graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_StreamManager.cpp new file mode 100644 index 000000000000..6691a0b1cd53 --- /dev/null +++ b/graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_StreamManager.cpp @@ -0,0 +1,22 @@ +--- lib/Alembic/AbcCoreOgawa/StreamManager.cpp.orig 2015-01-15 18:28:49 UTC ++++ lib/Alembic/AbcCoreOgawa/StreamManager.cpp +@@ -111,7 +111,8 @@ StreamIDPtr StreamManager::get() + + newVal = oldVal & ~( 1 << (val - 1) ); + } +- while ( !__sync_bool_compare_and_swap( &m_streams, oldVal, newVal ) ); ++ while ( !__atomic_compare_exchange_n( &m_streams, &oldVal, newVal, ++ false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST ) ); + + return StreamIDPtr( new StreamID( this, ( std::size_t ) val - 1 ) ); + } +@@ -140,7 +141,8 @@ void StreamManager::put( std::size_t iSt + newVal = oldVal | ( 1 << iStreamID ); + + } +- while ( !__sync_bool_compare_and_swap( &m_streams, oldVal, newVal ) ); ++ while ( !__atomic_compare_exchange_n( &m_streams, &oldVal, newVal, ++ false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST ) ); + } + + #else |