diff options
52 files changed, 551 insertions, 643 deletions
diff --git a/Android.mk b/Android.mk index 1683bdb66930..76d3a13bf96d 100644 --- a/Android.mk +++ b/Android.mk @@ -1024,13 +1024,9 @@ ext_dirs := \ ../../external/nist-sip/java \ ../../external/apache-http/src \ ../../external/tagsoup/src \ - ../../external/libphonenumber/java/src ext_src_files := $(call all-java-files-under,$(ext_dirs)) -ext_res_dirs := \ - ../../external/libphonenumber/java/src - # ==== the library ========================================= include $(CLEAR_VARS) @@ -1038,7 +1034,7 @@ LOCAL_SRC_FILES := $(ext_src_files) LOCAL_NO_STANDARD_LIBRARIES := true LOCAL_JAVA_LIBRARIES := core-libart -LOCAL_JAVA_RESOURCE_DIRS := $(ext_res_dirs) +LOCAL_STATIC_JAVA_LIBRARIES := libphonenumber-platform LOCAL_MODULE_TAGS := optional LOCAL_MODULE := ext diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 33d164090f8f..149d7bcb5f0f 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -525,8 +525,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) JavaVMInitArgs initArgs; char propBuf[PROPERTY_VALUE_MAX]; char stackTraceFileBuf[sizeof("-Xstacktracefile:")-1 + PROPERTY_VALUE_MAX]; - char dexoptFlagsBuf[PROPERTY_VALUE_MAX]; - char enableAssertBuf[sizeof("-ea:")-1 + PROPERTY_VALUE_MAX]; char jniOptsBuf[sizeof("-Xjniopts:")-1 + PROPERTY_VALUE_MAX]; char heapstartsizeOptsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX]; char heapsizeOptsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX]; @@ -536,8 +534,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX]; char backgroundgcOptsBuf[sizeof("-XX:BackgroundGC=")-1 + PROPERTY_VALUE_MAX]; char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX]; - char jitcodecachesizeOptsBuf[sizeof("-Xjitcodecachesize:")-1 + PROPERTY_VALUE_MAX]; - char dalvikVmLibBuf[PROPERTY_VALUE_MAX]; char dex2oatXmsImageFlagsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX]; char dex2oatXmxImageFlagsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX]; char dex2oatXmsFlagsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX]; @@ -566,8 +562,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) char langOption[sizeof("-Duser.language=") + 3]; char regionOption[sizeof("-Duser.region=") + 3]; char lockProfThresholdBuf[sizeof("-Xlockprofthreshold:")-1 + PROPERTY_VALUE_MAX]; - char jitOpBuf[sizeof("-Xjitop:")-1 + PROPERTY_VALUE_MAX]; - char jitMethodBuf[sizeof("-Xjitmethod:")-1 + PROPERTY_VALUE_MAX]; char nativeBridgeLibrary[sizeof("-XX:NativeBridge=") + PROPERTY_VALUE_MAX]; bool checkJni = false; @@ -586,9 +580,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) /* extended JNI checking */ addOption("-Xcheck:jni"); - /* set a cap on JNI global references */ - addOption("-Xjnigreflimit:2000"); - /* with -Xcheck:jni, this provides a JNI function call trace */ //addOption("-verbose:jni"); } @@ -604,30 +595,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) parseRuntimeOption("dalvik.vm.stack-trace-file", stackTraceFileBuf, "-Xstacktracefile:"); - property_get("dalvik.vm.check-dex-sum", propBuf, ""); - if (strcmp(propBuf, "true") == 0) { - /* perform additional DEX checksum tests */ - addOption("-Xcheckdexsum"); - } - - property_get("log.redirect-stdio", propBuf, ""); - if (strcmp(propBuf, "true") == 0) { - /* convert stdout/stderr to log messages */ - addOption("-Xlog-stdio"); - } - - strcpy(enableAssertBuf, "-ea:"); - property_get("dalvik.vm.enableassertions", enableAssertBuf+sizeof("-ea:")-1, ""); - if (enableAssertBuf[sizeof("-ea:")-1] != '\0') { - /* accept "all" to mean "all classes and packages" */ - if (strcmp(enableAssertBuf+sizeof("-ea:")-1, "all") == 0) - enableAssertBuf[3] = '\0'; // truncate to "-ea" - ALOGI("Assertions enabled: '%s'\n", enableAssertBuf); - addOption(enableAssertBuf); - } else { - ALOGV("Assertions disabled\n"); - } - strcpy(jniOptsBuf, "-Xjniopts:"); if (parseRuntimeOption("dalvik.vm.jniopts", jniOptsBuf, "-Xjniopts:")) { ALOGI("JNI options: '%s'\n", jniOptsBuf); @@ -654,14 +621,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) parseRuntimeOption("dalvik.vm.heapstartsize", heapstartsizeOptsBuf, "-Xms", "4m"); parseRuntimeOption("dalvik.vm.heapsize", heapsizeOptsBuf, "-Xmx", "16m"); - // Increase the main thread's interpreter stack size for bug 6315322. - addOption("-XX:mainThreadStackSize=24K"); - - // Set the max jit code cache size. Note: size of 0 will disable the JIT. - parseRuntimeOption("dalvik.vm.jit.codecachesize", - jitcodecachesizeOptsBuf, - "-Xjitcodecachesize:"); - parseRuntimeOption("dalvik.vm.heapgrowthlimit", heapgrowthlimitOptsBuf, "-XX:HeapGrowthLimit="); parseRuntimeOption("dalvik.vm.heapminfree", heapminfreeOptsBuf, "-XX:HeapMinFree="); parseRuntimeOption("dalvik.vm.heapmaxfree", heapmaxfreeOptsBuf, "-XX:HeapMaxFree="); @@ -677,53 +636,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) parseRuntimeOption("dalvik.vm.gctype", gctypeOptsBuf, "-Xgc:"); parseRuntimeOption("dalvik.vm.backgroundgctype", backgroundgcOptsBuf, "-XX:BackgroundGC="); - /* - * Enable or disable dexopt features, such as bytecode verification and - * calculation of register maps for precise GC. - */ - property_get("dalvik.vm.dexopt-flags", dexoptFlagsBuf, ""); - if (dexoptFlagsBuf[0] != '\0') { - const char* opc; - const char* val; - - opc = strstr(dexoptFlagsBuf, "v="); /* verification */ - if (opc != NULL) { - switch (*(opc+2)) { - case 'n': val = "-Xverify:none"; break; - case 'r': val = "-Xverify:remote"; break; - case 'a': val = "-Xverify:all"; break; - default: val = NULL; break; - } - - if (val != NULL) { - addOption(val); - } - } - - opc = strstr(dexoptFlagsBuf, "o="); /* optimization */ - if (opc != NULL) { - switch (*(opc+2)) { - case 'n': val = "-Xdexopt:none"; break; - case 'v': val = "-Xdexopt:verified"; break; - case 'a': val = "-Xdexopt:all"; break; - case 'f': val = "-Xdexopt:full"; break; - default: val = NULL; break; - } - - if (val != NULL) { - addOption(val); - } - } - - opc = strstr(dexoptFlagsBuf, "m=y"); /* register map */ - if (opc != NULL) { - addOption("-Xgenregmap"); - - /* turn on precise GC while we're at it */ - addOption("-Xgc:precise"); - } - } - /* enable debugging; set suspend=y to pause during VM init */ /* use android ADB transport */ addOption("-agentlib:jdwp=transport=dt_android_adb,suspend=n,server=y"); @@ -732,12 +644,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) lockProfThresholdBuf, "-Xlockprofthreshold:"); - /* Force interpreter-only mode for selected opcodes. Eg "1-0a,3c,f1-ff" */ - parseRuntimeOption("dalvik.vm.jit.op", jitOpBuf, "-Xjitop:"); - - /* Force interpreter-only mode for selected methods */ - parseRuntimeOption("dalvik.vm.jit.method", jitMethodBuf, "-Xjitmethod:"); - if (executionMode == kEMIntPortable) { addOption("-Xint:portable"); } else if (executionMode == kEMIntFast) { @@ -746,63 +652,56 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) addOption("-Xint:jit"); } - // libart tolerates libdvm flags, but not vice versa, so only pass some options if libart. - property_get("persist.sys.dalvik.vm.lib.2", dalvikVmLibBuf, "libart.so"); - bool libart = (strncmp(dalvikVmLibBuf, "libart", 6) == 0); - - if (libart) { - // If we booting without the real /data, don't spend time compiling. - property_get("vold.decrypt", voldDecryptBuf, ""); - bool skip_compilation = ((strcmp(voldDecryptBuf, "trigger_restart_min_framework") == 0) || - (strcmp(voldDecryptBuf, "1") == 0)); - - // Extra options for boot.art/boot.oat image generation. - parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xms", dex2oatXmsImageFlagsBuf, - "-Xms", "-Ximage-compiler-option"); - parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xmx", dex2oatXmxImageFlagsBuf, - "-Xmx", "-Ximage-compiler-option"); - if (skip_compilation) { - addOption("-Ximage-compiler-option"); - addOption("--compiler-filter=verify-none"); - } else { - parseCompilerOption("dalvik.vm.image-dex2oat-filter", dex2oatImageCompilerFilterBuf, - "--compiler-filter=", "-Ximage-compiler-option"); - } - - // Make sure there is a preloaded-classes file. - if (!hasFile("/system/etc/preloaded-classes")) { - ALOGE("Missing preloaded-classes file, /system/etc/preloaded-classes not found: %s\n", - strerror(errno)); - goto bail; - } + // If we are booting without the real /data, don't spend time compiling. + property_get("vold.decrypt", voldDecryptBuf, ""); + bool skip_compilation = ((strcmp(voldDecryptBuf, "trigger_restart_min_framework") == 0) || + (strcmp(voldDecryptBuf, "1") == 0)); + + // Extra options for boot.art/boot.oat image generation. + parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xms", dex2oatXmsImageFlagsBuf, + "-Xms", "-Ximage-compiler-option"); + parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xmx", dex2oatXmxImageFlagsBuf, + "-Xmx", "-Ximage-compiler-option"); + if (skip_compilation) { addOption("-Ximage-compiler-option"); - addOption("--image-classes=/system/etc/preloaded-classes"); + addOption("--compiler-filter=verify-none"); + } else { + parseCompilerOption("dalvik.vm.image-dex2oat-filter", dex2oatImageCompilerFilterBuf, + "--compiler-filter=", "-Ximage-compiler-option"); + } - // If there is a compiled-classes file, push it. - if (hasFile("/system/etc/compiled-classes")) { - addOption("-Ximage-compiler-option"); - addOption("--compiled-classes=/system/etc/compiled-classes"); - } + // Make sure there is a preloaded-classes file. + if (!hasFile("/system/etc/preloaded-classes")) { + ALOGE("Missing preloaded-classes file, /system/etc/preloaded-classes not found: %s\n", + strerror(errno)); + goto bail; + } + addOption("-Ximage-compiler-option"); + addOption("--image-classes=/system/etc/preloaded-classes"); - property_get("dalvik.vm.image-dex2oat-flags", dex2oatImageFlagsBuf, ""); - parseExtraOpts(dex2oatImageFlagsBuf, "-Ximage-compiler-option"); - - // Extra options for DexClassLoader. - parseCompilerRuntimeOption("dalvik.vm.dex2oat-Xms", dex2oatXmsFlagsBuf, - "-Xms", "-Xcompiler-option"); - parseCompilerRuntimeOption("dalvik.vm.dex2oat-Xmx", dex2oatXmxFlagsBuf, - "-Xmx", "-Xcompiler-option"); - if (skip_compilation) { - addOption("-Xcompiler-option"); - addOption("--compiler-filter=verify-none"); - } else { - parseCompilerOption("dalvik.vm.dex2oat-filter", dex2oatCompilerFilterBuf, - "--compiler-filter=", "-Xcompiler-option"); - } - property_get("dalvik.vm.dex2oat-flags", dex2oatFlagsBuf, ""); - parseExtraOpts(dex2oatFlagsBuf, "-Xcompiler-option"); + // If there is a compiled-classes file, push it. + if (hasFile("/system/etc/compiled-classes")) { + addOption("-Ximage-compiler-option"); + addOption("--compiled-classes=/system/etc/compiled-classes"); + } + property_get("dalvik.vm.image-dex2oat-flags", dex2oatImageFlagsBuf, ""); + parseExtraOpts(dex2oatImageFlagsBuf, "-Ximage-compiler-option"); + + // Extra options for DexClassLoader. + parseCompilerRuntimeOption("dalvik.vm.dex2oat-Xms", dex2oatXmsFlagsBuf, + "-Xms", "-Xcompiler-option"); + parseCompilerRuntimeOption("dalvik.vm.dex2oat-Xmx", dex2oatXmxFlagsBuf, + "-Xmx", "-Xcompiler-option"); + if (skip_compilation) { + addOption("-Xcompiler-option"); + addOption("--compiler-filter=verify-none"); + } else { + parseCompilerOption("dalvik.vm.dex2oat-filter", dex2oatCompilerFilterBuf, + "--compiler-filter=", "-Xcompiler-option"); } + property_get("dalvik.vm.dex2oat-flags", dex2oatFlagsBuf, ""); + parseExtraOpts(dex2oatFlagsBuf, "-Xcompiler-option"); /* extra options; parse this late so it overrides others */ property_get("dalvik.vm.extra-opts", extraOptsBuf, ""); @@ -820,67 +719,65 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) /* * Set profiler options */ - if (libart) { - // Whether or not the profiler should be enabled. - property_get("dalvik.vm.profiler", propBuf, "0"); - if (propBuf[0] == '1') { - addOption("-Xenable-profiler"); - } + // Whether or not the profiler should be enabled. + property_get("dalvik.vm.profiler", propBuf, "0"); + if (propBuf[0] == '1') { + addOption("-Xenable-profiler"); + } - // Whether the profile should start upon app startup or be delayed by some random offset - // (in seconds) that is bound between 0 and a fixed value. - property_get("dalvik.vm.profile.start-immed", propBuf, "0"); - if (propBuf[0] == '1') { - addOption("-Xprofile-start-immediately"); - } + // Whether the profile should start upon app startup or be delayed by some random offset + // (in seconds) that is bound between 0 and a fixed value. + property_get("dalvik.vm.profile.start-immed", propBuf, "0"); + if (propBuf[0] == '1') { + addOption("-Xprofile-start-immediately"); + } - // Number of seconds during profile runs. - parseRuntimeOption("dalvik.vm.profile.period-secs", profilePeriod, "-Xprofile-period:"); - - // Length of each profile run (seconds). - parseRuntimeOption("dalvik.vm.profile.duration-secs", - profileDuration, - "-Xprofile-duration:"); - - // Polling interval during profile run (microseconds). - parseRuntimeOption("dalvik.vm.profile.interval-us", profileInterval, "-Xprofile-interval:"); - - // Coefficient for period backoff. The the period is multiplied - // by this value after each profile run. - parseRuntimeOption("dalvik.vm.profile.backoff-coeff", profileBackoff, "-Xprofile-backoff:"); - - // Top K% of samples that are considered relevant when - // deciding if the app should be recompiled. - parseRuntimeOption("dalvik.vm.profile.top-k-thr", - profileTopKThreshold, - "-Xprofile-top-k-threshold:"); - - // The threshold after which a change in the structure of the - // top K% profiled samples becomes significant and triggers - // recompilation. A change in profile is considered - // significant if X% (top-k-change-threshold) of the top K% - // (top-k-threshold property) samples has changed. - parseRuntimeOption("dalvik.vm.profile.top-k-ch-thr", - profileTopKChangeThreshold, - "-Xprofile-top-k-change-threshold:"); - - // Type of profile data. - parseRuntimeOption("dalvik.vm.profiler.type", profileType, "-Xprofile-type:"); - - // Depth of bounded stack data - parseRuntimeOption("dalvik.vm.profile.stack-depth", - profileMaxStackDepth, - "-Xprofile-max-stack-depth:"); - - // Native bridge library. "0" means that native bridge is disabled. - property_get("ro.dalvik.vm.native.bridge", propBuf, ""); - if (propBuf[0] == '\0') { - ALOGW("ro.dalvik.vm.native.bridge is not expected to be empty"); - } else if (strcmp(propBuf, "0") != 0) { - snprintf(nativeBridgeLibrary, sizeof("-XX:NativeBridge=") + PROPERTY_VALUE_MAX, - "-XX:NativeBridge=%s", propBuf); - addOption(nativeBridgeLibrary); - } + // Number of seconds during profile runs. + parseRuntimeOption("dalvik.vm.profile.period-secs", profilePeriod, "-Xprofile-period:"); + + // Length of each profile run (seconds). + parseRuntimeOption("dalvik.vm.profile.duration-secs", + profileDuration, + "-Xprofile-duration:"); + + // Polling interval during profile run (microseconds). + parseRuntimeOption("dalvik.vm.profile.interval-us", profileInterval, "-Xprofile-interval:"); + + // Coefficient for period backoff. The the period is multiplied + // by this value after each profile run. + parseRuntimeOption("dalvik.vm.profile.backoff-coeff", profileBackoff, "-Xprofile-backoff:"); + + // Top K% of samples that are considered relevant when + // deciding if the app should be recompiled. + parseRuntimeOption("dalvik.vm.profile.top-k-thr", + profileTopKThreshold, + "-Xprofile-top-k-threshold:"); + + // The threshold after which a change in the structure of the + // top K% profiled samples becomes significant and triggers + // recompilation. A change in profile is considered + // significant if X% (top-k-change-threshold) of the top K% + // (top-k-threshold property) samples has changed. + parseRuntimeOption("dalvik.vm.profile.top-k-ch-thr", + profileTopKChangeThreshold, + "-Xprofile-top-k-change-threshold:"); + + // Type of profile data. + parseRuntimeOption("dalvik.vm.profiler.type", profileType, "-Xprofile-type:"); + + // Depth of bounded stack data + parseRuntimeOption("dalvik.vm.profile.stack-depth", + profileMaxStackDepth, + "-Xprofile-max-stack-depth:"); + + // Native bridge library. "0" means that native bridge is disabled. + property_get("ro.dalvik.vm.native.bridge", propBuf, ""); + if (propBuf[0] == '\0') { + ALOGW("ro.dalvik.vm.native.bridge is not expected to be empty"); + } else if (strcmp(propBuf, "0") != 0) { + snprintf(nativeBridgeLibrary, sizeof("-XX:NativeBridge=") + PROPERTY_VALUE_MAX, + "-XX:NativeBridge=%s", propBuf); + addOption(nativeBridgeLibrary); } initArgs.version = JNI_VERSION_1_4; diff --git a/libs/hwui/Android.common.mk b/libs/hwui/Android.common.mk index 536912a52970..fba7254e6d74 100644 --- a/libs/hwui/Android.common.mk +++ b/libs/hwui/Android.common.mk @@ -1,7 +1,6 @@ # getConfig in external/skia/include/core/SkBitmap.h is deprecated. # Allow Gnu extension: in-class initializer of static 'const float' member. LOCAL_CLANG_CFLAGS += \ - -Wno-unused-parameter \ -Wno-deprecated-declarations \ -Wno-gnu-static-float-init @@ -77,7 +76,6 @@ LOCAL_C_INCLUDES += \ external/skia/src/core LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES -LOCAL_CFLAGS += -Wno-unused-parameter LOCAL_SHARED_LIBRARIES := liblog libcutils libutils libEGL libGLESv2 libskia libui libgui ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT)) @@ -102,4 +100,4 @@ endif # Defaults for ATRACE_TAG and LOG_TAG for libhwui LOCAL_CFLAGS += -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\" -LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
\ No newline at end of file +LOCAL_CFLAGS += -Wall -Werror -Wno-unused-parameter -Wunused -Wunreachable-code diff --git a/libs/hwui/AssetAtlas.h b/libs/hwui/AssetAtlas.h index dba9e62be8f0..1772effb911b 100644 --- a/libs/hwui/AssetAtlas.h +++ b/libs/hwui/AssetAtlas.h @@ -106,7 +106,7 @@ public: friend class AssetAtlas; }; - AssetAtlas(): mTexture(NULL), mImage(NULL), + AssetAtlas(): mTexture(nullptr), mImage(nullptr), mBlendKey(true), mOpaqueKey(false) { } ~AssetAtlas() { terminate(); } diff --git a/libs/hwui/CanvasState.h b/libs/hwui/CanvasState.h index 6883d0a4bc55..9e6a9c3cf63b 100644 --- a/libs/hwui/CanvasState.h +++ b/libs/hwui/CanvasState.h @@ -161,7 +161,7 @@ public: int getHeight() { return mHeight; } inline const Snapshot* currentSnapshot() const { - return mSnapshot != NULL ? mSnapshot.get() : mFirstSnapshot.get(); + return mSnapshot != nullptr ? mSnapshot.get() : mFirstSnapshot.get(); } inline Snapshot* writableSnapshot() { return mSnapshot.get(); } inline const Snapshot* firstSnapshot() const { return mFirstSnapshot.get(); } diff --git a/libs/hwui/DeferredDisplayList.h b/libs/hwui/DeferredDisplayList.h index b6309ff525c9..c92ab91d21bf 100644 --- a/libs/hwui/DeferredDisplayList.h +++ b/libs/hwui/DeferredDisplayList.h @@ -69,7 +69,7 @@ public: class OpStatePair { public: OpStatePair() - : op(NULL), state(NULL) {} + : op(nullptr), state(nullptr) {} OpStatePair(DrawOp* newOp, const DeferredDisplayState* newState) : op(newOp), state(newState) {} OpStatePair(const OpStatePair& other) diff --git a/libs/hwui/DisplayList.h b/libs/hwui/DisplayList.h index e168786b34ef..26637a74f330 100644 --- a/libs/hwui/DisplayList.h +++ b/libs/hwui/DisplayList.h @@ -67,7 +67,7 @@ class DrawRenderNodeOp; /** * Holds data used in the playback a tree of DisplayLists. */ -class PlaybackStateStruct { +struct PlaybackStateStruct { protected: PlaybackStateStruct(OpenGLRenderer& renderer, int replayFlags, LinearAllocator* allocator) : mRenderer(renderer) @@ -96,8 +96,7 @@ struct DeferStateStruct : public PlaybackStateStruct { DeferredDisplayList& mDeferredList; }; -class ReplayStateStruct : public PlaybackStateStruct { -public: +struct ReplayStateStruct : public PlaybackStateStruct { ReplayStateStruct(OpenGLRenderer& renderer, Rect& dirty, int replayFlags) : PlaybackStateStruct(renderer, replayFlags, &mReplayAllocator), mDirty(dirty) {} diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h index 6646da774e9b..0bfcb16b37cb 100644 --- a/libs/hwui/DisplayListRenderer.h +++ b/libs/hwui/DisplayListRenderer.h @@ -74,48 +74,51 @@ public: // ---------------------------------------------------------------------------- // Frame state operations // ---------------------------------------------------------------------------- - virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque); - virtual void prepare(bool opaque) { + virtual void prepareDirty(float left, float top, float right, + float bottom, bool opaque) override; + virtual void prepare(bool opaque) override { prepareDirty(0.0f, 0.0f, mState.getWidth(), mState.getHeight(), opaque); } - virtual bool finish(); + virtual bool finish() override; virtual void interrupt(); virtual void resume(); // ---------------------------------------------------------------------------- // Canvas state operations // ---------------------------------------------------------------------------- - virtual void setViewport(int width, int height) { mState.setViewport(width, height); } + virtual void setViewport(int width, int height) override { mState.setViewport(width, height); } // Save (layer) - virtual int getSaveCount() const { return mState.getSaveCount(); } - virtual int save(int flags); - virtual void restore(); - virtual void restoreToCount(int saveCount); + virtual int getSaveCount() const override { return mState.getSaveCount(); } + virtual int save(int flags) override; + virtual void restore() override; + virtual void restoreToCount(int saveCount) override; virtual int saveLayer(float left, float top, float right, float bottom, - const SkPaint* paint, int flags); + const SkPaint* paint, int flags) override; // Matrix - virtual void getMatrix(SkMatrix* outMatrix) const { mState.getMatrix(outMatrix); } + virtual void getMatrix(SkMatrix* outMatrix) const override { mState.getMatrix(outMatrix); } - virtual void translate(float dx, float dy, float dz = 0.0f); - virtual void rotate(float degrees); - virtual void scale(float sx, float sy); - virtual void skew(float sx, float sy); + virtual void translate(float dx, float dy, float dz = 0.0f) override; + virtual void rotate(float degrees) override; + virtual void scale(float sx, float sy) override; + virtual void skew(float sx, float sy) override; - virtual void setMatrix(const SkMatrix& matrix); - virtual void concatMatrix(const SkMatrix& matrix); + virtual void setMatrix(const SkMatrix& matrix) override; + virtual void concatMatrix(const SkMatrix& matrix) override; // Clip - virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op); - virtual bool clipPath(const SkPath* path, SkRegion::Op op); - virtual bool clipRegion(const SkRegion* region, SkRegion::Op op); + virtual bool clipRect(float left, float top, float right, float bottom, + SkRegion::Op op) override; + virtual bool clipPath(const SkPath* path, SkRegion::Op op) override; + virtual bool clipRegion(const SkRegion* region, SkRegion::Op op) override; // Misc - virtual void setDrawFilter(SkDrawFilter* filter); - virtual const Rect& getLocalClipBounds() const { return mState.getLocalClipBounds(); } + virtual void setDrawFilter(SkDrawFilter* filter) override; + virtual const Rect& getLocalClipBounds() const override { return mState.getLocalClipBounds(); } const Rect& getRenderTargetClipBounds() const { return mState.getRenderTargetClipBounds(); } - virtual bool quickRejectConservative(float left, float top, float right, float bottom) const { + virtual bool quickRejectConservative(float left, float top, + float right, float bottom) const override { return mState.quickRejectConservative(left, top, right, bottom); } @@ -126,57 +129,57 @@ public: // ---------------------------------------------------------------------------- // Canvas draw operations // ---------------------------------------------------------------------------- - virtual void drawColor(int color, SkXfermode::Mode mode); + virtual void drawColor(int color, SkXfermode::Mode mode) override; // Bitmap-based - virtual void drawBitmap(const SkBitmap* bitmap, const SkPaint* paint); + virtual void drawBitmap(const SkBitmap* bitmap, const SkPaint* paint) override; virtual void drawBitmap(const SkBitmap* bitmap, float srcLeft, float srcTop, float srcRight, float srcBottom, float dstLeft, float dstTop, - float dstRight, float dstBottom, const SkPaint* paint); - virtual void drawBitmapData(const SkBitmap* bitmap, const SkPaint* paint); + float dstRight, float dstBottom, const SkPaint* paint) override; + virtual void drawBitmapData(const SkBitmap* bitmap, const SkPaint* paint) override; virtual void drawBitmapMesh(const SkBitmap* bitmap, int meshWidth, int meshHeight, - const float* vertices, const int* colors, const SkPaint* paint); + const float* vertices, const int* colors, const SkPaint* paint) override; virtual void drawPatch(const SkBitmap* bitmap, const Res_png_9patch* patch, - float left, float top, float right, float bottom, const SkPaint* paint); + float left, float top, float right, float bottom, const SkPaint* paint) override; // Shapes virtual void drawRect(float left, float top, float right, float bottom, - const SkPaint* paint); - virtual void drawRects(const float* rects, int count, const SkPaint* paint); + const SkPaint* paint) override; + virtual void drawRects(const float* rects, int count, const SkPaint* paint) override; virtual void drawRoundRect(float left, float top, float right, float bottom, - float rx, float ry, const SkPaint* paint); + float rx, float ry, const SkPaint* paint) override; virtual void drawRoundRect(CanvasPropertyPrimitive* left, CanvasPropertyPrimitive* top, CanvasPropertyPrimitive* right, CanvasPropertyPrimitive* bottom, CanvasPropertyPrimitive* rx, CanvasPropertyPrimitive* ry, CanvasPropertyPaint* paint); - virtual void drawCircle(float x, float y, float radius, const SkPaint* paint); + virtual void drawCircle(float x, float y, float radius, const SkPaint* paint) override; virtual void drawCircle(CanvasPropertyPrimitive* x, CanvasPropertyPrimitive* y, CanvasPropertyPrimitive* radius, CanvasPropertyPaint* paint); virtual void drawOval(float left, float top, float right, float bottom, - const SkPaint* paint); + const SkPaint* paint) override; virtual void drawArc(float left, float top, float right, float bottom, - float startAngle, float sweepAngle, bool useCenter, const SkPaint* paint); - virtual void drawPath(const SkPath* path, const SkPaint* paint); - virtual void drawLines(const float* points, int count, const SkPaint* paint); - virtual void drawPoints(const float* points, int count, const SkPaint* paint); + float startAngle, float sweepAngle, bool useCenter, const SkPaint* paint) override; + virtual void drawPath(const SkPath* path, const SkPaint* paint) override; + virtual void drawLines(const float* points, int count, const SkPaint* paint) override; + virtual void drawPoints(const float* points, int count, const SkPaint* paint) override; // Text virtual void drawText(const char* text, int bytesCount, int count, float x, float y, const float* positions, const SkPaint* paint, float totalAdvance, const Rect& bounds, - DrawOpMode drawOpMode = kDrawOpMode_Immediate); + DrawOpMode drawOpMode = kDrawOpMode_Immediate) override; virtual void drawTextOnPath(const char* text, int bytesCount, int count, const SkPath* path, - float hOffset, float vOffset, const SkPaint* paint); + float hOffset, float vOffset, const SkPaint* paint) override; virtual void drawPosText(const char* text, int bytesCount, int count, - const float* positions, const SkPaint* paint); + const float* positions, const SkPaint* paint) override; // ---------------------------------------------------------------------------- // Canvas draw operations - special // ---------------------------------------------------------------------------- virtual void drawLayer(DeferredLayerUpdater* layerHandle, float x, float y); - virtual void drawRenderNode(RenderNode* renderNode, Rect& dirty, int32_t replayFlags); + virtual void drawRenderNode(RenderNode* renderNode, Rect& dirty, int32_t replayFlags) override; // TODO: rename for consistency - virtual void callDrawGLFunction(Functor* functor, Rect& dirty); + virtual void callDrawGLFunction(Functor* functor, Rect& dirty) override; void setHighContrastText(bool highContrastText) { mHighContrastText = highContrastText; @@ -185,9 +188,9 @@ public: // ---------------------------------------------------------------------------- // CanvasState callbacks // ---------------------------------------------------------------------------- - virtual void onViewportInitialized() { } - virtual void onSnapshotRestored(const Snapshot& removed, const Snapshot& restored) { } - virtual GLuint onGetTargetFbo() const { return -1; } + virtual void onViewportInitialized() override { } + virtual void onSnapshotRestored(const Snapshot& removed, const Snapshot& restored) override { } + virtual GLuint onGetTargetFbo() const override { return -1; } private: @@ -217,7 +220,7 @@ private: template<class T> inline const T* refBuffer(const T* srcBuffer, int32_t count) { - if (!srcBuffer) return NULL; + if (!srcBuffer) return nullptr; T* dstBuffer = (T*) mDisplayListData->allocator.alloc(count * sizeof(T)); memcpy(dstBuffer, srcBuffer, count * sizeof(T)); @@ -229,10 +232,10 @@ private: } inline const SkPath* refPath(const SkPath* path) { - if (!path) return NULL; + if (!path) return nullptr; const SkPath* pathCopy = mPathMap.valueFor(path); - if (pathCopy == NULL || pathCopy->getGenerationID() != path->getGenerationID()) { + if (pathCopy == nullptr || pathCopy->getGenerationID() != path->getGenerationID()) { SkPath* newPathCopy = new SkPath(*path); newPathCopy->setSourcePath(path); @@ -249,7 +252,7 @@ private: } inline const SkPaint* refPaint(const SkPaint* paint) { - if (!paint) return NULL; + if (!paint) return nullptr; // If there is a draw filter apply it here and store the modified paint // so that we don't need to modify the paint every time we access it. @@ -264,7 +267,7 @@ private: const SkPaint* cachedPaint = mPaintMap.valueFor(key); // In the unlikely event that 2 unique paints have the same hash we do a // object equality check to ensure we don't erroneously dedup them. - if (cachedPaint == NULL || *cachedPaint != *paint) { + if (cachedPaint == nullptr || *cachedPaint != *paint) { cachedPaint = new SkPaint(*paint); // replaceValueFor() performs an add if the entry doesn't exist mPaintMap.replaceValueFor(key, cachedPaint); @@ -275,7 +278,7 @@ private: } inline SkPaint* copyPaint(const SkPaint* paint) { - if (!paint) return NULL; + if (!paint) return nullptr; SkPaint* paintCopy = new SkPaint(*paint); mDisplayListData->paints.add(paintCopy); @@ -289,7 +292,7 @@ private: const SkRegion* regionCopy = mRegionMap.valueFor(region); // TODO: Add generation ID to SkRegion - if (regionCopy == NULL) { + if (regionCopy == nullptr) { regionCopy = new SkRegion(*region); // replaceValueFor() performs an add if the entry doesn't exist mRegionMap.replaceValueFor(region, regionCopy); diff --git a/libs/hwui/Fence.h b/libs/hwui/Fence.h index f175e98eea63..fc29f7ac1e5b 100644 --- a/libs/hwui/Fence.h +++ b/libs/hwui/Fence.h @@ -43,7 +43,7 @@ public: Fence() { mDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); if (mDisplay != EGL_NO_DISPLAY) { - mFence = eglCreateSyncKHR(mDisplay, EGL_SYNC_FENCE_KHR, NULL); + mFence = eglCreateSyncKHR(mDisplay, EGL_SYNC_FENCE_KHR, nullptr); } else { mFence = EGL_NO_SYNC_KHR; } diff --git a/libs/hwui/FontRenderer.h b/libs/hwui/FontRenderer.h index e11128c6308a..668ee6488fcc 100644 --- a/libs/hwui/FontRenderer.h +++ b/libs/hwui/FontRenderer.h @@ -66,7 +66,7 @@ public: } ~TextSetupFunctor() { } - status_t operator ()(int what, void* data); + status_t operator ()(int what, void* data) override; OpenGLRenderer* renderer; float x; diff --git a/libs/hwui/GammaFontRenderer.h b/libs/hwui/GammaFontRenderer.h index 46cfd04d9ccc..623df1fa065d 100644 --- a/libs/hwui/GammaFontRenderer.h +++ b/libs/hwui/GammaFontRenderer.h @@ -59,36 +59,36 @@ public: delete mRenderer; } - void clear() { + void clear() override { delete mRenderer; - mRenderer = NULL; + mRenderer = nullptr; } - void flush() { + void flush() override { if (mRenderer) { mRenderer->flushLargeCaches(); } } - FontRenderer& getFontRenderer(const SkPaint* paint) { + FontRenderer& getFontRenderer(const SkPaint* paint) override { if (!mRenderer) { mRenderer = new FontRenderer; } return *mRenderer; } - uint32_t getFontRendererCount() const { + uint32_t getFontRendererCount() const override { return 1; } - uint32_t getFontRendererSize(uint32_t fontRenderer, GLenum format) const { + uint32_t getFontRendererSize(uint32_t fontRenderer, GLenum format) const override { return mRenderer ? mRenderer->getCacheSize(format) : 0; } - void describe(ProgramDescription& description, const SkPaint* paint) const; - void setupProgram(ProgramDescription& description, Program* program) const; + void describe(ProgramDescription& description, const SkPaint* paint) const override; + void setupProgram(ProgramDescription& description, Program* program) const override; - void endPrecaching(); + void endPrecaching() override; private: ShaderGammaFontRenderer(bool multiGamma); @@ -105,18 +105,18 @@ public: delete mRenderer; } - void clear() { + void clear() override { delete mRenderer; - mRenderer = NULL; + mRenderer = nullptr; } - void flush() { + void flush() override { if (mRenderer) { mRenderer->flushLargeCaches(); } } - FontRenderer& getFontRenderer(const SkPaint* paint) { + FontRenderer& getFontRenderer(const SkPaint* paint) override { if (!mRenderer) { mRenderer = new FontRenderer; mRenderer->setGammaTable(&mGammaTable[0]); @@ -124,21 +124,21 @@ public: return *mRenderer; } - uint32_t getFontRendererCount() const { + uint32_t getFontRendererCount() const override { return 1; } - uint32_t getFontRendererSize(uint32_t fontRenderer, GLenum format) const { + uint32_t getFontRendererSize(uint32_t fontRenderer, GLenum format) const override { return mRenderer ? mRenderer->getCacheSize(format) : 0; } - void describe(ProgramDescription& description, const SkPaint* paint) const { + void describe(ProgramDescription& description, const SkPaint* paint) const override { } - void setupProgram(ProgramDescription& description, Program* program) const { + void setupProgram(ProgramDescription& description, Program* program) const override { } - void endPrecaching(); + void endPrecaching() override; private: LookupGammaFontRenderer(); @@ -153,16 +153,16 @@ class Lookup3GammaFontRenderer: public GammaFontRenderer { public: ~Lookup3GammaFontRenderer(); - void clear(); - void flush(); + void clear() override; + void flush() override; - FontRenderer& getFontRenderer(const SkPaint* paint); + FontRenderer& getFontRenderer(const SkPaint* paint) override; - uint32_t getFontRendererCount() const { + uint32_t getFontRendererCount() const override { return kGammaCount; } - uint32_t getFontRendererSize(uint32_t fontRenderer, GLenum format) const { + uint32_t getFontRendererSize(uint32_t fontRenderer, GLenum format) const override { if (fontRenderer >= kGammaCount) return 0; FontRenderer* renderer = mRenderers[fontRenderer]; @@ -171,13 +171,13 @@ public: return renderer->getCacheSize(format); } - void describe(ProgramDescription& description, const SkPaint* paint) const { + void describe(ProgramDescription& description, const SkPaint* paint) const override { } - void setupProgram(ProgramDescription& description, Program* program) const { + void setupProgram(ProgramDescription& description, Program* program) const override { } - void endPrecaching(); + void endPrecaching() override; private: Lookup3GammaFontRenderer(); diff --git a/libs/hwui/GradientCache.h b/libs/hwui/GradientCache.h index c94b6f0e1d01..ef4e0cd72873 100644 --- a/libs/hwui/GradientCache.h +++ b/libs/hwui/GradientCache.h @@ -33,8 +33,8 @@ class Texture; struct GradientCacheEntry { GradientCacheEntry() { count = 0; - colors = NULL; - positions = NULL; + colors = nullptr; + positions = nullptr; } GradientCacheEntry(uint32_t* colors, float* positions, uint32_t count) { @@ -118,7 +118,7 @@ public: * Used as a callback when an entry is removed from the cache. * Do not invoke directly. */ - void operator()(GradientCacheEntry& shader, Texture*& texture); + void operator()(GradientCacheEntry& shader, Texture*& texture) override; /** * Returns the texture associated with the specified shader. diff --git a/libs/hwui/Interpolator.cpp b/libs/hwui/Interpolator.cpp index 0e62d7780780..2623f5387f91 100644 --- a/libs/hwui/Interpolator.cpp +++ b/libs/hwui/Interpolator.cpp @@ -14,12 +14,6 @@ * limitations under the License. */ -// LOG_TAG is being provided by the Makefile, reset. -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "Interpolator" - #include "Interpolator.h" #include <cmath> diff --git a/libs/hwui/LayerCache.cpp b/libs/hwui/LayerCache.cpp index 3216cd2d91d4..d6703f2e5c47 100644 --- a/libs/hwui/LayerCache.cpp +++ b/libs/hwui/LayerCache.cpp @@ -80,10 +80,8 @@ int LayerCache::LayerEntry::compare(const LayerCache::LayerEntry& lhs, void LayerCache::deleteLayer(Layer* layer) { if (layer) { - if (kDebugLayers) { - ALOGD("Destroying layer %dx%d, fbo %d", layer->getWidth(), layer->getHeight(), - layer->getFbo()); - } + LAYER_LOGD("Destroying layer %dx%d, fbo %d", layer->getWidth(), layer->getHeight(), + layer->getFbo()); mSize -= layer->getWidth() * layer->getHeight() * 4; layer->state = Layer::kState_DeletedFromCache; layer->decStrong(0); @@ -112,13 +110,9 @@ Layer* LayerCache::get(RenderState& renderState, const uint32_t width, const uin layer->state = Layer::kState_RemovedFromCache; mSize -= layer->getWidth() * layer->getHeight() * 4; - if (kDebugLayers) { - ALOGD("Reusing layer %dx%d", layer->getWidth(), layer->getHeight()); - } + LAYER_LOGD("Reusing layer %dx%d", layer->getWidth(), layer->getHeight()); } else { - if (kDebugLayers) { - ALOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight); - } + LAYER_LOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight); layer = new Layer(Layer::kType_DisplayList, renderState, entry.mWidth, entry.mHeight); layer->setBlend(true); @@ -143,9 +137,7 @@ void LayerCache::dump() { size_t size = mCache.size(); for (size_t i = 0; i < size; i++) { const LayerEntry& entry = mCache.itemAt(i); - if (kDebugLayers) { - ALOGD(" Layer size %dx%d", entry.mWidth, entry.mHeight); - } + ALOGD(" Layer size %dx%d", entry.mWidth, entry.mHeight); } } @@ -165,10 +157,8 @@ bool LayerCache::put(Layer* layer) { deleteLayer(victim); mCache.removeAt(position); - if (kDebugLayers) { - ALOGD(" Deleting layer %.2fx%.2f", victim->layer.getWidth(), - victim->layer.getHeight()); - } + LAYER_LOGD(" Deleting layer %.2fx%.2f", victim->layer.getWidth(), + victim->layer.getHeight()); } layer->cancelDefer(); diff --git a/libs/hwui/LayerCache.h b/libs/hwui/LayerCache.h index 81810acef163..7d17b9ba41aa 100644 --- a/libs/hwui/LayerCache.h +++ b/libs/hwui/LayerCache.h @@ -26,11 +26,14 @@ namespace uirenderer { class RenderState; -// Debug +/////////////////////////////////////////////////////////////////////////////// +// Defines +/////////////////////////////////////////////////////////////////////////////// + #if DEBUG_LAYERS -static const bool kDebugLayers = true; + #define LAYER_LOGD(...) ALOGD(__VA_ARGS__) #else -static const bool kDebugLayers = false; + #define LAYER_LOGD(...) #endif /////////////////////////////////////////////////////////////////////////////// @@ -93,10 +96,10 @@ public: private: struct LayerEntry { LayerEntry(): - mLayer(NULL), mWidth(0), mHeight(0) { + mLayer(nullptr), mWidth(0), mHeight(0) { } - LayerEntry(const uint32_t layerWidth, const uint32_t layerHeight): mLayer(NULL) { + LayerEntry(const uint32_t layerWidth, const uint32_t layerHeight): mLayer(nullptr) { mWidth = Layer::computeIdealWidth(layerWidth); mHeight = Layer::computeIdealHeight(layerHeight); } diff --git a/libs/hwui/Matrix.h b/libs/hwui/Matrix.h index 1c5c5783bde9..a76013503d5f 100644 --- a/libs/hwui/Matrix.h +++ b/libs/hwui/Matrix.h @@ -210,7 +210,7 @@ public: void decomposeScale(float& sx, float& sy) const; - void dump(const char* label = NULL) const; + void dump(const char* label = nullptr) const; static const Matrix4& identity(); diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 3f67f54a1c6f..1c4c3271ef2a 100755 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -680,7 +680,7 @@ int OpenGLRenderer::saveLayerDeferred(float left, float top, float right, float writableSnapshot()->resetTransform(-bounds.left, -bounds.top, 0.0f); writableSnapshot()->resetClip(clip.left, clip.top, clip.right, clip.bottom); writableSnapshot()->initializeViewport(bounds.getWidth(), bounds.getHeight()); - writableSnapshot()->roundRectClipState = NULL; + writableSnapshot()->roundRectClipState = nullptr; } } @@ -740,10 +740,8 @@ int OpenGLRenderer::saveLayerDeferred(float left, float top, float right, float */ bool OpenGLRenderer::createLayer(float left, float top, float right, float bottom, const SkPaint* paint, int flags, const SkPath* convexMask) { - if (kDebugLayers) { - ALOGD("Requesting layer %.2fx%.2f", right - left, bottom - top); - ALOGD("Layer cache size = %d", mCaches.layerCache.getSize()); - } + LAYER_LOGD("Requesting layer %.2fx%.2f", right - left, bottom - top); + LAYER_LOGD("Layer cache size = %d", mCaches.layerCache.getSize()); const bool fboLayer = flags & SkCanvas::kClipToLayer_SaveFlag; @@ -793,7 +791,7 @@ bool OpenGLRenderer::createLayer(float left, float top, float right, float botto // Unfortunately some drivers will turn the entire target texture black // when reading outside of the window. glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, layer->getWidth(), layer->getHeight(), - 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); layer->setEmpty(false); } @@ -819,7 +817,7 @@ bool OpenGLRenderer::createFboLayer(Layer* layer, Rect& bounds, Rect& clip) { writableSnapshot()->resetTransform(-bounds.left, -bounds.top, 0.0f); writableSnapshot()->resetClip(clip.left, clip.top, clip.right, clip.bottom); writableSnapshot()->initializeViewport(bounds.getWidth(), bounds.getHeight()); - writableSnapshot()->roundRectClipState = NULL; + writableSnapshot()->roundRectClipState = nullptr; endTiling(); debugOverdraw(false, false); @@ -867,7 +865,7 @@ void OpenGLRenderer::composeLayer(const Snapshot& removed, const Snapshot& resto bool clipRequired = false; mState.calculateQuickRejectForScissor(rect.left, rect.top, rect.right, rect.bottom, - &clipRequired, NULL, false); // safely ignore return, should never be rejected + &clipRequired, nullptr, false); // safely ignore return, should never be rejected mCaches.setScissorEnabled(mScissorOptimizationDisabled || clipRequired); if (fboLayer) { @@ -919,12 +917,10 @@ void OpenGLRenderer::composeLayer(const Snapshot& removed, const Snapshot& resto dirtyClip(); // Failing to add the layer to the cache should happen only if the layer is too large - layer->setConvexMask(NULL); + layer->setConvexMask(nullptr); if (!mCaches.layerCache.put(layer)) { - if (kDebugLayers) { - ALOGD("Deleting layer"); - } - layer->decStrong(0); + LAYER_LOGD("Deleting layer"); + layer->decStrong(nullptr); } } @@ -1041,14 +1037,14 @@ public: , mLayer(layer) { } - virtual bool asACustomShader(void** data) const { + virtual bool asACustomShader(void** data) const override { if (data) { *data = static_cast<void*>(mLayer); } return true; } - virtual bool isOpaque() const { + virtual bool isOpaque() const override { return !mLayer->isBlend(); } @@ -1057,13 +1053,13 @@ protected: LOG_ALWAYS_FATAL("LayerShader should never be drawn with raster backend."); } - virtual void flatten(SkWriteBuffer&) const { + virtual void flatten(SkWriteBuffer&) const override { LOG_ALWAYS_FATAL("LayerShader should never be flattened."); } - virtual Factory getFactory() const { + virtual Factory getFactory() const override { LOG_ALWAYS_FATAL("LayerShader should never be created from a stream."); - return NULL; + return nullptr; } private: // Unowned. @@ -1096,7 +1092,7 @@ void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) { const SkPath* maskPath = layer->getConvexMask(); DRAW_DOUBLE_STENCIL(drawConvexPath(*maskPath, &paint)); - paint.setShader(NULL); + paint.setShader(nullptr); restore(); return; @@ -1177,7 +1173,7 @@ void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) { if (numQuads >= gMaxNumberOfQuads) { DRAW_DOUBLE_STENCIL(glDrawElements(GL_TRIANGLES, numQuads * 6, - GL_UNSIGNED_SHORT, NULL)); + GL_UNSIGNED_SHORT, nullptr)); numQuads = 0; mesh = mCaches.getRegionMesh(); } @@ -1185,7 +1181,7 @@ void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) { if (numQuads > 0) { DRAW_DOUBLE_STENCIL(glDrawElements(GL_TRIANGLES, numQuads * 6, - GL_UNSIGNED_SHORT, NULL)); + GL_UNSIGNED_SHORT, nullptr)); } #if DEBUG_LAYERS_AS_REGIONS @@ -1271,7 +1267,7 @@ void OpenGLRenderer::issueIndexedQuadDraw(Vertex* mesh, GLsizei quadsCount) { GLsizei drawCount = min(elementsCount, (GLsizei) gMaxNumberOfQuads * 6); setupDrawIndexedVertices(&mesh[0].x); - glDrawElements(GL_TRIANGLES, drawCount, GL_UNSIGNED_SHORT, NULL); + glDrawElements(GL_TRIANGLES, drawCount, GL_UNSIGNED_SHORT, nullptr); elementsCount -= drawCount; // Though there are 4 vertices in a quad, we use 6 indices per @@ -1412,13 +1408,13 @@ void OpenGLRenderer::restoreDisplayState(const DeferredDisplayState& state, bool * This method should be called when restoreDisplayState() won't be restoring the clip */ void OpenGLRenderer::setupMergedMultiDraw(const Rect* clipRect) { - if (clipRect != NULL) { + if (clipRect != nullptr) { writableSnapshot()->setClip(clipRect->left, clipRect->top, clipRect->right, clipRect->bottom); } else { writableSnapshot()->setClip(0, 0, mState.getWidth(), mState.getHeight()); } dirtyClip(); - mCaches.setScissorEnabled(clipRect != NULL || mScissorOptimizationDisabled); + mCaches.setScissorEnabled(clipRect != nullptr || mScissorOptimizationDisabled); } /////////////////////////////////////////////////////////////////////////////// @@ -1647,21 +1643,21 @@ void OpenGLRenderer::setupDrawColor(float r, float g, float b, float a) { } void OpenGLRenderer::setupDrawShader(const SkShader* shader) { - if (shader != NULL) { + if (shader != nullptr) { SkiaShader::describe(&mCaches, mDescription, mExtensions, *shader); } } void OpenGLRenderer::setupDrawColorFilter(const SkColorFilter* filter) { - if (filter == NULL) { + if (filter == nullptr) { return; } SkXfermode::Mode mode; - if (filter->asColorMode(NULL, &mode)) { + if (filter->asColorMode(nullptr, &mode)) { mDescription.colorOp = ProgramDescription::kColorBlend; mDescription.colorMode = mode; - } else if (filter->asColorMatrix(NULL)) { + } else if (filter->asColorMatrix(nullptr)) { mDescription.colorOp = ProgramDescription::kColorMatrix; } } @@ -1728,7 +1724,8 @@ void OpenGLRenderer::setupDrawModelView(ModelViewMode mode, bool offset, bool dirty = right - left > 0.0f && bottom - top > 0.0f; const Matrix4& transformMatrix = ignoreTransform ? Matrix4::identity() : *currentTransform(); - mCaches.currentProgram->set(writableSnapshot()->getOrthoMatrix(), mModelViewMatrix, transformMatrix, offset); + mCaches.currentProgram->set(writableSnapshot()->getOrthoMatrix(), + mModelViewMatrix, transformMatrix, offset); if (dirty && mTrackDirtyRegions) { if (!ignoreTransform) { dirtyLayer(left, top, right, bottom, *currentTransform()); @@ -1751,7 +1748,7 @@ void OpenGLRenderer::setupDrawPureColorUniforms() { } void OpenGLRenderer::setupDrawShaderUniforms(const SkShader* shader, bool ignoreTransform) { - if (shader == NULL) { + if (shader == nullptr) { return; } @@ -1769,7 +1766,7 @@ void OpenGLRenderer::setupDrawShaderUniforms(const SkShader* shader, bool ignore } void OpenGLRenderer::setupDrawColorFilterUniforms(const SkColorFilter* filter) { - if (NULL == filter) { + if (nullptr == filter) { return; } @@ -1817,7 +1814,7 @@ void OpenGLRenderer::setupDrawTextGammaUniforms() { void OpenGLRenderer::setupDrawSimpleMesh() { bool force = mCaches.bindMeshBuffer(); - mCaches.bindPositionVertexPointer(force, 0); + mCaches.bindPositionVertexPointer(force, nullptr); mCaches.unbindIndicesBuffer(); } @@ -1937,7 +1934,8 @@ void OpenGLRenderer::drawRenderNode(RenderNode* renderNode, Rect& dirty, int32_t } } -void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, const SkPaint* paint) { +void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, + const SkPaint* paint) { float x = left; float y = top; @@ -1957,7 +1955,7 @@ void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, co // No need to check for a UV mapper on the texture object, only ARGB_8888 // bitmaps get packed in the atlas drawAlpha8TextureMesh(x, y, x + texture->width, y + texture->height, texture->id, - paint, (GLvoid*) NULL, (GLvoid*) gMeshTextureOffset, + paint, (GLvoid*) nullptr, (GLvoid*) gMeshTextureOffset, GL_TRIANGLE_STRIP, gMeshCount, ignoreTransform); } @@ -2378,14 +2376,16 @@ void OpenGLRenderer::drawVertexBuffer(float translateX, float translateY, glDrawArrays(GL_TRIANGLE_STRIP, 0, vertexBuffer.getVertexCount()); } else if (mode == VertexBuffer::kOnePolyRingShadow) { mCaches.bindShadowIndicesBuffer(); - glDrawElements(GL_TRIANGLE_STRIP, ONE_POLY_RING_SHADOW_INDEX_COUNT, GL_UNSIGNED_SHORT, 0); + glDrawElements(GL_TRIANGLE_STRIP, ONE_POLY_RING_SHADOW_INDEX_COUNT, + GL_UNSIGNED_SHORT, nullptr); } else if (mode == VertexBuffer::kTwoPolyRingShadow) { mCaches.bindShadowIndicesBuffer(); - glDrawElements(GL_TRIANGLE_STRIP, TWO_POLY_RING_SHADOW_INDEX_COUNT, GL_UNSIGNED_SHORT, 0); + glDrawElements(GL_TRIANGLE_STRIP, TWO_POLY_RING_SHADOW_INDEX_COUNT, + GL_UNSIGNED_SHORT, nullptr); } else if (mode == VertexBuffer::kIndices) { mCaches.unbindIndicesBuffer(); - glDrawElements(GL_TRIANGLE_STRIP, vertexBuffer.getIndexCount(), GL_UNSIGNED_SHORT, - vertexBuffer.getIndices()); + glDrawElements(GL_TRIANGLE_STRIP, vertexBuffer.getIndexCount(), + GL_UNSIGNED_SHORT, vertexBuffer.getIndices()); } if (isAA) { @@ -2495,7 +2495,7 @@ void OpenGLRenderer::drawRoundRect(float left, float top, float right, float bot return; } - if (p->getPathEffect() != 0) { + if (p->getPathEffect() != nullptr) { mCaches.activeTexture(0); const PathTexture* texture = mCaches.pathCache.getRoundRect( right - left, bottom - top, rx, ry, p); @@ -2513,7 +2513,7 @@ void OpenGLRenderer::drawCircle(float x, float y, float radius, const SkPaint* p || paintWillNotDraw(*p)) { return; } - if (p->getPathEffect() != 0) { + if (p->getPathEffect() != nullptr) { mCaches.activeTexture(0); const PathTexture* texture = mCaches.pathCache.getCircle(radius, p); drawShape(x - radius, y - radius, texture, p); @@ -2536,7 +2536,7 @@ void OpenGLRenderer::drawOval(float left, float top, float right, float bottom, return; } - if (p->getPathEffect() != 0) { + if (p->getPathEffect() != nullptr) { mCaches.activeTexture(0); const PathTexture* texture = mCaches.pathCache.getOval(right - left, bottom - top, p); drawShape(left, top, texture, p); @@ -2560,7 +2560,7 @@ void OpenGLRenderer::drawArc(float left, float top, float right, float bottom, } // TODO: support fills (accounting for concavity if useCenter && sweepAngle > 180) - if (p->getStyle() != SkPaint::kStroke_Style || p->getPathEffect() != 0 || useCenter) { + if (p->getStyle() != SkPaint::kStroke_Style || p->getPathEffect() != nullptr || useCenter) { mCaches.activeTexture(0); const PathTexture* texture = mCaches.pathCache.getArc(right - left, bottom - top, startAngle, sweepAngle, useCenter, p); @@ -2596,7 +2596,7 @@ void OpenGLRenderer::drawRect(float left, float top, float right, float bottom, if (p->getStyle() != SkPaint::kFill_Style) { // only fill style is supported by drawConvexPath, since others have to handle joins - if (p->getPathEffect() != 0 || p->getStrokeJoin() != SkPaint::kMiter_Join || + if (p->getPathEffect() != nullptr || p->getStrokeJoin() != SkPaint::kMiter_Join || p->getStrokeMiter() != SkPaintDefaults_MiterLimit) { mCaches.activeTexture(0); const PathTexture* texture = @@ -2665,7 +2665,7 @@ void OpenGLRenderer::drawTextShadow(const SkPaint* paint, const char* text, setupDrawPureColorUniforms(); setupDrawColorFilterUniforms(getColorFilter(paint)); setupDrawShaderUniforms(getShader(paint)); - setupDrawMesh(NULL, (GLvoid*) gMeshTextureOffset); + setupDrawMesh(nullptr, (GLvoid*) gMeshTextureOffset); glDrawArrays(GL_TRIANGLE_STRIP, 0, gMeshCount); } @@ -2677,7 +2677,7 @@ bool OpenGLRenderer::canSkipText(const SkPaint* paint) const { void OpenGLRenderer::drawPosText(const char* text, int bytesCount, int count, const float* positions, const SkPaint* paint) { - if (text == NULL || count == 0 || mState.currentlyIgnored() || canSkipText(paint)) { + if (text == nullptr || count == 0 || mState.currentlyIgnored() || canSkipText(paint)) { return; } @@ -2722,7 +2722,7 @@ void OpenGLRenderer::drawPosText(const char* text, int bytesCount, int count, TextSetupFunctor functor(this, x, y, pureTranslate, alpha, mode, paint); if (fontRenderer.renderPosText(paint, clip, text, 0, bytesCount, count, x, y, - positions, hasActiveLayer ? &bounds : NULL, &functor)) { + positions, hasActiveLayer ? &bounds : nullptr, &functor)) { if (hasActiveLayer) { if (!pureTranslate) { currentTransform()->mapRect(bounds); @@ -2825,7 +2825,7 @@ void OpenGLRenderer::drawText(const char* text, int bytesCount, int count, float if (drawOpMode == kDrawOpMode_Immediate) { // The checks for corner-case ignorable text and quick rejection is only done for immediate // drawing as ops from DeferredDisplayList are already filtered for these - if (text == NULL || count == 0 || mState.currentlyIgnored() || canSkipText(paint) || + if (text == nullptr || count == 0 || mState.currentlyIgnored() || canSkipText(paint) || quickRejectSetupScissor(bounds)) { return; } @@ -2875,7 +2875,7 @@ void OpenGLRenderer::drawText(const char* text, int bytesCount, int count, float fontRenderer.setTextureFiltering(linearFilter); // TODO: Implement better clipping for scaled/rotated text - const Rect* clip = !pureTranslate ? NULL : mState.currentClipRect(); + const Rect* clip = !pureTranslate ? nullptr : mState.currentClipRect(); Rect layerBounds(FLT_MAX / 2.0f, FLT_MAX / 2.0f, FLT_MIN / 2.0f, FLT_MIN / 2.0f); bool status; @@ -2887,10 +2887,10 @@ void OpenGLRenderer::drawText(const char* text, int bytesCount, int count, float SkPaint paintCopy(*paint); paintCopy.setTextAlign(SkPaint::kLeft_Align); status = fontRenderer.renderPosText(&paintCopy, clip, text, 0, bytesCount, count, x, y, - positions, hasActiveLayer ? &layerBounds : NULL, &functor, forceFinish); + positions, hasActiveLayer ? &layerBounds : nullptr, &functor, forceFinish); } else { status = fontRenderer.renderPosText(paint, clip, text, 0, bytesCount, count, x, y, - positions, hasActiveLayer ? &layerBounds : NULL, &functor, forceFinish); + positions, hasActiveLayer ? &layerBounds : nullptr, &functor, forceFinish); } if ((status || drawOpMode != kDrawOpMode_Immediate) && hasActiveLayer) { @@ -2907,7 +2907,7 @@ void OpenGLRenderer::drawText(const char* text, int bytesCount, int count, float void OpenGLRenderer::drawTextOnPath(const char* text, int bytesCount, int count, const SkPath* path, float hOffset, float vOffset, const SkPaint* paint) { - if (text == NULL || count == 0 || mState.currentlyIgnored() || canSkipText(paint)) { + if (text == nullptr || count == 0 || mState.currentlyIgnored() || canSkipText(paint)) { return; } @@ -2929,7 +2929,7 @@ void OpenGLRenderer::drawTextOnPath(const char* text, int bytesCount, int count, const bool hasActiveLayer = hasLayer(); if (fontRenderer.renderTextOnPath(paint, clip, text, 0, bytesCount, count, path, - hOffset, vOffset, hasActiveLayer ? &bounds : NULL, &functor)) { + hOffset, vOffset, hasActiveLayer ? &bounds : nullptr, &functor)) { if (hasActiveLayer) { currentTransform()->mapRect(bounds); dirtyLayerUnchecked(bounds, getRegion()); @@ -2960,7 +2960,7 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y) { return; } - mat4* transform = NULL; + mat4* transform = nullptr; if (layer->isTextureLayer()) { transform = &layer->getTransform(); if (!transform->isIdentity()) { @@ -2970,8 +2970,9 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y) { } bool clipRequired = false; - const bool rejected = mState.calculateQuickRejectForScissor(x, y, - x + layer->layer.getWidth(), y + layer->layer.getHeight(), &clipRequired, NULL, false); + const bool rejected = mState.calculateQuickRejectForScissor( + x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight(), + &clipRequired, nullptr, false); if (rejected) { if (transform && !transform->isIdentity()) { @@ -3025,7 +3026,7 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y) { setupDrawMeshIndices(&mesh[0].x, &mesh[0].u); DRAW_DOUBLE_STENCIL_IF(!layer->hasDrawnSinceUpdate, - glDrawElements(GL_TRIANGLES, drawCount, GL_UNSIGNED_SHORT, NULL)); + glDrawElements(GL_TRIANGLES, drawCount, GL_UNSIGNED_SHORT, nullptr)); elementsCount -= drawCount; // Though there are 4 vertices in a quad, we use 6 indices per @@ -3099,7 +3100,7 @@ void OpenGLRenderer::drawPathTexture(const PathTexture* texture, setupDrawPureColorUniforms(); setupDrawColorFilterUniforms(getColorFilter(paint)); setupDrawShaderUniforms(getShader(paint)); - setupDrawMesh(NULL, (GLvoid*) gMeshTextureOffset); + setupDrawMesh(nullptr, (GLvoid*) gMeshTextureOffset); glDrawArrays(GL_TRIANGLE_STRIP, 0, gMeshCount); } @@ -3287,7 +3288,7 @@ void OpenGLRenderer::drawTextureRect(float left, float top, float right, float b Texture* texture, const SkPaint* paint) { texture->setWrap(GL_CLAMP_TO_EDGE, true); - GLvoid* vertices = (GLvoid*) NULL; + GLvoid* vertices = (GLvoid*) nullptr; GLvoid* texCoords = (GLvoid*) gMeshTextureOffset; if (texture->uvMapper) { @@ -3370,7 +3371,7 @@ void OpenGLRenderer::drawIndexedTextureMesh(float left, float top, float right, setupDrawColorFilterUniforms(getColorFilter(paint)); setupDrawMeshIndices(vertices, texCoords, vbo); - glDrawElements(drawMode, elementsCount, GL_UNSIGNED_SHORT, NULL); + glDrawElements(drawMode, elementsCount, GL_UNSIGNED_SHORT, nullptr); } void OpenGLRenderer::drawAlpha8TextureMesh(float left, float top, float right, float bottom, @@ -3378,14 +3379,14 @@ void OpenGLRenderer::drawAlpha8TextureMesh(float left, float top, float right, f GLvoid* vertices, GLvoid* texCoords, GLenum drawMode, GLsizei elementsCount, bool ignoreTransform, ModelViewMode modelViewMode, bool dirty) { - int color = paint != NULL ? paint->getColor() : 0; + int color = paint != nullptr ? paint->getColor() : 0; int alpha; SkXfermode::Mode mode; getAlphaAndMode(paint, &alpha, &mode); setupDraw(); setupDrawWithTexture(true); - if (paint != NULL) { + if (paint != nullptr) { setupDrawAlpha8Color(color, alpha); } setupDrawColorFilter(getColorFilter(paint)); @@ -3406,7 +3407,7 @@ void OpenGLRenderer::drawAlpha8TextureMesh(float left, float top, float right, f void OpenGLRenderer::chooseBlending(bool blend, SkXfermode::Mode mode, ProgramDescription& description, bool swapSrcDst) { - if (writableSnapshot()->roundRectClipState != NULL /*&& !mSkipOutlineClip*/) { + if (writableSnapshot()->roundRectClipState != nullptr /*&& !mSkipOutlineClip*/) { blend = true; mDescription.hasRoundRectClip = true; } @@ -3456,7 +3457,7 @@ void OpenGLRenderer::chooseBlending(bool blend, SkXfermode::Mode mode, bool OpenGLRenderer::useProgram(Program* program) { if (!program->isInUse()) { - if (mCaches.currentProgram != NULL) mCaches.currentProgram->remove(); + if (mCaches.currentProgram != nullptr) mCaches.currentProgram->remove(); program->use(); mCaches.currentProgram = program; return false; @@ -3472,7 +3473,8 @@ void OpenGLRenderer::resetDrawTextureTexCoords(float u1, float v1, float u2, flo TextureVertex::setUV(v++, u2, v2); } -void OpenGLRenderer::getAlphaAndMode(const SkPaint* paint, int* alpha, SkXfermode::Mode* mode) const { +void OpenGLRenderer::getAlphaAndMode(const SkPaint* paint, int* alpha, + SkXfermode::Mode* mode) const { getAlphaAndModeDirect(paint, alpha, mode); if (mDrawModifiers.mOverrideLayerAlpha < 1.0f) { // if drawing a layer, ignore the paint's alpha diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h index d3c35a8f5d7b..fbb90a73c8fc 100755 --- a/libs/hwui/OpenGLRenderer.h +++ b/libs/hwui/OpenGLRenderer.h @@ -126,13 +126,14 @@ public: void initLight(const Vector3& lightCenter, float lightRadius, uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha); - virtual void prepareDirty(float left, float top, float right, float bottom, bool opaque); - virtual void prepare(bool opaque) { + virtual void prepareDirty(float left, float top, float right, float bottom, + bool opaque) override; + virtual void prepare(bool opaque) override { prepareDirty(0.0f, 0.0f, mState.getWidth(), mState.getHeight(), opaque); } - virtual bool finish(); + virtual bool finish() override; - virtual void callDrawGLFunction(Functor* functor, Rect& dirty); + virtual void callDrawGLFunction(Functor* functor, Rect& dirty) override; void pushLayerUpdate(Layer* layer); void cancelLayerUpdate(Layer* layer); @@ -140,8 +141,8 @@ public: void markLayersAsBuildLayers(); virtual int saveLayer(float left, float top, float right, float bottom, - const SkPaint* paint, int flags) { - return saveLayer(left, top, right, bottom, paint, flags, NULL); + const SkPaint* paint, int flags) override { + return saveLayer(left, top, right, bottom, paint, flags, nullptr); } // Specialized saveLayer implementation, which will pass the convexMask to an FBO layer, if @@ -152,49 +153,51 @@ public: int saveLayerDeferred(float left, float top, float right, float bottom, const SkPaint* paint, int flags); - virtual void drawRenderNode(RenderNode* displayList, Rect& dirty, int32_t replayFlags = 1); + virtual void drawRenderNode(RenderNode* displayList, Rect& dirty, + int32_t replayFlags = 1) override; virtual void drawLayer(Layer* layer, float x, float y); - virtual void drawBitmap(const SkBitmap* bitmap, const SkPaint* paint); + virtual void drawBitmap(const SkBitmap* bitmap, const SkPaint* paint) override; void drawBitmaps(const SkBitmap* bitmap, AssetAtlas::Entry* entry, int bitmapCount, TextureVertex* vertices, bool pureTranslate, const Rect& bounds, const SkPaint* paint); virtual void drawBitmap(const SkBitmap* bitmap, float srcLeft, float srcTop, float srcRight, float srcBottom, float dstLeft, float dstTop, - float dstRight, float dstBottom, const SkPaint* paint); - virtual void drawBitmapData(const SkBitmap* bitmap, const SkPaint* paint); + float dstRight, float dstBottom, const SkPaint* paint) override; + virtual void drawBitmapData(const SkBitmap* bitmap, const SkPaint* paint) override; virtual void drawBitmapMesh(const SkBitmap* bitmap, int meshWidth, int meshHeight, - const float* vertices, const int* colors, const SkPaint* paint); + const float* vertices, const int* colors, const SkPaint* paint) override; void drawPatches(const SkBitmap* bitmap, AssetAtlas::Entry* entry, TextureVertex* vertices, uint32_t indexCount, const SkPaint* paint); virtual void drawPatch(const SkBitmap* bitmap, const Res_png_9patch* patch, - float left, float top, float right, float bottom, const SkPaint* paint); + float left, float top, float right, float bottom, const SkPaint* paint) override; void drawPatch(const SkBitmap* bitmap, const Patch* mesh, AssetAtlas::Entry* entry, float left, float top, float right, float bottom, const SkPaint* paint); - virtual void drawColor(int color, SkXfermode::Mode mode); + virtual void drawColor(int color, SkXfermode::Mode mode) override; virtual void drawRect(float left, float top, float right, float bottom, - const SkPaint* paint); + const SkPaint* paint) override; virtual void drawRoundRect(float left, float top, float right, float bottom, - float rx, float ry, const SkPaint* paint); - virtual void drawCircle(float x, float y, float radius, const SkPaint* paint); + float rx, float ry, const SkPaint* paint) override; + virtual void drawCircle(float x, float y, float radius, const SkPaint* paint) override; virtual void drawOval(float left, float top, float right, float bottom, - const SkPaint* paint); + const SkPaint* paint) override; virtual void drawArc(float left, float top, float right, float bottom, - float startAngle, float sweepAngle, bool useCenter, const SkPaint* paint); - virtual void drawPath(const SkPath* path, const SkPaint* paint); - virtual void drawLines(const float* points, int count, const SkPaint* paint); - virtual void drawPoints(const float* points, int count, const SkPaint* paint); + float startAngle, float sweepAngle, bool useCenter, const SkPaint* paint) override; + virtual void drawPath(const SkPath* path, const SkPaint* paint) override; + virtual void drawLines(const float* points, int count, const SkPaint* paint) override; + virtual void drawPoints(const float* points, int count, const SkPaint* paint) override; virtual void drawTextOnPath(const char* text, int bytesCount, int count, const SkPath* path, - float hOffset, float vOffset, const SkPaint* paint); + float hOffset, float vOffset, const SkPaint* paint) override; virtual void drawPosText(const char* text, int bytesCount, int count, - const float* positions, const SkPaint* paint); + const float* positions, const SkPaint* paint) override; virtual void drawText(const char* text, int bytesCount, int count, float x, float y, const float* positions, const SkPaint* paint, float totalAdvance, const Rect& bounds, - DrawOpMode drawOpMode = kDrawOpMode_Immediate); - virtual void drawRects(const float* rects, int count, const SkPaint* paint); + DrawOpMode drawOpMode = kDrawOpMode_Immediate) override; + virtual void drawRects(const float* rects, int count, const SkPaint* paint) override; void drawShadow(float casterAlpha, - const VertexBuffer* ambientShadowVertexBuffer, const VertexBuffer* spotShadowVertexBuffer); + const VertexBuffer* ambientShadowVertexBuffer, + const VertexBuffer* spotShadowVertexBuffer); - virtual void setDrawFilter(SkDrawFilter* filter); + virtual void setDrawFilter(SkDrawFilter* filter) override; // If this value is set to < 1.0, it overrides alpha set on layer (see drawBitmap, drawLayer) void setOverrideLayerAlpha(float alpha) { mDrawModifiers.mOverrideLayerAlpha = alpha; } @@ -264,7 +267,8 @@ public: * @param alpha Where to store the resulting alpha * @param mode Where to store the resulting xfermode */ - static inline void getAlphaAndModeDirect(const SkPaint* paint, int* alpha, SkXfermode::Mode* mode) { + static inline void getAlphaAndModeDirect(const SkPaint* paint, int* alpha, + SkXfermode::Mode* mode) { *mode = getXfermodeDirect(paint); *alpha = getAlphaDirect(paint); } @@ -301,7 +305,7 @@ public: } static inline bool hasTextShadow(const SkPaint* paint) { - return getTextShadow(paint, NULL); + return getTextShadow(paint, nullptr); } /** @@ -335,34 +339,36 @@ public: /////////////////////////////////////////////////////////////////// /// State manipulation - virtual void setViewport(int width, int height) { mState.setViewport(width, height); } + virtual void setViewport(int width, int height) override { mState.setViewport(width, height); } - virtual int getSaveCount() const; - virtual int save(int flags); - virtual void restore(); - virtual void restoreToCount(int saveCount); + virtual int getSaveCount() const override; + virtual int save(int flags) override; + virtual void restore() override; + virtual void restoreToCount(int saveCount) override; - virtual void getMatrix(SkMatrix* outMatrix) const { mState.getMatrix(outMatrix); } - virtual void setMatrix(const SkMatrix& matrix) { mState.setMatrix(matrix); } - virtual void concatMatrix(const SkMatrix& matrix) { mState.concatMatrix(matrix); } + virtual void getMatrix(SkMatrix* outMatrix) const override { mState.getMatrix(outMatrix); } + virtual void setMatrix(const SkMatrix& matrix) override { mState.setMatrix(matrix); } + virtual void concatMatrix(const SkMatrix& matrix) override { mState.concatMatrix(matrix); } - virtual void translate(float dx, float dy, float dz = 0.0f); - virtual void rotate(float degrees); - virtual void scale(float sx, float sy); - virtual void skew(float sx, float sy); + virtual void translate(float dx, float dy, float dz = 0.0f) override; + virtual void rotate(float degrees) override; + virtual void scale(float sx, float sy) override; + virtual void skew(float sx, float sy) override; void setMatrix(const Matrix4& matrix); // internal only convenience method void concatMatrix(const Matrix4& matrix); // internal only convenience method - virtual const Rect& getLocalClipBounds() const { return mState.getLocalClipBounds(); } + virtual const Rect& getLocalClipBounds() const override { return mState.getLocalClipBounds(); } const Rect& getRenderTargetClipBounds() const { return mState.getRenderTargetClipBounds(); } - virtual bool quickRejectConservative(float left, float top, float right, float bottom) const { + virtual bool quickRejectConservative(float left, float top, + float right, float bottom) const override { return mState.quickRejectConservative(left, top, right, bottom); } - virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op); - virtual bool clipPath(const SkPath* path, SkRegion::Op op); - virtual bool clipRegion(const SkRegion* region, SkRegion::Op op); + virtual bool clipRect(float left, float top, + float right, float bottom, SkRegion::Op op) override; + virtual bool clipPath(const SkPath* path, SkRegion::Op op) override; + virtual bool clipRegion(const SkRegion* region, SkRegion::Op op) override; /** * Does not support different clipping Ops (that is, every call to setClippingOutline is @@ -380,9 +386,9 @@ public: /////////////////////////////////////////////////////////////////// /// CanvasStateClient interface - virtual void onViewportInitialized(); - virtual void onSnapshotRestored(const Snapshot& removed, const Snapshot& restored); - virtual GLuint onGetTargetFbo() const { return 0; } + virtual void onViewportInitialized() override; + virtual void onSnapshotRestored(const Snapshot& removed, const Snapshot& restored) override; + virtual GLuint onGetTargetFbo() const override { return 0; } SkPath* allocPathForFrame() { SkPath* path = new SkPath(); @@ -427,8 +433,8 @@ protected: void attachStencilBufferToLayer(Layer* layer); bool quickRejectSetupScissor(float left, float top, float right, float bottom, - const SkPaint* paint = NULL); - bool quickRejectSetupScissor(const Rect& bounds, const SkPaint* paint = NULL) { + const SkPaint* paint = nullptr); + bool quickRejectSetupScissor(const Rect& bounds, const SkPaint* paint = nullptr) { return quickRejectSetupScissor(bounds.left, bounds.top, bounds.right, bounds.bottom, paint); } @@ -495,7 +501,7 @@ protected: * null then null is returned. */ static inline SkColorFilter* getColorFilter(const SkPaint* paint) { - return paint ? paint->getColorFilter() : NULL; + return paint ? paint->getColorFilter() : nullptr; } /** @@ -503,7 +509,7 @@ protected: * null then null is returned. */ static inline const SkShader* getShader(const SkPaint* paint) { - return paint ? paint->getShader() : NULL; + return paint ? paint->getShader() : nullptr; } /** @@ -903,8 +909,8 @@ private: * space must be scaled up and translated to fill the quad provided in (l,t,r,b). These * transformations are stored in the modelView matrix and uploaded to the shader. * - * @param offset Set to true if the the matrix should be fudged (translated) slightly to disambiguate - * geometry pixel positioning. See Vertex::GeometryFudgeFactor(). + * @param offset Set to true if the the matrix should be fudged (translated) slightly to + * disambiguate geometry pixel positioning. See Vertex::GeometryFudgeFactor(). * * @param ignoreTransform Set to true if l,t,r,b coordinates already in layer space, * currentTransform() will be ignored. (e.g. when drawing clip in layer coordinates to stencil, @@ -930,7 +936,7 @@ private: void setupDrawTextureTransform(); void setupDrawTextureTransformUniforms(mat4& transform); void setupDrawTextGammaUniforms(); - void setupDrawMesh(const GLvoid* vertices, const GLvoid* texCoords = NULL, GLuint vbo = 0); + void setupDrawMesh(const GLvoid* vertices, const GLvoid* texCoords = nullptr, GLuint vbo = 0); void setupDrawMesh(const GLvoid* vertices, const GLvoid* texCoords, const GLvoid* colors); void setupDrawMeshIndices(const GLvoid* vertices, const GLvoid* texCoords, GLuint vbo = 0); void setupDrawIndexedVertices(GLvoid* vertices); diff --git a/libs/hwui/Outline.h b/libs/hwui/Outline.h index 6dacd5edd387..5e9b21312d79 100644 --- a/libs/hwui/Outline.h +++ b/libs/hwui/Outline.h @@ -95,7 +95,7 @@ public: } const SkPath* getPath() const { - if (mType == kOutlineType_None || mType == kOutlineType_Empty) return NULL; + if (mType == kOutlineType_None || mType == kOutlineType_Empty) return nullptr; return &mPath; } diff --git a/libs/hwui/Patch.h b/libs/hwui/Patch.h index d5bbfa61e5c2..1af4bb745e2d 100644 --- a/libs/hwui/Patch.h +++ b/libs/hwui/Patch.h @@ -31,7 +31,7 @@ namespace android { namespace uirenderer { -class TextureVertex; +struct TextureVertex; /////////////////////////////////////////////////////////////////////////////// // 9-patch structures diff --git a/libs/hwui/PatchCache.h b/libs/hwui/PatchCache.h index 1e4099781a54..4cb533841ee1 100644 --- a/libs/hwui/PatchCache.h +++ b/libs/hwui/PatchCache.h @@ -91,7 +91,7 @@ public: private: struct PatchDescription { - PatchDescription(): mPatch(NULL), mBitmapWidth(0), mBitmapHeight(0), + PatchDescription(): mPatch(nullptr), mBitmapWidth(0), mBitmapHeight(0), mPixelWidth(0), mPixelHeight(0) { } @@ -146,7 +146,7 @@ private: * to track available regions of memory in the VBO. */ struct BufferBlock { - BufferBlock(uint32_t offset, uint32_t size): offset(offset), size(size), next(NULL) { + BufferBlock(uint32_t offset, uint32_t size): offset(offset), size(size), next(nullptr) { } uint32_t offset; diff --git a/libs/hwui/PathCache.h b/libs/hwui/PathCache.h index b0f00c702c44..ecd3712ce6eb 100644 --- a/libs/hwui/PathCache.h +++ b/libs/hwui/PathCache.h @@ -87,7 +87,7 @@ struct PathTexture: public Texture { } void clearTask() { - if (mTask != NULL) { + if (mTask != nullptr) { mTask.clear(); } } @@ -165,7 +165,7 @@ public: * Used as a callback when an entry is removed from the cache. * Do not invoke directly. */ - void operator()(PathDescription& path, PathTexture*& texture); + void operator()(PathDescription& path, PathTexture*& texture) override; /** * Clears the cache. This causes all textures to be deleted. @@ -292,7 +292,7 @@ private: PathProcessor(Caches& caches); ~PathProcessor() { } - virtual void onProcess(const sp<Task<SkBitmap*> >& task); + virtual void onProcess(const sp<Task<SkBitmap*> >& task) override; private: uint32_t mMaxTextureSize; diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h index 7b9459a56fbf..a0312e1a52e0 100644 --- a/libs/hwui/Properties.h +++ b/libs/hwui/Properties.h @@ -255,7 +255,7 @@ enum DebugLevel { static inline DebugLevel readDebugLevel() { char property[PROPERTY_VALUE_MAX]; - if (property_get(PROPERTY_DEBUG, property, NULL) > 0) { + if (property_get(PROPERTY_DEBUG, property, nullptr) > 0) { return (DebugLevel) atoi(property); } return kDebugDisabled; diff --git a/libs/hwui/Rect.h b/libs/hwui/Rect.h index 13265a96b05c..b046b6fb8be9 100644 --- a/libs/hwui/Rect.h +++ b/libs/hwui/Rect.h @@ -248,7 +248,7 @@ public: bottom = fmaxf(bottom, y); } - void dump(const char* label = NULL) const { + void dump(const char* label = nullptr) const { ALOGD("%s[l=%f t=%f r=%f b=%f]", label ? label : "Rect", left, top, right, bottom); } diff --git a/libs/hwui/RenderBufferCache.h b/libs/hwui/RenderBufferCache.h index af8060fe2d21..6c668b09c40d 100644 --- a/libs/hwui/RenderBufferCache.h +++ b/libs/hwui/RenderBufferCache.h @@ -78,11 +78,11 @@ public: private: struct RenderBufferEntry { RenderBufferEntry(): - mBuffer(NULL), mWidth(0), mHeight(0) { + mBuffer(nullptr), mWidth(0), mHeight(0) { } RenderBufferEntry(GLenum format, const uint32_t width, const uint32_t height): - mBuffer(NULL), mFormat(format), mWidth(width), mHeight(height) { + mBuffer(nullptr), mFormat(format), mWidth(width), mHeight(height) { } RenderBufferEntry(RenderBuffer* buffer): diff --git a/libs/hwui/RenderProperties.h b/libs/hwui/RenderProperties.h index be43e608cb49..f0e22d6508b0 100644 --- a/libs/hwui/RenderProperties.h +++ b/libs/hwui/RenderProperties.h @@ -188,7 +188,7 @@ public: if (matrix) { mStaticMatrix = new SkMatrix(*matrix); } else { - mStaticMatrix = NULL; + mStaticMatrix = nullptr; } return true; } @@ -203,7 +203,7 @@ public: if (matrix) { mAnimationMatrix = new SkMatrix(*matrix); } else { - mAnimationMatrix = NULL; + mAnimationMatrix = nullptr; } return true; } @@ -571,7 +571,7 @@ public: bool hasShadow() const { return getZ() > 0.0f - && getOutline().getPath() != NULL + && getOutline().getPath() != nullptr && getOutline().getAlpha() != 0.0f; } diff --git a/libs/hwui/Renderer.h b/libs/hwui/Renderer.h index 2b7b567eaa9d..ee44d7a6aadb 100644 --- a/libs/hwui/Renderer.h +++ b/libs/hwui/Renderer.h @@ -79,13 +79,13 @@ public: // TODO: move to a method on android:Paint static inline bool paintWillNotDrawText(const SkPaint& paint) { return paint.getAlpha() == 0 - && paint.getLooper() == NULL + && paint.getLooper() == nullptr && !paint.getColorFilter() && getXfermode(paint.getXfermode()) == SkXfermode::kSrcOver_Mode; } static bool isBlendedColorFilter(const SkColorFilter* filter) { - if (filter == NULL) { + if (filter == nullptr) { return false; } return (filter->getFlags() & SkColorFilter::kAlphaUnchanged_Flag) == 0; diff --git a/libs/hwui/RevealClip.h b/libs/hwui/RevealClip.h index a9600f18f9bf..0084a8edccfc 100644 --- a/libs/hwui/RevealClip.h +++ b/libs/hwui/RevealClip.h @@ -54,7 +54,7 @@ public: float getRadius() const { return mRadius; } const SkPath* getPath() const { - if (!mShouldClip) return NULL; + if (!mShouldClip) return nullptr; return &mPath; } diff --git a/libs/hwui/TessellationCache.h b/libs/hwui/TessellationCache.h index a7c50ebe339a..3efeaf64d486 100644 --- a/libs/hwui/TessellationCache.h +++ b/libs/hwui/TessellationCache.h @@ -166,7 +166,7 @@ private: sp<TaskProcessor<VertexBuffer*> > mProcessor; LruCache<Description, Buffer*> mCache; class BufferRemovedListener : public OnEntryRemoved<Description, Buffer*> { - void operator()(Description& description, Buffer*& buffer); + void operator()(Description& description, Buffer*& buffer) override; }; BufferRemovedListener mBufferRemovedListener; @@ -178,8 +178,8 @@ private: // holds a pointer, and implicit strong ref to each shadow task of the frame LruCache<ShadowDescription, Task<vertexBuffer_pair_t*>*> mShadowCache; class BufferPairRemovedListener : public OnEntryRemoved<ShadowDescription, Task<vertexBuffer_pair_t*>*> { - void operator()(ShadowDescription& description, Task<vertexBuffer_pair_t*>*& bufferPairTask) { - bufferPairTask->decStrong(NULL); + void operator()(ShadowDescription& description, Task<vertexBuffer_pair_t*>*& bufferPairTask) override { + bufferPairTask->decStrong(nullptr); } }; BufferPairRemovedListener mBufferPairRemovedListener; diff --git a/libs/hwui/TextDropShadowCache.h b/libs/hwui/TextDropShadowCache.h index bb53a23dc9dd..caf089f6d2a5 100644 --- a/libs/hwui/TextDropShadowCache.h +++ b/libs/hwui/TextDropShadowCache.h @@ -34,8 +34,8 @@ class Caches; class FontRenderer; struct ShadowText { - ShadowText(): len(0), radius(0.0f), textSize(0.0f), typeface(NULL), - flags(0), italicStyle(0.0f), scaleX(0), text(NULL), positions(NULL) { + ShadowText(): len(0), radius(0.0f), textSize(0.0f), typeface(nullptr), + flags(0), italicStyle(0.0f), scaleX(0), text(nullptr), positions(nullptr) { } // len is the number of bytes in text @@ -76,7 +76,7 @@ struct ShadowText { uint32_t charCount = len / sizeof(char16_t); str.setTo((const char16_t*) text, charCount); text = str.string(); - if (positions != NULL) { + if (positions != nullptr) { positionsCopy.clear(); positionsCopy.appendArray(positions, charCount * 2); positions = positionsCopy.array(); @@ -134,7 +134,7 @@ public: * Used as a callback when an entry is removed from the cache. * Do not invoke directly. */ - void operator()(ShadowText& text, ShadowTexture*& texture); + void operator()(ShadowText& text, ShadowTexture*& texture) override; ShadowTexture* get(const SkPaint* paint, const char* text, uint32_t len, int numGlyphs, float radius, const float* positions); diff --git a/libs/hwui/TextureCache.h b/libs/hwui/TextureCache.h index d7d51a139977..0e33e4c7e504 100644 --- a/libs/hwui/TextureCache.h +++ b/libs/hwui/TextureCache.h @@ -62,7 +62,7 @@ public: * Used as a callback when an entry is removed from the cache. * Do not invoke directly. */ - void operator()(uint32_t&, Texture*& texture); + void operator()(uint32_t&, Texture*& texture) override; /** * Resets all Textures to not be marked as in use diff --git a/libs/hwui/VertexBuffer.h b/libs/hwui/VertexBuffer.h index 8c3a272bb389..d81dd42cde12 100644 --- a/libs/hwui/VertexBuffer.h +++ b/libs/hwui/VertexBuffer.h @@ -32,17 +32,17 @@ public: }; VertexBuffer() - : mBuffer(0) - , mIndices(0) + : mBuffer(nullptr) + , mIndices(nullptr) , mVertexCount(0) , mIndexCount(0) , mAllocatedVertexCount(0) , mAllocatedIndexCount(0) , mByteCount(0) , mMode(kStandard) - , mReallocBuffer(0) - , mCleanupMethod(NULL) - , mCleanupIndexMethod(NULL) + , mReallocBuffer(nullptr) + , mCleanupMethod(nullptr) + , mCleanupIndexMethod(nullptr) {} ~VertexBuffer() { diff --git a/libs/hwui/font/CacheTexture.h b/libs/hwui/font/CacheTexture.h index a107c7aa369a..5d3f959c2b98 100644 --- a/libs/hwui/font/CacheTexture.h +++ b/libs/hwui/font/CacheTexture.h @@ -54,7 +54,7 @@ struct CacheBlock { CacheBlock* mPrev; CacheBlock(uint16_t x, uint16_t y, uint16_t width, uint16_t height): - mX(x), mY(y), mWidth(width), mHeight(height), mNext(NULL), mPrev(NULL) { + mX(x), mY(y), mWidth(width), mHeight(height), mNext(nullptr), mPrev(nullptr) { } static CacheBlock* insertBlock(CacheBlock* head, CacheBlock* newBlock); @@ -146,7 +146,7 @@ public: } uint16_t* indices() const { - return (uint16_t*) 0; + return (uint16_t*) nullptr; } void resetMesh() { diff --git a/libs/hwui/font/Font.h b/libs/hwui/font/Font.h index d54bc4408e58..3119d734bc2b 100644 --- a/libs/hwui/font/Font.h +++ b/libs/hwui/font/Font.h @@ -38,7 +38,7 @@ namespace uirenderer { // Font /////////////////////////////////////////////////////////////////////////////// -class CachedGlyphInfo; +struct CachedGlyphInfo; class CacheTexture; class FontRenderer; @@ -120,7 +120,7 @@ private: void measure(const SkPaint* paint, const char* text, uint32_t start, uint32_t len, int numGlyphs, Rect *bounds, const float* positions); - void invalidateTextureCache(CacheTexture* cacheTexture = NULL); + void invalidateTextureCache(CacheTexture* cacheTexture = nullptr); CachedGlyphInfo* cacheGlyph(const SkPaint* paint, glyph_t glyph, bool precaching); void updateGlyphCache(const SkPaint* paint, const SkGlyph& skiaGlyph, diff --git a/libs/hwui/renderthread/RenderTask.cpp b/libs/hwui/renderthread/RenderTask.cpp index 13970bade02a..b14f580791c5 100644 --- a/libs/hwui/renderthread/RenderTask.cpp +++ b/libs/hwui/renderthread/RenderTask.cpp @@ -14,15 +14,8 @@ * limitations under the License. */ -// LOG_TAG is being provided by the Makefile, reset. -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "RenderTask" - #include "RenderTask.h" -#include <utils/Log.h> #include <utils/Condition.h> #include <utils/Mutex.h> diff --git a/libs/hwui/thread/TaskManager.h b/libs/hwui/thread/TaskManager.h index 5a933abc1dc2..10e8b9e0bead 100644 --- a/libs/hwui/thread/TaskManager.h +++ b/libs/hwui/thread/TaskManager.h @@ -84,8 +84,8 @@ private: void exit(); private: - virtual status_t readyToRun(); - virtual bool threadLoop(); + virtual status_t readyToRun() override; + virtual bool threadLoop() override; // Lock for the list of tasks mutable Mutex mLock; diff --git a/libs/hwui/thread/TaskProcessor.h b/libs/hwui/thread/TaskProcessor.h index d1269f0bd55a..eb4ab64a3e94 100644 --- a/libs/hwui/thread/TaskProcessor.h +++ b/libs/hwui/thread/TaskProcessor.h @@ -47,7 +47,7 @@ public: virtual void onProcess(const sp<Task<T> >& task) = 0; private: - virtual void process(const sp<TaskBase>& task) { + virtual void process(const sp<TaskBase>& task) override { sp<Task<T> > realTask = static_cast<Task<T>* >(task.get()); // This is the right way to do it but sp<> doesn't play nice // sp<Task<T> > realTask = static_cast<sp<Task<T> > >(task); diff --git a/libs/hwui/utils/SortedList.h b/libs/hwui/utils/SortedList.h index 2fa890a39f73..a2c8c52fcbc7 100644 --- a/libs/hwui/utils/SortedList.h +++ b/libs/hwui/utils/SortedList.h @@ -93,13 +93,13 @@ public: } protected: - virtual void do_construct(void* storage, size_t num) const; - virtual void do_destroy(void* storage, size_t num) const; - virtual void do_copy(void* dest, const void* from, size_t num) const; - virtual void do_splat(void* dest, const void* item, size_t num) const; - virtual void do_move_forward(void* dest, const void* from, size_t num) const; - virtual void do_move_backward(void* dest, const void* from, size_t num) const; - virtual int do_compare(const void* lhs, const void* rhs) const; + virtual void do_construct(void* storage, size_t num) const override; + virtual void do_destroy(void* storage, size_t num) const override; + virtual void do_copy(void* dest, const void* from, size_t num) const override; + virtual void do_splat(void* dest, const void* item, size_t num) const override; + virtual void do_move_forward(void* dest, const void* from, size_t num) const override; + virtual void do_move_backward(void* dest, const void* from, size_t num) const override; + virtual int do_compare(const void* lhs, const void* rhs) const override; }; // class SortedList /////////////////////////////////////////////////////////////////////////////// diff --git a/libs/hwui/utils/SortedListImpl.h b/libs/hwui/utils/SortedListImpl.h index dc385b5f7b3a..b1018265566a 100644 --- a/libs/hwui/utils/SortedListImpl.h +++ b/libs/hwui/utils/SortedListImpl.h @@ -41,7 +41,7 @@ protected: virtual int do_compare(const void* lhs, const void* rhs) const = 0; private: - ssize_t _indexOrderOf(const void* item, size_t* order = 0) const; + ssize_t _indexOrderOf(const void* item, size_t* order = nullptr) const; // these are made private, because they can't be used on a SortedVector // (they don't have an implementation either) diff --git a/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml b/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml index 6e276ecfcdd0..d499771663c6 100644 --- a/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml +++ b/packages/BackupRestoreConfirmation/res/values-my-rMM/strings.xml @@ -16,21 +16,21 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="backup_confirm_title" msgid="827563724209303345">"áĄááś ááááşá¸áááşá¸áážáŻ áĄááźááşáˇááŻááşáááş"</string> + <string name="backup_confirm_title" msgid="827563724209303345">"áĄááś ááááşá¸áááşá¸áážáŻ áĄááźááˇáşááŻááşáááş"</string> <string name="restore_confirm_title" msgid="5469365809567486602">"áĄáŹá¸ááŻáśá¸ááźááşáááşááá°áááş"</string> - <string name="backup_confirm_text" msgid="1878021282758896593">"ááťáááşáááşááŹá¸ááąáŹáá˝ááşááźáŻááŹáááŻáˇ ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸ áĄáááşááááşá¸áááşá¸áááş ááąáŹááşá¸ááśááŤáááşá áááşáá˝ááşáˇááźáŻáááşááŹá¸á \n\náĄáááşá áááşáááşáĄáááşááááşá¸áááşá¸áááş áááąáŹááşá¸ááśáá˛áˇááŤá á¤ááąáŹááşáá˝ááşááťááşáĄáŹá¸ áážáąáˇáááşáááşáá˝ááşáˇáááźáŻááŤáážááşáˇá"</string> + <string name="backup_confirm_text" msgid="1878021282758896593">"ááťáááşáááşááŹá¸ááąáŹáá˝ááşááźáŻááŹáááŻáˇ ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸ áĄáááşááááşá¸áááşá¸áááş ááąáŹááşá¸ááśááŤáááşá áááşáá˝ááˇáşááźáŻáááşááŹá¸á \n\náĄáááşá áááşáááşáĄáááşááááşá¸áááşá¸áááş áááąáŹááşá¸ááśáá˛áˇááŤá á¤ááąáŹááşáá˝ááşááťááşáĄáŹá¸ áážáąáˇáááşáááşáá˝ááˇáşáááźáŻááŤáážááˇáşá"</string> <string name="allow_backup_button_label" msgid="4217228747769644068">"ááťá˝ááşáŻááşáááąááŹááťáŹá¸ááᯠáĄáááşááŹá¸ááźááşá¸"</string> - <string name="deny_backup_button_label" msgid="6009119115581097708">"áĄááśááááşá¸áááşá¸áážáŻ áááŻááşááŤáážááşáˇ"</string> - <string name="restore_confirm_text" msgid="7499866728030461776">"ááťáááşáááşááŹá¸ááąáŹáá˝ááşááźáŻááŹáááŻáˇ ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸ ááźááşáááşááá°áááş ááąáŹááşá¸ááśááŤáááşá áááşáá˝ááşáˇááźáŻáááşááŹá¸á \n\náĄáááşá áááşáááş ááźááşáááşááá°áááş á¤ááąáŹááşáá˝ááşááťááşáĄáŹá¸ áážáąáˇáááşáááşáá˝ááşáˇáááźáŻááŤáážááşáˇá áááşáážáá
ááşáá˛ááážáááąáŹááąááŹáĄáŹá¸ áĄá
áŹá¸áááŻá¸áááşááźá
áşáááşá"</string> + <string name="deny_backup_button_label" msgid="6009119115581097708">"áĄááśááááşá¸áááşá¸áážáŻ áááŻááşááŤáážááˇáş"</string> + <string name="restore_confirm_text" msgid="7499866728030461776">"ááťáááşáááşááŹá¸ááąáŹáá˝ááşááźáŻááŹáááŻáˇ ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸ ááźááşáááşááá°áááş ááąáŹááşá¸ááśááŤáááşá áááşáá˝ááˇáşááźáŻáááşááŹá¸á \n\náĄáááşá áááşáááş ááźááşáááşááá°áááş á¤ááąáŹááşáá˝ááşááťááşáĄáŹá¸ áážáąáˇáááşáááşáá˝ááˇáşáááźáŻááŤáážááˇáşá áááşáážáá
ááşáá˛ááážáááąáŹááąááŹáĄáŹá¸ áĄá
áŹá¸áááŻá¸áááşááźá
áşáááşá"</string> <string name="allow_restore_button_label" msgid="3081286752277127827">"ááťá˝ááşáŻááşáááąááŹááťáŹá¸ááᯠááźááşáááşááá°áááş"</string> - <string name="deny_restore_button_label" msgid="1724367334453104378">"ááźááşáááşááá°ááźááşá¸áĄáŹá¸ áááźáŻááŻááşááŤáážááşáˇ"</string> - <string name="current_password_text" msgid="8268189555578298067">"áááşáˇáááşáážá áĄááśááááşá¸áááşá¸áážáŻ ááťážááŻáˇáážááşá
ááŹá¸áážááşáĄáŹá¸ áááşáˇáá˝ááşá¸ááŤá"</string> - <string name="device_encryption_restore_text" msgid="1570864916855208992">"áááşáˇá
ááşá ááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááźááşá¸áĄáá˝ááşá
ááŹá¸áážááşááᯠáááˇáşáá˝ááşá¸ááŤá"</string> - <string name="device_encryption_backup_text" msgid="5866590762672844664">"áááşáˇá
ááşáááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááźááşá¸áĄáá˝ááş ááťážááŻáˇáážááşá
ááŹá¸áážááşáĄáŹá¸áááˇáşááŤá áĄááśááááşá¸áááşá¸áážáŻ ááááşá¸áááşá¸ááąááŹáá˝ááşáááşá¸ áĄááŻáśá¸ááźáŻáááşááźá
áşáááşá"</string> - <string name="backup_enc_password_text" msgid="4981585714795233099">"ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸áĄáááşááááşá¸áááşá¸ááźááşá¸ááźáŽá¸ááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááźááşá¸áĄáá˝ááş ááťážááŻáˇáážááşááśááŤááş/á
áŹáááŻáááşáˇááŤá áĄáááşá áá˝ááşáááşááŹá¸ááŤá áááŻáááşáˇáááşáážáááťážááŻáˇáážááşá
ááŹá¸áážááşáĄáŹá¸ áĄááŻáśá¸ááźáŻááŤáááşá"</string> - <string name="backup_enc_password_optional" msgid="1350137345907579306">"áĄáááşá ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸áĄáááşááááşá¸áááşá¸ááźááşá¸ááᯠáážááşáááŻááŤá áĄáąáŹááşáá˝ááşááťážááŻáˇáážááşááśááŤááş/á
áŹáááŻáááşáˇááŤá"</string> - <string name="backup_enc_password_required" msgid="7889652203371654149">"áááşá ááááááŹááᯠááťážááŻáˇááťááşááŻááş áá˝ááşá¸ááŹá¸ááŹá áááşáááş áááşá áááşáĄáŹááşáááŻá፠ááťážááŻáˇááťááşááŻááş áá˝ááşá¸áááş áááŻáĄááşáááşá ááťáąá¸áá°á¸ááźáŻááźáŽá¸ áĄáąáŹááşáážáŹ á
ááŹá¸áážááşááᯠáááşáˇáá˝ááşá¸ááŤ:"</string> - <string name="restore_enc_password_text" msgid="6140898525580710823">"áĄáááşá ááźááşáááşááá°áááşáˇááąááŹáážáŹááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááŹá¸ááŤá áĄáąáŹááşáá˝ááşá
ááŹá¸áážááşáááŻáááşáˇááŤ-"</string> + <string name="deny_restore_button_label" msgid="1724367334453104378">"ááźááşáááşááá°ááźááşá¸áĄáŹá¸ áááźáŻááŻááşááŤáážááˇáş"</string> + <string name="current_password_text" msgid="8268189555578298067">"áááˇáşáááşáážá áĄááśááááşá¸áááşá¸áážáŻ ááťážááŻáˇáážááşá
ááŹá¸áážááşáĄáŹá¸ áááˇáşáá˝ááşá¸ááŤá"</string> + <string name="device_encryption_restore_text" msgid="1570864916855208992">"áááˇáşá
ááşá ááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááźááşá¸áĄáá˝ááşá
ááŹá¸áážááşááᯠáááˇáşáá˝ááşá¸ááŤá"</string> + <string name="device_encryption_backup_text" msgid="5866590762672844664">"áááˇáşá
ááşáááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááźááşá¸áĄáá˝ááş ááťážááŻáˇáážááşá
ááŹá¸áážááşáĄáŹá¸áááˇáşááŤá áĄááśááááşá¸áááşá¸áážáŻ ááááşá¸áááşá¸ááąááŹáá˝ááşáááşá¸ áĄááŻáśá¸ááźáŻáááşááźá
áşáááşá"</string> + <string name="backup_enc_password_text" msgid="4981585714795233099">"ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸áĄáááşááááşá¸áááşá¸ááźááşá¸ááźáŽá¸ááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááźááşá¸áĄáá˝ááş ááťážááŻáˇáážááşááśááŤááş/á
áŹáááŻáááˇáşááŤá áĄáááşá áá˝ááşáááşááŹá¸ááŤá áááŻáááˇáşáááşáážáááťážááŻáˇáážááşá
ááŹá¸áážááşáĄáŹá¸ áĄááŻáśá¸ááźáŻááŤáááşá"</string> + <string name="backup_enc_password_optional" msgid="1350137345907579306">"áĄáááşá ááąááŹáĄáŹá¸ááŻáśá¸áĄáŹá¸áĄáááşááááşá¸áááşá¸ááźááşá¸ááᯠáážááşáááŻááŤá áĄáąáŹááşáá˝ááşááťážááŻáˇáážááşááśááŤááş/á
áŹáááŻáááˇáşááŤá"</string> + <string name="backup_enc_password_required" msgid="7889652203371654149">"áááşá ááááááŹááᯠááťážááŻáˇááťááşááŻááş áá˝ááşá¸ááŹá¸ááŹá áááşáááş áááşá áááşáĄáŹááşáááŻá፠ááťážááŻáˇááťááşááŻááş áá˝ááşá¸áááş áááŻáĄááşáááşá ááťáąá¸áá°á¸ááźáŻááźáŽá¸ áĄáąáŹááşáážáŹ á
ááŹá¸áážááşááᯠáááˇáşáá˝ááşá¸ááŤ:"</string> + <string name="restore_enc_password_text" msgid="6140898525580710823">"áĄáááşá ááźááşáááşááá°áááˇáşááąááŹáážáŹááťážááŻáˇáážááşáĄáá˝ááşááźáąáŹááşá¸ááŹá¸ááŤá áĄáąáŹááşáá˝ááşá
ááŹá¸áážááşáááŻáááˇáşááŤ-"</string> <string name="toast_backup_started" msgid="550354281452756121">"Backupá
áááşááźáŻááŻááşááąáááş"</string> <string name="toast_backup_ended" msgid="3818080769548726424">"BackupááŻááşááźááşá¸ááźáŽá¸ááŻáśá¸ááŤááźáŽ"</string> <string name="toast_restore_started" msgid="7881679218971277385">"ááźááşáááşááá°ááźááşá¸ á
áááşááźáŻááŻááşááąáááş"</string> diff --git a/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml b/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml index 603a804963b1..cd90b386d42d 100644 --- a/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml +++ b/packages/CaptivePortalLogin/res/values-my-rMM/strings.xml @@ -3,6 +3,6 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_name" msgid="5934709770924185752">"CaptivePortalLogin"</string> <string name="action_use_network" msgid="6076184727448466030">"ááŽáá˝ááşáááşááᯠáááşáážááĄáááŻááşá¸ ááŻáśá¸áááş"</string> - <string name="action_do_not_use_network" msgid="4577366536956516683">"ááŽáá˝ááşáááşááᯠáááŻáśá¸ááŤáážááşáˇ"</string> + <string name="action_do_not_use_network" msgid="4577366536956516683">"ááŽáá˝ááşáááşááᯠáááŻáśá¸ááŤáážááˇáş"</string> <string name="action_bar_label" msgid="2573986763322074279">"áá˝ááşáááşáááŻáˇ áááşáážááşáááŻá¸ áááşáááş"</string> </resources> diff --git a/packages/DocumentsUI/res/values-km-rKH/strings.xml b/packages/DocumentsUI/res/values-km-rKH/strings.xml index bc03c874b564..30550013f4fb 100644 --- a/packages/DocumentsUI/res/values-km-rKH/strings.xml +++ b/packages/DocumentsUI/res/values-km-rKH/strings.xml @@ -20,14 +20,14 @@ <string name="title_open" msgid="4353228937663917801">"áážáâáá¸"</string> <string name="title_save" msgid="2433679664882857999">"áááááśâááťáâáá
"</string> <string name="menu_create_dir" msgid="5947289605844398389">"ááááážáâáá"</string> - <string name="menu_grid" msgid="6878021334497835259">"ááˇáááááśáâááááĄáś"</string> + <string name="menu_grid" msgid="6878021334497835259">"ááˇáááááśáâááááĄáśâ"</string> <string name="menu_list" msgid="7279285939892417279">"ááˇáááááśáâááááá¸"</string> <string name="menu_sort" msgid="7677740407158414452">"ááááááâááśá"</string> <string name="menu_search" msgid="3816712084502856974">"ááááááá"</string> <string name="menu_settings" msgid="6008033148948428823">"ááśáâááááá"</string> <string name="menu_open" msgid="432922957274920903">"áážá"</string> <string name="menu_save" msgid="2394743337684426338">"áááááśááťá"</string> - <string name="menu_share" msgid="3075149983979628146">"á
ááááááá"</string> + <string name="menu_share" msgid="3075149983979628146">"á
áááááááâ"</string> <string name="menu_delete" msgid="8138799623850614177">"ááťá"</string> <string name="menu_select" msgid="8711270657353563424">"áááážá \"<xliff:g id="DIRECTORY">^1</xliff:g>\""</string> <string name="menu_advanced_show" product="nosdcard" msgid="4693652895715631401">"áááá áśáá§áááááááááťáááśáááááťá"</string> @@ -51,7 +51,7 @@ <string name="root_type_shortcut" msgid="3318760609471618093">"ááááźáááśáá"</string> <string name="root_type_device" msgid="7121342474653483538">"á§ááááá"</string> <string name="root_type_apps" msgid="8838065367985945189">"ááááâááˇáá¸ââá
ááážáâááá"</string> - <string name="empty" msgid="7858882803708117596">"ááááśáááśááť"</string> + <string name="empty" msgid="7858882803708117596">"ááááśáááśááťâ"</string> <string name="toast_no_application" msgid="1339885974067891667">"ááˇáâá˘áśá
âáážáâáŻáááśá"</string> <string name="toast_failed_delete" msgid="2180678019407244069">"ááˇáâá˘áśá
âááťáâáŻáááśáâáá˝áâá
ááá˝á"</string> <string name="share_via" msgid="8966594246261344259">"á
áááááááâááśá"</string> diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml index 04c19e334c84..40722f6fe8df 100644 --- a/packages/InputDevices/res/values-de/strings.xml +++ b/packages/InputDevices/res/values-de/strings.xml @@ -3,7 +3,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="8016145283189546017">"Eingabegeräte"</string> <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android-Tastatur"</string> - <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Englisch (GroĂbritannien)"</string> + <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Englisch (Vereinigtes KĂśnigreich)"</string> <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Englisch (USA)"</string> <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Englisch (USA), international"</string> <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Englisch (USA), Colemak"</string> diff --git a/packages/Keyguard/res/values-km-rKH/strings.xml b/packages/Keyguard/res/values-km-rKH/strings.xml index f4a73a808efd..70db7563a7e3 100644 --- a/packages/Keyguard/res/values-km-rKH/strings.xml +++ b/packages/Keyguard/res/values-km-rKH/strings.xml @@ -86,7 +86,7 @@ <string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string> <string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string> <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"Alt"</string> - <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"áááâááá"</string> + <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"áááâáááâ"</string> <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ááťá"</string> <string name="keyboardview_keycode_done" msgid="1992571118466679775">"áá˝á
ááśáá"</string> <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"ááááźáâáááá"</string> @@ -125,7 +125,7 @@ <string name="kg_login_too_many_attempts" msgid="6486842094005698475">"ááááśááśáâááááśáâá
ááážáâááá"</string> <string name="kg_login_instructions" msgid="1100551261265506448">"áážáááá¸âáááâáá á
áźáâááááťáâáááḠGoogle á"</string> <string name="kg_login_username_hint" msgid="5718534272070920364">"áááááâá˘áááâááááž (á˘áá¸áááâ)"</string> - <string name="kg_login_password_hint" msgid="9057289103827298549">"ááśááááááááśáá"</string> + <string name="kg_login_password_hint" msgid="9057289103827298549">"ááśááááááááśááâ"</string> <string name="kg_login_submit_button" msgid="5355904582674054702">"á
áźá"</string> <string name="kg_login_invalid_input" msgid="5754664119319872197">"áááááâá˘áááááááž áŹâááśáááâáááááśááâááˇáâáááášáááááźáá"</string> <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"ááááá
âáááááâá˘áááááááž áŹâááśáááâáááááśááâááááâá˘ááá?\náážá "<b>"google.com/accounts/recovery"</b>" á"</string> @@ -166,5 +166,5 @@ <string name="keyguard_transport_pause_description" msgid="5093073338238310224">"áááźááťáâááá˘áśá"</string> <string name="keyguard_transport_play_description" msgid="2924628863741150956">"áááźááťáâá
áśáá"</string> <string name="keyguard_transport_stop_description" msgid="3084179324810575787">"áááźááťáâáááááá"</string> - <string name="keyguard_carrier_default" msgid="8700650403054042153">"ááááśáâááááś"</string> + <string name="keyguard_carrier_default" msgid="8700650403054042153">"ááááśáâááááśâ"</string> </resources> diff --git a/packages/Keyguard/res/values-my-rMM/strings.xml b/packages/Keyguard/res/values-my-rMM/strings.xml index a7ba0e5b00ac..37ae0f34bf37 100644 --- a/packages/Keyguard/res/values-my-rMM/strings.xml +++ b/packages/Keyguard/res/values-my-rMM/strings.xml @@ -20,16 +20,16 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name" msgid="719438068451601849">"ááąáŹáˇááťááş á
áąáŹááşáˇááąá¸áá°"</string> - <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN ááŻááş áááŻááşáááşáˇááŤ"</string> + <string name="app_name" msgid="719438068451601849">"ááąáŹáˇááťááş á
áąáŹááˇáşááąá¸áá°"</string> + <string name="keyguard_password_enter_pin_code" msgid="3037685796058495017">"PIN ááŻááş áááŻááşáááˇáşááŤ"</string> <string name="keyguard_password_enter_puk_code" msgid="3035856550289724338">"áááşá¸ááşáááş áááşááśááŤááş ááźááşáá˝ááˇáşáááˇáş ááŻááş áážááˇáş ááťááŻáˇáážááşááśááŤááşáá
áş áááŻááşáááˇáşááŤ"</string> <string name="keyguard_password_enter_puk_prompt" msgid="1801941051094974609">"áááşá¸ááşáááş áááşááśááŤááş ááźááşáá˝ááˇáşáááˇáş ááŻááş ááśááŤááş"</string> <string name="keyguard_password_enter_pin_prompt" msgid="3201151840570492538">"áááşá¸ááşáááş ááťááŻáˇáážááşáááşááśááŤááş áĄáá
áşáá˝ááşá¸áááş"</string> <string name="keyguard_password_entry_touch_hint" msgid="7858547464982981384"><font size="17">"á
ááŹá¸áážááş áááŻááşáááş ááááŤ"</font></string> - <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ááąáŹáˇáá˝ááşáˇáááş á
ááŹá¸áážááşááᯠáááŻááşáááşáˇááŤ"</string> - <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ááąáŹáˇáá˝ááşáˇáááş PIN ááᯠáááŻááşáááşáˇááŤ"</string> + <string name="keyguard_password_enter_password_code" msgid="1054721668279049780">"ááąáŹáˇáá˝ááˇáşáááş á
ááŹá¸áážááşááᯠáááŻááşáááˇáşááŤ"</string> + <string name="keyguard_password_enter_pin_password_code" msgid="6391755146112503443">"ááąáŹáˇáá˝ááˇáşáááş PIN ááᯠáááŻááşáááˇáşááŤ"</string> <string name="keyguard_password_wrong_pin_code" msgid="2422225591006134936">"áááşááśááŤááşáážáŹá¸ááąááŤáááş"</string> - <string name="keyguard_label_text" msgid="861796461028298424">"ááąáŹáˇáá˝ááşáˇáááş Menu áááŻááąáŹááş0áááŻáážáááşááŤ"</string> + <string name="keyguard_label_text" msgid="861796461028298424">"ááąáŹáˇáá˝ááˇáşáááş Menu áááŻááąáŹááş0áááŻáážáááşááŤ"</string> <string name="faceunlock_multiple_failures" msgid="754137583022792429">"ááťááşáážáŹáážááş ááąáŹáˇáá˝ááˇáşááźááşá¸ áá˝ááˇáşááźáŻááąáŹ áĄááźáááşááąáááş ááťáąáŹáşáá˝ááşáá˝áŹá¸ááŤááźáŽ"</string> <string name="keyguard_charged" msgid="3272223906073492454">"áĄáŹá¸áá˝ááşá¸ááąááŤáááş"</string> <string name="keyguard_plugged_in" msgid="9087497435553252863">"áĄáŹá¸áá˝ááşá¸ááą"</string> @@ -88,14 +88,14 @@ <string name="keyboardview_keycode_alt" msgid="4856868820040051939">"AltáááŻááş"</string> <string name="keyboardview_keycode_cancel" msgid="1203984017245783244">"áááşááťááşáááşáááŻááş"</string> <string name="keyboardview_keycode_delete" msgid="3337914833206635744">"ááťááşáááşáááŻááş"</string> - <string name="keyboardview_keycode_done" msgid="1992571118466679775">"ááźáŽá¸ááŻáśá¸áááşáˇáááŻááş"</string> + <string name="keyboardview_keycode_done" msgid="1992571118466679775">"ááźáŽá¸ááŻáśá¸áááˇáşáááŻááş"</string> <string name="keyboardview_keycode_mode_change" msgid="4547387741906537519">"á
áá
áşááźáąáŹááşá¸ááźááşá¸áááŻááş"</string> <string name="keyboardview_keycode_shift" msgid="2270748814315147690">"ShiftáááŻááş"</string> <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"EnteráááŻááş"</string> - <string name="description_target_unlock" msgid="2228524900439801453">"áá˝ááşáˇáááş"</string> + <string name="description_target_unlock" msgid="2228524900439801453">"áá˝ááˇáşáááş"</string> <string name="description_target_camera" msgid="969071997552486814">"áááşáááŹ"</string> <string name="description_target_silent" msgid="893551287746522182">"áĄááśááááşáááş"</string> - <string name="description_target_soundon" msgid="30052466675500172">"áĄááśáá˝ááşáˇáááş"</string> + <string name="description_target_soundon" msgid="30052466675500172">"áĄááśáá˝ááˇáşáááş"</string> <string name="description_target_search" msgid="3091587249776033139">"áážáŹáá˝áąáááş"</string> <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> áĄáá˝ááş áĄááąáŤáşááᯠáá˝ááşáá˝á˛ááŤ"</string> <string name="description_direction_down" msgid="5087739728639014595">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> áĄáá˝ááş áĄáąáŹááşááᯠáá˝ááşáá˝á˛ááŤ"</string> @@ -110,11 +110,11 @@ <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%d</xliff:g> á
áášáááˇáşáĄááźáŹáá˝ááş ááźááşááźááŻá¸á
áŹá¸ááŤ"</string> <string name="kg_pattern_instructions" msgid="398978611683075868">"áááˇáşáá˛áˇ ááąáŹáˇáá˝ááˇáşááąáŹ ááŻáśá
áśááᯠáá˝á˛ááŤ"</string> <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"áááşá¸ááşáááş áááş ááśááŤááş áááŻááşáááˇáşááŤ"</string> - <string name="kg_sim_pin_instructions_multi" msgid="7818515973197201434">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" áĄáá˝ááş áááşá¸ááş áááşááśááŤááş áááŻááşáááşáˇááŤá"</string> + <string name="kg_sim_pin_instructions_multi" msgid="7818515973197201434">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" áĄáá˝ááş áááşá¸ááş áááşááśááŤááş áááŻááşáááˇáşááŤá"</string> <string name="kg_pin_instructions" msgid="2377242233495111557">"áááşááśááŤááş áááŻááşáááˇáşááŤ"</string> <string name="kg_password_instructions" msgid="5753646556186936819">"ááťááŻáˇáážááşááśááŤááş áááŻááşáááˇáşááŤ"</string> <string name="kg_puk_enter_puk_hint" msgid="453227143861735537">"áááşá¸ááşáááşáááş ááᯠááááşáá˝áŹá¸ááŤááźáŽ áááşáááş ááŻááşááąáŹááşáááş áááşááśááŤááş ááźááşáá˝ááˇáşáááˇáş ááŻááşááᯠáááŻááşáááˇáşááŤá áááŻáááŻááááťááşááťááş ááŻááşá¸áááşááąáŹááşáážáŻ ááąá¸ááąáŹááŹá áĄáŹá¸áááşáá˝ááşáááŻááşááŤáááşá"</string> - <string name="kg_puk_enter_puk_hint_multi" msgid="363822494559783025">"áááşá¸ááş \"<xliff:g id="CARRIER">%1$s</xliff:g>\" áááş ááᯠáĄááŻááşáááŻááşááąáŹáˇááŤá áááşáááşáá˝áŹá¸áááş PUK ááŻááş áááŻááşáááşáˇááŤáááĄááąá¸á
áááşááááááş ááŻááşá¸áááşááąáŹááşáážáŻááŻááşáááşá¸áĄáŹá¸ áááşáá˝ááşááŤá"</string> + <string name="kg_puk_enter_puk_hint_multi" msgid="363822494559783025">"áááşá¸ááş \"<xliff:g id="CARRIER">%1$s</xliff:g>\" áááş ááᯠáĄááŻááşáááŻááşááąáŹáˇááŤá áááşáááşáá˝áŹá¸áááş PUK ááŻááş áááŻááşáááˇáşááŤáááĄááąá¸á
áááşááááááş ááŻááşá¸áááşááąáŹááşáážáŻááŻááşáááşá¸áĄáŹá¸ áááşáá˝ááşááŤá"</string> <string name="kg_puk_enter_pin_hint" msgid="7871604527429602024">"áááŻááťááşááąáŹ áááşááśááŤááşááᯠáááŻááşáááˇáşááŤ"</string> <string name="kg_enter_confirm_pin_hint" msgid="325676184762529976">"áááŻááťááşááąáŹ áááşááśááŤááşááᯠáĄáááşááźáŻáááş"</string> <string name="kg_sim_unlock_progress_dialog_message" msgid="8950398016976865762">"áááşá¸ááşáááş ááᯠááąáŹáˇáá˝ááˇáşááąááŤáááş"</string> @@ -133,18 +133,18 @@ <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"áááş áááş ááśááŤááşááᯠáĄáážáŹá¸ááᯠ<xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş áááŻááşáááˇáşááźáŽá¸ááŤááźáŽá \n\n<xliff:g id="NUMBER_1">%d</xliff:g> á
áášáááˇáş áĄááźáŹáá˝ááş ááźááşáááşááźááŻá¸á
áŹá¸ááŤ"</string> <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"áááşáááş á
ááŹá¸áážááşááᯠ<xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş áážáŹá¸áááŻááşááźáŽá¸ááŤááźáŽá \n\n <xliff:g id="NUMBER_1">%d</xliff:g> á
áášáááˇáşáĄááźáŹ ááźááşáááşááźááŻá¸á
áŹá¸ááŤ"</string> <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"áááş ááŻáśá
áśáá˝á˛ ááąáŹáˇáá˝ááˇáşááźááşá¸ááᯠ<xliff:g id="NUMBER_0">%d</xliff:g> ááźáááşááźáąáŹááş ááĄáąáŹááşááźááşááŤá \n\n<xliff:g id="NUMBER_1">%d</xliff:g> á
áášáááˇáşáĄááźáŹáá˝ááş ááźááşáááş ááźááŻá¸á
áŹá¸ááŤ"</string> - <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="8774056606869646621">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤áááşááááşáĄáŹá¸ áĄá
áážááźááşá
áá˝ááşáˇáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> - <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="1843331751334128428">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤ááŻááşá¸áĄáŹá¸ áĄá
áážááźááşá
áá˝ááşáˇáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> - <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="258925501999698032">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤ááŻááşá¸áĄáŹá¸ áĄá
áážááźááşá
áá˝ááşáˇáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> - <string name="kg_failed_attempts_now_wiping" product="default" msgid="7154028908459817066">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤ááŻááşá¸áĄáŹá¸ áĄá
áážááźááşá
áá˝ááşáˇáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> - <string name="kg_failed_attempts_almost_at_erase_user" product="tablet" msgid="6159955099372112688">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> - <string name="kg_failed_attempts_almost_at_erase_user" product="default" msgid="6945823186629369880">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> - <string name="kg_failed_attempts_now_erasing_user" product="tablet" msgid="3963486905355778734">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşáááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> - <string name="kg_failed_attempts_now_erasing_user" product="default" msgid="7729009752252111673">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşáááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> - <string name="kg_failed_attempts_almost_at_erase_profile" product="tablet" msgid="4621778507387853694">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá áááşáˇ áĄááŻááşááááŻáááŻááşáĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> - <string name="kg_failed_attempts_almost_at_erase_profile" product="default" msgid="6853071165802933545">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá áááşáˇ áĄááŻááşááááŻáááŻááşáĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> - <string name="kg_failed_attempts_now_erasing_profile" product="tablet" msgid="4686386497449912146">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá áĄááŻááşááááŻáááŻááş áááşááŻááşááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> - <string name="kg_failed_attempts_now_erasing_profile" product="default" msgid="4951507352869831265">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááşáˇáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá áĄááŻááşááááŻáááŻááş áááşááŻááşááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="8774056606869646621">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤áááşááááşáĄáŹá¸ áĄá
áážááźááşá
áá˝ááˇáşáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="1843331751334128428">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤ááŻááşá¸áĄáŹá¸ áĄá
áážááźááşá
áá˝ááˇáşáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="258925501999698032">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤ááŻááşá¸áĄáŹá¸ áĄá
áážááźááşá
áá˝ááˇáşáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_now_wiping" product="default" msgid="7154028908459817066">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤ááŻááşá¸áĄáŹá¸ áĄá
áážááźááşá
áá˝ááˇáşáááşááźá
áşááźáŽá¸á áááşá¸áááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_almost_at_erase_user" product="tablet" msgid="6159955099372112688">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> + <string name="kg_failed_attempts_almost_at_erase_user" product="default" msgid="6945823186629369880">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> + <string name="kg_failed_attempts_now_erasing_user" product="tablet" msgid="3963486905355778734">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşáááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_now_erasing_user" product="default" msgid="7729009752252111673">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá á¤áĄááŻáśá¸ááźáŻáá°áĄáŹá¸ áááşááŻááşáááşááźá
áşááźáŽá¸á áĄááŻáśá¸ááźáŻáá°ááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_almost_at_erase_profile" product="tablet" msgid="4621778507387853694">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá áááˇáş áĄááŻááşááááŻáááŻááşáĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> + <string name="kg_failed_attempts_almost_at_erase_profile" product="default" msgid="6853071165802933545">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER_0">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá <xliff:g id="NUMBER_1">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸ááźáŽá¸ááąáŹááş ááĄáąáŹááşááźááşááŤáá áááˇáş áĄááŻááşááááŻáááŻááşáĄáŹá¸ áááşááŻááşááźááşá¸ááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸ááŤáááşá"</string> + <string name="kg_failed_attempts_now_erasing_profile" product="tablet" msgid="4686386497449912146">"áááşááááşáĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá áĄááŻááşááááŻáááŻááş áááşááŻááşááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> + <string name="kg_failed_attempts_now_erasing_profile" product="default" msgid="4951507352869831265">"ááŻááşá¸áĄáŹá¸ ááąáŹáˇáá˝ááˇáşáááş áááş <xliff:g id="NUMBER">%d</xliff:g> ááźáááş ááźááŻá¸á
áŹá¸áᏠááážááşáááşáá˛áˇááŤá áĄááŻááşááááŻáááŻááş áááşááŻááşááśááááşááźá
áşááźáŽá¸á ááááŻáááŻááşááąááŹáĄáŹá¸ááŻáśá¸ ááťááşáá˝áŹá¸áááşááźá
áşáááşá"</string> <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"áááş ááŻáśááąáŹáşáááąáŹáˇáá˝ááˇáşááźááşá¸ááᯠ<xliff:g id="NUMBER_0">%d</xliff:g> áĄááźáááş áážááşáááşá
á˝áŹ áááźáŻááŻááşáááŻááşááŤá ááąáŹááşáááş <xliff:g id="NUMBER_1">%d</xliff:g> áĄááźáááş ááážááşáááşááŤá áááˇáşáááşááááşáĄáŹá¸ áĄáŽá¸ááąá¸ááşáĄááŻáśá¸ááźáŻá ááąáŹáˇáá˝ááˇáşáááş ááąáŹááşá¸áááŻááŤááááˇáşáááşá \n\n <xliff:g id="NUMBER_2">%d</xliff:g> á
áášáááˇáşáĄááźáŹáá˝ááş ááźááşáááş ááźááŻá¸á
áŹá¸ááŤ"</string> <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"áááş ááŻáśááąáŹáşáááąáŹáˇáá˝ááˇáşááźááşá¸ááᯠ<xliff:g id="NUMBER_0">%d</xliff:g> áĄááźáááş áážááşáááşá
á˝áŹ áááźáŻááŻááşáááŻááşááŤá ááąáŹááşáááş <xliff:g id="NUMBER_1">%d</xliff:g> áĄááźáááş ááážááşáááşááŤá áááˇáşááŻááşá¸áĄáŹá¸ áĄáŽá¸ááąá¸ááşáĄááŻáśá¸ááźáŻá ááąáŹáˇáá˝ááˇáşáááş ááąáŹááşá¸áááŻááŤááááˇáşáááşá \n\n <xliff:g id="NUMBER_2">%d</xliff:g> á
áášáááˇáşáĄááźáŹáá˝ááş ááźááşáááş ááźááŻá¸á
áŹá¸ááŤ"</string> <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"áááşáážáŹá¸áááş"</string> diff --git a/packages/PrintSpooler/res/values-km-rKH/strings.xml b/packages/PrintSpooler/res/values-km-rKH/strings.xml index 9279fe4e5804..63d710a8a631 100644 --- a/packages/PrintSpooler/res/values-km-rKH/strings.xml +++ b/packages/PrintSpooler/res/values-km-rKH/strings.xml @@ -70,7 +70,7 @@ </plurals> <string name="cancel" msgid="4373674107267141885">"áááááá"</string> <string name="restart" msgid="2472034227037808749">"á
áśáááááážáâáĄážáááˇá"</string> - <string name="no_connection_to_printer" msgid="2159246915977282728">"ááááśáâââááśáâááááśááâáá
âáááśááá¸áâáááááťááá"</string> + <string name="no_connection_to_printer" msgid="2159246915977282728">"ááááśáâââááśáâááááśááâáá
âáááśááá¸áâáááááťáááâ"</string> <string name="reason_unknown" msgid="5507940196503246139">"ááˇáâááááśáá"</string> <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> â ááˇáâá˘áśá
âáááážâááśá"</string> <string-array name="color_mode_labels"> diff --git a/packages/PrintSpooler/res/values-my-rMM/strings.xml b/packages/PrintSpooler/res/values-my-rMM/strings.xml index 7dce4590f64d..d6eb38035c27 100644 --- a/packages/PrintSpooler/res/values-my-rMM/strings.xml +++ b/packages/PrintSpooler/res/values-my-rMM/strings.xml @@ -43,8 +43,8 @@ <string name="collapse_handle" msgid="6886637989442507451">"ááąáŤááşáááş áááş"</string> <string name="print_button" msgid="645164566271246268">"á
áŹááŻááşáááş"</string> <string name="savetopdf_button" msgid="2976186791686924743">"PDF áááŻáˇ ááááşá¸áááşá¸áá˛áˇ"</string> - <string name="print_options_expanded" msgid="6944679157471691859">"ááááşáˇááŻááş áá˝áąá¸á
ááŹááťáŹá¸ááᯠááťá˛áˇááŹá¸"</string> - <string name="print_options_collapsed" msgid="7455930445670414332">"ááááşáˇááŻááş áá˝áąá¸á
ááŹááťáŹá¸ááᯠááąáŤááşááŹá¸"</string> + <string name="print_options_expanded" msgid="6944679157471691859">"ááááˇáşááŻááş áá˝áąá¸á
ááŹááťáŹá¸ááᯠááťá˛áˇááŹá¸"</string> + <string name="print_options_collapsed" msgid="7455930445670414332">"ááááˇáşááŻááş áá˝áąá¸á
ááŹááťáŹá¸ááᯠááąáŤááşááŹá¸"</string> <string name="search" msgid="5421724265322228497">"áážáŹáá˝áąááźááşá¸"</string> <string name="all_printers_label" msgid="3178848870161526399">"á
áŹááŻááşá
ááş áĄáŹá¸ááŻáśá¸"</string> <string name="add_print_service_label" msgid="5356702546188981940">"ááŹá¸áá
áş áĄáá
áşáááˇáşáááş"</string> @@ -85,5 +85,5 @@ <string name="print_error_default_message" msgid="8602678405502922346">"ááąáŹáşááŽá¸á áĄá˛á፠áĄááŻááşáááźá
áşáá˛áˇááŤá áááş á
ááşá¸ááŤá"</string> <string name="print_error_retry" msgid="1426421728784259538">"áááşá
ááşá¸"</string> <string name="print_error_printer_unavailable" msgid="8985614415253203381">"ááŽááááşááŹáážáŹ áááŻáĄááťáááşáážáŹ áááááŻááşááŤá"</string> - <string name="print_preparing_preview" msgid="3939930735671364712">"áĄá
ááşá¸ááźááşáˇáááş ááźááşáááşááąâŚ"</string> + <string name="print_preparing_preview" msgid="3939930735671364712">"áĄá
ááşá¸ááźááˇáşáááş ááźááşáááşááąâŚ"</string> </resources> diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml index 7f47ff2b28eb..ab8cfa0217b8 100644 --- a/packages/SystemUI/res/values-km-rKH/strings.xml +++ b/packages/SystemUI/res/values-km-rKH/strings.xml @@ -69,7 +69,7 @@ <string name="screenshot_saving_ticker" msgid="7403652894056693515">"ááááťáâáááááśááťáâááźáááâá˘ááááááâŚ"</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"ááááťáâáááááśááťáâááźáááâá˘áááááá..."</string> <string name="screenshot_saving_text" msgid="2419718443411738818">"ááźáááâá˘ááááááâááááťáâááááźáâááśáâáááááśááťáá"</string> - <string name="screenshot_saved_title" msgid="6461865960961414961">"ááśáâá
áśááâááâááźáááâá˘ááááááá"</string> + <string name="screenshot_saved_title" msgid="6461865960961414961">"ááśáâá
áśááâááâááźáááâá˘áááááááâ"</string> <string name="screenshot_saved_text" msgid="1152839647677558815">"ááá âáážáááá¸âáážáâááźáááâá˘ááááááâááááâá˘áááâá"</string> <string name="screenshot_failed_title" msgid="705781116746922771">"ááˇáâá˘áśá
âá
áśááâááâááźáâááâá˘ááááááâá"</string> <string name="screenshot_failed_text" msgid="1260203058661337274">"ááˇáá˘áśá
ááá˘áááááááááááśáááááá áááááťáááśááááááááá áŹááśááˇáááááźáááśáá˘ááťááááśáâáááááááááˇáḠáŹâááááśáááâááááâá˘áááá"</string> @@ -152,7 +152,7 @@ <string name="accessibility_remove_notification" msgid="3603099514902182350">"áááá˘áśáâááśáâááźáâáááášáá"</string> <string name="accessibility_gps_enabled" msgid="3511469499240123019">"ááśáâáážá GPS á"</string> <string name="accessibility_gps_acquiring" msgid="8959333351058967158">"ááá˝áââ GPS á"</string> - <string name="accessibility_tty_enabled" msgid="4613200365379426561">"ááśáâáážáâáááśááá¸áâá˘ááááťáá¸ááá"</string> + <string name="accessibility_tty_enabled" msgid="4613200365379426561">"ááśáâáážáâáááśááá¸áâá˘ááááťáá¸áááâ"</string> <string name="accessibility_ringer_vibrate" msgid="666585363364155055">"ááááááˇáá¸âááááâáááá"</string> <string name="accessibility_ringer_silent" msgid="9061243307939135383">"ááááááˇáá¸âááááâááááśááá"</string> <!-- no translation found for accessibility_casting (6887382141726543668) --> @@ -234,7 +234,7 @@ <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"ááááá"</string> <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"áááááśá"</string> <string name="quick_settings_ime_label" msgid="7073463064369468429">"ááˇáá¸ááśáááááâáááá
áźá"</string> - <string name="quick_settings_location_label" msgid="5011327048748762257">"áá¸âááśáá"</string> + <string name="quick_settings_location_label" msgid="5011327048748762257">"áá¸âááśááâ"</string> <string name="quick_settings_location_off_label" msgid="7464544086507331459">"áá¸ááśááâááśáâááˇá"</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"á§áááááâáááá"</string> <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string> @@ -279,11 +279,11 @@ <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"ááśáâááááśááâá˘áááááá"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ááááááá"</string> <string name="recents_launch_error_message" msgid="2969287838120550506">"ááˇáâá˘áśá
âá
áśáááááážá <xliff:g id="APP">%s</xliff:g> ááá"</string> - <string name="expanded_header_battery_charged" msgid="5945855970267657951">"ááśáâáááá
áźáâááá"</string> + <string name="expanded_header_battery_charged" msgid="5945855970267657951">"ááśáâáááá
áźáâáááââ"</string> <string name="expanded_header_battery_charging" msgid="205623198487189724">"ááááťáâáááá
áźáâááá"</string> <string name="expanded_header_battery_charging_with_time" msgid="457559884275395376">"<xliff:g id="CHARGING_TIME">%s</xliff:g> áá áźáâáááááá"</string> <string name="expanded_header_battery_not_charging" msgid="4798147152367049732">"ááˇáâááááťáâáááá
áźáâááá"</string> - <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"áááááśáâá˘áśá
â\nááááźáâááśáâáááá˝áááˇááˇááá"</string> + <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"áááááśáâá˘áśá
â\nááááźáâááśáâáááá˝áááˇááˇáááâ"</string> <string name="description_target_search" msgid="3091587249776033139">"ááááááá"</string> <string name="description_direction_up" msgid="7169032478259485180">"ááťáâáĄážáâáážâáážáááḠ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> á"</string> <string name="description_direction_left" msgid="7207478719805562165">"ááťáâáá
âáááááâáážáááḠ<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> á"</string> diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml index 980883012a39..1342b41f7316 100644 --- a/packages/SystemUI/res/values-lo-rLA/strings.xml +++ b/packages/SystemUI/res/values-lo-rLA/strings.xml @@ -276,7 +276,7 @@ <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"ŕşŕşłâŕťŕşŕşˇŕşŕş <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="recents_empty_message" msgid="8682129509540827999">"Your recent screens appear here"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"âŕşŕťŕťâລບŕşâŕťŕşŕşąŕşâŕşâຼິâŕťŕşâŕşŕşąŕş"</string> - <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"ŕşŕş˛ŕşâŕşŕşąŕşâŕťŕş¸ŕşâŕťŕťŕş˛âŕşŕť"</string> + <string name="recents_lock_to_app_button_label" msgid="6942899049072506044">"ŕşŕş˛ŕşâŕşŕşąŕşâŕťŕş¸ŕşâŕťŕťŕş˛âŕşŕťâ"</string> <string name="recents_search_bar_label" msgid="8074997400187836677">"ŕşŕşŕşŕşŤŕş˛"</string> <string name="recents_launch_error_message" msgid="2969287838120550506">"ŕşŕťŕťâສາâລາŕşâŕťŕşĽŕşľŕťŕşĄ <xliff:g id="APP">%s</xliff:g> ŕťŕşŕť."</string> <string name="expanded_header_battery_charged" msgid="5945855970267657951">"ສາŕşŕťŕşŕşąŕşĄŕťŕşĽŕťŕş§."</string> @@ -313,7 +313,7 @@ <string name="guest_exit_guest" msgid="7187359342030096885">"âຼຜŕşâŕťŕşŕş"</string> <string name="guest_exit_guest_dialog_title" msgid="8480693520521766688">"ຼຜŕşâŕťŕşŕşâŕşŕť?"</string> <string name="guest_exit_guest_dialog_message" msgid="4155503224769676625">"ŕťŕşŕşąŕşŕşŻâŕťŕşĽŕş°âŕşŕťŕťâລບŕşâŕşŕşąŕşâŕťŕşťŕşâŕťŕşâŕťŕşŕşâŕşŕşąŕşâŕşŕşľŕťâŕşŕş°âŕşŕşˇŕşâຼຜŕşâŕşŕşŕş."</string> - <string name="guest_exit_guest_dialog_remove" msgid="7402231963862520531">"ຼຜŕş"</string> + <string name="guest_exit_guest_dialog_remove" msgid="7402231963862520531">"ຼຜŕşâ"</string> <string name="guest_wipe_session_title" msgid="6419439912885956132">"ŕşŕş´ŕşâŕşŕşľâŕşŕťŕşŕşâຎູŕşâŕşŕşąŕşâລາ, ŕşŕşšŕťâຢŕťŕş˝ŕşĄâຢາລ!"</string> <string name="guest_wipe_session_message" msgid="8476238178270112811">"ŕşŕťŕş˛ŕşâŕşŕťŕşŕşâŕşŕş˛ŕşâສມŕşâŕşŕťŕťâŕťŕşŕşâŕşŕşąŕşâŕşŕşŕşâŕşŕťŕş˛ŕşŕşŕťŕť?"</string> <string name="guest_wipe_session_wipe" msgid="5065558566939858884">"ŕťŕşĽŕşľŕťŕşĄŕşŕşťŕťŕşŕťŕşŤŕşĄŕť"</string> diff --git a/packages/SystemUI/res/values-my-rMM/strings.xml b/packages/SystemUI/res/values-my-rMM/strings.xml index f3830ddc0cd8..1b425ef20bb4 100644 --- a/packages/SystemUI/res/values-my-rMM/strings.xml +++ b/packages/SystemUI/res/values-my-rMM/strings.xml @@ -26,37 +26,37 @@ <string name="status_bar_no_recent_apps" msgid="7374907845131203189">"áááşá áááźáŹááŽá ááťááşáážáŹááźááşááťáŹá¸ ááŽáážáŹ ááąáŤáşááŹááźáááş"</string> <string name="status_bar_accessibility_dismiss_recents" msgid="4576076075226540105">"áááşáááąáŹáĄááşáááŽááąá¸áážááşá¸ááťáŹá¸áĄáŹá¸ áááşááŻááşáááş"</string> <plurals name="status_bar_accessibility_recent_apps"> - <item quantity="one" msgid="3969335317929254918">"ááźáŻáśááźááşáˇáážáŻ áá˛á ááťááşáážáŹááźááş á ááŻ"</item> - <item quantity="other" msgid="5523506463832158203">"ááźáŻáśááźááşáˇáážáŻ áá˛á ááťááşáážáŹááźááş %d ááŻ"</item> + <item quantity="one" msgid="3969335317929254918">"ááźáŻáśááźááˇáşáážáŻ áá˛á ááťááşáážáŹááźááş á ááŻ"</item> + <item quantity="other" msgid="5523506463832158203">"ááźáŻáśááźááˇáşáážáŻ áá˛á ááťááşáážáŹááźááş %d ááŻ"</item> </plurals> <string name="status_bar_no_notifications_title" msgid="4755261167193833213">"áĄááźáąáŹááşá¸ááźáŹá¸ááťááşááťáŹá¸ ááážá"</string> <string name="status_bar_ongoing_events_title" msgid="1682504513316879202">"áááşáážááĄááŻáśá¸ááźáŻáážáŻ"</string> <string name="status_bar_latest_events_title" msgid="6594767438577593172">"áĄááźáąáŹááşá¸ááźáŹá¸ááťááşááťáŹá¸á"</string> <string name="battery_low_title" msgid="6456385927409742437">"áááşááᎠáĄáŹá¸áááşá¸ááą"</string> <string name="battery_low_percent_format" msgid="2900940511201380775">"<xliff:g id="PERCENTAGE">%s</xliff:g> ááťááşáážáááą"</string> - <string name="battery_low_percent_format_saver_started" msgid="6859235584035338833">"<xliff:g id="PERCENTAGE">%s</xliff:g> ááťááşáážáááąá áááşááᎠááťá˝áąááŹáážáŻ áá˝ááşáˇááŹá¸á"</string> + <string name="battery_low_percent_format_saver_started" msgid="6859235584035338833">"<xliff:g id="PERCENTAGE">%s</xliff:g> ááťááşáážáááąá áááşááᎠááťá˝áąááŹáážáŻ áá˝ááˇáşááŹá¸á"</string> <string name="invalid_charger" msgid="4549105996740522523">"áááşáážáUSBáĄáŹá¸áá˝ááşá¸ááźááşá¸ áĄááŻáśá¸áááźáŻáááŻááşá፠\n ááąá¸ááŹá¸ááąáŹáĄáŹá¸áá˝ááşá¸ááááááŹáááŻáᏠáĄááŻáśá¸ááźáŻááŤ"</string> <string name="invalid_charger_title" msgid="3515740382572798460">"USB áĄáŹá¸áá˝ááşá¸áážáŻ áááśáˇáááŻá¸ááŤá"</string> - <string name="invalid_charger_text" msgid="5474997287953892710">"ááąá¸áá˛áˇáááşáˇ áĄáŹá¸áá˝ááşá¸á
ááşáááŻáᏠáĄááŻáśá¸ááźáŻááŤ"</string> + <string name="invalid_charger_text" msgid="5474997287953892710">"ááąá¸áá˛áˇáááˇáş áĄáŹá¸áá˝ááşá¸á
ááşáááŻáᏠáĄááŻáśá¸ááźáŻááŤ"</string> <string name="battery_low_why" msgid="4553600287639198111">"áááşáááşááťáŹá¸"</string> - <string name="battery_saver_confirmation_title" msgid="5299585433050361634">"áááşááᎠááťá˝áąááŹáážáŻááᯠáá˝ááşáˇááááŹá¸?"</string> - <string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"áá˝ááşáˇáááş"</string> - <string name="battery_saver_start_action" msgid="5576697451677486320">"áááşááᎠááťá˝áąááŹáážáŻááᯠáá˝ááşáˇáááş"</string> + <string name="battery_saver_confirmation_title" msgid="5299585433050361634">"áááşááᎠááťá˝áąááŹáážáŻááᯠáá˝ááˇáşááááŹá¸?"</string> + <string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"áá˝ááˇáşáááş"</string> + <string name="battery_saver_start_action" msgid="5576697451677486320">"áááşááᎠááťá˝áąááŹáážáŻááᯠáá˝ááˇáşáááş"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"áĄááźááşáĄáááşááťáŹá¸"</string> <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"áááŻááşáááŻááş"</string> <string name="status_bar_settings_airplane" msgid="4879879698500955300">"ááąááŹáĽáşááťáśááąáŤáşáĄááŻáśá¸ááźáŻááąáŹá
áá
áş"</string> - <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ááťááşáážáŹááźááşáĄáááŻáĄááťáąáŹááşáážááşáˇáááş"</string> + <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"ááťááşáážáŹááźááşáĄáááŻáĄááťáąáŹááşáážááˇáşáááş"</string> <string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUTE"</string> <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"áááááąá¸ááťááşááťáŹá¸"</string> - <string name="bluetooth_tethered" msgid="7094101612161133267">"ááá°á¸ááŻááşáážááááşáˇááźááşáááşááťáááşáááşááźááşá¸"</string> - <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"áááşáˇáá˝ááşá¸áááşá¸ááťáŹá¸ áááşáážááşááźááşá¸"</string> + <string name="bluetooth_tethered" msgid="7094101612161133267">"ááá°á¸ááŻááşáážááááˇáşááźááşáááşááťáááşáááşááźááşá¸"</string> + <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"áááˇáşáá˝ááşá¸áááşá¸ááťáŹá¸ áááşáážááşááźááşá¸"</string> <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"áááŻááşááŤáááşááąáŹ ááŽá¸ááŻááş"</string> - <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g>áĄááşáááŽááąá¸áážááşá¸áĄáŹá¸ USBáá
ášá
ááşá¸ááᯠááťáááşáááşáááşáá˝ááşáˇááźáŻáááşááŹá¸"</string> - <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> áĄááşáááŽááąá¸áážááşá¸ááᯠUSB áá˝á˛áááşáá
ášá
ááşá¸ááťáŹá¸áĄáŹá¸ áááşááąáŹááşááźááşáˇáážáŻáááşáá˝ááşáˇááźáŻáááş"</string> - <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"<xliff:g id="ACTIVITY">%1$s</xliff:g> áĄáŹá¸USBáá
ášá
ááşá¸ ááťáááşáááşááąá
áĽáş áá˝ááşáˇáááşááŹá¸"</string> - <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"<xliff:g id="ACTIVITY">%1$s</xliff:g> áĄáŹá¸ USBáá˝á˛áááşáá
ášá
ááşá¸ ááťáááşáááşááŹá¸á
áĽáş áá˝ááşáˇáááş"</string> - <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"ááŽUSBáá
ášá
ááşá¸áážááşáˇáááşáĄááşáááŽááąá¸áážááşá¸ááž áĄááŻááşáááŻááşááŤá áááŻáááŻáááááş <xliff:g id="URL">%1$s</xliff:g>áá˝ááş ááąáˇááŹááŤ"</string> + <string name="usb_device_permission_prompt" msgid="834698001271562057">"<xliff:g id="APPLICATION">%1$s</xliff:g>áĄááşáááŽááąá¸áážááşá¸áĄáŹá¸ USBáá
ášá
ááşá¸ááᯠááťáááşáááşáááşáá˝ááˇáşááźáŻáááşááŹá¸"</string> + <string name="usb_accessory_permission_prompt" msgid="5171775411178865750">"<xliff:g id="APPLICATION">%1$s</xliff:g> áĄááşáááŽááąá¸áážááşá¸ááᯠUSB áá˝á˛áááşáá
ášá
ááşá¸ááťáŹá¸áĄáŹá¸ áááşááąáŹááşááźááˇáşáážáŻáááşáá˝ááˇáşááźáŻáááş"</string> + <string name="usb_device_confirm_prompt" msgid="5161205258635253206">"<xliff:g id="ACTIVITY">%1$s</xliff:g> áĄáŹá¸USBáá
ášá
ááşá¸ ááťáááşáááşááąá
áĽáş áá˝ááˇáşáááşááŹá¸"</string> + <string name="usb_accessory_confirm_prompt" msgid="3808984931830229888">"<xliff:g id="ACTIVITY">%1$s</xliff:g> áĄáŹá¸ USBáá˝á˛áááşáá
ášá
ááşá¸ ááťáááşáááşááŹá¸á
áĽáş áá˝ááˇáşáááş"</string> + <string name="usb_accessory_uri_prompt" msgid="513450621413733343">"ááŽUSBáá
ášá
ááşá¸áážááˇáşáááşáĄááşáááŽááąá¸áážááşá¸ááž áĄááŻááşáááŻááşááŤá áááŻáááŻáááááş <xliff:g id="URL">%1$s</xliff:g>áá˝ááş ááąáˇááŹááŤ"</string> <string name="title_usb_accessory" msgid="4966265263465181372">"USBáá˝á˛áááşáá
ášá
ááşá¸ááťáŹá¸"</string> <string name="label_view" msgid="6304565553218192990">"ááźááşáá˝ááşá¸"</string> <string name="always_use_device" msgid="1450287437017315906">"á¤USBáá
ášá
ááşá¸ááťáŹá¸áĄáá˝ááş áá°áááşá¸áĄáááŻááşá¸ áĄááŻáśá¸ááźáŻááŤá"</string> @@ -64,31 +64,31 @@ <string name="usb_debugging_title" msgid="4513918393387141949">"USB áĄáážáŹá¸áážáŹáá˝áąááźááşáááşááźááşá¸ áá˝ááˇáşááźáŻááŤáááşááŹá¸?"</string> <string name="usb_debugging_message" msgid="2220143855912376496">"ááŽáá˝ááşááťá°ááŹáá˛áˇ RSA key fingerprint áááąáŹáˇ:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g> ááźá
áşááŤáááş"</string> <string name="usb_debugging_always" msgid="303335496705863070">"ááŽáá˝ááşááťá°ááŹááž áĄááźá˛áá˝ááˇáşááźáŻáááş"</string> - <string name="compat_mode_on" msgid="6623839244840638213">"áááşááŹá¸ááźááşááźááşáˇ ááťá˛áˇááźááşá¸"</string> - <string name="compat_mode_off" msgid="4434467572461327898">"áááşááŹá¸ááźááşáĄááźááşáˇáááşáˇááźááşá¸"</string> + <string name="compat_mode_on" msgid="6623839244840638213">"áááşááŹá¸ááźááşááźááˇáş ááťá˛áˇááźááşá¸"</string> + <string name="compat_mode_off" msgid="4434467572461327898">"áááşááŹá¸ááźááşáĄááźááˇáşáááˇáşááźááşá¸"</string> <string name="screenshot_saving_ticker" msgid="7403652894056693515">"áááşááŹá¸ááźááşááŤááşááŻáśááááşá¸á
ááş.."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"áááşááŹá¸ááźááşááŤááşááŻáśáááŻááşááźááşá¸áĄáŹá¸ ááááşá¸áááşá¸ááŤáááş"</string> <string name="screenshot_saving_text" msgid="2419718443411738818">"áááşááŹá¸ááźááşááŤááşááŻáśáááŻááşááźááşá¸áĄáŹá¸ ááááşá¸áááşá¸ááźáŽá¸ááŤááźáŽ"</string> <string name="screenshot_saved_title" msgid="6461865960961414961">"áááşááŹá¸ááźááşááŤááşááŻáśáááŻááşááźááşá¸áĄáŹá¸ áááşá¸áá°ááźáŽá¸"</string> - <string name="screenshot_saved_text" msgid="1152839647677558815">"áááşáˇáááşááŹá¸ááźááşááŤááşááŻáśáááŻááşááźááşá¸áĄáŹá¸ ááźááşáˇáážáŻáááş ááááŤ"</string> + <string name="screenshot_saved_text" msgid="1152839647677558815">"áááˇáşáááşááŹá¸ááźááşááŤááşááŻáśáááŻááşááźááşá¸áĄáŹá¸ ááźááˇáşáážáŻáááş ááááŤ"</string> <string name="screenshot_failed_title" msgid="705781116746922771">"áááşááŹá¸ááźááşááŤááşááŻáśáááŻááşááźááşá¸áĄáŹá¸ ááááşá¸á
áŽá¸áááŻááşááŤ"</string> - <string name="screenshot_failed_text" msgid="1260203058661337274">"ááťááşáážáŹááźááşááťážááşáááźááşááŻáśááᯠáááŻááşáááŻááşáá˛áˇááŤá áááŻáážáąáŹááşáážáŻ ááąáᏠáĄáááşáˇáĄáááş áážáááąá áááŻáˇáááŻááş app áááŻáˇáááŻááş áááşá áĄáá˝á˛áˇáĄá
ááşá¸á áá˝ááşáˇáááźáŻá ááźá
áşáááŻááşáááşá"</string> + <string name="screenshot_failed_text" msgid="1260203058661337274">"ááťááşáážáŹááźááşááťážááşáááźááşááŻáśááᯠáááŻááşáááŻááşáá˛áˇááŤá áááŻáážáąáŹááşáážáŻ ááąáᏠáĄáááˇáşáĄáááş áážáááąá áááŻáˇáááŻááş app áááŻáˇáááŻááş áááşá áĄáá˝á˛áˇáĄá
ááşá¸á áá˝ááˇáşáááźáŻá ááźá
áşáááŻááşáááşá"</string> <string name="usb_preference_title" msgid="6551050377388882787">"USB áááŻááşááźáąáŹááşá¸ áá˝áąá¸áážáŻááťáŹá¸"</string> - <string name="use_mtp_button_title" msgid="4333504413563023626">"ááŽááŽááŹáááąááŹáĄááąááźááşáˇ áááşáááşáááş (MTP)"</string> - <string name="use_ptp_button_title" msgid="7517127540301625751">"áááşáááŹáĄááąááźááşáˇ áááşáááşáááş (PTP)"</string> + <string name="use_mtp_button_title" msgid="4333504413563023626">"ááŽááŽááŹáááąááŹáĄááąááźááˇáş áááşáááşáááş (MTP)"</string> + <string name="use_ptp_button_title" msgid="7517127540301625751">"áááşáááŹáĄááąááźááˇáş áááşáááşáááş (PTP)"</string> <string name="installer_cd_button_title" msgid="2312667578562201583">"MacáĄáá˝ááşAndriodáááŻááşááźáąáŹááşá¸áĄááşáááŽááąá¸áážááşá¸áááˇáşááźááşá¸"</string> <string name="accessibility_back" msgid="567011538994429120">"ááąáŹááşáááŻáˇ"</string> <string name="accessibility_home" msgid="8217216074895377641">"áááşáá
áŹááťááşáážáŹ"</string> <string name="accessibility_menu" msgid="316839303324695949">"ááŽáá°á¸"</string> - <string name="accessibility_recent" msgid="5208608566793607626">"ááźáŻáśááźááşáˇáážáŻá"</string> + <string name="accessibility_recent" msgid="5208608566793607626">"ááźáŻáśááźááˇáşáážáŻá"</string> <string name="accessibility_search_light" msgid="1103867596330271848">"áážáŹáá˝áąáááş"</string> <string name="accessibility_camera_button" msgid="8064671582820358152">"áááşáááŹ"</string> <string name="accessibility_phone_button" msgid="6738112589538563574">"ááŻááşá¸"</string> <string name="accessibility_unlock_button" msgid="128158454631118828">"ááąáŹáˇáá˝ááˇáşáááş"</string> - <string name="unlock_label" msgid="8779712358041029439">"ááąáŹáˇáá˝ááşáˇáááş"</string> - <string name="phone_label" msgid="2320074140205331708">"ááŻááşá¸ááᯠáá˝ááşáˇáááş"</string> - <string name="camera_label" msgid="7261107956054836961">"áááşááᏠáá˝ááşáˇáááş"</string> - <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"áááşáˇáá˝ááşá¸ááźááşá¸áááŻááşáĄáŹá¸ ááźáąáŹááşá¸ááźááşá¸"</string> + <string name="unlock_label" msgid="8779712358041029439">"ááąáŹáˇáá˝ááˇáşáááş"</string> + <string name="phone_label" msgid="2320074140205331708">"ááŻááşá¸ááᯠáá˝ááˇáşáááş"</string> + <string name="camera_label" msgid="7261107956054836961">"áááşááᏠáá˝ááˇáşáááş"</string> + <string name="accessibility_ime_switch_button" msgid="5032926134740456424">"áááˇáşáá˝ááşá¸ááźááşá¸áááŻááşáĄáŹá¸ ááźáąáŹááşá¸ááźááşá¸"</string> <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"áĄáśáˇáááşááąáŹááťáŻáśáˇááťá˛áˇáááŻááş"</string> <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"áááşááŹá¸ááźááşááąáŤáşáá˝ááş áĄááąá¸áážáĄááźáŽá¸áááŻáˇááťá˛áˇááźááşá¸"</string> <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ááá°á¸ááŻááşááťáááşáááşááŹá¸áážáŻ"</string> @@ -97,17 +97,17 @@ <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ááášáááŽáá
áşááŹá¸á"</string> <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ááášáááŽáážá
áşááŹá¸á"</string> <string name="accessibility_battery_three_bars" msgid="2302983330865040446">"ááášáááŽááŻáśá¸ááŹá¸á"</string> - <string name="accessibility_battery_full" msgid="8909122401720158582">"ááášáááŽáĄááźááşáˇá"</string> + <string name="accessibility_battery_full" msgid="8909122401720158582">"ááášáááŽáĄááźááˇáşá"</string> <string name="accessibility_no_phone" msgid="4894708937052611281">"ááŻááşá¸áááŻááşá¸ááážáááŤá"</string> <string name="accessibility_phone_one_bar" msgid="687699278132664115">"ááŻááşá¸áááŻááşá¸áá
áşááŹá¸á"</string> <string name="accessibility_phone_two_bars" msgid="8384905382804815201">"ááŻááşá¸áááŻááşá¸áážá
áşááŹá¸á"</string> <string name="accessibility_phone_three_bars" msgid="8521904843919971885">"ááŻááşá¸áááŻááşá¸ááŻáśá¸ááŹá¸á"</string> - <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"ááŻááşá¸áááŻááşá¸áĄááźááşáˇá"</string> + <string name="accessibility_phone_signal_full" msgid="6471834868580757898">"ááŻááşá¸áááŻááşá¸áĄááźááˇáşá"</string> <string name="accessibility_no_data" msgid="4791966295096867555">"ááąááŹááážáááŤá"</string> <string name="accessibility_data_one_bar" msgid="1415625833238273628">"ááąááŹáá
áşááŹá¸á"</string> - <string name="accessibility_data_two_bars" msgid="6166018492360432091">"ááąááŹááŻááşáá˝ážááşáˇáážáŻ áááŹá¸áááşá¸ááááźááşá¸á"</string> + <string name="accessibility_data_two_bars" msgid="6166018492360432091">"ááąááŹááŻááşáá˝ážááˇáşáážáŻ áááŹá¸áááşá¸ááááźááşá¸á"</string> <string name="accessibility_data_three_bars" msgid="9167670452395038520">"ááąááŹááŻáśá¸ááŹá¸á"</string> - <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ááąááŹááŻááşáá˝ážááşáˇáážáŻáĄááźááşáˇáááşá¸ááááźááşá¸"</string> + <string name="accessibility_data_signal_full" msgid="2708384608124519369">"ááąááŹááŻááşáá˝ážááˇáşáážáŻáĄááźááˇáşáááşá¸ááááźááşá¸"</string> <string name="accessibility_wifi_off" msgid="3177380296697933627">"áááŻááşáááŻááş ááážá"</string> <string name="accessibility_no_wifi" msgid="1425476551827924474">"áááŻááşáááŻááş ááťáááşáááşááŹá¸áážáŻ ááážáááŤ"</string> <string name="accessibility_wifi_one_bar" msgid="7735893178010724377">"áááŻááşáááŻááş á ááŹá¸áážá"</string> @@ -127,7 +127,7 @@ <string name="accessibility_one_bar" msgid="1685730113192081895">"áá
áşááŻáśá¸"</string> <string name="accessibility_two_bars" msgid="6437363648385206679">"á ááŹá¸"</string> <string name="accessibility_three_bars" msgid="2648241415119396648">"á ááŹá¸"</string> - <string name="accessibility_signal_full" msgid="9122922886519676839">"ááąááŹááŻááşáá˝ážááşáˇáážáŻáĄááźááşáˇáááşá¸ááááźááşá¸"</string> + <string name="accessibility_signal_full" msgid="9122922886519676839">"ááąááŹááŻááşáá˝ážááˇáşáážáŻáĄááźááˇáşáááşá¸ááááźááşá¸"</string> <string name="accessibility_desc_on" msgid="2385254693624345265">"áá˝ááˇáşááŹá¸áááş"</string> <string name="accessibility_desc_off" msgid="6475508157786853157">"ááááşááŹá¸áááş"</string> <string name="accessibility_desc_connected" msgid="8366256693719499665">"áááşáá˝ááşááŹá¸ááźáŽá¸"</string> @@ -144,7 +144,7 @@ <string name="accessibility_data_connection_edge" msgid="4477457051631979278">"EDGE"</string> <string name="accessibility_data_connection_wifi" msgid="2324496756590645221">"áááŻááşáááŻááş"</string> <string name="accessibility_no_sim" msgid="8274017118472455155">"áááşá¸áááşááážáááŤá"</string> - <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ááá°á¸ááŻááşáážááááşáˇááźááşáááşááťáááşáááşááźááşá¸"</string> + <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ááá°á¸ááŻááşáážááááˇáşááźááşáááşááťáááşáááşááźááşá¸"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"ááąááŹáĽáşááťáśááąáŤáşáĄááŻáśá¸ááźáŻááąáŹá
áá
áşá"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"ááášááᎠ<xliff:g id="NUMBER">%d</xliff:g> ááŹáááŻááşáážáŻááşá¸á"</string> <string name="accessibility_settings_button" msgid="799583911231893380">"á
áá
áşáĄááźááşáĄáááşááťáŹá¸"</string> @@ -165,47 +165,47 @@ <string name="accessibility_desc_quick_settings" msgid="6186378411582437046">"áĄááźááşááŻááş áĄááźááşáĄáááş"</string> <string name="accessibility_desc_lock_screen" msgid="5625143713611759164">"ááťááşáážáŹááźááş ááąáŹáˇááááşáááş"</string> <string name="accessibility_desc_settings" msgid="3417884241751434521">"áááşáááşááťáŹá¸"</string> - <string name="accessibility_desc_recent_apps" msgid="4876900986661819788">"ááźáŻáśááźááşáˇáážáŻá"</string> + <string name="accessibility_desc_recent_apps" msgid="4876900986661819788">"ááźáŻáśááźááˇáşáážáŻá"</string> <string name="accessibility_quick_settings_user" msgid="1104846699869476855">"ááŻáśá¸á
á˝á˛áá° <xliff:g id="USER">%s</xliff:g>."</string> <string name="accessibility_quick_settings_wifi" msgid="5518210213118181692">"<xliff:g id="SIGNAL">%1$s</xliff:g>á"</string> <string name="accessibility_quick_settings_wifi_changed_off" msgid="8716484460897819400">"ááźááŻá¸áá˛áˇ ááááşááŹá¸á"</string> - <string name="accessibility_quick_settings_wifi_changed_on" msgid="6440117170789528622">"ááźááŻá¸áá˛áˇ áá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_wifi_changed_on" msgid="6440117170789528622">"ááźááŻá¸áá˛áˇ áá˝ááˇáşááŹá¸á"</string> <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"áááŻáááŻááşá¸ááş <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string> <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"áááşááᎠ<xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_airplane_off" msgid="7786329360056634412">"ááąááŹááş ááŻááş ááááşááŹá¸á"</string> - <string name="accessibility_quick_settings_airplane_on" msgid="6406141469157599296">"ááąááŹááş ááŻááşááᯠáá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_airplane_on" msgid="6406141469157599296">"ááąááŹááş ááŻááşááᯠáá˝ááˇáşááŹá¸á"</string> <string name="accessibility_quick_settings_airplane_changed_off" msgid="66846307818850664">"ááąááŹááş ááŻááşááᯠááááşááŹá¸áááŻááşááźáŽá"</string> - <string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ááąááŹááş ááŻááşááᯠáá˝ááşáˇááŹá¸áááŻááşááźáŽá"</string> + <string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ááąááŹááş ááŻááşááᯠáá˝ááˇáşááŹá¸áááŻááşááźáŽá"</string> <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ááá°á¸ááŻááş ááááşááŹá¸."</string> - <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ááá°á¸ááŻááş áá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ááá°á¸ááŻááş áá˝ááˇáşááŹá¸á"</string> <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ááá°á¸ááŻááş ááťáááşáááşááąá"</string> <string name="accessibility_quick_settings_bluetooth_connected" msgid="4306637793614573659">"ááá°á¸ááŻááş ááťáááşáááşááŹá¸á"</string> <string name="accessibility_quick_settings_bluetooth_changed_off" msgid="2730003763480934529">"ááá°á¸ááŻááş ááááşááŹá¸á"</string> - <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="8722351798763206577">"ááá°á¸ááŻááş áá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="8722351798763206577">"ááá°á¸ááŻááş áá˝ááˇáşááŹá¸á"</string> <string name="accessibility_quick_settings_location_off" msgid="5119080556976115520">"áááşááąáᏠááááşá¸áááŻáˇáážáŻ ááááşáááşá"</string> - <string name="accessibility_quick_settings_location_on" msgid="5809937096590102036">"áááşááąáᏠááááşá¸áááŻáˇáážáŻ áá˝ááşáˇáááşá"</string> + <string name="accessibility_quick_settings_location_on" msgid="5809937096590102036">"áááşááąáᏠááááşá¸áááŻáˇáážáŻ áá˝ááˇáşáááşá"</string> <string name="accessibility_quick_settings_location_changed_off" msgid="8526845571503387376">"áááşááąáᏠááááşá¸áááŻáˇáážáŻ ááááşááŹá¸á"</string> - <string name="accessibility_quick_settings_location_changed_on" msgid="339403053079338468">"áááşááąáᏠááááşá¸áááŻáˇáážáŻ áá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_location_changed_on" msgid="339403053079338468">"áááşááąáᏠááááşá¸áááŻáˇáážáŻ áá˝ááˇáşááŹá¸á"</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"áááŻá¸á
ááşááąá¸ááŹá¸ááąáŹ áĄááťáááş <xliff:g id="TIME">%s</xliff:g>."</string> <string name="accessibility_quick_settings_close" msgid="3115847794692516306">"ááąáŹááşáá˝ááş ááááşáááşá"</string> <string name="accessibility_quick_settings_more_time" msgid="3659274935356197708">"áĄááťáááş áááŻá¸"</string> <string name="accessibility_quick_settings_less_time" msgid="2404728746293515623">"áĄááťáááş ááťážáąáŹáˇ"</string> <string name="accessibility_quick_settings_flashlight_off" msgid="4936432000069786988">"ááááşáážááŽá¸ ááááşááŹá¸"</string> - <string name="accessibility_quick_settings_flashlight_on" msgid="2003479320007841077">"ááááşáážááŽá¸ áá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_flashlight_on" msgid="2003479320007841077">"ááááşáážááŽá¸ áá˝ááˇáşááŹá¸á"</string> <string name="accessibility_quick_settings_flashlight_changed_off" msgid="3303701786768224304">"ááááşáážááŽá¸ ááááşááŹá¸áááşá"</string> - <string name="accessibility_quick_settings_flashlight_changed_on" msgid="6531793301533894686">"ááááşáážááŽá¸ áá˝ááşáˇááŹá¸áááşá"</string> + <string name="accessibility_quick_settings_flashlight_changed_on" msgid="6531793301533894686">"ááááşáážááŽá¸ áá˝ááˇáşááŹá¸áááşá"</string> <string name="accessibility_quick_settings_color_inversion_changed_off" msgid="4406577213290173911">"áĄááąáŹááş ááźáąáŹááşá¸ááźááşáážááşáážáŻ ááááşááŹá¸á"</string> - <string name="accessibility_quick_settings_color_inversion_changed_on" msgid="6897462320184911126">"áĄááąáŹááş ááźáąáŹááşá¸ááźááşáážááşáážáŻ áá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_color_inversion_changed_on" msgid="6897462320184911126">"áĄááąáŹááş ááźáąáŹááşá¸ááźááşáážááşáážáŻ áá˝ááˇáşááŹá¸á"</string> <string name="accessibility_quick_settings_hotspot_changed_off" msgid="5004708003447561394">"áááŻáááŻááşá¸ ááąáŹáˇá
ááąáŤáˇ ááááşááŹá¸á"</string> - <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2890951609226476206">"áááŻáááŻááşá¸ ááąáŹáˇá
ááąáŤáˇ áá˝ááşáˇááŹá¸á"</string> + <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2890951609226476206">"áááŻáááŻááşá¸ ááąáŹáˇá
ááąáŤáˇ áá˝ááˇáşááŹá¸á"</string> <string name="accessibility_casting_turned_off" msgid="1430668982271976172">"ááťááşáážáŹááźááş ááŹá
áşáááş ááŻááşáážáŻ áááşáááŻááşááźáŽá"</string> <string name="accessibility_brightness" msgid="8003681285547803095">"ááąáŹááşááážáŻááᯠááźáááş"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="2626865386971800302">"2G-3G ááąáᏠááááşááŹá¸"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="4629078114195977196">"4G ááąáᏠááááşááŹá¸"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="5793456071535876132">"áááşáá°áᏠááąááŹááᯠááááşááŹá¸"</string> <string name="data_usage_disabled_dialog_title" msgid="8723412000355709802">"ááąáᏠááááşááŹá¸"</string> - <string name="data_usage_disabled_dialog" msgid="6468718338038876604">"áááşá ááááááŹáááş áááşá áááşáážááşáá˛áˇáááşáˇ áááşáˇáááşááťááşááᯠááźááşáˇááŽáá˝áŹá¸á ááááşáá˝áŹá¸áááşá \n\náááşá¸ááᯠááźááşááźáŽá¸ áá˝ááşáˇáážáŻáĄáá˝ááş áááşá á
áŽááśááąá¸áá° ááśááž áá˝áąááąáŹááşá¸ááś ááŹáááŻááşááŤáááşá"</string> - <string name="data_usage_disabled_dialog_enable" msgid="5538068036107372895">"ááąáᏠáá˝ááşáˇááąá¸áááş"</string> + <string name="data_usage_disabled_dialog" msgid="6468718338038876604">"áááşá ááááááŹáááş áááşá áááşáážááşáá˛áˇáááˇáş áááˇáşáááşááťááşááᯠááźááˇáşááŽáá˝áŹá¸á ááááşáá˝áŹá¸áááşá \n\náááşá¸ááᯠááźááşááźáŽá¸ áá˝ááˇáşáážáŻáĄáá˝ááş áááşá á
áŽááśááąá¸áá° ááśááž áá˝áąááąáŹááşá¸ááś ááŹáááŻááşááŤáááşá"</string> + <string name="data_usage_disabled_dialog_enable" msgid="5538068036107372895">"ááąáᏠáá˝ááˇáşááąá¸áááş"</string> <string name="status_bar_settings_signal_meter_disconnected" msgid="1940231521274147771">"áĄááşááŹáááşááážá"</string> <string name="status_bar_settings_signal_meter_wifi_nossid" msgid="6557486452774597820">"ááźááŻá¸áá˛áˇáááşáá˝ááşáážáŻ"</string> <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPSáĄáŹá¸áážáŹáá˝áąáááş"</string> @@ -227,13 +227,13 @@ <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ááá°á¸ááŻ"</string> <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ááá°á¸áᯠ(<xliff:g id="NUMBER">%d</xliff:g> á
ááşááťáŹá¸)"</string> <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ááá°á¸áᯠááááşááŹá¸áááş"</string> - <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ááťáááşáá˝á˛ááŹá¸áááşáˇ ááááááŹááťáŹá¸ ááážá"</string> + <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ááťáááşáá˝á˛ááŹá¸áááˇáş ááááááŹááťáŹá¸ ááážá"</string> <string name="quick_settings_brightness_label" msgid="6968372297018755815">"áĄáááşá¸ááąáŹááşááážáŻ"</string> <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"áĄáąáŹáşáááŻ-áááş"</string> <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"áááşáážáŻ ááąáŹáˇááááşááŹá¸"</string> <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"ááąáŤááşáááŻááş"</string> <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ááąá¸áááŻááş"</string> - <string name="quick_settings_ime_label" msgid="7073463064369468429">"áááşáˇáá˝ááşá¸áááşáááşá¸áááşá¸"</string> + <string name="quick_settings_ime_label" msgid="7073463064369468429">"áááˇáşáá˝ááşá¸áááşáááşá¸áááşá¸"</string> <string name="quick_settings_location_label" msgid="5011327048748762257">"áááşááąááŹ"</string> <string name="quick_settings_location_off_label" msgid="7464544086507331459">"áááşááąááŹááźáážáŻ ááážá"</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"ááŽááŽáᏠá
ááşáá
ášá
ááşá¸"</string> @@ -252,7 +252,7 @@ <string name="quick_settings_cast_title" msgid="1893629685050355115">"ááŹá
áşááş ááťááşáážáŹááźááş"</string> <string name="quick_settings_casting" msgid="6601710681033353316">"ááŹá
áşáááş"</string> <string name="quick_settings_cast_device_default_name" msgid="5367253104742382945">"áĄáááşááááş ááááááŹ"</string> - <string name="quick_settings_cast_device_default_description" msgid="2484573682378634413">"ááŹá
áşááş ááŻááşáááş áĄáááşáˇ áážáááąááźáŽ"</string> + <string name="quick_settings_cast_device_default_description" msgid="2484573682378634413">"ááŹá
áşááş ááŻááşáááş áĄáááˇáş áážáááąááźáŽ"</string> <string name="quick_settings_cast_detail_empty_text" msgid="311785821261640623">"ááááááŹááťáŹá¸ ááážá"</string> <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"áĄáááşá¸ááąáŹááşááážáŻ"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"áĄáááŻáĄááťáąáŹááş"</string> @@ -261,7 +261,7 @@ <string name="quick_settings_more_settings" msgid="326112621462813682">"ááąáŹááşáááş áááşáááşááťáŹá¸"</string> <string name="quick_settings_done" msgid="3402999958839153376">"ááŻááşááźáŽá¸"</string> <string name="quick_settings_connected" msgid="1722253542984847487">"ááťáááşáááşááŹá¸"</string> - <string name="quick_settings_connected_via_wfa" msgid="1587051627194895715">"ááźááŻá¸áá˛áˇáá°ááŽáá°áážááááşáˇ ááťáááşáááşááźáŽá¸á"</string> + <string name="quick_settings_connected_via_wfa" msgid="1587051627194895715">"ááźááŻá¸áá˛áˇáá°ááŽáá°áážááááˇáş ááťáááşáááşááźáŽá¸á"</string> <string name="quick_settings_connecting" msgid="47623027419264404">"áááşáá˝ááşááą..."</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"áá˝á˛ááťáŽááąá¸ááźááşá¸"</string> <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"ááąáŹáˇá
ááąáŤáˇ"</string> @@ -270,9 +270,9 @@ <string name="quick_settings_cellular_detail_title" msgid="8575062783675171695">"áááşáá°áᏠááąááŹ"</string> <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"ááąáᏠááŻáśá¸á
á˝á˛áážáŻ"</string> <string name="quick_settings_cellular_detail_remaining_data" msgid="722715415543541249">"ááťááşáážá ááąááŹ"</string> - <string name="quick_settings_cellular_detail_over_limit" msgid="967669665390990427">"áááşáˇáááşááťááş ááťáąáŹáşáá˝ááş"</string> + <string name="quick_settings_cellular_detail_over_limit" msgid="967669665390990427">"áááˇáşáááşááťááş ááťáąáŹáşáá˝ááş"</string> <string name="quick_settings_cellular_detail_data_used" msgid="1476810587475761478">"<xliff:g id="DATA_USED">%s</xliff:g> ááŻáśá¸ááŹá¸"</string> - <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> áááşáˇáááşááťááş"</string> + <string name="quick_settings_cellular_detail_data_limit" msgid="56011158504994128">"<xliff:g id="DATA_LIMIT">%s</xliff:g> áááˇáşáááşááťááş"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="2440098045692399009">"<xliff:g id="DATA_LIMIT">%s</xliff:g> áááááąá¸ááťááş"</string> <string name="recents_empty_message" msgid="8682129509540827999">"áááşá áááźáŹááŽá ááťááşáážáŹááźááşááťáŹá¸ ááŽáážáŹ ááąáŤáşááŹááźáááş"</string> <string name="recents_app_info_button_label" msgid="2890317189376000030">"áĄáááŽááąá¸áážááşá¸ áĄááşáááŻ"</string> @@ -281,76 +281,76 @@ <string name="recents_launch_error_message" msgid="2969287838120550506">"<xliff:g id="APP">%s</xliff:g> ááᯠáá
áááŻááşááŤá"</string> <string name="expanded_header_battery_charged" msgid="5945855970267657951">"áĄáŹá¸áá˝ááşá¸ááźáŽá¸"</string> <string name="expanded_header_battery_charging" msgid="205623198487189724">"áĄáŹá¸áá˝ááşá¸ááą"</string> - <string name="expanded_header_battery_charging_with_time" msgid="457559884275395376">"<xliff:g id="CHARGING_TIME">%s</xliff:g> ááźááşáááşáˇ áĄáá"</string> + <string name="expanded_header_battery_charging_with_time" msgid="457559884275395376">"<xliff:g id="CHARGING_TIME">%s</xliff:g> ááźááşáááˇáş áĄáá"</string> <string name="expanded_header_battery_not_charging" msgid="4798147152367049732">"áĄáŹá¸ ááá˝ááşá¸ááŤ"</string> <string name="ssl_ca_cert_warning" msgid="9005954106902053641">"áá˝ááşáááşáááŻ\n á
áąáŹááˇáşááźááˇáşá
á
áşááąá¸ááśááááŻááşáááş"</string> <string name="description_target_search" msgid="3091587249776033139">"áážáŹáá˝áąáááş"</string> <string name="description_direction_up" msgid="7169032478259485180">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> áĄáá˝ááş áĄááąáŤáşááᯠáá˝ááşáá˝á˛ááŤ"</string> <string name="description_direction_left" msgid="7207478719805562165">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> áĄáá˝ááş áááşáááşááᯠáá˝ááşáá˝á˛ááŤ"</string> <string name="zen_no_interruptions_with_warning" msgid="4396898053735625287">"ááźáŹá¸ááźááşáááşáážáŻááťáŹá¸ ááážááá˛áˇá áážááŻá¸á
ááşáááş ááážááá˛áˇá"</string> - <string name="zen_no_interruptions" msgid="7970973750143632592">"ááźáŹá¸ááźááşáááşáážáŻ áá˝ááşáˇáááźáŻáááş"</string> + <string name="zen_no_interruptions" msgid="7970973750143632592">"ááźáŹá¸ááźááşáááşáážáŻ áá˝ááˇáşáááźáŻáááş"</string> <string name="zen_important_interruptions" msgid="3477041776609757628">"áŚá¸á
áŹá¸ááąá¸ ááźáŹá¸ááźááşáááşáážáŻááťáŹá¸ ááŹááťážááş"</string> <string name="zen_alarm_information_time" msgid="5235772206174372272">"áááşá ááąáŹááş áážááŻá¸á
ááşá áĄááťáááşáážáŹ<xliff:g id="ALARM_TIME">%s</xliff:g>"</string> <string name="zen_alarm_information_day_time" msgid="8422733576255047893">"áááşá ááąáŹááş áážááŻá¸á
ááşáážáŹ <xliff:g id="ALARM_DAY_AND_TIME">%s</xliff:g>"</string> <string name="zen_alarm_warning" msgid="6873910860111498041">"áááşáááş áááşá <xliff:g id="ALARM_TIME">%s</xliff:g> áážááŻá¸á
ááşááᯠááźáŹá¸ááááş áááŻááş"</string> <string name="keyguard_more_overflow_text" msgid="9195222469041601365">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> - <string name="speed_bump_explanation" msgid="1288875699658819755">"áĄááąá¸ááŤáážáŻ áááşá¸áááşáˇ áĄááźáąáŹááşá¸ááźáŹá¸ááťááşááťáŹá¸ áĄáąáŹááşáážáŹ"</string> - <string name="notification_tap_again" msgid="8524949573675922138">"áá˝ááşáˇáááş áááşááźáŽá¸ ááááŤ"</string> - <string name="keyguard_unlock" msgid="8043466894212841998">"ááąáŹáˇáá˝ááşáˇáááş áĄááąáŤáşáááŻáˇ áá˝ááşáá˝á˛ááŤ"</string> + <string name="speed_bump_explanation" msgid="1288875699658819755">"áĄááąá¸ááŤáážáŻ áááşá¸áááˇáş áĄááźáąáŹááşá¸ááźáŹá¸ááťááşááťáŹá¸ áĄáąáŹááşáážáŹ"</string> + <string name="notification_tap_again" msgid="8524949573675922138">"áá˝ááˇáşáááş áááşááźáŽá¸ ááááŤ"</string> + <string name="keyguard_unlock" msgid="8043466894212841998">"ááąáŹáˇáá˝ááˇáşáááş áĄááąáŤáşáááŻáˇ áá˝ááşáá˝á˛ááŤ"</string> <string name="phone_hint" msgid="3101468054914424646">"ááŻááşá¸ áĄáá˝ááş ááŹáááŻáˇ áá˝ááşáá˝á˛ááŤ"</string> <string name="camera_hint" msgid="5241441720959174226">"áááşááᏠáĄáá˝ááş áááşáááŻáˇ áá˝ááşáá˝á˛ááŤ"</string> <string name="interruption_level_none" msgid="3831278883136066646">"ááážá"</string> <string name="interruption_level_priority" msgid="6517366750688942030">"áŚá¸á
áŹá¸ááąá¸áážáŻ"</string> <string name="interruption_level_all" msgid="1330581184930945764">"áĄáŹá¸ááŻáśá¸"</string> - <string name="keyguard_indication_charging_time" msgid="1757251776872835768">"(<xliff:g id="CHARGING_TIME_LEFT">%s</xliff:g> áĄááźááşáˇ áĄáá) áĄáŹá¸áá˝ááşá¸ááą"</string> + <string name="keyguard_indication_charging_time" msgid="1757251776872835768">"(<xliff:g id="CHARGING_TIME_LEFT">%s</xliff:g> áĄááźááˇáş áĄáá) áĄáŹá¸áá˝ááşá¸ááą"</string> <string name="accessibility_multi_user_switch_switcher" msgid="7305948938141024937">"áĄááŻáśá¸ááźáŻáá°ááᯠááźáąáŹááşá¸áá˛áááş"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="8434880595284601601">"áĄááŻáśá¸ááźáŻáá°ááᯠááźáąáŹááşá¸áááşá áááşáážá áĄááŻáśá¸ááźáŻáá° <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_quick_contact" msgid="3020367729287990475">"ááááŻáááŻááşááᯠááźáááş"</string> <string name="user_add_user" msgid="5110251524486079492">"ááŻáśá¸áá° áááşáááˇáşáááş"</string> <string name="user_new_user_name" msgid="426540612051178753">"áĄááŻáśá¸ááźáŻáá° áĄáá
áş"</string> - <string name="guest_nickname" msgid="8059989128963789678">"á§ááşáˇáááş"</string> - <string name="guest_new_guest" msgid="600537543078847803">"á§ááşáˇáááşáˇááᯠáááşáˇááąá¸áááş"</string> - <string name="guest_exit_guest" msgid="7187359342030096885">"á§ááşáˇáááşááᯠáááşááŻááşáááş"</string> - <string name="guest_exit_guest_dialog_title" msgid="8480693520521766688">"á§ááşáˇáááşááᯠáááşááŻááşáááŻááşááááŹá¸?"</string> - <string name="guest_exit_guest_dialog_message" msgid="4155503224769676625">"ááŽááťáááşáááşáážáŻ áá˛á appááťáŹá¸ áĄáŹá¸ááŻáśá¸ áážááşáˇ ááąááŹááᯠááťááşáá
áşáááşá"</string> + <string name="guest_nickname" msgid="8059989128963789678">"á§ááˇáşáááş"</string> + <string name="guest_new_guest" msgid="600537543078847803">"á§ááˇáşáááˇáşááᯠáááˇáşááąá¸áááş"</string> + <string name="guest_exit_guest" msgid="7187359342030096885">"á§ááˇáşáááşááᯠáááşááŻááşáááş"</string> + <string name="guest_exit_guest_dialog_title" msgid="8480693520521766688">"á§ááˇáşáááşááᯠáááşááŻááşáááŻááşááááŹá¸?"</string> + <string name="guest_exit_guest_dialog_message" msgid="4155503224769676625">"ááŽááťáááşáááşáážáŻ áá˛á appááťáŹá¸ áĄáŹá¸ááŻáśá¸ áážááˇáş ááąááŹááᯠááťááşáá
áşáááşá"</string> <string name="guest_exit_guest_dialog_remove" msgid="7402231963862520531">"áááşááŻááşááŤ"</string> - <string name="guest_wipe_session_title" msgid="6419439912885956132">"ááźááşááŹáᏠááźááŻáááŻááŤáááşá á§ááşáˇáááş!"</string> + <string name="guest_wipe_session_title" msgid="6419439912885956132">"ááźááşááŹáᏠááźááŻáááŻááŤáááşá á§ááˇáşáááş!"</string> <string name="guest_wipe_session_message" msgid="8476238178270112811">"áááşáááş áááşá ááťáááşáááşáážáŻááᯠáááşááźáŻááŻááş áááŻááŤáááŹá¸?"</string> <string name="guest_wipe_session_wipe" msgid="5065558566939858884">"áĄá
ááž ááźááşá
ááŤ"</string> <string name="guest_wipe_session_dontwipe" msgid="1401113462524894716">"ááŻááşáá˛áˇá áááşááŻááşááŤ"</string> - <string name="user_add_user_title" msgid="4553596395824132638">"áĄááŻáśá¸ááźáŻáá° áĄáá
áşááᯠáááşáˇááááŹá¸?"</string> - <string name="user_add_user_message_short" msgid="2161624834066214559">"áááşá áĄááŻáśá¸ááźáŻáá° áĄáá
áş áá
áşáŚá¸ááᯠáááşáˇááąá¸áááŻááşááťážááşá áááŻáá°áááş áááşá¸á ááąááŹááᯠáááşáážááşá
áŽá
ááşáááş áááŻáĄááşáááşá\n\n áĄááŻáśá¸ááźáŻáá° áááşáá°áááᯠááťááşáĄááŻáśá¸ááźáŻáá° áĄáŹá¸ááŻáśá¸áááŻáˇáĄáá˝ááş appááťáŹá¸ááᯠáá˝ááşá¸ááśááąá¸áááŻááşáááşá"</string> - <string name="battery_saver_notification_title" msgid="237918726750955859">"áááşááᎠááťá˝áąááŹáá° áá˝ááşáˇááŹá¸"</string> - <string name="battery_saver_notification_text" msgid="820318788126672692">"ááŻááşáááŻááşáážáŻááᯠááťážáąáŹáˇááťááťááş ááąáŹááşááś ááąááŹááᯠáááşáˇáááşáááş"</string> + <string name="user_add_user_title" msgid="4553596395824132638">"áĄááŻáśá¸ááźáŻáá° áĄáá
áşááᯠáááˇáşááááŹá¸?"</string> + <string name="user_add_user_message_short" msgid="2161624834066214559">"áááşá áĄááŻáśá¸ááźáŻáá° áĄáá
áş áá
áşáŚá¸ááᯠáááˇáşááąá¸áááŻááşááťážááşá áááŻáá°áááş áááşá¸á ááąááŹááᯠáááşáážááşá
áŽá
ááşáááş áááŻáĄááşáááşá\n\n áĄááŻáśá¸ááźáŻáá° áááşáá°áááᯠááťááşáĄááŻáśá¸ááźáŻáá° áĄáŹá¸ááŻáśá¸áááŻáˇáĄáá˝ááş appááťáŹá¸ááᯠáá˝ááşá¸ááśááąá¸áááŻááşáááşá"</string> + <string name="battery_saver_notification_title" msgid="237918726750955859">"áááşááᎠááťá˝áąááŹáá° áá˝ááˇáşááŹá¸"</string> + <string name="battery_saver_notification_text" msgid="820318788126672692">"ááŻááşáááŻááşáážáŻááᯠááťážáąáŹáˇááťááťááş ááąáŹááşááś ááąááŹááᯠáááˇáşáááşáááş"</string> <string name="battery_saver_notification_action_text" msgid="109158658238110382">"áááşááᎠááťá˝áąááŹáážáŻááᯠááááşááŹá¸áááş"</string> <string name="notification_hidden_text" msgid="1135169301897151909">"áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ áážááşááŹá¸"</string> - <string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> á áááşá ááťááşáážáŹááźááş ááąáŤáşáážáŹ ááźáááŹá¸áááşáˇ áĄááŹáááŻááşá¸ááᯠá
áááş áááşá¸áá°áááşá"</string> + <string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> á áááşá ááťááşáážáŹááźááş ááąáŤáşáážáŹ ááźáááŹá¸áááˇáş áĄááŹáááŻááşá¸ááᯠá
áááş áááşá¸áá°áááşá"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"ááąáŹááşáááş áááźááŤáážááˇáş"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"áĄáŹá¸ááŻáśá¸ áážááşá¸áááşá¸áááş"</string> <string name="media_projection_action_text" msgid="8470872969457985954">"ááᯠá
áááşááŤ"</string> <string name="empty_shade_text" msgid="708135716272867002">"áĄááźáąáŹááşá¸ááźáŹá¸ááťááşááťáŹá¸ ááážá"</string> - <string name="device_owned_footer" msgid="3802752663326030053">"ááááááŹááᯠá
áąáŹááşáˇááźááş áááŻááşááŤáááş"</string> - <string name="profile_owned_footer" msgid="8021888108553696069">"ááááŻáááŻááşááᯠá
áąáŹááşáˇááźááşáááŻááşáááş"</string> - <string name="vpn_footer" msgid="2388611096129106812">"áá˝ááşáááşááᯠááᯠá
áąáŹááşáˇááźááş áááŻááşááŤáááş"</string> + <string name="device_owned_footer" msgid="3802752663326030053">"ááááááŹááᯠá
áąáŹááˇáşááźááş áááŻááşááŤáááş"</string> + <string name="profile_owned_footer" msgid="8021888108553696069">"ááááŻáááŻááşááᯠá
áąáŹááˇáşááźááşáááŻááşáááş"</string> + <string name="vpn_footer" msgid="2388611096129106812">"áá˝ááşáááşááᯠááᯠá
áąáŹááˇáşááźááş áááŻááşááŤáááş"</string> <string name="monitoring_title_device_owned" msgid="7121079311903859610">"ááááááŹááᯠá
áąáŹááˇáşááźááşááźááşá¸"</string> - <string name="monitoring_title_profile_owned" msgid="6790109874733501487">"ááááŻáááŻááş á
áąáŹááşáˇááźááşáážáŻ"</string> + <string name="monitoring_title_profile_owned" msgid="6790109874733501487">"ááááŻáááŻááş á
áąáŹááˇáşááźááşáážáŻ"</string> <string name="monitoring_title" msgid="169206259253048106">"áá˝ááşáááşááᯠá
áąáŹááˇáşááźááşááźááşá¸"</string> <string name="disable_vpn" msgid="4435534311510272506">"VPN ááᯠááááşááŹá¸áááş"</string> <string name="disconnect_vpn" msgid="1324915059568548655">"VPN ááᯠáĄáááşááźááşáááş"</string> <string name="monitoring_description_device_owned" msgid="7512371572956715493">"á¤á
ááşáá
ášá
ááşá¸ááᯠá
áŽááśáááˇáşáá˝á˛áá°:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááˇáşáĄááşááşáááşáááş áááˇáşá
ááşáá
ášá
ááşá¸áážááˇáş áĄáŽá¸ááąá¸ááťáŹá¸á app ááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáşáááşááşáááŻááş áĄááŤáĄáááş áá˝ááşáááş áážáŻááşážááŹá¸áážáŻááťáŹá¸ááᯠá
áąáŹááˇáşááźááˇáşáááŻááşáááşá\n\nááąáŹááşáááşáĄááťááşáĄáááşááťáŹá¸áĄáá˝ááşá áááˇáşáĄááşááşáááşááᯠáááşáá˝ááşááŤá"</string> <string name="monitoring_description_vpn" msgid="7288268682714305659">"áááş \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" ááᯠVPN á
áááşááŻáśá¸áá˝ááˇáşááąá¸áááŻááşáááşá \n\n ᤠapp áááş áááˇáşá
ááşáá
ášá
ááşá¸áážááˇáş áĄáŽá¸ááąá¸ááťáŹá¸á app ááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáşáááşááşáááŻááş áĄááŤáĄáááş áá˝ááşáááş áážáŻááşážááŹá¸áážáŻááťáŹá¸ááᯠá
áąáŹááˇáşááźááˇáşáááŻááşáááşá"</string> <string name="monitoring_description_legacy_vpn" msgid="4740349017929725435">"VPN (\"<xliff:g id="APPLICATION">%1$s</xliff:g>\") ááᯠáááşááťáááşáááşáááá\n\náááˇáş VPN áááşááąáŹááşáážáŻááąá¸áá°áááş áááˇáşá
ááşáá
ášá
ááşá¸áážááˇáş áĄáŽá¸ááąá¸ááťáŹá¸á app ááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáşáááşááşáááŻááş áĄááŤáĄáááş áá˝ááşáááş áážáŻááşážááŹá¸áážáŻááťáŹá¸ááᯠá
áąáŹááˇáşááźááˇáşáááŻááşáááşá"</string> - <string name="monitoring_description_vpn_device_owned" msgid="696121105616356493">"ááŽááááááŹááᯠá
áŽááśáá˝ááşáá˛áá°áážáŹ:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°á áááşá áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻáááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááşáˇááźááş áááŻááşááŤáááşá áĄááťááşáĄáááşááťáŹá¸ áááŻááźáŽá¸ ááá°áááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\n áááŻáˇáĄááźááş áááşáááş \"<xliff:g id="APPLICATION">%2$s</xliff:g>\" áĄáŹá¸ VPN ááťáááşáááşáážáŻ á
áá˝ááşáˇááŻááşáááŻááşáááş áá˝ááşáˇááźáŻáá˛áˇáááşá áᎠappáá፠áááşá áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááşáˇááźááş áááŻááşááŤáááşá"</string> - <string name="monitoring_description_legacy_vpn_device_owned" msgid="649791650224064248">"ááŽááááááŹááᯠá
áŽááśáá˝ááşáá˛áá°áážáŹ:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°á áááşá áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻáááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááşáˇááźááş áááŻááşááŤáááşá áĄááťááşáĄáááşááťáŹá¸ áááŻááźáŽá¸ ááá°áááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\náááŻáˇáĄááźááşá áááşáááş VPN (\"<xliff:g id="APPLICATION">%2$s</xliff:g>\") áááŻáˇ ááťáááşáááşááŹá¸áááşá áááşá VPN áááşááąáŹááşáážáŻááᯠá
áŽááśááąá¸áá°áá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááťáŹá¸ááᯠá
áąáŹááşáˇááźááşáááŻááşááąá¸áááşá"</string> - <string name="monitoring_description_profile_owned" msgid="2370062794285691713">"ááŽááááŻáááŻááşááᯠá
áŽááśáá˝ááşáá˛ááąá¸áá°:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°áááş áááşá áááááᏠáážááşáˇ áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááťáŹá¸áááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááşáˇááźááşáááŻááşáááşá \n\n ááąáŹááşáááş áááááŻááťážááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá"</string> - <string name="monitoring_description_device_and_profile_owned" msgid="8685301493845456293">"ááŽááááááŹááᯠá
áŽááśáá˝ááşáá˛ááąá¸áá°:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>\náááşáˇ ááááŻáááŻááşááᯠá
áŽááśáá˝ááşáá˛ááąá¸áá°:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°áááş áááşá áááááᏠáážááşáˇ áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááťáŹá¸áááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááşáˇááźááşáááŻááşáááşá\n\nááąáŹááşáááş áááááŻááťážááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá"</string> - <string name="monitoring_description_vpn_profile_owned" msgid="847491346263295767">"ááááŻáááŻááşááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşáˇ á
áŽááśáĄáŻááşááťáŻááşáá°á áááşáˇ áááááᏠáážááşáˇ áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻáááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşá á
áąáŹááşáˇááźááşáááŻááşáááşá áááş áááááŻááťážááşá áááşáˇ á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\n áááşáááş \"<xliff:g id="APPLICATION">%2$s</xliff:g>\" áĄáŹá¸ VPN ááťáááşáááşáážáŻ áá°ááąáŹááşáá˝ááşáˇ ááąá¸áá˛áˇáááşá ááŽappáá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááşáˇááźááşáááŻááşáááşá"</string> - <string name="monitoring_description_legacy_vpn_profile_owned" msgid="4095516964132237051">"ááááŻáááŻááşááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşáˇá
áŽááśáĄáŻááşááťáŻááşáá°á áááşáˇ áááááᏠáážááşáˇ áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşááᯠá
áąáŹááşáˇááźááşáááŻááşáááşá áááş áááááŻááťážááşá áááşáˇá
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\náááşáááş VPN (\"<xliff:g id="APPLICATION">%2$s</xliff:g>\") áááŻáˇá፠ááťáááşááŹá¸áááşá áááşá VPN á
áŽááśááąá¸áá°áá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááşáˇááźááşáááŻááşáááşá"</string> - <string name="monitoring_description_vpn_device_and_profile_owned" msgid="9193588924767232909">"ááááááŹááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>\náááşáˇááááŻáááŻááşááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>\n\náááşáˇá
áŽááśáĄáŻááşááťáŻááşáá°áááş áááşáˇ áááááᏠáážááşáˇ áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşááᯠá
áąáŹááşáˇááźááşáááŻááşáááşá\n\náááşáááş \"<xliff:g id="APPLICATION">%3$s</xliff:g>\"áĄáŹá¸ VPN ááťáááşáááşáážáŻ áá°ááąáŹááşáá˝ááşáˇ ááąá¸áá˛áˇáááşá ááŽappáá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááşáˇááźááşáááŻááşáááşá"</string> - <string name="monitoring_description_legacy_vpn_device_and_profile_owned" msgid="6935475023447698473">"ááŽáááááᏠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>\náááşáˇ ááááŻáááŻááş á
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>\n\n á
áŽááśáĄáŻááşááťáŻááşáá°áááş áááşáˇ áááááᏠáážááşáˇ áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááşáˇ ááŻáśááźáŻáśáááşáˇ áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşááᯠá
áąáŹááşáˇááźááşáááŻááşáááşá\n\náááş áááááŻááťážááşá áááşáˇá
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá áááşáááş VPN (\"<xliff:g id="APPLICATION">%3$s</xliff:g>\") áááŻáˇá፠ááťáááşááŹá¸áááşá áááşá VPN á
áŽááśááąá¸áá°áá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááşáˇááźááşáááŻááşáááşá"</string> - <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"áááşá áááşááźááşáˇ ááąáŹáˇááá˝ááşáˇáááťááşá¸ ááááááŹáážáŹ ááąáŹáˇááááşááťááş áážáááąáááş"</string> + <string name="monitoring_description_vpn_device_owned" msgid="696121105616356493">"ááŽááááááŹááᯠá
áŽááśáá˝ááşáá˛áá°áážáŹ:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°á áááşá áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻáááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááˇáşááźááş áááŻááşááŤáááşá áĄááťááşáĄáááşááťáŹá¸ áááŻááźáŽá¸ ááá°áááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\n áááŻáˇáĄááźááş áááşáááş \"<xliff:g id="APPLICATION">%2$s</xliff:g>\" áĄáŹá¸ VPN ááťáááşáááşáážáŻ á
áá˝ááˇáşááŻááşáááŻááşáááş áá˝ááˇáşááźáŻáá˛áˇáááşá áᎠappáá፠áááşá áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááˇáşááźááş áááŻááşááŤáááşá"</string> + <string name="monitoring_description_legacy_vpn_device_owned" msgid="649791650224064248">"ááŽááááááŹááᯠá
áŽááśáá˝ááşáá˛áá°áážáŹ:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°á áááşá áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻáááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááˇáşááźááş áááŻááşááŤáááşá áĄááťááşáĄáááşááťáŹá¸ áááŻááźáŽá¸ ááá°áááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\náááŻáˇáĄááźááşá áááşáááş VPN (\"<xliff:g id="APPLICATION">%2$s</xliff:g>\") áááŻáˇ ááťáááşáááşááŹá¸áááşá áááşá VPN áááşááąáŹááşáážáŻááᯠá
áŽááśááąá¸áá°áá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááťáŹá¸ááᯠá
áąáŹááˇáşááźááşáááŻááşááąá¸áááşá"</string> + <string name="monitoring_description_profile_owned" msgid="2370062794285691713">"ááŽááááŻáááŻááşááᯠá
áŽááśáá˝ááşáá˛ááąá¸áá°:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°áááş áááşá áááááᏠáážááˇáş áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááťáŹá¸áááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááˇáşááźááşáááŻááşáááşá \n\n ááąáŹááşáááş áááááŻááťážááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá"</string> + <string name="monitoring_description_device_and_profile_owned" msgid="8685301493845456293">"ááŽááááááŹááᯠá
áŽááśáá˝ááşáá˛ááąá¸áá°:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>\náááˇáş ááááŻáááŻááşááᯠá
áŽááśáá˝ááşáá˛ááąá¸áá°:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>\n\náááşá á
áŽááśáĄáŻááşááťáŻááşáá°áááş áááşá áááááᏠáážááˇáş áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááťáŹá¸áááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşáááŻá á
áąáŹááˇáşááźááşáááŻááşáááşá\n\nááąáŹááşáááş áááááŻááťážááşá áááşá á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá"</string> + <string name="monitoring_description_vpn_profile_owned" msgid="847491346263295767">"ááááŻáááŻááşááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááˇáş á
áŽááśáĄáŻááşááťáŻááşáá°á áááˇáş áááááᏠáážááˇáş áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻáááŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşá á
áąáŹááˇáşááźááşáááŻááşáááşá áááş áááááŻááťážááşá áááˇáş á
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\n áááşáááş \"<xliff:g id="APPLICATION">%2$s</xliff:g>\" áĄáŹá¸ VPN ááťáááşáááşáážáŻ áá°ááąáŹááşáá˝ááˇáş ááąá¸áá˛áˇáááşá ááŽappáá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááˇáşááźááşáááŻááşáááşá"</string> + <string name="monitoring_description_legacy_vpn_profile_owned" msgid="4095516964132237051">"ááááŻáááŻááşááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION">%1$s</xliff:g>\n\náááˇáşá
áŽááśáĄáŻááşááťáŻááşáá°á áááˇáş áááááᏠáážááˇáş áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşááᯠá
áąáŹááˇáşááźááşáááŻááşáááşá áááş áááááŻááťážááşá áááˇáşá
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá\n\náááşáááş VPN (\"<xliff:g id="APPLICATION">%2$s</xliff:g>\") áááŻáˇá፠ááťáááşááŹá¸áááşá áááşá VPN á
áŽááśááąá¸áá°áá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááˇáşááźááşáááŻááşáááşá"</string> + <string name="monitoring_description_vpn_device_and_profile_owned" msgid="9193588924767232909">"ááááááŹááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>\náááˇáşááááŻáááŻááşááᯠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>\n\náááˇáşá
áŽááśáĄáŻááşááťáŻááşáá°áááş áááˇáş áááááᏠáážááˇáş áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşááᯠá
áąáŹááˇáşááźááşáááŻááşáááşá\n\náááşáááş \"<xliff:g id="APPLICATION">%3$s</xliff:g>\"áĄáŹá¸ VPN ááťáááşáááşáážáŻ áá°ááąáŹááşáá˝ááˇáş ááąá¸áá˛áˇáááşá ááŽappáá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááˇáşááźááşáááŻááşáááşá"</string> + <string name="monitoring_description_legacy_vpn_device_and_profile_owned" msgid="6935475023447698473">"ááŽáááááᏠá
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_0">%1$s</xliff:g>\náááˇáş ááááŻáááŻááş á
áŽááśááąá¸áá°:\n<xliff:g id="ORGANIZATION_1">%2$s</xliff:g>\n\n á
áŽááśáĄáŻááşááťáŻááşáá°áááş áááˇáş áááááᏠáážááˇáş áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻá áĄáŽá¸ááąá¸ááşááťáŹá¸á appááťáŹá¸ áážááˇáş ááŻáśááźáŻáśáááˇáş áááşááşáááŻááşááťáŹá¸ áĄááŤáĄáááşááᯠá
áąáŹááˇáşááźááşáááŻááşáááşá\n\náááş áááááŻááťážááşá áááˇáşá
áŽááśáĄáŻááşááťáŻááşáá°ááᯠáááşáá˝ááşááŤá áááşáááş VPN (\"<xliff:g id="APPLICATION">%3$s</xliff:g>\") áááŻáˇá፠ááťáááşááŹá¸áááşá áááşá VPN á
áŽááśááąá¸áá°áá፠áá˝ááşáááş áážáŻááşáážáŹá¸áážáŻááᯠá
áąáŹááˇáşááźááşáááŻááşáááşá"</string> + <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"áááşá áááşááźááˇáş ááąáŹáˇááá˝ááˇáşáááťááşá¸ ááááááŹáážáŹ ááąáŹáˇááááşááťááş áážáááąáááş"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"áĄááźáąáŹááşá¸ááźáŹá¸ááťááşááťáŹá¸ ááźááşááźááşááááş"</string> - <string name="hidden_notifications_text" msgid="2326409389088668981">"ááá˝ááşáˇáááş áááşá¸áááŻáˇááᯠááźááşáˇááŤ"</string> + <string name="hidden_notifications_text" msgid="2326409389088668981">"ááá˝ááˇáşáááş áááşá¸áááŻáˇááᯠááźááˇáşááŤ"</string> <string name="hidden_notifications_cancel" msgid="3690709735122344913">"ááááŻáĄááşááŤ"</string> <string name="hidden_notifications_setup" msgid="41079514801976810">"áááşáážááşáááş"</string> <string name="zen_mode_and_condition" msgid="4462471036429759903">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>á <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string> diff --git a/packages/VpnDialogs/res/values-my-rMM/strings.xml b/packages/VpnDialogs/res/values-my-rMM/strings.xml index b8a141c953d8..6456c5efb452 100644 --- a/packages/VpnDialogs/res/values-my-rMM/strings.xml +++ b/packages/VpnDialogs/res/values-my-rMM/strings.xml @@ -17,11 +17,11 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="prompt" msgid="3183836924226407828">"ááťáááşáááşáááş ááąáŹááşá¸áááŻááťááş"</string> - <string name="warning" msgid="809658604548412033">"<xliff:g id="APP">%s</xliff:g> á áá˝ááşáááş ááŻááşáááşá¸ááᯠá
áąáŹááşáˇááźááşáˇáá˝ááşáˇ ááźáŻáááşáˇ VPN ááťáááşáááşáážáŻááᯠáá°ááąáŹááşáááŻáááşá áááşá¸ááźá
áşááᯠáááşá ááŻáśááźááşáážáᏠáááşááśááŤá <br /> <br /> <img src=vpn_icon /> áážáŹ VPN áĄááŻááşááŻááşááąááťážááş áááşá ááťááşáážáŹááźááş ááááşáážáŹ ááąáŤáşááŹáááşá"</string> - <string name="legacy_title" msgid="192936250066580964">"VPNáážááşáˇááťáááşáááşááŹá¸áááş"</string> + <string name="warning" msgid="809658604548412033">"<xliff:g id="APP">%s</xliff:g> á áá˝ááşáááş ááŻááşáááşá¸ááᯠá
áąáŹááˇáşááźááˇáşáá˝ááˇáş ááźáŻáááˇáş VPN ááťáááşáááşáážáŻááᯠáá°ááąáŹááşáááŻáááşá áááşá¸ááźá
áşááᯠáááşá ááŻáśááźááşáážáᏠáááşááśááŤá <br /> <br /> <img src=vpn_icon /> áážáŹ VPN áĄááŻááşááŻááşááąááťážááş áááşá ááťááşáážáŹááźááş ááááşáážáŹ ááąáŤáşááŹáááşá"</string> + <string name="legacy_title" msgid="192936250066580964">"VPNáážááˇáşááťáááşáááşááŹá¸áááş"</string> <string name="configure" msgid="4905518375574791375">"ááŻáśááąáŤáşá
áąáááş"</string> <string name="disconnect" msgid="971412338304200056">"ááťáááşáááşááźááşá¸áááşáááş"</string> - <string name="session" msgid="6470628549473641030">"áááşáážááşááąá¸ááŹá¸áááşáˇáĄááťáááş:"</string> + <string name="session" msgid="6470628549473641030">"áááşáážááşááąá¸ááŹá¸áááˇáşáĄááťáááş:"</string> <string name="duration" msgid="3584782459928719435">"áĄááťáááşááŹá-"</string> <string name="data_transmitted" msgid="7988167672982199061">"áááŻáˇáááş-"</string> <string name="data_received" msgid="4062776929376067820">"áááşááśááážááááş"</string> diff --git a/services/core/jni/com_android_server_tv_TvInputHal.cpp b/services/core/jni/com_android_server_tv_TvInputHal.cpp index c0e4d327936f..507bc9cb5269 100644 --- a/services/core/jni/com_android_server_tv_TvInputHal.cpp +++ b/services/core/jni/com_android_server_tv_TvInputHal.cpp @@ -264,6 +264,7 @@ private: class NotifyHandler : public MessageHandler { public: NotifyHandler(JTvInputHal* hal, const tv_input_event_t* event); + ~NotifyHandler(); virtual void handleMessage(const Message& message); @@ -277,6 +278,9 @@ private: static void notify( tv_input_device_t* dev, tv_input_event_t* event, void* data); + static void cloneTvInputEvent( + tv_input_event_t* dstEvent, const tv_input_event_t* srcEvent); + Mutex mLock; jweak mThiz; tv_input_device_t* mDevice; @@ -447,6 +451,20 @@ void JTvInputHal::notify( thiz->mLooper->sendMessage(new NotifyHandler(thiz, event), event->type); } +// static +void JTvInputHal::cloneTvInputEvent( + tv_input_event_t* dstEvent, const tv_input_event_t* srcEvent) { + memcpy(dstEvent, srcEvent, sizeof(tv_input_event_t)); + if ((srcEvent->type == TV_INPUT_EVENT_DEVICE_AVAILABLE || + srcEvent->type == TV_INPUT_EVENT_DEVICE_UNAVAILABLE || + srcEvent->type == TV_INPUT_EVENT_STREAM_CONFIGURATIONS_CHANGED) && + srcEvent->device_info.audio_address != NULL){ + char* audio_address = new char[strlen(srcEvent->device_info.audio_address) + 1]; + strcpy(audio_address, srcEvent->device_info.audio_address); + dstEvent->device_info.audio_address = audio_address; + } +} + void JTvInputHal::onDeviceAvailable(const tv_input_device_info_t& info) { { Mutex::Autolock autoLock(&mLock); @@ -543,7 +561,16 @@ void JTvInputHal::onCaptured(int deviceId, int streamId, uint32_t seq, bool succ JTvInputHal::NotifyHandler::NotifyHandler(JTvInputHal* hal, const tv_input_event_t* event) { mHal = hal; - memcpy(&mEvent, event, sizeof(mEvent)); + cloneTvInputEvent(&mEvent, event); +} + +JTvInputHal::NotifyHandler::~NotifyHandler() { + if ((mEvent.type == TV_INPUT_EVENT_DEVICE_AVAILABLE || + mEvent.type == TV_INPUT_EVENT_DEVICE_UNAVAILABLE || + mEvent.type == TV_INPUT_EVENT_STREAM_CONFIGURATIONS_CHANGED) && + mEvent.device_info.audio_address != NULL) { + delete mEvent.device_info.audio_address; + } } void JTvInputHal::NotifyHandler::handleMessage(const Message& message) { |