• Home
  • History
  • Annotate
  • only in /frameworks/native/libs/ui/
History log of /frameworks/native/libs/ui/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
7d7ae7345abfb91be55c4aed6c9be9d09a144e4c 16-Mar-2016 Dan Stoza <stoza@google.com> HWC2: Add getHdrCapabilities to C++ shim

Adds support for the getHdrCapabilities call to the HWC2 C++ shim.

Bug: 25684127
Change-Id: Ib4635ee437a06b48945e7f0328492c1e74e27aaa
ndroid.mk
drCapabilities.cpp
19d72c06ac2bc2f57609a4eed3b228f1b4efae8a 10-Mar-2016 Pablo Ceballos <pceballos@google.com> ui: Fix Rect::reduce

- Properly handle the case where the Rect to be excluded is completely
outside the other Rect.

Bug 27415039

Change-Id: I3331d5b3ab231d023348079c781b194d24ac37dd
ect.cpp
9c024aa3977ba8ab3bcb72c27a11021d02e372cf 08-Jan-2016 Dan Stoza <stoza@google.com> libui: Remove FramebufferNativeWindow

We no longer support the framebuffer device, so FramebufferNativeWindow
is no longer relevant.

Change-Id: I97c427bb7c0b209bbf33e61900466bde7df43e85
ndroid.mk
ramebufferNativeWindow.cpp
22e4cc36cd965046ea1b17376a40bdf3b6e23301 16-Sep-2015 Praveen Chavan <pchavan@codeaurora.org> libgui: assign handle to NULL after free

to avoid use-after-free situations.

Change-Id: If9c09f509bc55795856302e5ca34470df019c622
raphicBuffer.cpp
e1b63cc6d4e92b95d9d5e504035a44e3cb40b722 14-Sep-2015 Pablo Ceballos <pceballos@google.com> Merge "Remove usage of SharedBuffer"
d814cf2a3e3a2fdb73efa80539fe8af0a93da1db 11-Sep-2015 Pablo Ceballos <pceballos@google.com> Remove usage of SharedBuffer

- Remove getSharedBuffer() from Region
- Don't use SharedBuffer for memory management in HWCLayerVersion1,
instead keep shallow copies of the Regions.

Bug 23962051

Change-Id: I8fa17beed57936648c7b4defc9219dff1d5b337f
egion.cpp
4107f8fc7c077591fa8ce4b7e13f135424f27a15 11-Sep-2015 Dan Austin <danielaustin@google.com> am 1769e697: am 6d59e98b: am 8c77ec50: Merge "Enable fsanitize integer in ui"

* commit '1769e697542bd5fac2014bb7eb15210e6cdc20d3':
Enable fsanitize integer in ui
ff7ede32f576651bacc4f0c6145e54d8f3c12ef6 08-Sep-2015 Dan Austin <danielaustin@google.com> Enable fsanitize integer in ui

Enables checks for undefined or suspicious integer behavior. If
suspicious behavior is detected, the process is aborted instead of
potentially resulting in a security bug.

Bug: 23834892
Change-Id: I9111bce2ebb36e045f4da1dbf78f90f04a0aa81c
ndroid.mk
60d6922a011fe18c111b8d30fb6ef1f655b6b15e 07-Aug-2015 Pablo Ceballos <pceballos@google.com> libsgui: Change Rect default constructor

The current Rect default constructor initializes to all zeroes. Change
it to initialize to an invalid Rect.

Modify all of the existing invocations of the default constructor to
maintain the existing behavior.

Bug 18173359

Change-Id: Ibbad076f1550a94f56d7b1cf5350071f2022e09a
ect.cpp
egion.cpp
53390e1e8c33ebee5bb8100e846f5263ba05ff73 04-Aug-2015 Pablo Ceballos <pceballos@google.com> libgui/SF: Fix some code warnings

A couple of fixes to satisfy the Eclipse static code analysis tool.
- Initialize all members in constructors
- Remove unused forward declarations
- Add parentheses when combining logical and bitwise operators
- Fix a case statement with no break (it was intentional)

Change-Id: Icecb8cc98c6f58b97ab33fffb621f0edc33a7d3c
ramebufferNativeWindow.cpp
raphicBuffer.cpp
993772a60ac43e458f16b08c27e1f97dcfcfe3e1 03-Jun-2015 Dan Stoza <stoza@google.com> libgui: Add generation numbers to BufferQueue

This change allows producers to set a generation number on a
BufferQueue. This number will be embedded in any new GraphicBuffers
created in that BufferQueue, and attempts to attach buffers which have
a different generation number will fail.

It also plumbs the setGenerationNumber method through Surface, with the
additional effect that any buffers attached to the Surface after
setting a new generation number will automatically be updated with the
new number (as opposed to failing, as would happen on through IGBP).

Bug: 20923096
Change-Id: I32bf726b035f99c3e5834beaf76afb9f01adcbc2
(cherry picked from commit 812ed0644f8f8f71ca403f4e5793f0dbc1fcf9b2)
raphicBuffer.cpp
812ed0644f8f8f71ca403f4e5793f0dbc1fcf9b2 03-Jun-2015 Dan Stoza <stoza@google.com> libgui: Add generation numbers to BufferQueue

This change allows producers to set a generation number on a
BufferQueue. This number will be embedded in any new GraphicBuffers
created in that BufferQueue, and attempts to attach buffers which have
a different generation number will fail.

It also plumbs the setGenerationNumber method through Surface, with the
additional effect that any buffers attached to the Surface after
setting a new generation number will automatically be updated with the
new number (as opposed to failing, as would happen on through IGBP).

Bug: 20923096
Change-Id: I32bf726b035f99c3e5834beaf76afb9f01adcbc2
raphicBuffer.cpp
24fa67f62ac9a751b6fcbd7bd69960388a4b2f5b 29-May-2015 Dan Stoza <stoza@google.com> libui: Apply GRALLOC_USAGE_ALLOC_MASK during alloc

Applies GRALLOC_USAGE_ALLOC_MASK to the incoming usage bits before
calling alloc on the gralloc module. This filters out the new flag
GRALLOC_USAGE_FOREIGN_BUFFERS, which is used to send a hint to the
producer, but which does not affect the allocation of buffers.

Bug: 19801661
Change-Id: Ia37a3eddba2e97598e50ac3e10877430adfa9247
(cherry picked from commit b8efdc40039e4900ae2c64fbdfa03906c867ec84)
raphicBufferAllocator.cpp
b8efdc40039e4900ae2c64fbdfa03906c867ec84 29-May-2015 Dan Stoza <stoza@google.com> libui: Apply GRALLOC_USAGE_ALLOC_MASK during alloc

Applies GRALLOC_USAGE_ALLOC_MASK to the incoming usage bits before
calling alloc on the gralloc module. This filters out the new flag
GRALLOC_USAGE_FOREIGN_BUFFERS, which is used to send a hint to the
producer, but which does not affect the allocation of buffers.

Bug: 19801661
Change-Id: Ia37a3eddba2e97598e50ac3e10877430adfa9247
raphicBufferAllocator.cpp
4d0cd3f5241df28d8259c5ee7df33649c5c10f2d 30-Apr-2015 Taiju Tsuiki <tzik@google.com> Close Fence FDs in error cases of Surface and GraphicBufferMapper

Surface::{cancel,queue}Buffer and GraphicBufferMapper::lockAsyncYCbCr take the
ownership of |fenceFd|s. Though they don't close it on error cases.

Change-Id: I49a7ce8837d5c510c4ac4ad4649f310d18610e80
(cherry picked from commit c7263fb43297744eb04b11025424c0c526d5584c)
raphicBufferMapper.cpp
ed6e907bc7a259d85c6a6c141a06a06e5c0b224c 30-Apr-2015 Dan Stoza <stoza@google.com> Merge "Close Fence FDs in error cases of Surface and GraphicBufferMapper"
84f1d9c288f35fa399f97207b6af43a261d5989a 30-Apr-2015 Taiju Tsuiki <tzik@google.com> Avoid closing invalid FD in Surface and GraphicBufferMapper

GraphicBufferMapper::lockAsync{,YCbCr} close the fence FD even when the FD
is invalid.

Change-Id: Ia2b4dae3b2c06426e34f623f19ba92435f486ab7
(cherry picked from commit dcfe91e1f3f15b68793a69650f9bd0ca6a58ff4c)
raphicBufferMapper.cpp
f0c17b0831512cc700414d12dee1e84fb174bbbe 30-Apr-2015 Dan Stoza <stoza@google.com> Merge "Avoid closing invalid FD in Surface and GraphicBufferMapper"
dcfe91e1f3f15b68793a69650f9bd0ca6a58ff4c 30-Apr-2015 Taiju Tsuiki <tzik@google.com> Avoid closing invalid FD in Surface and GraphicBufferMapper

GraphicBufferMapper::lockAsync{,YCbCr} close the fence FD even when the FD
is invalid.

Change-Id: Ia2b4dae3b2c06426e34f623f19ba92435f486ab7
raphicBufferMapper.cpp
c7263fb43297744eb04b11025424c0c526d5584c 30-Apr-2015 Taiju Tsuiki <tzik@google.com> Close Fence FDs in error cases of Surface and GraphicBufferMapper

Surface::{cancel,queue}Buffer and GraphicBufferMapper::lockAsyncYCbCr take the
ownership of |fenceFd|s. Though they don't close it on error cases.

Change-Id: I49a7ce8837d5c510c4ac4ad4649f310d18610e80
raphicBufferMapper.cpp
958f501189a29e53767f41bc8172e4af8d1ce2bf 24-Apr-2015 Dan Stoza <stoza@google.com> Merge "libgui: Allow an IGBProducer to disable allocation"
9de7293b0a1b01ebe6fb1ab4a498f144adc8029f 17-Apr-2015 Dan Stoza <stoza@google.com> libgui: Allow an IGBProducer to disable allocation

Adds a new method IGBP::allowAllocation, which controls whether
dequeueBuffer is permitted to allocate a new buffer. If allocation is
disallowed, dequeueBuffer will block or return an error as it
normally would (as controlled by *ControlledByApp).

If there are free buffers, but they are not of the correct dimensions,
format, or usage, they may be freed if a more suitable buffer is not
found first.

Bug: 19801715
Change-Id: I0d604958b78b2fd775c2547690301423f9a52165
raphicBuffer.cpp
eea6d682b8b0f7081f0fe8fab8feadb16e22b30b 20-Apr-2015 Dan Stoza <stoza@google.com> libui/libgui: Fix errors in parceling

BufferItem and GraphicBuffer were not parceling correctly, which had
not been noticed because the libgui tests (specifically, one that
tests placing a BufferQueue in a separate process from the IGBP/C)
had not been run recently. This change fixes the errors found in
those classes.

Change-Id: Ie224361a534a79115a3481d83ff97f21d154d4f5
raphicBuffer.cpp
5065a55291b67f584d7b0be3fa3cfc4e29a3cd1c 18-Mar-2015 Dan Stoza <stoza@google.com> libgui: Pass surface damage through BufferQueue

This change adds support for passing surface damage all of the way
down from the EGL interface through the consumer side of the
BufferQueue. Depends on system/core change
Ie645e6a52b37b5c1b3be19481e8348570d1aa62c

Bug: 11239309
Change-Id: I4457ea826e9ade4ec187f973851d855b7b93a31b
ect.cpp
egion.cpp
4d769d8bdc2fd57d34ab0fa4b9208ac0eb67cd61 15-Apr-2015 Dan Stoza <stoza@google.com> Merge "libui: Clean up Fence and Region flattening"
6fbefbbd8edc9953041289fbd77bb18c4964dce5 23-Mar-2015 Dan Stoza <stoza@google.com> libui: Clean up Fence and Region flattening

Fence was flattening incorrectly, causing issues with any fields
flattened after it, and Region was relying on being the last object
flattened. This change addresses both.

Change-Id: If49de061de6e2f11f4d846b4d8c18627dfb7e109
ence.cpp
egion.cpp
aef0445c6f1fbd818b594383217a13571bbd95ad 26-Mar-2015 ywen <ywen@codeaurora.org> Fix a memory corruption issue when vector resize

There is memory corruption in below code

const Rect* prev = &dst[prevIndex];
dst.add(Rect(prev->right, top, right, bottom));

prev points to a memory of vector dst, when dst resize in add()
call, the memory that prev points to will be copy to the new
allocated vector memory and the old memory will become undefined

Avoid pointer in this case, use a local copy instead

Change-Id: I4d95ceedd00c8fb615ac153082ade1b1ce0d0fa8
egion.cpp
82c6bcc9705eabcaf5b9e45bc81867b0e2d61a02 20-Feb-2015 Eino-Ville Talvala <etalvala@google.com> DO NOT MERGE Add dataSpace to buffer queues; remove old format enums.

- Wire up new dataSpace parameter through buffer queue stack
- Update tests to include the parameter
- Switch eglApi to using dataSpace to indicate sRGB gamma/linear
difference
- Remove RAW_SENSOR in favor of RAW16
- Remove use of sRGB format enums
- Add default dataspace to buffer queue core
- Add query for default dataspace

Cherry pick of I070bd2e7c56506055c419004c29e2e3feac725df

Change-Id: I461952389c18051176c6b75e664f20ad369f5760
ixelFormat.cpp
c168b8a5a9dcc0e45e32fc3cd40b9410e0288fb1 18-Feb-2015 Michael Lentine <mlentine@google.com> Update maxNumber to be smaller.

There shouldn't be more than 4096 fds (probably signficantly smaller) and
there shouldn't be more than 4096 ints.

Cherry pick of I3a3e50ee3078a4710e9737114e65afc923ed0573

Bug: 18076253
Change-Id: I82a883572b401f115d252dcd3d00aa7252b49b0e
raphicBuffer.cpp
180c2ba763c32793c6d3c5fe2683f8f2b233ca10 29-Jan-2015 Lajos Molnar <lajos@google.com> resolved conflicts for merge of 1f9f71e1 to lmp-mr1-dev-plus-aosp

Change-Id: I627e58fe738e9a3b9831508853f26f9adc350f90
1f9f71e183946b390fff4d20900bc4a03246a882 29-Jan-2015 Lajos Molnar <lajos@google.com> GraphicBufferMapper: handle devices that do not implement lock_ycbcr

Bug: 19179927
Change-Id: I09ffca954fed3cd2d3466c8396627dc7dbc0052d
raphicBufferMapper.cpp
fe4966d59b31ae6fd6dd4d81dd73d2f4f7be33fe 22-Dec-2014 Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> Restore Region::set(uint32_t, uint32_t)

The Region::set(uint32_t,uint32_t) ABI is used by the Nexus 10 graphics
driver blobs.
After commit dd883c0b08d2a60f89542b9b9f5fdabcb14885c7, Nexus 10 blobs
need a rebuild unless the old ABI is added back

Change-Id: I138dcc1cc281b8d3cde0021282bf874054ec4eaf
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
egion.cpp
ff78750c6432f3b73c97cac05728c5d165ba0f27 06-Dec-2014 Andreas Gampe <agampe@google.com> Libui: Remove unused variables

For build-system CFLAGS clean-up, remove unused variables.

Bug: 18632512
Change-Id: Ib78912ae442ddc6410960ab1efb4fb2faa1a9208
ramebufferNativeWindow.cpp
133caacf87423a738f31b6e1f58d0abcb377058d 02-Dec-2014 Dan Stoza <stoza@google.com> Fix -Werror on 64-bit builds

Add another static_cast to avoid an error on 64-bit builds

Change-Id: I62fb2c67766c4aab70d9d1834f255d06ff82dd8d
(cherry picked from commit 116c7a113cb2db4d3f7708627ac4713c7e92cd43)
raphicBuffer.cpp
42af27817360d338f83fed4b87a535bb0ac4e65b 02-Dec-2014 Dan Stoza <stoza@google.com> Disable struct padding warning/error

Adds -Wno-padded, which was triggering on 64-bit devices

Change-Id: If27bac27881f2081a222b32213901f5087554b07
(cherry picked from commit 4e84bd310c876e1450077959333c87e6e83dbf63)
ndroid.mk
d31824004277f554000417cea349d69f18655e95 17-Nov-2014 Dan Stoza <stoza@google.com> libui: Enable -Weverything and -Werror

Enables -Weverything and -Werror, with just a few exceptions for
warnings we can't (or shouldn't need to) work around.

Change-Id: I470a267e9b1c373f2d5c960f005c3b0e02b2db63
(cherry picked from commit 303b9a51239d36d237a7d40c67b5085cdb3c1059)
ndroid.mk
ence.cpp
ramebufferNativeWindow.cpp
raphicBuffer.cpp
raphicBufferAllocator.cpp
raphicBufferMapper.cpp
ixelFormat.cpp
egion.cpp
iConfig.cpp
01049c8321aab30cd431e2febeddd79242ae5a4f 11-Nov-2014 Dan Stoza <stoza@google.com> Enable clang for libui/libgui/surfaceflinger

Enables clang and C++11 for libui/libgui/surfaceflinger, and
eliminates all compile-time warnings.

Change-Id: Ie237fdb5ae44f2bfcddaa884f9c65ec3f08ae50f
(cherry picked from commit f10c46ef855b6410b20ebd8b1351d4d78d8eca8e)
ndroid.mk
ramebufferNativeWindow.cpp
raphicBuffer.cpp
38803268570f90e97452cd9a30ac831661829091 31-Oct-2014 Michael Lentine <mlentine@google.com> Fix for corruption when numFds or numInts is too large.

Bug: 18076253
Change-Id: I4c5935440013fc755e1d123049290383f4659fb6
(cherry picked from commit dfd06b89a4b77fc75eb85a3c1c700da3621c0118)
raphicBuffer.cpp
dfd06b89a4b77fc75eb85a3c1c700da3621c0118 31-Oct-2014 Michael Lentine <mlentine@google.com> Fix for corruption when numFds or numInts is too large.

Bug: 18076253
Change-Id: I4c5935440013fc755e1d123049290383f4659fb6
raphicBuffer.cpp
55833709ab4b8e6f85d19be0a5b1a096277a2dc2 17-Oct-2014 Dan Albert <danalbert@google.com> am c52e54c4: Merge "Some more test cleanup."

* commit 'c52e54c47184704613d446eb15d051ceb43d82b3':
Some more test cleanup.
ed7d193ae95ce72a014c8ba1ab177f3abf958765 17-Oct-2014 Dan Albert <danalbert@google.com> Some more test cleanup.

Needed to build successfully when libc++ is the default STL.

Also fix a missing include. Not sure how this was getting by before.
Probably some transitive include.

Change-Id: Ie96b79e96b4e154d786fbf2d5ae5cf5892608837
ests/Android.mk
ests/vec_test.cpp
18fae75350bcd5f19ef90afb533e3fbedfd4c83b 23-Jul-2014 Colin Cross <ccross@android.com> crash if getNativeBuffer() called on NULL GraphicBuffer

If getNativeBuffer() is called on a NULL GraphicBuffer the
static_cast of this from GraphicBuffer* to ANativeWindowBuffer*
will return a small pointer like (ANativeWindowBuffer*)0x10.
This value can propagate past NULL checks until it causes a crash
far away from the original NULL pointer. Crash immediately
instead.

Change-Id: Id614b9eb1484108b3c3c733545309844c4b87532
raphicBuffer.cpp
f974bffb36a97d21432a504a741330c4f4245746 12-May-2014 Greg Hackmann <ghackmann@google.com> am 38c9e132: am c1ffd351: am bd20e551: Merge "Use asynchronous lock/unlock API"

* commit '38c9e1327a5b24267c3dab5293bc9d7ada6e9fc9':
Use asynchronous lock/unlock API
8f3960179c56767e5077be8337792bd4e244b7d7 01-Apr-2014 Francis Hart <fhart@nvidia.com> Use asynchronous lock/unlock API

The gralloc API now provides a way for using lock/unlock with the Android
explicit synchronisation concept. This changes updates the GraphicBuffer class
to also expose this functionality, and updates the Surface class to make use of
in line with the dequeueBuffer/queueBuffer mechanism.

This new behaviour is dependent on GRALLOC_MODULE_API_VERSION_0_3. If the local
gralloc module does not support this then the existing synchronous lock/unlock
mechanism will be used.

Change-Id: I8c3fd9592e0c5400ac9be84450f55a77cc0bbdc5
raphicBuffer.cpp
raphicBufferMapper.cpp
2f3dca149a2bcae96f18e38f7ba99a95c3e1b08c 10-May-2014 Greg Hackmann <ghackmann@google.com> am 9493d492: am 9eb142e3: am a9d49f99: Merge "Revert "Use asynchronous lock/unlock API""

* commit '9493d4924a59f14b698389386337a9c07a7ea3c4':
Revert "Use asynchronous lock/unlock API"
02528cf6aaedbbfec55be57d33389e1c57d88245 09-May-2014 Greg Hackmann <ghackmann@google.com> am 4b46776f: am 8a6cd189: am f60564a1: Merge "Use asynchronous lock/unlock API"

* commit '4b46776ff88c5a365700b88e8b2b04e1b2c77e6e':
Use asynchronous lock/unlock API
a9d49f99e69d8fc0e60b492b131322c96f47a232 09-May-2014 Greg Hackmann <ghackmann@google.com> Merge "Revert "Use asynchronous lock/unlock API""
53ec72523a4083b88eaa13e2e720976523a7ebf8 09-May-2014 Greg Hackmann <ghackmann@google.com> Revert "Use asynchronous lock/unlock API"

This reverts commit 378ef07760eda717367d9429428c42d54d54d9a7.

Change-Id: I1de5ab973b5383633e75924fe90ac3ca8216c36a
raphicBuffer.cpp
raphicBufferMapper.cpp
f60564a13e917877c76c99294194a621d872076b 09-May-2014 Greg Hackmann <ghackmann@google.com> Merge "Use asynchronous lock/unlock API"
378ef07760eda717367d9429428c42d54d54d9a7 01-Apr-2014 Francis Hart <fhart@nvidia.com> Use asynchronous lock/unlock API

The gralloc API now provides a way for using lock/unlock with the Android
explicit synchronisation concept. This changes updates the GraphicBuffer class
to also expose this functionality, and updates the Surface class to make use of
in line with the dequeueBuffer/queueBuffer mechanism.

This new behaviour is dependent on GRALLOC_MODULE_API_VERSION_0_3. If the local
gralloc module does not support this then the existing synchronous lock/unlock
mechanism will be used.

Change-Id: I77daa1beb197b63b1c2f281b8414ac4ae4b5b03c
raphicBuffer.cpp
raphicBufferMapper.cpp
e2d1157381b863a94ccb36a1c6d70cad47e79c1a 29-Apr-2014 Jun Jiang <jun.a.jiang@intel.com> fix GraphicBuffer::flatten crash issue when handle is null

Change-Id: I0d3727e4366cac355791e52cb7790bf8f3c51527
Signed-off-by: Jun Jiang <jun.a.jiang@intel.com>
raphicBuffer.cpp
c3911c6fa66ed0a41df1e29137ef1a076f9b11b0 15-Apr-2014 Colin Cross <ccross@android.com> am b8ceeb8f: am 85085cd6: Merge "libui: fix passing Fence object over binder"

* commit 'b8ceeb8f6cc3eea53d4b471747c401b9ae54d931':
libui: fix passing Fence object over binder
288f2ef6294b99a4a53355273ae8ad0f5a525f65 15-Apr-2014 Colin Cross <ccross@android.com> libui: fix passing Fence object over binder

The Fence object was writing a size_t into the binder buffer
in flatten, which changes size if the producer and consumer
are running in a 32-bit and a 64-bit process. Use a uint32_t
instead.

Change-Id: Ifed526513800ce27f9d605101cddd922292cca37
ence.cpp
21f18e693528bd255719801539f68e37b4a97418 11-Apr-2014 Dan Stoza <stoza@google.com> Merge "Add unique ID to GraphicBuffer"
d85084b2b65828442eafaff9b811e9b6c9ca9fad 20-Mar-2014 Svetoslav <svetoslavganov@google.com> Adding render stats APIs to UiAutomation (framework native).

bug:12927198

Change-Id: Ibb1c07f7d89e11281e5c1f27f412a29ac6f9c4ab
ndroid.mk
rameStats.cpp
b1363d37fc6a661508fad106eb7698c5850a6c17 28-Mar-2014 Dan Stoza <stoza@google.com> Add unique ID to GraphicBuffer

Adds a globally-unique ID (PID + sequence number) to every
GraphicBuffer, which will remain the same while crossing Binder,
even if the underlying handles change.

Change-Id: Ib11330a4c5e99621b82204e0adb31b9a88658426
raphicBuffer.cpp
bc96e4714f4cc1ae598f122b3b9f7998c09fe674 18-Mar-2014 Andy McFadden <fadden@android.com> Added null check

Don't dereference "handle" if it's NULL.

Bug 13348578

Change-Id: Ifa6758616c41cf84467af6db29c779d26901a01c
raphicBuffer.cpp
993146092f8205d9747f082ccd63c09b536caa4e 14-Mar-2014 Mark Salyzyn <salyzyn@google.com> am d4dabf87: am cdbf28b3: Merge "native frameworks: 64-bit compile issues"

* commit 'd4dabf872ac0a12e12aebae9032f7d62762c2aeb':
native frameworks: 64-bit compile issues
92dc3fc52cf097bd105460cf377779bdcf146d62 12-Mar-2014 Mark Salyzyn <salyzyn@google.com> native frameworks: 64-bit compile issues

- Fix format (print/scanf)
- Suppress unused argument warning messages (bonus)

Change-Id: I05c7724d2aba6da1e82a86000e11f3a8fef4e728
ramebufferNativeWindow.cpp
egion.cpp
646e2fbd9173677566a90810801217760f9bb9a8 01-Mar-2014 Ying Wang <wangying@google.com> am 0a643374: am 6b4e5b7f: Merge "Fix misuse of ."

* commit '0a6433749dcd87039f6e31c04ea662b238310b17':
Fix misuse of $(my-dir).
a3cc7edfce45aec6c31b7a7193a53491246bfbb4 01-Mar-2014 Ying Wang <wangying@google.com> Fix misuse of $(my-dir).

Change-Id: I8b24f60826abe4b541de646cbc3df66929203301
ests/Android.mk
1c284a9431f98bbefd27a30c3368bbf7366dff3a 10-Feb-2014 Michael Wright <michaelwr@google.com> Add contains point method to Region

Change-Id: I553433ff7ac39f14ffca8278960d2abc95b4dd63
egion.cpp
6a5d35dd5cd8710c6c9f100076e62ffbdb0b868b 08-Jan-2014 Dan Stoza <stoza@google.com> libgui: Add a test for SRGB surfaces

Add SRGBTest.RenderToSRGBSurface, which validates that passing the
SRGB colorspace attributes to eglCreateWindowSurface actually
results in an SRGB surface by comparing the output values to those
of a standard RGB surface.

