Commit Graph

255 Commits

Author SHA1 Message Date
Jean-Baptiste Queru
4a88013a4a resolved conflicts for merge of bf1439c5 to stage-korg-master
Change-Id: Iab543a7ee449025f1df5d58afaa8f8fdd4809c99
2010-12-02 15:16:53 -08:00
Mike Playle
c6ded10dd1 Preserve flags field of event passed to injectKeyEvent()
This patch allows users of WindowManagerService.injectKeyEvent() to
set flags on the key event being injected.

In particular this allows long presses (FLAG_LONG_PRESS) to be
injected into the window manager.
2010-12-02 16:25:46 +00:00
Dianne Hackborn
eb5aeae676 am fdbb2168: Merge "Adjust boundaries for screen sizes." into gingerbread
Merge commit 'fdbb2168f7a9a202ee9406d65e7ef98a6745b488' into gingerbread-plus-aosp

* commit 'fdbb2168f7a9a202ee9406d65e7ef98a6745b488':
  Adjust boundaries for screen sizes.
2010-10-21 20:18:11 -07:00
Dianne Hackborn
b51dc0fe2a Adjust boundaries for screen sizes.
Part of issue #3116702: New manifest tags for supported screen sizes

Kind-of.

If you turn your head side-ways.

Change-Id: I446f1e2eadba1ce284c93ff9fb0197bb0e6b0fca
2010-10-21 15:34:47 -07:00
Jeff Brown
f2e0681ada am 1da8d4d1: Merge "Fix an event injection bug when the policy is bypassed." into gingerbread
Merge commit '1da8d4d1697cec871dea8c30dad67e90db10bde6' into gingerbread-plus-aosp

* commit '1da8d4d1697cec871dea8c30dad67e90db10bde6':
  Fix an event injection bug when the policy is bypassed.
2010-10-11 17:26:51 -07:00
Jeff Brown
b931a1b418 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
2010-10-11 16:26:13 -07:00
Jean-Baptiste Queru
6d1321f02f am 65f23e71: Merge "Corrected visibility reporting error in WindowManager"
Merge commit '65f23e71bdf7d9ca8c4aa8ed126ac2bc9a2cbf43' into gingerbread-plus-aosp

* commit '65f23e71bdf7d9ca8c4aa8ed126ac2bc9a2cbf43':
  Corrected visibility reporting error in WindowManager
2010-10-10 18:51:47 -07:00
Dianne Hackborn
89230e3b7b am 458fc5f5: Merge "Fix issue #3041660: Camera image flips upside down when rotating device" into gingerbread
Merge commit '458fc5f52e25d7a8b4e482010711aed66f0b4999' into gingerbread-plus-aosp

* commit '458fc5f52e25d7a8b4e482010711aed66f0b4999':
  Fix issue #3041660: Camera image flips upside down when rotating device
2010-10-04 14:55:09 -07:00
Dianne Hackborn
e5439f228f Fix issue #3041660: Camera image flips upside down when rotating device
Apps now must explicitly opt in to having their rotation changed while
forcing landscape mode.  Also add some new orientation constants for other
things apps may want to do.

Change-Id: If64d84b5ef54793ee717ebda9b4c76408efc9bfd
2010-10-04 14:01:39 -07:00
Dianne Hackborn
4d28e8c5c6 am 1fa69735: Merge "Fix issue #3037083: Problem report for Pinball" into gingerbread
Merge commit '1fa69735d9e786da4b20c3ab3da3aa66f3cf8116' into gingerbread-plus-aosp

* commit '1fa69735d9e786da4b20c3ab3da3aa66f3cf8116':
  Fix issue #3037083: Problem report for Pinball
2010-10-01 13:42:40 -07:00
Dianne Hackborn
6493e64c2a Fix issue #3037083: Problem report for Pinball
The app was toggling between hiding and showing the status bar, because
the dialog was large enough to fill the screen but didn't set to hide
the status bar.

