1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
#include "config.h"
#include <Ecore.h>
#include <assert.h>
#include <unistd.h>
const char *called = NULL;
static const char *idler_str = "idler";
static const char *idle_enterer_str = "idler_enterer";
static const char *idle_exiter_str = "idler_exiter";
static const char *timer1_str = "timer 1";
static const char *timer2_str = "timer 2";
static const char *pipe_read_str = "pipe read";
int count;
Ecore_Pipe *the_pipe;
Eina_Bool timer_one(void *data __UNUSED__)
{
fprintf(stderr, "timer 1\n");
assert(called == pipe_read_str);
called = timer1_str;
ecore_pipe_write(the_pipe, "b", 1);
count++;
if (count == 10)
{
ecore_main_loop_quit();
return EINA_FALSE;
}
return EINA_TRUE;
}
Eina_Bool timer_two(void *data __UNUSED__)
{
fprintf(stderr, "timer 2\n");
assert(called == timer1_str);
called = timer2_str;
return EINA_TRUE;
}
Eina_Bool idle_enterer_one(void *data __UNUSED__)
{
fprintf(stderr, "idle enterer!\n");
switch (count)
{
default:
assert(called == timer2_str);
break;
case 1:
assert(called == timer1_str);
break;
case 0:
assert(called == NULL);
}
called = idle_enterer_str;
return EINA_TRUE;
}
Eina_Bool idler_one(void *data __UNUSED__)
{
fprintf(stderr, "idler!\n");
assert(called == idle_enterer_str);
called = idler_str;
if (count == 0)
ecore_timer_add(0.0, timer_two, NULL);
return EINA_TRUE;
}
Eina_Bool idle_exiter_one(void *data __UNUSED__)
{
fprintf(stderr, "idle exiter!\n");
assert(called == idler_str);
called = idle_exiter_str;
return EINA_TRUE;
}
void pipe_read(void *data __UNUSED__, void *buffer __UNUSED__, unsigned int nbyte __UNUSED__)
{
fprintf(stderr, "pipe read\n");
assert(called == idle_exiter_str);
called = pipe_read_str;
}
int main(int argc __UNUSED__, char **argv __UNUSED__)
{
assert(1 == ecore_init());
the_pipe = ecore_pipe_add(&pipe_read, NULL);
assert(the_pipe != NULL);
assert(EINA_TRUE == ecore_pipe_write(the_pipe, "a", 1));
assert(NULL != ecore_timer_add(0.0, timer_one, NULL));
assert(NULL != ecore_idle_enterer_add(&idle_enterer_one, NULL));
assert(NULL != ecore_idler_add(&idler_one, NULL));
assert(NULL != ecore_idle_exiter_add(&idle_exiter_one, NULL));
ecore_main_loop_begin();
/* glib main loop exits on an idle enterer */
assert(called == idle_enterer_str);
assert(0 == ecore_shutdown());
return 0;
}
|