Skip to content

Commit

Permalink
ass::Sound fix (#313)
Browse files Browse the repository at this point in the history
* ass::Sound fix

* onFinished playback fix

* invoking onFinished on player's thread
  • Loading branch information
IlyaZavalov committed Jul 24, 2024
1 parent a00450b commit 948b5a0
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 18 deletions.
6 changes: 4 additions & 2 deletions aui.audio/src/AUI/Audio/AAudioMixer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,10 @@ size_t AAudioMixer::readSoundData(std::span<std::byte> destination) {
return true;
}), mPlayers.end());
}
for (const auto& player: itemsToRemove) {
player->onFinished();
for (auto& player: itemsToRemove) {
player->getThread()->enqueue([player = std::move(player)]() {
player->onFinished();
});
}

return result;
Expand Down
20 changes: 4 additions & 16 deletions aui.audio/src/AUI/Audio/IAudioPlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,7 @@ class API_AUI_AUDIO IAudioPlayer: public AObject {
* sound stream would be rewind.
* @param loop New loop flag
*/
void setLoop(bool loop) {
mLoop = loop;
onLoopSet();
}
void setLoop(bool loop);

/**
* @return Current loop flag
Expand All @@ -76,11 +73,7 @@ class API_AUI_AUDIO IAudioPlayer: public AObject {
* @brief Set level of volume.
* @param volume Integer number from 0 to 256 inclusively, works linear
*/
void setVolume(aui::audio::VolumeLevel volume) {
mVolume = volume;
AUI_NULLSAFE(mResampledStream)->setVolume(volume);
onVolumeSet();
}
void setVolume(aui::audio::VolumeLevel volume);

/**
* @return Current volume level.
Expand All @@ -95,18 +88,13 @@ class API_AUI_AUDIO IAudioPlayer: public AObject {
* @details
* See IAudioPlayer::finished for listening for this event.
*/
void onFinished() {
emit finished;
}
void onFinished();

const AUrl& url() const noexcept {
return mUrl;
}

void rewind() {
release();
initialize();
}
void rewind();

signals:
/**
Expand Down
24 changes: 24 additions & 0 deletions aui.audio/src/AUI/Audio/Platform/IAudioPlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,27 @@ void IAudioPlayer::release() {
mResampledStream.reset();
mSourceStream.reset();
}

void IAudioPlayer::setLoop(bool loop) {
mLoop = loop;
onLoopSet();
}

void IAudioPlayer::setVolume(aui::audio::VolumeLevel volume) {
mVolume = volume;
AUI_NULLSAFE(mResampledStream)->setVolume(volume);
onVolumeSet();
}

void IAudioPlayer::onFinished() {
if (!loop()) {
mPlaybackStatus = PlaybackStatus::STOPPED;
release();
}
emit finished;
}

void IAudioPlayer::rewind() {
release();
initialize();
}

0 comments on commit 948b5a0

Please sign in to comment.