It turns out that the code to determine the top fullscreen window is
intrinsically unstable, since it relies on comparing a window's frame
with the screen, yet the window frame can change as a result of changes
such as hiding the status bar.

Instead, we now simplify all of this to just say that the top fillxfill
window gets to control the status bar.

Change-Id: I22913adf7235fe0d52612f6738c7c94351274e38
2010-10-01 13:06:30 -07:00
Ulf Rosdahl
39357708b7 Corrected visibility reporting error in WindowManager
Correction for the error:
When a window is done animating and about to be destroyed,
it is still checked for visibility in the method
updateReportedVisibilityLocked in the WindowManager.
In the case where other windows are ready to be reported as
visible, this, not yet destroyed window which has the state
not visible, will prevent the visibility report message from
being sent.

Change-Id: I9e307a678a204f0883ccd78c2645c373d3f81066
2010-09-29 12:34:38 +02:00
repo sync . build/envsetup.sh lunch passion-en
8c66580759 am 4fc3d2f0: DO NOT MERGE
Merge commit '4fc3d2f0b3237390c37ccc4701bc68e4aa5f9b7a' into gingerbread-plus-aosp

* commit '4fc3d2f0b3237390c37ccc4701bc68e4aa5f9b7a':
  DO NOT MERGE
2010-09-27 17:51:45 -07:00
repo sync . build/envsetup.sh lunch passion-eng
4fc3d2f0b3 DO NOT MERGE
This is a manual cherrypick of:
Change I3a76de15: Fixing font scale in WindowManagerService. There was
a bug that causes WindowManagerService to lose the fontScale setting.

Change-Id: I9b993e11f6a3e75735d8ed05596083893543d732
2010-09-27 17:46:07 -07:00
Dianne Hackborn
deaa8ff1b1 am a7ef18fc: Merge "Some debugging support." into gingerbread
Merge commit 'a7ef18fca50d0db99a161d8c7e2d8979f0445503' into gingerbread-plus-aosp

* commit 'a7ef18fca50d0db99a161d8c7e2d8979f0445503':
  Some debugging support.
2010-09-24 15:32:51 -07:00
Dianne Hackborn
f123e49bf0 Some debugging support.
- New feature to "am monitor" to have it automatically launch
  gdbserv for you when a crash/ANR happens, and tell you how to
  run the client.

- Update dumpstate to match new location of binder debug logs

- Various commented out logs that are being used to track down
  issues.

Change-Id: Ia5dd0cd2df983a1fc6be697642a4590aa02a26a5
2010-09-24 13:11:55 -07:00
Dianne Hackborn
4b187e804f am 8e1b84e7: Merge "Some battery improvements:" into gingerbread
Merge commit '8e1b84e7654ddeeb77a03f5eca10c6669b1cb42b' into gingerbread-plus-aosp

* commit '8e1b84e7654ddeeb77a03f5eca10c6669b1cb42b':
  Some battery improvements:
2010-09-20 16:34:45 -07:00
Dianne Hackborn
ce2ef766ca Some battery improvements:
- New API for iterating over history that will allow a better implementation
  in the future.
- Now do writes asynchronously.

Also improve the documentation for Activity.onRetainNonInstanceState().

Change-Id: Idf67f2796a8868eb62f288bcbb2bad29876c8554
2010-09-20 16:25:01 -07:00
Jeff Brown
7642c82c29 am f4d788c9: Merge "Make input dispatcher only ANR for foreground windows." into gingerbread
Merge commit 'f4d788c9309bc5480100d980608472e4cb04f309' into gingerbread-plus-aosp

* commit 'f4d788c9309bc5480100d980608472e4cb04f309':
  Make input dispatcher only ANR for foreground windows.
