GstTaks does not always unref the taskpool it was created from because it
depends on when the pool provided an ID for joining the task.
Rework some code so that we always unref the pool and optionally join when the
pool provided an id.
Fixes #589127
/* clean the thread */
task->abidata.ABI.thread = NULL;
/* get the id and pool to join */
- if ((id = priv->id)) {
- if ((pool = priv->pool_id))
- gst_object_ref (pool);
- priv->pool_id = NULL;
- priv->id = NULL;
- }
+ pool = priv->pool_id;
+ id = priv->id;
+ priv->pool_id = NULL;
+ priv->id = NULL;
GST_OBJECT_UNLOCK (task);
if (pool) {
- gst_task_pool_join (pool, id);
+ if (id)
+ gst_task_pool_join (pool, id);
gst_object_unref (pool);
}