live changes to set_sort, set_priority

This commit is contained in:
David Rose 2008-09-26 00:21:06 +00:00
parent e8587e4144
commit 5d8cd59628
3 changed files with 18 additions and 7 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);
}
}