Android Security 11.0.0 Release 60 (9033583)

-----BEGIN PGP SIGNATURE-----
 
 iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCYztftAAKCRDorT+BmrEO
 eEiXAJ4vHBE8XiPPtNaem+AX7Ya/cj5DPACeLaJVrJbQgqGQp1aurwnx1A9y6ZY=
 =oGyy
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEA2skEMxbPHNb/U7LbZVRKTMRJykFAmM9cgoACgkQbZVRKTMR
 JylWCA//RcP+j8zwzn4mX6z2vqf8wEOpRxZmI0/Viom1fCcUWwGX5LpEQLc62y/X
 pJYuxBM/mIn1dIOvIJUtDP1Og1N6g8tT47+3pnOLfDXO5NT48rK+Mfs61TMCKFQD
 oAKTQ2e8ZgCYdpMSUwpR9lX0FcHAmKb8RRsAW0CvigX+Q3tCAQ6uvbaOwU0R2t2A
 QBCN08ceYz4aP5/yVGrk3sK/PIwIXocd1OJjTZBP0YXuXqv4loo0MKOcXvnMBpa5
 fd2zJqEZD4xTU+9UKq2+XEER6VQL4/4JMtFPsaHTswtWq1GfTtP/wV642FaG9oS0
 V5SKnKjoFr2KPKaWiXmyl32xwn7Ne2J1XUh5SL4Valdk1Dqk4Q+MYyEHv0qGAKjC
 g3sAFUukoxKB6JZxcySfASsUKc1o7xaRNg0MP/IfSHmHFeKv7WrgHEmGK8JnEHzp
 dTynRicaPTezi1jgAj4v8j7ls5IIRvLIjc6qMLNJ5aKzVFnoNRs30YdpCazi1Jq1
 6dVfx0L+wTE457P3V6WiRmTuHTLR4x07r5PVefKMowobiL0nY5YqZJ3anMVaZj14
 yBlq6a53KOZdlbwiLHhAgE4RpsXFVJwOX3e3vmXhgCjVxqhsHWRvRLj7yNObwyzl
 /wSvlGPTCq859phhatO3IKagMCFDSvO5hejI+kSOr0j6SkJNSYA=
 =jDY4
 -----END PGP SIGNATURE-----

Merge tag 'android-security-11.0.0_r60' of https://android.googlesource.com/platform/frameworks/av into staging/lineage-18.1_merge_android-security-11.0.0_r60

Android Security 11.0.0 Release 60 (9033583)

* tag 'android-security-11.0.0_r60' of https://android.googlesource.com/platform/frameworks/av:
  Cache MMAP client silenced state.

Change-Id: I34085224d1fdf0c34183d254aa330d6fc7e79a3d
gugelfrei
Kevin F. Haggerty 2 years ago
commit d580893c06

@ -8885,6 +8885,12 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client,
if (isOutput()) {
ret = AudioSystem::startOutput(portId);
} else {
{
// Add the track record before starting input so that the silent status for the
// client can be cached.
Mutex::Autolock _l(mLock);
setClientSilencedState_l(portId, false /*silenced*/);
}
ret = AudioSystem::startInput(portId);
}
@ -8903,6 +8909,7 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client,
} else {
mHalStream->stop();
}
eraseClientSilencedState_l(portId);
return PERMISSION_DENIED;
}
@ -8911,6 +8918,9 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client,
mChannelMask, mSessionId, isOutput(), client.clientUid,
client.clientPid, IPCThreadState::self()->getCallingPid(),
portId);
if (!isOutput()) {
track->setSilenced_l(isClientSilenced_l(portId));
}
if (isOutput()) {
// force volume update when a new track is added
@ -8967,6 +8977,7 @@ status_t AudioFlinger::MmapThread::stop(audio_port_handle_t handle)
}
mActiveTracks.remove(track);
eraseClientSilencedState_l(track->portId());
mLock.unlock();
if (isOutput()) {
@ -9746,6 +9757,7 @@ void AudioFlinger::MmapCaptureThread::setRecordSilenced(audio_port_handle_t port
broadcast_l();
}
}
setClientSilencedIfExists_l(portId, silenced);
}
void AudioFlinger::MmapCaptureThread::toAudioPortConfig(struct audio_port_config *config)

@ -1843,6 +1843,26 @@ class MmapThread : public ThreadBase
virtual void setRecordSilenced(audio_port_handle_t portId __unused,
bool silenced __unused) {}
void setClientSilencedState_l(audio_port_handle_t portId, bool silenced) {
mClientSilencedStates[portId] = silenced;
}
size_t eraseClientSilencedState_l(audio_port_handle_t portId) {
return mClientSilencedStates.erase(portId);
}
bool isClientSilenced_l(audio_port_handle_t portId) const {
const auto it = mClientSilencedStates.find(portId);
return it != mClientSilencedStates.end() ? it->second : false;
}
void setClientSilencedIfExists_l(audio_port_handle_t portId, bool silenced) {
const auto it = mClientSilencedStates.find(portId);
if (it != mClientSilencedStates.end()) {
it->second = silenced;
}
}
protected:
void dumpInternals_l(int fd, const Vector<String16>& args) override;
void dumpTracks_l(int fd, const Vector<String16>& args) override;
@ -1862,6 +1882,7 @@ class MmapThread : public ThreadBase
AudioHwDevice* const mAudioHwDev;
ActiveTracks<MmapTrack> mActiveTracks;
float mHalVolFloat;
std::map<audio_port_handle_t, bool> mClientSilencedStates;
int32_t mNoCallbackWarningCount;
static constexpr int32_t kMaxNoCallbackWarnings = 5;

Loading…
Cancel
Save