Prechádzať zdrojové kódy

live changes to set_sort, set_priority

David Rose 17 rokov pred
rodič
commit
5d8cd59628

+ 8 - 4
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

+ 9 - 1
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;

+ 1 - 2
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);
   }
 }