Commit Graph

4052 Commits

Author SHA1 Message Date
Jeff Brown
22a94cb03a Merge "Optimize focused input event dispatch in view root." 2013-01-14 15:44:08 -08:00
Jeff Brown
29c0ed2c13 Optimize focused input event dispatch in view root.
The efficiency of key, trackball and generic motion event
dispatch is greatly influenced by the IME dispatch cycle.
This change simplifies the dispatch of focused input events
and avoids causing event processing to be requeued on the
handler and delayed unnecessarily.

Bug: 7984576
Change-Id: Id82624a3f32c05efe6ee5c322bd55bf2ab21525d
2013-01-14 15:31:36 -08:00
Fabrice Di Meglio
9003007d35 Merge "Fix Volume icons for RTL languages" 2013-01-11 11:10:00 -08:00
Romain Guy
fff06e97e3 Merge "Add a new type of profiling graph: lines" 2013-01-10 18:41:37 -08:00
Romain Guy
48ef4a92a4 Add a new type of profiling graph: lines
Change-Id: I0e67d7227016fe37011e17d04220a200a6a5fba0
2013-01-10 18:38:46 -08:00
Svetoslav Ganov
ea307734e7 Merge "Fixing a memory leak in ViewRootImpl and a focus change callback issue." 2013-01-10 15:45:38 -08:00
Dianne Hackborn
891d3fbb15 Fix issue #7966357: Super lights out mode vs. volume dialog
The volume panel now forces us out of the UI modes while it
is up.

Change-Id: I25f29af5b6518aba695b64a75977ae240b742118
2013-01-09 18:31:37 -08:00
Fabrice Di Meglio
8c02884c8c Fix Volume icons for RTL languages
- add mirrored version of the icons
- make VolumePanel respond to layout direction changes
- make AudioService propagate layout direction changes to the VolumePanel

Change-Id: Ibb884ab81641c319a9b7bea1381066f3f19581f0
2013-01-09 18:25:20 -08:00
Svetoslav Ganov
149567f9d5 Fixing a memory leak in ViewRootImpl and a focus change callback issue.
1. ViewRootImpl was keeping reference to the old focused view so it can
   call back the global on focus change listener when another view gets
   focus. The stashed reference, however was not cleared which caused a
   memory leak if the last focused view was removed from the view tree.
   In general keeping additional state for the last focus in ViewRootImpl
   is not a good idea since this add complexity due to additional book
   keeping work that is required. The view tree already keeps track of
   where the focus is and it should be the only place that holds this
   data. Since focus does not change that frequently it is fine to look
   up the focus since this operation is O(m) where m is the depth of the
   view tree. This change removes the duplicate book keeping from
   ViewRootImpl and the focus is looked up as needed.

2. ViewRootImpl was calling the global focus change callbacks when focus
   is gained, lost, or transferred to another view. This was done in
   *ChildFocus methods. In the case of a child losing focus, i.e. in
   clearChildFocus, there was a check whether focus searh yields a view
   to take focus and if so it did not call back the global focus listener
   assuming the the found view will take focus (the view tree gives focus
   to the first focusable when a view looses focus). This is not a correct
   assumption since some views override methods called as a result of
   View.requestFocus that determine what the next focused view should
   be. For example, HorizontalScrollView overrides onRequestFocusInDescendants
   and changes the direction of the search. In fact focus search does not
   take into accound ViewGroup descendant focusability. Hence, the view found
   by calling the focus search from the root is not necessarily the one
   that will get focus after calling requestFocus. Actually, it is
   possible that the focus search will find a view but no view will
   take focus. Now the View class is responsible for calling the
   global focus listeners which avoids the above problem. Also this
   saves book keeping in ViewRootImpl.

bug:7962363

Change-Id: Ic95a18b364e997021f3f6bb46943559aac07d95a
2013-01-09 12:34:49 -08:00
Craig Mautner
4b71aa1f8a Move app transition constants
Move app transition constants from WindowManagerPolicy to
AppTransition.

