232 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
284b62e1b8 Fix 2737842: Disable KeguardManager API if device policy is enabled
This change adds notification to find out when the device policy
has changed.  When an admin adds or changes a policy, we get notified
and reset the state of keyguard to be enabled.

It also moves disabling keyguard into the TokenWatcher.acquired()
method to avoid disabling keyguard when a policy doesn't permit it.
This avoids reference counting issues in TokenWatcher and hence relieves
the ordering issue.

There is one remaining caveat. An application that uses KeyguardManager
to disable keyguard will need to disable keyguard again after any
policy change.

Tested:

Install and run app that disables keyguard with no admin. Result: keyguard is enabled/disabled as expected.
Enable admin and set quality = "something" after installing & running app. Result: keyguard is enabled.
Change admin password quality to "unspecified" and re-run app (per caveat). Result: keyguard is disabled.
Change admin password quality to "something" again. Result: keyguard is enabled.
Disable admin : Result: keyguard is enabled until app runs again (per caveat).

Added minor cosmetic changes after review.

Change-Id: I302f2b01446bf031f746b0f3e8b5fd7a6cc0e648
2010-06-08 15:47:52 -07:00
Jim Miller
7d70358a03 am bde25c20: Merge "Fix 2737842: disable keyguard API when device policy is enabled." into froyo
Merge commit 'bde25c207731783a62e3611586fe05cd35add0d9' into kraken

* commit 'bde25c207731783a62e3611586fe05cd35add0d9':
  Fix 2737842: disable keyguard API when device policy is enabled.
2010-06-07 19:25:49 -07:00
Jim Miller
d6b5705e18 Fix 2737842: disable keyguard API when device policy is enabled.
This fix disables KeyguardManager's enable/disable API when any
device policy admin requests a policy that enforces a password.

Change-Id: Idb1da16b14ed8963142f7b1f62d2b060d84ffa65
2010-06-07 19:19:29 -07:00
The Android Open Source Project
63ece47fec am 2a9ae01f: merge from open-source master
Merge commit '2a9ae01f74e7273ce0d1045754597ea78b88ba69' into kraken

* commit '2a9ae01f74e7273ce0d1045754597ea78b88ba69':
  Corrected repeat count for key repeat in input device.
2010-05-12 12:44:27 -07:00
The Android Open Source Project
2a9ae01f74 merge from open-source master
Change-Id: I24ecfac151c0ddc27237d711c95b8fe488d7931b
2010-05-12 12:33:35 -07:00
Kristian Dreher
133bfdfa4a Corrected repeat count for key repeat in input device.
Previously the key event repeat count was always zero when the repeated
key down events was generated by the input device in the Linux kernel.

Change-Id: I86b7fd2a75880bc54d052ef404c3654b7ed14c52
2010-05-10 16:41:31 -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
Dianne Hackborn
14cee9f688 New xlarge screen size.
Not complete, only for experimentation at this point.

This includes a reworking of how screen size configurations are matched,
so that if you are on a larger screen we can select configurations for
smaller screens if there aren't any exactly matching the current screen.

The screen size at which we switch to xlarge has been arbitrarily
chosen; the compatibility behavior has not yet been defined.

Change-Id: I1a33b3818eeb51a68fb72397568c39ab040a07f5
2010-04-28 16:51:52 -07:00
Maciej Białka
9ee5c2215a Set alpha value for newly created dim surface.
Newly created dim surface has alpha set to 1 (opaque),
but it is assumed in dim animation code that it is 0 (transparent).
When new dim surface is created and expected dim value is calculated to 0
then alpha is never set making screen black (dut to default aplha=1)
when dim surface is shown.
2010-04-27 08:12:51 +02:00
Dianne Hackborn
476a57e64a am 9bc0a572: Merge "Fix issue #2608292: Fails to launch the video camera preview" into froyo
Merge commit '9bc0a572d8459e0b6209e8a68cb680389c1f8b73' into froyo-plus-aosp

* commit '9bc0a572d8459e0b6209e8a68cb680389c1f8b73':
  Fix issue #2608292: Fails to launch the video camera preview