2010-09-15 18:57:48 -07:00
Jeff Brown
519e024d1e 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
2010-09-15 18:52:08 -07:00
Jeff Brown
0f0541e40c am b88102f5: Input dispatcher ANR handling enhancements.
Merge commit 'b88102f5b7e51552a3576cf197b4c8cf96f193d1' into gingerbread-plus-aosp

* commit 'b88102f5b7e51552a3576cf197b4c8cf96f193d1':
  Input dispatcher ANR handling enhancements.
2010-09-12 17:05:38 -07:00
Jeff Brown
b88102f5b7 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
2010-09-12 16:52:03 -07:00
Jean-Baptiste Queru
03821dc6ea am 962e4826: Merge "Allow two SurfaceViews inbetween the app and the wallpaper."
Merge commit '962e482606e3f8f8c0b8e540888eaef56a1c8603' into gingerbread-plus-aosp

* commit '962e482606e3f8f8c0b8e540888eaef56a1c8603':
  Allow two SurfaceViews inbetween the app and the wallpaper.
2010-09-10 15:47:34 -07:00
Jeff Brown
85a3176704 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
2010-09-08 11:50:55 -07:00
Pal Szasz
73dc2592be Allow two SurfaceViews inbetween the app and the wallpaper.
When two SurfaceViews are used by an application, which is
transparent and uses the wallpaper, only one of the SurfaceViews
will be visible.

The problem is that when trying to find the correct location
for the wallpaper, the window manager locates the activity
window and skips every window below it which is related.
For the first SurfaceView this will be ok, since the
SurfaceViews's attached window is the previous window.
However for the second SurfaceView this condition will fail
(the 2nd SurfaceViews attached window is not the previous
window (which is the 1st SurfaceView)).

The fix adds an extra check which detects this usecase
(the windows are related if the attached window is the same
as the attached window of the previous window).

Change-Id: I368e9dd53455dc310f48d6d8c0be68350ff2b79e
2010-09-03 11:46:26 +02:00
Jeff Brown
8d60866e21 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
2010-08-30 18:16:43 -07:00
Konstantin Lopyrev
43b9b48f79 Preventing the hierarchy viewer from getting stuck, once when trying to load the window data for SurfaceView and the Wallpaper, and in the case the captured node has disappeared.
Change-Id: Iaff6bd501a2bb3faa7a394fff740479f6a95e899
2010-08-25 13:38:27 -07:00
Dianne Hackborn
b9fb1705e8 More watermark work.
Change-Id: I1d20bc1f8679a9750b247126436e8ef7e47a77be
2010-08-23 16:51:56 -07:00
Dianne Hackborn
9adb9c3b10 Various battery info things:
- Now track wake locks in battery history.
- Now track sensors in battery history.
- Some filtering of sensory data.
- Fixes to some data that wasn't cleared when resetting battery stats.
- Print amount discharged since last charge.

And the big part -- keep track of wake locks held per process,
and kill processes that hold wake locks too much while they are in
the background.  This includes information in the battery stats
about the process being killed, which will be available to the
developer if the app is reported.

Change-Id: I97202e94d00aafe0526ba2db74a03212e7539c54
2010-08-13 15:17:49 -07:00
Dianne Hackborn
fb86ce9307 Add watermark support.
Use these system properties:

ro.watermark.text
ro.watermark.height
ro.watermark.x
ro.watermark.y
ro.watermark.color
ro.watermark.shadow.radius
ro.watermark.shadow.dx
ro.watermark.shadow.dy
ro.watermark.shadow.color

If ro.watermark.text is not set, no watermark will be shown.  All others
have reasonable defaults if they are not set.

Change-Id: Ibe4a01e6f1c576494ae2462e2688cdfaa8c62cb8
2010-08-11 18:15:29 -07:00
Jeff Brown
a41ca77fab Add support for the PointerLocation overlay.
This change involves adding a new method to IWindowManager,
monitorInput() that returns an InputChannel to receive a copy of all
input that is dispatched to applications.  The caller must have
the READ_INPUT_STATE permission to make this request (similar to
other window manager methods such as getKeycodeState).

