Change interface for enumerator_create_filter() callback

This avoids the unportable 5 pointer hack, but requires enumerating in
the callback.
This commit is contained in:
Tobias Brunner
2017-05-26 13:56:44 +02:00
parent 95a63bf281
commit 525cc46cab
50 changed files with 1331 additions and 929 deletions
+14 -7
View File
@@ -2079,13 +2079,20 @@ METHOD(task_manager_t, reset, void,
this->reset = TRUE;
}
/**
* Filter queued tasks
*/
static bool filter_queued(void *unused, queued_task_t **queued, task_t **task)
CALLBACK(filter_queued, bool,
void *unused, enumerator_t *orig, va_list args)
{
*task = (*queued)->task;
return TRUE;
queued_task_t *queued;
task_t **task;
VA_ARGS_VGET(args, task);
if (orig->enumerate(orig, &queued))
{
*task = queued->task;
return TRUE;
}
return FALSE;
}
METHOD(task_manager_t, create_task_enumerator, enumerator_t*,
@@ -2100,7 +2107,7 @@ METHOD(task_manager_t, create_task_enumerator, enumerator_t*,
case TASK_QUEUE_QUEUED:
return enumerator_create_filter(
array_create_enumerator(this->queued_tasks),
(void*)filter_queued, NULL, NULL);
filter_queued, NULL, NULL);
default:
return enumerator_create_empty();
}