]> git.sesse.net Git - vlc/commitdiff
Force thread priorities in the supported range
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Fri, 6 Jun 2008 16:34:03 +0000 (19:34 +0300)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Fri, 6 Jun 2008 16:34:03 +0000 (19:34 +0300)
(assuming rt-offset is zero)

include/vlc_threads.h
src/misc/threads.c

index c3c8b4fe9c56519d5605bb8032cc45df60c44ff0..89e8ccc48843168759f65adebe6f490196130501 100644 (file)
 
 /* Thread priorities */
 #ifdef __APPLE__
-#   define VLC_THREAD_PRIORITY_LOW (-47)
-#   define VLC_THREAD_PRIORITY_INPUT 37
-#   define VLC_THREAD_PRIORITY_AUDIO 37
-#   define VLC_THREAD_PRIORITY_VIDEO (-47)
-#   define VLC_THREAD_PRIORITY_OUTPUT 37
-#   define VLC_THREAD_PRIORITY_HIGHEST 37
+#   define VLC_THREAD_PRIORITY_LOW      0
+#   define VLC_THREAD_PRIORITY_INPUT   22
+#   define VLC_THREAD_PRIORITY_AUDIO   22
+#   define VLC_THREAD_PRIORITY_VIDEO    0
+#   define VLC_THREAD_PRIORITY_OUTPUT  22
+#   define VLC_THREAD_PRIORITY_HIGHEST 22
 
 #elif defined(SYS_BEOS)
 #   define VLC_THREAD_PRIORITY_LOW 5
index 90c6029ef545aeb5f87c85ab11eca36f4ac218ee..0ae8fb4a1d236f9b84ce5262a8cbb0700085c9a5 100644 (file)
@@ -515,19 +515,19 @@ int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line
     if( config_GetInt( p_this, "rt-priority" ) > 0 )
 #endif
     {
+        struct sched_param p = { .sched_priority = i_priority, };
+        int policy;
+
         /* Hack to avoid error msg */
         if( config_GetType( p_this, "rt-offset" ) )
-            i_priority += config_GetInt( p_this, "rt-offset" );
-        if( i_priority <= 0 )
-            pthread_attr_setschedpolicy (&attr, SCHED_OTHER);
+            p.sched_priority += config_GetInt( p_this, "rt-offset" );
+        if( p.sched_priority <= 0 )
+            p.sched_priority += sched_get_priority_max (policy = SCHED_OTHER);
         else
-        {
-            struct sched_param param = { .sched_priority = i_priority, };
+            p.sched_priority += sched_get_priority_min (policy = SCHED_RR);
 
-            param.sched_priority += sched_get_priority_min (SCHED_RR);
-            pthread_attr_setschedpolicy (&attr, SCHED_RR);
-            pthread_attr_setschedparam (&attr, &param);
-        }
+        pthread_attr_setschedpolicy (&attr, policy);
+        pthread_attr_setschedparam (&attr, &p);
     }
 
     i_ret = pthread_create( &p_priv->thread_id, &attr, thread_entry, boot );