]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
use atomic access for tvhlog_level everywhere
authorJaroslav Kysela <perex@perex.cz>
Tue, 8 Mar 2016 14:51:35 +0000 (15:51 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 8 Mar 2016 14:51:45 +0000 (15:51 +0100)
src/tvhlog.c

index 93284fc83c0b8ea878e6af42408b203ba842fa24..4dc1187e72f6f1d9596add726c64f8aa5a8a8c4c 100644 (file)
@@ -283,7 +283,7 @@ void tvhlogv ( const char *file, int line,
   options = tvhlog_options;
   if (severity >= LOG_DEBUG) {
     ok = 0;
-    if (severity <= tvhlog_level) {
+    if (severity <= atomic_add(&tvhlog_level, 0)) {
       if (tvhlog_trace) {
         ok = htsmsg_get_u32_or_default(tvhlog_trace, "all", 0);
         ok = htsmsg_get_u32_or_default(tvhlog_trace, subsys, ok);
@@ -573,19 +573,14 @@ static const void *
 tvhlog_class_trace_get ( void *o )
 {
   static int si;
-  si = tvhlog_level >= LOG_TRACE;
+  si = atomic_add(&tvhlog_level, 0) >= LOG_TRACE;
   return &si;
 }
 
 static int
 tvhlog_class_trace_set ( void *o, const void *v )
 {
-  pthread_mutex_lock(&tvhlog_mutex);
-  if (*(int *)v)
-    tvhlog_level = LOG_TRACE;
-  else
-    tvhlog_level = LOG_DEBUG;
-  pthread_mutex_unlock(&tvhlog_mutex);
+  atomic_exchange(&tvhlog_level, *(int *)v ? LOG_TRACE : LOG_DEBUG);
   return 1;
 }