X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fwin32%2Fatomic.c;h=cb2bc842b02912633f0b2f2f087de8c11f3c13cc;hb=36ab287e77e9df059f261ed1cfb13fc4674182ec;hp=abadf894ff956e789f3203151284d24a74c67dda;hpb=6f9bf4ab7f99b89c6c2d6c977028b34f71095a18;p=vlc diff --git a/src/win32/atomic.c b/src/win32/atomic.c index abadf894ff..cb2bc842b0 100644 --- a/src/win32/atomic.c +++ b/src/win32/atomic.c @@ -3,19 +3,19 @@ ***************************************************************************** * Copyright (C) 2010 Rémi Denis-Courmont * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ #ifdef HAVE_CONFIG_H @@ -50,3 +50,22 @@ uintptr_t vlc_atomic_add (vlc_atomic_t *atom, uintptr_t v) return InterlockedExchangeAdd (&atom->s, v) + v; #endif } + +uintptr_t vlc_atomic_swap (vlc_atomic_t *atom, uintptr_t v) +{ +#if defined (WIN64) + return InterlockedExchange64 (&atom->s, v); +#else + return InterlockedExchange (&atom->s, v); +#endif +} + +uintptr_t vlc_atomic_compare_swap (vlc_atomic_t *atom, + uintptr_t oldval, uintptr_t newval) +{ +#if defined (WIN64) + return InterlockedCompareExchange64 (&atom->s, newval, oldval); +#else + return InterlockedCompareExchange (&atom->s, newval, oldval); +#endif +}