mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
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:
parent
a8d2516fa6
commit
02250179d9
3 changed files with 73 additions and 0 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue