TextureView works best when it draws stuff.
Bug #5391188

Change-Id: I5e754881ccb08ff288ebd60de77282c9cbcf3f86
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index c974ba1..d57132a 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -250,6 +250,11 @@
         return LAYER_TYPE_HARDWARE;
     }
 
+    @Override
+    boolean hasStaticLayer() {
+        return true;
+    }
+
     /**
      * Calling this method has no effect.
      */
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 2ebe756..d193d6e 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -10001,6 +10001,15 @@
     }
 
     /**
+     * Indicates whether this view has a static layer. A view with layer type
+     * {@link #LAYER_TYPE_NONE} is a static layer. Other types of layers are
+     * dynamic.
+     */
+    boolean hasStaticLayer() {
+        return mLayerType == LAYER_TYPE_NONE;
+    }
+
+    /**
      * Indicates what type of layer is currently associated with this view. By default
      * a view does not have a layer, and the layer type is {@link #LAYER_TYPE_NONE}.
      * Refer to the documentation of {@link #setLayerType(int, android.graphics.Paint)}
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index ddb982a..fb0d80a 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -2560,8 +2560,8 @@
         final View[] children = mChildren;
         for (int i = 0; i < count; i++) {
             final View child = children[i];
-            if (((child.mViewFlags & VISIBILITY_MASK) == VISIBLE ||
-                    child.getAnimation() != null) && child.getLayerType() == LAYER_TYPE_NONE) {
+            if (((child.mViewFlags & VISIBILITY_MASK) == VISIBLE || child.getAnimation() != null) &&
+                    child.hasStaticLayer()) {
                 child.mRecreateDisplayList = (child.mPrivateFlags & INVALIDATED) == INVALIDATED;
                 child.mPrivateFlags &= ~INVALIDATED;
                 child.getDisplayList();
diff --git a/libs/hwui/TextDropShadowCache.h b/libs/hwui/TextDropShadowCache.h
index 28dba13..e2bdde1 100644
--- a/libs/hwui/TextDropShadowCache.h
+++ b/libs/hwui/TextDropShadowCache.h
@@ -81,7 +81,7 @@
                         LTE_INT(flags) {
                             LTE_INT(italicStyle) {
                                 LTE_INT(scaleX) {
-                                    return strncmp16(text, rhs.text, len >> 1) < 0;
+                                    return memcmp(text, rhs.text, len) < 0;
                                 }
                             }
                         }