Merge commit '2e6aff8e19ce8292a36fe211f8051dccf1fb9670' into gingerbread-plus-aosp
* commit '2e6aff8e19ce8292a36fe211f8051dccf1fb9670':
ALooperRoster no longer holds strong references to handlers and loopers.
Merge commit '6615defd4b8ae627e7f0bbb2382c4d86481f76bd' into gingerbread-plus-aosp
* commit '6615defd4b8ae627e7f0bbb2382c4d86481f76bd':
Make sure the OMX callback thread is properly shutdown after the node goes away.
Merge commit '9406f626b2d8f64a084d41f6ea379e539b162a55' into gingerbread-plus-aosp
* commit '9406f626b2d8f64a084d41f6ea379e539b162a55':
An AHandler can now find its associated ALooper.
This allows us to avoid exposing the file descriptor of
the event queue; instead, you attach an event queue to
a looper. This will also should allow native apps to be
written without the need for a separate thread, by attaching
the event queue to the main thread's looper and scheduling
their own messages there.
Change-Id: I38489282635895ae2cbfacb88599c1b1cad9b239
Merge commit '8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d' into gingerbread-plus-aosp
* commit '8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d':
Fix a bug that prevented the creation of EGL shared contexts.
Merge commit '2cfd8198cc4e1dcdcae52ae8a0c86b871c87a27e' into gingerbread-plus-aosp
* commit '2cfd8198cc4e1dcdcae52ae8a0c86b871c87a27e':
Add an option to ALooper::start that allows it to call back into java or not.
Merge commit '3ef6ebe874022c4ec8fbb00067833a6f636c1e2f' into gingerbread-plus-aosp
* commit '3ef6ebe874022c4ec8fbb00067833a6f636c1e2f':
Flush binder buffer after setting raw heap to avoid leaking a reference.
Merge commit '7df7447112371fb5e46f6084b55ac2ccdfde139d' into gingerbread
* commit '7df7447112371fb5e46f6084b55ac2ccdfde139d':
Flush binder buffer after setting raw heap to avoid leaking a reference.
The problem was:
1. In handleShutter(), thread A in CameraService calls
registerBuffers(IMemoryHeap) and it's received by thread B
in system_server. [transaction 1]
2. While thread A is waiting for the reply, thread B calls
back to thread A to get the id of the heap
(IMemoryHeap.getHeapID). [transaction 2]
3. Thread A replies transaction 2 and is preemptied in kernel.
Thread B gets the reply and finishes registerBuffers and send
reply for transaction 1.
4. When thread A runs again, it gets the reply for transaction 1
and returns to handleShutter().
5. At this point the transaction buffer for transaction 2 (which
holds a reference to IMemoryHeap) is not freed because the
BC_FREE_BUFFER command is kept in thread A's local command
queue and not sent to the kernel.
6. Normally when thread A makes next transaction, the
BC_FREE_BUFFER command will be sent together (piggyback) with
the commands for that transaction. But in this case thread A
is a callback thread from camera driver, so it does not make
any binder calls afterwards, and the IMemoryHeap is never freed
(until the next time handleShutter is called).
Change-Id: I435a258187509bdbbaf353339eb9ea577610cbd2
Merge commit '6ffd9ff07733a855daeda75416cea88e7456e9d6' into gingerbread-plus-aosp
* commit '6ffd9ff07733a855daeda75416cea88e7456e9d6':
Log full exception when failing to inflate notification view
Merge commit '8ae5a8e7c04c7b204b739dfcd5da9e2e0f83e1eb' into gingerbread-plus-aosp
* commit '8ae5a8e7c04c7b204b739dfcd5da9e2e0f83e1eb':
Get to the point of being able to do native drawing.
When inflating a notification's view fails, include the exception in
the log message. Without this exception all we get is "couldn't
inflate view for notification <package>/<id>", which isn't very
helpful for tracking down the particular error in the view.
This exception used to be included in the log message, but it was
removed in 005847b03b2 -- any particular reason why?
Change-Id: I623b9e4c8291e4c035f26380e5f22ad6b65176a7
Merge commit 'f520411a35db5248934a4b50859ca72e3f865593' into gingerbread-plus-aosp
* commit 'f520411a35db5248934a4b50859ca72e3f865593':
Fix issue 2811538: System server crash when disconnecting BT headset after using SCO off call.
Merge commit 'c03befe3d62eb2a3e1d56fec0ca188a6094d53dd' into gingerbread
* commit 'c03befe3d62eb2a3e1d56fec0ca188a6094d53dd':
Fix issue 2811538: System server crash when disconnecting BT headset after using SCO off call.
Problem:
When the bluetooth device is removed, the AudioService clears all active SCO connections
and unlinks from the client application's binder interface death.
The problem is that the unlinking is done even if no more connections are active for a given client,
which throws a runtime exception that is not catched causing the system server to crash.
The fix consists in calling unlinkToDeath() in ScoClient.clearCount() only if the number of
active SCO connections for this client is not 0. The NoSuchElementException exception is also
catched when calling unlinkToDeath()
Change-Id: I7086424301fc63a5666da61c38169349d3e078f4
Merge commit '54a181b1a2b1517a9479b21fbf7705a688232faf' into gingerbread-plus-aosp
* commit '54a181b1a2b1517a9479b21fbf7705a688232faf':
Make real API for native code to get its window.
Merge commit 'c7dacb7374e04c003b0764e7c348765b629c18cb' into gingerbread-plus-aosp
* commit 'c7dacb7374e04c003b0764e7c348765b629c18cb':
DO NOT MERGE: Add a battery capacity value to the power profile.