- Timestamp:
- Apr 1, 2006, 4:44:09 PM (15 years ago)
- Location:
- libcaca/trunk
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/caca.h
r703 r710 238 238 * 239 239 * @{ */ 240 int caca_get_event(caca_t *kk, unsigned int, struct caca_event *); 241 int caca_wait_event(caca_t *kk, unsigned int, struct caca_event *); 240 int caca_get_event(caca_t *kk, unsigned int, struct caca_event *, int); 242 241 unsigned int caca_get_mouse_x(caca_t *kk); 243 242 unsigned int caca_get_mouse_y(caca_t *kk); -
libcaca/trunk/caca/event.c
r681 r710 46 46 * This function polls the event queue for mouse or keyboard events matching 47 47 * the event mask and returns the first matching event. Non-matching events 48 * are discarded. \c event_mask must have a non-zero value. This function is 49 * non-blocking and returns zero if no more events are pending in the queue. 50 * See also caca_wait_event() for a blocking version of this function. 48 * are discarded. \c event_mask must have a non-zero value. 49 * 50 * The timeout value tells how long this function needs to wait for an 51 * event. A value of zero returns immediately and the function returns zero 52 * if no more events are pending in the queue. A negative value causes the 53 * function to wait indefinitely until a matching event is received. 51 54 * 52 55 * \param event_mask Bitmask of requested events. 56 * \param timeout A timeout value in microseconds 53 57 * \return The next matching event in the queue, or 0 if no event is pending. 54 58 */ 55 int caca_get_event(caca_t *kk, unsigned int event_mask, struct caca_event *ev) 56 { 59 int caca_get_event(caca_t *kk, unsigned int event_mask, 60 struct caca_event *ev, int timeout) 61 { 62 struct caca_timer timer; 63 int usec = 0; 64 57 65 if(!event_mask) 58 66 return 0; 59 67 68 if(timeout > 0) 69 _caca_getticks(&timer); 70 60 71 for( ; ; ) 61 72 { 62 73 int ret = _get_next_event(kk, ev); 63 74 64 if(!ret || ev->type & event_mask) 75 /* If we got the event we wanted, return */ 76 if(ev->type & event_mask) 65 77 return ret; 66 } 67 } 68 69 /** \brief Wait for the next mouse or keyboard input event. 70 * 71 * This function returns the first mouse or keyboard event in the queue 72 * that matches the event mask. If no event is pending, it blocks until a 73 * matching event is received. \c event_mask must have a non-zero value. 74 * See also caca_get_event() for a non-blocking version of this function. 75 * 76 * \param event_mask Bitmask of requested events. 77 * \return The next event in the queue. 78 */ 79 int caca_wait_event(caca_t *kk, unsigned int event_mask, struct caca_event *ev) 80 { 81 if(!event_mask) 82 return 0; 83 84 for( ; ; ) 85 { 86 int ret = _get_next_event(kk, ev); 87 88 if(ret && (ev->type & event_mask)) 89 return ret; 90 91 _caca_sleep(10000); 78 79 /* If there is no timeout, sleep and try again. */ 80 if(timeout < 0) 81 { 82 _caca_sleep(10000); 83 continue; 84 } 85 86 /* If we timeouted, return an empty event */ 87 if(usec >= timeout) 88 { 89 ev->type = CACA_EVENT_NONE; 90 return 0; 91 } 92 93 /* Otherwise sleep a bit. Our granularity is far too high for values 94 * below 10000 microseconds so we cheat a bit. */ 95 if(usec > 10000) 96 _caca_sleep(10000); 97 else 98 _caca_sleep(1000); 99 100 usec += _caca_getticks(&timer); 92 101 } 93 102 } -
libcaca/trunk/src/aafire.c
r704 r710 267 267 #ifdef LIBCACA 268 268 struct caca_event ev; 269 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev ))269 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0)) 270 270 { 271 271 switch(ev.data.key.c) -
libcaca/trunk/src/cacaball.c
r704 r710 94 94 { 95 95 struct caca_event ev; 96 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev ))96 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0)) 97 97 { 98 98 switch(ev.data.key.c) -
libcaca/trunk/src/cacamoir.c
r704 r710 70 70 { 71 71 struct caca_event ev; 72 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev ))72 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0)) 73 73 { 74 74 switch(ev.data.key.c) -
libcaca/trunk/src/cacaplas.c
r703 r710 86 86 { 87 87 struct caca_event ev; 88 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev ))88 if(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0)) 89 89 { 90 90 switch(ev.data.key.c) -
libcaca/trunk/src/cacaplay.c
r702 r710 67 67 caca_display(kk); 68 68 69 while(caca_ wait_event(kk, CACA_EVENT_KEY_PRESS, &ev))69 while(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, -1)) 70 70 { 71 71 if(ev.data.key.c == CACA_KEY_ESCAPE) -
libcaca/trunk/src/cacaview.c
r681 r710 152 152 153 153 if(update) 154 event = caca_get_event(kk, event_mask, &ev );154 event = caca_get_event(kk, event_mask, &ev, 0); 155 155 else 156 event = caca_ wait_event(kk, event_mask, &ev);156 event = caca_get_event(kk, event_mask, &ev, -1); 157 157 158 158 while(event) … … 305 305 help = new_help; 306 306 307 event = caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev );307 event = caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0); 308 308 } 309 309 -
libcaca/trunk/test/colors.c
r681 r710 51 51 52 52 caca_display(kk); 53 caca_ wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);53 caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, -1); 54 54 55 55 caca_detach(kk); -
libcaca/trunk/test/demo.c
r690 r710 75 75 int menu = 0, mouse = 0, xmouse = 0, ymouse = 0; 76 76 77 while(caca_get_event(kk, CACA_EVENT_ANY, &ev ))77 while(caca_get_event(kk, CACA_EVENT_ANY, &ev, 0)) 78 78 { 79 79 if(demo && (ev.type & CACA_EVENT_KEY_PRESS)) … … 149 149 ymouse = ev.data.mouse.y; 150 150 } 151 else if(ev.type & CACA_EVENT_RESIZE) 152 { 153 mouse = 1; /* old hack */ 154 } 151 155 } 152 156 … … 157 161 { 158 162 cucul_set_color(qq, CUCUL_COLOR_RED, CUCUL_COLOR_BLACK); 159 cucul_putstr(qq, xmouse, ymouse, "|\\"); 163 cucul_putstr(qq, xmouse, ymouse, "."); 164 cucul_putstr(qq, xmouse, ymouse + 1, "|\\"); 160 165 } 161 166 caca_display(kk); -
libcaca/trunk/test/dithering.c
r681 r710 125 125 caca_display(kk); 126 126 127 caca_ wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);127 caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, -1); 128 128 129 129 caca_detach(kk); -
libcaca/trunk/test/event.c
r681 r710 55 55 struct caca_event ev; 56 56 static char const * quit_string[] = { "", "q", "qu", "qui", "quit" }; 57 int ret = caca_ wait_event(kk, CACA_EVENT_ANY, &ev);57 int ret = caca_get_event(kk, CACA_EVENT_ANY, &ev, -1); 58 58 59 59 if(!ret) … … 78 78 events[0] = ev; 79 79 80 ret = caca_get_event(kk, CACA_EVENT_ANY, &ev );80 ret = caca_get_event(kk, CACA_EVENT_ANY, &ev, 0); 81 81 } 82 82 while(ret); -
libcaca/trunk/test/gamma.c
r681 r710 63 63 for(x = 0; ; x++) 64 64 { 65 int ret = caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev );65 int ret = caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0); 66 66 67 67 if(ret) -
libcaca/trunk/test/hsv.c
r681 r710 54 54 caca_display(kk); 55 55 56 caca_ wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);56 caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0); 57 57 58 58 caca_detach(kk); -
libcaca/trunk/test/spritedit.c
r681 r710 58 58 char buf[BUFSIZ]; 59 59 60 while(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev ))60 while(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, 0)) 61 61 { 62 62 switch(ev.data.key.c) -
libcaca/trunk/test/transform.c
r681 r710 109 109 caca_display(kk); 110 110 111 caca_ wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);111 caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, -1); 112 112 113 113 caca_detach(kk); -
libcaca/trunk/test/unicode.c
r681 r710 88 88 caca_display(kk); 89 89 90 caca_ wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);90 caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev, -1); 91 91 92 92 caca_detach(kk);
Note: See TracChangeset
for help on using the changeset viewer.