[vlc-devel] commit: Mingw support for garbage collection ( Rémi Denis-Courmont )

git version control git at videolan.org
Sun Sep 21 17:55:53 CEST 2008


vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Sat Sep 20 17:22:53 2008 +0300| [79bfb76f3186248b28062dc54ff87e7155b14961] | committer: Rémi Denis-Courmont 

Mingw support for garbage collection

(Received no comments on the mailing lists)

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=79bfb76f3186248b28062dc54ff87e7155b14961
---

 src/libvlc.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/libvlc.c b/src/libvlc.c
index a4f4dcb..ee87b4c 100644
--- a/src/libvlc.c
+++ b/src/libvlc.c
@@ -154,7 +154,12 @@ void *vlc_hold (gc_object_t * p_gc)
     uintptr_t refs;
     assert( p_gc );
 
-#ifdef USE_SYNC
+#if defined (WIN32)
+    refs = -1 +
+        __builtin_choose_expr (sizeof (uintptr_t) == 4,
+            InterlockedIncrement (&p_gc->refs),
+            InterlockedIncrement64 (&p_gc->refs));
+#elif defined (USE_SYNC)
     refs = __sync_fetch_and_add (&p_gc->refs, 1);
 #elif defined(__APPLE__)
     refs = OSAtomicIncrement32Barrier((int*)&p_gc->refs) - 1;
@@ -177,7 +182,12 @@ void vlc_release (gc_object_t *p_gc)
 
     assert( p_gc );
 
-#ifdef USE_SYNC
+#if defined (WIN32)
+    refs = 1 +
+        __builtin_choose_expr (sizeof (uintptr_t) == 4,
+            InterlockedDecrement (&p_gc->refs),
+            InterlockedDecrement64 (&p_gc->refs));
+#elif defined (USE_SYNC)
     refs = __sync_fetch_and_sub (&p_gc->refs, 1);
 #elif defined(__APPLE__)
     refs = OSAtomicDecrement32Barrier((int*)&p_gc->refs) + 1;




More information about the vlc-devel mailing list