feat(core/audio): music-ended callback (CONV-03)
Ja::Engine exposa setOnMusicEnded(std::function<void()>). Quan updateCurrentMusic detecta que la pista actual ha acabat de drenar (times == 0 && stream buit) s'atura primer via stopMusic i després s'invoca el callback — així un eventual playMusic des del callback pot començar amb l'engine en estat net. Audio proxeia amb setOnMusicEnded. Contracte documentat: s'executa al mateix thread que Audio::update (render loop); no fer operacions blocants. Cap consumidor actualment; només exposa l'API per quan calgui. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
4e0dcfe739
commit
2ec6fd23b6
4 files changed
+31
-5
No files matched your search
@@ -144,6 +144,14 @@ void Audio::fadeOutMusic(int milliseconds) {
|
||||
}
|
||||
}
|
||||
|
||||
// Registra un callback que el motor dispararà quan la pista actual acabi de
|
||||
// drenar (times == 0 + stream buit). S'executa al mateix thread que
|
||||
// Audio::update (render loop); els consumidors no poden fer I/O blocant.
|
||||
// NOLINTNEXTLINE(readability-make-member-function-const) — muta estat via engine_
|
||||
void Audio::setOnMusicEnded(std::function<void()> callback) {
|
||||
if (engine_) { engine_->setOnMusicEnded(std::move(callback)); }
|
||||
}
|
||||
|
||||
// Consulta directament l'estat a Ja i el projecta al subconjunt d'estats que
|
||||
// exposa Audio (INVALID/DISABLED de Ja col·lapsen a STOPPED — la capa d'usuari
|
||||
// només vol saber si està sonant, pausat o parat).
|
||||
|
||||
Reference in new issue
Block a user