Change-Id: I3d5fef8070ed8fa2357ddd1c5fcc849ae3fbd12a
ixelFormat.cpp
d213910ab0acc956ee66bd3a0079a6393e7c695c 31-Aug-2013 Mathias Agopian <mathias@google.com> am 9b5534b0: Merge changes I8283a989,I64add89a into klp-dev

* commit '9b5534b0e5e1510f56e6a2c58ad0816167603ebd':
switch to use mat4
vector and matrix classes for graphics use
595ea77f6bdb5e9d0ddd3305da7a44b56f326b2c 22-Aug-2013 Mathias Agopian <mathias@google.com> vector and matrix classes for graphics use

- this implements vec2, vec3, vec4, which are float vectors
of size 2, 3 and 4 respectively.

the code allows easy instantiation of vectors of a different
type via the tvec{2|3|4}<T> template classes.

- this also implements mat4 which is a float 4x4 matrix. the
tmat44<T> template class allows easy instantiation of a
4x4 matrix of a different value_type.

The vector types have some minimal support for the
glsl style swizzled access; for instance:

vec4 u;
vec3 v = u.xyz;

only .x, .xy, .xyz and their .stpq / .rgba equivalent are
supported.

most operators are supported on both vector and matrices:
arithmetic, unary, compound assignment and comparison
(bit-wise operators NOT supported).

- operations available on vectors include:
dot, length, distance, normalize and cross

- operations available on matrices include:
transpose, inverse, trace

- and a few utilities to create matrices:
ortho, frustum, lookAt

Change-Id: I64add89ae90fa78d3f2f59985b63495575378635
ests/Android.mk
ests/mat_test.cpp
ests/vec_test.cpp
771ed8d71be8c851991164cd10fcfbf2431df86d 13-Aug-2013 Jesse Hall <jessehall@google.com> am fc43e16a: Merge "Graphics:Add error check when create GraphicBuffer"

* commit 'fc43e16a5693bca0edfc82c650fb606971e47138':
Graphics:Add error check when create GraphicBuffer
2aff7025482cc40d2ebd45f81cdb318ac1c6f868 20-Nov-2012 Lingyun Zhu <lingyun.zhu@intel.com> Graphics:Add error check when create GraphicBuffer

Change-Id: Ib0ca59bf1dfe4ae0266c29c91c1dbe3d02c0904e
Author: Lingyun Zhu <lingyun.zhu@intel.com>
Signed-off-by: Lingyun Zhu <lingyun.zhu@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 50141
raphicBuffer.cpp
87f9b877964b7d7db9b59ba45b73b4b1a779ecf8 01-Aug-2013 Mathias Agopian <mathias@google.com> remove unused code form GraphicBuffer

Change-Id: I0dd67f1f93f654331e8f17b55730931dbc695ca7
raphicBuffer.cpp
e142428a9c8b9d2380032cd4d7b55ee440fe8770 30-Jul-2013 Mathias Agopian <mathias@google.com> Make Flattenable not virtual

Fallout from the Flattenable change, update all its uses.

Additionnaly, fix/tighten size checks when (un)flatten()ing
things.

Removed the assumption by some flattenables (e.g.: Fence)
that the size passed to them would be exact (it can
and will be larger in some cases)

The code in Parcel is a bit complicated so that we don't
have to expose the full implementation (and also to
keep the code smallish).

Change-Id: I0bf1c8aca2a3128491b4f45510bc46667e566dde
ence.cpp
raphicBuffer.cpp
egion.cpp
c2414bb0989763641ca57cf72c11ef6d86565a23 26-Jul-2013 Mathias Agopian <mathias@google.com> get rid of HAL pixelformats 5551 and 4444

Change-Id: I39409103144c1ba09078c4ddc323a58987fb09ea
ixelFormat.cpp
5773d3f5b2694c647e010246dff99acc70131289 26-Jul-2013 Mathias Agopian <mathias@google.com> get rid of PixelFormatInfo and simplify things

Change-Id: I025a362cc12d5b9b794fac14be500e25aab65396
ixelFormat.cpp
2381033ad001960c606d13e3a4198e5da3672ec7 17-May-2013 Mathias Agopian <mathias@google.com> am e6eef6c1: am ea74d3b7: make the warning timout of Fence::waitForever() implicit and longer

* commit 'e6eef6c136b007f3a7e1e19884875b855c0c5f95':
make the warning timout of Fence::waitForever() implicit and longer
ea74d3b78d607cde17790a7bb83e6f68ffd34cfd 17-May-2013 Mathias Agopian <mathias@google.com> make the warning timout of Fence::waitForever() implicit and longer

- timeout is now 3 seconds instead of 1
- simplifies the API a bit
- allows us to change/tweak this timeout globaly

Bug: 8988871

Change-Id: I8d3c6ec43a372f602fb3f29856710339f86c0ec9
ence.cpp
f3e85d432749ca77ad707bec523b67d741d43e6e 11-May-2013 Mathias Agopian <mathias@google.com> take the "transparent region" into account for blending

until now it was only used to discard a layer entirely.
we're now reducing the size of the layer if it is still
visible, if possible.

this works for instance when a surfaceView is used and
only the menu bar is displayed over it.

Change-Id: I3f5527c5cd1e69ecc968272c8948f1513ada8c55
ect.cpp
6c7f25afb75ac155bad0b3bc17c0089d0337d060 10-May-2013 Mathias Agopian <mathias@google.com> reformat Rect.{cpp|h}

Change-Id: I45b1f6646541a1abacce1e70df00a770e47b820e
ect.cpp
egion.cpp
c43946b931de5dafd28f49963f9af78e05390b26 05-May-2013 Eino-Ville Talvala <etalvala@google.com> Add support for HAL_PIXEL_FORMAT_YCbCr_420_888

- Add fields to CpuConsumer::LockedBuffer for new information
- New lock methods for GraphicBuffer and GraphicBufferMapper for
the format

Bug: 8734880
Change-Id: If31f82c62d64b6942cf4cc6e5715585c03273f12
raphicBuffer.cpp
raphicBufferMapper.cpp
8a0cb4ee0b6c351de82987efb472fa38dfaf608a 10-Apr-2013 Ying Wang <wangying@google.com> Add liblog

Bug: 8580410
Change-Id: I2ca4fa00dde0b574df3619134836bcb9315bd506
ndroid.mk
2ca79399b933935eb1b6c0ec1f746f8c4475369c 03-Apr-2013 Mathias Agopian <mathias@google.com> latch transparent region hint only when we get a new frame

since the transparent region hint really depends on the
content of the window containing the SurfaceView
(it's calculated by the view hierarchy based on
overlapping views), it makes sense to latch it only when
the content of the window (the app) changes.

This should help fixing drawing artifacts when changing the
layout of a window containing a SurfaceView.

Bug: 8511430
Change-Id: Ic3aa668495293cb4d82a2cd7dcf3b6a337287678
egion.cpp
cab25d680e644d962041d05a319e485b96136a5d 22-Mar-2013 Mathias Agopian <mathias@google.com> improved CallStack a bit

- added a ctor that updates and dumps the stack immediately
- added a "logtag" parameter to dump()

Change-Id: Ie51c256071d282591752243bdb4f68cf9ff8829d
egion.cpp
3e010f3138593cc6953039ee0e3db8ee31881296 26-Feb-2013 Chris Craik <ccraik@google.com> Add createTJunctionFreeRegion

T-junction free regions are useful for rendering regions with various
geometric transformations, and the Region's span-ordered, sorted rect
list supports T-junction free storage without modification.

This approach creates a T-junction free region by splitting each
rectangle that is part of a vertical T-junction. This approach is two
pass (up and down) so that divisions can trickle up/down to other
adjacent spans.

Change-Id: Ifcf5e6fe0034c96b00ef09a4433b2b0fce8f4300
egion.cpp
ests/Android.mk
ests/Region_test.cpp
ests/region/Android.mk
ests/region/region.cpp
1df8c345854155cbbcb9f80de9d12d66ea70ac08 20-Dec-2012 Jamie Gennis <jgennis@google.com> libgui: disallow NULL Fence pointers

This change eliminates the uses of a NULL sp<Fence> indicating that no waiting
is required. Instead we use a non-NULL but invalid Fence object for which the
wait methods will return immediately.

Bug: 7892871
Change-Id: I5360aebe3090422ef6920d56c99fc4eedc642e48
ence.cpp
7c36cd231542990e0ef8240fcc8dfd35a9e4b38b 15-Jan-2013 Jesse Hall <jessehall@google.com> Fix memory leak when getting signal time for unsignaled fences

Bug: 8000983
Change-Id: Ie88ed23fc5e8c95bfade364e090e90b7f070fa8e
ence.cpp
82dbc7429f5f9f2b303b31dc5b9f2bfd1bbe6add 09-Nov-2012 Jamie Gennis <jgennis@google.com> SurfaceFlinger: refactor frame time tracking

This change moves the frame time history tracking code out of Layer and into a
new class called FrameTracker. It also changes the tracking to use signal
timestamps from fences when available for more accurate results.

Change-Id: I323c5f075c58bf86ce363b52af885ad0f6365f2b
ence.cpp
b5c9dcdf3bdab1862047060b8e18c9d1831db8bb 09-Oct-2012 Mathias Agopian <mathias@google.com> Fence didn't manager sync_wait error codes properly

error codes are returned in errno, this caused ::waitForwever()
to only wait for 1 second and return improper error code (-1).

needed to help debugging 7316632

Bug: 7316632
Change-Id: Ie144f614a88393393972a3a770c6b4b0581f961a
ence.cpp
ba607d53c6a94ea8c4c12571980c4ad159af308b 01-Oct-2012 Jesse Hall <jessehall@google.com> Add Fence::waitForever which logs a warning timeout, and use it

Bug: 7217641
Change-Id: If0c1a613ead307c4045a47824174bf40c72bc7d7
ence.cpp
4803b74e2a12a508f7bbfde6f6a962fe3299c61c 25-Sep-2012 Andy McFadden <fadden@android.com> Show build config in dumpsys SurfaceFlinger

This adds a line to the "dumpsys SurfaceFlinger" output that shows
build-time configuration values.

Example:
Build configuration: [sf HAS_CONTEXT_PRIORITY] [libui] \
[libgui USE_FENCE_SYNC]

Bug 7206633

Change-Id: Ibe1856b459d34a4be6ee83a4ebfd2807e6cc68a0
ndroid.mk
iConfig.cpp
9ca6491bb701919a3f88fa7c43da284b13822ed6 13-Sep-2012 Mathias Agopian <mathias@google.com> Region::validate() cannot be called from addRectUnchecked()

addRectUnchecked() is allowed to be in an invalid state
temporarily.

Change-Id: I6f5162b5c49f378978c070a77abba35023fe918c
egion.cpp
068d47f29dfead847999a7b33b4217ee9514152b 12-Sep-2012 Mathias Agopian <mathias@google.com> strengthen region validation

Change-Id: I75ee7bc4dd7a2f5357ac8994a23bc8b8bfb6eb44
egion.cpp
2401ead70099c982796ecc3ec63ec8a5570948fc 01-Sep-2012 Mathias Agopian <mathias@google.com> Add a way to retrieve a Region as a SharedBuffer

Change-Id: Ia53cb905fbc88f899521658545f990fb9217b1e1
egion.cpp
3ab68558fa5a4b8f792a54965a010f03385bd271 31-Aug-2012 Mathias Agopian <mathias@google.com> change how we store Region data internally

We used to keep the bounds of the region as a
separate rectangle. Instead we now store it as the last
element of the Vector<> of Rects.

This has the benefit of being slightly more efficient when
copying regions and reduces the overhead of small regions,
but more importantly will allow us to export the underlaying
SharedBuffer (eventually).

Change-Id: I80790e4fb1a09a747a5616000cfef852ac4ce9e9
egion.cpp
4c0a170585d5c8a1f3508ac55f799ebaf86e91db 31-Aug-2012 Mathias Agopian <mathias@google.com> don't generate a new Region when translating by 0,0

since regions are copy-on-write, this prevents to
duplicate the region entirely and offseting by 0,0 is
fairly common.

Change-Id: I9b8c286315a2e00dda01c2456397d72b5e12006b
egion.cpp
d69097f936d9780957a51ce77335ae409b32aaa3 30-Aug-2012 Jamie Gennis <jgennis@google.com> libgui: add some error checks

This change adds a few error checks both in the framework and in some tests.

Change-Id: I2baf2676942a0dc15866e75852a775a0091ed16d
raphicBuffer.cpp
8683fca395d01734ec7946e9f0595ec5d7b754c6 13-Aug-2012 Mathias Agopian <mathias@google.com> improve [un]marshalling of non-binder objects

this change introduces a new class LightFlattenable<> which is
a protocol to flatten simple objects that don't require
binders or file descriptors; the benefit of this protocol is that
it doesn't require the objects to have a virtual table and give us
a consitant way of doing this.

we also introduce an implementation of this protocol for
POD structures, LightFlattenablePod<>.

Parcel has been update to handle this protocol automatically.

Sensor, Rect, Point and Region now use this new protocol.

Change-Id: Icb3ce7fa1d785249eb666f39c2129f2fc143ea4a
egion.cpp
e21facef01b2e8d2558e4561639eaf9ff135e312 31-Jul-2012 Mathias Agopian <mathias@google.com> Merge "log more info on fence sync_merge error" into jb-mr1-dev
d83d67b5d5e98b7f0bdf54b68f6ea28fa4905a33 31-Jul-2012 Mathias Agopian <mathias@google.com> log more info on fence sync_merge error

also fix a typo where the wrong value was passed to sterror.

Change-Id: I4df2abe582e14c8f816b65818f4593a6bd3c23ea
ence.cpp
747c480b0e3cf9401ff53421be6a82b23fdc04c2 28-Jul-2012 Ed Heyl <ed@google.com> Merge remote-tracking branch 'goog/jb-dev-mako' into jb-mr1-dev

Conflicts:
include/media/hardware/CryptoAPI.h

Change-Id: I84bf34edbef000558f088bbf1d1e5b55d6217d2e
0bc64be3f5198f8dda1ced21bbc957a1d76efbb7 29-Jun-2012 Naseer Ahmed <naseer@codeaurora.org> libs/ui: Add support for triple framebuffers

Change-Id: I90dd38deeeda9a3785b87286cc7d252c6f948750
ramebufferNativeWindow.cpp
c777b0b3b9b0ea5d8e378fccde6935765e28e329 28-Jun-2012 Jesse Hall <jessehall@google.com> Pass fences with buffers from SurfaceTextureClient

Change-Id: I09b49433788d01e8b2b3684bb4d0112be29538d3
ence.cpp
f9783af225aa3b41ec0af36f90941a714269abb7 25-Jun-2012 Jesse Hall <jessehall@google.com> Return fence to client in dequeuBuffer

Change-Id: Ic19750793ad993f0e85391f3cabd743ba565d4c9
ence.cpp
ef19414bd8b77a26f5751f3845be79025a8263fe 14-Jun-2012 Jesse Hall <jessehall@google.com> Transfer HWC release fences to BufferQueue

After a HWC set, each SurfaceFlinger Layer retrieves the release fence
HWC returned and gives it to the layer's SurfaceTexture. The
SurfaceTexture accumulates the fences into a merged fence until the
next updateTexImage, then passes the merged fence to the BufferQueue
in releaseBuffer.

In a follow-on change, BufferQueue will return the fence along with
the buffer slot in dequeueBuffer. For now, dequeueBuffer waits for the
fence to signal before returning.

The releaseFence default value for BufferQueue::releaseBuffer() is
temporary to avoid transient build breaks with a multi-project
checkin. It'll disappear in the next change.

Change-Id: Iaa9a0d5775235585d9cbf453d3a64623d08013d9
ence.cpp
a74cbc06493ed941a8a54f2f1d0074f03fc9aafb 21-Jun-2012 Jesse Hall <jessehall@google.com> Move remaining bits of lockBuffer to dequeueBuffer

FramebufferNativeWindow::dequeueBuffer now waits for the next buffer
to be non-front in addition to being free.

Change-Id: I991f154958cc6b488b1241aba83d1f95a0513b3c
ramebufferNativeWindow.cpp
d8e812ce6fe9ae0388e98b08456e1d18b9498239 14-Jun-2012 Jamie Gennis <jgennis@google.com> Update ANativeWindow clients for sync

This change updates the uses of ANativeWindow to use the new ANW functions that
accept and return Sync HAL fence file descriptors.

Change-Id: I3ca648b6ac33f7360e86754f924aa072f95242f6
ndroid.mk
ramebufferNativeWindow.cpp
f25e183a70bd631f75dce51e85b7d568472a0cdb 14-Jun-2012 Jamie Gennis <jgennis@google.com> libui: add the Fence class

This change adds the Fence class to libui for to wrap the libsync
functionality.

Change-Id: I93a31baeee608b93c14da807a32013dabf783f84
ence.cpp
f15a83f5814219c167f87cb8aaea622fc8493499 11-May-2012 Jamie Gennis <jgennis@google.com> SurfaceFlinger: add a crop to the layer state

This change adds a crop rectangle specified in window coordinates to the layer
state. The all window pixels outside this crop rectangle are treated as though
they were fully transparent. This change also adds the plumbing necessary for
WindowManager to set that crop.

Change-Id: I582bc445dc8c97d4c943d4db8d582a6ef5a66081
ect.cpp
59332804306c054082a39e9b004146bd03ae1d30 07-May-2012 Jamie Gennis <jgennis@google.com> libui: add the Rect::transform method

This change adds a method to Rect to transform a rectangle by a graphics HAL
transform.

Change-Id: Ic0d0988e731bdb5662faee41a5927b1242891658
Bug: 6299171
ect.cpp
6b8bef64f7ed94a45c1b03f65f4bffb9eba86889 25-Apr-2012 Mathias Agopian <mathias@google.com> PixelFormat.UNKNOWN should return an error when queried

Bug: 6294260
Change-Id: Iad6f7bcbdda0a684abca6d9584da611a8b28f7ab
ixelFormat.cpp
3aecbb0715cb6928e0530ff1e4caa9c0993cc371 17-Apr-2012 Mathias Agopian <mathias@google.com> fix Region const_iterator.

- it returned an empty rect when the region was empty, instead
of returning an empty list of rect.

- also fixed an infinite loop when boolean_operation was given
an empty list of rects

Change-Id: I62225c7dcd2832025bb8f12e6cb3762f2a7b36cb
egion.cpp
cf56319d4deb2215e5274f321f7fee71caa1ada1 01-Mar-2012 Mathias Agopian <mathias@google.com> add more tracing for buffer allocation

Change-Id: I8408850d0625985992ef2e2cd0c9f300b1fca293
raphicBufferAllocator.cpp
raphicBufferMapper.cpp
5f2165f9455d4893b581b73a67c5431f4344b47e 25-Feb-2012 Mathias Agopian <mathias@google.com> remove dependency on android_native{s_priv|buffer}.h

Change-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89
ramebufferNativeWindow.cpp
raphicBuffer.cpp
870b8aa15cb5c722b5d8eb7726eaa5f1a7c23d69 25-Feb-2012 Mathias Agopian <mathias@google.com> remove libui dependency on libEGL

Change-Id: I1194f04085637d5c384e134967249430cc43b6ee
ndroid.mk
GLUtils.cpp
ff615cc7a1cceedd705b0623b058c54669b29596 24-Feb-2012 Mathias Agopian <mathias@google.com> deprecate L_8, LA_88 and RGB_332 in sdk

re-add support for pixelformats L_8, LA_88 and RGB_332 in libui
for backward compatibility.

This may or may not fix 6058926

Bug: 6049685
Change-Id: Ic1b8b4cc994522f7fe664da64c0ef76b98bc6d53
ixelFormat.cpp
20b05f91926aba1097191318a37693ca606b0367 23-Feb-2012 Dima Zavin <dima@android.com> Merge "libui: add ability to force a framebuffer format for EGL's use"
c6cd27cbf3ddec77cca97e5bd2b257f80ea99706 22-Feb-2012 Dima Zavin <dima@android.com> libui: add ability to force a framebuffer format for EGL's use

This does not actually change the framebuffer format. It merely
fakes this format to surfaceflinger so that when it creates
framebuffer surfaces it will use this format. It's really a giant
HACK to allow interworking with buggy gralloc+GPU driver
implementations. You should *NEVER* need to set this for shipping
devices.

Change-Id: I03eeb5b4d72838ef219df386ecc489fc20ab9cc7
Signed-off-by: Dima Zavin <dima@android.com>
ndroid.mk
ramebufferNativeWindow.cpp
42e2458144778596281ea2c4a98ad671053234e0 22-Feb-2012 Mathias Agopian <mathias@google.com> remove libui's dependency on libpixelflinger

this also remove support for unused pixelformats.

Change-Id: I2c759a6d2daa740f3786ed62095def8047ae933d
ndroid.mk
ixelFormat.cpp
4f4c10104e8fbeed5dfeefb542e0bc5392daf9a5 21-Feb-2012 Mathias Agopian <mathias@google.com> frameworks/base refactoring

create the new libandroidfw from parts of libui and libutils

Change-Id: I1584995616fff5d527a2aba63921b682a6194d58
ndroid.mk
nput.cpp
nputTransport.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
eyboard.cpp
irtualKeyMap.cpp
ests/Android.mk
ests/InputChannel_test.cpp
ests/InputEvent_test.cpp
ests/InputPublisherAndConsumer_test.cpp
80c39180425d6053ca536f68351bee3c5a351cc4 18-Feb-2012 Mathias Agopian <mathias@google.com> frameworks/base refactoring.

First step. Move libui includes to their new home: androidfw.

Change-Id: Ic042b52fdba72f30edc3cc6339bf30b4c1b99662
nput.cpp
nputTransport.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
eyboard.cpp
irtualKeyMap.cpp
ests/InputChannel_test.cpp
ests/InputEvent_test.cpp
ests/InputPublisherAndConsumer_test.cpp
a18829ab231384858456a8a67b06a3f1e37d2794 13-Feb-2012 Jeff Brown <jeffbrown@google.com> Accurately track the sequence numbers of batched events.

Instead of sending finished signals immediately when appending to
a batch, record the chain of sequence numbers that were part of
the batch and then send finished signals all at once when done.
This change helps the dispatcher keep track of the true state
of the application and can improve ANR detection slightly.

This is part of a series of changes to improve input system pipelining.

Bug: 5963420
Change-Id: I463c2221e2aa8fdf1c3d670c18e39e59ab69b0db
nputTransport.cpp
0a63adaff2ffa945f5e105ee39aec9dcf22954e7 13-Feb-2012 Jeff Brown <jeffbrown@google.com> Enable deferred input messages to be batched.

This is part of a series of changes to improve input system pipelining.

Bug: 5963420
Change-Id: I6874d2128e880a35c6c33890c858cc6ee22af0fd
nputTransport.cpp
f0490c94d01aa7536e4fd3bdf6a888099ba9a5c6 07-Feb-2012 Jeff Brown <jeffbrown@google.com> Implement batching of input events on the consumer side.

To support this feature, the input dispatcher now allows input
events to be acknowledged out-of-order. As a result, the
consumer can choose to defer handling an input event from one
device (because it is building a big batch) while continuing
to handle input events from other devices.

The InputEventReceiver now sends a notification when a batch
is pending. The ViewRoot handles this notification by scheduling
a draw on the next sync. When the draw happens, the InputEventReceiver
is instructed to consume all pending batched input events, the
input event queue is fully processed (as much as possible),
and then the ViewRoot performs traversals as usual.

With these changes in place, the input dispatch latency is
consistently less than one frame as long as the application itself
isn't stalled. Input events are delivered to the application
as soon as possible and are handled as soon as possible. In practice,
it is no longer possible for an application to build up a huge
backlog of touch events.

This is part of a series of changes to improve input system pipelining.

Bug: 5963420

Change-Id: I42c01117eca78f12d66d49a736c1c122346ccd1d
nputTransport.cpp
ests/InputChannel_test.cpp
ests/InputPublisherAndConsumer_test.cpp
cd50850d4825e597b48ff2ad88a8ac33f74ac6cf 07-Feb-2012 Jeff Brown <jeffbrown@google.com> Dispatch multiple touch events in parallel.

This change enables the input dispatcher to send multiple touch
events to an application without waiting for them to be acknowledged.
Essentially this is a variation on the old streaming optimization
but it is much more comprehensive. Event dispatch will stall as
soon as 0.5sec of unacknowledged events are accumulated or a
focused event (such as a key event) needs to be delivered.

Streaming input events makes a tremendous difference in application
performance. The next step will be to enable batching of input
events on the client side once again.

This is part of a series of changes to improve input system pipelining.

Bug: 5963420
Change-Id: I025df90c06165d719fcca7f63eed322a5cce4a78
nputTransport.cpp
6cdee9831d8d2bf8393c2d130cbdc2eced125e15 04-Feb-2012 Jeff Brown <jeffbrown@google.com> Rewrite input transport using sockets.

Since we will not longer be modifying events in place, we don't need
to use an ashmem region for input. Simplified the code to instead
use a socket of type SOCK_SEQPACKET.

This is part of a series of changes to improve input system pipelining.

Bug: 5963420

Change-Id: I05909075ed8b61b93900913e44c6db84857340d8
nputTransport.cpp
ests/InputChannel_test.cpp
ests/InputPublisherAndConsumer_test.cpp
b8a2e98cd7edbe7513543670c94f6b5efa74462f 08-Feb-2012 Romain Guy <romainguy@google.com> Preliminary support for clipRect(Rect, Op)

This adds basic support for clip regions. It is currently disabled at compile
time. Enabling clip regions will require setting up a stencil buffer.

Change-Id: I638616a972276e38737f8ac0633692c3845eaa74
egion.cpp
55ef343331f5efbfe3e01bc9993d94faea236048 07-Jan-2012 Mathias Agopian <mathias@google.com> remove dead/usnused code

Change-Id: I6fa2bc6ee01790abd2c1533f043d61a5e5c8d26e
ndroid.mk
ramebufferNativeWindow.cpp
raphicLog.cpp
e6f43ddce78d6846af12550ff9193c5c6fe5844b 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
ramebufferNativeWindow.cpp
raphicBuffer.cpp
raphicBufferAllocator.cpp
raphicBufferMapper.cpp
nputTransport.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
eyboard.cpp
egion.cpp
irtualKeyMap.cpp
32397c1cd3327905173b36baa6fd1c579bc328ff 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
raphicBufferAllocator.cpp
raphicBufferMapper.cpp
nput.cpp
9d4536835248525f32f1504a3d28d5bbfa0a2910 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
raphicBufferAllocator.cpp
nput.cpp
nputTransport.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
egion.cpp
irtualKeyMap.cpp
ests/region/region.cpp
882b0a59d834be5b595713079f31a2389c32fdda 16-Nov-2011 Jeff Brown <jeffbrown@google.com> Eliminate hw.keyboards system properties.

Stop using system properties to publish information about
the key character map path. Instead, we can retrieve it
on demand by asking the window manager.

It was possible to exhaust the supply of system properties
when repeatedly adding and removing input devices.

