[vlc-devel] commit: Mingw support for garbage collection ( Rémi Denis-Courmont )
Pierre d'Herbemont
pdherbemont at free.fr
Sun Sep 21 18:55:17 CEST 2008
On Sun, Sep 21, 2008 at 5:55 PM, git version control <git at videolan.org> wrote:
> 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;
You need to add a case for the spin lock destruction in vlc_release.
Pierre.
More information about the vlc-devel
mailing list