ecore_job - Queuing tasks
This example shows how an Ecore_Job can be added, how it can be deleted, and that they always execute in the added order.
First, 2 callback functions are declared, one that prints strings passed to it in the data
pointer, and another one that quits the main loop. In the main
function, 3 jobs are added using the first callback, and another one is added using the second one.
Then the second added job is deleted just to demonstrate the usage of ecore_job_del(), and the main loop is finally started. Run this example to see that job1
, job3
and job_quit
are ran, in this order.
#include <Ecore.h>
#include <unistd.h>
static void
_job_print_cb(void *data)
{
char *str = data;
printf("%s\n", str);
}
static void
_job_quit_cb(void *data)
{
}
int main(int argc, char **argv)
{
Ecore_Job *job1, *job2, *job3, *job_quit;
char *str1 = "Job 1 started.";
char *str2 = "Job 2 started.";
char *str3 = "Job 3 started.";
if (!ecore_init())
{
printf("ERROR: Cannot init Ecore!\n");
return -1;
}
job1 = ecore_job_add(_job_print_cb, str1);
job2 = ecore_job_add(_job_print_cb, str2);
job3 = ecore_job_add(_job_print_cb, str3);
job_quit = ecore_job_add(_job_quit_cb, NULL);
printf("Created jobs 1, 2, 3 and quit.\n");
if (job2)
{
char *str;
str = ecore_job_del(job2);
job2 = NULL;
printf("Deleted job 2. Its data was: \"%s\"\n", str);
}
}