Change-Id: I8ae6c4d0da1db826c44eb4ea0c6b85016b50b1a3
2013-01-07 23:38:57 -08:00
Romain Guy
7d1c4fa322 Remove out-of-date comment and rename constant
Change-Id: I0c60d349505776cff0d7e5360e87ac5584dc5876
2013-01-07 11:55:27 -08:00
Romain Guy
666d5daab2 Fix issue when toggling profiling from visual to off to visual
Change-Id: I4a623020a9bf0079029d184c13e58d92e692faf8
2013-01-07 11:29:14 -08:00
Romain Guy
a4fef0260b Update profiling properties
This change merges debug.hwui.profiling and profiling_visualize.
Now only the first property exists and accepts the values true, false
and visual. This enables setting the property from Settings.

Change-Id: I16a11fe23ac1a6bb907a1a826e418d6b3994b56c
2013-01-07 11:18:38 -08:00
Romain Guy
98e4a52cc0 Use dp units instead of px to draw profiling graph
Change-Id: Iba24b21ebe46738c6b1d6d320ce34af71f7c769d
2013-01-07 10:58:34 -08:00
Romain Guy
63f4d84ec2 Make profiling graph more readable in all apps
Change-Id: Ic9467d4420c2aa8d295d0045c714c9f8e6269220
2013-01-04 19:31:12 -08:00
Romain Guy
672433d90f Add visual profiling feature
When profiling is enabled with debug.hwui.profile set to true,
setting debug.hwui.profile_visualizer to true will display the
profiling data directly on screen.

Change-Id: I3d5fe3f0347090815087b1cbfce66b8e76d9347b
2013-01-04 19:21:54 -08:00
Justin Koh
e422737fda am a90c92a1: am 86903699: Merge "Start RecognitionActivity with an upswipe gesture." into jb-mr1-aah-dev
* commit 'a90c92a1c97830de5e1766bb64ff421a2a50ed56':
  Start RecognitionActivity with an upswipe gesture.
2012-12-19 11:48:41 -08:00
Justin Koh
a90c92a1c9 am 86903699: Merge "Start RecognitionActivity with an upswipe gesture." into jb-mr1-aah-dev
* commit '86903699692a0b3229062da2995d829629e64e7b':
  Start RecognitionActivity with an upswipe gesture.
2012-12-19 11:46:34 -08:00
Justin Koh
8690369969 Merge "Start RecognitionActivity with an upswipe gesture." into jb-mr1-aah-dev 2012-12-19 11:42:26 -08:00
Chet Haase
cc699b4fe3 Fix for requestLayout-during-layout inefficiencies
An earlier fix made it possible to call requestLayout() during layout
(which is not recommended in most cases outside of a ListView) without
ending up with blank content and internal layout flags in a confused state.
However, that fix incorrectly detected a problem in some cases (such as
ListView practices of adding views during layout) which were actually okay;
as long as you make sure to measure and layout your children properly
before returning from layout(), then it's not a problem. We were improperly
spamming the log with supposed problems, and causing more overhead in correct
cases by running a full request/measure/layout pass after the first layout
pass, all of which is unnecessary in cases where the containers know what
they're doing.

This new fix changes the logic to only cause the second layout pass (and third,
posted to the next frame, if things are really done incorrectly) if the layout-request
flags are still set on the requesting views after the full layout pass is complete.
This situation causes the blank screens we've seen in buggy apps, and is exactly
what we should avoid. However, correct cases (e.g., ListView) will not have these
problems because they run measure/layout correctly after the request calls, which
clears these flags. The upshot is that buggy cases will be detected and compensated for
(by clearing the flags and then running a second request/measure/layout pass, as in the
original fix) and non-buggy cases will be noop'd, going back to their previous, working
logic flow.

The bug below is one of the buggy apps to demonstrate this problem. I noticed that the
original problem (blank screen) is no longer reproducible. I suspect that logic was
added to the app to force a refresh after it is attached. You can still detect the problem
(and the fix) by seeing that prior to the fix (say, on mr1.1) there is a delay of about
a second between the end of the progress bar updates and the showing of content on a
screen that used to just remain blank. With the fix (both the previous version and this
one), the content is updated immediately, because we now handle the buggy request-
during-layout situation in the same frame as it occurs.

