Ver Fonte

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

rdb há 4 anos atrás
pai
commit
91a6ff1d81
1 ficheiros alterados com 5 adições e 0 exclusões
  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;
     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:
     // Schedule it immediately.
     nassertv(task->_manager == nullptr);