summaryrefslogtreecommitdiffstats
path: root/include/utils
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Fix include paths.Jeff Brown2010-06-131-1/+1
| | | | Change-Id: Ifda45688f9f02710a74d5d7a7d902bacf1441e2e
* Native input dispatch rewrite work in progress.Jeff Brown2010-06-137-108/+296
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix a typo in Singleton<>Mathias Agopian2010-05-281-3/+5
| | | | | it could cause the sLock field to be emitted several times in different compilation unit. it also prevented to have 2 Singleton<> in the same file.
* added RWLock C++ wrapperMathias Agopian2010-05-191-0/+90
| | | | Change-Id: Ia736bf7f6e2c49915a9ab5669551cf89dafa7961
* ZipUtilsRO rewrite based on Dalvik Zip rewriteKenny Root2010-05-122-10/+27
| | | | | | | | | | | | | | | | | | | | | Change the way zip archives are handled. This is necessary to deal with very large (~1GB) APK files, for which our current approach of mapping the entire file falls over. We now do the classic scavenger hunt for the End Of Central Directory magic on a buffer of data read from the file, instead of a memory-mapped section. We use what we find to create a map that covers the Central Directory only. If the caller is interested in unpacking the file contents, we have to do an additional file read to discover the size of the Local File Header section so we can skip past it. This is based on Change I745fb15abb in the dalvik tree. Both implementations share a common ancestry, but the cost of unifying them outweighs the benefits of wrapping C calls. Change-Id: Iddacb50fe913917c2845708a530872d65fdbe620
* New xlarge screen size.Dianne Hackborn2010-04-281-3/+28
| | | | | | | | | | | | | 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