diff --git a/panda/src/event/asyncTask.cxx b/panda/src/event/asyncTask.cxx index 50ac1229ea..149370a729 100644 --- a/panda/src/event/asyncTask.cxx +++ b/panda/src/event/asyncTask.cxx @@ -207,9 +207,11 @@ set_sort(int sort) { // Changing sort on an "active" (i.e. enqueued) task means // removing it and re-inserting it into the queue. PT(AsyncTask) hold_task = this; - _manager->remove(this); + AsyncTaskChain *chain = _manager->do_find_task_chain(_chain_name); + nassertv(chain != (AsyncTaskChain *)NULL); + chain->do_remove(this); _sort = sort; - _manager->add(this); + chain->do_add(this); } else { // If it's sleeping, currently being serviced, or something @@ -246,9 +248,11 @@ set_priority(int priority) { // Changing priority on an "active" (i.e. enqueued) task means // removing it and re-inserting it into the queue. PT(AsyncTask) hold_task = this; - _manager->remove(this); + AsyncTaskChain *chain = _manager->do_find_task_chain(_chain_name); + nassertv(chain != (AsyncTaskChain *)NULL); + chain->do_remove(this); _priority = priority; - _manager->add(this); + chain->do_add(this); } else { // If it's sleeping, currently being serviced, or something diff --git a/panda/src/event/asyncTaskChain.cxx b/panda/src/event/asyncTaskChain.cxx index f4c9ec61cd..9ef0aa636e 100644 --- a/panda/src/event/asyncTaskChain.cxx +++ b/panda/src/event/asyncTaskChain.cxx @@ -308,6 +308,8 @@ do_add(AsyncTask *task) { double now = _manager->_clock->get_frame_time(); task->_start_time = now; + _manager->add_task_by_name(task); + if (task->has_delay()) { // This is a deferred task. Add it to the sleeping queue. task->_wake_time = now + task->get_delay(); @@ -796,7 +798,13 @@ void AsyncTaskChain:: do_write(ostream &out, int indent_level) const { if (has_name()) { indent(out, indent_level) - << get_name() << "\n"; + << get_name(); + if (_num_threads > 0) { + out << ", " << _num_threads << " threads"; + } + out << "\n"; + } else if (_num_threads > 0) { + out << "Default task chain, " << _num_threads << " threads\n"; } static const size_t buffer_size = 1024; diff --git a/panda/src/event/asyncTaskManager.cxx b/panda/src/event/asyncTaskManager.cxx index 85a809b6b4..5d244aa370 100644 --- a/panda/src/event/asyncTaskManager.cxx +++ b/panda/src/event/asyncTaskManager.cxx @@ -168,8 +168,6 @@ add(AsyncTask *task) { task->_state == AsyncTask::S_inactive); nassertv(!do_has_task(task)); - add_task_by_name(task); - AsyncTaskChain *chain = do_find_task_chain(task->_chain_name); if (chain == (AsyncTaskChain *)NULL) { event_cat.warning() @@ -501,6 +499,7 @@ write(ostream &out, int indent_level) const { tci != _task_chains.end(); ++tci) { AsyncTaskChain *chain = (*tci); + out << "\n"; chain->do_write(out, indent_level + 2); } }