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