Bug: 5532806
Change-Id: Idd361a24ad7db2edc185c8546db7fb05f9c28669
eyCharacterMap.cpp
eyboard.cpp
0857c8f7f1905008b285a5473c906639fdd0288b 27-Sep-2011 Mathias Agopian <mathias@google.com> Region cannot handle malformed Rects. Abort the Region op in that case.

Bug: 5331198, 5334829
Change-Id: Ib1fdbf6fb291e7f1191ccfe16b5ff29d73e7a474
egion.cpp
0450452e8c6ea48341d57d8bc51d56252e9806b8 20-Sep-2011 Mathias Agopian <mathias@google.com> Make sure Region handles invalid rectangles

the boolean operation code assumes rects are valid and
could go into an infinite loop if not. make sure we
abort before that happens.

Bug: 5331198, 5334829
Change-Id: Iee4e3b838ecf504ef21f7447fd2e34a56e7dc3f8
egion.cpp
df9440f62fa09773e0b5bd1ecf7815e8f7fb844c 17-Sep-2011 Jeff Brown <jeffbrown@google.com> Can't stop the fling!
Bug: 5335420

Fixed a bug in VelocityTracker where the output velocity was
not being set to zero when not available.

Added a condition to ensure that the velocity is at least
the minimum fling velocity before continuing. If not, then
the user is trying to stop the fling and scroll more precisely.

Change-Id: I36634b0c3f7a9a09cf20c33f71d41163a8e33eed
nput.cpp
73aaf0d8d22fa18e9336bdfcb97a01a242d17a23 14-Sep-2011 Jeff Brown <jeffbrown@google.com> Velocity Tracker II: The Revenge of Velocity Tracker
Bug: 5265529

Rewrote the velocity tracker to fit a polynomial curve
to pointer movements using least squares linear regression.
The velocity is simply the first derivative of this polynomial.

Clients can also obtain an Estimator that describes the
complete terms of the estimating polynomial including
the coefficient of determination which provides a measure
of the quality of the fit (confidence).

Enhanced PointerLocation to display the movement curve predicted
by the estimator in addition to the velocity vector.

By default, the algorithm computes a 2nd degree (quadratic)
polynomial based on a 100ms recent history horizon.

Change-Id: Id377bef44117fce68fee2c41f90134ce3224d3a1
nput.cpp
137c3c549504a1bf52b85aa983c97f10533c7083 10-Sep-2011 Jeff Brown <jeffbrown@google.com> Tweak VelocityTracker.
Bug: 5265529

Calculate the velocity using the most recent touch sample as the
point of reference instead of the oldest. This change more heavily
weights recent touch samples and reduces the sample time window
used for calculation. This significantly improves the accuracy
of fling gesture detection.

Change-Id: Ib1940933e786e5f6a731552a99bcd9400741d55f
nput.cpp
f9606df42b7b43a6eaa4abd989fef4b7c27a6eae 16-Aug-2011 Mathias Agopian <mathias@google.com> revert last change to EGLUtils::selectConfigForPixelFormat

EGLUtils::selectConfigForPixelFormat is only used by
command line tests and it simply selects a config
based on the EGL_NATIVE_VISUAL_ID.
GLUtils.cpp
ecc0e1014f1181873773b958770129903dda750d 02-Aug-2011 Jeff Brown <jeffbrown@google.com> Merge "Refactor input reader to add stylus support. Bug: 5064702"
d05b34a07940f3d6009b90b3eda067a2d0a35d2c 02-Aug-2011 Mathias Agopian <mathias@google.com> Merge "connect/disconnect is now called from our EGL wrapper"
81a63350527cafce6929309533c58586878f10b5 30-Jul-2011 Mathias Agopian <mathias@google.com> connect/disconnect is now called from our EGL wrapper

the original connect/disconnect hooks are deprecated
and replace by api_connect/api_disconnect. the original
hooks are no no-ops.
api_connect/api_disconnect is now only called from the
android framework.

Bug: 5057915
Change-Id: I8ca64cd1acd6cabf915bf54689ec2e5f6dfa495a
ramebufferNativeWindow.cpp
5873ce46adc9e98efd6e5acbe21639a0a4d25c69 28-Jul-2011 Jeff Brown <jeffbrown@google.com> Refactor input reader to add stylus support.
Bug: 5064702

Introduced the concept of an InputListener to further decouple
the InputReader from the InputDispatcher. The InputListener
exposes just the minimum interface that the InputReader needs
to communicate with the outside world. The InputReader
passes arguments to the InputListener by reference, which makes
it easy to queue them up.

Consolidated all of the InputReader locks into one simple global
Mutex. The reason this wasn't done before was due to potential
re-entrance in outbound calls to the InputDispatcher. To fix this,
the InputReader now queues up all of the events it wants to send
using a QueuedInputListener, then flushes them outside of the
critical section after all of the event processing is finished.
Removing all of the InputMapper locks greatly simplifies the
implementation.

Added tests for new stylus features such as buttons, tool types,
and hovering.

Added some helpers to BitSet32 to handle common code patterns
like finding the first marked bit and clearing it.

Fixed a bug in VelocityTracker where the wrong pointer trace
could get cleared when handling ACTION_POINTER_DOWN. Oops.

Changed PointerCoords so it no longer stores useless zero
axis values. Removed editAxisValue because it is not very
useful when all zero value axes are absent and therefore
cannot be edited in place.

Added dispatch of stylus hover events.

Added support for distance and tool types.

Change-Id: I4cf14d134fcb1db7d10be5f2af7b37deef8f8468
nput.cpp
ests/InputEvent_test.cpp
a947de88e7863859e6d7e825b1d45abb596a08e5 30-Jul-2011 Mathias Agopian <mathias@google.com> improve GraphicAllocator dump method

GraphicAllocator debugging cannot deal with
custom HAL formats. make this more obvious in the
log.

Change-Id: I202e58a7f213f32e725aa4eac62cdf6e50ca5894
raphicBufferAllocator.cpp
0a1fdd7d508a472b6c348a3ab6a9f180eb95b31f 28-Jul-2011 Ying Wang <wangying@google.com> Fix uses of all-subdir-makefiles

We should use all-makefiles-under instead.
all-subdir-makefiles can be used only before any "include" statement.
Before this change, both subdirs were actually not included.

Change-Id: I6bf35d07f294a5012c9322096f999ac26e37432f
ests/Android.mk
bb66c9b5a9c16dee93559eb738746a2d0a9b2db3 21-Jul-2011 Mathias Agopian <mathias@google.com> Fix a few issues with NATIVE_WINDOW_TRANSFORM_HINT

- fixed uninitialized variable
- set hint to indentity when transform is too complex
- make sure FrameBufferNativeWindow doesn't fail on needed perform commands

Bug: 4487161
Change-Id: I7cb2b0869b72404732eca7cb2d145ff669e2ed9b
ramebufferNativeWindow.cpp
97c602c5af5f3ffd69009bf496d86347b71a2b4c 20-Jul-2011 Mathias Agopian <mathias@google.com> implement: "Add an ANativeWindow API for SurfaceFlinger to suggest an optimal buffer orientation"

Bug: 4487161
Change-Id: I883f34efe542c2a566d04966f873374f40c50092
ramebufferNativeWindow.cpp
7734ebfe47f42f980c1b44c1f284a91d8ad1d6c7 14-Jul-2011 Mathias Agopian <mathias@google.com> Add set_scaling_mode() to ANativeWindow.

This allows to specify the scaling mode independently from
the buffer size.

Change-Id: Iaa2baa660445531a97d3fac192e580f4929c5d3b
ramebufferNativeWindow.cpp
8f9dbf9e13b927de2524116c30544f7dfbbbf56c 14-Jul-2011 Mathias Agopian <mathias@google.com> move lock/unlock implementaion outside of Surface into SurfaceTextureClient

This makes ANativeWindow_lock/ANativeWindow_unlockAndPost work
with ANativeWindows implemented by Surface and SurfaceTextureClient.

Also, Surface now inherits directly from SurfaceTextureClient.

Bug: 5003724
Change-Id: I9f285877c7bae9a262e9a7af91c2bae78804b2ef
ramebufferNativeWindow.cpp
8a1d693e592ba872024f7bce647024c4e167836e 14-Jul-2011 Jeff Brown <jeffbrown@google.com> Provide more descriptive name for InputChannel ashmem.

Change-Id: I4307de9f717ac4810b1b91ee0c1a3899325acf71
nputTransport.cpp
71753982479b9a68e36d43fbb58de0331ea5797c 12-Jul-2011 Jeff Brown <jeffbrown@google.com> Merge "Remove the simulator target from all makefiles. Bug: 5010576"
baa44b89ec159fd65230cbb8ebab62d63a513b0b 12-Jul-2011 Jeff Brown <jeffbrown@google.com> Remove the simulator target from all makefiles.
Bug: 5010576

Change-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8
ndroid.mk
ests/Android.mk
bee205fd58a27c10a0895de5339e76025d429d2b 01-Jul-2011 Jamie Gennis <jgennis@google.com> EGL: fix the ANativeWindow size/fmt override

This change fixes how the Android EGL layer overrides the size and
format of an ANativeWindow in eglCreateWindowSurface. The new behavior
is to leave the size untouched when overriding the format. The previous
behavior was to reset the ANativeWindow to use the default size set by
the ANativeWindow implementation.

It also adds two new 'perform' methods to the ANativeWindow interface:
set_buffers_dimensions and set_buffers_format, and redefines the
behavior of set_buffers_geometry to be the combination of these two new
methods.

Additionally, this change adds an error check for the return value of
the new native_window_set_buffers_format call, which required adding a
(stub) handler for to FramebufferNativeWindow.

Change-Id: I805c7ccd8d4730dfb132d10d8bc3fb058a0b9df1
ramebufferNativeWindow.cpp
6163091a2c366f8311fc3ee627dc7deb9681236e 07-Jul-2011 Mathias Agopian <mathias@google.com> Fix EGLUtils::selectConfigForPixelFormat()

- renderscript now calls EGL directly instead of relying on this function
- surfaceflinger also does its own EGLConfig selection
- selectConfigForPixelFormat stays for legacy reason (many tests use it) but
it now only tries to match the alpha channel of the format rather than the
format itself.

this will allow implementations who don't support the exact formats
defined in the HAL to work properly.

Bug: 4998223

Change-Id: Ic664dfc14d5072a514b6f77a115d1521bfc1578f
GLUtils.cpp
771e5828e88dd10b56a9ca83bf66127b7a0287ed 29-Jun-2011 Jeff Brown <jeffbrown@google.com> Merge "Improve input event consistency invariants."
7832080b5aa548602bdf01287ef67b88de5be58c 29-Jun-2011 Jeff Brown <jeffbrown@google.com> Improve input event consistency invariants.

Fixed some issues where inconsistent streams of events could
be generated by the dispatcher, particularly when switching from
hovering with one device to hovering with another.

Fixed a bug where the touch pad would fail to generate a new
HOVER_MOVE following a tap event. As a result, the hover event
stream would not resume until the user touched the touch pad
again.

Change-Id: I444dce84641fb12e56a0af84c931520771d6c493
nputTransport.cpp
bae6579eb2690498528dfbc9381419badc8be733 27-Jun-2011 Andy McFadden <fadden@android.com> Remove native EventRecurrence parser

Switch over to the new parser.

Bug 4575374

Change-Id: If78d8042fb266182900398f7fc464a048c779966
ndroid.mk
ventRecurrence.cpp
5d99f17e827a927938e450076857f4cf145074c2 08-Jun-2011 Jeff Brown <jeffbrown@android.com> am 61220e88: am bbbab26e: am 2c180499: Merge "Revert velocity damping. Bug: 4364920" into honeycomb-mr2

* commit '61220e880ac4d9d76b7fd50744439e68e929c697':
Revert velocity damping. Bug: 4364920
7ca7ba2064d4be0989b310907f5ddca218b58556 07-Jun-2011 Jeff Brown <jeffbrown@android.com> Revert velocity damping.
Bug: 4364920

Velocity damping proved to be a bad idea because it would
cause a significant ramp in velocity at the beginning of
a gesture, instead of the desired smooth behavior. Oh well.

Change-Id: Ie631946f47ef2492bd71fbed1ab44bbb39a875a8
nput.cpp
36f49c133ec0d9d14ba3a06039f9db435e4731ea 04-Jun-2011 Jeff Brown <jeffbrown@android.com> am 56503b8d: am 8186a5f0: am 10c3f367: Merge "Implement pointer acceleration." into honeycomb-mr2

* commit '56503b8ddfe5c82407da32e18061e725f668432d':
Implement pointer acceleration.
adab62038365be512aa9c21cf64df642dd075704 01-Jun-2011 Jeff Brown <jeffbrown@android.com> Implement pointer acceleration.

Bug: 4124987
Change-Id: I1f31a28f1594c55302ccabe13fe3ca6d2ff71d50
nput.cpp
d3e6d3e763544511a870b354f657600d25c42b91 13-Apr-2011 Jeff Brown <jeffbrown@google.com> Initial checkin of spot presentation for touchpad gestures. (DO NOT MERGE)

Added a new PointerIcon API (hidden for now) for loading
pointer icons.

Fixed a starvation problem in the native Looper's sendMessage
implementation which caused new messages to be posted ahead
of old messages sent with sendMessageDelayed.

Redesigned the touch pad gestures to be defined in terms of
more fluid finger / spot movements. The objective is to reinforce
the natural mapping between fingers and spots which means there
must not be any discontinuities in spot motion relative to
the fingers.

Removed the SpotController stub and folded its responsibilities
into PointerController.

Change-Id: Ib647dbd7a57a7f30dd9c6e2c260df51d7bbdd18e
nput.cpp
fa785531f7510e3dee799dd4b37279e1e04f4a81 24-May-2011 Jeff Brown <jeffbrown@android.com> Coalesce input events that arrive faster than 333Hz. (DO NOT MERGE)

Some drivers report individual finger updates one at a time
instead of all at once. When 10 fingers are down, this can
cause the framework to have to handle 10 times as many events
each with 10 times as much data. Applications like
PointerLocation would get significantly bogged down by all
of the redundant samples.

This change coalesces samples that are closely spaced in time,
before they are dispatched, as part of the motion event batching
protocol.

Increased the size of the InputChannel shared memory buffer so
that applications can catch up faster if they accumulate a
backlog of samples.

Change-Id: Ibc6abf8af027d9003011ac75caa12941080caba3
nputTransport.cpp
c5982b7bee75467f50d681ad54120eadc7a8d88e 15-Mar-2011 Jeff Brown <jeffbrown@google.com> Improve VelocityTracker numerical stability. (DO NOT MERGE)

Replaced VelocityTracker with a faster and more accurate
native implementation. This avoids the duplicate maintenance
overhead of having two implementations.

The new algorithm requires that the sample duration be at least
10ms in order to contribute to the velocity calculation. This
ensures that the velocity is not severely overestimated when
samples arrive in bursts.

The new algorithm computes the exponentially weighted moving
average using weights based on the relative duration of successive
sample periods.

The new algorithm is also more careful about how it handles
individual pointers going down or up and their effects on the
collected movement traces. The intent is to preserve the last
known velocity of pointers as they go up while also ensuring
that other motion samples do not count twice in that case.

Bug: 4086785
Change-Id: I95054102397c4b6a9076dc6a0fc841b4beec7920
nput.cpp
247da72a5bb1e762c73723fd2d495c9a6c4f1c68 10-Mar-2011 Jeff Brown <jeffbrown@google.com> Use touch pad gestures to manipulate the pointer. (DO NOT MERGE)

1. Single finger tap performs a click.
2. Single finger movement moves the pointer (hovers).
3. Button press plus movement performs click or drag.
While dragging, the pointer follows the finger that is moving
fastest. This is important if there are additional fingers
down on the touch pad for the purpose of applying force
to an integrated button underneath.
4. Two fingers near each other moving in the same direction
are coalesced as a swipe gesture under the pointer.
5. Two or more fingers moving in arbitrary directions are
transformed into touches in the vicinity of the pointer.
This makes scale/zoom and rotate gestures possible.

Added a native VelocityTracker implementation to enable intelligent
switching of the active pointer during drags.

Change-Id: I7b7ddacc724fb1306e1590dbaebb740d3130d7cd
nput.cpp
nputTransport.cpp
e959ed2533bdc37da99fd34dafa26d1967a6b4c9 07-May-2011 Jeff Brown <jeffbrown@google.com> Add initial API for stylus and mouse buttons.

Added the concept of pointer properties in a MotionEvent.
This is currently used to track the pointer tool type to enable
applications to distinguish finger touches from a stylus.

Button states are also reported to application as part of touch events.

There are no new actions for detecting changes in button states.
The application should instead query the button state from the
MotionEvent and take appropriate action as needed.

A good time to check the button state is on ACTION_DOWN.

As a side-effect, applications that do not support multiple buttons
will treat primary, secondary and tertiary buttons identically
for all touch events.

The back button on the mouse is mapped to KEYCODE_BACK
and the forward button is mapped to KEYCODE_FORWARD.

Added basic plumbing for the secondary mouse button to invoke
the context menu, particularly in lists.

Added clamp and split methods on MotionEvent to take care of
common filtering operations so we don't have them scattered
in multiple places across the framework.

Bug: 4260011
Change-Id: Ie992b4d4e00c8f2e76b961da0a902145b27f6d83
nput.cpp
nputTransport.cpp
ests/InputEvent_test.cpp
ests/InputPublisherAndConsumer_test.cpp
db05e228a4d170e644f27adc2d946558db53eb4e 10-May-2011 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 05be6d6f to master

Change-Id: Ic6a6c5bb300f6f1d43f9ed550b284282b4f16212
16fe3c2c1fac36507ec7190537c95944943b0cb2 28-Apr-2011 Dianne Hackborn <hackbod@google.com> Better compat mode part one: start scaling windows.

First step of improving app screen size compatibility mode. When
running in compat mode, an application's windows are scaled up on
the screen rather than being small with 1:1 pixels.

Currently we scale the application to fill the entire screen, so
don't use an even pixel scaling. Though this may have some
negative impact on the appearance (it looks okay to me), it has a
big benefit of allowing us to now treat these apps as normal
full-screens apps and do the normal transition animations as you
move in and out and around in them.

This introduces fun stuff in the input system to take care of
modifying pointer coordinates to account for the app window
surface scaling. The input dispatcher is told about the scale
that is being applied to each window and, when there is one,
adjusts pointer events appropriately as they are being sent
to the transport.

Also modified is CompatibilityInfo, which has been greatly
simplified to not be so insane and incomprehendible. It is
now simple -- when constructed it determines if the given app
is compatible with the current screen size and density, and
that is that.

There are new APIs on ActivityManagerService to put applications
that we would traditionally consider compatible with larger screens
in compatibility mode. This is the start of a facility to have
a UI affordance for a user to switch apps in and out of
compatibility.

To test switching of modes, there is a new variation of the "am"
command to do this: am screen-compat [on|off] [package]

This mode switching has the fundamentals of restarting activities
when it is changed, though the state still needs to be persisted
and the overall mode switch cleaned up.

For the few small apps I have tested, things mostly seem to be
working well. I know of one problem with the text selection
handles being drawn at the wrong position because at some point
the window offset is being scaled incorrectly. There are
probably other similar issues around the interaction between
two windows because the different window coordinate spaces are
done in a hacky way instead of being formally integrated into
the window manager layout process.

Change-Id: Ie038e3746b448135117bd860859d74e360938557
nput.cpp
697526bc9e44ce61c88614f98387ae8bbf0a187e 01-May-2011 Iliyan Malchev <malchev@google.com> frameworks/base: android_native_buffer_t -> ANativeWindowBuffer

Change-Id: Idc2eabaa805bb6d308ebb315872623f28d428417
Signed-off-by: Iliyan Malchev <malchev@google.com>
ramebufferNativeWindow.cpp
raphicBuffer.cpp
41abd67302b52aefadc2b3dea42226f16bf6d9ba 15-Apr-2011 Iliyan Malchev <malchev@google.com> frameworks/base: make the ANativeWindow query() method const

query() does not modify the object's data, so it needs to be a const method

Change-Id: I67c40a3c865461e6f1cc2193fd2d74286ff6ac8f
Signed-off-by: Iliyan Malchev <malchev@google.com>
ramebufferNativeWindow.cpp
4815f2a6ada7941680b29581d5cf5a5ed168f618 13-Apr-2011 Jeff Brown <jeffbrown@google.com> Initial checkin of spot presentation for touchpad gestures.

Added a new PointerIcon API (hidden for now) for loading
pointer icons.

Fixed a starvation problem in the native Looper's sendMessage
implementation which caused new messages to be posted ahead
of old messages sent with sendMessageDelayed.

Redesigned the touch pad gestures to be defined in terms of
more fluid finger / spot movements. The objective is to reinforce
the natural mapping between fingers and spots which means there
must not be any discontinuities in spot motion relative to
the fingers.

Removed the SpotController stub and folded its responsibilities
into PointerController.

Change-Id: I5126b1e69d95252fda7f2a684c9287e239a57163
nput.cpp
4e394b18bae923eb49e32c68dc77ee02637a10ea 07-Apr-2011 Jeff Brown <jeffbrown@google.com> Coalesce input events that arrive faster than 333Hz.

Some drivers report individual finger updates one at a time
instead of all at once. When 10 fingers are down, this can
cause the framework to have to handle 10 times as many events
each with 10 times as much data. Applications like
PointerLocation would get significantly bogged down by all
of the redundant samples.

This change coalesces samples that are closely spaced in time,
before they are dispatched, as part of the motion event batching
protocol.

Increased the size of the InputChannel shared memory buffer so
that applications can catch up faster if they accumulate a
backlog of samples.

Added logging code to help measure input dispatch and drawing
latency issues in the view hierarchy. See ViewDebug.DEBUG_LATENCY.

Change-Id: Ia5898f781f19901d2225c529a910c32bdf4f504f
nputTransport.cpp
23e0c8c1a17e57ea98219087aa68750c72257f6c 02-Apr-2011 Jeff Brown <jeffbrown@google.com> Fix dispatcher crash when input monitoring enabled.
Also ensure that we actually log assertion failures.

Bug: 4203092
Change-Id: I5c14bc41b2255f876858121f5572e2de75cabcc3
nput.cpp
939fee8819ac714af6f99b1d8e0bd2ff6626a356 17-Mar-2011 Mathias Agopian <mathias@google.com> am e22aa623: am 25594e19: am f40e638e: fix [4093196] Device lock up - log spam with SharedBufferStack: waitForCondition(LockCondition) timed out

* commit 'e22aa62362a3007ee59ac62d4b5969e216987995':
fix [4093196] Device lock up - log spam with SharedBufferStack: waitForCondition(LockCondition) timed out
d0b55c011a311b677493ba72804bf1bc4df68224 17-Mar-2011 Mathias Agopian <mathias@google.com> fix [4093196] Device lock up - log spam with SharedBufferStack: waitForCondition(LockCondition) timed out

a memory corruption happned when the buffer pool was resized
(like when playing a video or using camera) and there was
no current active buffer. In this case, the faulty code
would index into an array at position -1 which corrupted
24 bytes of data.

