[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