From 355fcfb9de278755a5e50b3e67c6aa102353300a Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 20 Apr 2026 12:20:08 +0200 Subject: [PATCH] =?UTF-8?q?refactor(core/audio):=20iostream=20=E2=86=92=20?= =?UTF-8?q?cstdio=20per=20als=20missatges=20d'error=20(COUP-03)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit jail_audio.hpp és un header inline que arrossegava a cada TU que l'incloïa, només per a std::cout de missatges d'error. és un include pesat i aquí no aporta res: estem fent logging simple. Passem a + std::fprintf(stderr, ...) als dos fitxers (jail_audio i audio.cpp). Missatges prefixats "Ja::funció:" / "Audio:" seguint la convenció "Module: message" que ja fan servir director.cpp, options.cpp, resource_cache.cpp, etc. Efecte col·lateral: stderr és l'stream correcte per als errors (abans anaven a stdout). Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/audit-core-audio.md | 2 +- source/core/audio/audio.cpp | 4 ++-- source/core/audio/jail_audio.hpp | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/audit-core-audio.md b/docs/audit-core-audio.md index cadaa77..6a6fe0f 100644 --- a/docs/audit-core-audio.md +++ b/docs/audit-core-audio.md @@ -62,7 +62,7 @@ Los IDs se mantienen estables una vez asignados. Cada entrada apunta al(los) fic |----|---------------|----------|-----------|--------|-------| | COUP-01 | `jail_audio.hpp:107-118` | `inline` globals en namespace: estado del engine sin encapsulación | Crítico | DEFERRED | Refactor grande; se hará en fase posterior | | COUP-02 | `jail_audio.hpp` entero | Engine header-only: 678 líneas compilándose en cada TU | Importante | DEFERRED | Depende de COUP-01 | -| COUP-03 | `audio.cpp:3`, `jail_audio.hpp:8` | `#include ` sólo para `std::cout` de errores | Importante | PENDING | Sustituir por `std::fprintf(stderr,…)` con `` | +| COUP-03 | `audio.cpp:3`, `jail_audio.hpp:8` | `#include ` sólo para `std::cout` de errores | Importante | DONE | `` → `` als dos fitxers. `jail_audio.hpp` ja no arrossega iostream a cada TU que l'inclou. Missatges prefixats `Ja::` / `Audio:` (convenció `Module: message` del projecte) | | COUP-04 | `audio.cpp:43-45`, `208` | `Ja::init` en `initSDLAudio` vs `Ja::quit` en destructor (asimetría) | Menor | WONTFIX | Convive con singleton; se revisará con COUP-01 | | COUP-05 | `audio.hpp:71,79` | API pública expone `Ja::Music*`/`Ja::Sound*` | Menor | WONTFIX | Forward-declare ya mitiga; evita doble lookup por nombre | diff --git a/source/core/audio/audio.cpp b/source/core/audio/audio.cpp index 625dbe3..445b801 100644 --- a/source/core/audio/audio.cpp +++ b/source/core/audio/audio.cpp @@ -3,7 +3,7 @@ #include // Para SDL_GetError, SDL_Init #include // Para clamp -#include // Para std::cout +#include // Para std::fprintf // Implementació de stb_vorbis (ha d'anar ABANS d'incloure jail_audio.hpp). // clang-format off @@ -230,7 +230,7 @@ void Audio::enableMusic(bool value) { // Inicialitza SDL Audio void Audio::initSDLAudio() { if (!SDL_Init(SDL_INIT_AUDIO)) { - std::cout << "SDL_AUDIO could not initialize! SDL Error: " << SDL_GetError() << '\n'; + std::fprintf(stderr, "Audio: SDL_AUDIO could not initialize! SDL Error: %s\n", SDL_GetError()); } else { Ja::init(Defaults::Audio::FREQUENCY, Defaults::Audio::FORMAT, Defaults::Audio::CHANNELS); sound_enabled_ = config_.sound_enabled; diff --git a/source/core/audio/jail_audio.hpp b/source/core/audio/jail_audio.hpp index 5c536f0..0bed69e 100644 --- a/source/core/audio/jail_audio.hpp +++ b/source/core/audio/jail_audio.hpp @@ -5,7 +5,7 @@ #include #include -#include +#include #include #include #include @@ -274,7 +274,7 @@ namespace Ja { audio_spec = {.format = format, .channels = num_channels, .freq = freq}; if (sdl_audio_device != 0) { SDL_CloseAudioDevice(sdl_audio_device); } sdl_audio_device = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &audio_spec); - if (sdl_audio_device == 0) { std::cout << "Failed to initialize SDL audio!" << '\n'; } + if (sdl_audio_device == 0) { std::fprintf(stderr, "Ja: Failed to initialize SDL audio!\n"); } for (auto& channel : channels) { channel.state = ChannelState::FREE; } } @@ -305,7 +305,7 @@ namespace Ja { &vorbis_error, nullptr); if (music->vorbis == nullptr) { - std::cout << "loadMusic: stb_vorbis_open_memory failed (error " << vorbis_error << ")" << '\n'; + std::fprintf(stderr, "Ja::loadMusic: stb_vorbis_open_memory failed (error %d)\n", vorbis_error); return nullptr; } @@ -341,7 +341,7 @@ namespace Ja { current_music->stream = SDL_CreateAudioStream(¤t_music->spec, &audio_spec); if (current_music->stream == nullptr) { - std::cout << "Failed to create audio stream!" << '\n'; + std::fprintf(stderr, "Ja::playMusic: Failed to create audio stream!\n"); current_music->state = MusicState::STOPPED; return; } @@ -351,7 +351,7 @@ namespace Ja { pumpMusic(current_music); if (!SDL_BindAudioStream(sdl_audio_device, current_music->stream)) { - std::cout << "[ERROR] SDL_BindAudioStream failed!" << '\n'; + std::fprintf(stderr, "Ja::playMusic: SDL_BindAudioStream failed!\n"); } } @@ -450,7 +450,7 @@ namespace Ja { stb_vorbis_seek_start(current_music->vorbis); current_music->stream = SDL_CreateAudioStream(¤t_music->spec, &audio_spec); if (current_music->stream == nullptr) { - std::cout << "Failed to create audio stream for crossfade!" << '\n'; + std::fprintf(stderr, "Ja::crossfadeMusic: Failed to create audio stream!\n"); current_music->state = MusicState::STOPPED; return; } @@ -514,7 +514,7 @@ namespace Ja { auto sound = std::make_unique(); Uint8* raw = nullptr; if (!SDL_LoadWAV_IO(SDL_IOFromMem(buffer, size), true, &sound->spec, &raw, &sound->length)) { - std::cout << "Failed to load WAV from memory: " << SDL_GetError() << '\n'; + std::fprintf(stderr, "Ja::loadSound: Failed to load WAV from memory: %s\n", SDL_GetError()); return nullptr; } sound->buffer.reset(raw); // adopta el SDL_malloc'd buffer @@ -548,7 +548,7 @@ namespace Ja { channels[channel].stream = SDL_CreateAudioStream(&channels[channel].sound->spec, &audio_spec); if (channels[channel].stream == nullptr) { - std::cout << "Failed to create audio stream for sound!" << '\n'; + std::fprintf(stderr, "Ja::playSoundOnChannel: Failed to create audio stream!\n"); channels[channel].state = ChannelState::FREE; return -1; }