Mercurial > mplayer.hg
comparison input/input.c @ 24134:e18a800a02e7
Handle queued commands from input event functions immediately
Check whether an event handler called mp_input_queue_cmd and return the
command immediately if so. Currently x11_common.c creates commands from
mouse position updates.
author | uau |
---|---|
date | Sat, 25 Aug 2007 04:28:20 +0000 |
parents | 9f234010c4be |
children | 84bc662dc979 |
comparison
equal
deleted
inserted
replaced
24133:d43cda21236d | 24134:e18a800a02e7 |
---|---|
1171 #endif | 1171 #endif |
1172 | 1172 |
1173 int code; | 1173 int code; |
1174 if (key_fds[i].no_readfunc_retval) { // getch2 handler special-cased for now | 1174 if (key_fds[i].no_readfunc_retval) { // getch2 handler special-cased for now |
1175 ((void (*)(void))key_fds[i].read_func)(); | 1175 ((void (*)(void))key_fds[i].read_func)(); |
1176 if (cmd_queue_length) | |
1177 return NULL; | |
1176 code = mplayer_get_key(0); | 1178 code = mplayer_get_key(0); |
1177 if (code < 0) | 1179 if (code < 0) |
1178 code = MP_INPUT_NOTHING; | 1180 code = MP_INPUT_NOTHING; |
1179 } | 1181 } |
1180 else | 1182 else |
1262 from_queue = 1; | 1264 from_queue = 1; |
1263 ret = mp_input_get_queued_cmd(peek_only); | 1265 ret = mp_input_get_queued_cmd(peek_only); |
1264 if(ret) break; | 1266 if(ret) break; |
1265 from_queue = 0; | 1267 from_queue = 0; |
1266 ret = read_events(time, paused); | 1268 ret = read_events(time, paused); |
1269 if (!ret) { | |
1270 from_queue = 1; | |
1271 ret = mp_input_get_queued_cmd(peek_only); | |
1272 } | |
1267 break; | 1273 break; |
1268 } | 1274 } |
1269 if(!ret) return NULL; | 1275 if(!ret) return NULL; |
1270 | 1276 |
1271 for(cf = cmd_filters ; cf ; cf = cf->next) { | 1277 for(cf = cmd_filters ; cf ; cf = cf->next) { |