2010-04-22 16:24:08 -07:00
Dianne Hackborn
f09c1a247a Fix issue #2608292: Fails to launch the video camera preview
Need to clear the attached hidden flag on the window, even if it does
not yet have an actual surface.

Change-Id: I0a90f6b03cd8e347a3eae4d6bea3ab93f7128bf4
2010-04-22 15:59:21 -07:00
Dianne Hackborn
cd616247db am ce73c1e5: Framework change for #2583442: Navigation dies when night mode changes
Merge commit 'ce73c1e5bfd36154d21ee7b332cfdc6cea48812e' into froyo-plus-aosp

* commit 'ce73c1e5bfd36154d21ee7b332cfdc6cea48812e':
  Framework change for #2583442: Navigation dies when night mode changes
2010-04-13 18:05:47 -07:00
Dianne Hackborn
ce73c1e5bf Framework change for #2583442: Navigation dies when night mode changes
The window manager doesn't retain its keep screen on lock while
in the process of destroying and creating new activity windows during
a config change.  Now it does.

Unfortunately, this doesn't help maps, since it doesn't use our
lovely KEEP_SCREEN_ON flag. :p

Change-Id: Ida4bc0fcfe132cdff2bd4eeb7ba0ce9731504d14
2010-04-13 18:01:40 -07:00
Dianne Hackborn
fbd22f072b am ae8c2c71: Merge "Fix issue #2420340: if FLAG_SHOW_WHEN_LOCKED, do not show keyguard..." into froyo
Merge commit 'ae8c2c71f7791ed0321e56f31f0c1276da4d8842' into froyo-plus-aosp

* commit 'ae8c2c71f7791ed0321e56f31f0c1276da4d8842':
  Fix issue #2420340: if FLAG_SHOW_WHEN_LOCKED, do not show keyguard...
2010-04-13 17:59:56 -07:00
Dianne Hackborn
5943c200a4 Fix issue #2420340: if FLAG_SHOW_WHEN_LOCKED, do not show keyguard...
...go directly to unlock screen

Fix a problem where, when we are moving windows due to a configuration
change, our wait to have the windows get redrawn would also
inadvertently make us think their surfaces should be hidden, leading
to nasty things like the lock screen thinking it should be shown
again (and thus forcing the orientation back to portrait).

Change-Id: I79057cfbc93ff59fd3558da997d4f73796e6aabe
2010-04-12 21:36:49 -07:00
The Android Open Source Project
727cec02da merge from open-source master
Change-Id: I0902959c7703bd3a1c41abfc6a8788b89d0aa977
2010-04-08 11:35:37 -07:00
Christopher Tate
b696aee7b3 Fix "incall in landscape sometimes" bug #2523942
The problem turns out to have been a deep weirdness in the way that keyguard
and incall interact.  Incall gets relaunched when the keyboard is opened/closed,
which transiently exposes keyguard with its nosensor orientation demands, and
that plus the long keyguard-hide animation was leaving incall in a bad state
from which the window manager didn't try to recover.

We now disregard animating-towards-hidden windows [i.e. keyguard] when running
through the app tokens to determine what orientation should be, and do not do
configuration calculations at all while the display is frozen.  There can still
be a transient state in which incall is drawn in landscape, but things proceed
from there to relaunch it back into the proper portrait orientation, and it
ends up in the right state in the end.

Change-Id: I0d74ee19064b6d7f65600976f1b5b16b7ec36f31
2010-04-02 19:13:51 -07:00
Dianne Hackborn
f83c555d8a Fix issue #2561067: Screen Display half faded...
Also a little tweak to the activity manager to behave better when
an application crash, to hopefully mostly avoid situations where
you get into a crash loop.

Change-Id: I627cc1da3a0f16a180957f02bfbe5c81ecd31758
2010-03-31 22:47:10 -07:00
Dianne Hackborn
529bef6925 Dumb late-night typo.
Change-Id: If5e5d8c3728ffc06d686c793ed94a7e18328e5ab
2010-03-25 11:48:43 -07:00