Pārlūkot izejas kodu

task: Prevent "unexpected task state" when cancelling task sometimes

rdb 4 gadi atpakaļ
vecāks
revīzija
91a6ff1d81
1 mainītis faili ar 5 papildinājumiem un 0 dzēšanām
  1. 5 0
      panda/src/event/asyncFuture.cxx

+ 5 - 0
panda/src/event/asyncFuture.cxx

@@ -315,6 +315,11 @@ wake_task(AsyncTask *task) {
     task->_state = AsyncTask::S_servicing;
     task->_state = AsyncTask::S_servicing;
     return;
     return;
 
 
+  case AsyncTask::S_active:
+    // It could have already been activated, such as by a cancel() which then
+    // indirectly caused the awaiting future to be cancelled.  Do nothing.
+    return;
+
   case AsyncTask::S_inactive:
   case AsyncTask::S_inactive:
     // Schedule it immediately.
     // Schedule it immediately.
     nassertv(task->_manager == nullptr);
     nassertv(task->_manager == nullptr);