Commit: b008145d6243a073de31b0360fbc9de00cf7263e
Author: Bastien Montagne
Date: Sun Oct 18 15:19:26 2015 +0200
Branches: new-filebrowser-preview-temp
https://developer.blender.org/rBb008145d6243a073de31b0360fbc9de00cf7263e
Cleanup: factorize task data freeing into own func, much less verbose that way.
===================================================================
M source/blender/blenlib/intern/task.c
===================================================================
diff --git a/source/blender/blenlib/intern/task.c
b/source/blender/blenlib/intern/task.c
index 8850ef0..abd4435 100644
--- a/source/blender/blenlib/intern/task.c
+++ b/source/blender/blenlib/intern/task.c
@@ -84,6 +84,19 @@ typedef struct TaskThread {
int id;
} TaskThread;
+/* Helper */
+static void task_data_free(Task *task, const int thread_id)
+{
+ if (task->free_taskdata) {
+ if (task->freedata) {
+ task->freedata(task->pool, task->taskdata, thread_id);
+ }
+ else {
+ MEM_freeN(task->taskdata);
+ }
+ }
+}
+
/* Task Scheduler */
static void task_pool_num_decrease(TaskPool *pool, size_t done)
@@ -171,14 +184,7 @@ static void *task_scheduler_thread_run_ex(void *thread_p,
const bool forced_back
task->run(pool, task->taskdata, thread_id);
/* delete task */
- if (task->free_taskdata) {
- if (task->freedata) {
- task->freedata(pool, task->taskdata, thread_id);
- }
- else {
- MEM_freeN(task->taskdata);
- }
- }
+ task_data_free(task, thread_id);
MEM_freeN(task);
/* notify pool task was done */
@@ -284,14 +290,7 @@ void BLI_task_scheduler_free(TaskScheduler *scheduler)
/* delete leftover tasks */
for (task = scheduler->queue.first; task; task = task->next) {
- if (task->free_taskdata) {
- if (task->freedata) {
- task->freedata(task->pool, task->taskdata, 0);
- }
- else {
- MEM_freeN(task->taskdata);
- }
- }
+ task_data_free(task, 0);
}
BLI_freelistN(&scheduler->queue);
@@ -335,14 +334,7 @@ static void task_scheduler_clear(TaskScheduler *scheduler,
TaskPool *pool)
nexttask = task->next;
if (task->pool == pool) {
- if (task->free_taskdata) {
- if (task->freedata) {
- task->freedata(pool, task->taskdata, 0);
- }
- else {
- MEM_freeN(task->taskdata);
- }
- }
+ task_data_free(task, 0);
BLI_freelinkN(&scheduler->queue, task);
done++;
@@ -480,14 +472,7 @@ void BLI_task_pool_work_and_wait(TaskPool *pool)
work_task->run(pool, work_task->taskdata, 0);
/* delete task */
- if (task->free_taskdata) {
- if (task->freedata) {
- task->freedata(pool, task->taskdata, 0);
- }
- else {
- MEM_freeN(task->taskdata);
- }
- }
+ task_data_free(task, 0);
MEM_freeN(work_task);
/* notify pool task was done */
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs