summaryrefslogtreecommitdiffstats
path: root/include/utils
Commit message (Collapse)AuthorAgeFilesLines
* 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
* libutils Condition are now PRIVATE by defaultMathias Agopian2010-03-191-1/+18
| | | | | | | | | | | Condition must be initialized with SHARED for the old behavior, where they can be used accross processes. Updated the two places android that require SHARED conditions. PRIVATE conditions (and mutexes) use more efficient syscalls. Change-Id: I9a281a4b88206e92ac559c66554e886b9c62db3a
* Add ability for some manifest attributes to reference resources.Dianne Hackborn2010-03-091-2/+2
| | | | | | | | | | | This loosens our restriction on many manifest attributes requiring literal string values, to allow various ones to use values from resources. This is only allowed if the resource value does not change from configuration changes, and the restriction is still in place for attributes that are core to security (requesting permissions) or market operation (used libraries and features etc). Change-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8
* Refactor car mode.Dianne Hackborn2010-03-051-1/+2
| | | | | | | | | | | | | | | | | | Extract all UI behavior from dock observer and ACTION_DOCK_EVENT. Also introduce a desk type to go along with the car type all through the resource system, since we now need to have corresponding high-level broadcasts for desk dock mode. As part of that I also reworked some of the logic for switching modes to all funnel through a single update() call that looks all of the current state to decide what to do next, and fixed various locking issues. In addition I found there were bugs in the configuration change handling causing us to only switch into the car mode config and then never get out of it. Unfortunately now that we are actually changing the configuration for each mode change, the transitions between them are really crummy as we restart all kinds of activities. :(
* Fix issue #2448075: aapt doesn't fix up activity-alias ↵Dianne Hackborn2010-03-011-6/+7
| | | | | | | | | | | | | | android:targetActivity links And related: - The aapt tool now sets a resource configurations sdk level to match any configs that have been set (for example if you specify density your sdk level will be at least 4). - New option to modify the targetPackage attribute of instrumentation. - Clean up of aapt options help. - Fix of UI type values to leave 0 for "unspecified". - Make the UI mode config APIs public.
* Use UTF-8 strings to avoid duplicate caching, part 1Kenny Root2010-02-231-0/+2
| | | | | | | | | | | | StringBlock instances containing UTF-8 strings use a cache to convert into UTF-16, but using that cache and then using a JNI call to NewString causes the UTF-8 string as well as two copies of the UTF-16 string to be held in memory. Getting the UTF-8 string directly from the StringPool eliminates one copy of the UTF-16 string being held in memory. This is part 1. Part 2 will include ResXMLParser optimizations. Change-Id: Ibd4509a485db746d59cd4b9501f544877139276c
* remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).Mathias Agopian2010-02-211-0/+62
| | | | | | | | | Add a Flattenable interface to libutils which can be used to flatten an object into bytestream + filedescriptor stream. Parcel is modified to handle Flattenable. And GraphicBuffer implements Flattenable. Except for the overlay classes libui is now independent of libbinder.
* Totally remove Unicode.cpp and rely on ICUKenny Root2010-02-121-128/+0
| | | | | | | Unicode.cpp used a packed data table for character data that essentially duplicated ICU's functionality. Change-Id: Ia68fe4ac94e89dc68d9a3f45f33f6e648a5500b7
* Excise code from Unicode.cpp that was deadKenny Root2010-02-121-127/+0
| | | | | | | Remove some utility functions for discovering character data that ICU probably took over a while ago. Change-Id: I97abe4de2f51eb2bf48679941258bc501184c3dc
* Introduce special UI modes for night and car usage.Tobias Haamel2010-02-111-16/+69
| | | | | | | | | | | | | | | | | | The device mode is now called ui mode. Furthermore is the order of precedence for the resources now in such a way that the ui mode needs to be specified after the orientation and before the density. The ui mode can be set, like it is done for the locale, as follows: IActivityManager am = ActivityManagerNative.getDefault(); Configuration config = am.getConfiguration(); config.uiMode = Configuration.UI_MODE_TYPE_CAR | Configuration.UI_MODE_NIGHT_ANY; am.updateConfiguration(config); To allow users to disable the car mode and set the night mode the IUiModeManager interface is used. The automatic night mode switching will be added in a separate change.
* Add string resource type inspectionKenny Root2009-12-101-0/+4
| | | | | | | Allows "aapt dump --values resource" to print out whether a string in a ResStringPool is in UTF-8 or UTF-16 encoding. Change-Id: I6478884a70a3b46fee862dece6cb33454fc34843
* Merge change I129483f8 into eclair-mr2Android (Google) Code Review2009-12-083-2/+20
|\ | | | | | | | | * changes: Optional use of UTF-8 strings in resource bundles
| * Optional use of UTF-8 strings in resource bundlesKenny Root2009-12-073-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allows the use of UTF-8 for packing resources instead of the default of UTF-16 for Java. When strings are extracted from the ResStringPool, they are converted to UTF-16 and the result is cached for subsequent calls. When using aapt to package, add in the "-8" switch to pack the resources using UTF-8. This will result in the value, key, and type strings as well as the compiled XML string values taking significantly less space in the final application package in most scenarios. Change-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a
* | Propagate background scheduling class across processes.Dianne Hackborn2009-12-071-0/+18
|/ | | | | | | | | | | This is a very simply implementation: upon receiving an IPC, if the handling thread is at a background priority (the driver will have taken care of propagating this from the calling thread), then stick it in to the background scheduling group. Plus an API to turn this off for the process, which is used by the system process. This also pulls some of the code for managing scheduling classes out of the Process JNI wrappers and in to some convenience methods in thread.h.
* Fix issue #2226370: Resource versions match with equalityDianne Hackborn2009-11-011-2/+2
| | | | | | Also fixed turned-around increment of version number for resources. :( Change-Id: I604137272da984bcd69cee4f174e6b7f2c786e46
* Implement issue #1780928: Need support hiding nav keys.Dianne Hackborn2009-09-151-1/+32
| | | | | | | | | | | | | This implements support for devices whose hardware can hide their navigation keys. It works much like the existing keyboardHidden configuration, and for compatibility uses the same configuration change bit. Also add FLAG_TURN_ON_SCREEN for windows, which has the system cause the screen to be turned on when the window is displayed. Great fun when used with FLAG_SHOW_WHEN_LOCKED! Change-Id: I0b867f19af85cfd8786a14cea194b34f7bdd9b7a
* process: Switch to common cutils sched_policy apiSan Mehat2009-09-121-5/+0
| | | | Signed-off-by: San Mehat <san@google.com>
* Process: Add support for using scheduler policies instead of cgroups.San Mehat2009-09-101-0/+5
| | | | | | Preference is given to cgroups if available. Signed-off-by: San Mehat <san@google.com>
* use broadcast() instead of signal() when signaling the condition-variable ↵Mathias Agopian2009-09-091-0/+3
| | | | | | | | Thread::RequestExitAndWait() is waiting for we could have several thread waiting on the condition and they all need to wake-up. also added a debug "mTid" field in the class, which contains the tid of the thread (as opposed to pthread_t), this is useful when debugging under gdb for instance.
* fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properlyMathias Agopian2009-09-071-1/+1
| | | | | | | | | | | | | | | Rewrote SurfaceFlinger's buffer management from the ground-up. The design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice. The main new feature is to be able to dequeue all buffers at once (very important when there are only two). A client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued. The current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time. eg. Allowed sequence: DQ, DQ, LOCK, Q, LOCK, Q eg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q
* Support for marshalling pointers / intptr_t in Parcel.Andreas Huber2009-08-171-0/+2
| | | | Some refactoring to eliminate code duplication in Parcel implementation.
* am b8546001: Merge change 20878 into donutDianne Hackborn2009-08-121-0/+12
|\ | | | | | | | | | | | | Merge commit 'b8546001701405a76dad7e6235046e592296fac2' * commit 'b8546001701405a76dad7e6235046e592296fac2': Fix issue #2048263: More debugging information
| * Fix issue #2048263: More debugging informationDianne Hackborn2009-08-111-0/+12
| | | | | | | | | | We now hopefully do better about generating the anr reports, and include information about the malloc loaded assets in meminfo.
* | am 25dff70f: Merge change 9039 into donutAndroid (Google) Code Review2009-07-301-2/+4
|\ \ | |/ | | | | | | | | | | Merge commit '25dff70f153529b87f5ad4a92f4de21e8950b1de' * commit '25dff70f153529b87f5ad4a92f4de21e8950b1de': Fix #2018814: System cannot correctly render assets with "wrap_content" attribute in QVGA
| * Fix #2018814: System cannot correctly render assets with "wrap_content" ↵Dianne Hackborn2009-07-291-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | attribute in QVGA It turns out we were not returning the density for anything retrieved from a TypedArray... which basically means any bitmap references from a layout or style...!!! This is now fixed. Also fiddle with the density compatibility mode to turn on smoothing in certain situations, helping the look of things when they need to scale and we couldn't do the scaling at load time.
* | am 9fc20b0e: Merge change 8126 into donutAndroid (Google) Code Review2009-07-211-27/+57
|\ \ | |/ | | | | | | | | | | Merge commit '9fc20b0e381b5fe00b7049ef357c839cd05a33bf' * commit '9fc20b0e381b5fe00b7049ef357c839cd05a33bf': First pass at reworking screen density/size APIs.
| * First pass at reworking screen density/size APIs.Dianne Hackborn2009-07-211-27/+57
| | | | | | | | | | | | | | | | This changes the names of the directories in aapt, to what you see in the list of DpiTest resources. Also adds a new "long" configuration for wide screens, which the platform sets appropriate, and introduces a new kind of resizeability for not large but significantly larger than normal screens which may have compatibility issues.
* | am aad0fcc9: Merge change 7783 into donutAndroid (Google) Code Review2009-07-191-1/+2
|\ \ | |/ | | | | | | | | | | Merge commit 'aad0fcc9619eb72c18a6afff48ebc9d4011f0f54' * commit 'aad0fcc9619eb72c18a6afff48ebc9d4011f0f54': Add "nodpi" density, and expose a bunch of density-related APIs.
| * Add "nodpi" density, and expose a bunch of density-related APIs.Dianne Hackborn2009-07-171-1/+2
| | | | | | | | | | Also update the DpiTest app to use nodpi images, and try to have a mode where it turns off compatibility though it's not quite working.
* | add a ctor to Mutex to specify the type, which can be shared. This is used ↵Mathias Agopian2009-07-131-0/+17
| | | | | | | | by sf and af an soon will allow some optimization in the kernel for non shared mutexes
* | implement Mutex and Condition with pthread instead of calling futex directly.Mathias Agopian2009-07-131-4/+86
| | | | | | | | | | internally pthread uses futex. the implementation consists of simple inlines there are no implementation files anymore.