also improved region validation code (ifdef'ed out by default)

Bug: 4093196
Change-Id: I915c581d131148959d720e00e3892e9186ab733d
egion.cpp
e3d4a68f2d09098bda8c6ca6c3826877365c7267 16-Mar-2011 Jeff Brown <jeffbrown@google.com> Merge "Improve VelocityTracker numerical stability."
1593354388f622f189063314e97389f148a30b7f 15-Mar-2011 Jeff Brown <jeffbrown@google.com> Improve VelocityTracker numerical stability.

Replaced VelocityTracker with a faster and more accurate
native implementation. This avoids the duplicate maintenance
overhead of having two implementations.

The new algorithm requires that the sample duration be at least
10ms in order to contribute to the velocity calculation. This
ensures that the velocity is not severely overestimated when
samples arrive in bursts.

The new algorithm computes the exponentially weighted moving
average using weights based on the relative duration of successive
sample periods.

The new algorithm is also more careful about how it handles
individual pointers going down or up and their effects on the
collected movement traces. The intent is to preserve the last
known velocity of pointers as they go up while also ensuring
that other motion samples do not count twice in that case.

Bug: 4086785
Change-Id: I2632321232c64d6b8faacdb929e33f60e64dcdd3
nput.cpp
cefc876234dcbbc3f973862c8c8bbdf4dc18296e 15-Mar-2011 Jamie Gennis <jgennis@google.com> am ceb7cb14: am 02805a40: Merge "ANativeWindow: add query for the concrete type." into honeycomb-mr1

* commit 'ceb7cb1460484eda1a3cb9cd271d7caf3a3dcbd1':
ANativeWindow: add query for the concrete type.
391bbe2246a7547dbf3460c231b3c5ba691d4eb1 14-Mar-2011 Jamie Gennis <jgennis@google.com> ANativeWindow: add query for the concrete type.

This change adds a query to the ANativeWindow interface for getting the
concrete type of the ANativeWindow.

Bug: 4086509
Change-Id: I64aa86d72fbca3b52a98e1fc35608737781a3178
ramebufferNativeWindow.cpp
fa773aa745325263745202f822335dfeec0e4c67 10-Mar-2011 Jeff Brown <jeffbrown@google.com> Use touch pad gestures to manipulate the pointer.

1. Single finger tap performs a click.
2. Single finger movement moves the pointer (hovers).
3. Button press plus movement performs click or drag.
While dragging, the pointer follows the finger that is moving
fastest. This is important if there are additional fingers
down on the touch pad for the purpose of applying force
to an integrated button underneath.
4. Two fingers near each other moving in the same direction
are coalesced as a swipe gesture under the pointer.
5. Two or more fingers moving in arbitrary directions are
transformed into touches in the vicinity of the pointer.
This makes scale/zoom and rotate gestures possible.

Added a native VelocityTracker implementation to enable intelligent
switching of the active pointer during drags.

Change-Id: I5ada57e7f2bdb9b0a791843eb354a8c706b365dc
nput.cpp
nputTransport.cpp
46689da7ee29902f2ebebd6224f566c4deccc274 09-Mar-2011 Jeff Brown <jeffbrown@google.com> Input improvements and bug fixes.

Associate each motion axis with the source from which it comes.
It is possible for multiple sources of the same device to define
the same axis. This fixes new API that was introduced in MR1.
(Bug: 4066146)

Fixed a bug that might cause a segfault when using a trackball.

Only fade out the mouse pointer when touching the touch screen,
ignore other touch pads.

Changed the plural "sources" to "source" in several places in
the InputReader where we intend to refer to a particular source
rather than to a combination of sources.

Improved the batching code to support batching events from different
sources of the same device in parallel. (Bug: 3391564)

Change-Id: I0189e18e464338f126f7bf94370b928e1b1695f2
nput.cpp
e89d1041ddc81a85c73f00f94a978e32597afa68 04-Mar-2011 Jeff Brown <jeffbrown@google.com> Joystick tweaks. (DO NOT MERGE)

Ensure that the joystick can always reach -1.0, 0.0 and 1.0 positions
even when noise filtering is applied. (Bug: 3514510)

Add support for a few more standard axes.

Add additional mapping modes for axes.
Some axes are inverted from standard interpretation
or are actually intended to be split into two distict axes
such as left/right trigger controls or accelerator/brake.

Add key layout file for a G25 racing wheel and XBox 360 controller
to tweak behavior. They work fine without them but the axis mappings
are not ideal.

Change-Id: I0fddd90309af4dc14d35f34fe99ed6e521c0b7c7
eyLayoutMap.cpp
d5ed285606a9f28d2102e086aaee5c9d1cb819b9 03-Mar-2011 Jeff Brown <jeffbrown@google.com> Wake screen from external HID peripherals.

Added some plumbing to enable the policy to intercept motion
events when the screen is off to handle wakeup if needed.

Added a basic concept of an external device to limit the scope
of the wakeup policy to external devices only. The wakeup policy
for internal devices should be based on explicit rules such as
policy flags in key layout files.

Moved isTouchEvent to native.

Ensure the dispatcher sends the right event type to userActivity
for non-touch pointer events like HOVER_MOVE and SCROLL.

Bug: 3193114
Change-Id: I15dbd48a16810dfaf226ff7ad117d46908ca4f86
nput.cpp
80f3e7cc1506bbb4bec458e15629805a7c1df7ee 02-Mar-2011 Jeff Brown <jeffbrown@google.com> Fade out the mouse pointer after inactivity or other events.

Fades out the mouse pointer:
- after 15 seconds of inactivity normally
- after 3 seconds of inactivity in lights out mode
- after a non-modifier key down
- after a touch down

Extended the native Looper to support enqueuing time delayed
messages. This is used by the PointerController to control
pointer fade timing.

Change-Id: I87792fea7dbe2d9376c78cf354fe3189a484d9da
eyboard.cpp
25943a83f255569738cc9f557544e8bafcf6a602 19-Feb-2011 Jeff Brown <jeffbrown@google.com> Add new hover move action and scroll wheel plumbing.

Added support for tracking the mouse position even when the mouse button
is not pressed. To avoid confusing existing applications, mouse movements
are reported using the new ACTION_HOVER_MOVE action when the mouse button
is not pressed.

Added some more plumbing for the scroll wheel axes. The values are
reported to Views but they are not yet handled by the framework.

Change-Id: I1706be850d25cf34e5adf880bbed5cc3265cf4b1
nputTransport.cpp
3ea4de826d95c580c28d854c677ded0d15d220a8 19-Feb-2011 Jeff Brown <jeffbrown@google.com> Add new axes for joysticks and mouse wheels.

Added API on InputDevice to query the set of axes available.
Added API on KeyEvent and MotionEvent to convert keycodes and axes
to symbolic name strings for diagnostic purposes.
Added API on KeyEvent to query if a given key code is a gamepad button.
Added a new "axis" element to key layout files to specify the
mapping between raw absolute axis values and motion axis ids.
Expanded the axis bitfield to 64bits to allow for future growth.
Modified the Makefile for keyboard prebuilts to run the keymap
validation tool during the build.
Added layouts for two game controllers.
Added default actions for game pad button keys.
Added more tests.
Fixed a bunch of bugs.

Change-Id: I73f9166c3b3c5bcf4970845b58088ad467525525
nput.cpp
eyLayoutMap.cpp
eyboard.cpp
ests/InputEvent_test.cpp
b2d4435dfa44531ee6025563571cfd77cd1b4f97 17-Feb-2011 Jeff Brown <jeffbrown@google.com> Fix a regression with MotionEvent parceling.

Also added some more unit tests.

Change-Id: I413654294d1a998eec056884e6df5eaa50f3daf4
nput.cpp
ests/Android.mk
ests/InputChannel_test.cpp
ests/InputEvent_test.cpp
ests/InputPublisherAndConsumer_test.cpp
3e3414636c71948e3f4b162b4e5b773c77d37098 15-Feb-2011 Jeff Brown <jeffbrown@google.com> Add support for arbitrary axes in MotionEvents.

This change makes it possible to extend the set of axes that
are reported in MotionEvents by defining new axis constants.

The MotionEvent object is now backed by its C++ counterpart
to avoid having to maintain multiple representations of the
same data.

Change-Id: Ibe93c90d4b390d43c176cce48d558d20869ee608
ndroid.mk
nput.cpp
ests/InputPublisherAndConsumer_test.cpp
d5ea3db6a3049d6b66a619be08002e90aa38f99f 17-Jan-2011 Mathias Agopian <mathias@google.com> Use EGL_NATIVE_VISUAL_ID to select EGLConfig

EGLUtils::selectConfigForPixelFormat() now uses EGL_NATIVE_VISUAL_ID
to select a config with the proper format. this is more robust and
future proof.

Change-Id: I7245d904adab1e339f062b9b498ddd9324cfe7a4
GLUtils.cpp
48b888aab9fdcfba250722dffbdffe61f11c64f3 20-Jan-2011 Mathias Agopian <mathias@google.com> improve SurfaceFlinger 'dumpsys' log

list the purgatory, which shows windows that have been closed,
but for which the client still has references.

Change-Id: I5168bb88cb328d5d77d71d0871deb9190f493126
raphicBufferAllocator.cpp
93466435774892925cb09a83209a023c23f931b9 15-Jan-2011 Jeff Brown <jeffbrown@google.com> Make getFallbackAction return false when there is none.

Change-Id: Id17c0f7269e4a228f4e5f11c54614fec508222a2
eyCharacterMap.cpp
41250361577ce85d30b29ef530cfb7bea7d0604d 03-Jan-2011 Jeff Brown <jeffbrown@google.com> Mouse pointer integration.

Added support for loading the pointer icon from a resource.

Moved the system server related bits of the input manager out
of libui and into libinput since they do not need to be linked into
applications.

Change-Id: Iec11e0725b3add2b905c51f8ea2c3b4b0d1a2d67
ndroid.mk
ventHub.cpp
nputDispatcher.cpp
nputManager.cpp
nputReader.cpp
ests/Android.mk
ests/InputDispatcher_test.cpp
ests/InputReader_test.cpp
4c501a42173bfc0c7c9ee32312db392c59b67e13 24-Dec-2010 Jeff Brown <jeffbrown@google.com> Add initial support for cursor-based pointing devices.

Some parts stubbed out but you can plug in a mouse and move
a green cursor around to interact with the UI.

Change-Id: I80d597a7f11d3bd92041890f74b3c77326975e6e
ventHub.cpp
nputDispatcher.cpp
nputReader.cpp
ests/InputReader_test.cpp
7999039b77f0e42fdb589e831dc368ebeee2aadb 10-Dec-2010 Jeff Brown <jeffbrown@google.com> Fix race condition in fallback key processing.

Need to ensure that the channel is still valid before proceeding.

Bug: 3271482
Change-Id: Ia6863cbedd9b53cbc5c9c8815e9ea90bef3d2218
nputDispatcher.cpp
0a757814f3e4ca4db772144e85b687fe89a7fba5 09-Dec-2010 Mathias Agopian <mathias@google.com> fix [3259708] Graphic Buffer Mapper does not support YV12

remove a bunch of a code that was there only to support broken gralloc implementations

Change-Id: I3c1a9172224cbcc283601abfbbd695a20815451f
raphicBufferAllocator.cpp
raphicBufferMapper.cpp
a5529c8778c2f407f482fc12165aeb76c0f505c2 08-Dec-2010 Mathias Agopian <mathias@google.com> remove support for PUSH_BUFFER surfaces and overlays

the same functionality is now supported through
the h/w composer HAL, and YUV support in the GPU.

Change-Id: I8146605449954b8e8fd7f78810b7d873c2d8f5bf
ndroid.mk
Overlay.cpp
verlay.cpp
1d21a9cafc534c34a2f28c985c4c7aa176d0e67b 02-Dec-2010 Erik Gilling <konkers@android.com> surfaceflinger: add support for gralloc dump hooks

Change-Id: Ib6f539ed0132b70d040d653c03d52cc04249ac3c
ramebufferNativeWindow.cpp
raphicBufferAllocator.cpp
02d85b5021dc3e9c042e1e3426fae2f0a903595b 07-Dec-2010 Jeff Brown <jeffbrown@google.com> Add support for fallback keycodes.

This change enables the framework to synthesize key events to implement
default behavior when an application does not handle a key.
For example, this change enables numeric keypad keys to perform
their associated special function when numlock is off.

The application is informed that it is processing a fallback keypress
so it can choose to ignore it.

Added a new keycode for switching applications.

Added ALT key deadkeys.

New default key mappings:
- ESC -> BACK
- Meta+ESC -> HOME
- Alt+ESC -> MENU
- Meta+Space -> SEARCH
- Meta+Tab -> APP_SWITCH

Fixed some comments.
Fixed some tests.

Change-Id: Id7f3b6645f3a350275e624547822f72652f3defe
nputDispatcher.cpp
nputReader.cpp
nputTransport.cpp
eyCharacterMap.cpp
ests/InputDispatcher_test.cpp
ests/InputPublisherAndConsumer_test.cpp
ests/InputReader_test.cpp
b5a00fcb71426492f248ed49a0514a9b8d385065 08-Dec-2010 Mathias Agopian <mathias@google.com> am 48f42f8c: am 4153bf3a: Merge "[3171580] don\'t automatically log GraphicBuffer allocation failures" into gingerbread

* commit '48f42f8c3fbd33b2f46c6290ff5963dd58938cf9':
[3171580] don't automatically log GraphicBuffer allocation failures
372c56e98b93647b7050e518c285057a8a72bc74 07-Dec-2010 Mathias Agopian <mathias@google.com> am 4153bf3a: Merge "[3171580] don\'t automatically log GraphicBuffer allocation failures" into gingerbread

* commit '4153bf3a259624a2f2dc497b77b225a1fb517abc':
[3171580] don't automatically log GraphicBuffer allocation failures
678bdd6349344df254cc0c3377a40fd99e216635 04-Dec-2010 Mathias Agopian <mathias@google.com> [3171580] don't automatically log GraphicBuffer allocation failures

some of these failures are not fatal and even expected in some cases
so they should not emit a dump in the log in those cases.

Change-Id: Idcfa252e3bfa9d74e27fe4ad8f8623aa01aa9c5e
raphicBuffer.cpp
raphicBufferAllocator.cpp
db360642ed7a48eb3b3607a791bbe449cc6529bb 02-Dec-2010 Jeff Brown <jeffbrown@google.com> Improve support for external keyboards.

Use Vendor ID, Product ID and optionally the Version to
locate keymaps and configuration files for external devices.

Moved virtual key definition parsing to native code so that
EventHub can identify touch screens with virtual keys and load
the appropriate key layout file.

Cleaned up a lot of old code in EventHub.

Fixed a regression in ViewRoot's fallback event handling.

Fixed a minor bug in FileMap that caused it to try to munmap
or close invalid handled when released if the attempt to map
the file failed.

Added a couple of new String8 conveniences for formatting strings.

Modified Tokenizer to fall back to open+read when mmap fails since
we can't mmap sysfs files as needed to open the virtual key
definition files in /sys/board_properties/.

Change-Id: I6ca5e5f9547619fd082ddac47e87ce185da69ee6
ndroid.mk
ventHub.cpp
nput.cpp
nputDispatcher.cpp
nputReader.cpp
eyboard.cpp
irtualKeyMap.cpp
ests/InputReader_test.cpp
53c16642e2f8176b26f61b98328051f6dd1234ae 19-Nov-2010 Jeff Brown <jeffbrown@google.com> Ensure the ShortcutManager uses the correct key character map.

The ShortcutManager used to only receive the key code of the key event
that triggered the shortcut. This change now provides the shortcut
manager with the whole key event so it can look up the associated
character using the correct key character map.

To make this more efficient, added a mechanism for recycling
key events. At the moment it is only used by key events owned by the
system process, since clients of the existing API (such as Views)
might continue to hold on to key events after dispatch has finished so
they would break if the key event were recycled by the framework.

Deprecated KeyCharacterMap.BUILT_IN_KEYBOARD.

Change-Id: I4313725dd63f2be01c350c005a41c7fde9bc67e8
ventHub.cpp
nputDispatcher.cpp
nputReader.cpp
ests/InputDispatcher_test.cpp
6688837ff6a959b4f59d9a4249aac1504f590a4b 30-Nov-2010 Jeff Brown <jeffbrown@google.com> Support non-orientation aware keyboards and other devices.

Fixed a bug with dpad keys on external keyboards being rotated
according to the display orientation by adding a new input device
configuration property called "keyboard.orientationAware".

Added a mechanism for overriding the key layout and key character
map in the input device configuration file using the new
"keyboard.layout" and "keyboard.characterMap" properties.

Also added "trackball.orientationAware", "touch.orientationAware" and
"touch.deviceType" configuration properties.

Rewrote the configuration property reading code in native code
so that it can be used by EventHub and other components.

Added basic support for installable idc, kl, and kcm files
in /data/system/devices. However, there is no provision for
copying files there yet.

Disabled long-press character pickers on full keyboards so that
key repeating works as expected.

Change-Id: I1bd9f0c3d344421db444e7d271eb09bc8bab4791
ventHub.cpp
nput.cpp
nputReader.cpp
eyboard.cpp
ests/InputReader_test.cpp
44a2a171e11287286714bcc0926ec1bb073aead3 24-Nov-2010 Jeff Brown <jeffbrown@google.com> Merge "Port Emulator keymaps."
d5fdf7d74b1ff47ed457ecdb0e0c4310ff7d031f 19-Nov-2010 Jeff Brown <jeffbrown@google.com> Port Emulator keymaps.

Also added a validation tool for keymaps (not currently integrated
into the build system but getting there).

This change brings back Android.mk with the intent that it will
be used to validate keymaps in a later change.

Added some missing keys that are present on phones.

Bug: 3215210
Bug: 3225421
Change-Id: Id817c6e2215164616942c51a42752915d9ceacd3
ndroid.mk
eyCharacterMap.cpp
ffb0795daf64dac9f5c73ab7861b702e5b1169a1 23-Nov-2010 Jean-Baptiste Queru <jbq@google.com> am 9df7f313: am f0f6c54b: Merge "frameworks/base: Destroy the overlay even if there is an error"

* commit '9df7f31359866a77a47c9fab3171c71715fd0056':
frameworks/base: Destroy the overlay even if there is an error
ec756056abceb3c5ffe77174cf38328b9fcc1b75 23-Nov-2010 Jean-Baptiste Queru <jbq@google.com> am f0f6c54b: Merge "frameworks/base: Destroy the overlay even if there is an error"

* commit 'f0f6c54b13831b11bd7a3bd7a01dc49b7505e56e':
frameworks/base: Destroy the overlay even if there is an error
29a73ba845b846cd0bcb9112179f78a54aea94b2 18-Nov-2010 Naomi Luis <nluis@codeaurora.org> frameworks/base: Destroy the overlay even if there is an error

Allow the overlay object to be destroyed whenever the destroy is
invoked. Currently the destroy call returns if there is an error
encountered, which results in open data and control channels.

Change-Id: I1f2ef4ebb5fb1dcabf05ab50b5bbf6e5e240a63a
verlay.cpp
46aabb3f51dafd87bbfb713d4690665114524be8 18-Nov-2010 Jeff Brown <jeffbrown@google.com> am b27b8c0c: Fix a key repeating bug. (DO NOT MERGE)

* commit 'b27b8c0caf8ff23d10eea655085769f314050427':
Fix a key repeating bug. (DO NOT MERGE)
0b7b1960e7e6b39e62bbb2ff0bac22154c07e0fa 18-Nov-2010 Jeff Brown <jeffbrown@google.com> am bfc1cc2d: Fix stuck keys when released out of order. (DO NOT MERGE)

* commit 'bfc1cc2d1ea85cc754e63b422eb8cef8ae6a3667':
Fix stuck keys when released out of order. (DO NOT MERGE)
a3477c862a5debcac7dfb076749059406ec59512 11-Nov-2010 Jeff Brown <jeffbrown@google.com> Added support for full PC-style keyboards.

BREAKING CHANGE: Redesigned the key character map format to
accomodate full keyboards with more comprehensive suite of modifiers.
Old key character maps will not work anymore and must be updated.
The new format is plain text only and it not compiled to a binary
file (so the "kcm" tool will be removed in a subsequent check-in).

Added FULL keyboard type to support full PC-style keyboards.

Added SPECIAL_FUNCTION keyboard type to support special function
keypads that do not have any printable keys suitable for typing
and only have keys like HOME and POWER

Added a special VIRTUAL_KEYBOARD device id convention that maps
to a virtual keyboard with a fixed known layout. This is designed
to work around issues injecting input events on devices whose
built-in keyboard does not have a useful key character map (ie.
when the built-in keyboard is a special function keyboard only.)

Modified several places where events were being synthesized
to use the virtual keyboard.

Removed support for the "qwerty" default layout.
The new default layout is "Generic". For the most part "qwerty"
was being used as a backstop in case the built-in keyboard did
not have a key character map (probably because it was a special
function keypad) and the framework needed to be able to inject
key events anyways. The latter issue is resolved by using the
special VIRTUAL_KEYBOARD device instead of BUILT_IN_KEYBOARD.

Added the concept of a key modifier behavior so that
MetaKeyKeyListener can distinguish between keyboards that use
chorded vs. toggled modifiers.

Wrote more robust key layout and key character map parsers
to enable support for new keyboard features and user installable
key maps.

Fixed a bug in InputReader generating key ups when keys
are released out of sequence.

Updated tons of documentation.

Currently QwertyKeyListener is being used for full keyboards
with autotext and capitalization disabled. This mostly works
but causes some problems with character pickers, etc.
These issues will be resolved in subsequent changes.

Change-Id: Ica48f6097a551141c215bc0d2c6f7b3fb634d354
ndroid.mk
ventHub.cpp
nputReader.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
eyLayoutMap.h
eyboard.cpp
9cf416cbcf3be071fb6d89ae253c7f80b579de09 03-Nov-2010 Jeff Brown <jeffbrown@google.com> Fix a key repeating bug. (DO NOT MERGE)

This change fixes a bug in the dispatcher where the window manager
policy would incorrectly receive a key repeat count of 0 in the case
where the key repeat was generated by the hardware or driver.
Long-press on HOME was broken as a result.

Repeating keys could also get stuck down.

Bug: 3159581
Bug: 3208156
Change-Id: I1145487cfcc41a7850dba4cafc63c4a5951ace5b
nputDispatcher.cpp
9bb3ef2e78879e4ec02821fbdb07ba9f9e9521a1 18-Nov-2010 Jeff Brown <jeffbrown@google.com> Fix stuck keys when released out of order. (DO NOT MERGE)

Bug: 3208156
Change-Id: I14e4d54f4912de5e2fabcd8638120623aa2d16e0
nputReader.cpp
3f02b88af646eb950edb44e584b6a82be06c709a 18-Nov-2010 Jean-Baptiste Queru <jbq@google.com> am 5e069074: am a15e4886: Merge "Framebuffer: Support variable number of framebuffers in the UI"

* commit '5e0690745a45f99d12d940dd4aaae814b00a429e':
Framebuffer: Support variable number of framebuffers in the UI
af1097658321bfdfaf0cc65214a94bfcdee372ce 18-Nov-2010 Jean-Baptiste Queru <jbq@google.com> am a15e4886: Merge "Framebuffer: Support variable number of framebuffers in the UI"

* commit 'a15e4886de8f75f3cb137f51743d330414c910e8':
Framebuffer: Support variable number of framebuffers in the UI
e33a9ecc25b91d98ea75e3c14fd24c0c7fce5089 11-Nov-2010 Jeff Brown <jeffbrown@google.com> Enable touch splitting for all windows by default.

New default only applies to applications with targetSdkVersion >=
HONEYCOMB. Old applications default to no touch splitting for
their windows.

In addition, enabled split touch for various system windows.

Bug: 3049580
Change-Id: Idc8da9baa2cd8e1e4e76af8967d7b6a5ccb94427
nputDispatcher.cpp
a2b1b7f71da2ad22b7c88e3c1839b1ce05aa65e6 08-Nov-2010 Mathias Agopian <mathias@google.com> Merge "fix [3148312] Region can access data out of bounds" into gingerbread
d94206c41dfbac8340b86864d9e05cdc3a3a87ba 08-Nov-2010 Joe Onorato <joeo@google.com> The CHEEK_TOUCH stuff never worked. Remove it.

Bug: 3104906
Change-Id: Ia37236ba1775fc3ec8c111e2e0b85b105e0dea6a
nputDispatcher.cpp
81499912348194a9432841398a0d337fa4079c98 05-Nov-2010 Jeff Brown <jeffbrown@google.com> Tell system server whether the app handled input events.

Refactored ViewRoot, NativeActivity and related classes to tell the
dispatcher whether an input event was actually handled by the application.

This will be used to move more of the global default key processing
into the system server instead of the application.

Change-Id: If06b98b6f45c543e5ac5b1eae2b3baf9371fba28
nputDispatcher.cpp
nputTransport.cpp
ests/InputDispatcher_test.cpp
ests/InputPublisherAndConsumer_test.cpp
d4ecee931322b9832b729f2fcbaed21c35edd3bf 30-Oct-2010 Jeff Brown <jeffbrown@google.com> Rename the locked meta key constants for clarity.

Also added some tests for LED setting.

Change-Id: I3fd86322afd07ae8de52d1ccbc2fae2c6d586641
nputReader.cpp
ests/InputReader_test.cpp
71484f2f76457287a1fbf5791f530c2b2459aa0c 03-Nov-2010 Rodrigo Obregon <robregon@ti.com> Framebuffer: Support variable number of framebuffers in the UI

This change defines a macro NUM_FRAME_BUFFERS to set
the desired number of framebuffers to be used by the UI,
instead of hard-coding 2 framebuffers.

Aditional logic has been added to handle the initialization
and destruction of NUM_FRAME_BUFFERS buffers.

Change-Id: I3a4bfec3e0f453432f2ffebf084c00f574d3be46
Signed-off-by: Rodrigo Obregon <robregon@ti.com>
ramebufferNativeWindow.cpp
92988aab48d973dc3f8a5e90e370f2d5a7ae7566 03-Nov-2010 Jeff Brown <jeffbrown@google.com> Fix a key repeating bug.

This change fixes a bug in the dispatcher where the window manager
policy would incorrectly receive a key repeat count of 0 in the case
where the key repeat was generated by the hardware or driver.
Long-press on HOME was broken as a result.

Bug: 3159581
Change-Id: If0f02662313f5b879a4e566fbb461389e274a550
nputDispatcher.cpp
b0bb949f094a11057ebe1d265576cdf4eccfe34e 03-Nov-2010 Jeff Brown <jeffbrown@google.com> Merge "Add plumbing for volume mute key."
7e5660f3e28b4a8321745e013a6a66db95c2bb3e 01-Nov-2010 Jeff Brown <jeffbrown@google.com> Add plumbing for volume mute key.

Full support for the volume mute key will be implemented in a
later change.

Bug: 2912307
Change-Id: I98c27d6360f159c8b7447e04b45f442eff87b38a
nput.cpp
e113710ebd10c254ed54171b64e8557298ded34e 03-Nov-2010 Romain Guy <romainguy@google.com> Merge "Optimize FBO drawing with regions. This optimization is currently disabled until Launcher is modified to take advantage of it. The optimization can be enabled by turning on RENDER_LAYERS_AS_REGIONS in the OpenGLRenderer.h file."
b801624dc4f03c930ec35f406f07fa5fd8f65dd9 28-Oct-2010 Romain Guy <romainguy@google.com> Optimize FBO drawing with regions.
This optimization is currently disabled until Launcher is
modified to take advantage of it. The optimization can be
enabled by turning on RENDER_LAYERS_AS_REGIONS in the
OpenGLRenderer.h file.

Change-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1
egion.cpp
2d283a68e4f45a3405caeda0254d45edbe3b6abf 02-Nov-2010 Jeff Brown <jeffbrown@google.com> am 7ab5d2d9: am a87ea46c: Fix bugs related to cheek event suppression.

* commit '7ab5d2d951792c9b1a1e7cfb279280c2d076506f':
Fix bugs related to cheek event suppression.
f6149c3229529ed2ea1334e6bab6e1df2c86a4ba 02-Nov-2010 Jeff Brown <jeffbrown@google.com> Fix bugs related to cheek event suppression.

Two issues:

1. First, due to an inverted conditional in the input dispatcher, we were
reporting touches as long touches and vice-versa to the power manager.

2. Power manager user activity cheek event suppression also suppresses touch
events (but not long touch or up events). As a result, if cheek event
suppression was enabled, touches would not poke the user activity timer.
However due to the above logic inversion, this actually affected long
touches. Net result, if cheek suppression was enabled in the power manager
and you held your thumb on the screen long enough, the phone would
go to sleep!

Cheek event suppression is commonly turned on when making a phone call.
Interestingly, it does not seem to get turned off afterward...

This change fixes the logic inversion and exempts touches from the cheek
suppression. The reason we do the latter is because the old behavior
was actually harmful in other ways too: a touch down would be suppressed
but not a long touch or the touch up. This would cause bizarre behavior
if you touched the screen while it was dimmed. Instead of brightening
immediately, it would brighten either when you lifted your finger or
300ms later, whichever came first.

Bug: 3154895
Change-Id: Ied9ccec6718fbe86506322ff47a4e3eb58f81834
nputDispatcher.cpp
fd749c63b039da0c40b146c6eea13ce6072d26c4 30-Oct-2010 Jeff Brown <jeffbrown@google.com> Fix policy issues when screen is off.

Rewrote interceptKeyBeforeQueueing to make the handling more systematic.
Behavior should be identical except:
- We never pass keys to applications when the screen is off and the keyguard
is not showing (the proximity sensor turned off the screen).
Previously we passed all non-wake keys through in this case which
caused a bug on Crespo where the screen would come back on if a soft key
was held at the time of power off because the resulting key up event
would sneak in just before the keyguard was shown. It would then be
passed through to the dispatcher which would poke user activity and
wake up the screen.
- We propagate the key flags when broadcasting media keys which
ensures that recipients can tell when the key is canceled.
- We ignore endcall or power if canceled (shouldn't happen anyways).

Changed the input dispatcher to not poke user activity for canceled
events since they are synthetic and should not wake the device.

Changed the lock screen so that it does not poke the wake lock when the
grab handle is released. This fixes a bug where the screen would come
back on immediately if the power went off while the user was holding
one of the grab handles because the sliding tab would receive an up
event after screen turned off and release the grab handles.

Fixed a couple of issues where media keys were being handled inconsistently
or not at all, particularly in the case of the new PAUSE, PLAY
and RECORD keys.

Bug: 3144874
Change-Id: Ie630f5fb6f128cfdf94845f9428067045f42892c
nputDispatcher.cpp
0cc0399b6bc9044942db282514fba42b5d2a1d09 30-Oct-2010 Mathias Agopian <mathias@google.com> fix [3148312] Region can access data out of bounds

Change-Id: Ic46f31d40943f405e37da21a50b55edd5a2c4124
egion.cpp
4c766ccea57ebc82ce08d66bc7c5e2ee871e88ea 28-Oct-2010 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of df3cccf3 to master

Change-Id: I425496a9fc4e9cbc50ad6938e9dccb14827d9558
fef5b04203b0efcbd6dc5d279083d57b77f3391b 28-Oct-2010 Jeff Brown <jeffbrown@google.com> Drop all dispatcher state when dispatcher is disabled.

This patch makes the dispatcher drop all of its state when it is
disabled (when the screen turns off). This ensures that the dispatcher
does not get stuck thinking a pointer is still down if the screen
turned off while the user was touching the display (such as a fat touch
while hitting the power button).

Bug: 3098344
Change-Id: If50ef5804870aa1acd3179fd4b40e3cda58dd39d
nputDispatcher.cpp
53f291e55f0a1693ce0648796d49d3f915c2b304 26-Oct-2010 Jeff Brown <jeffbrown@google.com> Tweak log messages a bit.

Change-Id: Ifadf78c1ab8db49106216c70086f98860795c65f
nputDispatcher.cpp
5e871b47ef9b252e24a9acdedd79b90dfbf65529 25-Oct-2010 Jeff Brown <jeffbrown@google.com> Add test stubs for newly added methods.

Change-Id: I44139adebbbed1358f613fbcbfcddac6617ef5bd
ests/InputReader_test.cpp
bc9f0531564e3c090ae14175d77091820945aa8b 24-Oct-2010 Jeff Brown <jeffbrown@google.com> am 2ef36763: am 860c2df4: Merge "Add unit tests for native input and fix bugs identified." into gingerbread

Merge commit '2ef36763700eff5679d6012e7f078c57f1a4c465'

* commit '2ef36763700eff5679d6012e7f078c57f1a4c465':
Add unit tests for native input and fix bugs identified.
3c3cc62e243a7796f5c1e88773d34e2054cc26c6 21-Oct-2010 Jeff Brown <jeffbrown@google.com> Add unit tests for native input and fix bugs identified.

Fixed a bug where we would lose the first touch point when swiping out of
the virtual key area.

Fixed a bug where we would not send an ACTION_MOVE event in cases where
individual pointers went down/up and the remaining pointers actually moved.
This is important since many applications do not handle pointer movements
during ACTION_POINTER_DOWN or ACTION_POINTER_UP. In the case of
ACTION_POINTER_UP the movement was completely lost since all pointers were
dispatched using their old location rather than the new location.

Improved motion event validation to check for duplicate pointer ids.

Added an input source constant that was missing from the NDK api but
defined in the framework api.

Added a timestamp when reporting added/removed devices in EventHub.

Bug: 3070082
Change-Id: I3206a030f43b7616e2f48006e5a9d522c4d92e56
ventHub.cpp
nputDispatcher.cpp
nputReader.cpp
ests/Android.mk
ests/InputDispatcher_test.cpp
ests/InputReader_test.cpp
a209aa866e5f1101064896c618e5d36cbce48470 22-Oct-2010 Kenny Root <kroot@google.com> am d7cd560a: am 1d79a9d9: Use correct size of GAMEPAD_KEYCODES

Merge commit 'd7cd560af506f75d07034c136bea09b409b4d408'

* commit 'd7cd560af506f75d07034c136bea09b409b4d408':
Use correct size of GAMEPAD_KEYCODES
bc9c82fb7960b99d6c21839b337360fbf6f8d9a5 22-Oct-2010 Kenny Root <kroot@google.com> Use correct size of GAMEPAD_KEYCODES

Compute the actual number of indices in the GAMEPAD_KEYCODES instead of
the pure size in bytes.

Bug: 3121536
Change-Id: I71edbd8bf6eff2c8cc0ea5c6845362b3d1e06466
ventHub.cpp
2659f40403a7927ff421cf084f3b8e8b3e763ce9 19-Oct-2010 Jeff Brown <jeffbrown@google.com> am f2c40603: am 7689dd49: Merge "Fix bug where home presses were not poking user activity." into gingerbread

Merge commit 'f2c406030874b355ca9e4e67cc0e3aff6103c23e'

* commit 'f2c406030874b355ca9e4e67cc0e3aff6103c23e':
Fix bug where home presses were not poking user activity.
60b5776c8795b6f52d1dddf89453c42c085da50f 18-Oct-2010 Jeff Brown <jeffbrown@google.com> Add support for calibrating touch position.

Useful for tweaking touch screen alignment without having to modify the
kernel device driver x/y axis bounds.

Change-Id: I6ca43d3c138548f9dfb76aa33150a0c853698fb6
nputReader.cpp
ef3a8234824cc9f7c3464dd05f9aeca8ea77ebd9 18-Oct-2010 Jeff Brown <jeffbrown@google.com> Fix bug where home presses were not poking user activity.

We now poke user activity twice: once upon dequeueing an event
for dispatch and then again just before we dispatch it. The second
poke is to compensate for the fact that it can take a few seconds to
identify the dispatch target (if the application is responding slowly)
but we want to keep the display from going to sleep for X amount of time
after the app gets a chance to actually receive the event. This mirrors
pre-Gingerbread behavior.

Removed some unnecessary code that filters user activity pokes when sending
events to KeyGuard. We don't need this because KeyGuard already tells the
power manager to disable user activity.

Bug: 3101397
Change-Id: I8c3a77601fdef8f584e84cfdd11aa79da0ff51db
nputDispatcher.cpp
ace3dc4f7cda6b7211b3bab4f33dff8948477791 18-Oct-2010 Jeff Brown <jeffbrown@google.com> am 9e0e0543: am 36e65ffd: Merge "Fix a native crash in input dispatcher when windows are removed." into gingerbread

Merge commit '9e0e054388689fd618c84a283c28ee484477b44d'

* commit '9e0e054388689fd618c84a283c28ee484477b44d':
Fix a native crash in input dispatcher when windows are removed.
7d8733fc7a100c6bcb1d5375e0ea067d907955d2 16-Oct-2010 Jeff Brown <jeffbrown@google.com> am 5f0cbfce: am c1e7b218: Merge "Improve input device calibration format." into gingerbread

Merge commit '5f0cbfcecc4db20f897507c826296b3aac70c592'

* commit '5f0cbfcecc4db20f897507c826296b3aac70c592':
Improve input device calibration format.
e68d9e0be41ac93bd802579c012aca22086f6f9e 15-Oct-2010 Jeff Brown <jeffbrown@google.com> Add support for secure system overlays.

Manual merge from Gingerbread.

This change adds a new window type for secure system overlays
created by the system itself from non-secure system overlays that
might be created by applications that have the system alert permission.
Secure views ignore the presence of secure system overlays.

Bug: 3098519
Change-Id: Id876736fd8bf332ff9a5428bde59f5268aa49c3a
nputDispatcher.cpp
b13d7b5cf0738a79bb7acdda3060f390deaa58cd 16-Oct-2010 Jeff Brown <jeffbrown@google.com> Fix a native crash in input dispatcher when windows are removed.

Bug: 3101826
Change-Id: I040838600a6105c8d9f3235025dc0a7b5b27da2e
nputDispatcher.cpp
d9dd44d867315478bbebfbe69bb952ea8138ac4e 15-Oct-2010 Jeff Brown <jeffbrown@google.com> Add support for secure system overlays. (DO NOT MERGE)

This change adds a new window type for secure system overlays
created by the system itself from non-secure system overlays that
might be created by applications that have the system alert permission.
Secure views ignore the presence of secure system overlays.

Bug: 3098519
Change-Id: I8f8398f4fdeb0469e5d71124c21bedf121bd8c07
nputDispatcher.cpp
6a817e22e4b09a982ba17c1aff57f9fcb735c950 13-Sep-2010 Jeff Brown <jeffbrown@google.com> Add keycodes and meta-key modifiers to support external keyboards.

Added new key maps for external keyboards. These maps are intended to
be shared across devices by inheriting the "keyboards.mk" product
makefile as part of the device's product definition.

One of the trickier changes here was to unwind some code in
MetaKeyKeyListener that assumed that only the low 8 bits of the meta key
state were actually used. The new code abandons bitshifts in favor
of simple conditionals that are probably easier to read anyways.
The special meta key state constants used by MetaKeyKeyListener
are now (@hide) defined in KeyEvent now so as to make it clearer that they
share the same code space even if those codes are not valid for KeyEvents.

The EventHub now takes care of detecting the appropriate key layout
map and key character map when the device is added and sets system
properties accordingly. This avoids having duplicate code in
KeyCharacterMap to probe for the appropriate key character map
although the current probing mechanism has been preserved for legacy
reasons just in case.

Added support for tracking caps lock, num lock and scroll lock and
turning their corresponding LEDs on and off as needed.

The key character map format will need to be updated to correctly support
PC style external keyboard semantics related to modifier keys.
That will come in a later change so caps lock doesn't actually do
anything right now except turn the shiny LEDs on and off...

Added a list of symbolic key names to KeyEvent and improved the toString()
output for debug diagnosis. Having this list in a central place in the
framework also allows us to remove it from Monkey so there is one less
thing to maintain when we add new keycodes.

Bug: 2912307
Change-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4
ventHub.cpp
nputReader.cpp
eyCharacterMap.cpp
28699cce02504c427064edcc64695c9aa2b81b99 15-Oct-2010 Jeff Brown <jeffbrown@google.com> am 567db077: am 2d441e14: Merge "Make sure EventHub reports added/removed devices immediately." into gingerbread

Merge commit '567db07702f851f2e7fb1fb0021ce2871469183e'

* commit '567db07702f851f2e7fb1fb0021ce2871469183e':
Make sure EventHub reports added/removed devices immediately.
6b337e74f024fdd9e8ed3fdd3414bde3e1a3306e 15-Oct-2010 Jeff Brown <jeffbrown@google.com> Improve input device calibration format.

Added support for calibrating touch size for devices that report
size as an area measurement rather than as a width.
Fixed some bugs.

Bug: 3096045
Change-Id: I30a12e73752883516ed054f8af407204bca45814
nputReader.cpp
7e40f36237b2432b74812a6396326115ae10f9a3 14-Oct-2010 Jeff Brown <jeffbrown@google.com> Make sure EventHub reports added/removed devices immediately.

Fixed a bug where EventHub would not report changes in devices
until the next event.

Bug: 3096147
Change-Id: Ie4c3e1d14d0ad806cfaa212611ce06034d1b94d4
ventHub.cpp
29ba9b8d3e12018ee7b0dbf11b7fed769bc555c5 14-Oct-2010 Jeff Brown <jeffbrown@google.com> am 4b255a23: am 03aa28fb: Merge "Improve the input policy handling a bit." into gingerbread

Merge commit '4b255a23041225103a6870e77a236f78c2816eda'

* commit '4b255a23041225103a6870e77a236f78c2816eda':
Improve the input policy handling a bit.
5d0d23dba94b3ff7b3202451abcb0a963aaddad7 14-Oct-2010 Jeff Brown <jeffbrown@google.com> am b05632aa: am a28d5aff: Merge "Fix a bug synthesizing cancelation events for motions." into gingerbread

Merge commit 'b05632aae37ea3a3573aabf10e6868733546de96'

* commit 'b05632aae37ea3a3573aabf10e6868733546de96':
Fix a bug synthesizing cancelation events for motions.
a8ed856a8ae8fb5fd4c4fea520b53f3fe5251e47 12-Oct-2010 Jeff Brown <jeffbrown@google.com> Improve the input policy handling a bit.

Fixed some issues with Monkeys turning off their own screens. Ook ook!
Added some more comments to explain what's going on.

Change-Id: Id2bc0466161a642a73ef7ef97725d1c81e984b12
nputDispatcher.cpp
b6702e59726d7719d9bc644834938c180797deee 12-Oct-2010 Jeff Brown <jeffbrown@google.com> Track input state when transferring touch focus.

Copies the input state to the destination window and sends synthesic
cancelation events to the source window.

Change-Id: Ia75820b0d756ed5d6cd22dce7830251ac85141ed
nputDispatcher.cpp
316237d554bc9422274209d2a51fe43a3d5950b5 12-Oct-2010 Jeff Brown <jeffbrown@google.com> Fix a bug synthesizing cancelation events for motions.

Change-Id: I881c0fa16c1d22c4b1b6cca24deb0105405ff5b0
nputDispatcher.cpp
33d54ce97d4ac84ce0e1a84e2710b45de5e1d41d 11-Oct-2010 Jeff Brown <jeffbrown@google.com> Fix an event injection bug when the policy is bypassed.

Added the concept of a "trusted" event to distinguish between events from
attached input devices or trusted injectors vs. other applications.
This change enables us to move certain policy decisions out of the
dispatcher and into the policy itself where they can be handled more
systematically.

Cherry pick of b931a1b4 from gingerbread into master.

Change-Id: I700a5f07b8b227878cea9437a289a45a245c0424
nputDispatcher.cpp
d129348647325c2040190f88378c1ac39cc3151c 12-Oct-2010 Jeff Brown <jeffbrown@google.com> am 41aabeb5: am 1e6a3a53: Merge "Added more robust tracking and cancelation of events." into gingerbread

Merge commit '41aabeb51305d19747687f246080f44fc2a74435'

* commit '41aabeb51305d19747687f246080f44fc2a74435':
Added more robust tracking and cancelation of events.
1fe6dec0975d0cf7faf367f6bcb30c67d2025a47 11-Oct-2010 Jeff Brown <jeffbrown@google.com> Fix an event injection bug when the policy is bypassed.

Added the concept of a "trusted" event to distinguish between events from
attached input devices or trusted injectors vs. other applications.
This change enables us to move certain policy decisions out of the
dispatcher and into the policy itself where they can be handled more
systematically.

Change-Id: I4d56fdcdd31aaa675d452088af39a70c4e039970
nputDispatcher.cpp
90f0cee685f9b13e6bac7793717a9d15de8eafe8 09-Oct-2010 Jeff Brown <jeffbrown@google.com> Added more robust tracking and cancelation of events.

This change fixes several issues where events would be dropped in the
input dispatch pipeline in such a way that the dispatcher could not
accurately track the state of the input device.

Given more robust tracking, we can now also provide robust cancelation
of input events in cases where an application might otherwise become
out of sync with the event stream due to ANR, app switch, policy decisions,
or forced focus transitions.

Pruned some of the input dispatcher log output.

Moved the responsibility for calling intercept*BeforeQueueing into
the input dispatcher instead of the input reader and added support for
early interception of injected events for events coming from trusted
sources. This enables behaviors like injection of media keys while
the screen is off, haptic feedback of injected virtual keys, so injected
events become more "first class" in a way.

Change-Id: Iec6ff1dd21e5f3c7feb80ea4feb5382bd090dbd9
nputDispatcher.cpp
nputReader.cpp
fe2987d865bd59114c2ddabbcc82f6225e7165fe 10-Oct-2010 Jamie Gennis <jgennis@google.com> Merge "Move binder magic from the Surface class to GraphicBuffer."
309d3bb2f902163356f9d40b6d45c11b435d77a9 07-Oct-2010 Jamie Gennis <jgennis@google.com> Move binder magic from the Surface class to GraphicBuffer.

- Register buffers with Gralloc when unflattening a GraphicBuffer (rather than
doing it in the Surface class).
- Add support for a GraphicBuffer that wraps an android_native_window_t*.

Change-Id: I029ac086111bbac800e5ca37eb505f558b718cd8
raphicBuffer.cpp
26c336a468226fa0555c9f15abf01238110dac27 10-Oct-2010 Jeff Brown <jeffbrown@google.com> am f10929fb: am a1bf0a06: Merge "Minor fix for InputReader support for non-touchscreen devices." into gingerbread

Merge commit 'f10929fb350395c21edd2cba7641479afe75e750'

* commit 'f10929fb350395c21edd2cba7641479afe75e750':
Minor fix for InputReader support for non-touchscreen devices.
77e26fce8e5160163d041740ac0bd6f34728373c 07-Oct-2010 Jeff Brown <jeffbrown@google.com> Minor fix for InputReader support for non-touchscreen devices.

Change-Id: I2256e37dd1c6f3836f82786aae14ee5d0c98f4c6
nputReader.cpp
6d462b1221e98a9203d84bc33b402e4fcd3f4b94 07-Oct-2010 Jeff Brown <jeffbrown@google.com> am 56364bcd: am 78d15acf: Merge "Make secure views tolerate IME overlays." into gingerbread

Merge commit '56364bcd0d1a1b064db3e83fdb64f948ce5c2ad7'

* commit '56364bcd0d1a1b064db3e83fdb64f948ce5c2ad7':
Make secure views tolerate IME overlays.
35cf0e9854886c7d1a76be7c64ba9d78dfca649c 05-Oct-2010 Jeff Brown <jeffbrown@google.com> Make secure views tolerate IME overlays.

Change-Id: I3cf09b9d91045f4d9c558b4aace482a7b0bbd3d8
nputDispatcher.cpp
c0242197eab18a837c374b152a7450f26c22f974 02-Oct-2010 Jeff Brown <jeffbrown@google.com> am ea58d1ba: am e951ef07: Merge "Wait for initial device scan to finish before updating config." into gingerbread

Merge commit 'ea58d1bac2960c1794f048bfa5d1a60b1a3d23a1'

* commit 'ea58d1bac2960c1794f048bfa5d1a60b1a3d23a1':
Wait for initial device scan to finish before updating config.
76025e44e45881a089a853dbb08b1f09abb30fb1 02-Oct-2010 Jeff Brown <jeffbrown@google.com> am e11b76d3: am f6295b35: Merge "Minor logging changes to input dispatcher to help with debugging." into gingerbread

Merge commit 'e11b76d3efb056edea301d53a354d0730adf3520'

* commit 'e11b76d3efb056edea301d53a354d0730adf3520':
Minor logging changes to input dispatcher to help with debugging.
1ad00e96fe0d10c4fa9b870b42f3ea90b17a2d7f 02-Oct-2010 Jeff Brown <jeffbrown@google.com> Wait for initial device scan to finish before updating config.

This change narrows the opportunity for a race condition setting the
resource Configuration while devices are being updated.

Change-Id: I58efa563f4129ab0fce7108511d16a99dff7e451
ventHub.cpp
nputReader.cpp
2806e381cf08ef3073634b1fdd1f656c1750a7eb 02-Oct-2010 Jeff Brown <jeffbrown@google.com> Minor logging changes to input dispatcher to help with debugging.

Added dumpsys reporting to EventHub.
Made the formatting a bit clearer.
Added 'Locked' suffix to some internal methods of EventHub.

Change-Id: Ic449560bcce378f6361895d27c66854e9724abb0
ventHub.cpp
nputDispatcher.cpp
nputReader.cpp
4adce423e481c50b0dad1d1e2bb52c909bb5bd89 02-Oct-2010 Jeff Brown <jeffbrown@google.com> am 57fa3e8b: am 9e32a438: Merge "Support haptic feedback for virtual keys defined in key layout." into gingerbread

Merge commit '57fa3e8b4c94125ddb5be015dd7fbde4a458894f'

* commit '57fa3e8b4c94125ddb5be015dd7fbde4a458894f':
Support haptic feedback for virtual keys defined in key layout.
956c0fb2386cb0cf92e08b199c706ed3a044ad1b 01-Oct-2010 Jeff Brown <jeffbrown@google.com> Support haptic feedback for virtual keys defined in key layout.

Change-Id: I83e4108a87332692e03791dc066206becbc7941f
nputReader.cpp
3f0fd1897cf93dcdc910003bba613a8f02a3cd58 01-Oct-2010 Jeff Brown <jeffbrown@google.com> am 5d3cef8a: am e0c12c88: Merge "Move verbose logging of device capabilities to dumpsys." into gingerbread

Merge commit '5d3cef8a6d1baec29512764b9e0ba240ccd7fcfe'

* commit '5d3cef8a6d1baec29512764b9e0ba240ccd7fcfe':
Move verbose logging of device capabilities to dumpsys.
26c94ff615ffceee586c52f33954122d877f6c85 30-Sep-2010 Jeff Brown <jeffbrown@google.com> Move verbose logging of device capabilities to dumpsys.

Change-Id: I5d55eaebfdf049bd1ac1e7bab2758886cfefc9d7
nputReader.cpp
3c2450fbfb32b4dc5425920d5396c46b7e890822 28-Sep-2010 Jeff Brown <jeffbrown@google.com> Fix bug in split touches.

Cherry-picked down to master.

Change-Id: I786761bd6aecc021ae22d8c9a022324f3a9980d1
nputDispatcher.cpp
1c322584439f00722ad091777404f2c022390a53 28-Sep-2010 Jeff Brown <jeffbrown@google.com> Fix bug in split touches.

Change-Id: I808c2201a06938f82817058059f4ddcc9b1a9ae2
nputDispatcher.cpp
2341fd66b9284fd1ad7958740a66c4eab87fb8e2 28-Sep-2010 Jeff Brown <jeffbrown@google.com> am 26d5786f: am 9c37447e: Merge "Fix pointer index when splitting secondary pointers." into gingerbread

Merge commit '26d5786fb1a43d82b40fa908e1220a018b748c93'

* commit '26d5786fb1a43d82b40fa908e1220a018b748c93':
Fix pointer index when splitting secondary pointers.
ffb16d601b81c0a7559f601c4df8dbaea5947016 28-Sep-2010 Jeff Brown <jeffbrown@google.com> Fix pointer index when splitting secondary pointers.

Change-Id: Ib01e810ea5b64501b1303000bbef0f0a1db2114e
nputDispatcher.cpp
744c559ac78ecfa62d8809915a816bdbf3f87a09 27-Sep-2010 Jeff Brown <jeffbrown@google.com> Add support for transferring touch focus.

Prerequisite for drag and drop.

Change-Id: Iedbe93ed0f3e1c4083130fe66b4ba06d416afce0
nputDispatcher.cpp
d1b0a2bfe50e61241fab6a571941c207232d9212 27-Sep-2010 Jeff Brown <jeffbrown@google.com> Add suuport for splitting touch events across windows.

This feature is currently used to enable dragging the start and end
selection handles of a TextView at the same time. Could be used for
other things later.

Deleted some dead code in ArrowKeyMovementMethod and CursorControllers.

Change-Id: I930accd97ca1ca1917aab8a807db2c950fc7b409
nputDispatcher.cpp
nputReader.cpp
ce802e33d498c5a87f7abc904d2741c8257d80ac 17-Sep-2010 Brian Carlstrom <bdc@google.com> Merge "Fix sim-eng build on Hardy" into gingerbread
3b6dda9e19cf7c9073f52da2c25ef79ee80a83a6 17-Sep-2010 Jeff Brown <jeffbrown@google.com> Merge "Ensure input dispatcher and native looper handles EINTR." into gingerbread
f67f29903680e7a33af020dbeb80697ad619b26e 17-Sep-2010 Jeff Brown <jeffbrown@google.com> Ensure input dispatcher and native looper handles EINTR.

Change-Id: I0a42db5f273b9bfe4ab174e4ee65d5d852f9f6bc
nputTransport.cpp
d8816c3c4cd99cf51108f2a892c7a01b0de24057 16-Sep-2010 Jeff Brown <jeffbrown@google.com> Fix app switch latency optimization.

This optimization was broken due to recent changes in how ANRs are handled.

Change-Id: Ic99248a12755fadac8d4893e7d305b773e038d3d
nputDispatcher.cpp
17563f9fb30dc5d2ad85878c436eabf7f1296a3e 17-Sep-2010 Brian Carlstrom <bdc@google.com> Fix sim-eng build on Hardy

Older glibc version do not include BSD htole32 and htole64 which are
present in bionic. This worksaround a sim-eng build issue by only
using htole32/htole64 if the host is not little endian.

Change-Id: Ia8d0d36285f3c34c51a331790458e52a21c2925f
raphicLog.cpp
128e33421b7744126a69226d7acea717e9b6e652 16-Sep-2010 Jeff Brown <jeffbrown@google.com> Merge "Input API review." into gingerbread
405a1d32e9ae90bc7e4e252528bd80a9ea0a5d6c 16-Sep-2010 Jeff Brown <jeffbrown@google.com> Fix input dispatcher regression on launcher drag&drop.

Change-Id: I40e937bd712cd2ed6cceac95dfd1b8c8e070724f
nputDispatcher.cpp
40ad4706434b40fa466b23c6e9f03f6dcc32c0c4 16-Sep-2010 Jeff Brown <jeffbrown@google.com> Fix NPE when handling certain kinds of ANRs.

Change-Id: Iccef1852e52c84f6f49d30c491431460a10b33d3
nputDispatcher.cpp
53a415e6d1661d3d6278542c960f8d0cf62f6f42 16-Sep-2010 Jeff Brown <jeffbrown@google.com> Make input dispatcher only ANR for foreground windows.

Redesigned the input dispatcher's ANR timeout mechanism so it is much
closer to Froyo's policy. ANR is only ever signalled if the dispatcher
is waiting on a window to finish processing its previous event(s) and
there is new pending input.

In the old code, we tracked the dispatch timeout separately for each
input channel. This was somewhat complicated and also resulted in the
situation where applications could ANR long after the user had pushed
them into the background.

Change-Id: I666ecada0952d4b95f1d67b9f733842b745c7f4b
nputDispatcher.cpp
b5764e066c3ba60261c2719b4f447904605bf779 15-Sep-2010 Jeff Brown <jeffbrown@google.com> Input API review.

Drop currently unsupported input features.
Add documentation comments.

Change-Id: I407d2e1dd90c5ee82983a3ccf177430d35ee7592
nputReader.cpp
b06cca6228aec6acfefbfae7edd768d7de4c7057 15-Sep-2010 Jeff Brown <jeffbrown@google.com> Merge "Replace epoll() with poll() and rename PollLoop to Looper." into gingerbread
59abe7e0909bf4b7bf7b9601e1e40a05f6d4fd8a 14-Sep-2010 Jeff Brown <jeffbrown@google.com> Replace epoll() with poll() and rename PollLoop to Looper.

As part of this change, consolidated and cleaned up the Looper API so
that there are fewer distinctions between the NDK and non-NDK declarations
(no need for two callback types, etc.).

Removed the dependence on specific constants from sys/poll.h such as
POLLIN. Instead looper.h defines events like LOOPER_EVENT_INPUT for
the events that it supports. That should help make any future
under-the-hood implementation changes easier.

Fixed a couple of compiler warnings along the way.

Change-Id: I449a7ec780bf061bdd325452f823673e2b39b6ae
nputDispatcher.cpp
35b48d10bc9e064201d3d54d2d476314684a7a05 14-Sep-2010 Mathias Agopian <mathias@google.com> Add logging of various important graphics events

There are 16 events logged in the event log:
SF_APP_DEQUEUE_BEFORE
SF_APP_DEQUEUE_AFTER
SF_APP_LOCK_BEFORE
SF_APP_LOCK_AFTER
SF_APP_QUEUE

SF_REPAINT
SF_COMPOSITION_COMPLETE
SF_UNLOCK_CLIENTS
SF_SWAP_BUFFERS
SF_REPAINT_DONE

SF_FB_POST_BEFORE
SF_FB_POST_AFTER
SF_FB_DEQUEUE_BEFORE
SF_FB_DEQUEUE_AFTER
SF_FB_LOCK_BEFORE
SF_FB_LOCK_AFTER

all events log the buffer conserned and a timestamp in microseconds.

by default the logging is not enabled, to turn it on:
adb shell service call SurfaceFlinger 1006 i31 1
adb shell setprop debug.graphic_log 1

The effect is immediate in SurfaceFlinger, but applications need to be
restarted.

Change-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1
ndroid.mk
ramebufferNativeWindow.cpp
raphicLog.cpp
a665ca805c7ecda89ef95658f4d1c09ba6bd7f2e 08-Sep-2010 Jeff Brown <jeffbrown@google.com> Input dispatcher ANR handling enhancements.

This change is essentially a rewrite of the main input dispatcher loop
with the target identification folded in. Since the input dispatcher now
has all of the window state, it can make better decisions about
when to ANR.

Added a .5 second deadline for processing app switch keys. This behavior
predates Gingerbread but had not previously been ported.

Fixed some timing inaccuracies in the ANR accounting that could cause
applications to ANR sooner than they should have.

Added a mechanism for tracking key and motion events that have been
dispatched to a window so that appropriate cancelation events can be
synthesized when recovering from ANR. This change helps to keep
applications in sync so they don't end up with stuck buttons upon
recovery from ANRs.

Added more comments to describe the tricky parts of PollLoop.

Change-Id: I13dffca27acb436fc383980db536abc4d8b9e6f1
nputDispatcher.cpp
nputManager.cpp
nputReader.cpp
61ce3982e1e5fd31f6e5b2be4d238b048a58f760 07-Sep-2010 Jeff Brown <jeffbrown@google.com> Fix key repeat delay.

Change-Id: I6216e082324ee29bf50e37acc673350ca5417c4d
nputDispatcher.cpp
af30ff6020990427e0e0e73e4ac4a85a6f26a8ff 02-Sep-2010 Jeff Brown <jeffbrown@google.com> Add support for secure views.

Added the MotionEvent.FLAG_WINDOW_IS_OBSCURED flag which is set by the
input manager whenever another visible window is partly or wholly obscured
the target of a touch event so that applications can filter touches
accordingly.

Added a "filterTouchesWhenObscured" attribute to View which can be used to
enable filtering of touches when the view's window is obscured.

Change-Id: I936d9c85013fd2d77fb296a600528d30a29027d2
nput.cpp
nputDispatcher.cpp
nputReader.cpp
nputTransport.cpp
ests/InputPublisherAndConsumer_test.cpp
774cf1baa17eeb76d4ad969266686df9b6248aaf 01-Sep-2010 Jeff Brown <jeffbrown@google.com> Remove incomplete input device enumeration NDK API.

Change-Id: I32de74ff5fcf0e29179a2aee03ddabd22fa485bb
nput.cpp
38a7fabd96566a229a276e7066ac1caf5157e127 30-Aug-2010 Jeff Brown <jeffbrown@google.com> Input device calibration and capabilities.

Finished the input device capability API.
Added a mechanism for calibrating touch devices to obtain more
accurate information about the touch contact area.
Improved pointer location to show new coordinates and capabilities.
Optimized pointer location display and formatting to avoid allocating large
numbers of temporary objects. The GC churn was causing the application to
stutter very badly when more than a couple of fingers were down).
Added more diagnostics.

Change-Id: Ie25380278ed6f16c5b04cd9df848015850383498
ventHub.cpp
nputDispatcher.cpp
nputReader.cpp
39f04ee5cfe996337971f7a393d430449ee72e03 23-Jun-2010 Sean McNeil <sean.mcneil@windriver.com> Only monitor recognized uevent devices.

system_server can potentially monitor uevent devices that are
of no use to it. For instance, an accelerometer implementation
as uevents. This would cause the process to be busy when
unnecessary. If a device cannot be classified, don't monitor it.

Change-Id: I489cc453bdce7cb376102cba67a9ea470e13292d
ventHub.cpp
385648ba93bf37b0b70c7e5de8b054f500b9d893 19-Aug-2010 Mathias Agopian <mathias@google.com> Merge "remove unused pixel format" into gingerbread
869347fc62bcb1f1e5ccdd403c952b21bc9b1ab7 19-Aug-2010 Jeff Brown <jeffbrown@google.com> Make the throttling more sensitive to end-to-end latency.

The code now takes into account the time when the event was generated.
So with a 60Hz throttling rate, it ensures that a motion event will not
be delayed due to throttling by any more than 1/60th of second past
the time it was generated.

Change-Id: Iaea1d4f76e79036b4a18873485230731c3cd63c3
nputDispatcher.cpp
c04cffd5703607f31356c26016b6e3ec971f6511 19-Aug-2010 Mathias Agopian <mathias@google.com> remove unused pixel format

Change-Id: I55bc3cc41385743c07f7e4de06335c922f746f73
ixelFormat.cpp
542412c8c96ee369e7bdc197a79a2d37c7f8e020 19-Aug-2010 Jeff Brown <jeffbrown@google.com> Add support for throttling motion events.

Change-Id: I24b3a17753e91ecda60a60fe5cd2e6b3260e033d
nputDispatcher.cpp
2e7a530242f56eaeb640a1ae83cf4ad256bf81dd 23-Jun-2010 Sean McNeil <sean.mcneil@windriver.com> Only monitor recognized uevent devices.

system_server can potentially monitor uevent devices that are
of no use to it. For instance, an accelerometer implementation
as uevents. This would cause the process to be busy when
unnecessary. If a device cannot be classified, don't monitor it.

Change-Id: Ib2c93105e7d746d9c1a7414bea8bab3fb8c0b70a
ventHub.cpp
36cb115c771d8724a49512d5f4def534c731992b 18-Aug-2010 Jeff Brown <jeffbrown@google.com> Merge "Fix some input device mapping bugs with certain drivers." into gingerbread
d64c855821457515d1da78dfac65af8306b53343 18-Aug-2010 Jeff Brown <jeffbrown@google.com> Fix some input device mapping bugs with certain drivers.

On single-touch devices, pointer up/down is signalled by a BTN_TOUCH
key event. Previously we handled BTN_TOUCH immediately but some drivers
may produce the sequence BTN_TOUCH, ABS_X, ABS_Y, SYN_REPORT on pointer down
which caused us to emit a bad initial pointer down location.
Now we wait for SYN_REPORT before reporting the up or down.

On multi-touch devices, pointer up can be signalled by as little as
the sequence SYN_MT_REPORT, SYN_REPORT. This change ensures that we
handle this case.

Added support for reading ABS_MT_PRESSURE when available.
Corrected mapping of touchMajor/touchMinor on single touch devices.
Minor code cleanup.

Change-Id: Ic7ec4811241ed85a06e59b8a839ca05180d491d4
nputReader.cpp
7dcaa584969253e32aec19d5bd40062704aaf95b 22-Jun-2010 Jens Gulin <jens.gulin@sonyericsson.com> Keep track of remaining fd when devices are removed

Sometimes the wrong fd was accessed when the device was addressed
by device id.

The earlier implementation assumed that two arrays were in sync
but one of them was compacted when devices were removed. Instead
of that dependency the device now keeps track of it's file descriptor.

Change-Id: Ib0f320603aafb07ded354bc3687de9759c9068f2
ventHub.cpp
827630744a5bf05d25c2fa1fb7c53b9ab2b94a69 18-Aug-2010 Jeff Brown <jeffbrown@google.com> Optimize EventHub reads.

Change-Id: Id7d09c0a6e5c741c1e29becd2b6560772c5ff372
ventHub.cpp
0cacb87f022cc2bfa6c3b40217f9b230628f3fd7 18-Aug-2010 Jeff Brown <jeffbrown@google.com> Fix possible race conditions during channel unregistration.

Previously, the input dispatcher assumed that the input channel's
receive pipe file descriptor was a sufficiently unique identifier for
looking up input channels in its various tables. However, it can happen
that an input channel is disposed and then a new input channel is
immediately created that reuses the same file descriptor. Ordinarily
this is not a problem, however there is a small opportunity for a race
to arise in InputQueue.

When InputQueue receives an input event from the dispatcher, it
generates a finishedToken that encodes the channel's receive pipe fd,
and a sequence number. The finishedToken is used by the ViewRoot
as a handle for the event so that it can tell the InputQueue when
the event has finished being processed.

Here is the race:

1. InputQueue receives an input event, assigns a new finishedToken.
2. ViewRoot begins processing the input event.
3. During processing, ViewRoot unregisters the InputChannel.
4. A new InputChannel is created and is registered with the Input Queue.
This InputChannel happens to have the same receive pipe fd as
the one previously registered.
5. ViewRoot tells the InputQueue that it has finished processing the
input event, passing along the original finishedToken.
6. InputQueue throws an exception because the finishedToken's receive
pipe fd is registered but the sequence number is incorrect so it
assumes that the client has called finish spuriously.

The fix is to include a unique connection id within the finishedToken so
that the InputQueue can accurately confirm that the token belongs to
the currently registered InputChannel rather than to an old one that
happened to have the same receive pipe fd. When it notices this, it
ignores the spurious finish.

I've also made a couple of other small changes to avoid similar races
elsewhere.

This patch set also includes a fix to synthesize a finished signal
when the input channel is unregistered on the client side to
help keep the server and client in sync.

Bug: 2834068
Change-Id: I1de34a36249ab74c359c2c67a57e333543400f7b
nputDispatcher.cpp
8d4dfd25f7329d0cdcc8dda8bdfadd7ebec3b3a4 11-Aug-2010 Jeff Brown <jeffbrown@google.com> Fix safe mode and KeyEvent.getMaxKeyCode().

Bug: 2901731
Change-Id: I78617c1b9dee3790fc590e5af4b5083368873184
nputReader.cpp
b51719b9ae719615d5ce66ad8a81395388ef9a5b 30-Jul-2010 Jeff Brown <jeffbrown@google.com> Improve thread safety of input mappers.

Also fixed bug where old touch screen size could be reported by
getMotionRange if an orientation change occurred but the user has not
yet touched the screen.

Bug: 2877345
Change-Id: I7878f47458f310ed6ebe6a5d1b2c9bec2c598ab9
nputReader.cpp
82de2fcdd021f0bc2b1c3239601333b8796631ca 29-Jul-2010 Jeff Brown <jeffbrown@google.com> Fix touch input in landscape mode.

Change-Id: I7d47e9b02e6443ed604a6bf842028a5db934d90d
nputReader.cpp
f67c53eee33d2a2296f269a504e11c90904b3d39 29-Jul-2010 Jeff Brown <jeffbrown@google.com> DO NOT MERGE: Fix input event injection ANRs on UI thread.

Added a new asynchronous injection mode and made the existing
synchronization mechanism more robust.

Change-Id: Ia4aa04fd9b75ea2461a844c5b7933c831c1027e6
nputDispatcher.cpp
nputManager.cpp
e57e8950804b08c80fb69df184b2f5af84ae103c 24-Jul-2010 Jeff Brown <jeffbrown@google.com> Refactor input reader to support new device types more easily.

Refactored the input reader so that each raw input protocol is handled
by a separate subclass of the new InputMapper type. This way, behaviors
pertaining to keyboard, trackballs, touchscreens, switches and other
devices are clearly distinguished for improved maintainability.

Added partial support for describing capabilities of input devices
(incomplete and untested for now, will be fleshed out in later commits).

Simplified EventHub interface somewhat since InputReader is taking over
more of the work.

Cleaned up some of the interactions between InputManager and
WindowManagerService related to reading input state.

Fixed swiping finger from screen edge into display area.

Added logging of device information to 'dumpsys window'.

Change-Id: I17faffc33e3aec3a0f33f0b37e81a70609378612
ndroid.mk
ventHub.cpp
nput.cpp
nputDevice.cpp
nputManager.cpp
nputReader.cpp
f26db0d6c55ff572f8772498c5d845ade7c6e8b8 17-Jul-2010 Jeff Brown <jeffbrown@google.com> Fix trackball down and movement bugs.

Bug: 2823788
Change-Id: Icb0c392b58f7e735614460b5eb87439cb73ac4f2
nputDispatcher.cpp
nputReader.cpp
3cf1c9b8443f8db238b0214a97defc09b7e6fc98 17-Jul-2010 Jeff Brown <jeffbrown@google.com> Fix individual pointer id up/down reporting.

Fix a minor threading bug in InputManager dump.

Change-Id: Ic2eecf7df5a8dc9f40561fcb03ebe58a2c073778
nputReader.cpp
0e8852766d2cc0ef82ed0846a4cae55ead01fdbf 16-Jul-2010 Dianne Hackborn <hackbod@google.com> Implement native key pre-dispatching to IMEs.

This significantly re-works the native key dispatching code to
allow events to be pre-dispatched to the current IME before
being processed by native code. It introduces one new public
API, which must be called after retrieving an event if the app
wishes for it to be pre-dispatched.

Currently the native code will only do pre-dispatching of
system keys, to avoid significant overhead for gaming input.
This should be improved to be smarted, filtering for only
keys that the IME is interested in. Unfortunately IMEs don't
currently provide this information. :p

Change-Id: Ic1c7aeec8b348164957f2cd88119eb5bd85c2a9f
nput.cpp
5c1ed84a2dec7efe914d0d1abb6834f8543fb9f1 15-Jul-2010 Jeff Brown <jeffbrown@google.com> Add support for new input sources.

Added several new coordinate values to MotionEvents to capture
touch major/minor area, tool major/minor area and orientation.

Renamed NDK input constants per convention.

Added InputDevice class in Java which will eventually provide
useful information about available input devices.

Added APIs for manufacturing new MotionEvent objects with multiple
pointers and all necessary coordinate data.

Fixed a bug in the input dispatcher where it could get stuck with
a pointer down forever.

Fixed a bug in the WindowManager where the input window list could
end up containing stale removed windows.

Fixed a bug in the WindowManager where the input channel was being
removed only after the final animation transition had taken place
which caused spurious WINDOW DIED log messages to be printed.

Change-Id: Ie55084da319b20aad29b28a0499b8dd98bb5da68
ventHub.cpp
nput.cpp
nputDevice.cpp
nputDispatcher.cpp
nputReader.cpp
nputTransport.cpp
ests/InputPublisherAndConsumer_test.cpp
a50ee3ecb377c69758254a0af9542bb64ecc5b71 15-Jul-2010 Jeff Brown <jeffbrown@google.com> Don't build framework tests for simulator target.

Change-Id: I70f29c7eb307e4f3ec5702f4eb9d97b4342e2f36
ests/Android.mk
48c347637124339a34aff53df40bbcb5b044ee6d 07-Jul-2010 Mathias Agopian <mathias@google.com> Remove the YV16 format for simplicity's sake.

Change-Id: Iee03d100933ba0c67b13d51e0435be3b4cd953cf
ixelFormat.cpp
ce838a265d9da5b4bd3a0c833b01db6dbaa623f5 14-Jul-2010 Dianne Hackborn <hackbod@google.com> IME events are now dispatched to native applications.

And also:

- APIs to show and hide the IME, and control its interaction with the app.
- APIs to tell the app when its window resizes and needs to be redrawn.
- API to tell the app the content rectangle of its window (to layout
around the IME or status bar).

There is still a problem with IME interaction -- we need a way for the
app to deliver events to the IME before it handles them, so that for
example the back key will close the IME instead of finishing the app.

Change-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd
nputTransport.cpp
8575a87b0d61d21c286321afdf193f4fac53d681 01-Jul-2010 Jeff Brown <jeffbrown@google.com> Add initial gamepad support.

Change-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9
ndroid.mk
ventHub.cpp
nput.cpp
nputDevice.cpp
nputDispatcher.cpp
nputReader.cpp
ests/InputPublisherAndConsumer_test.cpp
9147d11a5f1d50496908bb1f49996e3ad23e19cc 09-Jul-2010 Dianne Hackborn <hackbod@google.com> Add ANativeWindow API for directly drawing to the surface bits.

Also other cleanup and fixes:

- We now properly set the default window format to 565.
- New APIs to set the window format and flags from native code.
- Tweaked glue for simpler handling of the "destroy" message.
- Um, other stuff.

Change-Id: Id7790a21a2fa9a19b91854d225324a7c1e7c6ade
ect.cpp
3c5d125ed796dbecdd80fa2c03e04ff9b1d752e4 07-Jul-2010 Dianne Hackborn <hackbod@google.com> Add new glue code for writing native apps.

This factors out the boiler-plate code from the sample
app to a common glue code that can be used for everyone
writing this style of app: a dedicated app thread that
takes care of waiting for events and processing them.

As part of doing this, ALooper has a new facility to allow
registration of fds that cause ALooper_pollOnce() to return
the fd that has data, allowing the app to drive the loop
without callbacks. Hopefully this makes some people feel better. :)