Issue #6914123 News and Weather app sometimes loads to a blank screen

Change-Id: I4c34817cc3dd44ba422ff50de4321624c0824d83
2012-12-18 13:40:50 -08:00
Ben Pietrzak
05cb363bf3 Start RecognitionActivity with an upswipe gesture.
Change-Id: I7dd91bef3eb551bb7617307cc9a4777226b5ded7
2012-12-18 11:12:47 -08:00
Robert Ly
d0f35aa9c9 am bfb69176: am d4f4d14a: am 5042b051: am e7c3fba7: Merge "change onEnd() to withEndAction() in javadocs" into jb-mr1-dev
* commit 'bfb69176db2017a10072e4ba4e96d4a33f18e4a8':
  change onEnd() to withEndAction() in javadocs
2012-12-17 15:41:25 -08:00
Robert Ly
bfb69176db am d4f4d14a: am 5042b051: am e7c3fba7: Merge "change onEnd() to withEndAction() in javadocs" into jb-mr1-dev
* commit 'd4f4d14a91492384c4553b82be27b5f135a41227':
  change onEnd() to withEndAction() in javadocs
2012-12-17 15:39:34 -08:00
Robert Ly
d4f4d14a91 am 5042b051: am e7c3fba7: Merge "change onEnd() to withEndAction() in javadocs" into jb-mr1-dev
* commit '5042b051b395f36d3c582202e9e78758934b79a6':
  change onEnd() to withEndAction() in javadocs
2012-12-17 15:37:21 -08:00
Robert Ly
5042b051b3 am e7c3fba7: Merge "change onEnd() to withEndAction() in javadocs" into jb-mr1-dev
* commit 'e7c3fba7929a1cb73bbe6ca84a5140febc09a62a':
  change onEnd() to withEndAction() in javadocs
2012-12-17 15:35:26 -08:00
Robert Ly
8ee2a70f08 change onEnd() to withEndAction() in javadocs
Change-Id: Ic9a04bf86d62249b47dc654052d58797dfc3990c
2012-12-17 15:00:08 -08:00
Svetoslav Ganov
545252f4fd Refactoring of the screen magnification feature.
1. This patch takes care of the case where a magnified window is covering an unmagnigied
   one. One example is a dialog that covers the IME window.

bug:7634430

2. Ensuring that the UI automator tool can connect and correctly dump the screen.

bug:7694696

3. Removed the partial implementation for multi display magnification. It adds
   unnecessary complexity since it cannot be implemented without support for
   input from multiple screens. We will revisit when necessary.

4. Moved the magnified border window as a surface in the window manager.

5. Moved the mediator APIs on the window manager and the policy methods on the
   WindowManagerPolicy.

6. Implemented batch event processing for the accessibility input filter.

Change-Id: I4ebf68b94fb07201e124794f69611ece388ec116
2012-12-14 16:27:27 -08:00
Mita Yun
d44280e288 resolved conflicts for merge of ebcbfb3f to master
Change-Id: I0658dd4a1418fbad91d9663e5b52418a979dc683
2012-12-10 16:50:22 -08:00
Mita Yun
ebcbfb3fc7 am a98cd512: Merge "Use asynchronous messages for input method events." into jb-mr1-aah-dev
* commit 'a98cd5122be643a51f563d02069e8f9409d44394':
  Use asynchronous messages for input method events.
2012-12-10 15:35:05 -08:00
Mita Yun
a98cd5122b Merge "Use asynchronous messages for input method events." into jb-mr1-aah-dev 2012-12-10 14:37:38 -08:00
Adam Powell
ba534dece2 Merge "Update documentation to mention compatibility versioning" 2012-12-10 11:34:19 -08:00
Adam Powell
2c8cc972c3 Update documentation to mention compatibility versioning
Mention changes involving MeasureSpec/RelativeLayout/ImageView
behavior changes when apps target SDK > 17.

