]> git.sesse.net Git - vlc/commitdiff
* Thanks to Meuuh for the feedback. threads prioritization should work now, without...
authorDerk-Jan Hartman <hartman@videolan.org>
Sun, 16 Oct 2005 18:01:09 +0000 (18:01 +0000)
committerDerk-Jan Hartman <hartman@videolan.org>
Sun, 16 Oct 2005 18:01:09 +0000 (18:01 +0000)
* If an rt-offset is specified, then this offset is not applied to the main thread, because it's value cannot yet be retrieved at that time (same as before, but now without annoying error).

src/libvlc.h
src/misc/threads.c

index 38c65ca3051af439fbe8c486131fc75d1ec07a59..bf07fcff22f85448d2907b0c3b61e0a8fb091882 100644 (file)
@@ -1253,11 +1253,7 @@ vlc_module_begin();
     add_bool( "minimize-threads", 0, NULL, MINIMIZE_THREADS_TEXT,
               MINIMIZE_THREADS_LONGTEXT, VLC_TRUE );
 
-    /* Always set prio's on Darwin */
-#if defined(SYS_DARWIN)
-    add_bool( "rt-priority", VLC_TRUE, NULL, RT_PRIORITY_TEXT,
-              RT_PRIORITY_LONGTEXT, VLC_TRUE );
-#elif !defined(SYS_BEOS) && defined(PTHREAD_COND_T_IN_PTHREAD_H)
+#if !defined(SYS_DARWIN) && !defined(SYS_BEOS) && defined(PTHREAD_COND_T_IN_PTHREAD_H)
     add_bool( "rt-priority", VLC_FALSE, NULL, RT_PRIORITY_TEXT,
               RT_PRIORITY_LONGTEXT, VLC_TRUE );
 #endif
index dbe7c590f3995009e67c1514eaf960d8092650f1..6a4de6be4059116d7134d9f58def93c9c1f075b7 100644 (file)
@@ -571,13 +571,18 @@ int __vlc_thread_create( vlc_object_t *p_this, char * psz_file, int i_line,
 #elif defined( PTHREAD_COND_T_IN_PTHREAD_H )
     i_ret = pthread_create( &p_this->thread_id, NULL, func, p_data );
 
-    if( config_GetType( p_this, "rt-priority" ) && config_GetInt( p_this, "rt-priority" ) )
+#ifndef SYS_DARWIN
+    if( config_GetInt( p_this, "rt-priority" ) )
+#endif
     {
         int i_error, i_policy;
         struct sched_param param;
 
         memset( &param, 0, sizeof(struct sched_param) );
-        i_priority += config_GetInt( p_this, "rt-offset" );
+        if( config_GetType( p_this, "rt-offset" ) )
+        {
+            i_priority += config_GetInt( p_this, "rt-offset" );
+        }
         if( i_priority <= 0 )
         {
             param.sched_priority = (-1) * i_priority;
@@ -596,10 +601,12 @@ int __vlc_thread_create( vlc_object_t *p_this, char * psz_file, int i_line,
             i_priority = 0;
         }
     }
+#ifndef SYS_DARWIN
     else
     {
         i_priority = 0;
     }
+#endif
 
 #elif defined( HAVE_CTHREADS_H )
     p_this->thread_id = cthread_fork( (cthread_fn_t)func, (any_t)p_data );
@@ -654,13 +661,18 @@ int __vlc_thread_set_priority( vlc_object_t *p_this, char * psz_file,
     }
 
 #elif defined( PTHREAD_COND_T_IN_PTHREAD_H )
-    if( config_GetType( p_this, "rt-priority" ) && config_GetInt( p_this, "rt-priority" ) )
+#ifndef SYS_DARWIN
+    if( config_GetInt( p_this, "rt-priority" ) )
+#endif
     {
         int i_error, i_policy;
         struct sched_param param;
 
         memset( &param, 0, sizeof(struct sched_param) );
-        i_priority += config_GetInt( p_this, "rt-offset" );
+        if( config_GetType( p_this, "rt-offset" ) )
+        {
+            i_priority += config_GetInt( p_this, "rt-offset" );
+        }
         if( i_priority <= 0 )
         {
             param.sched_priority = (-1) * i_priority;