Also do some other cleanup of the ALooper API, plus some
actual documentation.

Change-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8
nputDispatcher.cpp
f16c26dec9651628b0c130e2504e2cc911393aea 03-Jul-2010 Jeff Brown <jeffbrown@google.com> More native input dispatch work.

Removed old input dispatch code.
Refactored the policy callbacks.
Pushed a tiny bit of the power manager state down to native.
Fixed long press on MENU.
Made the virtual key detection and cancelation a bit more precise.

Change-Id: I5d8c1062f7ea0ab3b54c6fadb058c4d5f5a9e02e
nputDispatcher.cpp
nputReader.cpp
1764c73b5532c86648f01f0b2275410e78753b5a 02-Jul-2010 Mathias Agopian <mathias@google.com> remove unused YUV formats

Change-Id: Ie84616f842c7e0329d68e67e65a65d510558004b
ixelFormat.cpp
e12e3d7692cf370b8cbdb848da5201bfa0410afb 01-Jul-2010 Dianne Hackborn <hackbod@google.com> Merge "Introduce official public NativeWindow type." into gingerbread
05dedd17ec753ce8a791679c59504a33ad667f3c 01-Jul-2010 Mathias Agopian <mathias@google.com> Merge "fix live wallpapers on Droid" into gingerbread
a8f3e4e53cad835d0d57b85a6ce1b7416e95ba73 01-Jul-2010 Mathias Agopian <mathias@google.com> fix live wallpapers on Droid

