Loading services/core/java/com/android/server/audio/AudioService.java +11 −7 Original line number Diff line number Diff line Loading @@ -2546,13 +2546,15 @@ public class AudioService extends IAudioService.Stub } } int status = AudioSystem.AUDIO_STATUS_OK; int actualMode; do { actualMode = mode; if (mode == AudioSystem.MODE_NORMAL) { // get new mode from client at top the list if any if (!mSetModeDeathHandlers.isEmpty()) { hdlr = mSetModeDeathHandlers.get(0); cb = hdlr.getBinder(); mode = hdlr.getMode(); actualMode = hdlr.getMode(); if (DEBUG_MODE) { Log.w(TAG, " using mode=" + mode + " instead due to death hdlr at pid=" + hdlr.mPid); Loading @@ -2576,12 +2578,11 @@ public class AudioService extends IAudioService.Stub hdlr.setMode(mode); } if (mode != mMode) { status = AudioSystem.setPhoneState(mode); if (actualMode != mMode) { status = AudioSystem.setPhoneState(actualMode); if (status == AudioSystem.AUDIO_STATUS_OK) { if (DEBUG_MODE) { Log.v(TAG, " mode successfully set to " + mode); } mMode = mode; mModeLogger.log(new PhoneStateEvent(caller, pid, mode)); if (DEBUG_MODE) { Log.v(TAG, " mode successfully set to " + actualMode); } mMode = actualMode; } else { if (hdlr != null) { mSetModeDeathHandlers.remove(hdlr); Loading @@ -2597,13 +2598,16 @@ public class AudioService extends IAudioService.Stub } while (status != AudioSystem.AUDIO_STATUS_OK && !mSetModeDeathHandlers.isEmpty()); if (status == AudioSystem.AUDIO_STATUS_OK) { if (mode != AudioSystem.MODE_NORMAL) { if (actualMode != AudioSystem.MODE_NORMAL) { if (mSetModeDeathHandlers.isEmpty()) { Log.e(TAG, "setMode() different from MODE_NORMAL with empty mode client stack"); } else { newModeOwnerPid = mSetModeDeathHandlers.get(0).getPid(); } } // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL mModeLogger.log( new PhoneStateEvent(caller, pid, mode, newModeOwnerPid, actualMode)); int streamType = getActiveStreamType(AudioManager.USE_DEFAULT_STREAM_TYPE); int device = getDeviceForStream(streamType); int index = mStreamStates[mStreamVolumeAlias[streamType]].getIndex(device); Loading services/core/java/com/android/server/audio/AudioServiceEvents.java +14 −7 Original line number Diff line number Diff line Loading @@ -26,20 +26,27 @@ public class AudioServiceEvents { final static class PhoneStateEvent extends AudioEventLogger.Event { final String mPackage; final int mPid; final int mMode; final int mOwnerPid; final int mRequesterPid; final int mRequestedMode; final int mActualMode; PhoneStateEvent(String callingPackage, int pid, int mode) { PhoneStateEvent(String callingPackage, int requesterPid, int requestedMode, int ownerPid, int actualMode) { mPackage = callingPackage; mPid = pid; mMode = mode; mRequesterPid = requesterPid; mRequestedMode = requestedMode; mOwnerPid = ownerPid; mActualMode = actualMode; } @Override public String eventToString() { return new StringBuilder("setMode(").append(AudioSystem.modeToString(mMode)) return new StringBuilder("setMode(").append(AudioSystem.modeToString(mRequestedMode)) .append(") from package=").append(mPackage) .append(" pid=").append(mPid).toString(); .append(" pid=").append(mRequesterPid) .append(" selected mode=").append(AudioSystem.modeToString(mActualMode)) .append(" by pid=").append(mOwnerPid).toString(); } } Loading Loading
services/core/java/com/android/server/audio/AudioService.java +11 −7 Original line number Diff line number Diff line Loading @@ -2546,13 +2546,15 @@ public class AudioService extends IAudioService.Stub } } int status = AudioSystem.AUDIO_STATUS_OK; int actualMode; do { actualMode = mode; if (mode == AudioSystem.MODE_NORMAL) { // get new mode from client at top the list if any if (!mSetModeDeathHandlers.isEmpty()) { hdlr = mSetModeDeathHandlers.get(0); cb = hdlr.getBinder(); mode = hdlr.getMode(); actualMode = hdlr.getMode(); if (DEBUG_MODE) { Log.w(TAG, " using mode=" + mode + " instead due to death hdlr at pid=" + hdlr.mPid); Loading @@ -2576,12 +2578,11 @@ public class AudioService extends IAudioService.Stub hdlr.setMode(mode); } if (mode != mMode) { status = AudioSystem.setPhoneState(mode); if (actualMode != mMode) { status = AudioSystem.setPhoneState(actualMode); if (status == AudioSystem.AUDIO_STATUS_OK) { if (DEBUG_MODE) { Log.v(TAG, " mode successfully set to " + mode); } mMode = mode; mModeLogger.log(new PhoneStateEvent(caller, pid, mode)); if (DEBUG_MODE) { Log.v(TAG, " mode successfully set to " + actualMode); } mMode = actualMode; } else { if (hdlr != null) { mSetModeDeathHandlers.remove(hdlr); Loading @@ -2597,13 +2598,16 @@ public class AudioService extends IAudioService.Stub } while (status != AudioSystem.AUDIO_STATUS_OK && !mSetModeDeathHandlers.isEmpty()); if (status == AudioSystem.AUDIO_STATUS_OK) { if (mode != AudioSystem.MODE_NORMAL) { if (actualMode != AudioSystem.MODE_NORMAL) { if (mSetModeDeathHandlers.isEmpty()) { Log.e(TAG, "setMode() different from MODE_NORMAL with empty mode client stack"); } else { newModeOwnerPid = mSetModeDeathHandlers.get(0).getPid(); } } // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL mModeLogger.log( new PhoneStateEvent(caller, pid, mode, newModeOwnerPid, actualMode)); int streamType = getActiveStreamType(AudioManager.USE_DEFAULT_STREAM_TYPE); int device = getDeviceForStream(streamType); int index = mStreamStates[mStreamVolumeAlias[streamType]].getIndex(device); Loading
services/core/java/com/android/server/audio/AudioServiceEvents.java +14 −7 Original line number Diff line number Diff line Loading @@ -26,20 +26,27 @@ public class AudioServiceEvents { final static class PhoneStateEvent extends AudioEventLogger.Event { final String mPackage; final int mPid; final int mMode; final int mOwnerPid; final int mRequesterPid; final int mRequestedMode; final int mActualMode; PhoneStateEvent(String callingPackage, int pid, int mode) { PhoneStateEvent(String callingPackage, int requesterPid, int requestedMode, int ownerPid, int actualMode) { mPackage = callingPackage; mPid = pid; mMode = mode; mRequesterPid = requesterPid; mRequestedMode = requestedMode; mOwnerPid = ownerPid; mActualMode = actualMode; } @Override public String eventToString() { return new StringBuilder("setMode(").append(AudioSystem.modeToString(mMode)) return new StringBuilder("setMode(").append(AudioSystem.modeToString(mRequestedMode)) .append(") from package=").append(mPackage) .append(" pid=").append(mPid).toString(); .append(" pid=").append(mRequesterPid) .append(" selected mode=").append(AudioSystem.modeToString(mActualMode)) .append(" by pid=").append(mOwnerPid).toString(); } } Loading