Handle stream mute/unmute requests at the stream
alias level (like is done volume changes) to be consistent.
E.g a request to mute/unmute a stream will affect all streams
sharing the same alias for volume management.
Bug: 18844550.
Change-Id: Ie2e463c58df0371589150f0ebb9b36c38b14e1be
Dead lock sequence:
1. called onSetA2dpConnectionState()
1-1. synchronized(mConnectedDevices)
2. called onServiceDisconnected()
2-1. synchronized(mA2DPAvrcpLock)
3. waiting to lock(mConnectedDevices) in onServiceDisconnected()
4. waiting to lock(mA2DPAvrcpLock) in onSetA2dpConnectionState()
========================================================================================
- watchdog issue
----- pid 3306 at 2014-10-14 16:15:12 -----
Cmd line: system_server
"main" prio=5 tid=1 MONITOR
- waiting to lock <0x4343e9b0> (a java.util.HashMap) held by tid=46 (AudioService)
at android.bluetooth.BluetoothA2dp$2.onServiceDisconnected(BluetoothA2dp.java:529)
"AudioService" prio=5 tid=46 MONITOR
- waiting to lock <0x42ab7a58> (a java.lang.Object) held by tid=1 (main)
========================================================================================
Signed-off-by: Seunghwan Hong <seunghwan.hong@lge.com>
Change-Id: I99e061c07be01aabcd26786ef2ebb71f46717b93
Attach/Detach logic
Decoupling card# and list index
Modern loop constructs
Consistent logging flags
Add class/type flags to device "address" string.
Factored UsbAudioDevice out of UsbAudioManager.
Bug: 18399845
Bug: 18717784
Change-Id: I6f185e1c24091d4c0d21eb7e922a1496748d32c3
static void CallStaticVoidMethod is variable argument function.
if pass 0 to the function like: CallStaticVoidMethod(......, 0),
0 will be treated as INT data type.but in the CallStaticVoidMethod
implement 0 will be treated as pointer data type.Pointer in 64bit
system occupied 8 bytes, but in 64bit system int occupied 4 bytes.
if call function like: CallStaticVoidMethod(......, 0),
only low 4 bytes will be assigned 0.Turned out it actually call
function like this: CallStaticVoidMethod(......, 0xXXXXXXXX00000000).
intent to pass NULL to function but passed non-NULL parameter to
the function.this will cause GCDaemon crash.
Bug: 18911458
Change-Id: I9d700d3790a80dbee6826f64baf9ef5d81ca390f
Reviewed-by: Liao, Bruce <bruce.liao@intel.com>
Signed-off-by: Yong Yao <yong.yao@intel.com>
Only one callback can be set on a given media id on MediaBrowser. When you
try to subscribe with a new callback it replaces the old callback, but it
wasn't resending the child data for the id. This causes calling subscribe
again also cause the data to be reloaded and sent to the app again.
bug:18683452
Change-Id: I2d30dbbbfe07cb9a720fb6d65664c1c4c58cb637
CallStaticVoidMethod is varargs function, and calling it with
a literal 0 like CallStaticVoidMethod(..., 0) will treat the
argument as a 4 byte int in both 32 and 64 bit processes.
This is incorrect for pointer arguments where NULL should be
used instead.
Reviewed-by: Liao, Bruce <bruce.liao@intel.com>
Signed-off-by: Yong Yao <yong.yao@intel.com>
Change-Id: I9d700d3790a80dbee6826f64baf9ef5d81ca390f
When creating an AudioRecord instance, filter the tags in the
AudioAttributes to remove tags that are handled at the Java
layer.
Bug: 18733215
Bug: 18736417
Change-Id: I16a3497742086deced4e8677bd6231290396c5f6
MediaSessionLegacyHelper used a Context passed by an application
which can cause a leak of Activity instances. Use the global
Application context instead.
Also prevent crash if a null Context is supplied (method not
documented as requesting a non-null Context).
Bug 18767503
Change-Id: I8281047d0af233a323f3fc11ababedff848829ec