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 |
} |