The main loop now uses SDL_WaitEvent instead of SDL_PollEvent, and the
indentation level needs to change. For clarity, the previous commit
contains the code changes, while this one updates the indentation.
... | ... |
@@ -393,76 +393,76 @@ run(Uxn *u) |
393 | 393 |
Device *devsys = &u->dev[0]; |
394 | 394 |
redraw(); |
395 | 395 |
while(SDL_WaitEvent(&event)) { |
396 |
- /* .System/halt */ |
|
397 |
- if(devsys->dat[0xf]) |
|
398 |
- return error("Run", "Ended."); |
|
399 |
- /* Window */ |
|
400 |
- if(event.type == SDL_QUIT) |
|
401 |
- return error("Run", "Quit."); |
|
402 |
- else if(event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_EXPOSED) |
|
403 |
- redraw(); |
|
404 |
- else if(event.type == SDL_DROPFILE) { |
|
405 |
- screen_resize(&uxn_screen, WIDTH, HEIGHT); |
|
406 |
- start(u, event.drop.file); |
|
407 |
- SDL_free(event.drop.file); |
|
408 |
- } |
|
409 |
- /* Audio */ |
|
410 |
- else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY) { |
|
411 |
- Device *d = devaudio0 + (event.type - audio0_event); |
|
412 |
- uxn_eval(u, GETVECTOR(d)); |
|
396 |
+ /* .System/halt */ |
|
397 |
+ if(devsys->dat[0xf]) |
|
398 |
+ return error("Run", "Ended."); |
|
399 |
+ /* Window */ |
|
400 |
+ if(event.type == SDL_QUIT) |
|
401 |
+ return error("Run", "Quit."); |
|
402 |
+ else if(event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_EXPOSED) |
|
403 |
+ redraw(); |
|
404 |
+ else if(event.type == SDL_DROPFILE) { |
|
405 |
+ screen_resize(&uxn_screen, WIDTH, HEIGHT); |
|
406 |
+ start(u, event.drop.file); |
|
407 |
+ SDL_free(event.drop.file); |
|
408 |
+ } |
|
409 |
+ /* Audio */ |
|
410 |
+ else if(event.type >= audio0_event && event.type < audio0_event + POLYPHONY) { |
|
411 |
+ Device *d = devaudio0 + (event.type - audio0_event); |
|
412 |
+ uxn_eval(u, GETVECTOR(d)); |
|
413 |
+ } |
|
414 |
+ /* Mouse */ |
|
415 |
+ else if(event.type == SDL_MOUSEMOTION) |
|
416 |
+ mouse_pos(devmouse, |
|
417 |
+ clamp(event.motion.x - PAD, 0, uxn_screen.width - 1), |
|
418 |
+ clamp(event.motion.y - PAD, 0, uxn_screen.height - 1)); |
|
419 |
+ else if(event.type == SDL_MOUSEBUTTONUP) |
|
420 |
+ mouse_up(devmouse, SDL_BUTTON(event.button.button)); |
|
421 |
+ else if(event.type == SDL_MOUSEBUTTONDOWN) |
|
422 |
+ mouse_down(devmouse, SDL_BUTTON(event.button.button)); |
|
423 |
+ else if(event.type == SDL_MOUSEWHEEL) |
|
424 |
+ mouse_scroll(devmouse, event.wheel.x, event.wheel.y); |
|
425 |
+ /* Controller */ |
|
426 |
+ else if(event.type == SDL_TEXTINPUT) |
|
427 |
+ controller_key(devctrl, event.text.text[0]); |
|
428 |
+ else if(event.type == SDL_KEYDOWN) { |
|
429 |
+ int ksym; |
|
430 |
+ if(get_key(&event)) |
|
431 |
+ controller_key(devctrl, get_key(&event)); |
|
432 |
+ else if(get_button(&event)) |
|
433 |
+ controller_down(devctrl, get_button(&event)); |
|
434 |
+ else |
|
435 |
+ do_shortcut(u, &event); |
|
436 |
+ ksym = event.key.keysym.sym; |
|
437 |
+ while(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, redraw_event, redraw_event) == 0) { |
|
438 |
+ SDL_Delay(4); |
|
439 |
+ SDL_PumpEvents(); |
|
413 | 440 |
} |
414 |
- /* Mouse */ |
|
415 |
- else if(event.type == SDL_MOUSEMOTION) |
|
416 |
- mouse_pos(devmouse, |
|
417 |
- clamp(event.motion.x - PAD, 0, uxn_screen.width - 1), |
|
418 |
- clamp(event.motion.y - PAD, 0, uxn_screen.height - 1)); |
|
419 |
- else if(event.type == SDL_MOUSEBUTTONUP) |
|
420 |
- mouse_up(devmouse, SDL_BUTTON(event.button.button)); |
|
421 |
- else if(event.type == SDL_MOUSEBUTTONDOWN) |
|
422 |
- mouse_down(devmouse, SDL_BUTTON(event.button.button)); |
|
423 |
- else if(event.type == SDL_MOUSEWHEEL) |
|
424 |
- mouse_scroll(devmouse, event.wheel.x, event.wheel.y); |
|
425 |
- /* Controller */ |
|
426 |
- else if(event.type == SDL_TEXTINPUT) |
|
427 |
- controller_key(devctrl, event.text.text[0]); |
|
428 |
- else if(event.type == SDL_KEYDOWN) { |
|
429 |
- int ksym; |
|
430 |
- if(get_key(&event)) |
|
431 |
- controller_key(devctrl, get_key(&event)); |
|
432 |
- else if(get_button(&event)) |
|
433 |
- controller_down(devctrl, get_button(&event)); |
|
434 |
- else |
|
435 |
- do_shortcut(u, &event); |
|
436 |
- ksym = event.key.keysym.sym; |
|
437 |
- while(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, redraw_event, redraw_event) == 0) { |
|
438 |
- SDL_Delay(4); |
|
439 |
- SDL_PumpEvents(); |
|
440 |
- } |
|
441 |
- if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYUP, SDL_KEYUP) == 1 && ksym == event.key.keysym.sym) { |
|
442 |
- SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_KEYUP, SDL_KEYUP); |
|
443 |
- SDL_PushEvent(&event); |
|
444 |
- } |
|
445 |
- } else if(event.type == SDL_KEYUP) |
|
446 |
- controller_up(devctrl, get_button(&event)); |
|
447 |
- else if(event.type == SDL_JOYAXISMOTION) { |
|
448 |
- Uint8 vec = get_vector_joystick(&event); |
|
449 |
- if(!vec) |
|
450 |
- controller_up(devctrl, (0x03 << (!event.jaxis.axis * 2)) << 4); |
|
451 |
- else |
|
452 |
- controller_down(devctrl, (0x01 << ((vec + !event.jaxis.axis * 2) - 1)) << 4); |
|
453 |
- } else if(event.type == SDL_JOYBUTTONDOWN) |
|
454 |
- controller_down(devctrl, get_button_joystick(&event)); |
|
455 |
- else if(event.type == SDL_JOYBUTTONUP) |
|
456 |
- controller_up(devctrl, get_button_joystick(&event)); |
|
457 |
- /* Console */ |
|
458 |
- else if(event.type == stdin_event) |
|
459 |
- console_input(u, event.cbutton.button); |
|
460 |
- /* .Screen/vector and redraw */ |
|
461 |
- else if(event.type == redraw_event) { |
|
462 |
- uxn_eval(u, GETVECTOR(devscreen)); |
|
463 |
- if(uxn_screen.fg.changed || uxn_screen.bg.changed) |
|
464 |
- redraw(); |
|
441 |
+ if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, SDL_KEYUP, SDL_KEYUP) == 1 && ksym == event.key.keysym.sym) { |
|
442 |
+ SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_KEYUP, SDL_KEYUP); |
|
443 |
+ SDL_PushEvent(&event); |
|
465 | 444 |
} |
445 |
+ } else if(event.type == SDL_KEYUP) |
|
446 |
+ controller_up(devctrl, get_button(&event)); |
|
447 |
+ else if(event.type == SDL_JOYAXISMOTION) { |
|
448 |
+ Uint8 vec = get_vector_joystick(&event); |
|
449 |
+ if(!vec) |
|
450 |
+ controller_up(devctrl, (0x03 << (!event.jaxis.axis * 2)) << 4); |
|
451 |
+ else |
|
452 |
+ controller_down(devctrl, (0x01 << ((vec + !event.jaxis.axis * 2) - 1)) << 4); |
|
453 |
+ } else if(event.type == SDL_JOYBUTTONDOWN) |
|
454 |
+ controller_down(devctrl, get_button_joystick(&event)); |
|
455 |
+ else if(event.type == SDL_JOYBUTTONUP) |
|
456 |
+ controller_up(devctrl, get_button_joystick(&event)); |
|
457 |
+ /* Console */ |
|
458 |
+ else if(event.type == stdin_event) |
|
459 |
+ console_input(u, event.cbutton.button); |
|
460 |
+ /* .Screen/vector and redraw */ |
|
461 |
+ else if(event.type == redraw_event) { |
|
462 |
+ uxn_eval(u, GETVECTOR(devscreen)); |
|
463 |
+ if(uxn_screen.fg.changed || uxn_screen.bg.changed) |
|
464 |
+ redraw(); |
|
465 |
+ } |
|
466 | 466 |
} |
467 | 467 |
return error("SDL_WaitEvent", SDL_GetError()); |
468 | 468 |
} |