Merge "Create a thread_local cache for textLocale" into mnc-dev
This commit is contained in:
@@ -74,6 +74,13 @@ static void defaultSettingsForAndroid(Paint* paint) {
|
|||||||
paint->setTextEncoding(Paint::kGlyphID_TextEncoding);
|
paint->setTextEncoding(Paint::kGlyphID_TextEncoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct LocaleCacheEntry {
|
||||||
|
std::string javaLocale;
|
||||||
|
std::string languageTag;
|
||||||
|
};
|
||||||
|
|
||||||
|
static thread_local LocaleCacheEntry sSingleEntryLocaleCache;
|
||||||
|
|
||||||
class PaintGlue {
|
class PaintGlue {
|
||||||
public:
|
public:
|
||||||
enum MoveOpt {
|
enum MoveOpt {
|
||||||
@@ -399,10 +406,14 @@ public:
|
|||||||
static void setTextLocale(JNIEnv* env, jobject clazz, jlong objHandle, jstring locale) {
|
static void setTextLocale(JNIEnv* env, jobject clazz, jlong objHandle, jstring locale) {
|
||||||
Paint* obj = reinterpret_cast<Paint*>(objHandle);
|
Paint* obj = reinterpret_cast<Paint*>(objHandle);
|
||||||
ScopedUtfChars localeChars(env, locale);
|
ScopedUtfChars localeChars(env, locale);
|
||||||
char langTag[ULOC_FULLNAME_CAPACITY];
|
if (sSingleEntryLocaleCache.javaLocale != localeChars.c_str()) {
|
||||||
toLanguageTag(langTag, ULOC_FULLNAME_CAPACITY, localeChars.c_str());
|
sSingleEntryLocaleCache.javaLocale = localeChars.c_str();
|
||||||
|
char langTag[ULOC_FULLNAME_CAPACITY];
|
||||||
|
toLanguageTag(langTag, ULOC_FULLNAME_CAPACITY, localeChars.c_str());
|
||||||
|
sSingleEntryLocaleCache.languageTag = langTag;
|
||||||
|
}
|
||||||
|
|
||||||
obj->setTextLocale(langTag);
|
obj->setTextLocale(sSingleEntryLocaleCache.languageTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean isElegantTextHeight(JNIEnv* env, jobject paint) {
|
static jboolean isElegantTextHeight(JNIEnv* env, jobject paint) {
|
||||||
|
|||||||
Reference in New Issue
Block a user