From a917f6660aaf375c8ce478d45973c50d6f468e2a Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 20 Apr 2026 12:17:32 +0200 Subject: [PATCH] fix(core/audio): recuperar el nom del Ja::Music::filename (PATCH-02) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'overload playMusic(Ja::Music*, ...) buidava music_.name a cegues, així que getCurrentMusicName() mentia després d'aquest camí tot i que el Ja::Music que li passaves podia portar filename (Ja::loadMusic té un overload que l'accepta). Ara copiem music->filename — si el caller va usar l'overload amb filename, el nom es conserva; si no, queda buit i el contracte és explícit al comentari. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/audit-core-audio.md | 2 +- source/core/audio/audio.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/audit-core-audio.md b/docs/audit-core-audio.md index abdc44f..cadaa77 100644 --- a/docs/audit-core-audio.md +++ b/docs/audit-core-audio.md @@ -51,7 +51,7 @@ Los IDs se mantienen estables una vez asignados. Cada entrada apunta al(los) fic | ID | Fichero:línea | Hallazgo | Severidad | Estado | Notas | |----|---------------|----------|-----------|--------|-------| | PATCH-01 | `audio.hpp:98,105,111` | `toggleEnabled/toggleSound/toggleMusic` sólo flipan el flag; no reaplican volúmenes | Importante | DONE | `toggle*()` i variants sense bool passen per `enable[Sound|Music](bool)`. Aquestes funcions ara reapliquen el volum cap a `Ja::` perquè els canals actius responguin al toggle | -| PATCH-02 | `audio.cpp:98` | `music_.name.clear()` en overload por puntero → `getCurrentMusicName()` miente | Importante | PENDING | Derivar nombre de `Ja::Music::filename` | +| PATCH-02 | `audio.cpp:98` | `music_.name.clear()` en overload por puntero → `getCurrentMusicName()` miente | Importante | DONE | `music_.name = music->filename`. Si `Ja::Music` va ser carregat amb filename, `getCurrentMusicName()` ara retorna el nom correcte; si no, queda buit (contracte explícit) | | PATCH-03 | `audio.cpp:14-21` | `#undef L,C,R,PLAYBACK_*` workaround para macros filtradas por stb_vorbis | Importante | WONTFIX | Documentado; aislar stb_vorbis en TU propio sería más invasivo — se hará con COUP-01 | | PATCH-04 | `jail_audio.hpp:501-507` | `setMusicPosition`/`getMusicPosition` stubs no-op | Importante | PENDING | Borrar si nadie los llama | | PATCH-05 | `jail_audio.hpp:532-535` | "No hay canal libre → canal 0" robo de voz arbitrario | Importante | DEFERRED | Política de voice-stealing es una feature; se documenta | diff --git a/source/core/audio/audio.cpp b/source/core/audio/audio.cpp index f10eed9..625dbe3 100644 --- a/source/core/audio/audio.cpp +++ b/source/core/audio/audio.cpp @@ -80,7 +80,10 @@ void Audio::playMusic(Ja::Music* music, const int loop, const int crossfade_ms) if (!music_enabled_ || music == nullptr) { return; } playMusicInternal(music, loop, crossfade_ms); - music_.name.clear(); // nom desconegut quan es passa per punter (PATCH-02 el recuperarà de music->filename) + // Si el Ja::Music es va crear amb filename (loadMusic amb 3 arguments), el + // recuperem perquè getCurrentMusicName() no menteixi. Si no, music_.name + // queda buit — el contracte d'aquest overload no garanteix el nom. + music_.name = music->filename; } // Camí comú dels dos overloads: fa el dispatch crossfade vs stop+play i