4 struct context { // helper struct to give some context to the callbacks
5 const char *str1, *str2;
6 Ecore_Event_Handler *handler1;
7 Ecore_Event_Handler *handler2;
10 static _event_type = 0; // a new type of event will be defined and stored here
13 _event_handler1_cb(void *data, int type, void *event)
16 const char *str = data;
18 printf("event_handler1: number=%d, data=\"%s\".\n", *number, str);
20 if ((*number % 2) == 0)
21 return ECORE_CALLBACK_DONE;
23 return ECORE_CALLBACK_PASS_ON;
27 _event_handler2_cb(void *data, int type, void *event) // event callback
29 struct context *ctxt = data;
32 printf("event_handler2: number=%d.\n", *number);
36 const char *old = NULL;
37 old = ecore_event_handler_data_set(ctxt->handler1, (void *)ctxt->str2);
38 printf("changed handler1 data from \"%s\" to \"%s\".\n",
41 else if (*number >= 10)
43 printf("finish main loop.\n");
44 ecore_main_loop_quit();
47 return ECORE_CALLBACK_DONE; // same as EINA_FALSE
50 int main(int argc, char **argv)
52 struct context ctxt = {0};
54 ctxt.str1 = "dataone";
55 ctxt.str2 = "datatwo";
59 printf("ERROR: Cannot init Ecore!\n");
63 _event_type = ecore_event_type_new();
65 ctxt.handler1 = ecore_event_handler_add(_event_type,
68 ctxt.handler2 = ecore_event_handler_add(_event_type,
72 for (i = 0; i <= 15; i++)
74 int *event_data = malloc(sizeof(*event_data));
76 ecore_event_add(_event_type, event_data, NULL, NULL);
79 printf("start the main loop.\n");
81 ecore_main_loop_begin();