Change-Id: I232492a76ac048f7b460d28a87bd84cbbec4e4d7
2012-12-10 11:02:54 -08:00
Adam Powell
e3833c2ba4 Merge "Compatibility measurement hacks when targetSdkVersion <= JB-MR1" 2012-12-07 17:23:24 -08:00
Adam Powell
7da4b73a23 Compatibility measurement hacks when targetSdkVersion <= JB-MR1
All three of these are interrelated!

* Allow broken MeasureSpec values. The long-standing implementation
  of MeasureSpec.makeMeasureSpec has been to add both values rather
  than masking/or-ing the values together. Some old code relied on
  this, such as if it mixed up size/mode params.

* Disable ImageView adjustViewBounds allowing the view to grow beyond
  its initial size. A bug in RelativeLayout in the presence of the
  above MeasureSpec fix causes this not to work properly in apps.

* Allow RelativeLayout to send overflowed/bogus MeasureSpec values
  when measured with MeasureSpec.UNSPECIFIED mode. Some apps have
  custom child views that do not properly handle UNSPECIFIED
  measurements, but the exact overflow semantics caused this to
  generate AT_MOST $REALLYBIG MeasureSpecs for those views instead if
  they were placed inside a RelativeLayout in a scrolling container.

Change-Id: I977a5f1ba5637f0cba3d26a70139e2bcd021fc9c
2012-12-07 16:30:35 -08:00
Sascha Prueter
961ce2afbf am 2588648b: am 203f69f0: Merge "Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE" into jb-mr1.1-dev
* commit '2588648b5268526bdc9ed7fb4e9eac36c8c693dc':
  Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE
2012-12-07 12:40:32 -08:00
Sascha Prueter
2588648b52 am 203f69f0: Merge "Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE" into jb-mr1.1-dev
* commit '203f69f0998d982205b1c9f550576024654e6bc3':
  Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE
2012-12-07 12:38:15 -08:00
Craig Mautner
4abf3f987f Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE
RecentsActivity screenshots are called for very quickly after
WindowStateAnimator prepareSurface(). Without enough delay the
Surface.setLayer call does not propagate to the SurfaceFlinger
and the screenshot is incorrect (black) because it stops sampling
the layers too early.

This fix calls Surface.setSize() for each sampled Surface in
screenshots. setSize forces the SurfaceFlinger to process all
transactions queued before returning from closeTransaction.

Bug 7552304 fixed.

Change-Id: I1911dfa0b09cab713c55f5ba0c612496337a77df

Conflicts:

	services/java/com/android/server/wm/WindowManagerService.java
2012-12-07 11:21:35 -08:00
Chris Craik
95a38b92a0 am a9877672: am 780a53df: am 07efb030: Merge "Defer process mode upon draw" into jb-mr1.1-dev
* commit 'a98776723f12ca1cbe6a8d181a49f179dfd23abd':
  Defer process mode upon draw
2012-12-06 23:21:58 -08:00
Chris Craik
a98776723f am 780a53df: am 07efb030: Merge "Defer process mode upon draw" into jb-mr1.1-dev
* commit '780a53dfb5176165286ff4f1483b408e28ad6eb7':
  Defer process mode upon draw
2012-12-06 18:58:20 -08:00
Mita Yun
ed218c706d Use asynchronous messages for input method events.
Improves the throughput of IME event handling by ensuring that
input events do not get serialized behind UI traversal and
drawing messages such as when the UI is animating.

Added support for creating an asynchronous Handler as part of a
HandlerCaller.  It turns out we should be using an asynchronous
Handler not only in IME dispatch but also in accessibility and
wallpaper events where HandlerCaller is used.  So fixed those
services to also use an asynchronous Handler.

