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:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user