]> git.sesse.net Git - vlc/commitdiff
vlc_timer_*: use atomic_*() functions
authorRémi Denis-Courmont <remi@remlab.net>
Fri, 11 May 2012 19:39:23 +0000 (22:39 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Fri, 11 May 2012 19:41:01 +0000 (22:41 +0300)
src/posix/thread.c

index a7a4873076e47c10961c95630d3a81d42579ff1b..138eac1ccc4d32897e0a4939e96a13db989c23f4 100644 (file)
@@ -994,7 +994,7 @@ struct vlc_timer
     void       (*func) (void *);
     void        *data;
     mtime_t      value, interval;
-    vlc_atomic_t overruns;
+    atomic_uint  overruns;
 };
 
 VLC_NORETURN
@@ -1037,7 +1037,8 @@ static void *vlc_timer_thread (void *data)
         {
             misses--;
             timer->value += misses * timer->interval;
-            vlc_atomic_add (&timer->overruns, misses);
+            atomic_fetch_add_explicit (&timer->overruns, misses,
+                                       memory_order_relaxed);
         }
     }
 
@@ -1069,7 +1070,7 @@ int vlc_timer_create (vlc_timer_t *id, void (*func) (void *), void *data)
     timer->data = data;
     timer->value = 0;
     timer->interval = 0;
-    vlc_atomic_set(&timer->overruns, 0);
+    atomic_init(&timer->overruns, 0);
 
     if (vlc_clone (&timer->thread, vlc_timer_thread, timer,
                    VLC_THREAD_PRIORITY_INPUT))
@@ -1141,7 +1142,8 @@ void vlc_timer_schedule (vlc_timer_t timer, bool absolute,
  */
 unsigned vlc_timer_getoverrun (vlc_timer_t timer)
 {
-    return vlc_atomic_swap (&timer->overruns, 0);
+    return atomic_exchange_explicit (&timer->overruns, 0,
+                                     memory_order_relaxed);
 }