Tizen(Headed) Native API  6.5
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.

//Compile with:
// gcc -o ecore_job_example ecore_job_example.c `pkg-config --libs --cflags ecore`

#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 EINA_UNUSED)
{
   ecore_main_loop_quit();
}

int
main(void)
{
   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);

   (void)job1;
   (void)job3;
   (void)job_quit;

   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);
     }

   ecore_main_loop_begin();
   ecore_shutdown();

   return 0;
}