[telepathy-stream-engine/refs/tags/telepathy-stream-engine_0.5.10] Set as sched_rr if possible

Olivier Crête olivier.crete at collabora.co.uk
Mon Oct 26 09:28:25 PDT 2009


---
 src/tp-stream-engine.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/src/tp-stream-engine.c b/src/tp-stream-engine.c
index 9323fde..69738c6 100644
--- a/src/tp-stream-engine.c
+++ b/src/tp-stream-engine.c
@@ -1100,6 +1100,10 @@ bus_async_handler (GstBus *bus G_GNUC_UNUSED,
 static void
 setup_realtime_thread (pthread_t thread)
 {
+  struct sched_param param;
+
+  param.sched_priority = 5;
+  pthread_setschedparam (thread, SCHED_RR, &param);
 }
 
 static void
@@ -1112,7 +1116,7 @@ enter_thread (TpStreamEngine *self, GstObject *src, GstElement *owner)
   g_hash_table_insert (self->priv->object_threads, src,
       GINT_TO_POINTER (thread));
 
-  for (i = 0; i < self->priv->audio_objects; i++)
+  for (i = 0; i < self->priv->audio_objects->len; i++)
     if (g_ptr_array_index (self->priv->audio_objects, i) == src)
       {
         setup_realtime_thread (thread);
@@ -1125,9 +1129,15 @@ enter_thread (TpStreamEngine *self, GstObject *src, GstElement *owner)
 static void
 leave_thread (TpStreamEngine *self, GstObject *src, GstElement *owner)
 {
+  pthread_t thread = pthread_self ();
+  struct sched_param param;
+
   g_mutex_lock (self->priv->mutex);
   g_hash_table_remove (self->priv->object_threads, src);
   g_mutex_unlock (self->priv->mutex);
+
+  param.sched_priority = 0;
+  pthread_setschedparam (thread, SCHED_OTHER, &param);
 }
 
 static GstBusSyncReply
-- 
1.5.6.5




More information about the telepathy-commits mailing list