Commit Graph

489 Commits

Author SHA1 Message Date
Jeff Brown
00fa7bdd69 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
2010-07-03 19:23:01 -07:00
Dianne Hackborn
3c80a4a044 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
2010-06-30 10:49:40 -07:00
Jeff Brown
349703effc 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
2010-06-28 19:10:54 -07:00
Dianne Hackborn
1e4b9f3936 Remove InputConsumer, replacing with InputQueue.
Change-Id: Ib06907278457aaee842b123adc072840ca3602d8
2010-06-23 14:37:30 -07:00
Adam Powell
110486f932 Fix a bug where requestDisallowInterceptTouchEvent does not get called
when scrolling is resumed after stopping a fling.

Change-Id: I6796c5082cb81b3116de5baf1f27fe3addb40d00
2010-06-22 17:14:44 -07:00
Dianne Hackborn
a95e4cb62f 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
2010-06-22 11:21:50 -07:00
Daniel Sandler
613dde4aa6 Revised "immersive mode" API.
No longer a window bit, FLAG_IMMERSIVE is now set on
ActivityInfo.flags and in the Activity's manifest as
android:immersive="true" (ActivityInfo).

[An "immersive" activity is one that wishes to avoid being
paused by full-screen notifications (like an incoming call).
An activity that sets FLAG_IMMERSIVE/android:immersive is
sending a signal to the notification manager, status bar,
etc. that they should try to find some other way to get the
user's attention in high-priority situations.]

[Originally: change Ie290c2e.]

Change-Id: I967bb10b930b8f0772b10f81f2957a03fa3f1736
2010-06-22 12:30:12 -04:00
Jeff Brown
7fbdc84e87 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
2010-06-21 13:59:34 -07:00
Daniel Sandler
a2650db770 Merge "Fix SDK docs build." into gingerbread 2010-06-17 19:14:44 -07:00
Daniel Sandler
ae069f76ee Fix SDK docs build.
Change-Id: I2d11682cdf2cdcd48f0299f8c168fddd5994dc65
2010-06-17 21:56:26 -04:00
Jeff Brown
5c225b1680 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
2010-06-17 13:27:16 -07:00
Daniel Sandler
611fae4c39 New API for "immersive" activity windows.
An "immersive" activity (as indicated by the new
FLAG_IMMERSIVE) is one that wishes to avoid being paused by
full-screen notifications (like an incoming call).
An activity that sets FLAG_IMMERSIVE on its window is
sending a signal to the notification manager, status bar,
etc. that they should try to find some other way to get the
user's attention in high-priority situations.

FLAG_IMMERSIVE should be used exclusively in conjunction
with FLAG_FULL_SCREEN (that is, only activities that hide
the status bar should consider themselves immersive).

Change-Id: Ie290c2e92fc391bcf55edfdb1fbd626cd284e3e2
2010-06-17 11:43:35 -04:00
Scott Main
e4bca7ee60 am 322e7e47: Merge "docs: fix markup error" into froyo
Merge commit '322e7e477d89aca18d65cbd289343e716c45a699' into gingerbread

* commit '322e7e477d89aca18d65cbd289343e716c45a699':
  docs: fix markup error
2010-06-15 10:42:52 -07:00
Mathias Agopian
2d468c5d73 Make sure SurfaceView use a 565 surface when requesting an OPAQUE format.
this is needed for backward compatibility with somewhat buggy applications.
not a big deal, since the app can request another format explicitely.

Change-Id: Ic73f8acedf94ffc0115637efac28fa8ffaa7e5a4
2010-06-14 21:56:34 -07:00
Jeff Brown
46b9ac0ae2 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
2010-06-13 17:42:16 -07:00
Scott Main
f10e6331e3 docs: fix markup error
Change-Id: Icea017095f58068c55dd3c1c18cecbdf06afb595
2010-06-11 09:03:22 -07:00
Romain Guy
804d04969d am 71d73a0d: Merge "Add a method to hide/show a SurfaceView\'s surface." into froyo
Merge commit '71d73a0dfc110d0bdfc1b7ba385db3e2cfe007e5' into kraken

* commit '71d73a0dfc110d0bdfc1b7ba385db3e2cfe007e5':
  Add a method to hide/show a SurfaceView's surface.
2010-06-08 13:00:30 -07:00
Romain Guy
afc3e11f10 Add a method to hide/show a SurfaceView's surface.
This can be used to move a surface offscreen to avoid the cost of compositing it.
This preserves the window and therefore the OpenGL context when used in h/w
accelerated apps.

Change-Id: I280295376601b17989d0fc8a271af66650016f09
2010-06-08 11:34:43 -07:00
Jeff Brown
d28f4be870 Fixed some minor bugs in MotionEvent recycling.
1. MotionEvent.recycle() never set mRecycled to true so it couldn't actually
   detect doubly-recycled events (unless the TRACK_RECYCLED_LOCATION debuging
   flag was enabled).

2. MotionEvent.obtain() did not set mNext to null before returning the event
   so it would unnecessarily retain a reference to other events in the
   recycled event linked list until recycled again.

Change-Id: I93709c402d260691875f632dfc080a355f85fbb0
2010-06-02 15:36:01 -07:00
Mathias Agopian
d6ddcb7f00 fix [2677468] some 3rd party GL ES apps get a 32-bits surface by default and fail
force all SurfaceView to 565

Change-Id: I8ebfa1239d8e4fa097c2e544677fb92fa20b39bd
2010-05-24 19:07:08 -07:00
Dianne Hackborn
dc8a7f69d7 Add new API to take over a window's Surface.
Change-Id: Iad6245faadc95f19ea63c8e229a1c02e9188f69e
2010-05-18 10:46:33 -07:00
The Android Open Source Project
e28776bbd7 am b1110149: merge from open-source master
Merge commit 'b1110149cccc3b99e59ead34ca46e5ac026f6db9' into kraken

* commit 'b1110149cccc3b99e59ead34ca46e5ac026f6db9':
  Use integer for loop counter instead of float
  New test in FrameworkTest for the VelocityTracker class
  Preserve '+' in phone numbers imported from SIM.
2010-05-13 14:56:02 -07:00
The Android Open Source Project
b1110149cc merge from open-source master
Change-Id: I88a580162b34a80d1e3e7987b7a301c253afa0e8
2010-05-13 14:50:16 -07:00
Kenny Root
b79781af1e Use integer for loop counter instead of float
Change-Id: Iafaccbb3a3a7cbe0d67ed6827906d713c37ce89b
2010-05-13 12:17:15 -07:00
Christopher Tate
fa9e7c05c7 Sketch of Native input for MessageQueue / Looper / ViewRoot
MessageQueue now uses a socket for internal signalling, and is prepared
to also handle any number of event input pipes, once the plumbing is
set up with ViewRoot / Looper to tell it about them as appropriate.

Change-Id: If9eda174a6c26887dc51b12b14b390e724e73ab3
2010-05-06 17:00:54 -07:00
The Android Open Source Project
579e08e657 am f7896449: merge from open-source master
Merge commit 'f78964490d8098387d51444c87bf520ad3f674e2' into kraken

* commit 'f78964490d8098387d51444c87bf520ad3f674e2':
  Add new keycodes for the convenience of Japanese IMEs
  Call register_localized_collators() with the current locale.
  Fixed deserialization problem in DatePicker.
  Fix for bug 2467152 files with spaces fail to open.
  Set alpha value for newly created dim surface.
  telephony: Fix CID when CID is unknown
2010-05-05 16:00:01 -07:00
The Android Open Source Project
f78964490d merge from open-source master
Change-Id: Ia9e1f4e049f5870386ea29ddb6e3ef028ea918da
2010-05-05 15:57:42 -07:00
mogimo
b032bc0373 Add new keycodes for the convenience of Japanese IMEs
Change-Id: Ibd308cef11261147856258595f6ca0137e03e05c
2010-05-05 13:37:21 -07:00
Jean-Michel Trivi
99fb50468c am fc12b5be: am b5fa4dff: Merge "Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI sound. This CL doesn\'t fix why mView can be null in the first place, but prevents a crash when mView is null and a UI sound is to be played." into froyo
Merge commit 'fc12b5be2ee49ba2392274d413bd5d759c03c346' into kraken

* commit 'fc12b5be2ee49ba2392274d413bd5d759c03c346':
  Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI
2010-05-05 12:06:12 -07:00
Jean-Michel Trivi
fc12b5be2e am b5fa4dff: Merge "Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI sound. This CL doesn\'t fix why mView can be null in the first place, but prevents a crash when mView is null and a UI sound is to be played." into froyo
Merge commit 'b5fa4dff0c4756ef7868926d4f373645ac0b00a9' into froyo-plus-aosp

* commit 'b5fa4dff0c4756ef7868926d4f373645ac0b00a9':
  Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI
2010-05-05 12:03:43 -07:00
Jean-Michel Trivi
13b18fd7f9 Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI
sound.
This CL doesn't fix why mView can be null in the first place, but
prevents a crash when mView is null and a UI sound is to be played.

Change-Id: I74ea03567e8e6ebebb6c95c80a473abf11e1163d
2010-05-05 09:37:41 -07:00
Steve Howard
3fd6419fe5 am 3b20c9e8: am 81ac367b: Merge "Fix a minor bug in transitions to left-edge-up landscape." into froyo
Merge commit '3b20c9e80533401d8c423977ef86460d789d4e1e' into kraken

* commit '3b20c9e80533401d8c423977ef86460d789d4e1e':
  Fix a minor bug in transitions to left-edge-up landscape.
2010-04-28 16:07:18 -07:00
Steve Howard
3b20c9e805 am 81ac367b: Merge "Fix a minor bug in transitions to left-edge-up landscape." into froyo
Merge commit '81ac367be66905a5b53b8e7e98160546802bd98b' into froyo-plus-aosp

* commit '81ac367be66905a5b53b8e7e98160546802bd98b':
  Fix a minor bug in transitions to left-edge-up landscape.
2010-04-28 16:03:28 -07:00
Steve Howard
c64d537e9b Fix a minor bug in transitions to left-edge-up landscape.
Fix MAX_TRANSITION_TILT to remove the entry for upside-down
orientation, which should've been removed when that orientation itself
was removed.  This was causing the phone to require further vertical
tilt for transitions to left-edge-up landscape, as compared to
right-edge-up landscape or portait mode.

Bug: 2639310
Change-Id: I8fe2e2baecd6a9c2cecae95d316b0d4e2f8ee251
2010-04-28 15:08:45 -07:00
Marco Nelissen
55fb51aa41 resolved conflicts for merge of 86303198 to kraken
Change-Id: Idd921c7108e4c2cd4a861ee1fb8b43e5d56f8f2f
2010-04-26 17:42:07 -07:00
Marco Nelissen
863031983d am 8138cb49: Make Surface.toString() show more useful info to help debug bug 2594388.
Merge commit '8138cb49e47f9a9905a316a217757710185c66aa' into froyo-plus-aosp

* commit '8138cb49e47f9a9905a316a217757710185c66aa':
  Make Surface.toString() show more useful info to help debug bug 2594388.
2010-04-26 17:19:58 -07:00
Marco Nelissen
8138cb49e4 Make Surface.toString() show more useful info to help debug bug 2594388.
Change-Id: I005d3388503d8886e11a26fece30b87572934f15
2010-04-26 16:51:17 -07:00
Dianne Hackborn
dc14dc6d60 am bf73bbff: Merge "Some debugging help for issue #2594388" into froyo
Merge commit 'bf73bbffc18f5abb5350fa3a410830c05ad10206' into froyo-plus-aosp

* commit 'bf73bbffc18f5abb5350fa3a410830c05ad10206':
  Some debugging help for issue #2594388
2010-04-23 13:02:29 -07:00
Dianne Hackborn
ba3e31d9ee Some debugging help for issue #2594388
WallpaperService doesn't always call onSurfaceDestroyed()

Just helps us see a little better what is going on.

Change-Id: Ibe8efd9e343e880ca31df446c8b36c7fa3722e87
2010-04-22 18:59:03 -07:00
Mathias Agopian
a62b09a121 fix [2615973] ViewRoot locks the Surface even when the dirty region is empty
Change-Id: I3041a57441bd9ee97f2cbc03ce42643175023c78
2010-04-21 18:40:05 -07:00
Adam Powell
8dc38941b4 am 7f30f8ab: am 93d35f77: Merge "Fix bug 2587373 - awaken scrollbars when a scrolling view becomes visible." into froyo
Merge commit '7f30f8abe3161ae912c3475aa89ad14388f576d7' into kraken

* commit '7f30f8abe3161ae912c3475aa89ad14388f576d7':
  Fix bug 2587373 - awaken scrollbars when a scrolling view becomes visible.
2010-04-19 15:41:05 -07:00
Adam Powell
7f30f8abe3 am 93d35f77: Merge "Fix bug 2587373 - awaken scrollbars when a scrolling view becomes visible." into froyo
Merge commit '93d35f77439f54cc55ff63b6e274dec0ac6c3c47' into froyo-plus-aosp

* commit '93d35f77439f54cc55ff63b6e274dec0ac6c3c47':
  Fix bug 2587373 - awaken scrollbars when a scrolling view becomes visible.
2010-04-19 15:38:11 -07:00
Adam Powell
8568c3a09b Fix bug 2587373 - awaken scrollbars when a scrolling view becomes visible.
Change-Id: I7eb38c53c3a03b23786b8b0c2d16139acd0eb38e
2010-04-19 15:26:15 -07:00
Mathias Agopian
8b138323d5 don't hardcode "mSurface" throughout our source code
this is used in a few places to get access to the android.view.Surface
native surface. use a macro instead. Also rename the field to mNativeSurface.

Change-Id: I1c6dea14abd6b8b1392c7f97b304115999355094
2010-04-12 16:29:36 -07:00
Romain Guy
376722fcdf am 4525c981: Merge "Fix regression introduced when fixing focus issue with ScrollView. Bug #2581646" into froyo
Merge commit '4525c98114c1e570ecef84521f66095e866af77d' into froyo-plus-aosp

* commit '4525c98114c1e570ecef84521f66095e866af77d':
  Fix regression introduced when fixing focus issue with ScrollView.
2010-04-10 11:41:54 -07:00
Romain Guy
2d4cff64b4 Fix regression introduced when fixing focus issue with ScrollView.
Bug #2581646

The correct fix is to make ScrollView ignore the BACK key instead of consuming it.

Change-Id: I5c029a5c60ae8e7791391f63672c44b5c96fec71
2010-04-09 15:39:00 -07:00
The Android Open Source Project
65369424cb merge from open-source master
Change-Id: I975030d9572463bc69245bcffa25c47d7acb2b51
2010-04-08 11:27:55 -07:00
Romain Guy
7b70f65892 Search for focusable views only after layout has happened when the window is first created.
Bug #2565564

Change-Id: I9eb58bbcba873ac1d6dc0b60b0de99e0e9979398
2010-04-07 10:15:18 -07:00
Daniel Sandler
c957ebef97 Merge "Add more WindowManager flags to ViewDebug." into froyo 2010-04-07 06:40:26 -07:00
Romain Guy
2e4f426bbc Correctly resize dialogs when measured in WRAP_CONTENT
Bug #2549649

If the window had a different size than its content but the content had already
been measured with the appropriate size, the window would not be resized. This
happens in wrap_content windows (dialogs.) This change simply adds a new codition
to window resizing: if the window is wrap_content, not as big as it can be and
not as big as its content, it gets resized.

Change-Id: I1d82d03af5a15c9ad8dffa0511d5f6d522578285
2010-04-06 11:07:52 -07:00