diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/android_runtime/android_view_Surface.h | 2 | ||||
| -rw-r--r-- | include/androidfw/AssetManager.h | 22 | ||||
| -rw-r--r-- | include/androidfw/DisplayEventDispatcher.h | 45 | ||||
| -rw-r--r-- | include/androidfw/LocaleData.h | 36 | ||||
| -rw-r--r-- | include/androidfw/ResourceTypes.h | 40 |
5 files changed, 126 insertions, 19 deletions
diff --git a/include/android_runtime/android_view_Surface.h b/include/android_runtime/android_view_Surface.h index ed8331410fee..b1e552a810e8 100644 --- a/include/android_runtime/android_view_Surface.h +++ b/include/android_runtime/android_view_Surface.h @@ -45,7 +45,9 @@ enum class PublicFormat { RAW_SENSOR = 0x20, PRIVATE = 0x22, YUV_420_888 = 0x23, + RAW_PRIVATE = 0x24, RAW10 = 0x25, + RAW12 = 0x26, JPEG = 0x100, DEPTH_POINT_CLOUD = 0x101, YV12 = 0x32315659, diff --git a/include/androidfw/AssetManager.h b/include/androidfw/AssetManager.h index 0cfd2b103d23..914ac3d52421 100644 --- a/include/androidfw/AssetManager.h +++ b/include/androidfw/AssetManager.h @@ -93,22 +93,24 @@ public: * look in multiple places for assets. It can be either a directory (for * finding assets as raw files on the disk) or a ZIP file. This newly * added asset path will be examined first when searching for assets, - * before any that were previously added. + * before any that were previously added, the assets are added as shared + * library if appAsLib is true. * * Returns "true" on success, "false" on failure. If 'cookie' is non-NULL, * then on success, *cookie is set to the value corresponding to the * newly-added asset source. */ - bool addAssetPath(const String8& path, int32_t* cookie); + bool addAssetPath(const String8& path, int32_t* cookie, + bool appAsLib=false, bool isSystemAsset=false); bool addOverlayPath(const String8& path, int32_t* cookie); - /* + /* * Convenience for adding the standard system assets. Uses the * ANDROID_ROOT environment variable to find them. */ bool addDefaultAssets(); - /* + /* * Iterate over the asset paths in this manager. (Previously * added via addAssetPath() and addDefaultAssets().) On first call, * 'cookie' must be 0, resulting in the first cookie being returned. @@ -117,7 +119,7 @@ public: */ int32_t nextAssetPath(const int32_t cookie) const; - /* + /* * Return an asset path in the manager. 'which' must be between 0 and * countAssetPaths(). */ @@ -220,11 +222,11 @@ public: * the current data. */ bool isUpToDate(); - + /** * Get the known locales for this asset manager object. */ - void getLocales(Vector<String8>* locales) const; + void getLocales(Vector<String8>* locales, bool includeSystemLocales=true) const; /** * Generate idmap data to translate resources IDs between a package and a @@ -236,11 +238,13 @@ public: private: struct asset_path { - asset_path() : path(""), type(kFileTypeRegular), idmap(""), isSystemOverlay(false) {} + asset_path() : path(""), type(kFileTypeRegular), idmap(""), + isSystemOverlay(false), isSystemAsset(false) {} String8 path; FileType type; String8 idmap; bool isSystemOverlay; + bool isSystemAsset; }; Asset* openInPathLocked(const char* fileName, AccessMode mode, @@ -280,7 +284,7 @@ private: const ResTable* getResTable(bool required = true) const; void setLocaleLocked(const char* locale); void updateResourceParamsLocked() const; - bool appendPathToResTable(const asset_path& ap) const; + bool appendPathToResTable(const asset_path& ap, bool appAsLib=false) const; Asset* openIdmapLocked(const struct asset_path& ap) const; diff --git a/include/androidfw/DisplayEventDispatcher.h b/include/androidfw/DisplayEventDispatcher.h new file mode 100644 index 000000000000..3ade2156589a --- /dev/null +++ b/include/androidfw/DisplayEventDispatcher.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <gui/DisplayEventReceiver.h> +#include <utils/Log.h> +#include <utils/Looper.h> + +namespace android { + +class DisplayEventDispatcher : public LooperCallback { +public: + DisplayEventDispatcher(const sp<Looper>& looper); + + status_t initialize(); + void dispose(); + status_t scheduleVsync(); + +protected: + virtual ~DisplayEventDispatcher() = default; + +private: + sp<Looper> mLooper; + DisplayEventReceiver mReceiver; + bool mWaitingForVsync; + + virtual void dispatchVsync(nsecs_t timestamp, int32_t id, uint32_t count) = 0; + virtual void dispatchHotplug(nsecs_t timestamp, int32_t id, bool connected) = 0; + + virtual int handleEvent(int receiveFd, int events, void* data); + bool processPendingEvents(nsecs_t* outTimestamp, int32_t* id, uint32_t* outCount); +}; +} diff --git a/include/androidfw/LocaleData.h b/include/androidfw/LocaleData.h new file mode 100644 index 000000000000..b14829d07f04 --- /dev/null +++ b/include/androidfw/LocaleData.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _LIBS_UTILS_LOCALE_DATA_H +#define _LIBS_UTILS_LOCALE_DATA_H + +#include <stddef.h> +#include <stdint.h> + +namespace android { + +int localeDataCompareRegions( + const char* left_region, const char* right_region, + const char* requested_language, const char* requested_script, + const char* requested_region); + +void localeDataComputeScript(char out[4], const char* language, const char* region); + +bool localeDataIsCloseToUsEnglish(const char* region); + +} // namespace android + +#endif // _LIBS_UTILS_LOCALE_DATA_H diff --git a/include/androidfw/ResourceTypes.h b/include/androidfw/ResourceTypes.h index 5130e6cba430..d8801b8709ee 100644 --- a/include/androidfw/ResourceTypes.h +++ b/include/androidfw/ResourceTypes.h @@ -21,6 +21,7 @@ #define _LIBS_UTILS_RESOURCE_TYPES_H #include <androidfw/Asset.h> +#include <androidfw/LocaleData.h> #include <utils/ByteOrder.h> #include <utils/Errors.h> #include <utils/String16.h> @@ -1128,7 +1129,7 @@ struct ResTable_config // the locale field. char localeScript[4]; - // A single BCP-47 variant subtag. Will vary in length between 5 and 8 + // A single BCP-47 variant subtag. Will vary in length between 4 and 8 // chars. Interpreted in conjunction with the locale field. char localeVariant[8]; @@ -1150,6 +1151,10 @@ struct ResTable_config uint32_t screenConfig2; }; + // If true, it means that the script of the locale was explicitly provided. + // If false, it means that the script was automatically computed. + bool localeScriptWasProvided; + void copyFromDeviceNoSwap(const ResTable_config& o); void copyFromDtoH(const ResTable_config& o); @@ -1228,10 +1233,15 @@ struct ResTable_config inline void clearLocale() { locale = 0; + localeScriptWasProvided = false; memset(localeScript, 0, sizeof(localeScript)); memset(localeVariant, 0, sizeof(localeVariant)); } + inline void computeScript() { + localeDataComputeScript(localeScript, language, country); + } + // Get the 2 or 3 letter language code of this configuration. Trailing // bytes are set to '\0'. size_t unpackLanguage(char language[4]) const; @@ -1255,6 +1265,12 @@ struct ResTable_config // and 0 if they're equally specific. int isLocaleMoreSpecificThan(const ResTable_config &o) const; + // Return true if 'this' is a better locale match than 'o' for the + // 'requested' configuration. Similar to isBetterThan(), this assumes that + // match() has already been used to remove any configurations that don't + // match the requested configuration at all. + bool isLocaleBetterThan(const ResTable_config& o, const ResTable_config* requested) const; + String8 toString() const; }; @@ -1505,7 +1521,7 @@ struct ResTable_lib_entry class DynamicRefTable { public: - DynamicRefTable(uint8_t packageId); + DynamicRefTable(uint8_t packageId, bool appAsLib); // Loads an unmapped reference table from the package. status_t load(const ResTable_lib_header* const header); @@ -1530,6 +1546,7 @@ private: const uint8_t mAssignedPackageId; uint8_t mLookupTable[256]; KeyedVector<String16, uint8_t> mEntries; + bool mAppAsLib; }; bool U16StringToInt(const char16_t* s, size_t len, Res_value* outValue); @@ -1547,12 +1564,13 @@ public: status_t add(const void* data, size_t size, const int32_t cookie=-1, bool copyData=false); status_t add(const void* data, size_t size, const void* idmapData, size_t idmapDataSize, - const int32_t cookie=-1, bool copyData=false); + const int32_t cookie=-1, bool copyData=false, bool appAsLib=false); status_t add(Asset* asset, const int32_t cookie=-1, bool copyData=false); - status_t add(Asset* asset, Asset* idmapAsset, const int32_t cookie=-1, bool copyData=false); + status_t add(Asset* asset, Asset* idmapAsset, const int32_t cookie=-1, bool copyData=false, + bool appAsLib=false, bool isSystemAsset=false); - status_t add(ResTable* src); + status_t add(ResTable* src, bool isSystemAsset=false); status_t addEmpty(const int32_t cookie); status_t getError() const; @@ -1819,9 +1837,10 @@ public: const DynamicRefTable* getDynamicRefTableForCookie(int32_t cookie) const; // Return the configurations (ResTable_config) that we know about - void getConfigurations(Vector<ResTable_config>* configs, bool ignoreMipmap=false) const; + void getConfigurations(Vector<ResTable_config>* configs, bool ignoreMipmap=false, + bool ignoreAndroidPackage=false, bool includeSystemConfigs=true) const; - void getLocales(Vector<String8>* locales) const; + void getLocales(Vector<String8>* locales, bool includeSystemLocales=true) const; // Generate an idmap. // @@ -1857,7 +1876,7 @@ private: typedef Vector<Type*> TypeList; status_t addInternal(const void* data, size_t size, const void* idmapData, size_t idmapDataSize, - const int32_t cookie, bool copyData); + bool appAsLib, const int32_t cookie, bool copyData, bool isSystemAsset=false); ssize_t getResourcePackageIndex(uint32_t resID) const; @@ -1870,10 +1889,11 @@ private: size_t nameLen, uint32_t* outTypeSpecFlags) const; status_t parsePackage( - const ResTable_package* const pkg, const Header* const header); + const ResTable_package* const pkg, const Header* const header, + bool appAsLib, bool isSystemAsset); void print_value(const Package* pkg, const Res_value& value) const; - + mutable Mutex mLock; status_t mError; |