Parcourir la source

scheduler/process: abort immediate param does not propagate anymore

skypjack il y a 8 mois
Parent
commit
a6c2dc89ac
3 fichiers modifiés avec 10 ajouts et 12 suppressions
  1. 3 10
      src/entt/process/process.hpp
  2. 5 1
      src/entt/process/scheduler.hpp
  3. 2 1
      test/entt/process/process.cpp

+ 3 - 10
src/entt/process/process.hpp

@@ -75,7 +75,7 @@ class basic_process: private std::enable_shared_from_this<basic_process<Delta>>
     };
 
     virtual void update(const Delta, void *) {
-        abort(true);
+        abort();
     }
 
     virtual void succeeded() {}
@@ -127,17 +127,10 @@ public:
         return std::allocate_shared<Type>(alloc, process_arg_t{}, std::forward<Args>(args)...);
     }
 
-    /**
-     * @brief Aborts a process if it's still alive, otherwise does nothing.
-     * @param immediate Requests an immediate operation.
-     */
-    void abort(const bool immediate = false) {
+    /*! @brief Aborts a process if it's still alive, otherwise does nothing. */
+    void abort() {
         if(alive()) {
             current = state::aborted;
-
-            if(immediate) {
-                tick({});
-            }
         }
     }
 

+ 5 - 1
src/entt/process/scheduler.hpp

@@ -330,7 +330,11 @@ public:
      */
     void abort(const bool immediate = false) {
         for(auto &&curr: handlers.first()) {
-            curr.task->abort(immediate);
+            curr.task->abort();
+
+            if (immediate) {
+                curr.task->tick({});
+            }
         }
     }
 

+ 2 - 1
test/entt/process/process.cpp

@@ -171,7 +171,8 @@ TEST(Process, AbortImmediately) {
     auto process = entt::basic_process<test::empty>::allocate<test_process<test::empty>>(std::allocator<void>{});
 
     process->tick({});
-    process->abort(true);
+    process->abort();
+    process->tick({});
 
     ASSERT_FALSE(process->alive());
     ASSERT_FALSE(process->finished());