1389 Commits

Author SHA1 Message Date
Jeff Brown
cc2e717f1d Optimize EventHub reads.
Change-Id: Id7d09c0a6e5c741c1e29becd2b6560772c5ff372
2010-08-17 19:40:26 -07:00
Jeff Brown
2cbecea4c9 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
2010-08-17 17:03:42 -07:00
Jean-Baptiste Queru
6525fca692 resolved conflicts for merge of be50507b to gingerbread-plus-aosp
Change-Id: Iaa5fb62f7b82b488bca192e7f374c044c7e1e6a7
2010-08-17 09:01:26 -07:00
Jean-Baptiste Queru
be50507bae Merge "Keep track of remaining fd when devices are removed" 2010-08-17 07:49:54 -07:00
Kenny Root
80328ba096 am 8ea71511: Merge "Initial tool for OBB manipulation" into gingerbread
Merge commit '8ea71511c64e61fe23004889ff7032f991a751c8' into gingerbread-plus-aosp

* commit '8ea71511c64e61fe23004889ff7032f991a751c8':
  Initial tool for OBB manipulation
2010-08-11 14:10:26 -07:00
Kenny Root
6e7ac5f0bc Initial tool for OBB manipulation
Add "obbtool" host command for adding, removing, and querying Opaque
Binary Blob (OBB) information from a file.

Change-Id: Id2ac41e687ad2a500c362616d6738a8ae7e8f5c3
2010-08-11 11:24:41 -07:00
Dianne Hackborn
679ac09a5c am a5ae50cd: Merge "More native work." into gingerbread
Merge commit 'a5ae50cd838b5725c63ed485292aae4edd1a98cb' into gingerbread-plus-aosp

* commit 'a5ae50cd838b5725c63ed485292aae4edd1a98cb':
  More native work.
2010-08-11 00:47:51 -07:00
Dianne Hackborn
08d5b8fad8 More native work.
Implement save/restore of state, and add native APIs for
configuration information.

Change-Id: I2a3ddc2ba605db58d7c8b2b31b9215fb323f90b5
2010-08-11 00:29:59 -07:00
Jeff Brown
95105f3c25 am c3fc2d03: Fix safe mode and KeyEvent.getMaxKeyCode().
Merge commit 'c3fc2d03d58a258c53c9265a70143d4af076b764' into gingerbread-plus-aosp

* commit 'c3fc2d03d58a258c53c9265a70143d4af076b764':
  Fix safe mode and KeyEvent.getMaxKeyCode().
2010-08-10 16:33:47 -07:00
Jeff Brown
c3fc2d03d5 Fix safe mode and KeyEvent.getMaxKeyCode().
Bug: 2901731
Change-Id: I78617c1b9dee3790fc590e5af4b5083368873184
2010-08-10 16:28:03 -07:00
Kenny Root
d7ce227bcb am 818490ab: Fix String8::operator+
Merge commit '818490ab2abe36dfc6c13d01fea5220bd64cca8c' into gingerbread-plus-aosp

* commit '818490ab2abe36dfc6c13d01fea5220bd64cca8c':
  Fix String8::operator+
2010-08-06 18:53:48 -07:00
Kenny Root
818490ab2a Fix String8::operator+
The LHS was ignored when using:
  String8 + String8
  String8 + (const char*)

Add unit tests for above.

Bug: 2898473
Change-Id: Ic8fe7be668b665c36aaaa3fc3c3ffdfff0fbba25
2010-08-06 09:00:10 -07:00
Kenny Root
aec3e36fd4 am 2d817f75: Free scanBuf in ZipFileRO
Merge commit '2d817f75969cf3942ae3bcb9d194b9c095288dc7' into gingerbread-plus-aosp

* commit '2d817f75969cf3942ae3bcb9d194b9c095288dc7':
  Free scanBuf in ZipFileRO
2010-08-04 17:04:29 -07:00
Kenny Root
2d817f7596 Free scanBuf in ZipFileRO
In the success case, the 65kB scanBuf was not freed!

Also, get rid of annoying complaints about ssize_t from printf in error
cases.

Change-Id: If154ac19bf47637f898b4ec8c8e27c9a073a7b81
2010-08-04 16:53:56 -07:00
Jeff Brown
3b724c836b am 00e5c613: Merge "Improve thread safety of input mappers." into gingerbread
Merge commit '00e5c61366d3d3d62c259277823ea15a14f68ad4' into gingerbread-plus-aosp

* commit '00e5c61366d3d3d62c259277823ea15a14f68ad4':
  Improve thread safety of input mappers.
2010-07-30 14:49:43 -07:00
Jeff Brown
00e5c61366 Merge "Improve thread safety of input mappers." into gingerbread 2010-07-30 14:48:25 -07:00
Jeff Brown
6328cdc89e 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
2010-07-30 14:43:58 -07:00
Jean-Baptiste Queru
154a320069 resolved conflicts for merge of 27eecb70 to gingerbread
Change-Id: If064f2f4950fc1a4ff38e6927fe2120af76b26f1
2010-07-30 12:08:31 -07:00
Mathias Agopian
0251385553 am 050b5624: Added SensorManager.getMinDelay()
Merge commit '050b56244ff46d43e4886018d7cd20f0b1dc02b9' into gingerbread-plus-aosp

