]> git.sesse.net Git - vlc/blobdiff - include/vlc_threads.h
Revert "Fixed open network panel."
[vlc] / include / vlc_threads.h
index 5779ee8758a54feb30ee66c28ff175bdc666f8c8..2ce2302b7211a0b5ef38ef8a7955cc3de375606c 100644 (file)
@@ -562,10 +562,19 @@ static inline int vlc_spin_init (vlc_spinlock_t *spin)
 /**
  * Issues a full memory barrier.
  */
+#if defined (__APPLE__)
+# include <libkern/OSAtomic.h> /* OSMemoryBarrier() */
+#endif
 static inline void barrier (void)
 {
-#if defined (__GNUC__) /* FIXME: || defined (ICC_whatever) */
+#if defined (__GNUC__) && (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
     __sync_synchronize ();
+#elif defined(__APPLE__)
+    OSMemoryBarrier ();
+#elif defined(__powerpc__)
+    asm volatile ("sync":::"memory");
+#elif defined(__i386__)
+    asm volatile ("mfence":::"memory");
 #elif defined (LIBVLC_USE_PTHREAD)
     static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
     pthread_mutex_lock (&lock);