On omap3 h/w we force opaque formats to RGB_565 instead of RGBX_8888
because the GL driver doesn't support it. RGBX_8888 is always remapped
to RGBA_8888.

Change-Id: I0bfabeb98c8d3a399079e6797cf2a0ee95915324
raphicBuffer.cpp
4b5e91e4820f03dba7dcc36e4b148331bc964b4b 30-Jun-2010 Dianne Hackborn <hackbod@google.com> Introduce official public NativeWindow type.

Not yet hooked up to anything in the NDK, but requires renaming
the existing android_native_window_t type everywhere.

Change-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e
ramebufferNativeWindow.cpp
c393eb6cf5f5685d4dc1ddaa04136475536acccf 30-Jun-2010 Jeff Brown <jeffbrown@google.com> Fix injection of specially intercepted keys like HOME.

This change mainly unwinds a premature optimization in the
dispatch pipeline.
To test HOME injection, run 'adb shell input keyevent 3'.

Change-Id: I1c4b7377c205da7c898014b8b07fc6dc1d46e4dd
nputReader.cpp
189ed23c1002054fdc06893e99d34a3617f24108 30-Jun-2010 Dianne Hackborn <hackbod@google.com> Implement default key handling for native code.

The native code now maintains a list of all keys that may use
default handling. If the app finishes one of these keys
without handling it, the key will be passed back off to Java
for default treatment.

Change-Id: I6a842a0d728eeafa4de7142fae573f8c11099e18
nput.cpp
4036f7f2b44351a8d964b5cdfdf7b787795cf041 30-Jun-2010 Jeff Brown <jeffbrown@google.com> Fix native input dispatch in the emulator.

Set a default orientation of ROTATION_0.
Added some more careful checks based on whether we have valid
absolute axis information from the driver.
Reset key repeating during configuration changes since the keyboard
device may have been removed.

Change-Id: I685960828acffcb17595fc5683309e8064a76714
nputDispatcher.cpp
nputReader.cpp
9c7f8186aea675628894b8f3844f83e791870859 29-Jun-2010 Dianne Hackborn <hackbod@google.com> Update native activity & event APIs to follow correct conventions.

Change-Id: Ie64fb3a9c68bc9c117fa5621b75d1f609e304e0e
nputTransport.cpp
50de30a5230dd15326f8bcbb4beaf617bca265e2 22-Jun-2010 Jeff Brown <jeffbrown@google.com> Native input event dispatching.

Target identification is now fully native.
Fixed a couple of minor issues related to input injection.
Native input enabled by default, can be disabled by setting
WindowManagerPolicy.ENABLE_NATIVE_INPUT_DISPATCH to false.

Change-Id: I7edf66ed3e987cc9306ad4743ac57a116af452ff
nputDispatcher.cpp
nputManager.cpp
nputReader.cpp
nputTransport.cpp
af997c49621558dc697247040b47c3bc10ca7094 22-Jun-2010 Jens Gulin <jens.gulin@sonyericsson.com> Keep track of remaining fd when devices are removed

Sometimes the wrong fd was accessed when the device was addressed
by device id.

The earlier implementation assumed that two arrays were in sync
but one of them was compacted when devices were removed. Instead
of that dependency the device now keeps track of it's file descriptor.

Change-Id: I2b8a793d76b89ab464ae830482b309fe86031671
ventHub.cpp
d974e0069778693234e3499eabc435d9045bb068 24-Jun-2010 Christopher Tate <ctate@google.com> Remember to initialize timestamps in the dispatch allocator

Change-Id: I83a2d353c34ff84a7d130e602c6dedc6a5541944
nputDispatcher.cpp
4d96bb6ae38466a04acfbcce61cb202786239927 19-Jun-2010 Dianne Hackborn <hackbod@google.com> First stab at attaching native event dispatching.

Provides the basic infrastructure for a
NativeActivity's native code to get an object representing
its event stream that can be used to read input events.

Still work to do, probably some API changes, and reasonable
default key handling (so that for example back will still
work).

Change-Id: I6db891bc35dc9683181d7708eaed552b955a077e
nput.cpp
nputTransport.cpp
3f3a74a53af9401ee3812e0faa37189467d81af8 22-Jun-2010 Mathias Agopian <mathias@google.com> remove unused YUV formats

Change-Id: Id0ae28b1700cf771cdbe0ca27b139d32cab90b2a
ixelFormat.cpp
b16fa651ddbd6189409aa053ff1ae73383ae5157 22-Jun-2010 Mathias Agopian <mathias@google.com> Merge "Added support for the GL_TEXTURE_EXTERNAL target" into gingerbread
51d45a710eff6da1749ae66ce9cab218144c388b 18-Jun-2010 Jeff Brown <jeffbrown@google.com> More native input event dispatching.

Added ANRs handling.
Added event injection.
Fixed a NPE ActivityManagerServer writing ANRs to the drop box.
Fixed HOME key interception.
Fixed trackball reporting.
Fixed pointer rotation in landscape mode.

Change-Id: I50340f559f22899ab924e220a78119ffc79469b7
nputDispatcher.cpp
nputManager.cpp
nputReader.cpp
f4a4ec2063dfd28e04bbfe712f67acee4bdc8e37 16-Jun-2010 Jeff Brown <jeffbrown@google.com> Even more native input dispatch work in progress.

Added more tests.
Fixed a regression in Vector.
Fixed bugs in pointer tracking.
Fixed a starvation issue in PollLoop when setting or removing callbacks.
Fixed a couple of policy nits.

Modified the internal representation of MotionEvent to be more
efficient and more consistent.

Added code to skip/cancel virtual key processing when there are multiple
pointers down. This helps to better disambiguate virtual key presses
from stray touches (such as cheek presses).

Change-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c
nput.cpp
nputDispatcher.cpp
nputReader.cpp
nputTransport.cpp
ests/Android.mk
ests/InputChannel_test.cpp
ests/InputDispatcher_test.cpp
ests/InputPublisherAndConsumer_test.cpp
0a91775c4df380d6a5b7f3ccad5127388ac01306 15-Jun-2010 Mathias Agopian <mathias@google.com> Added support for the GL_TEXTURE_EXTERNAL target

This will allow us to support YUV surfaces.

Change-Id: I2d4da75f1006a5285bdc552695d4caeecccf2183
ixelFormat.cpp
c10612c77abfb7755624970f99ae27c5910ca0fc 16-Jun-2010 Jeff Brown <jeffbrown@google.com> Merge "More work in progress on native events." into gingerbread
54bc281639e5ff6955d7a86104f6f21624941aca 15-Jun-2010 Jeff Brown <jeffbrown@google.com> More work in progress on native events.

Refactored the code to eliminate potential deadlocks due to re-entrant
calls from the policy into the dispatcher. Also added some plumbing
that will be used to notify the framework about ANRs.

Change-Id: Iba7a10de0cb3c56cd7520d6ce716db52fdcc94ff
nputDispatcher.cpp
nputManager.cpp
nputReader.cpp
f69280ef72f1adfcdb7bfef001e4935344c410c0 15-Jun-2010 Jeff Brown <jeffbrown@google.com> Support for multiple tests

The build system enforces some invariants that were being ignored
before.

Change-Id: Ie7675042af7f961a507386c13b2a0b592b591af8
ests/Android.mk
66d9df50dac51940156f121768aaeb9a25ef2179 14-Jun-2010 Jeff Brown <jeffbrown@google.com> Fix include paths.

Change-Id: Ifda45688f9f02710a74d5d7a7d902bacf1441e2e
nputDispatcher.cpp
nputReader.cpp
e839a589bf582568cf220c1040ed93b948e6e362 23-Apr-2010 Jeff Brown <jeffbrown@google.com> Native input dispatch rewrite work in progress.

The old dispatch mechanism has been left in place and continues to
be used by default for now. To enable native input dispatch,
edit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.

Includes part of the new input event NDK API. Some details TBD.

To wire up input dispatch, as the ViewRoot adds a window to the
window session it receives an InputChannel object as an output
argument. The InputChannel encapsulates the file descriptors for a
shared memory region and two pipe end-points. The ViewRoot then
provides the InputChannel to the InputQueue. Behind the
scenes, InputQueue simply attaches handlers to the native PollLoop object
that underlies the MessageQueue. This way MessageQueue doesn't need
to know anything about input dispatch per-se, it just exposes (in native
code) a PollLoop that other components can use to monitor file descriptor
state changes.

There can be zero or more targets for any given input event. Each
input target is specified by its input channel and some parameters
including flags, an X/Y coordinate offset, and the dispatch timeout.
An input target can request either synchronous dispatch (for foreground apps)
or asynchronous dispatch (fire-and-forget for wallpapers and "outside"
targets). Currently, finding the appropriate input targets for an event
requires a call back into the WindowManagerServer from native code.
In the future this will be refactored to avoid most of these callbacks
except as required to handle pending focus transitions.

