gst/schedulers/threadscheduler.c: Ref the task before pushing it on the threadpool. This makes sure that we have a re...

Original commit message from CVS:
* gst/schedulers/threadscheduler.c:
(gst_thread_scheduler_task_start),
(gst_thread_scheduler_task_pause), (gst_thread_scheduler_func):
Ref the task before pushing it on the threadpool. This
makes sure that we have a ref when the threadfunction is
actually called.
This commit is contained in:
Wim Taymans 2005-06-23 17:07:08 +00:00
parent 09ab1d8fb2
commit 830a0368b4
2 changed files with 11 additions and 2 deletions

View file

@ -1,3 +1,12 @@
2005-06-23 Wim Taymans <wim@fluendo.com>
* gst/schedulers/threadscheduler.c:
(gst_thread_scheduler_task_start),
(gst_thread_scheduler_task_pause), (gst_thread_scheduler_func):
Ref the task before pushing it on the threadpool. This
makes sure that we have a ref when the threadfunction is
actually called.
2005-06-23 Andy Wingo <wingo@pobox.com> 2005-06-23 Andy Wingo <wingo@pobox.com>
* gst/base/gstbasesrc.c (gst_basesrc_get_range): Check if the * gst/base/gstbasesrc.c (gst_basesrc_get_range): Check if the

View file

@ -157,6 +157,7 @@ gst_thread_scheduler_task_start (GstTask * task)
GST_TASK_CAST (ttask)->state = GST_TASK_STARTED; GST_TASK_CAST (ttask)->state = GST_TASK_STARTED;
switch (old) { switch (old) {
case GST_TASK_STOPPED: case GST_TASK_STOPPED:
gst_object_ref (GST_OBJECT (task));
g_thread_pool_push (tsched->pool, task, NULL); g_thread_pool_push (tsched->pool, task, NULL);
break; break;
case GST_TASK_PAUSED: case GST_TASK_PAUSED:
@ -210,6 +211,7 @@ gst_thread_scheduler_task_pause (GstTask * task)
GST_TASK_CAST (ttask)->state = GST_TASK_PAUSED; GST_TASK_CAST (ttask)->state = GST_TASK_PAUSED;
switch (old) { switch (old) {
case GST_TASK_STOPPED: case GST_TASK_STOPPED:
gst_object_ref (GST_OBJECT (task));
g_thread_pool_push (tsched->pool, task, NULL); g_thread_pool_push (tsched->pool, task, NULL);
break; break;
case GST_TASK_PAUSED: case GST_TASK_PAUSED:
@ -271,8 +273,6 @@ gst_thread_scheduler_func (GstThreadSchedulerTask * ttask,
{ {
GstTask *task = GST_TASK (ttask); GstTask *task = GST_TASK (ttask);
gst_object_ref (GST_OBJECT (task));
GST_DEBUG_OBJECT (sched, "Entering task %p, thread %p", task, GST_DEBUG_OBJECT (sched, "Entering task %p, thread %p", task,
g_thread_self ()); g_thread_self ());