5fe7e2a3043d6a8ca933c77ccf95c791b57b221a |
|
04-Oct-2012 |
Dianne Hackborn <hackbod@google.com> |
Fix issue #6968859: home not exiting an ANR'd dream Add a new call to the activity manager for the input dispatcher to report about any pid having an ANR. This has a new feature where it can also tell the activity manager that it is above the system alert layer, so the activity manager can pop its ANR dialog on top of everything if it needs to. (Normally we don't want these dialogs appearing on top of the lock screen.) Also fixed some debugging stuff here and there that was useful as I was working on this -- windows now very clearly include their uid, various system dialogs now have titles so you know what they are in the window manager, etc. Change-Id: Ib8f5d29a5572542cc506e6d338599ab64088ce4e
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
a9d131c30878cacdaeacb4f43a82a7cc5b872453 |
|
21-Sep-2012 |
Jeff Brown <jeffbrown@google.com> |
Disentangle input manager service startup. We will be adding additional callbacks for other components. This change makes it clearer how the input manager is started and where the callbacks are initialized. Bug: 6548391 Change-Id: I4b2a61482126a12b7cf11fafe513f846c76c11e5
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
83d616a9c7b9505153d258511eb5c16b552e268d |
|
10-Sep-2012 |
Jeff Brown <jeffbrown@google.com> |
Make input system aware of multiple displays. The input system needs to know about the window that has focus, even if it is on a secondary display. So now we send it the list of all windows and indicate which display they are on. We filter the list of windows as necessary when delivering touch events. To keep things simple, monitor input channels and input filters are not supported except on the main display. We also do not pass the display id to applications; it is only used inside the input system for now. Properly scale touch coordinates based on the viewport. This will be needed to ensure that touch works on external display as well as when the internal display is being used to simulate a different resolution. Change-Id: I1815579a52fcc852c519b5391fc7ab8767c2dc59
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
59c009776dae5ccbdfb93d7151ff2065ca049dc3 |
|
30-Jul-2012 |
Craig Mautner <cmautner@google.com> |
Introduce multiple displays with DisplayContent. Fix a couple of bugs that turned up. Remove touch/focus from display. Add iterators for access. Respond to comments. Remove TODOs, and some deviceId parameters. Change-Id: Idcdb4f1979aa7b14634d450fd0333d6eff26994d
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
a4b7f2f75e7803193429ec1179fb5e2eb1c6fbda |
|
21-May-2012 |
Dianne Hackborn <hackbod@google.com> |
Use two fingers to work some magic... Change-Id: Ibcb3dbd3d158c22da8277e544d81fb47eadccd49
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
ee172414877d64ebfbcdbadf10691d04a5eee684 |
|
18-Jun-2012 |
Jeff Brown <jeffbrown@google.com> |
Fix an NPE and possible unsynchronized call of Locked method. Bug: 6680398 Change-Id: Id5ef4fa82b2a5ef5e9c3934ca95156143f91e5e2
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
d7a04de16798acc04ec0a89a0c7d9f1cf60d1521 |
|
17-Jun-2012 |
Jeff Brown <jeffbrown@google.com> |
Capture window manager's last ANR state in bug report. Currently just grabbing the window state but we could grab other things as part of the last ANR report. Bug: 6680398 Change-Id: I23aa70907b1bdcb21c8acc556fde196ca790ef6a
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
c042ee2acd8529b95c5dc99240d626e61d2500cd |
|
08-May-2012 |
Jeff Brown <jeffbrown@google.com> |
Disable input dispatch until boot finished. Bug: 6263070 Change-Id: I25e15e3d8af8eb3343c7b684fec345337d9f6aab
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
4532e6158474a263d9d26c2b42240bcf7ce9b172 |
|
05-Apr-2012 |
Jeff Brown <jeffbrown@google.com> |
Refactor input system into its own service. Extracted the input system from the window manager service into a new input manager service. This will make it easier to offer new input-related features to applications. Cleaned up the input manager service JNI layer somewhat to get rid of all of the unnecessary checks for whether the input manager had been initialized. Simplified the callback layer as well. Change-Id: I3175d01307aed1420780d3c093d2694b41edf66e
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
905805ad7ce18a386076fff99264f821bbad9f83 |
|
12-Oct-2011 |
Jeff Brown <jeffbrown@google.com> |
Improve screenshot chord debouncing. Bug: 5011907 Introduce a 150ms delay in handling volume down keys while waiting to see if a power key will follow. Don't trigger the screenshot chord if both volume up and volume down are pressed together. Don't trigger the long-press power menu if volume keys are also pressed. Require the user to press both keys in the chord within the debounce time and continue long-pressing them in order to trigger the screenshot action. Change-Id: I248968d37b73c09d6d08e7f62667c443eba32da0
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
df89e65bf0fcc651d20b208c8d8d0b848fb43418 |
|
07-Oct-2011 |
Dianne Hackborn <hackbod@google.com> |
Fix how we hide and show the nav bar. The PhoneWindowManager is now responsible for hiding and showing the nav bar. For hiding, it just moves it off the screen (easy way to get a nice slide animation on and off). At the same time, we use a new WM facility to put up a fake input window to capture all touch events. When a touch event is received, we force the system UI to clear the navigation hiding bit so it will be shown again. This removes a bunch of code from the system UI for hiding and showing the nav bar. Also removes the code calling from userActivity() to the system UI, which was bad. (Also no longer using userActivity() fixes bugs around re-showing the nav bar due to key presses and other wrong things.) Change-Id: I8c3174873b5bcaa36a92322a51e8f7993e88e551
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
cc4f7db698f88b633a286d8ab1105b28a474cd09 |
|
31-Aug-2011 |
Jeff Brown <jeffbrown@google.com> |
Fix input channel leak. Bug: 5156144 Input channels could leak or simply live longer than they should in some cases. 1. Monitor channels (used by the pointer location overlay) are never unregistered, so they would leak. Added code to handle failures in the receive callback by closing the input channel. 2. The DragState held onto its input window and application handles even after the input channel was disposed. Added code to null these handles out when they are no longer needed. 3. Input channels previously used as input event targets would stick around until the targets were cleared (usually on the next event). Added code to detect when the input dispatcher is in an idle state and to proactively clear the targets then to ensure that resources are released promptly. 4. Native input window handles held onto the input channel even after the input window was removed from the input dispatcher. Consequently, the input channel would not be disposed until the input window handle itself was freed. Since the input window handle is held from managed code, this meant that the window's input channel could stick around until the next GC. Refactored the input window handle to separate the properties (info) and identify (handle) state into different objects. Then modified the dispatcher to release the properties (info) when no longer needed, including the input channel. 7. The pointer location overlay does not actually use its standard input channel, only the monitor input channel. Added INPUT_FEATURE_NO_INPUT_CHANNEL to allow windows to request that they not be provided with an input channel at all. Improved some of the error handling logic to emit the status code as part of the exception message. Change-Id: I01988d4391a70c6678c8b0e936ca051af680b1a5
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
ea4265512c3a2c352f6b99b65094138b96f6de75 |
|
19-Jul-2011 |
Jeff Brown <jeffbrown@google.com> |
Fix drag and drop regression. Bug: 5032496 Change-Id: I6504df1261f563092dadc84155d413f43e921ab8
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
9302c8796fc4dcda08d4bd1e11733848fd4fafaf |
|
14-Jul-2011 |
Jeff Brown <jeffbrown@google.com> |
Refactor input dispatcher use of window/app handles. This change moves the cached window and application input state into the handle objects themselves. It simplifies the dispatcher somewhat because it no longer needs to fix up references to transient InputWindow objects each time the window list is updated. This change will also make it easier to optimize setInputWindows to avoid doing a lot of redundant data copying. In principle, only the modified fields need to be updated. However, for now we continue to update all fields in unison as before. It turns out that the input dispatcher was inappropriately retaining pointers to InputWindow objects within the mWindows InputWindow vector. This vector is copy-on-write so it is possible and the item pointers to change if an editing operation is performed on the vector when it does not exclusively own the underlying SharedBuffer. This bug was uncovered by a previous change that replaced calls to clear() and appendVector() with a simple use of operator= which caused the buffer to be shared. Consequently after editItemAt was called (which it shouldn't have, actually) the buffer was copied and the cached InputWindow pointers became invalid. Oops. This change fixes the problem. Change-Id: I0a259339a6015fcf9113dc4081a6875e047fd425
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
b961cd2c80abf1d2834e5ad690904da4fe56d755 |
|
21-Jun-2011 |
Dianne Hackborn <hackbod@google.com> |
Don't report a resize unless the window's surface actually changed. Change-Id: I133cf8e417753dba60d23a3bfc1c84ace983b335
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
474dcb5c3ddff737c4ac9fc44a1f7be569605e5f |
|
15-Jun-2011 |
Jeff Brown <jeffbrown@google.com> |
Add support for disabling pointer gestures. Made it possible for individual windows to disable pointer gestures while the window has focus using a private API. Cleaned up the InputReader configuration code to enable in-place reconfiguration of input devices without having to reopen them all. This change makes changing the pointer speed somewhat nicer since the pointer doesn't jump back to the origin after each change. Change-Id: I9727419c2f4cb39e16acb4b15fd7fd84526b1239
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
ffb3d939cc78cae523f14a0f8ab37061b5bffc20 |
|
18-May-2011 |
Dianne Hackborn <hackbod@google.com> |
Improve compat mode scaling implementation. Rip out the old funky code for trying to restrict the app window sizes to be within the compat mode range. Instead, we know rely entirely on scaling -- we deal with windows always with the scaling applied so that the window manager doesn't have to deal with them specially. Instead, we just apply the inverse scale at the few points we need to do something the app sees. Change-Id: I785409dd4513b5f738684e1635dc8f770c249651
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
ac8dea12c17aa047e03a358110aeb60401d36aa2 |
|
21-Apr-2011 |
Dianne Hackborn <hackbod@google.com> |
DO NOT MERGE. Integrate from master: Rework display size access. Applications now get the display size from the window manager. No behavior should be changed yet, this is just prep for some real changes. Change-Id: I47bf8b55ecd4476c25ed6482494a7bcc5fae45d2
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
e2515eebf42c763c0a2d9f873a153711778cfc17 |
|
28-Apr-2011 |
Dianne Hackborn <hackbod@google.com> |
Better compat mode part one: start scaling windows. First step of improving app screen size compatibility mode. When running in compat mode, an application's windows are scaled up on the screen rather than being small with 1:1 pixels. Currently we scale the application to fill the entire screen, so don't use an even pixel scaling. Though this may have some negative impact on the appearance (it looks okay to me), it has a big benefit of allowing us to now treat these apps as normal full-screens apps and do the normal transition animations as you move in and out and around in them. This introduces fun stuff in the input system to take care of modifying pointer coordinates to account for the app window surface scaling. The input dispatcher is told about the scale that is being applied to each window and, when there is one, adjusts pointer events appropriately as they are being sent to the transport. Also modified is CompatibilityInfo, which has been greatly simplified to not be so insane and incomprehendible. It is now simple -- when constructed it determines if the given app is compatible with the current screen size and density, and that is that. There are new APIs on ActivityManagerService to put applications that we would traditionally consider compatible with larger screens in compatibility mode. This is the start of a facility to have a UI affordance for a user to switch apps in and out of compatibility. To test switching of modes, there is a new variation of the "am" command to do this: am screen-compat [on|off] [package] This mode switching has the fundamentals of restarting activities when it is changed, though the state still needs to be persisted and the overall mode switch cleaned up. For the few small apps I have tested, things mostly seem to be working well. I know of one problem with the text selection handles being drawn at the wrong position because at some point the window offset is being scaled incorrectly. There are probably other similar issues around the interaction between two windows because the different window coordinate spaces are done in a hacky way instead of being formally integrated into the window manager layout process. Change-Id: Ie038e3746b448135117bd860859d74e360938557
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
56194ebec6212e229f4ccdaa4b187166d20013ef |
|
03-Mar-2011 |
Jeff Brown <jeffbrown@google.com> |
Wake screen from external HID peripherals. Added some plumbing to enable the policy to intercept motion events when the screen is off to handle wakeup if needed. Added a basic concept of an external device to limit the scope of the wakeup policy to external devices only. The wakeup policy for internal devices should be based on explicit rules such as policy flags in key layout files. Moved isTouchEvent to native. Ensure the dispatcher sends the right event type to userActivity for non-touch pointer events like HOVER_MOVE and SCROLL. Bug: 3193114 Change-Id: I15dbd48a16810dfaf226ff7ad117d46908ca4f86
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
f56e1021aaa04c0ee4a0d4e1d4741bb48e41e2b8 |
|
22-Feb-2011 |
Dianne Hackborn <hackbod@google.com> |
Add missing header comment. Change-Id: Iec0c0c90153560d256b95212b7dcf969edf22143
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|
6e1eb76f02ccc9dbc309b938f62d39312da8cafe |
|
18-Feb-2011 |
Dianne Hackborn <hackbod@google.com> |
Explode WindowManagerService. Change-Id: I3d73ed4c9a1b5d730aeffeb2df24ce5e6117d698
/frameworks/base/services/java/com/android/server/wm/InputMonitor.java
|