Loading services/core/java/com/android/server/audio/AudioService.java +3 −1 Original line number Diff line number Diff line Loading @@ -398,6 +398,8 @@ public class AudioService extends IAudioService.Stub public void onError(int error) { switch (error) { case AudioSystem.AUDIO_STATUS_SERVER_DIED: mRecordMonitor.clear(); sendMsg(mAudioHandler, MSG_AUDIO_SERVER_DIED, SENDMSG_NOOP, 0, 0, null, 0); sendMsg(mAudioHandler, MSG_DISPATCH_AUDIO_SERVER_STATE, Loading services/core/java/com/android/server/audio/RecordingActivityMonitor.java +27 −17 Original line number Diff line number Diff line Loading @@ -78,18 +78,22 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin updateSnapshot(event, uid, session, source, recordingInfo, portId, silenced, activeSource, clientEffects, effects); if (configsSystem != null){ dispatchCallbacks(configsSystem); } } private void dispatchCallbacks(List<AudioRecordingConfiguration> configs) { synchronized (mClients) { // list of recording configurations for "public consumption". It is only computed if // there are non-system recording activity listeners. final List<AudioRecordingConfiguration> configsPublic = mHasPublicClients ? anonymizeForPublicConsumption(configsSystem) : final List<AudioRecordingConfiguration> configsPublic = mHasPublicClients ? anonymizeForPublicConsumption(configs) : new ArrayList<AudioRecordingConfiguration>(); final Iterator<RecMonitorClient> clientIterator = mClients.iterator(); while (clientIterator.hasNext()) { final RecMonitorClient rmc = clientIterator.next(); try { if (rmc.mIsPrivileged) { rmc.mDispatcherCb.dispatchRecordingConfigChange(configsSystem); rmc.mDispatcherCb.dispatchRecordingConfigChange(configs); } else { rmc.mDispatcherCb.dispatchRecordingConfigChange(configsPublic); } Loading @@ -99,7 +103,6 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin } } } } protected void dump(PrintWriter pw) { // players Loading Loading @@ -130,6 +133,13 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin AudioSystem.setRecordingCallback(this); } void clear() { synchronized (mRecordConfigs) { mRecordConfigs.clear(); } dispatchCallbacks(new ArrayList<AudioRecordingConfiguration>()); } void registerRecordingCallback(IRecordingConfigDispatcher rcdb, boolean isPrivileged) { if (rcdb == null) { return; Loading Loading
services/core/java/com/android/server/audio/AudioService.java +3 −1 Original line number Diff line number Diff line Loading @@ -398,6 +398,8 @@ public class AudioService extends IAudioService.Stub public void onError(int error) { switch (error) { case AudioSystem.AUDIO_STATUS_SERVER_DIED: mRecordMonitor.clear(); sendMsg(mAudioHandler, MSG_AUDIO_SERVER_DIED, SENDMSG_NOOP, 0, 0, null, 0); sendMsg(mAudioHandler, MSG_DISPATCH_AUDIO_SERVER_STATE, Loading
services/core/java/com/android/server/audio/RecordingActivityMonitor.java +27 −17 Original line number Diff line number Diff line Loading @@ -78,18 +78,22 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin updateSnapshot(event, uid, session, source, recordingInfo, portId, silenced, activeSource, clientEffects, effects); if (configsSystem != null){ dispatchCallbacks(configsSystem); } } private void dispatchCallbacks(List<AudioRecordingConfiguration> configs) { synchronized (mClients) { // list of recording configurations for "public consumption". It is only computed if // there are non-system recording activity listeners. final List<AudioRecordingConfiguration> configsPublic = mHasPublicClients ? anonymizeForPublicConsumption(configsSystem) : final List<AudioRecordingConfiguration> configsPublic = mHasPublicClients ? anonymizeForPublicConsumption(configs) : new ArrayList<AudioRecordingConfiguration>(); final Iterator<RecMonitorClient> clientIterator = mClients.iterator(); while (clientIterator.hasNext()) { final RecMonitorClient rmc = clientIterator.next(); try { if (rmc.mIsPrivileged) { rmc.mDispatcherCb.dispatchRecordingConfigChange(configsSystem); rmc.mDispatcherCb.dispatchRecordingConfigChange(configs); } else { rmc.mDispatcherCb.dispatchRecordingConfigChange(configsPublic); } Loading @@ -99,7 +103,6 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin } } } } protected void dump(PrintWriter pw) { // players Loading Loading @@ -130,6 +133,13 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin AudioSystem.setRecordingCallback(this); } void clear() { synchronized (mRecordConfigs) { mRecordConfigs.clear(); } dispatchCallbacks(new ArrayList<AudioRecordingConfiguration>()); } void registerRecordingCallback(IRecordingConfigDispatcher rcdb, boolean isPrivileged) { if (rcdb == null) { return; Loading