From 06831bafc37c58ec4ccdbc3928f56a2f4211d3fd Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Mon, 24 Oct 2016 17:20:57 -0200 Subject: [PATCH] Disable EmojiTextView software layer rendering when cache is too small --- .../securesms/components/emoji/EmojiTextView.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/briar-android/src/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java b/briar-android/src/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java index 83f2e8cc96..8cb9ecc09c 100644 --- a/briar-android/src/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java +++ b/briar-android/src/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java @@ -8,6 +8,7 @@ import android.support.annotation.Nullable; import android.support.annotation.UiThread; import android.text.TextUtils; import android.util.AttributeSet; +import android.view.ViewConfiguration; import android.widget.TextView; import org.thoughtcrime.securesms.components.emoji.EmojiProvider.EmojiDrawable; @@ -78,6 +79,16 @@ public class EmojiTextView extends TextView { @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + // disable software layer if cache size is too small for it + int drawingCacheSize = ViewConfiguration.get(getContext()) + .getScaledMaximumDrawingCacheSize(); + int width = right - left; + int height = bottom - top; + int size = width * height * 4; + if (size > drawingCacheSize) { + setLayerType(LAYER_TYPE_NONE, null); + } + if (changed) setTextEllipsized(source); super.onLayout(changed, left, top, right, bottom); } -- GitLab