GstTask: add methods for configuring the pool

Add getter and setter for configuring the GstTaskPool to use for a GstTask.
This commit is contained in:
Wim Taymans 2009-04-23 17:19:11 +02:00 committed by Wim Taymans
parent a8d2516fa6
commit 02250179d9
3 changed files with 73 additions and 0 deletions

View file

@ -2210,6 +2210,9 @@ gst_task_create
gst_task_set_lock
gst_task_set_priority
gst_task_set_pool
gst_task_get_pool
GstTaskThreadCallbacks
gst_task_set_thread_callbacks

View file

@ -400,6 +400,73 @@ gst_task_set_priority (GstTask * task, GThreadPriority priority)
GST_OBJECT_UNLOCK (task);
}
/**
* gst_task_get_pool:
* @task: a #GstTask
*
* Get the #GstTaskPool that this task will use for its streaming
* threads.
*
* MT safe.
*
* Returns: the #GstTaskPool used by @task. gst_object_unref()
* after usage.
*
* Since: 0.10.24
*/
GstTaskPool *
gst_task_get_pool (GstTask * task)
{
GstTaskPool *result;
GstTaskPrivate *priv;
g_return_val_if_fail (GST_IS_TASK (task), NULL);
priv = task->priv;
GST_OBJECT_LOCK (task);
result = gst_object_ref (priv->pool);
GST_OBJECT_UNLOCK (task);
return result;
}
/**
* gst_task_set_pool:
* @task: a #GstTask
* @pool: a #GstTaskPool
*
* Set @pool as the new GstTaskPool for @task. Any new streaming threads that
* will be created by @task will now use @pool.
*
* MT safe.
*
* Since: 0.10.24
*/
void
gst_task_set_pool (GstTask * task, GstTaskPool * pool)
{
GstTaskPool *old;
GstTaskPrivate *priv;
g_return_if_fail (GST_IS_TASK (task));
g_return_if_fail (GST_IS_TASK_POOL (pool));
priv = task->priv;
GST_OBJECT_LOCK (task);
if (priv->pool != pool) {
old = priv->pool;
priv->pool = gst_object_ref (pool);
} else
old = NULL;
GST_OBJECT_UNLOCK (task);
if (old)
gst_object_unref (old);
}
/**
* gst_task_set_thread_callbacks:
* @task: The #GstTask to use

View file

@ -183,6 +183,9 @@ GstTask* gst_task_create (GstTaskFunction func, gpointer data);
void gst_task_set_lock (GstTask *task, GStaticRecMutex *mutex);
void gst_task_set_priority (GstTask *task, GThreadPriority priority);
GstTaskPool * gst_task_get_pool (GstTask *task);
void gst_task_set_pool (GstTask *task, GstTaskPool *pool);
void gst_task_set_thread_callbacks (GstTask *task,
GstTaskThreadCallbacks *callbacks,
gpointer user_data,