Change-Id: Icd14d810174a5b2928671ef16de73af88302aea0
2010-08-11 14:46:32 -07:00
Konstantin Lopyrev
5e7833a571 Fix focus notification
Change-Id: I51d73100695ceb70620754a1897ace681a26d839
2010-08-09 17:01:11 -07:00
Konstantin Lopyrev
f962476471 Adding a way for Hierarchy Viewer to get the focused window.
Change-Id: I01e6ab4aa24d632fba586cb9e112d8d9df1a681a
2010-08-06 13:27:31 -07:00
Konstantin Lopyrev
321f7fad5c Making sure that there is no notification when focus changes from something to nothing.
Change-Id: Ib8b3bdd7f5dd999c933a017fe1b34263afe38e4a
2010-08-03 11:21:55 -07:00
Christopher Tate
09e85dc027 Mute a common-case progress log about input injection
Change-Id: I37c9f5cb239ab93fde3a42f71f2782d8734c53ce
2010-08-02 11:59:11 -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
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
Maciej Białka
26824b7a9e Remove the window from being a target for motion events when it is destroyed.
If window was destroyed when touch was pressed this destroyed
window was still considered as a target for motion events.
In some cases this could result with hang up inside event dispatch procedure.

Change-Id: I2ede17a40b14b2f509ab3d2560abb65292324f45
2010-07-19 15:12:20 -07:00
Jeff Brown
e33348ba54 Fix bug with phantom input windows.
Add dumpsys integration for the native input dispatcher.
Add some InputDevice API stubs.
Add an appendFormat helper method to String8 for printf style
string formatting mainly for debugging purposes.
Use generic ArrayList<WindowState> everywhere in WindowManagerService
to eliminate unnecessary casts all over.

Change-Id: I9d1e3bd90eb7222d10620200477f11b7bfd25e44
2010-07-16 00:02:48 -07:00
Jeff Brown
c5ed5910c9 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
2010-07-15 18:32:33 -07:00
Konstantin Lopyrev
6e0f65fd9c Adding focus change notification
Change-Id: I49709c97aaf63bcd44695d99c61dbbee228416f4
2010-07-14 15:31:39 -07:00
Konstantin Lopyrev
dc30101ff8 Making sure that the list of windows updates automatically in hierarchy viewer (View Server side)
Change-Id: I0f49ee8b6950ad167bd224093150050e19fd1dd7
2010-07-12 19:37:24 -07:00
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
Christopher Tate
160edb3645 Add ability to guard a thread against setting its own prio to bg
The guard is compiled out by default because it adds overhead to
android.os.Process.setPriority().

Change-Id: Ibb2a648c6349b381abb7ae62a358888b04fba871
2010-06-30 18:25:01 -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
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
The Android Open Source Project
3ff1a5928f merge from open-source master
Change-Id: Ib9ec3f3b7418d064b643577156d7d16688b3048d
2010-06-15 11:44:09 -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
Jim Miller
3b68548da6 am 75b6a6b9: Merge "Fix 2737842: Disable KeguardManager API if device policy is enabled" into froyo
Merge commit '75b6a6b972e6b18143fd629d3d9c824c442c5f4c' into kraken

* commit '75b6a6b972e6b18143fd629d3d9c824c442c5f4c':
  Fix 2737842: Disable KeguardManager API if device policy is enabled
2010-06-08 16:33:26 -07:00
Jim Miller
c19dade5a4 am 75b6a6b9: Merge "Fix 2737842: Disable KeguardManager API if device policy is enabled" into froyo
Merge commit '75b6a6b972e6b18143fd629d3d9c824c442c5f4c' into froyo-plus-aosp

* commit '75b6a6b972e6b18143fd629d3d9c824c442c5f4c':
  Fix 2737842: Disable KeguardManager API if device policy is enabled
2010-06-08 16:33:22 -07:00