diff options
author | David Phillips <david@sighup.nz> | 2017-01-28 14:30:52 +1300 |
---|---|---|
committer | David Phillips <david@sighup.nz> | 2017-01-28 14:30:52 +1300 |
commit | dec7d61e23e0b3cbdf406f83eb9e46042ad9bc2f (patch) | |
tree | 392c3dcb05d873bc813d4616f2d49fa781f972bf | |
parent | f3d9186c76dead3cbed5b7cd98c25a97666d101c (diff) | |
download | tetris-dec7d61e23e0b3cbdf406f83eb9e46042ad9bc2f.tar.xz |
Wait, don't poll, for SDL events
This is a hangover of some testing code. We don't need multi-thousand FPS
for tetris, so waiting on events is cretainly better ☺
-rw-r--r-- | tetris.c | 78 |
1 files changed, 39 insertions, 39 deletions
@@ -200,6 +200,7 @@ void main_loop() last_x = last_y = x = y = 0; SDL_AddTimer(500, &gravity_callback, NULL); char lockout; + while (running) { lockout = 0; @@ -214,47 +215,46 @@ void main_loop() draw_board(&board); draw_piece(x, y, held.colour, held.bitmap); plot_update(); - while(SDL_PollEvent(&e)) + SDL_WaitEvent(&e); + switch (e.type) { - switch (e.type) - { - case SDL_USEREVENT: - if (lockout) { - drop_piece(x, y, &held, &board); - last_x = last_y = x = y = 0; - new_piece(&held); - lockout = 0; - } else { - last_y = y++; /* gravity */ - last_x = x; - } - break; - case SDL_QUIT: - fprintf(stderr, "quit\n"); - running = false; - break; - - case SDL_KEYDOWN: - switch (e.key.keysym.sym) - { - case SDLK_a: last_x = x--; break; - case SDLK_d: last_x = x++; break; - case SDLK_w: - i = 0; - do - { - rotate(&held, 1); - } while(hit_side(x, y, &held, &board) && i++ < 4); - break; - case SDLK_q: - running = false; - break; - } - break; - default: - break; - } + case SDL_USEREVENT: + if (lockout) { + drop_piece(x, y, &held, &board); + last_x = last_y = x = y = 0; + new_piece(&held); + lockout = 0; + } else { + last_y = y++; /* gravity */ + last_x = x; + } + break; + case SDL_QUIT: + fprintf(stderr, "quit\n"); + running = false; + break; + + case SDL_KEYDOWN: + switch (e.key.keysym.sym) + { + case SDLK_a: last_x = x--; break; + case SDLK_d: last_x = x++; break; + case SDLK_w: + i = 0; + do + { + rotate(&held, 1); + } while(hit_side(x, y, &held, &board) && i++ < 4); + break; + case SDLK_q: + running = false; + break; + } + break; + default: + break; } + //} } } |