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) {