diff options
-rw-r--r-- | apct-tests/perftests/core/src/android/graphics/perftests/CanvasPerfTest.java | 1 | ||||
-rw-r--r-- | core/java/android/view/ThreadedRenderer.java | 9 | ||||
-rw-r--r-- | core/java/android/view/View.java | 6 | ||||
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 4 | ||||
-rw-r--r-- | core/jni/android_graphics_Canvas.cpp | 6 | ||||
-rw-r--r-- | core/jni/android_view_ThreadedRenderer.cpp | 6 | ||||
-rw-r--r-- | graphics/java/android/graphics/Canvas.java | 7 | ||||
-rw-r--r-- | libs/hwui/Properties.cpp | 1 | ||||
-rw-r--r-- | libs/hwui/Properties.h | 3 | ||||
-rw-r--r-- | libs/hwui/RecordingCanvas.h | 6 | ||||
-rw-r--r-- | libs/hwui/SkiaCanvas.cpp | 1 | ||||
-rw-r--r-- | libs/hwui/SkiaCanvas.h | 7 | ||||
-rw-r--r-- | libs/hwui/hwui/Canvas.h | 4 | ||||
-rw-r--r-- | libs/hwui/tests/microbench/DisplayListCanvasBench.cpp | 1 | ||||
-rw-r--r-- | libs/hwui/tests/unit/RecordingCanvasTests.cpp | 3 |
15 files changed, 25 insertions, 40 deletions
diff --git a/apct-tests/perftests/core/src/android/graphics/perftests/CanvasPerfTest.java b/apct-tests/perftests/core/src/android/graphics/perftests/CanvasPerfTest.java index 519d1f4c96b1..eed1db032d9f 100644 --- a/apct-tests/perftests/core/src/android/graphics/perftests/CanvasPerfTest.java +++ b/apct-tests/perftests/core/src/android/graphics/perftests/CanvasPerfTest.java @@ -51,7 +51,6 @@ public class CanvasPerfTest { while (state.keepRunning()) { canvas = node.start(200, 200); - canvas.setHighContrastText(false); int save = canvas.save(); canvas.clipRect(1, 1, 199, 199); canvas.insertReorderBarrier(); diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java index 489de565acb6..2166f6e4742b 100644 --- a/core/java/android/view/ThreadedRenderer.java +++ b/core/java/android/view/ThreadedRenderer.java @@ -914,6 +914,14 @@ public final class ThreadedRenderer { return nCreateHardwareBitmap(node.getNativeDisplayList(), width, height); } + /** + * Sets whether or not high contrast text rendering is enabled. The setting is global + * but only affects content rendered after the change is made. + */ + public static void setHighContrastText(boolean highContrastText) { + nSetHighContrastText(highContrastText); + } + @Override protected void finalize() throws Throwable { try { @@ -1063,4 +1071,5 @@ public final class ThreadedRenderer { int srcLeft, int srcTop, int srcRight, int srcBottom, Bitmap bitmap); private static native Bitmap nCreateHardwareBitmap(long renderNode, int width, int height); + private static native void nSetHighContrastText(boolean enabled); } diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 2c41bf631813..d640236ae747 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -18055,7 +18055,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, int layerType = getLayerType(); final DisplayListCanvas canvas = renderNode.start(width, height); - canvas.setHighContrastText(mAttachInfo.mHighContrastText); try { if (layerType == LAYER_TYPE_SOFTWARE) { @@ -25365,11 +25364,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, boolean mViewScrollChanged; /** - * Set to true if high contrast mode enabled - */ - boolean mHighContrastText; - - /** * Set to true if a pointer event is currently being handled. */ boolean mHandlingPointerEvent; diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 6bf48450fc71..82bf6bebddbe 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -7741,11 +7741,11 @@ public final class ViewRootImpl implements ViewParent, final class HighContrastTextManager implements HighTextContrastChangeListener { HighContrastTextManager() { - mAttachInfo.mHighContrastText = mAccessibilityManager.isHighTextContrastEnabled(); + ThreadedRenderer.setHighContrastText(mAccessibilityManager.isHighTextContrastEnabled()); } @Override public void onHighTextContrastStateChanged(boolean enabled) { - mAttachInfo.mHighContrastText = enabled; + ThreadedRenderer.setHighContrastText(enabled); // Destroy Displaylists so they can be recreated with high contrast recordings destroyHardwareResources(); diff --git a/core/jni/android_graphics_Canvas.cpp b/core/jni/android_graphics_Canvas.cpp index c3d5af8a8c59..fba0721d9119 100644 --- a/core/jni/android_graphics_Canvas.cpp +++ b/core/jni/android_graphics_Canvas.cpp @@ -77,11 +77,6 @@ static jint getHeight(jlong canvasHandle) { return static_cast<jint>(get_canvas(canvasHandle)->height()); } -static void setHighContrastText(jlong canvasHandle, jboolean highContrastText) { - Canvas* canvas = get_canvas(canvasHandle); - canvas->setHighContrastText(highContrastText); -} - static jint save(jlong canvasHandle, jint flagsHandle) { SaveFlags::Flags flags = static_cast<SaveFlags::Flags>(flagsHandle); return static_cast<jint>(get_canvas(canvasHandle)->save(flags)); @@ -588,7 +583,6 @@ static const JNINativeMethod gMethods[] = { {"nIsOpaque","(J)Z", (void*) CanvasJNI::isOpaque}, {"nGetWidth","(J)I", (void*) CanvasJNI::getWidth}, {"nGetHeight","(J)I", (void*) CanvasJNI::getHeight}, - {"nSetHighContrastText","(JZ)V", (void*) CanvasJNI::setHighContrastText}, {"nSave","(JI)I", (void*) CanvasJNI::save}, {"nSaveLayer","(JFFFFJI)I", (void*) CanvasJNI::saveLayer}, {"nSaveLayerAlpha","(JFFFFII)I", (void*) CanvasJNI::saveLayerAlpha}, diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp index 46b0a79d9f6f..a7197d6f04fb 100644 --- a/core/jni/android_view_ThreadedRenderer.cpp +++ b/core/jni/android_view_ThreadedRenderer.cpp @@ -47,6 +47,7 @@ #include <FrameInfo.h> #include <FrameMetricsObserver.h> #include <IContextFactory.h> +#include <Properties.h> #include <PropertyValuesAnimatorSet.h> #include <RenderNode.h> #include <renderthread/CanvasContext.h> @@ -930,6 +931,10 @@ static void android_view_ThreadedRenderer_disableVsync(JNIEnv*, jclass) { RenderProxy::disableVsync(); } +static void android_view_ThreadedRenderer_setHighContrastText(JNIEnv*, jclass, jboolean enable) { + Properties::enableHighContrastText = enable; +} + // ---------------------------------------------------------------------------- // FrameMetricsObserver // ---------------------------------------------------------------------------- @@ -1029,6 +1034,7 @@ static const JNINativeMethod gMethods[] = { { "nCreateHardwareBitmap", "(JII)Landroid/graphics/Bitmap;", (void*)android_view_ThreadedRenderer_createHardwareBitmapFromRenderNode }, { "disableVsync", "()V", (void*)android_view_ThreadedRenderer_disableVsync }, + { "nSetHighContrastText", "(Z)V", (void*)android_view_ThreadedRenderer_setHighContrastText }, }; int register_android_view_ThreadedRenderer(JNIEnv* env) { diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java index 0301f2e6b555..f5e863305766 100644 --- a/graphics/java/android/graphics/Canvas.java +++ b/graphics/java/android/graphics/Canvas.java @@ -200,11 +200,6 @@ public class Canvas extends BaseCanvas { } /** @hide */ - public void setHighContrastText(boolean highContrastText) { - nSetHighContrastText(mNativeCanvasWrapper, highContrastText); - } - - /** @hide */ public void insertReorderBarrier() {} /** @hide */ @@ -1242,8 +1237,6 @@ public class Canvas extends BaseCanvas { @CriticalNative private static native boolean nIsOpaque(long canvasHandle); @CriticalNative - private static native void nSetHighContrastText(long renderer, boolean highContrastText); - @CriticalNative private static native int nGetWidth(long canvasHandle); @CriticalNative private static native int nGetHeight(long canvasHandle); diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp index acc75393ebcf..fe291d2a4bfe 100644 --- a/libs/hwui/Properties.cpp +++ b/libs/hwui/Properties.cpp @@ -51,6 +51,7 @@ int Properties::overrideSpotShadowStrength = -1; ProfileType Properties::sProfileType = ProfileType::None; bool Properties::sDisableProfileBars = false; RenderPipelineType Properties::sRenderPipelineType = RenderPipelineType::NotInitialized; +bool Properties::enableHighContrastText = false; bool Properties::waitForGpuCompletion = false; bool Properties::forceDrawFrame = false; diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h index 47ae9e912127..0fe4c7714761 100644 --- a/libs/hwui/Properties.h +++ b/libs/hwui/Properties.h @@ -17,6 +17,7 @@ #ifndef ANDROID_HWUI_PROPERTIES_H #define ANDROID_HWUI_PROPERTIES_H +#include <cutils/compiler.h> #include <cutils/properties.h> /** @@ -237,6 +238,8 @@ public: static RenderPipelineType getRenderPipelineType(); static bool isSkiaEnabled(); + ANDROID_API static bool enableHighContrastText; + // Should be used only by test apps static bool waitForGpuCompletion; static bool forceDrawFrame; diff --git a/libs/hwui/RecordingCanvas.h b/libs/hwui/RecordingCanvas.h index ccdb4b0c1d8e..79db496f2acd 100644 --- a/libs/hwui/RecordingCanvas.h +++ b/libs/hwui/RecordingCanvas.h @@ -93,11 +93,6 @@ public: virtual int width() override { return mState.getWidth(); } virtual int height() override { return mState.getHeight(); } - virtual void setHighContrastText(bool highContrastText) override { - mHighContrastText = highContrastText; - } - virtual bool isHighContrastText() override { return mHighContrastText; } - // ---------------------------------------------------------------------------- // android/graphics/Canvas state operations // ---------------------------------------------------------------------------- @@ -311,7 +306,6 @@ private: DeferredBarrierType mDeferredBarrierType = DeferredBarrierType::None; const ClipBase* mDeferredBarrierClip = nullptr; DisplayList* mDisplayList = nullptr; - bool mHighContrastText = false; sk_sp<SkDrawFilter> mDrawFilter; }; // class RecordingCanvas diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index eb844cb7894a..1f5f733188de 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -85,7 +85,6 @@ void SkiaCanvas::reset(SkCanvas* skiaCanvas) { mCanvasWrapper.reset(); } mSaveStack.reset(nullptr); - mHighContrastText = false; } // ---------------------------------------------------------------------------- diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h index 6a01f964873b..e17f835031bb 100644 --- a/libs/hwui/SkiaCanvas.h +++ b/libs/hwui/SkiaCanvas.h @@ -65,11 +65,6 @@ public: virtual int width() override; virtual int height() override; - virtual void setHighContrastText(bool highContrastText) override { - mHighContrastText = highContrastText; - } - virtual bool isHighContrastText() override { return mHighContrastText; } - virtual int getSaveCount() const override; virtual int save(SaveFlags::Flags flags) override; virtual void restore() override; @@ -166,8 +161,6 @@ private: size_t clipIndex; }; - bool mHighContrastText = false; - const SaveRec* currentSaveRec() const; void recordPartialSave(SaveFlags::Flags flags); diff --git a/libs/hwui/hwui/Canvas.h b/libs/hwui/hwui/Canvas.h index 0b8155cc4887..fbd89606fc9d 100644 --- a/libs/hwui/hwui/Canvas.h +++ b/libs/hwui/hwui/Canvas.h @@ -20,6 +20,7 @@ #include <utils/Functor.h> #include "GlFunctorLifecycleListener.h" +#include "Properties.h" #include "utils/Macros.h" #include <androidfw/ResourceTypes.h> @@ -140,8 +141,7 @@ public: virtual uirenderer::DisplayList* finishRecording() = 0; virtual void insertReorderBarrier(bool enableReorder) = 0; - virtual void setHighContrastText(bool highContrastText) = 0; - virtual bool isHighContrastText() = 0; + bool isHighContrastText() const { return uirenderer::Properties::enableHighContrastText; } virtual void drawRoundRect(uirenderer::CanvasPropertyPrimitive* left, uirenderer::CanvasPropertyPrimitive* top, uirenderer::CanvasPropertyPrimitive* right, diff --git a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp index f166c5ceb974..3089447cbfc5 100644 --- a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp +++ b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp @@ -171,7 +171,6 @@ void BM_DisplayListCanvas_basicViewGroupDraw(benchmark::State& benchState) { while (benchState.KeepRunning()) { canvas->resetRecording(200, 200); - canvas->setHighContrastText(false); canvas->translate(0, 0); // mScrollX, mScrollY // Clip to padding diff --git a/libs/hwui/tests/unit/RecordingCanvasTests.cpp b/libs/hwui/tests/unit/RecordingCanvasTests.cpp index d36bca031a87..c4e419591a4d 100644 --- a/libs/hwui/tests/unit/RecordingCanvasTests.cpp +++ b/libs/hwui/tests/unit/RecordingCanvasTests.cpp @@ -822,8 +822,8 @@ OPENGL_PIPELINE_TEST(RecordingCanvas, drawText) { } OPENGL_PIPELINE_TEST(RecordingCanvas, drawTextInHighContrast) { + Properties::enableHighContrastText = true; auto dl = TestUtils::createDisplayList<RecordingCanvas>(200, 200, [](RecordingCanvas& canvas) { - canvas.setHighContrastText(true); Paint paint; paint.setColor(SK_ColorWHITE); paint.setAntiAlias(true); @@ -832,6 +832,7 @@ OPENGL_PIPELINE_TEST(RecordingCanvas, drawTextInHighContrast) { std::unique_ptr<uint16_t[]> dst = TestUtils::asciiToUtf16("HELLO"); canvas.drawText(dst.get(), 0, 5, 5, 25, 25, minikin::kBidi_Force_LTR, paint, NULL); }); + Properties::enableHighContrastText = false; int count = 0; playbackOps(*dl, [&count](const RecordedOp& op) { |