Change-Id: I0b19140c9d5ca6ee300c1a150c48312fd55ed8eb
2012-12-06 18:11:32 -08:00
Eric Laurent
942de41bb1 Merge "more fixes on safe volume warning message" 2012-12-06 11:26:40 -08:00
Eric Laurent
fde16d5879 more fixes on safe volume warning message
Fixes the following problems with safe headphone volume warning message:
- Do not display the warning dialog when screen is off.
- Use the same 3 second timeout as for the volume slider to dismiss the dialog.
- Do not dismiss the warning dialog when touching outside of the slider window
but inside the warning window.
- Disable the volume slider when the warning message is displayed.
- When setting volume directly (touching the volume slider), and the warning
is displayed, save the requested volume and apply it if acknowledged by the user.
- Do not display the warning message when restoring safe volume after 20h of
cumulative listenening

Bug 7658641.

Change-Id: Ib3d1315193a433dad918aa5df78fa071062b2394
2012-12-05 17:59:39 -08:00
Jeff Brown
384e6fe84d am 1edc6111: am 61e21940: am 7fcb5dc5: Merge "Pin electron beam surface to natural orientation." into jb-mr1.1-dev
* commit '1edc61119d145b05f0b5e1323a2fc0fa6a29d4bc':
  Pin electron beam surface to natural orientation.
2012-12-05 12:28:25 -08:00
Chris Craik
780a53dfb5 am 07efb030: Merge "Defer process mode upon draw" into jb-mr1.1-dev
* commit '07efb0303ff031512b7c38c6e7e9c2fcdb5849c0':
  Defer process mode upon draw
2012-12-05 12:25:13 -08:00
Chris Craik
07efb0303f Merge "Defer process mode upon draw" into jb-mr1.1-dev 2012-12-05 12:22:41 -08:00
Jeff Brown
1edc61119d am 61e21940: am 7fcb5dc5: Merge "Pin electron beam surface to natural orientation." into jb-mr1.1-dev
* commit '61e21940ffd643dad1aa6c7c3dc9933815aecd74':
  Pin electron beam surface to natural orientation.
2012-12-04 17:21:00 -08:00
Jeff Brown
61e21940ff am 7fcb5dc5: Merge "Pin electron beam surface to natural orientation." into jb-mr1.1-dev
* commit '7fcb5dc5e9fbad0f183f425e88e576aaca98b0d7':
  Pin electron beam surface to natural orientation.
2012-12-04 17:18:52 -08:00
Chris Craik
9efa222b34 Defer process mode upon draw
Process mode functor execution can be expensive, and cause dropped frames if it
runs between two expensive frames (when there isn't cpu time to spare). Avoid
this by delaying the process mode by an additional 4 ms every time we hit a draw

bug:7670326
Change-Id: I27f42458d4a815183a4b24c7748e05bc361fb943
2012-12-04 15:45:41 -08:00
Jeff Brown
7f3994ec2a Pin electron beam surface to natural orientation.
If a rotation occurred while the electron beam surface was showing,
the surface may have appeared in the wrong orientation.  We fix this
problem by adjusting the transformation matrix of the electron beam
surface according to the display orientation whenever a display
transaction occurs.

The rotation itself is allowed to proceed but it is not visible
to the user.  We must let this happen so that the lock screen
is correctly oriented when the screen is turned back on.

Note that the electron beam surface serves two purposes.

First, it is used to play the screen off animation.
When the animation is finished, the surface remains visible but is
solid black.  Then we turn the screen off.

Second, when we turn the screen back on we leave the electron beam
surface showing until the window manager is ready to show the
new content.  This prevents the user from seeing a flash of the
old content while the screen is being turned on.  When everything is
ready, we dismiss the electron beam.

It's important for the electron beam to remain visible for
the entire duration from just before the screen is turned off until
after the screen is turned on and is ready to be seen.  This is
why we cannot fix the bug by deferring rotation or otherwise
getting in the way of the window manager doing what it needs
to do to get the screen ready when the screen is turned on again.

Bug: 7479740
Change-Id: I2fcf35114ad9b2e00fdfc67793be6df62c8dc4c3
2012-12-04 14:40:23 -08:00
Romain Guy
ee0ff18c36 Merge "Optimize onAttachedTo/onDetachedFromWindow" 2012-12-04 11:05:21 -08:00