This change fixes a corner case where a callback may not get handled until
a second callback arrives. This can happen because there is a significant
section of the wait_for_event function where the mutex is not locked, and
the sPendingCallbacks member could be updated. We now check to see if
there is a pending callback to handle before we wait for another callback.
Change-Id: I20cfae1e780944bb74133940dda032efc4c55540
Signed-off-by: Fred Fettinger <fred.fettinger@motorola.com>
Signed-off-by: Jared Suttles <jared.suttles@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
Merge commit '653d5d415c3447a4250120548bf32d1ee63fe36f'
* commit '653d5d415c3447a4250120548bf32d1ee63fe36f':
Fix issue 2203561: Sholes: audio playing out of earpiece.
Merge commit '67b692920c18f99b096dce285adc6f7439fa866c' into eclair-mr2
* commit '67b692920c18f99b096dce285adc6f7439fa866c':
Fix issue 2203561: Sholes: audio playing out of earpiece.
Create a new IAudioTrack interface to AudioFlinger when start() fails due to a broken pipe error.
Do the same if start fails due to the same error after time out in obtainBuffer().
Do not indicate that the AudioTrack is started to AudioPolicyManager if IAudioTrack start fails.
This avoids that an AudioTrack keeps a dead IAudioTrack after a media server crash.
Same modifications for AudioRecord.
Add a flag to ToneGenerator indicating that the callback thread can call Java. Without it, when the media server crashes and restarts, the AudioSystem error callback will crash in JNI if the IAudiotrack is created from AudioTrack callback thread.
Merge commit '3e28a1047975d46a2754bb3092344686d3733cfe'
* commit '3e28a1047975d46a2754bb3092344686d3733cfe':
process: Add debug code to log process group transitions
Merge commit '8e312e8160ef0cae569b6127591ee72c70bfda41' into eclair-mr2
* commit '8e312e8160ef0cae569b6127591ee72c70bfda41':
process: Add debug code to log process group transitions
The typical usage pattern for the get_char helper function is:
bool thrown = false;
n = get_char(env, s, 0, 1000, &thrown);
n += get_char(env, s, 1, 100, &thrown);
n += get_char(env, s, 2, 10, &thrown);
n += get_char(env, s, 3, 1, &thrown);
if (thrown) return false;
As you can see, get_char is called multiple times before the
thrown flag is checked. If the input text contains multiple
incorrect characters, then we have to guard against throwing
the same exception multiple times. (Because doing so will
cause the Dalvik runtime to abort.)
The fix is simple: modify get_char to check if an exception
has already been thrown before throwing a new exception.
Merge commit '78a50aa1db6572ba7d9f9d91c6eb16f993c09f40' into eclair-mr2
* commit '78a50aa1db6572ba7d9f9d91c6eb16f993c09f40':
Patching in hidden API to allow app managed preview frame buffers.
Merge commit '8f89a1a360465e08e81ceca3cb3042606a98668b' into eclair-mr2
* commit '8f89a1a360465e08e81ceca3cb3042606a98668b':
Add size checks for glBufferData and glBufferSubData
Without the size checks it's possible for calls to glBufferData
and glBufferSubData to read off the end of the Buffer object's
data, which can cause page faults.
Fix end-of-line characters for the "spec" files. (That's why
every line of these files is changed.)
Enhance our code emitter to properly handle bounds checks for
possibly-null pointers.
Change-Id: I2492bffe57bded65fdbef5cf98e22cef3937e537
DrNo: eastham
Bug: 2089423
Joke: Why don't anteaters get sick? Because they're full of anty-bodies!
Merge commit '254d7ecd06aabc54fb1d2b9afd53b6e78045c6a9'
* commit '254d7ecd06aabc54fb1d2b9afd53b6e78045c6a9':
add (hidden) setHasAlpha() to allow clients like the view's cache to hint that a bitmap is opaque.
Merge commit 'a1cb6a64c6710d46cc8673bc17db3bdb5c7bbc09'
* commit 'a1cb6a64c6710d46cc8673bc17db3bdb5c7bbc09':
Provide an API for apps to use a dynamic RFCOMM channel and SDP record.
Hide createRfcommSocket(int channel)
Add createRfcommSocketWithServiceRecord(UUID uuid)
Rename listenUsingRfcomm(String,UUID) -> listenUsingRfcommWithServiceRecord(..)
Now we have a complete API for developers to make peer-peer RFCOMM connections
with hard-coding the limited (30) RFCOMM channels, instead using SDP lookup
of an UUID.
This commit addresses two serious bugs:
- Do not throw IOException on accepting an incoming RFCOMM connection with
BluetoothSocket. This was a regression from commit 24bb9b8af4ff6915
- Workaround failure of bluez to update SDP cache when channel changes by
trying to use the same RFCOMM channel on the server every time, instead
of picking server channels randomly. This is a pretty ugly workaround,
and we are still trying to fix the caching issue - but with this
workaround we are at least shippable and apps will work at least until
they start colliding on the 30 RFCOMM channels.
DrNo: eastham
Bug: 2158900
Joke: What did the digital watch say to his mom? "Look mom no hands."
Change-Id: Ia4879943b83afac06b6f1a3f2391cf1628afce7d
Hide listenUsingRfcommOn(int channel)
Add listenUsingRfcomm(String name, ParcelUuid uuid)
The new API automatically finds a free RFCOMM channel and registers an SDP
record with the given uuid and name. The SDP record is automatically
removed when the socket is closed, or if the application dies.
Apps are prevented from registering SDP records with the uuid of system
Bluetooth profiles, such as A2DP, HFP and OPP.
Apps are prevented from removing SDP records that they did not create. This is
tracked by pid.
TODO: Provide an API for the connecting app to look up an SDP record.
Bug: 2158900
DrNo: eastham
Joke: "What did the dog say to the tree? bark."
Change-Id: Ia92f51c34615a7270a403255ad2b8faa98c4a3f5