End-to-end event dispatch mostly works!

To do: event injection, rate limiting, ANRs, testing, optimization, etc.

Change-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25
ndroid.mk
ventHub.cpp
nput.cpp
nputDispatcher.cpp
nputManager.cpp
nputReader.cpp
nputTransport.cpp
ests/Android.mk
ests/InputDispatcher_test.cpp
ests/region.cpp
ests/region/Android.mk
ests/region/region.cpp
579b3f88d03d06b897b778bd11818f5104677d1d 09-Jun-2010 Mathias Agopian <mathias@google.com> allow re-targetting of surfaces

Surfaces can now be parcelized and sent to remote
processes. When a surface crosses a process
boundary, it looses its connection with the
current process and gets attached to the new one.

Change-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0
raphicBuffer.cpp
b7e930db175c192464cebdeb49eb56cf6dd60114 02-Jun-2010 Mathias Agopian <mathias@google.com> split surface management from surface's buffers management

Change-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87
raphicBuffer.cpp
49753266d2219d2fbf5c33dc4626f299dffcdd76 13-Apr-2010 Mathias Agopian <mathias@google.com> fix a bug where fading in/out of opaque 32-bits windows wasn't working

opaque 32-bits windows are now allocated as RGBX_8888 buffers and
SurfaceFlinger always uses GL_MODULATE instead of trying to
optimize to GL_REPLACE when possible (makes no sense on
h/w accelerated GL).

we still have a small hack for devices that don't support
RGBX_8888 in their gralloc implementation where we revert to
RGBA_8888.
raphicBuffer.cpp
5629eb167638a9ebfa5059177d227c7ac67db46f 15-Apr-2010 Mathias Agopian <mathias@google.com> when a zero dimension buffer is allocated, turn the allocation into
a 1x1 buffer instead of Nx1 (or 1xN)

Change-Id: I27eeb15e83e13002dd9405f4e52b54f7dffc0fe7
raphicBufferAllocator.cpp
c8620b60d67390d2bd0fa0ce53cc63fc18c50244 25-Mar-2010 Mathias Agopian <mathias@google.com> fix [2545826] calling into gralloc with external lock held

Change-Id: I2d0e017382404c684c768a0dd0423d574213f10a
raphicBufferAllocator.cpp
55fa25161a7626ae6a15bc2cc46e22771455ed80 12-Mar-2010 Mathias Agopian <mathias@google.com> implement connect/disconnect in our native_window_t implementations

the framebuffer implementation doesn't do anything special with this
but the surfaceflinger implementation makes sure the surface is not used
by two APIs simultaneously.

Change-Id: Id4ca8ef7093d68846abc2ac814327cc40a64b66b
ramebufferNativeWindow.cpp
9855a0575efe1fbd5df662aee465b4c9a09c3871 05-Mar-2010 Christopher Tate <ctate@google.com> Calculate bitmask array sizes correctly in the EventHub

We've gotten lucky to date: the previous calculation of bitmask array
sizes, (maxval+1)/8 only works properly when 'maxval' is one less than
a multiple of 8. Fortunately, this has either been the case for us,
or there has been sufficient 'unused' space at the end of the defined
max value range that we haven't wound up overreading/overwriting the
allocated buffers.

Change-Id: I563a93a86644ab9f19489565e06c28e06bb53abc
ventHub.cpp
2032f98f8c6176be7819bd3bc4459a05542c5b85 05-Mar-2010 Christopher Tate <ctate@google.com> Fix #2489986 : The key bitmask needs to cover all possible keys

Change-Id: Ieebd2f879e6b6fbc0388655dd66f34be89e809a0
ventHub.cpp
71c3eb2a389ce405ea3286271422e2da52e828de 03-Mar-2010 Dianne Hackborn <hackbod@google.com> Maybe fix issue #2482201: Paired bluetooth device looks like a qwerty keyboard

We now only consider a device to be a default keyboard if its name
has "-keypad". A hack, but whatever.

Also add some debug logging for the input state to help identify such
issues in the future.
ventHub.cpp
98e71ddaede9a0bfb681fd237bec1f66c6c53193 12-Feb-2010 Mathias Agopian <mathias@google.com> remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).

Add a Flattenable interface to libutils which can be used to flatten
an object into bytestream + filedescriptor stream.
Parcel is modified to handle Flattenable. And GraphicBuffer implements
Flattenable.

Except for the overlay classes libui is now independent of libbinder.
raphicBuffer.cpp
b6121422ef641dc7317d1c3bf1d38b7d73922250 18-Feb-2010 Mathias Agopian <mathias@google.com> Remove a dependency of Region (libui) on Parcel (libbinder).
egion.cpp
3db21640519541141137166ce55627cf76e1974b 17-Feb-2010 Mathias Agopian <mathias@google.com> fix a bug I introduced recently where YUV formats would crash the system
ixelFormat.cpp
54ed4f6282bdea251455f39b978626026affdbef 17-Feb-2010 Mathias Agopian <mathias@google.com> get rid off the YUV formats at the libui layer
ixelFormat.cpp
9cce325fae8adcf7560a28eef394489f09bad74d 10-Feb-2010 Mathias Agopian <mathias@google.com> split libsurfaceflinger_client and libcamera_client out of libui
ndroid.mk
amera.cpp
ameraParameters.cpp
ramebufferNativeWindow.cpp
Camera.cpp
CameraClient.cpp
CameraService.cpp
Surface.cpp
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
ayerState.cpp
haredBufferStack.cpp
urface.cpp
urfaceComposerClient.cpp
1776e77c68971a72ca81b720c2074bae342d3f0a 10-Feb-2010 Wu-cheng Li <wuchengli@google.com> Merge "Remove some logs."
d5a4f1ff5bd519cf9b53af5c0a687f156bdf302a 10-Feb-2010 Wu-cheng Li <wuchengli@google.com> Remove some logs.
amera.cpp
Camera.cpp
a05c8227046081b2648b8150c1a716040eb08121 09-Feb-2010 Wu-cheng Li <wuchengli@google.com> Add exposure compensation parameter.

bug:2375993
ameraParameters.cpp
391f3f8b5e8f97e002cbbc6a7535cfd73a8d16b3 31-Jan-2010 Wu-cheng Li <wuchengli@google.com> Add float support for set and get in CameraParameters.

bug:2375989
bug:2375987
ameraParameters.cpp
077c40fee35f483df961c6a0746ee78b9d1c5a8f 27-Jan-2010 Wu-cheng Li <wuchengli@google.com> Add focal length and view angle API.

bug:2375989,2375987
ameraParameters.cpp
556a6fed124adf9494bd7e1702ce0f665220e998 27-Jan-2010 Chih-Chung Chang <chihchung@google.com> Merge "Add support for setting camera display orientation."
f091e833d339d344fbc4815bcc87ce97d8535cd8 23-Jan-2010 Chih-Chung Chang <chihchung@google.com> Add support for setting camera display orientation.
ameraParameters.cpp
1b5cf329eaecdcbf734feec3336ff029b2b8a264 26-Jan-2010 Nick Pelly <npelly@google.com> Revert "Fix failure to open AVRCP input device due to EPERM."

This reverts commit e6b1bbd8acca3f6e174c24cf4eb23a66db2d08a2.
ventHub.cpp
2b2c2e3a35287fdd9a292ab981d5708e2bbfe07c 26-Jan-2010 Nick Pelly <npelly@google.com> am 425324e9: am e834722f: Merge "Fix failure to open AVRCP input device due to EPERM." into eclair

Merge commit '425324e97bba75cd69bb6c81de6248529540e6fe'

* commit '425324e97bba75cd69bb6c81de6248529540e6fe':
Fix failure to open AVRCP input device due to EPERM.
88eeff5270991df178ee09ffda7ce5076c9a1e59 25-Jan-2010 Wu-cheng Li <wuchengli@google.com> Change key to KEY_SUPPORTED_JPEG_THUMBNAIL_SIZES for consistency.

bug:2375986
ameraParameters.cpp
519f29f5d8e097b3a35a650d92ed0ad07773c9e2 22-Jan-2010 Mathias Agopian <mathias@google.com> Merge "return an error when Surface::lock() is called while the surface is already locked."
9014726d8954a003323d65ba639b2544f8ecea2e 22-Jan-2010 Mathias Agopian <mathias@google.com> return an error when Surface::lock() is called while the surface is already locked.
urface.cpp
52e7200b6e020bba978c36e3a928493a3f2c8a92 22-Jan-2010 Chih-Chung Chang <chihchung@google.com> Add an orientation parameter for overlay, so we can do camera preview in portrait mode.
Surface.cpp
c81bb207c67e82f25c8ec15a533dbdc2435d83f7 21-Jan-2010 Nick Pelly <npelly@google.com> Fix failure to open AVRCP input device due to EPERM.

Sleep for 100us and try to open the input device again if it fails, with a
maximum of 10 attempts.

We need the retry logic because setting permissions on a new input device is
racy. The init process watches for new input device (via uevent) and sets the
permission on them in devices.c:make_device(). However at the same time
EventHub.cpp watches for new input devices from the system_server process, and
immediately tries to open them. I can't see a simple way to avoid this race
condition.

As best as I can tell this race condition has always exisited.
There must have been some timing change that happened recently that causes us
to hit this race condition much more often. See repro notes in referenced bug.

Bug: 2375632
ventHub.cpp
963abad79ae64dae9bf4c32bfb110d9e6314c857 14-Nov-2009 Mathias Agopian <mathias@google.com> fix some aspects of [2258746] native crash in launcher2

Surface::validate() could sometimes dereference a null pointer before checking it wasn't null.
This will prevent the application to crash when given bad parameters or used incorrectly.
However, the bug above probably has another cause.
urface.cpp
092fa4beaf6ca214d88f657a8b233ad0f3fd6a10 06-Nov-2009 Romain Guy <romainguy@android.com> Revert change incorrectly submitted as part of change #32153.

Change-Id: I31c52beff03c0d038a257fc151eff3b8da60eddc
ramebufferNativeWindow.cpp
471afca7fce7db8dfb4b59d10f9e699a6b951cb5 05-Nov-2009 Romain Guy <romainguy@android.com> Prevent crash in Home when using widgets whose ids collide with Home's
resources.

Bug #2228943.

Approved by mcleron, triaged by ryanpc.

Change-Id: Idf40f3b09502ae5d0d3b9a6a72c265a2de2ffca2
ramebufferNativeWindow.cpp
6fee064809068fe1a7da63d55678d9a222b0be15 03-Nov-2009 Mathias Agopian <mathias@google.com> fix[2228133] pixelflinger ignores the "vertical stride" leading to artifacts when playing back video

we lost the concept of vertical stride when moving video playback to EGLImage.
Here we bring it back in a somewhat hacky-way that will work only for the
softgl/mdp backend.
raphicBuffer.cpp
54ba51dff21de666c5ae3bf3abd4f0634ebb0676 27-Oct-2009 Mathias Agopian <mathias@google.com> fix [2143798] Need to figure out how to do video

Use EGLImageKHR instead of copybit directly.
We now have the basis to use streaming YUV textures (well, in fact
we already are). When/if we use the GPU instead of the MDP we'll
need to make sure it supports the appropriate YUV format.

Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported
raphicBuffer.cpp
38a7fa2ae37236952e5fb0186fddb4f6da5990d8 16-Oct-2009 Mathias Agopian <mathias@google.com> fix [2182249] [MR1] valgrind error in surface flinger
ests/region.cpp
d3144beec6acb37702629799a2adbeccc72ca222 07-Oct-2009 Mathias Agopian <mathias@google.com> fix [2170283] SurfaceFlinger crashes on OOM.

when running out of memory, a null handle is returned but the error code may not be set.
In that case we need to return NO_MEMORY instead of NO_ERROR, so that the calling code
won't try to dereference the null pointer.
urface.cpp
e700501d0e888ead9ac6456c0a6fd74d634aa5fb 08-Oct-2009 Mathias Agopian <mathias@google.com> fix [2170319] gmail bulk operation checkbox latency on passion

This also fixes [2152536] ANR in browser

When SF is enqueuing buffers faster than SF dequeues them.
The update flag in SF is not counted and under some situations SF will only
dequeue the first buffer. The state at this point is not technically
corrupted, it's valid, but just delayed by one buffer.

In the case of the Browser ANR, because the last enqueued buffer was delayed
the resizing of the current buffer couldn't happen.

The system would always fall back onto its feet if anything -else- in
tried to draw, because the "late" buffer would be picked up then.
ndroid.mk
haredBufferStack.cpp
urfaceComposerClient.cpp
urfaceFlingerSynchro.cpp
9ec430adaea1cb88eaa1e78c7f759cd42ab6cf7a 07-Oct-2009 Mathias Agopian <mathias@google.com> fix [2152536] ANR in browser

A window is created and the browser is about to render into it the
very first time, at that point it does an IPC to SF to request a new
buffer. Meanwhile, the window manager removes that window from the
list and the shared memory block it uses is marked as invalid.
However, at that point, another window is created and is given the
same index (that just go freed), but a different identity and resets
the "invalid" bit in the shared block. When we go back to the buffer
allocation code, we're stuck because the surface we're allocating for
is gone and we don't detect it's invalid because the invalid bit has
been reset.

It is not sufficient to check for the invalid bit, I should
also check that identities match.
haredBufferStack.cpp
urface.cpp
b26af23744fa73e8bc142b1eb98772fde5970c10 06-Oct-2009 Mathias Agopian <mathias@google.com> fix [2168531] have software-only gralloc buffer side-step the HAL
raphicBufferAllocator.cpp
raphicBufferMapper.cpp
3330b203039dea366d4981db1408a460134b2d2c 06-Oct-2009 Mathias Agopian <mathias@google.com> fix [2167050] glTexImage2D code path buggy in SurfaceFlinger

When EGLImage extension is not available, SurfaceFlinger will fallback to using
glTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an
extra copy. However this code path has never been exercised and had some bugs
which this patch fix.

Mainly the scale factor wasn't computed right when falling back on glDrawElements.
We also fallback to this mode of operation if a buffer doesn't have the adequate
usage bits for EGLImage usage.

This changes only code that is currently not executed. Some refactoring was needed to
keep the change clean. This doesn't change anything functionaly.
ndroid.mk
ufferMapper.cpp
raphicBuffer.cpp
raphicBufferAllocator.cpp
raphicBufferMapper.cpp
Surface.cpp
urface.cpp
urfaceBuffer.cpp
e6a550d02ff02f465d7dbb6e862671462866f024 29-Sep-2009 Wu-cheng Li <wuchengli@google.com> Add zoom functions and sendCommand.

b2060030
amera.cpp
Camera.cpp
0b3ad46a26dc3717260fa9347c77f673f3198606 03-Oct-2009 Mathias Agopian <mathias@google.com> Attempt to fix [2152536] ANR in browser

The ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable.
When it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return
immediately in the above case. For some reason, the surface here wasn't marked as NO_INIT.

This change makes the code more robust by always (irregadless or errors) setting the NO_INIT status
in all code paths where a surface is removed from the list.

Additionaly added more information in the logs, should this happen again.
haredBufferStack.cpp
urface.cpp
eb16a09f59022f9fd3f1d633204049bc4e96b0f9 28-Sep-2009 Wu-cheng Li <wuchengli@google.com> Change FLASH_MODE_VIDEO_LIGHT to FLASH_MODE_TORCH.
ameraParameters.cpp
cc6ce203be6784130c73e6f253981c7236cdcb68 23-Sep-2009 Wu-cheng Li <wuchengli@google.com> Add camera parameter key constants and documentation.
ameraParameters.cpp
dd3423c6247965bf67ea30c75e484a6f5d72b1a2 24-Sep-2009 Mathias Agopian <mathias@google.com> fix [2132563] stuck in boot animation (framebuffer_device_open: Failed to create flip chain)
urfaceComposerClient.cpp
a455793a8d068a06ae65e1e04170eb24851c0eb1 23-Sep-2009 Marco Nelissen <marcone@google.com> fbDev wasn't initialized of hw_get_module failed, but was then used anyway.
ramebufferNativeWindow.cpp
74faca212e2675aa55a30235c77cb6403471a4b9 18-Sep-2009 Mathias Agopian <mathias@google.com> Android side of the fix for [2121211] Sholes has stutter during animations

a new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to
ramebufferNativeWindow.cpp
86f7329080cbb6f70d56278b005c820f0360d84b 17-Sep-2009 Mathias Agopian <mathias@google.com> add basic time stats for surfaces lock time
haredBufferStack.cpp
68a6afeb26002961387573dd64dd0ea3816bdc91 16-Sep-2009 Mathias Agopian <mathias@google.com> fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer

Take 2. We needed to check that the usage flags are "good enough" as opposed to "the same".

This reverts commit 8f17a762fe9e9f31e4e86cb60ff2bfb6b10fdee6.
urface.cpp
3910f5467a344c54b3c39c45b820c184e31b449c 16-Sep-2009 Mathias Agopian <mathias@google.com> Revert "fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer"

This reverts commit 486aa963b63e20b7910e1004cebb4f0afabbd80f.
urface.cpp
d18afab9d6a89d14c5c583a7d976665af4765a6b 16-Sep-2009 Mathias Agopian <mathias@google.com> fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer
urface.cpp
00900eb35473530a5fc77f7bd3ac306b6dcf19cb 15-Sep-2009 Chih-Chung Chang <chihchung@google.com> Fix 2083478: Camera needs an auto-focus cancel API

Change-Id: I13bda991b32aee47e82b5cf9d43b3021c416a9a2
amera.cpp
Camera.cpp
c7d56010815b0e7104dfc1d4bba6d16cdcbffec4 15-Sep-2009 Mathias Agopian <mathias@google.com> make sure to update the tail pointer when undoing a dequeue
haredBufferStack.cpp
40d57996224a5c72fedfa80b6deb8f5a4935dc9a 12-Sep-2009 Mathias Agopian <mathias@google.com> fix [2111536] [FAST BLOCKER] Device is soft rebooted after ending the call through voice dialer
haredBufferStack.cpp
48d819a1315f7d1b5abfec9d4fd34fb5aed27b1d 11-Sep-2009 Mathias Agopian <mathias@google.com> fix [2112575] stuck on DequeueCondition for a surface that doesn't exist anymore

this also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer
haredBufferStack.cpp
b58b5d72d6877300fe39b2a30b4742c6f962833f 11-Sep-2009 Mathias Agopian <mathias@google.com> make sure conditions will return when the status of a surface is not NO_ERROR
haredBufferStack.cpp
e0a963b72ed7babf1ab21ffdfd9e2b93ae4fe63e 09-Sep-2009 Andy McFadden <fadden@android.com> Fix sim-eng build.

Appears to have been broken by:

commit 9779b221e999583ff89e0dfc40e56398737adbb3
Author: Mathias Agopian <mathias@google.com>
Date: Mon Sep 7 16:32:45 2009 -0700

fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly

For some reason we don't like to have "-lpthread" globally -- it's a no-op
on device builds, but required for many host tools and all sim binaries --
so adding the use of pthread calls requires adding the library explicitly.
ndroid.mk
cbb288bfe89f585bf48371bd31b2d4aafa32f32e 08-Sep-2009 Mathias Agopian <mathias@google.com> fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly

Rewrote SurfaceFlinger's buffer management from the ground-up.
The design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.

The main new feature is to be able to dequeue all buffers at once (very important when there are only two).

A client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.

The current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.

eg. Allowed sequence: DQ, DQ, LOCK, Q, LOCK, Q
eg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q
ndroid.mk
Surface.cpp
haredBufferStack.cpp
urface.cpp
urfaceBuffer.cpp
urfaceComposerClient.cpp
39bf918e21d8fd13ce5015517fabac255b01f409 02-Sep-2009 Dianne Hackborn <hackbod@google.com> Work on issue #2079167: Flickering issue across multiple UI

This addresses a few parts of the bug:

- There was a small issue in the window manager where we could show a window
too early before the transition animation starts, which was introduced
by the recent wallpaper work. This was the cause of the flicker when
starting the dialer for the first time.

- There was a much larger problem that has existing forever where moving
an application token to the front or back was not synchronized with the
application animation transaction. This was the cause of the flicker
when hanging up (now that the in-call screen moves to the back instead
of closing and we always have a wallpaper visible). The approach to
solving this is to have the window manager go ahead and move the app
tokens (it must in order to keep in sync with the activity manager), but
to delay the actual window movement: perform the movement to front when
the animation starts, and to back when it ends. Actually, when the
animation ends, we just go and completely rebuild the window list to
ensure it is correct, because there can be ways people can add windows
while in this intermediate state where they could end up at the wrong
place once we do the delayed movement to the front or back. And it is
simply reasuring to know that every time we finish a full app transition,
we re-evaluate the world and put everything in its proper place.

Also included in this change are a few little tweaks to the input system,
to perform better logging, and completely ignore input devices that do not
have any of our input classes. There is also a little cleanup of evaluating
configuration changes to not do more work than needed when an input
devices appears or disappears, and to only log a config change message when
the config is truly changing.

Change-Id: Ifb2db77f8867435121722a6abeb946ec7c3ea9d3
ventHub.cpp
07549f984d0088a5580caefeb5d40d0a39abcd0a 28-Aug-2009 Mike Lockwood <lockwood@android.com> EventHub: Fix file descriptor leak.

Signed-off-by: Mike Lockwood <lockwood@android.com>
ventHub.cpp
04bc12bd4316e2928134037cd0f81c6d8b2adcc8 22-Aug-2009 Mathias Agopian <mathias@google.com> fix [2070341] [FAST BLOCKER] can't successfully setup erc52
urface.cpp
1c97d2ebe1f035beabd90089bfc78326b73d7864 20-Aug-2009 Mathias Agopian <mathias@google.com> fix a bug that caused the PixelFormat viewed by Surface to be wrong.

what happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.
in particular this caused query(FORMAT) to return the requested format instead of the effective format.
SurfaceFlingerClient.cpp
urface.cpp
50517543d84446fc91fa65c60eda6d2e2724de10 20-Aug-2009 Mathias Agopian <mathias@google.com> fix [2063336] Surface.lockSurface throws IllegalArgumentException when out of memory
urface.cpp
ba5972ffdc7179dd9a387f22032eb18666d97917 15-Aug-2009 Mathias Agopian <mathias@google.com> make sure to update a surface's usage bits when it changes, instead of only the first time.

also fixed a few locking issues in Surface and commented how each member is protected.
urface.cpp
5221271375f361b84a6eeec3d7086f223997fbb3 12-Aug-2009 Mathias Agopian <mathias@google.com> second take, hopefully this time it doesn't break one of the builds: "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything."
ramebufferNativeWindow.cpp
Surface.cpp
urface.cpp
b2fd4665e66fe81969f1f07fd724c6f68dd8f7f1 12-Aug-2009 Fred Quintana <fredq@google.com> Revert "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything."

This reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.
ramebufferNativeWindow.cpp
Surface.cpp
urface.cpp
df37b62c62f8efd3b5a433f9b4d40d30cec13a31 11-Aug-2009 Mathias Agopian <mathias@google.com> SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.

