Branch data Line data Source code
1 : :
2 : : #include "gwrl/event.h"
3 : :
4 : : #define MY_SOURCE_TYPE 2
5 : :
6 : : typedef struct my_source {
7 : : gwrlsrc _;
8 : : int something;
9 : : } my_source;
10 : :
11 : 170 : void my_gather(gwrl * rl) {
12 : 170 : gwrlsrc * src = rl->sources[MY_SOURCE_TYPE];
13 : 170 : my_source * msrc = NULL;
14 [ + + ]: 340 : while(src) {
15 : 170 : msrc = (my_source *)src;
16 : 170 : msrc->something++;
17 [ + + ]: 170 : if(msrc->something == 10) {
18 : 17 : msrc->something = 0;
19 : 17 : gwrlevt * evt = gwrl_evt_create(rl,src,src->callback,src->userdata,0,0);
20 : 17 : gwrl_post_evt(rl,evt);
21 : 17 : }
22 : 170 : src = src->next;
23 : 170 : }
24 : 170 : }
25 : :
26 : 17 : void my_callback(gwrl * rl, gwrlevt * evt) {
27 : : //printf("custom gather fired an event for a custom input source.\n");
28 : 17 : gwrl_stop(rl);
29 : 17 : }
30 : :
31 : 17 : int main(int argc, char ** argv) {
32 : 17 : gwrl * rl = gwrl_create();
33 : 17 : my_source * msrc = gwrl_mem_calloc(1,sizeof(my_source));
34 : 17 : gwrlsrc * src = _gwrlsrc(msrc);
35 : :
36 : : #if GWRL_SRC_TYPES_COUNT < 3
37 : : printf("error: GWRL_SRC_TYPES_COUNT must be at least 3 for this example.\n");
38 : : exit(-1);
39 : : #endif
40 : :
41 : : #if GWRL_GATHER_FUNCS_MAX < 1
42 : : printf("error: GWRL_GATHER_FUNCS_MAX must be at least 1 for this example\n");
43 : : exit(-1);
44 : : #endif
45 : :
46 : 17 : msrc->something = 0;
47 : 17 : src->type = MY_SOURCE_TYPE;
48 : 17 : src->callback = &my_callback;
49 : 17 : gwrl_add_gather_fnc(rl,&my_gather);
50 : 17 : gwrl_allow_poll_sleep(rl,0);
51 : 17 : gwrl_src_add(rl,src);
52 : 17 : gwrl_run(rl);
53 : 17 : return 0;
54 : : }
|