Loading services/audioflinger/PlaybackTracks.h +1 −0 Original line number Diff line number Diff line Loading @@ -316,6 +316,7 @@ protected: binder::Status unmute(/*out*/ bool *ret) override; private: Track* const mTrack; bool setMute(bool muted); }; sp<AudioVibrationController> mAudioVibrationController; sp<os::ExternalVibration> mExternalVibration; Loading services/audioflinger/Tracks.cpp +12 −19 Original line number Diff line number Diff line Loading @@ -1949,9 +1949,7 @@ void AudioFlinger::PlaybackThread::Track::updateTrackFrameInfo( } } binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::mute( /*out*/ bool *ret) { *ret = false; bool AudioFlinger::PlaybackThread::Track::AudioVibrationController::setMute(bool muted) { sp<ThreadBase> thread = mTrack->mThread.promote(); if (thread != 0) { // Lock for updating mHapticPlaybackEnabled. Loading @@ -1959,29 +1957,24 @@ binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::mu PlaybackThread *playbackThread = (PlaybackThread *)thread.get(); if ((mTrack->channelMask() & AUDIO_CHANNEL_HAPTIC_ALL) != AUDIO_CHANNEL_NONE && playbackThread->mHapticChannelCount > 0) { ALOGD("%s, haptic playback was muted for track %d", __func__, mTrack->id()); mTrack->setHapticPlaybackEnabled(false); *ret = true; ALOGD("%s, haptic playback was %s for track %d", __func__, muted ? "muted" : "unmuted", mTrack->id()); mTrack->setHapticPlaybackEnabled(!muted); return true; } } return false; } binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::mute( /*out*/ bool *ret) { *ret = setMute(true); return binder::Status::ok(); } binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::unmute( /*out*/ bool *ret) { *ret = false; sp<ThreadBase> thread = mTrack->mThread.promote(); if (thread != 0) { // Lock for updating mHapticPlaybackEnabled. Mutex::Autolock _l(thread->mLock); PlaybackThread *playbackThread = (PlaybackThread *)thread.get(); if ((mTrack->channelMask() & AUDIO_CHANNEL_HAPTIC_ALL) != AUDIO_CHANNEL_NONE && playbackThread->mHapticChannelCount > 0) { ALOGD("%s, haptic playback was unmuted for track %d", __func__, mTrack->id()); mTrack->setHapticPlaybackEnabled(true); *ret = true; } } *ret = setMute(false); return binder::Status::ok(); } Loading Loading
services/audioflinger/PlaybackTracks.h +1 −0 Original line number Diff line number Diff line Loading @@ -316,6 +316,7 @@ protected: binder::Status unmute(/*out*/ bool *ret) override; private: Track* const mTrack; bool setMute(bool muted); }; sp<AudioVibrationController> mAudioVibrationController; sp<os::ExternalVibration> mExternalVibration; Loading
services/audioflinger/Tracks.cpp +12 −19 Original line number Diff line number Diff line Loading @@ -1949,9 +1949,7 @@ void AudioFlinger::PlaybackThread::Track::updateTrackFrameInfo( } } binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::mute( /*out*/ bool *ret) { *ret = false; bool AudioFlinger::PlaybackThread::Track::AudioVibrationController::setMute(bool muted) { sp<ThreadBase> thread = mTrack->mThread.promote(); if (thread != 0) { // Lock for updating mHapticPlaybackEnabled. Loading @@ -1959,29 +1957,24 @@ binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::mu PlaybackThread *playbackThread = (PlaybackThread *)thread.get(); if ((mTrack->channelMask() & AUDIO_CHANNEL_HAPTIC_ALL) != AUDIO_CHANNEL_NONE && playbackThread->mHapticChannelCount > 0) { ALOGD("%s, haptic playback was muted for track %d", __func__, mTrack->id()); mTrack->setHapticPlaybackEnabled(false); *ret = true; ALOGD("%s, haptic playback was %s for track %d", __func__, muted ? "muted" : "unmuted", mTrack->id()); mTrack->setHapticPlaybackEnabled(!muted); return true; } } return false; } binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::mute( /*out*/ bool *ret) { *ret = setMute(true); return binder::Status::ok(); } binder::Status AudioFlinger::PlaybackThread::Track::AudioVibrationController::unmute( /*out*/ bool *ret) { *ret = false; sp<ThreadBase> thread = mTrack->mThread.promote(); if (thread != 0) { // Lock for updating mHapticPlaybackEnabled. Mutex::Autolock _l(thread->mLock); PlaybackThread *playbackThread = (PlaybackThread *)thread.get(); if ((mTrack->channelMask() & AUDIO_CHANNEL_HAPTIC_ALL) != AUDIO_CHANNEL_NONE && playbackThread->mHapticChannelCount > 0) { ALOGD("%s, haptic playback was unmuted for track %d", __func__, mTrack->id()); mTrack->setHapticPlaybackEnabled(true); *ret = true; } } *ret = setMute(false); return binder::Status::ok(); } Loading