[telepathy-stream-engine/master] Set as sched_rr if possible
Olivier Crête
olivier.crete at collabora.co.uk
Mon Jul 13 13:09:58 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, ¶m);
}
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, ¶m);
}
static GstBusSyncReply
--
1.5.6.5
More information about the telepathy-commits
mailing list