This change makes SurfaceHolder.setType(GPU) obsolete (it's now ignored).
Added an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.
ramebufferNativeWindow.cpp
Surface.cpp
urface.cpp
8c12c7aec3fdbccfa8161c2c12131d590a9b5ce8 08-Aug-2009 Mathias Agopian <mathias@google.com> added EGLUtils::strerror
GLUtils.cpp
42db9dcea2e6b9f60f07a3e9e2d6fbc196082284 07-Aug-2009 Mathias Agopian <mathias@google.com> better error handling
GLUtils.cpp
ramebufferNativeWindow.cpp
f9694507ec07e3909f41dba051b1bdbdb66002d8 07-Aug-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 20365

* changes:
oops, EGLConfig of value zero may be valid
b97603dcf01792b3d5610ef9a8f0a4c9e1af8b02 07-Aug-2009 Mathias Agopian <mathias@google.com> oops, EGLConfig of value zero may be valid
GLUtils.cpp
b2001065b957bf0db2577c0877c4751097d627af 07-Aug-2009 Android (Google) Code Review <android-gerrit@google.com> Merge changes 20345,20346,20347

* changes:
update most gl tests to use EGLUtils
added two EGL helpers for selecting a config matching a certain pixelformat or native window type
added NATIVE_WINDOW_FORMAT attribute to android_native_window_t
6cf50a770dabd13cf5b72bb0a6fb9dd002c88db6 07-Aug-2009 Mathias Agopian <mathias@google.com> added two EGL helpers for selecting a config matching a certain pixelformat or native window type
ndroid.mk
GLUtils.cpp
6b1f41004fa48e96bab61f508867314261de660b 07-Aug-2009 Mathias Agopian <mathias@google.com> added NATIVE_WINDOW_FORMAT attribute to android_native_window_t
ramebufferNativeWindow.cpp
urface.cpp
34193b31681dcbadf0a629879ca004f561b1b149 06-Aug-2009 Iliyan Malchev <malchev@google.com> EventHub: pass the name of each input device up to Java

Signed-off-by: Iliyan Malchev <malchev@google.com>
ventHub.cpp
46078d997861dd18798d6cc91b3ca32820faf7c6 05-Aug-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 20133

* changes:
don't crash when SurfaceBuffer::writeToParcel is given a null argument
3eded949243c8d331190d3803b5c5c2bf2a058fc 05-Aug-2009 Mathias Agopian <mathias@google.com> don't crash when SurfaceBuffer::writeToParcel is given a null argument
urface.cpp
c591736c66cbd4320fc96573fda28bec2b4d4100 04-Aug-2009 Dianne Hackborn <hackbod@google.com> Finish implementation of multiple pointer support for MotionEvent.

The major things going on here:

- The MotionEvent API is now extended to included "pointer ID" information, for
applications to keep track of individual fingers as they move up and down.
PointerLocation has been updated to take advantage of this.

- The input system now has logic to generate MotionEvents with the new ID
information, synthesizing an identifier as new points are down and trying to
keep pointer ids consistent across events by looking at the distance between
the last and next set of pointers.

- We now support the new multitouch driver protocol, and will use that instead
of the old one if it is available. We do NOT use any finger id information
coming from the driver, but always synthesize pointer ids in user space.
(This is simply because we don't yet have a driver reporting this information
from which to base an implementation on.)

- Increase maximum number of fingers to 10. This code has only been used
with a driver that reports up to 2, so no idea how more will actually work.

- Oh and the input system can now detect and report physical DPAD devices.
ventHub.cpp
cf81c84e43eb33931b950fa2c9b4c6f51afe7197 31-Jul-2009 Mathias Agopian <mathias@google.com> be more robust when errors occur upon EGL surface creation (ie: don't crash)
urface.cpp
fa170f513338322102a200de7d1fd696e51d55c8 31-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 9287

* changes:
fixed some issues with the software renderer when surfaces are made current.
cb6b9041647b4f080324742eee5ce709960ff610 31-Jul-2009 Mathias Agopian <mathias@google.com> fixed some issues with the software renderer when surfaces are made current.

there was several issues:
- when a surface was made non-current, the last frame wasn't shown and the buffer could stay locked
- when a surface was made current the 2nd time, it would not dequeue a new buffer

now, queue/dequeue are done when the surface is made current.

for this to work, a new query() hook had to be added on android_native_window_t, it allows to retrieve some attributes of a window (currently only width and height).
ramebufferNativeWindow.cpp
urface.cpp
abcfe35781a10ab18470251f8e18661cd8ca2215 30-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 9070

* changes:
Adding resizeInput and setAttributes for overlay
69bdcb9b7b5089984bf474f30029fa024f519e47 30-Jul-2009 Mathias Agopian <mathias@google.com> Fix a debug statement in BufferMapper
ufferMapper.cpp
e56271109fe59e1c1f4958bdcdeb9a3a7f53eb28 25-Jul-2009 Benny Wong <Benny.Wong@motorola.com> Adding resizeInput and setAttributes for overlay
verlay.cpp
811fdfd9b7863ee4e6300500b9159d11878e1664 20-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 5892

* changes:
Hardware overlay support
24a7e04a62cbba05eb02a8d7b993273e8e6befaf 17-Jul-2009 Mike Lockwood <lockwood@android.com> EventHub: Compare name instead of id when excluding event input devices.

Signed-off-by: Mike Lockwood <lockwood@android.com>
ventHub.cpp
71f771570e1b5341048a6fbf82a7c57d885bd850 16-Jul-2009 Benny Wong <Benny.Wong@motorola.com> Hardware overlay support

Enable hardware overlay support for camera and video playback use cases
verlay.cpp
b441106276a9c5fcd47642aff8cda2a2039481c0 16-Jul-2009 Mike Lockwood <lockwood@android.com> EventHub: Add support for excluding devices from being opened by as a keyboard.

This will be used to avoid unnecessarily listening to data from sensors
that function as event devices.

Signed-off-by: Mike Lockwood <lockwood@android.com>
ventHub.cpp
c968c3a9c782eaf44a5772cd388e5c690e5be4f3 14-Jul-2009 Dianne Hackborn <hackbod@google.com> Implement virtual button support.

The kernel can now publish a property describing the layout of virtual
hardware buttons on the touchscreen. These outside of the display
area (outside of the absolute x and y controller range the driver
reports), and when the user presses on them a key event will be
generated rather than a touch event.

This also includes a number of tweaks to the absolute controller
processing to make things work better on the new screens. For
example, we now reject down events outside of the display area.

Still left to be done is the ability to cancel a key down event,
so the user can slide up from the virtual keys to the touch screen
without causing a virtual key to execute.
ventHub.cpp
14998596937791c8efdfd61411236a7c7f66c064 14-Jul-2009 Mathias Agopian <mathias@google.com> fix [1964315] crash in the surface.cpp while browsing
urface.cpp
9f1234e4600d343710635973f3296da7b39cd9a2 09-Jul-2009 Dave Sparks <davidsparks@android.com> resolved conflicts for merge of 04c7d0f8 to master
f72d640b7c7de40b4c5d83b69748535e4254c941 09-Jul-2009 Dave Sparks <davidsparks@android.com> Add timestamps to video frames to improve A/V sync.
Bug 1927069.
amera.cpp
CameraClient.cpp
72b0ffe4c3776b33844bb00b9be5693bddd391f9 07-Jul-2009 Mathias Agopian <mathias@google.com> should fix sim build
egion.cpp
0f7f88db2771ec6b08df1354f1d85290f93227d5 06-Jul-2009 Mathias Agopian <mathias@google.com> Merge commit 'goog/master' into merge_master
4361996a8c4a398d818da4ea453595a0a3404358 06-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> am c7396025: Merge change 6084 into donut

Merge commit 'c7396025e59524e7ef639fd86fc23123939ee91c'

* commit 'c7396025e59524e7ef639fd86fc23123939ee91c':
Return CAMERA_ERROR_SERVER_DIED to camera app when camera service dies (bug 1956726)
7303c6bf1a8b00a0e7d8165d774a1f259b4ccda9 03-Jul-2009 Mathias Agopian <mathias@google.com> get rid of references to MemoryDealer in SurfaceFlinger
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
urfaceComposerClient.cpp
16f3d35459a03bf7fad41df0a0d192d2c50a0594 02-Jul-2009 James Dong <jdong@google.com> Return CAMERA_ERROR_SERVER_DIED to camera app when camera service dies (bug 1956726)
amera.cpp
84d1f7a09827fe195dd08b647b8c5092d03516f7 02-Jul-2009 Mathias Agopian <mathias@google.com> Merge commit 'goog/master' into merge_master
cd998742c3b439eff94683e236c09c70c9729ecf 01-Jul-2009 Wu-cheng Li <wuchengli@google.com> am b8a10fe4: Allow setPreviewDisplay after startPreview.

Merge commit 'b8a10fe45657f2dcc50cae8a06805f8438a6937e'

* commit 'b8a10fe45657f2dcc50cae8a06805f8438a6937e':
Allow setPreviewDisplay after startPreview.
988fb62884c108e487a39ef03f0873f74525a9c8 23-Jun-2009 Wu-cheng Li <wuchengli@google.com> Allow setPreviewDisplay after startPreview.
amera.cpp
9f96145725ff3f265712d607d19078fb91a5c8ec 30-Jun-2009 Mathias Agopian <mathias@google.com> Region::makeBoundsSelf() efficiently turns a region to its bounds
egion.cpp
694fcc5d1d3505c034a2cb89b6150214e7cea0fd 26-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am c44989d6: Merge change 5350 into donut

Merge commit 'c44989d6c7bcc761fb37f54fd37aac2070ba8e5e'

* commit 'c44989d6c7bcc761fb37f54fd37aac2070ba8e5e':
move ui/Time.cpp to core/jni, since this is the only place it is used
a8664df810ad46ce33c0ea28d4e648c067112db8 25-Jun-2009 Mathias Agopian <mathias@google.com> move ui/Time.cpp to core/jni, since this is the only place it is used
ndroid.mk
ime.cpp
2ab55a4e31c37d74abdd85486e1f4045c7f708e2 25-Jun-2009 Mathias Agopian <mathias@google.com> make use of new eglGetRenderBufferANDROID extension to clean-up a bit a few hacks added recently
ramebufferNativeWindow.cpp
69029eb5abfaeb52716b84db89e32dc742551508 24-Jun-2009 Mathias Agopian <mathias@google.com> hack copybit back in for video playback on msm7k. we have h/w accelerated video again
ramebufferNativeWindow.cpp
4c4b387afb2e775fcac3b81a249bb7646515dffa 25-Jun-2009 Mathias Agopian <mathias@google.com> merge master in master_gl
de5b60b06254748e4593d6095277da45e44acf80 24-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am eaa89f74: Merge change 5172 into donut

Merge commit 'eaa89f74c04c0f10d5f3f8190b457087537bff2e'

* commit 'eaa89f74c04c0f10d5f3f8190b457087537bff2e':
Remove deprecated callback function support.
e193f7cd9eded002b5a74b8823be704c020be536 24-Jun-2009 Android (Google) Code Review <android-gerrit@google.com> am 3d7b8d1a: Merge change 5158 into donut

Merge commit '3d7b8d1aa6a362292f56defbe8fb2d5653f79282'

* commit '3d7b8d1aa6a362292f56defbe8fb2d5653f79282':
Use a ref-counted callback interface for Camera.
dc76f7bfa10a037ea0cc0f253022d8de7eefc691 24-Jun-2009 Dave Sparks <davidsparks@android.com> Remove deprecated callback function support.
This is the last of a 3-part change to modify the camera to use
a more streamlined callback interface. This change removes the
old code.
Bug 1884362
amera.cpp
bbbc7cb77efba3dd46e9d13fc22e81cff17c35d2 24-Jun-2009 Dave Sparks <davidsparks@android.com> Use a ref-counted callback interface for Camera.
This allows the camera service to hang onto the callback interface
until all callbacks have been processed. This prevents problems
where pending callbacks in binder worker threads are processed
after the Java camera object and its associated native resources
have been released.
Bug 1884362
amera.cpp
6457359fa5df7869d5881acee80b34dfc760a5bf 01-Jun-2009 Mathias Agopian <mathias@google.com> Merge commit 'goog/master' into merge_master
e0c322049ab2be291c1fc40f79702543d4e77934 01-Jun-2009 Mathias Agopian <mathias@google.com> get rid of utils.h
ventHub.cpp
1c4ec71612bae05467fedbbebce37f5330a2b18c 28-May-2009 Mathias Agopian <mathias@google.com> fix typo defining a singleton attrbutes for an object that is not a singleton -- no side effects, but useless
urface.cpp
bed9dd128dfbdc7d9dbca005078536dadc0b9359 28-May-2009 Mathias Agopian <mathias@google.com> make sure the Region code disallows constructs like "(a+b)=c;", which is somewhat meaningless.
egion.cpp
723ec00af46d1f95d69fe5af53e0a5d09f01a7d6 27-May-2009 Mathias Agopian <mathias@google.com> Merge commit 'goog/master' into merge_master

Conflicts:
include/ui/Rect.h
libs/ui/ISurfaceComposer.cpp
2787dddcd0a814aa4a90b9e8cc72c9c258c94854 27-May-2009 Android (Google) Code Review <android-gerrit@google.com> am 0c0ad39c: Merge change 2502 into donut

Merge commit '0c0ad39cd8eaa6de6b7f99cec3971bcc953461e0'

* commit '0c0ad39cd8eaa6de6b7f99cec3971bcc953461e0':
minor clean-up to Rect and Point.
35801cea5f301c0e1d7a93b15a8f73f98e6b1033 27-May-2009 Mathias Agopian <mathias@google.com> minor clean-up to Rect and Point.

- return "const" objects for overloaded operators to disallow constructs like: (a+b) = c;
- don't return references to non-static members, it's not always safe.
- Point.cpp was empty, so get rid of it
ndroid.mk
oint.cpp
ect.cpp
83c0446f27b9542d6c2e724817b2b2d8d1f55085 23-May-2009 Mathias Agopian <mathias@google.com> some work to try to reduce the code size of some native libraries

- make sure that all binder Bn classes define a ctor and dtor in their respective library.
This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.
This is also cleaner, should we want these ctor/dtor to do something one day.

- same change as above for some Bp classes and various other non-binder classes

- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.

- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere

- IBinder::getInterfaceDescriptor() now returns a "const String16&" instead of String16, which saves calls to String16 and ~String16

- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.
The cache makes BpBinder bigger, so we need to figure out if we need this method at all.
Camera.cpp
CameraClient.cpp
CameraService.cpp
Overlay.cpp
Surface.cpp
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
310f8da0c3122ed5419db8f12a6e98d3188325b2 22-May-2009 Mathias Agopian <mathias@google.com> merge master to master_gl
bdbf6b094d61f694f162a5a5279caededcb1f0a5 22-May-2009 Android (Google) Code Review <android-gerrit@google.com> am 69a6c3eb: Merge change 2292 into donut

Merge commit '69a6c3ebd46a8de0e896747757f364322c12608d'

* commit '69a6c3ebd46a8de0e896747757f364322c12608d':
split boot animation out of SurfaceFlinger
a1ecca920e15ce04fe56ebf4f1b52ba711f9eb2d 22-May-2009 Mathias Agopian <mathias@google.com> split boot animation out of SurfaceFlinger

Conflicts:

data/etc/platform.xml
SurfaceFlingerClient.cpp
a47f02afb1e1f2c4abd9379c13903a5dde89d354 22-May-2009 Mathias Agopian <mathias@google.com> change 2115 wasn't merged properly into master. this fixes that.

Merge change 2115 into donut

* changes:
bring the native_handle stuff back from master_gl

Conflicts:

libs/binder/Parcel.cpp
verlay.cpp
53f6f3c7998fca1a7e1eb277d0ee0fc556be3f35 20-May-2009 Mathias Agopian <mathias@google.com> bring the native_handle stuff back from master_gl
verlay.cpp
c5b2c0bf8007562536b822eb060fc54a01f8e08b 20-May-2009 Mathias Agopian <mathias@google.com> move libbinder's header files under includes/binder
amera.cpp
ventHub.cpp
Camera.cpp
CameraService.cpp
Overlay.cpp
Surface.cpp
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
ayerState.cpp
verlay.cpp
urface.cpp
urfaceComposerClient.cpp
urfaceFlingerSynchro.cpp
208059f67ed2dd9fa025e07fcb6954d3cb61c79e 19-May-2009 Mathias Agopian <mathias@google.com> checkpoint: split libutils into libutils + libbinder
ndroid.mk
20f68782a4ea71c6a977d7f87d8288d3daa265ec 11-May-2009 Mathias Agopian <mathias@google.com> Region now has its own implementation instead of relying on SkRegion, which allows us to break libui's dependency on libcorecg.
ndroid.mk
egion.cpp
urface.cpp
ests/Android.mk
ests/region.cpp
d717598616910b5454b56429dec3bfad2757bd52 15-May-2009 Mathias Agopian <mathias@google.com> Merge commit 'goog/master' into merge_master

Conflicts:
opengl/libagl/Android.mk
opengl/libs/Android.mk
opengl/libs/egl_impl.h
93b94584edb1c59037319d9bbf84881ccff9f66a 08-May-2009 Dave Sparks <davidsparks@android.com> Modify camera framework to use new streamlined binder interface.
This is the second half of bug 1837832. Modifies the camera client
and camera service to use the new binder interface. Removes the
old binder interface. There will be one more part to this change
to surface the undefined callbacks to the Java layer so that
partners can implement new features without having to touch the
stack.
amera.cpp
CameraClient.cpp
5958661507b39cd59e68e9bc2b54399af92847c4 08-May-2009 Mathias Agopian <mathias@google.com> Merge commit 'goog/master' into merge_master
1e16b13857809eaa9bd17fb60ac0a471dc92844b 08-May-2009 Mathias Agopian <mathias@google.com> add support for update-on-demand in SurfaceFlinger
ramebufferNativeWindow.cpp
9b35233ea511eab24aa15de5dc2e94b6f8ed081d 07-May-2009 Dave Sparks <davidsparks@android.com> Add new binder methods to camera client to support generic callbacks
This is the first step in a multi-step change to move from the old
specific callbacks to a generic callback. This will allow future
flexibility in the interface without requiring binder rewrites.
Bug 1837832
amera.cpp
CameraClient.cpp
aa8c0ff7a36b4840dcf3e72c9696b86d192c4314 06-May-2009 Mathias Agopian <mathias@google.com> get rid off unneeded flags
ramebufferNativeWindow.cpp
58a79f47457e9cae2f6880653b581fe3170b0b1f 06-May-2009 Mathias Agopian <mathias@google.com> move android_native_buffer_t declaration into its own private/ui/android_native_priv.h header, since user code should never have access to it.
ramebufferNativeWindow.cpp
7189c0054e29a66d945f5657c48d5ecf538ea511 06-May-2009 Mathias Agopian <mathias@google.com> move opengl/include/EGL/android_natives.h to include/ui/egl/android_natives.h and don't include it from egl.h

the android_native_ types are just forward declared in egl.h
ufferMapper.cpp
ramebufferNativeWindow.cpp
Surface.cpp
urface.cpp
21c59d0070fe24a8e04e52ce04d511a924a9932f 05-May-2009 Mathias Agopian <mathias@google.com> get rid of android_native_buffer_t::getHandle() and replace it with an handle field

this abstraction was not necessary. things are easier now.
urface.cpp
e71212ba5397387100a578d23b15862518a7a859 05-May-2009 Mathias Agopian <mathias@google.com> removed the "bits" attribute from android_native_buffer_t.

"bits" can never be trusted now that we need to call lock() on the handle to get the virtual address of the buffer.
urface.cpp
b2dd686d06a608ee40285b93bc0217cf26c2b035 05-May-2009 Mathias Agopian <mathias@google.com> minor clean-up in FramebufferNativeWindow
ramebufferNativeWindow.cpp
0926f50664c739eaee60341f8e8c694dc9a4f3eb 04-May-2009 Mathias Agopian <mathias@google.com> update surfaceflinger, libui and libagl to the new gralloc api

- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually.
- factor all the lock/unlock code in SurfaceBuffer.
- fixed "showupdate" so it works even when we don't have preserving eglSwapBuffers().
- improved the situation with the dirty-region and fixed a problem that caused GL apps to not update.
- make use of LightRefBase() where needed, instead of duplicating its implementation
- add LightRefBase::getStrongCount()
- renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp

- disabled copybits test, since it clashes with the new gralloc api

- Camera/Video will be fixed later when we rework the overlay apis
ndroid.mk
ufferMapper.cpp
GLNativeWindowSurface.cpp
ramebufferNativeWindow.cpp
egion.cpp
urface.cpp
7be3e5d2d8101a8f5e12bbdf650431a734f88eba 30-Apr-2009 Mathias Agopian <mathias@google.com> Merge commit 'goog/master' into merge_master

Conflicts:
libs/surfaceflinger/Layer.cpp
libs/surfaceflinger/SurfaceFlinger.cpp
opengl/libagl/egl.cpp
opengl/libs/EGL/egl.cpp
opengl/libs/GLES_CM/gl.cpp
opengl/libs/GLES_CM/gl_api.in
opengl/libs/gl_entries.in
opengl/libs/tools/glapigen
d2dc9ac87bbdbbe465a0a07b63843282fb28eee7 27-Apr-2009 James Dong <jdong@google.com> Bug fix(1807910): media recorder crash due to the use of locked camera object (last part)
- remove an unused Camera constructor
- add a check on the argument in Camera::create() method
amera.cpp
f1d8e87b09abf963cd5b6a026194c1940fadb7b4 21-Apr-2009 Mathias Agopian <mathias@google.com> a brand new MessageQueue for SurfaceFlinger.
urfaceFlingerSynchro.cpp
9f88afb013a7560bf1362d7999a4609e38d0ea77 17-Apr-2009 Mathias Agopian <mathias@google.com> Squashed commit of the following:

commit e5c24638f98162c3b75b4c67a16b510d38e31341
Author: Mathias Agopian <mathias@google.com>
Date: Fri Apr 17 14:09:03 2009 -0700

oops forgot this file.

commit 282642632d0cb12882eecf42e0fdfb2343275de1
Author: Mathias Agopian <mathias@google.com>
Date: Fri Apr 17 14:07:32 2009 -0700

use a helper macro for creating Singleton<>'s static attributes instances.
ufferMapper.cpp
urface.cpp
f1a5314076248a352915ae1a987725ae76cc8a22 23-Apr-2009 James Dong <jdong@google.com> Fix a media server crash (bug 1807910): part one
Add a factory method that creates a Camera object from a remote client

Next:
The changes in authordriver.cpp and android_camera_input.cpp will come.
and the constructor for Camera object will be removed.
amera.cpp
18d8446fe1596cd50561777e1d1a8c7b39c689f6 17-Apr-2009 Mathias Agopian <mathias@google.com> cleanup, remove unused fields. Also make sure that we don't systematically allocate a Surface in Surface.java if only a SurfaceControl is needed (Common case).
urface.cpp
01b766839e06c32540cef100e3a7710d12cf1eef 17-Apr-2009 Mathias Agopian <mathias@google.com> more splitting of Surface/SurfaceControl. Surface.java is now implemented in terms of Surface and SurfaceControl.

The WindowManager side of Surface.java holds a SurfaceControl, while the client-side holds a Surface. When the client is in the system process, Surface.java holds both (which is a problem we'll try to fix later).
urface.cpp
urfaceComposerClient.cpp
62185b7335e85211dc4d0e2003354eb3ea2e66ef 17-Apr-2009 Mathias Agopian <mathias@google.com> split Surface.cpp into Surface and SurfaceControl

SurfaceControl is used for controling the geometry of the surface (for the WM), while Surface is used to access the buffers (for SF's clients).
SurfaceFlingerClient now uses the SurfaceID instead of Surface*.

Currently Surface still has the SurfaceControl API and is implemented by calling into SurfaceControl.
urface.cpp
urfaceComposerClient.cpp
40b7f6e0433b89c27b2fe5a1c0c47f67b42eceb2 15-Apr-2009 Mathias Agopian <mathias@google.com> fix some issues with Surface's lifetime management.

To deal with Java's lack of destructors and delayed garbage collection, we used to duplicate Surface.cpp objects in some case; this caused some issues because Surface is supposed to be reference-counted and unique.
urface.cpp
4243e666213029a293935987c979831093fb0779 16-Apr-2009 Mathias Agopian <mathias@google.com> fix a rookie mistake causing Singleton<> to be a "multiton". Also improve the BufferMapper's debugging, but turn it off.

Squashed commit of the following:

commit 04e9cae7f806bd65f2cfe35c011b47a36773bbe5
Author: Mathias Agopian <mathias@google.com>
Date: Wed Apr 15 18:30:30 2009 -0700

fix and improve BufferMapper's tracking of mapped buffers.

commit 1a8deaed15811092b2349cc3c40cafb5f722046c
Author: Mathias Agopian <mathias@google.com>
Date: Wed Apr 15 00:52:02 2009 -0700

fix some bugs with the Singleton<> class. untested.

commit ed01cc06ad70cf640ce1258f01189cb1a96fd3a8
Author: Mathias Agopian <mathias@google.com>
Date: Tue Apr 14 19:29:25 2009 -0700

some work to debug the Singleton<> template.
ufferMapper.cpp
urface.cpp
8b765b7f5ea7f56963ea0e3141d043d20944dbcc 11-Apr-2009 Mathias Agopian <mathias@google.com> more debugging tools around BufferMapper
ufferMapper.cpp
076b1cc3a9b90aa5b381a1ed268ca0b548444c9b 10-Apr-2009 Mathias Agopian <mathias@google.com> Integrate from //sandbox/mathias/donut/...@145728

SurfaceFlinger rework for new EGL driver model support.
ndroid.mk
ufferMapper.cpp
GLDisplaySurface.cpp
GLNativeWindowSurface.cpp
Surface.cpp
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
verlay.cpp
urface.cpp
urfaceComposerClient.cpp
c08731e756868653d09d3e49b723706df3687070 28-Mar-2009 Mathias Agopian <> AI 143320: am: CL 143171 am: CL 142873 fix [1732012] Only show screen rotation animation when triggered by sensor
Original author: mathias
Merged from: //branches/cupcake/...
Original author: android-build
Merged from: //branches/donutburger/...

Automated import of CL 143320
SurfaceComposer.cpp
urfaceComposerClient.cpp
24fd77d44088011c88c55a5de459e75792bb2ecb 28-Mar-2009 Mathias Agopian <> AI 143171: am: CL 142873 fix [1732012] Only show screen rotation animation when triggered by sensor
Original author: mathias
Merged from: //branches/cupcake/...

Automated import of CL 143171
SurfaceComposer.cpp
urfaceComposerClient.cpp
c1992a6f7551e22f14bb3fb92f1bd0b074cdac32 26-Mar-2009 Dianne Hackborn <> Automated import from //branches/donutburger/...@142727,142727
ventHub.cpp
c3aa00b29fd9ab9b06a2bd675dac404970acb477 26-Mar-2009 Dianne Hackborn <> Automated import from //branches/master/...@142771,142771
ventHub.cpp
edbf3b6af777b721cd2a1ef461947e51e88241e1 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ndroid.mk
amera.cpp
ameraParameters.cpp
GLDisplaySurface.cpp
GLNativeWindowSurface.cpp
ventHub.cpp
ventRecurrence.cpp
Camera.cpp
CameraClient.cpp
CameraService.cpp
Overlay.cpp
Surface.cpp
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
eyLayoutMap.h
ayerState.cpp
ODULE_LICENSE_APACHE2
OTICE
verlay.cpp
ixelFormat.cpp
oint.cpp
ect.cpp
egion.cpp
urface.cpp
urfaceComposerClient.cpp
urfaceFlingerSynchro.cpp
ime.cpp
d5193d9394c5e58176d7bcdf50ef017f8a3b9e1e 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ndroid.mk
amera.cpp
ameraParameters.cpp
GLDisplaySurface.cpp
GLNativeWindowSurface.cpp
ventHub.cpp
ventRecurrence.cpp
Camera.cpp
CameraClient.cpp
CameraService.cpp
Overlay.cpp
Surface.cpp
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
eyLayoutMap.h
ayerState.cpp
ODULE_LICENSE_APACHE2
OTICE
verlay.cpp
ixelFormat.cpp
oint.cpp
ect.cpp
egion.cpp
urface.cpp
urfaceComposerClient.cpp
urfaceFlingerSynchro.cpp
ime.cpp
43aa2b1cbf7a03e248e10f4d0fec0463257cd52d 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
amera.cpp
0bb03408de8886e8d17013219967d42fb9c8cf8c 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
amera.cpp
ac65e0b172b33f7e068c14e3d95678fa20205577 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
Surface.cpp
a6938bab1f6fa76ae98ebbe44f4e534e05fa0993 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
amera.cpp
ameraParameters.cpp
GLDisplaySurface.cpp
GLNativeWindowSurface.cpp
ventHub.cpp
Camera.cpp
CameraClient.cpp
Surface.cpp
verlay.cpp
ixelFormat.cpp
5f78a48bb8f7714ee231fca67d60fad77bc1cad9 20-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127101
amera.cpp
verlay.cpp
8a7a67538a9977c892389bfcde76a8372aa0b56c 16-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@126645
ndroid.mk
ventHub.cpp
Surface.cpp
verlay.cpp
276293246ea9cbc0a578a7697cc48930376ec0e9 10-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@125939
amera.cpp
Camera.cpp
Overlay.cpp
Surface.cpp
verlay.cpp
egion.cpp
e09fd9e819c23dc90bca68375645e15544861330 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
ndroid.mk
litHardware.cpp
amera.cpp
GLDisplaySurface.cpp
GLNativeWindowSurface.cpp
ventHub.cpp
Camera.cpp
CameraClient.cpp
Overlay.cpp
Surface.cpp
SurfaceFlingerClient.cpp
verlay.cpp
urface.cpp
ime.cpp
7c1b96a165f970a09ed239bb4fb3f1b0d8f2a407 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
ndroid.mk
litHardware.cpp
amera.cpp
ameraParameters.cpp
GLDisplaySurface.cpp
GLNativeWindowSurface.cpp
ventHub.cpp
ventRecurrence.cpp
Camera.cpp
CameraClient.cpp
CameraService.cpp
Surface.cpp
SurfaceComposer.cpp
SurfaceFlingerClient.cpp
eyCharacterMap.cpp
eyLayoutMap.cpp
eyLayoutMap.h
ayerState.cpp
ODULE_LICENSE_APACHE2
OTICE
ixelFormat.cpp
oint.cpp
ect.cpp
egion.cpp
urface.cpp
urfaceComposerClient.cpp
urfaceFlingerSynchro.cpp
ime.cpp