summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_CMakeLists.txt9
-rw-r--r--graphics/alembic/files/patch-lib_Alembic_AbcCoreOgawa_StreamManager.cpp22
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