summaryrefslogtreecommitdiffstats
path: root/include/utils
Commit message (Collapse)AuthorAgeFilesLines
* Improve support for external keyboards.Jeff Brown2010-12-022-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | Use Vendor ID, Product ID and optionally the Version to locate keymaps and configuration files for external devices. Moved virtual key definition parsing to native code so that EventHub can identify touch screens with virtual keys and load the appropriate key layout file. Cleaned up a lot of old code in EventHub. Fixed a regression in ViewRoot's fallback event handling. Fixed a minor bug in FileMap that caused it to try to munmap or close invalid handled when released if the attempt to map the file failed. Added a couple of new String8 conveniences for formatting strings. Modified Tokenizer to fall back to open+read when mmap fails since we can't mmap sysfs files as needed to open the virtual key definition files in /sys/board_properties/. Change-Id: I6ca5e5f9547619fd082ddac47e87ce185da69ee6
* Support non-orientation aware keyboards and other devices.Jeff Brown2010-11-301-0/+100
| | | | | | | | | | | | | | | | | | | | | | | | | Fixed a bug with dpad keys on external keyboards being rotated according to the display orientation by adding a new input device configuration property called "keyboard.orientationAware". Added a mechanism for overriding the key layout and key character map in the input device configuration file using the new "keyboard.layout" and "keyboard.characterMap" properties. Also added "trackball.orientationAware", "touch.orientationAware" and "touch.deviceType" configuration properties. Rewrote the configuration property reading code in native code so that it can be used by EventHub and other components. Added basic support for installable idc, kl, and kcm files in /data/system/devices. However, there is no provision for copying files there yet. Disabled long-press character pickers on full keyboards so that key repeating works as expected. Change-Id: I1bd9f0c3d344421db444e7d271eb09bc8bab4791
* Fix SDK build on Windows due to use of mmap.Jeff Brown2010-11-191-1/+3
| | | | Change-Id: Id4bd9a6f932285c93c5853e540efc20b99876564
* Added support for full PC-style keyboards.Jeff Brown2010-11-182-0/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BREAKING CHANGE: Redesigned the key character map format to accomodate full keyboards with more comprehensive suite of modifiers. Old key character maps will not work anymore and must be updated. The new format is plain text only and it not compiled to a binary file (so the "kcm" tool will be removed in a subsequent check-in). Added FULL keyboard type to support full PC-style keyboards. Added SPECIAL_FUNCTION keyboard type to support special function keypads that do not have any printable keys suitable for typing and only have keys like HOME and POWER Added a special VIRTUAL_KEYBOARD device id convention that maps to a virtual keyboard with a fixed known layout. This is designed to work around issues injecting input events on devices whose built-in keyboard does not have a useful key character map (ie. when the built-in keyboard is a special function keyboard only.) Modified several places where events were being synthesized to use the virtual keyboard. Removed support for the "qwerty" default layout. The new default layout is "Generic". For the most part "qwerty" was being used as a backstop in case the built-in keyboard did not have a key character map (probably because it was a special function keypad) and the framework needed to be able to inject key events anyways. The latter issue is resolved by using the special VIRTUAL_KEYBOARD device instead of BUILT_IN_KEYBOARD. Added the concept of a key modifier behavior so that MetaKeyKeyListener can distinguish between keyboards that use chorded vs. toggled modifiers. Wrote more robust key layout and key character map parsers to enable support for new keyboard features and user installable key maps. Fixed a bug in InputReader generating key ups when keys are released out of sequence. Updated tons of documentation. Currently QwertyKeyListener is being used for full keyboards with autotext and capitalization disabled. This mostly works but causes some problems with character pickers, etc. These issues will be resolved in subsequent changes. Change-Id: Ica48f6097a551141c215bc0d2c6f7b3fb634d354
* Split UTF functions from String8/16Kenny Root2010-11-123-139/+167
| | | | | | | Split out all the UTF-8/16/32 handling code from String8/16 to its own file to allow better reuse of code. Change-Id: If9ce63920edc75472c38da4adce0d13cda9ad2f7
* Add path to get different DPI drawablesKenny Root2010-10-291-3/+5
| | | | | | | | | | | | | Allow a caller to request a different density than their current display allows. This can mean a device displaying mdpi can get a resource that's in hdpi and have it pretend to be in mdpi resolution. If a drawable that's returned is not in the requested density, it will set it at the appropriate density to be scaled up later on. The API for this is hidden currently. Bug: 3134688 Change-Id: I6c3908cbdef4907b8d3f1576df9e3b0e7af1755a
* Revert "Add length-equality test in String operator== checks."Brad Fitzpatrick2010-10-202-6/+2
| | | | This reverts commit e28210d401ae4ed1258b84c9b17a172a757190e8.
* Add length-equality test in String operator== checks.Brad Fitzpatrick2010-10-202-2/+6
| | | | Change-Id: I6ebc6ef85aac4539269f137c1f29f95b9828d4f9
* am dc3ad87c: am 78a76fea: Merge "Revert to using epoll_wait()." into gingerbreadJeff Brown2010-10-161-4/+4
|\ | | | | | | | | | | | | Merge commit 'dc3ad87c04348c925aa86863ed6d25f18a8c6c36' * commit 'dc3ad87c04348c925aa86863ed6d25f18a8c6c36': Revert to using epoll_wait().
| * Merge "Revert to using epoll_wait()." into gingerbreadJeff Brown2010-10-141-4/+4
| |\
| | * Revert to using epoll_wait().Jeff Brown2010-10-071-4/+4
| | | | | | | | | | | | | | | | | | | | | This change depends on the kernel having been patched to use hrtimers instead of jiffies for scheduling epoll timeouts. Change-Id: I216bc1c4f565e67ebcb3d2ba4280cb615932bb9e
* | | Add keycodes and meta-key modifiers to support external keyboards.Jeff Brown2010-10-151-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added new key maps for external keyboards. These maps are intended to be shared across devices by inheriting the "keyboards.mk" product makefile as part of the device's product definition. One of the trickier changes here was to unwind some code in MetaKeyKeyListener that assumed that only the low 8 bits of the meta key state were actually used. The new code abandons bitshifts in favor of simple conditionals that are probably easier to read anyways. The special meta key state constants used by MetaKeyKeyListener are now (@hide) defined in KeyEvent now so as to make it clearer that they share the same code space even if those codes are not valid for KeyEvents. The EventHub now takes care of detecting the appropriate key layout map and key character map when the device is added and sets system properties accordingly. This avoids having duplicate code in KeyCharacterMap to probe for the appropriate key character map although the current probing mechanism has been preserved for legacy reasons just in case. Added support for tracking caps lock, num lock and scroll lock and turning their corresponding LEDs on and off as needed. The key character map format will need to be updated to correctly support PC style external keyboard semantics related to modifier keys. That will come in a later change so caps lock doesn't actually do anything right now except turn the shiny LEDs on and off... Added a list of symbolic key names to KeyEvent and improved the toString() output for debug diagnosis. Having this list in a central place in the framework also allows us to remove it from Monkey so there is one less thing to maintain when we add new keycodes. Bug: 2912307 Change-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4
* | | am 8fda1636: am bdf8034c: Merge "OBB: use PBKDF2 for key generation." into ↵Kenny Root2010-10-151-0/+27
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | gingerbread Merge commit '8fda1636e3e35f060b9046294efd3c062a1fdb84' * commit '8fda1636e3e35f060b9046294efd3c062a1fdb84': OBB: use PBKDF2 for key generation.
| * | OBB: use PBKDF2 for key generation.Kenny Root2010-10-131-0/+27
| |/ | | | | | | | | | | | | | | | | Switch to using PBKDF2 for the key generation for OBBs. Any previously generated OBBs will stop being read correctly. A small pbkdf2gen program is available to allow generation of appropriate keys with the salts. Bug: 3059950 Change-Id: If4305c989fd692fd1150eb270dbf751e09c37295
* | am 22cb4ef8: am d577cfd7: Merge "Switch Looper back to using poll() instead ↵Jeff Brown2010-10-101-3/+59
|\ \ | |/ | | | | | | | | | | | | | | of epoll()." into gingerbread Merge commit '22cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5' * commit '22cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5': Switch Looper back to using poll() instead of epoll().
| * Switch Looper back to using poll() instead of epoll().Jeff Brown2010-10-071-3/+59
| | | | | | | | | | | | | | | | | | | | | | | | Added a couple of micro-optimizations to avoid calling wake() unnecessarily and reduce JNI overhead slightly. Fixed a minor issue where we were not clearing the "next" field of Messages returned by the MessageQueue so the Message would hold on to its successor and potentially prevent the GC from collecting it if the message were leaked somehow. Change-Id: I488d29417ce0cdd7d0e447cda76ec978ef7f811c
* | am bfa33b94: am f84a5918: Merge "Use pread() in ZipFileRO for Linux" into ↵Kenny Root2010-10-051-7/+17
|\ \ | |/ | | | | | | | | | | | | | | gingerbread Merge commit 'bfa33b9484e2c0a019ab81f30261b9696df23a9b' * commit 'bfa33b9484e2c0a019ab81f30261b9696df23a9b': Use pread() in ZipFileRO for Linux
| * Use pread() in ZipFileRO for LinuxKenny Root2010-10-041-7/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AssetManager instances are created by zygote and passed to all its children so that they don't have to individually open frameworks-res.apk. This creates a problem for determining the current file offset when using lseek() on those files, because you can't guarantee the cross-process locking of a mutex. Luckily, Linux implements pread() to get around this suckiness. The problem is that only Linux implements this, so we have to keep the old locking for use on host builds with aapt and friends. aapt doesn't have this same problem of sharing file descriptors across forked processes, so we can keep the local AutoMutex to protect accesses of those files. Change-Id: Ibe9f11499a53fe345f50fbaea438815ec0fd363e
* | am ac754073: am b58b2714: Merge "ZipFileRO: moar logging and wrap close" ↵Kenny Root2010-10-041-9/+2
|\ \ | |/ | | | | | | | | | | | | | | into gingerbread Merge commit 'ac7540733cafcca5bdb1842e1ebcb396ba064583' * commit 'ac7540733cafcca5bdb1842e1ebcb396ba064583': ZipFileRO: moar logging and wrap close
| * ZipFileRO: moar logging and wrap closeKenny Root2010-10-011-9/+2
| | | | | | | | | | | | | | | | | | | | | | | | There is apparently still a race upon reading the entry Local File Header that can't be tracked down, so move the LFH check inside the mutex-protected block so we can call lseek again to see where we are when we log an error. Also, close() can fail so use TEMP_FAILURE_RETRY on it so we don't unwittingly leak file descriptors when Mean Mr. EINTR comes a-knocking. Change-Id: I753abad0bd882fe28f7281c406fa76f64393ef4c
* | am 9785bf0f: am 14a288da: Merge "Add suuport for splitting touch events ↵Jeff Brown2010-09-271-0/+3
|\ \ | |/ | | | | | | | | | | | | | | across windows." into gingerbread Merge commit '9785bf0f2b6b8758aed7ded3b996a2ef0be89919' * commit '9785bf0f2b6b8758aed7ded3b996a2ef0be89919': Add suuport for splitting touch events across windows.
| * Merge "Add suuport for splitting touch events across windows." into gingerbreadJeff Brown2010-09-271-0/+3
| |\
| | * Add suuport for splitting touch events across windows.Jeff Brown2010-09-261-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This feature is currently used to enable dragging the start and end selection handles of a TextView at the same time. Could be used for other things later. Deleted some dead code in ArrowKeyMovementMethod and CursorControllers. Change-Id: I930accd97ca1ca1917aab8a807db2c950fc7b409
* | | am 3e07c000: am 74865ef6: Merge "Add locking around ZIP seeking" into ↵Kenny Root2010-09-241-2/+6
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | gingerbread Merge commit '3e07c0007b10fbda945516acaf6b2a8787a6ca06' * commit '3e07c0007b10fbda945516acaf6b2a8787a6ca06': Add locking around ZIP seeking
| * | Add locking around ZIP seekingKenny Root2010-09-241-2/+6
| |/ | | | | | | | | | | | | | | Since we switched to seeking to the LFH to verify its existence instead of a huge mmap of the file, we have to guarantee that another seek doesn't happen before we finish our read on the LFH. Change-Id: If8135d9cb6f2f5cc4db734eafa4f6b5f6269c62a
* | am 4ec134cd: am cce0cd13: Merge "Looper: use pthread_once for TLS key ↵Jeff Brown2010-09-211-0/+1
|\ \ | |/ | | | | | | | | | | | | | | initialization." into gingerbread Merge commit '4ec134cdba52b663506562c6406b07915820b007' * commit '4ec134cdba52b663506562c6406b07915820b007': Looper: use pthread_once for TLS key initialization.
| * Looper: use pthread_once for TLS key initialization.Jeff Brown2010-09-211-0/+1
| | | | | | | | | | | | | | | | Also fix a Valgrind complaint by zeroing out the entire epoll event struct since otherwise the data field union would be partly uninitialized (but not in a harmful way). Change-Id: I2091ce517e87fcad7c9caf90e2c5e4854a7ca465
* | am bc9599d4: am 838e93ed: Merge "Looper: Drop default parameters in favor of ↵Jeff Brown2010-09-171-6/+9
|\ \ | |/ | | | | | | | | | | | | | | a safer overload." into gingerbread Merge commit 'bc9599d48c79c18d306a13f51af9ef2aac92cdca' * commit 'bc9599d48c79c18d306a13f51af9ef2aac92cdca': Looper: Drop default parameters in favor of a safer overload.
| * Looper: Drop default parameters in favor of a safer overload.Jeff Brown2010-09-161-6/+9
| | | | | | | | | | | | | | | | | | | | | | The idea is that if you're writing code that wants fd/events/data on return from pollOnce() / pollAll() you should really pass in all of those arguments. When I changed the Looper API earlier, it was difficult to ensure that all callers were passing the right parameters since they were relying on default parameters to some degree so usage mistakes would not have been caught by the compiler. Change-Id: I1f2812894270aaf1515017ac1616b6b312d9b565
* | am 14bc6b5d: am 09340a4b: Merge "Replace epoll() with poll() and rename ↵Jeff Brown2010-09-152-219/+210
|\ \ | |/ | | | | | | | | | | | | | | PollLoop to Looper." into gingerbread Merge commit '14bc6b5d0677e5c454a67775c852f90389bb4567' * commit '14bc6b5d0677e5c454a67775c852f90389bb4567': Replace epoll() with poll() and rename PollLoop to Looper.
| * Replace epoll() with poll() and rename PollLoop to Looper.Jeff Brown2010-09-142-219/+210
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of this change, consolidated and cleaned up the Looper API so that there are fewer distinctions between the NDK and non-NDK declarations (no need for two callback types, etc.). Removed the dependence on specific constants from sys/poll.h such as POLLIN. Instead looper.h defines events like LOOPER_EVENT_INPUT for the events that it supports. That should help make any future under-the-hood implementation changes easier. Fixed a couple of compiler warnings along the way. Change-Id: I449a7ec780bf061bdd325452f823673e2b39b6ae
* | am 0f0541e4: am b88102f5: Input dispatcher ANR handling enhancements.Jeff Brown2010-09-121-12/+26
|\ \ | |/ | | | | | | | | | | Merge commit '0f0541e40cfef51eb5c3769e53c1aa853b53aaf6' * commit '0f0541e40cfef51eb5c3769e53c1aa853b53aaf6': Input dispatcher ANR handling enhancements.
| * Input dispatcher ANR handling enhancements.Jeff Brown2010-09-121-12/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "Purge Skia objects from GL caches as needed."Romain Guy2010-09-081-0/+5
|\ \ | |/ |/|
| * Purge Skia objects from GL caches as needed.Romain Guy2010-09-081-0/+5
| | | | | | | | Change-Id: I754c671cf790ad5ae8bf047ad328034217da4ecc
* | Modify native ALooper to take an explicit ident.Dianne Hackborn2010-09-071-3/+11
|/ | | | | | | | The ALooper API now uses an explicit "identifier" for the integer that is returned rather than implicitly using the fd. This allows the APIs that had the fd to be a little more sane. Change-Id: I8507f535ad484c0bdc4a1bd016d87bb09acd7ff0
* Add OBB flags to support overlaysKenny Root2010-08-181-4/+31
| | | | | | | | | | | * Add flags field in OBB footer to support overlays. * Remove unused 'crypto' and 'filesystem' fields in obbtool (could later be supported in the "flags" field of the OBB footer). * Add notes to document OBB classes before shipping. Change-Id: I386b43c32c5edef55210acb5d3322639c08010ba
* Merge "Add support for the PointerLocation overlay." into gingerbreadJeff Brown2010-08-111-1/+2
|\
| * Add support for the PointerLocation overlay.Jeff Brown2010-08-111-1/+2
| | | | | | | | | | | | | | | | | | | | 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
* | Initial tool for OBB manipulationKenny Root2010-08-111-0/+4
| | | | | | | | | | | | | | Add "obbtool" host command for adding, removing, and querying Opaque Binary Blob (OBB) information from a file. Change-Id: Id2ac41e687ad2a500c362616d6738a8ae7e8f5c3
* | More native work.Dianne Hackborn2010-08-112-57/+64
|/ | | | | | | Implement save/restore of state, and add native APIs for configuration information. Change-Id: I2a3ddc2ba605db58d7c8b2b31b9215fb323f90b5
* Fix String8::operator+Kenny Root2010-08-061-2/+2
| | | | | | | | | | | The LHS was ignored when using: String8 + String8 String8 + (const char*) Add unit tests for above. Bug: 2898473 Change-Id: Ic8fe7be668b665c36aaaa3fc3c3ffdfff0fbba25
* Support streaming of compressed assets > 1 megabyteChristopher Tate2010-07-282-9/+84
| | | | | | | | | | | | Compressed assets larger than one megabyte are now decompressed on demand rather than being decompressed in their entirety and held in memory. Reading the data in order is relatively efficient, as is seeking forward in the stream. Seeking backwards is supported, but requires reprocessing the compressed data from the beginning, so is very inefficient. In addition, the size limit on compressed assets has been eliminated. Change-Id: I6e68247957e6c53e7e8ba70d12764695f1723bad
* Fix bug with phantom input windows.Jeff Brown2010-07-161-0/+2
| | | | | | | | | | | 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
* Add native C APIs for working with the Asset ManagerChristopher Tate2010-07-151-1/+19
| | | | Change-Id: I493b142c4b35e5cc1a1e85283bb5dfb306a6d261
* Add new glue code for writing native apps.Dianne Hackborn2010-07-081-8/+34
| | | | | | | | | | | | | | | | | This factors out the boiler-plate code from the sample app to a common glue code that can be used for everyone writing this style of app: a dedicated app thread that takes care of waiting for events and processing them. As part of doing this, ALooper has a new facility to allow registration of fds that cause ALooper_pollOnce() to return the fd that has data, allowing the app to drive the loop without callbacks. Hopefully this makes some people feel better. :) Also do some other cleanup of the ALooper API, plus some actual documentation. Change-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8
* Add OBB file helper classKenny Root2010-07-071-0/+87
| | | | | | | ObbFile is a binary blob that will be used in packaging large files with smaller APKs. Change-Id: Ib1594346cfa2f49113de6565af77c24efbd89d63
* Add new native Looper API.Dianne Hackborn2010-07-021-1/+33
| | | | | | | | | | | This allows us to avoid exposing the file descriptor of the event queue; instead, you attach an event queue to a looper. This will also should allow native apps to be written without the need for a separate thread, by attaching the event queue to the main thread's looper and scheduling their own messages there. Change-Id: I38489282635895ae2cbfacb88599c1b1cad9b239
* Fix a bug in sp<> and wp<> which could cause memory corruptionsMathias Agopian2010-06-241-12/+20
| | | | | | | | | | | when assigning a smart pointer to another one, we need to make sure to read all the data we need from the right-hand-side reference (the assignee) before we decRef the assigned. This bug would cause linked-list of smart-pointers to fail miserably. Change-Id: Ibb554c15fddf909f7737c632b7c80322e80ea93f
* Even more native input dispatch work in progress.Jeff Brown2010-06-173-12/+16
| | | | | | | | | | | | | | | | | Added more tests. Fixed a regression in Vector. Fixed bugs in pointer tracking. Fixed a starvation issue in PollLoop when setting or removing callbacks. Fixed a couple of policy nits. Modified the internal representation of MotionEvent to be more efficient and more consistent. Added code to skip/cancel virtual key processing when there are multiple pointers down. This helps to better disambiguate virtual key presses from stray touches (such as cheek presses). Change-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c