* commit '050b56244ff46d43e4886018d7cd20f0b1dc02b9':
  Added SensorManager.getMinDelay()
2010-07-29 18:20:51 -07:00
Mathias Agopian
050b56244f Added SensorManager.getMinDelay()
Exposed the new "min delay" sensor property through native and
java sensor apis. This allows the caller to know what is the
maximum rate at which a sensor can return events, or, if a sensor
works in "update" mode (events returned only when the value changes).

Also augmented SensorManager.regusterSensorEvent() so that it can
accept a value in microsecond in addition to the 4 constants already
defined.

Change-Id: If425e9979892666df8c989d7de3c362230fa19e0
2010-07-29 18:18:00 -07:00
Jean-Baptiste Queru
0c51c98fd9 am 4506c62a: fix inaccurate copyrights
Merge commit '4506c62abd5767d6d42a97e8e87793a1b3bcb625' into gingerbread-plus-aosp

* commit '4506c62abd5767d6d42a97e8e87793a1b3bcb625':
  fix inaccurate copyrights
2010-07-29 17:52:09 -07:00
Jean-Baptiste Queru
83407b993f fix inaccurate copyrights
Change-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd
2010-07-29 17:41:35 -07:00
Jean-Baptiste Queru
4506c62abd fix inaccurate copyrights
Change-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd
2010-07-29 17:35:37 -07:00
Christopher Tate
06abd0a6a8 am 571180c4: Merge "Attempt to fix the SDK build" into gingerbread
Merge commit '571180c4c72e0bb4f930f8971edf000a652f10f6' into gingerbread-plus-aosp

* commit '571180c4c72e0bb4f930f8971edf000a652f10f6':
  Attempt to fix the SDK build
2010-07-29 13:58:00 -07:00
Christopher Tate
571180c4c7 Merge "Attempt to fix the SDK build" into gingerbread 2010-07-29 13:53:37 -07:00
Christopher Tate
466b22b76e Attempt to fix the SDK build
On the assumption that the local min() function declaration is in
conflict with some 'min' #define floating around, rename the local
function to min_of().

Change-Id: I62aa27f213c6093cc78805de611cf4aa75f0eef2
2010-07-29 13:42:45 -07:00
Jeff Brown
9c7054119a am aab985b9: Fix touch input in landscape mode.
Merge commit 'aab985b951c4cf5ec2753ffbec516164b3c03c3a' into gingerbread-plus-aosp

* commit 'aab985b951c4cf5ec2753ffbec516164b3c03c3a':
  Fix touch input in landscape mode.
2010-07-29 13:13:38 -07:00
Jeff Brown
b0a57502c6 am 6ec402b5: DO NOT MERGE: Fix input event injection ANRs on UI thread.
Merge commit '6ec402b5ae33c8927694d8522b4cc6a5c8ba974e' into gingerbread-plus-aosp

* commit '6ec402b5ae33c8927694d8522b4cc6a5c8ba974e':
  DO NOT MERGE: Fix input event injection ANRs on UI thread.
2010-07-29 13:09:07 -07:00
Jeff Brown
aab985b951 Fix touch input in landscape mode.
Change-Id: I7d47e9b02e6443ed604a6bf842028a5db934d90d
2010-07-29 13:05:52 -07:00
Jeff Brown
6ec402b5ae 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
2010-07-29 12:54:27 -07:00
Chris Tate
4dc8ead1b4 am 7b40518e: Merge "Change unistd.h to stddef.h to be correct" into gingerbread
Merge commit '7b40518e56a3238b28b24a786a2ff22d5a425765' into gingerbread-plus-aosp

* commit '7b40518e56a3238b28b24a786a2ff22d5a425765':
  Change unistd.h to stddef.h to be correct
2010-07-28 18:16:14 -07:00
Chris Tate
7b40518e56 Merge "Change unistd.h to stddef.h to be correct" into gingerbread 2010-07-28 18:14:51 -07:00
Kenny Root
a4879bad70 Change unistd.h to stddef.h to be correct
size_t should be defined through inclusion of stddef.h instead of unistd.h

Change-Id: Ieaadacfca1e1c44c2533ea95f73fc060c1519b52
2010-07-28 16:46:12 -07:00
Kenny Root
47cf709aa3 am 8c5d9430: Merge "Add unistd.h for size_t typedef to fix sim-eng" into gingerbread
Merge commit '8c5d9430d2f029be0c1100f7b3c38a2fb9fe99b6' into gingerbread-plus-aosp

* commit '8c5d9430d2f029be0c1100f7b3c38a2fb9fe99b6':
  Add unistd.h for size_t typedef to fix sim-eng
2010-07-28 16:39:52 -07:00
Kenny Root
8c5d9430d2 Merge "Add unistd.h for size_t typedef to fix sim-eng" into gingerbread 2010-07-28 16:37:20 -07:00
Mathias Agopian
9362ea760f am 9f2a91bc: Merge "fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once." into gingerbread
Merge commit '9f2a91bc2b01c2cc60f73a0bae673225fdddec09' into gingerbread-plus-aosp

