diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp index 8b35a85444..96fccaee88 100644 --- a/media/libaudioclient/AudioTrack.cpp +++ b/media/libaudioclient/AudioTrack.cpp @@ -810,6 +810,13 @@ void AudioTrack::stop() if (t != 0) { if (!isOffloaded_l()) { t->pause(); + } else if (mTransfer == TRANSFER_SYNC_NOTIF_CALLBACK) { + const sp t = mAudioTrackThread; + if (t != 0) { + // causes wake up of the playback thread, that will callback the client for + // EVENT_STREAM_END in processAudioBuffer() + t->wake(); + } } } else { setpriority(PRIO_PROCESS, 0, mPreviousPriority);