Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/util')
-rw-r--r--intern/cycles/util/util_task.cpp15
-rw-r--r--intern/cycles/util/util_task.h4
2 files changed, 12 insertions, 7 deletions
diff --git a/intern/cycles/util/util_task.cpp b/intern/cycles/util/util_task.cpp
index 4fb61392e92..50c236ac968 100644
--- a/intern/cycles/util/util_task.cpp
+++ b/intern/cycles/util/util_task.cpp
@@ -24,7 +24,7 @@ CCL_NAMESPACE_BEGIN
/* Task Pool */
-TaskPool::TaskPool() : start_time(time_dt()), num_tasks_handled(0)
+TaskPool::TaskPool() : start_time(time_dt()), num_tasks_pushed(0)
{
}
@@ -36,7 +36,7 @@ TaskPool::~TaskPool()
void TaskPool::push(TaskRunFunction &&task)
{
tbb_group.run(std::move(task));
- num_tasks_handled++;
+ num_tasks_pushed++;
}
void TaskPool::wait_work(Summary *stats)
@@ -45,14 +45,19 @@ void TaskPool::wait_work(Summary *stats)
if (stats != NULL) {
stats->time_total = time_dt() - start_time;
- stats->num_tasks_handled = num_tasks_handled;
+ stats->num_tasks_handled = num_tasks_pushed;
}
+
+ num_tasks_pushed = 0;
}
void TaskPool::cancel()
{
- tbb_group.cancel();
- tbb_group.wait();
+ if (num_tasks_pushed > 0) {
+ tbb_group.cancel();
+ tbb_group.wait();
+ num_tasks_pushed = 0;
+ }
}
bool TaskPool::canceled()
diff --git a/intern/cycles/util/util_task.h b/intern/cycles/util/util_task.h
index d3c3c11f8e2..f2718600f30 100644
--- a/intern/cycles/util/util_task.h
+++ b/intern/cycles/util/util_task.h
@@ -71,8 +71,8 @@ class TaskPool {
/* Time time stamp of first task pushed. */
double start_time;
- /* Number of all tasks handled by this pool. */
- int num_tasks_handled;
+ /* Number of all tasks pushed to the pool. Cleared after wait_work() and cancel(). */
+ int num_tasks_pushed;
};
/* Task Scheduler