Merge commit 'dc1d5704a725d207b98de1b117847297958d9148'
* commit 'dc1d5704a725d207b98de1b117847297958d9148':
Fix the auto notification cleanup when vpn is disconnected.
In previous releases, we had combined well-known protocols
and custom protocols into a single field. This was because
of previous database constraints, which no longer exist
because of our new Data table approach.
The ContactHeaderWidget is a new widget that is used as a header banner
in various system applications, including contacts, mms, and gtalk.
Convenience methods are supplied for bind the widget to a specific
contact, which can be specified by contact id, email, or phone number.
* changes:
log opengl-call-with-no-context only once per thread, instead of for each function call
don't crash in Parcel when given a null (and therfore invalid) native_handle_t
Make setContentScrollBy return a boolean.
Necessary so that a caller of setContentScrollBy in WebView.cpp
can find out whether the page scrolled. Requires a change in
external/webkit/
On the first tap down, send a message to rebuild the nav
cache so that double taps have a better chance of having
some alignment information to work with.
Also, pass scale information to getBlockLeftEdge to
restrict the alignment search
Requires a change to external/webkit. Set ImeActions for textfields,
depending on the existence of other textfields on the page, and
react accordingly.
There were 2 problems in SoundPool:
1 If not using the shared memory buffer mode, there was a problem when a sound channel was stolen. The new channel could sometimes not be added to the restart
list if the AudioTrack callback thread was stopped before the underrun callback was called.
The SoundChannel::play() method is modified so that SoundPool::done() is called immediately after stopping the channel. There is a possibility that done() is called a second time by the callback; in this case it will be added 2 times to the restart list but the second start request will be ignored as the first one will have reset the next chennel ID when processed.
2 There was a deadlock on SoundPool::mLock if SoundPool::stop() was called while a channel restart was pending:
SoundPool::stop() lock mLock -> SoundChannel::stop() -> SoundPool::done() -> SoundPool::addToRestartList() -> try to lock mLock == deadlock
A second mutex mRestartLock is added to protect the restart list mRestart. mLock is still used to protect mChannels list but mRestart is now used to
protect access to mRestart by restart thread and client thread.