From 333ab8f82d7c11a2f951621d32b6f3f430636264 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Fri, 16 Jan 2026 17:58:00 +0100 Subject: [PATCH] WIP: controls --- build.sh | 8 ++- build/controls.png | Bin 0 -> 33872 bytes src/sdlamp2.c | 137 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 125 insertions(+), 20 deletions(-) create mode 100644 build/controls.png diff --git a/build.sh b/build.sh index 11f51d1..38b9e83 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,11 @@ #!/bin/sh pushd build -gcc -o sdlamp2 -Wall -O0 -ggdb3 ../src/sdlamp2.c `sdl2-config --cflags --libs` + +gcc -Wall -O0 -ggdb3 \ + -o sdlamp2 \ + `sdl2-config --cflags --libs` \ + -lSDL2_image \ + ../src/sdlamp2.c + popd diff --git a/build/controls.png b/build/controls.png new file mode 100644 index 0000000000000000000000000000000000000000..744affb36bd211ef7da1e16af6740fbd1491caec GIT binary patch literal 33872 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 yH$R*(7BiO&TdY#^ 0) { + const int new_bytes = SDL_min(bytes_remaining, 32 * 1024); + static Uint8 converted_buffer[32 * 1024]; + SDL_AudioStreamGet(stream, converted_buffer, + new_bytes); // FIXME(m): error handling. + SDL_QueueAudio(audio_device, converted_buffer, new_bytes); + } + } + + // Deal with drawing to screen + SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); SDL_RenderClear(renderer); SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); SDL_RenderFillRect(renderer, &rewind_rect); - SDL_RenderFillRect(renderer, &pause_rect); + SDL_RenderFillRect(renderer, &stop_rect); + SDL_RenderFillRect(renderer, &play_pause_rect); + SDL_RenderFillRect(renderer, &fast_forward_rect); + + SDL_RenderCopy(renderer, controls_texture, &rewind_symbol_rect, + &rewind_rect); + SDL_RenderCopy(renderer, controls_texture, &stop_symbol_rect, &stop_rect); + if (paused) { + SDL_RenderCopy(renderer, controls_texture, &play_symbol_rect, + &play_pause_rect); + } else { + SDL_RenderCopy(renderer, controls_texture, &pause_symbol_rect, + &play_pause_rect); + } + SDL_RenderCopy(renderer, controls_texture, &fast_forward_symbol_rect, + &fast_forward_rect); SDL_RenderPresent(renderer); } + // Clean up SDL_FreeWAV(wavbuf); SDL_CloseAudioDevice(audio_device); SDL_DestroyRenderer(renderer);