[vlc-devel] [RFC v2 1/2] executor: introduce new executor API
Steve Lhomme
robux4 at ycbcr.xyz
Wed Sep 2 14:11:15 CEST 2020
An even simpler example, run the same task twice sequentially:
struct my_task {
vlc_executor_t *executor;
bool first;
char *str;
struct vlc_runnable runnable;
};
static void Run(void *userdata)
{
struct my_task *task = userdata;
printf("start of %s\n", task->str);
vlc_tick_sleep(VLC_TICK_FROM_SEC(3)); // long action
printf("end of %s\n", task->str);
if (task->first)
{
task->first = false;
vlc_executor_Submit(task->executor, &task->runnable);
}
else
{
free(task->str);
free(task);
}
}
void foo(vlc_executor_t *executor, const char *str)
{
// no error handling for brevity
struct my_task *task = malloc(sizeof(*task));
task->str = strdup(str);
task->first = true;
task->executor = executor;
task->runnable.run = Run;
task->runnable.userdata = task;
vlc_executor_Submit(executor, &task->runnable);
vlc_executor_Delete(executor);
}
Is it possible to submit a vlc_runnable that is already in use by the
executor ?
More information about the vlc-devel
mailing list