* commit '9f2a91bc2b01c2cc60f73a0bae673225fdddec09':
  fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once.
2010-07-28 16:33:23 -07:00
Kenny Root
9d90ed71cc Add unistd.h for size_t typedef to fix sim-eng
Change-Id: Ida4f1742547f39539b601f13182c722aa7cf863e
2010-07-28 16:31:24 -07:00
Mathias Agopian
9f2a91bc2b Merge "fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once." into gingerbread 2010-07-28 16:30:56 -07:00
Christopher Tate
1de9f490b5 am bae6fe24: Merge "Support streaming of compressed assets > 1 megabyte" into gingerbread
Merge commit 'bae6fe242ff9a97840ff0c5d9d87c0575d261682' into gingerbread-plus-aosp

* commit 'bae6fe242ff9a97840ff0c5d9d87c0575d261682':
  Support streaming of compressed assets > 1 megabyte
2010-07-28 15:38:38 -07:00
Christopher Tate
bae6fe242f Merge "Support streaming of compressed assets > 1 megabyte" into gingerbread 2010-07-28 15:36:48 -07:00
Christopher Tate
b100cbf178 Support streaming of compressed assets > 1 megabyte
Compressed assets larger than one megabyte are now decompressed on demand
rather than being decompressed in their entirety and held in memory.  Reading
the data in order is relatively efficient, as is seeking forward in the stream.
Seeking backwards is supported, but requires reprocessing the compressed data
from the beginning, so is very inefficient.

In addition, the size limit on compressed assets has been eliminated.

Change-Id: I6e68247957e6c53e7e8ba70d12764695f1723bad
2010-07-28 15:33:28 -07:00
Jeff Brown
9795a25da0 am 6d0fec2d: Refactor input reader to support new device types more easily.
Merge commit '6d0fec2de3601821f4f44eeb7d7deedebb2b7117' into gingerbread-plus-aosp

* commit '6d0fec2de3601821f4f44eeb7d7deedebb2b7117':
  Refactor input reader to support new device types more easily.
2010-07-28 14:25:05 -07:00
Jeff Brown
6d0fec2de3 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
2010-07-28 14:16:15 -07:00
Mathias Agopian
51c70e3e41 fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once.
this situation happened when the last buffer needed to be resized
(or allocated, the first time). the assumption was that the buffer
was in use by SF itself as the current buffer (obviously, this
assumption made no sense when the buffer had never been allocated, btw).

the system would wait until some other buffer became the "front" buffer.

we fix this problem by entirely removing the requirement that the
buffer being resized cannot be the front buffer. instead, we just
allocate a new buffer and replace the front buffer by the new one.

the downside is that this uses more memory (an extra buffer) for a
brief amount of time while the old buffer is being reallocated and
before it has actually been replaced.

Change-Id: I022e4621209474ceb1c671b23deb4188eaaa7285
2010-07-27 20:11:35 -07:00
Brad Fitzpatrick
245cb7846c am 84c924a6: Merge "Replace several IPCThreadState::get() lookups with one." into gingerbread
Merge commit '84c924a6c53cb63ca018013c9fda0077413d0005' into gingerbread-plus-aosp

* commit '84c924a6c53cb63ca018013c9fda0077413d0005':
  Replace several IPCThreadState::get() lookups with one.
2010-07-27 14:02:01 -07:00
Brad Fitzpatrick
7bcad8a315 Replace several IPCThreadState::get() lookups with one.
Also, make StrictMode's ThreadLocal final.

Change-Id: I08d400ed254fa67bb7a3dae1227f205a54c00df0
2010-07-27 12:28:57 -07:00
Mathias Agopian
1db0e88e60 am 4782cdbb: Merge "Fix a memory corruption when writting Sensor into a parcel" into gingerbread
Merge commit '4782cdbbbe4b2c7714af1fb6cdc4f52f1d1d20d7' into gingerbread-plus-aosp

* commit '4782cdbbbe4b2c7714af1fb6cdc4f52f1d1d20d7':
  Fix a memory corruption when writting Sensor into a parcel
2010-07-22 20:09:09 -07:00
Mathias Agopian
b54a3c9580 Fix a memory corruption when writting Sensor into a parcel
Change-Id: I03f703ae2224f43924031bfea4c68aa979bb9f05
2010-07-22 18:57:41 -07:00
Mathias Agopian
6d6b749b24 move native services under services/
moved surfaceflinger, audioflinger, cameraservice

all native services should now reside in this location.

Change-Id: Icd7336f7289db35df9c8c1857a5122bb8a6f1c86
2010-07-22 15:28:19 -07:00
Mathias Agopian
1f2ec4070a am 23e8de26: propagate sensor event rate properly
Merge commit '23e8de26b7b3d04daf08526f314c2fdd2f8fee65' into gingerbread-plus-aosp

* commit '23e8de26b7b3d04daf08526f314c2fdd2f8fee65':
  propagate sensor event rate properly
2010-07-21 16:12:28 -07:00