summaryrefslogtreecommitdiffstats
path: root/include/ui
Commit message (Collapse)AuthorAgeFilesLines
* remove files that moved to frameworks/nativeMathias Agopian2012-03-0710-1132/+0
| | | | Change-Id: I140d291e520097b1148930f736823650e08488f7
* remove dependency on android_native{s_priv|buffer}.hMathias Agopian2012-02-245-94/+13
| | | | Change-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89
* remove libui dependency on libEGLMathias Agopian2012-02-241-53/+0
| | | | Change-Id: I1194f04085637d5c384e134967249430cc43b6ee
* deprecate L_8, LA_88 and RGB_332 in sdkMathias Agopian2012-02-241-7/+6
| | | | | | | | | | re-add support for pixelformats L_8, LA_88 and RGB_332 in libui for backward compatibility. This may or may not fix 6058926 Bug: 6049685 Change-Id: Ic1b8b4cc994522f7fe664da64c0ef76b98bc6d53
* remove libui's dependency on libpixelflingerMathias Agopian2012-02-211-10/+2
| | | | | | this also remove support for unused pixelformats. Change-Id: I2c759a6d2daa740f3786ed62095def8047ae933d
* frameworks/base refactoring.Mathias Agopian2012-02-178-2071/+0
| | | | | | First step. Move libui includes to their new home: androidfw. Change-Id: Ic042b52fdba72f30edc3cc6339bf30b4c1b99662
* Clean up InputChannel file descriptor data type.Jeff Brown2012-02-141-3/+3
| | | | | | File descriptors are ints. Change-Id: Ie36733bf36ddfeaa9a09ef6ebd7bd2f1788f5d27
* Accurately track the sequence numbers of batched events.Jeff Brown2012-02-131-1/+12
| | | | | | | | | | | | | Instead of sending finished signals immediately when appending to a batch, record the chain of sequence numbers that were part of the batch and then send finished signals all at once when done. This change helps the dispatcher keep track of the true state of the application and can improve ANR detection slightly. This is part of a series of changes to improve input system pipelining. Bug: 5963420 Change-Id: I463c2221e2aa8fdf1c3d670c18e39e59ab69b0db
* Enable deferred input messages to be batched.Jeff Brown2012-02-131-4/+6
| | | | | | | This is part of a series of changes to improve input system pipelining. Bug: 5963420 Change-Id: I6874d2128e880a35c6c33890c858cc6ee22af0fd
* Implement batching of input events on the consumer side.Jeff Brown2012-02-131-7/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | To support this feature, the input dispatcher now allows input events to be acknowledged out-of-order. As a result, the consumer can choose to defer handling an input event from one device (because it is building a big batch) while continuing to handle input events from other devices. The InputEventReceiver now sends a notification when a batch is pending. The ViewRoot handles this notification by scheduling a draw on the next sync. When the draw happens, the InputEventReceiver is instructed to consume all pending batched input events, the input event queue is fully processed (as much as possible), and then the ViewRoot performs traversals as usual. With these changes in place, the input dispatch latency is consistently less than one frame as long as the application itself isn't stalled. Input events are delivered to the application as soon as possible and are handled as soon as possible. In practice, it is no longer possible for an application to build up a huge backlog of touch events. This is part of a series of changes to improve input system pipelining. Bug: 5963420 Change-Id: I42c01117eca78f12d66d49a736c1c122346ccd1d
* Rewrite input transport using sockets.Jeff Brown2012-02-131-173/+112
| | | | | | | | | | | | Since we will not longer be modifying events in place, we don't need to use an ashmem region for input. Simplified the code to instead use a socket of type SOCK_SEQPACKET. This is part of a series of changes to improve input system pipelining. Bug: 5963420 Change-Id: I05909075ed8b61b93900913e44c6db84857340d8
* Preliminary support for clipRect(Rect, Op)Romain Guy2012-02-071-0/+14
| | | | | | | This adds basic support for clip regions. It is currently disabled at compile time. Enabling clip regions will require setting up a stencil buffer. Change-Id: I638616a972276e38737f8ac0633692c3845eaa74
* remove dead/usnused codeMathias Agopian2012-01-111-70/+0
| | | | Change-Id: I6fa2bc6ee01790abd2c1533f043d61a5e5c8d26e
* Merge "SurfaceMediaSource: use the vid enc usage bit" into ics-mr1Jamie Gennis2011-11-291-0/+1
|\
| * SurfaceMediaSource: use the vid enc usage bitJamie Gennis2011-11-211-0/+1
| | | | | | | | | | | | | | This change makes SurfaceMediaSource add the VIDEO_ENC usage bit when allocating its GraphicBuffers rather than the HW_TEXTURE bit. Change-Id: Ie20e225c894fdbc31cad6bb82b3b64c7e98074eb
* | Fix application launch shortcuts.Jeff Brown2011-11-291-0/+4
|/ | | | | | | | | | | | | | | | | Improved quick launch bookmarks to support category-based shortcuts instead of hardcoding package and class names for all apps. Added a set of Intent categories for typical applications on the platform. Added support for some of the HID application launch usages to reduce reliance on quick launch for special purpose keys. Some keyboard vendors have hardcoded launch keys that synthesize "Search + X" type key combos. The goal is to encourage them to stop doing this by implementing more of HID. Bug: 5674723 Change-Id: I79f1147c65a208efc3f67228c9f0fa5cd050c593
* Eliminate hw.keyboards system properties.Jeff Brown2011-11-153-19/+4
| | | | | | | | | | | | Stop using system properties to publish information about the key character map path. Instead, we can retrieve it on demand by asking the window manager. It was possible to exhaust the supply of system properties when repeatedly adding and removing input devices. Bug: 5532806 Change-Id: Idd361a24ad7db2edc185c8546db7fb05f9c28669
* fix the float Rect in OpenGLRenderer to handle NANsMathias Agopian2011-09-191-1/+1
| | | | | | | | | | | | | | | - we want functions like isEmpty() to return true if NANs are involved in the Rect - also clean-up the intersect familly of calls - minor cleanup in the int32_t Rect as well These played a role in http://b/5331198. Bug: 5331198 Change-Id: I5369725ab482e4b83da9f1bd4cee5256e5de75b2
* Velocity Tracker II: The Revenge of Velocity TrackerJeff Brown2011-09-141-9/+40
| | | | | | | | | | | | | | | | | | | | | Bug: 5265529 Rewrote the velocity tracker to fit a polynomial curve to pointer movements using least squares linear regression. The velocity is simply the first derivative of this polynomial. Clients can also obtain an Estimator that describes the complete terms of the estimating polynomial including the coefficient of determination which provides a measure of the quality of the fit (confidence). Enhanced PointerLocation to display the movement curve predicted by the estimator in addition to the velocity vector. By default, the algorithm computes a 2nd degree (quadratic) polynomial based on a 100ms recent history horizon. Change-Id: Id377bef44117fce68fee2c41f90134ce3224d3a1
* Tweak VelocityTracker.Jeff Brown2011-09-091-2/+6
| | | | | | | | | | | | Bug: 5265529 Calculate the velocity using the most recent touch sample as the point of reference instead of the oldest. This change more heavily weights recent touch samples and reduces the sample time window used for calculation. This significantly improves the accuracy of fling gesture detection. Change-Id: Ib1940933e786e5f6a731552a99bcd9400741d55f
* SurfaceFlinger: use the HWC gralloc usage bitJamie Gennis2011-08-221-0/+1
| | | | | | | | This change makes SurfaceFlinger always use the GRALLOC_USAGE_HW_COMPOSER usage bit when allocating buffers that may be passed to the HWComposer. Change-Id: I70362a8ede2b359fb2046853f85149d597465817
* Input system bug fixes, particularly for stylus.Jeff Brown2011-08-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: 5049148 Finished stylus support, including support for indirect stylus and mouse tools. Added TILT axis. When stylus tilt X/Y is available, it is transformed into an orientation and tilt inclination which is a more convenient representation and a simpler extension to the exiting API. Touch devices now only report touch data using a single input source. Previously touch devices in pointer mode would report both absolute touch pad data and cooked pointer gestures. Now we just pick one. The touch device switches modes as needed when the focused application enables/disables pointer gestures. This change greatly simplifies the code and reduces the load on the input dispatcher. Fixed an incorrect assumption that the value of ABS_(MT_)DISTANCE would be zero whenever the stylus was in direct contact. It appears that the correct way to determine whether the stylus is in direct contact (rather than hovering) is by checking for a non-zero reported pressure. Added code to read the initial state of tool buttons and axis values when the input devices are initialized or reset. This fixes problems where the input mapper state might have the wrong initial state. Moved responsibility for cancelling pending inputs (keys down, touches, etc.) to the InputDispatcher by sending it a device reset notification. This frees the InputReader from having to synthesize events during reset, which was cumbersome and somewhat brittle to begin with. Consolidated more of the common accumulator logic from SingleTouchInputMapper and MultiTouchInputMapper into TouchInputMapper. Improved the PointerLocation output. Change-Id: I595d3647f7fd7cb1e3eff8b3c76b85043b5fe2f0
* Refactor input reader to add stylus support.Jeff Brown2011-07-311-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: 5064702 Introduced the concept of an InputListener to further decouple the InputReader from the InputDispatcher. The InputListener exposes just the minimum interface that the InputReader needs to communicate with the outside world. The InputReader passes arguments to the InputListener by reference, which makes it easy to queue them up. Consolidated all of the InputReader locks into one simple global Mutex. The reason this wasn't done before was due to potential re-entrance in outbound calls to the InputDispatcher. To fix this, the InputReader now queues up all of the events it wants to send using a QueuedInputListener, then flushes them outside of the critical section after all of the event processing is finished. Removing all of the InputMapper locks greatly simplifies the implementation. Added tests for new stylus features such as buttons, tool types, and hovering. Added some helpers to BitSet32 to handle common code patterns like finding the first marked bit and clearing it. Fixed a bug in VelocityTracker where the wrong pointer trace could get cleared when handling ACTION_POINTER_DOWN. Oops. Changed PointerCoords so it no longer stores useless zero axis values. Removed editAxisValue because it is not very useful when all zero value axes are absent and therefore cannot be edited in place. Added dispatch of stylus hover events. Added support for distance and tool types. Change-Id: I4cf14d134fcb1db7d10be5f2af7b37deef8f8468
* Adding SurfaceEncoder for encoding FilterFramesPannag Sanketi2011-07-211-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding SurfaceEncoder which can be used to encode custom frame data. In a sense, it is reverse of what SurfaceTexture does. SurfaceEncoder takes in frames from a native window and passes them to an encoder, thus acting like a MediaSource. It uses GRAlloc buffers underneath for passing data. The client side sets the geometry, format in the beginning, which cannot be changed while the recording is going on. Currently, there is no common pixel format that both GRAlloc and HAL understand. Also, the encoder cannot encode using the data from the GRAlloc buffers. The SurfaceEncoder_test examines mainly the buffer passage since true encoding cannot be done at this point. SimpleDummyRecorder 'reads' the frames in the same thread as the start(), whereas DummyRecorder 'reads' in a separate thread much like the MPEG4Writer. The test with DummyRecorder is much closer to the real encoding implementation. Related to bug id: 4529323 Change-Id: I58ec19a150f8fe4d6195196dc44f55002b46c7c8
* am 61220e88: am bbbab26e: am 2c180499: Merge "Revert velocity damping. Bug: ↵Jeff Brown2011-06-071-5/+0
|\ | | | | | | | | | | | | 4364920" into honeycomb-mr2 * commit '61220e880ac4d9d76b7fd50744439e68e929c697': Revert velocity damping. Bug: 4364920
| * Revert velocity damping.Jeff Brown2011-06-061-5/+0
| | | | | | | | | | | | | | | | | | | | Bug: 4364920 Velocity damping proved to be a bad idea because it would cause a significant ramp in velocity at the beginning of a gesture, instead of the desired smooth behavior. Oh well. Change-Id: Ie631946f47ef2492bd71fbed1ab44bbb39a875a8
* | am 56503b8d: am 8186a5f0: am 10c3f367: Merge "Implement pointer ↵Jeff Brown2011-06-031-0/+81
|\ \ | |/ | | | | | | | | | | acceleration." into honeycomb-mr2 * commit '56503b8ddfe5c82407da32e18061e725f668432d': Implement pointer acceleration.
| * Implement pointer acceleration.Jeff Brown2011-06-021-0/+81
| | | | | | | | | | Bug: 4124987 Change-Id: I1f31a28f1594c55302ccabe13fe3ca6d2ff71d50
| * Initial checkin of spot presentation for touchpad gestures. (DO NOT MERGE)Jeff Brown2011-05-251-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added a new PointerIcon API (hidden for now) for loading pointer icons. Fixed a starvation problem in the native Looper's sendMessage implementation which caused new messages to be posted ahead of old messages sent with sendMessageDelayed. Redesigned the touch pad gestures to be defined in terms of more fluid finger / spot movements. The objective is to reinforce the natural mapping between fingers and spots which means there must not be any discontinuities in spot motion relative to the fingers. Removed the SpotController stub and folded its responsibilities into PointerController. Change-Id: Ib647dbd7a57a7f30dd9c6e2c260df51d7bbdd18e
| * Improve VelocityTracker numerical stability. (DO NOT MERGE)Jeff Brown2011-05-231-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaced VelocityTracker with a faster and more accurate native implementation. This avoids the duplicate maintenance overhead of having two implementations. The new algorithm requires that the sample duration be at least 10ms in order to contribute to the velocity calculation. This ensures that the velocity is not severely overestimated when samples arrive in bursts. The new algorithm computes the exponentially weighted moving average using weights based on the relative duration of successive sample periods. The new algorithm is also more careful about how it handles individual pointers going down or up and their effects on the collected movement traces. The intent is to preserve the last known velocity of pointers as they go up while also ensuring that other motion samples do not count twice in that case. Bug: 4086785 Change-Id: I95054102397c4b6a9076dc6a0fc841b4beec7920
| * Use touch pad gestures to manipulate the pointer. (DO NOT MERGE)Jeff Brown2011-05-231-0/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Single finger tap performs a click. 2. Single finger movement moves the pointer (hovers). 3. Button press plus movement performs click or drag. While dragging, the pointer follows the finger that is moving fastest. This is important if there are additional fingers down on the touch pad for the purpose of applying force to an integrated button underneath. 4. Two fingers near each other moving in the same direction are coalesced as a swipe gesture under the pointer. 5. Two or more fingers moving in arbitrary directions are transformed into touches in the vicinity of the pointer. This makes scale/zoom and rotate gestures possible. Added a native VelocityTracker implementation to enable intelligent switching of the active pointer during drags. Change-Id: I7b7ddacc724fb1306e1590dbaebb740d3130d7cd
* | Add initial API for stylus and mouse buttons.Jeff Brown2011-05-132-15/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added the concept of pointer properties in a MotionEvent. This is currently used to track the pointer tool type to enable applications to distinguish finger touches from a stylus. Button states are also reported to application as part of touch events. There are no new actions for detecting changes in button states. The application should instead query the button state from the MotionEvent and take appropriate action as needed. A good time to check the button state is on ACTION_DOWN. As a side-effect, applications that do not support multiple buttons will treat primary, secondary and tertiary buttons identically for all touch events. The back button on the mouse is mapped to KEYCODE_BACK and the forward button is mapped to KEYCODE_FORWARD. Added basic plumbing for the secondary mouse button to invoke the context menu, particularly in lists. Added clamp and split methods on MotionEvent to take care of common filtering operations so we don't have them scattered in multiple places across the framework. Bug: 4260011 Change-Id: Ie992b4d4e00c8f2e76b961da0a902145b27f6d83
* | resolved conflicts for merge of 05be6d6f to masterDianne Hackborn2011-05-091-0/+2
|\ \ | |/ | | | | Change-Id: Ic6a6c5bb300f6f1d43f9ed550b284282b4f16212
| * Better compat mode part one: start scaling windows.Dianne Hackborn2011-05-091-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: android_native_buffer_t -> ANativeWindowBufferIliyan Malchev2011-05-032-9/+9
| | | | | | | | | | Change-Id: Idc2eabaa805bb6d308ebb315872623f28d428417 Signed-off-by: Iliyan Malchev <malchev@google.com>
* | frameworks/base: move ANativeWindow/android_native_buffer_t outIliyan Malchev2011-05-032-449/+2
| | | | | | | | | | | | | | These definitions have been moved to system/core. Change-Id: I021b6b5f2fd72d538b5ccdcb33860ebd3004d9ad Signed-off-by: Iliyan Malchev <malchev@google.com>
* | frameworks/base: make the ANativeWindow query() method constIliyan Malchev2011-05-032-2/+2
| | | | | | | | | | | | | | query() does not modify the object's data, so it needs to be a const method Change-Id: I67c40a3c865461e6f1cc2193fd2d74286ff6ac8f Signed-off-by: Iliyan Malchev <malchev@google.com>
* | get rid of dependency on copybit HAL moduleMathias Agopian2011-04-281-23/+0
| | | | | | | | Change-Id: Ia608099a2426c11a91d33063ba53c93e1eccb428
* | Initial checkin of spot presentation for touchpad gestures.Jeff Brown2011-04-191-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added a new PointerIcon API (hidden for now) for loading pointer icons. Fixed a starvation problem in the native Looper's sendMessage implementation which caused new messages to be posted ahead of old messages sent with sendMessageDelayed. Redesigned the touch pad gestures to be defined in terms of more fluid finger / spot movements. The objective is to reinforce the natural mapping between fingers and spots which means there must not be any discontinuities in spot motion relative to the fingers. Removed the SpotController stub and folded its responsibilities into PointerController. Change-Id: I5126b1e69d95252fda7f2a684c9287e239a57163
* | Merge "Add a little input event consistency verifier."Jeff Brown2011-04-011-4/+12
|\ \
| * | Add a little input event consistency verifier.Jeff Brown2011-03-311-4/+12
| | | | | | | | | | | | | | | | | | | | | The idea is to assist with debugging by identifying cases in which the input event stream is corrupted. Change-Id: I0a00e52bbe2716be1b3dfc7c02a754492d8e7f1f
* | | Merge "Add input filter mechanism for accessibility."Jeff Brown2011-03-301-0/+6
|\ \ \ | |/ /
| * | Add input filter mechanism for accessibility.Jeff Brown2011-03-301-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a mechanism for capturing, filtering, transforming and injecting input events at a very low level before the input dispatcher attempts to deliver them to applications. At this time, the mechanism is only intended to be used by the accessibility system to implement built-in system-level accessibility affordances. The accessibility input filter is currently just a stub. It logs the input events receives and reinjects them unchanged, except that it transforms KEYCODE_Q into KEYCODE_Z. Currently, the accessibility input filter is installed whenever accessibility is enabled. We'll probably want to change that so it only enables the input filter when a screen reader is installed and we want touch exploration. Change-Id: I35764fdf75522b69d09ebd78c9766eb7593c1afe
* | | Revert "retire android_native_window_t"Mathias Agopian2011-03-301-0/+3
|/ / | | | | | | | | | | | | this type is still used by partner's source trees. we will get rid of it in next release's timeframe. This reverts commit 7b49b976277cb3538242151e7dbd24681ddec73e.
* | retire android_native_window_tIliyan Malchev2011-03-231-3/+0
| | | | | | | | | | Change-Id: I232c526168e1a93977d1c2d0fa74c8937cdeb23b Signed-off-by: Iliyan Malchev <malchev@google.com>
* | Merge "Add support for timestamps into SurfaceTexture."Eino-Ville Talvala2011-03-171-3/+29
|\ \
| * | Add support for timestamps into SurfaceTexture.Eino-Ville Talvala2011-03-171-3/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | API addition: The timestamps are represented as nanoseconds from some arbitrary time point. Like the SurfaceTexture transform matrix, the timestamp retrieved by getTimestamp is for the last frame sent to the GL texture using updateTexImage(). Camera HAL change: Expect vendors to set these timestamps using native_window_set_buffers_timestamp(). For now, they are autogenerated by SurfaceTextureClient if set_buffers_timestamp() is never called, but such timing is likely not accurate enough to pass a CTS test. bug:3300707 Change-Id: Ife131a0c2a826ac27342e11b8a6c42ff49e1bea7
* | | Add 3D mode key and others.Jeff Brown2011-03-161-0/+3
|/ / | | | | | | | | | | Related to an AOSP change request. Change-Id: I3f4f84b56a1af626a8783f5ecbb823eb12ba9fbe
* | Merge "Improve VelocityTracker numerical stability."Jeff Brown2011-03-151-3/+26
|\ \
| * | Improve VelocityTracker numerical stability.Jeff Brown2011-03-151-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaced VelocityTracker with a faster and more accurate native implementation. This avoids the duplicate maintenance overhead of having two implementations. The new algorithm requires that the sample duration be at least 10ms in order to contribute to the velocity calculation. This ensures that the velocity is not severely overestimated when samples arrive in bursts. The new algorithm computes the exponentially weighted moving average using weights based on the relative duration of successive sample periods. The new algorithm is also more careful about how it handles individual pointers going down or up and their effects on the collected movement traces. The intent is to preserve the last known velocity of pointers as they go up while also ensuring that other motion samples do not count twice in that case. Bug: 4086785 Change-Id: I2632321232c64d6b8faacdb929e33f60e64dcdd3