resolved conflicts for merge of 1d03b816 to lmp-mr1-dev-plus-aosp

(cherry picked from commit 1272887050a269d6d506b42099c2857847ad100b)

Change-Id: Ib673768fe5fc03615626ef4b10590e5317f22172
diff --git a/libs/hwui/AmbientShadow.cpp b/libs/hwui/AmbientShadow.cpp
index 0fb9bc9..9dcd3a8 100644
--- a/libs/hwui/AmbientShadow.cpp
+++ b/libs/hwui/AmbientShadow.cpp
@@ -122,7 +122,7 @@
     *totalUmbraCount = 0;
     if (!isCasterOpaque) {
         // Add the centroid if occluder is translucent.
-        *totalVertexCount++;
+        (*totalVertexCount)++;
         *totalIndexCount += 2 * innerVertexCount + 1;
         *totalUmbraCount = innerVertexCount;
     }
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index 51f257f..a788f88 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -13,107 +13,110 @@
 # Only build libhwui when USE_OPENGL_RENDERER is
 # defined in the current device/board configuration
 ifeq ($(USE_OPENGL_RENDERER),true)
-	LOCAL_SRC_FILES := \
-		utils/Blur.cpp \
-		utils/GLUtils.cpp \
-		utils/SortedListImpl.cpp \
-		thread/TaskManager.cpp \
-		font/CacheTexture.cpp \
-		font/Font.cpp \
-		AmbientShadow.cpp \
-		AnimationContext.cpp \
-		Animator.cpp \
-		AnimatorManager.cpp \
-		AssetAtlas.cpp \
-		Caches.cpp \
-		CanvasState.cpp \
-		DamageAccumulator.cpp \
-		DisplayList.cpp \
-		DeferredDisplayList.cpp \
-		DeferredLayerUpdater.cpp \
-		DisplayListLogBuffer.cpp \
-		DisplayListRenderer.cpp \
-		Dither.cpp \
-		DrawProfiler.cpp \
-		Extensions.cpp \
-		FboCache.cpp \
-		FontRenderer.cpp \
-		GammaFontRenderer.cpp \
-		GradientCache.cpp \
-		Image.cpp \
-		Interpolator.cpp \
-		Layer.cpp \
-		LayerCache.cpp \
-		LayerRenderer.cpp \
-		Matrix.cpp \
-		OpenGLRenderer.cpp \
-		Patch.cpp \
-		PatchCache.cpp \
-		PathCache.cpp \
-		PathTessellator.cpp \
-		PixelBuffer.cpp \
-		Program.cpp \
-		ProgramCache.cpp \
-		RenderBufferCache.cpp \
-		RenderNode.cpp \
-		RenderProperties.cpp \
-		RenderState.cpp \
-		ResourceCache.cpp \
-		ShadowTessellator.cpp \
-		SkiaShader.cpp \
-		Snapshot.cpp \
-		SpotShadow.cpp \
-		Stencil.cpp \
-		TessellationCache.cpp \
-		Texture.cpp \
-		TextureCache.cpp \
-		TextDropShadowCache.cpp
+    LOCAL_SRC_FILES := \
+        utils/Blur.cpp \
+        utils/GLUtils.cpp \
+        utils/SortedListImpl.cpp \
+        thread/TaskManager.cpp \
+        font/CacheTexture.cpp \
+        font/Font.cpp \
+        AmbientShadow.cpp \
+        AnimationContext.cpp \
+        Animator.cpp \
+        AnimatorManager.cpp \
+        AssetAtlas.cpp \
+        Caches.cpp \
+        CanvasState.cpp \
+        DamageAccumulator.cpp \
+        DisplayList.cpp \
+        DeferredDisplayList.cpp \
+        DeferredLayerUpdater.cpp \
+        DisplayListLogBuffer.cpp \
+        DisplayListRenderer.cpp \
+        Dither.cpp \
+        DrawProfiler.cpp \
+        Extensions.cpp \
+        FboCache.cpp \
+        FontRenderer.cpp \
+        GammaFontRenderer.cpp \
+        GradientCache.cpp \
+        Image.cpp \
+        Interpolator.cpp \
+        Layer.cpp \
+        LayerCache.cpp \
+        LayerRenderer.cpp \
+        Matrix.cpp \
+        OpenGLRenderer.cpp \
+        Patch.cpp \
+        PatchCache.cpp \
+        PathCache.cpp \
+        PathTessellator.cpp \
+        PixelBuffer.cpp \
+        Program.cpp \
+        ProgramCache.cpp \
+        RenderBufferCache.cpp \
+        RenderNode.cpp \
+        RenderProperties.cpp \
+        RenderState.cpp \
+        ResourceCache.cpp \
+        ShadowTessellator.cpp \
+        SkiaShader.cpp \
+        Snapshot.cpp \
+        SpotShadow.cpp \
+        Stencil.cpp \
+        TessellationCache.cpp \
+        Texture.cpp \
+        TextureCache.cpp \
+        TextDropShadowCache.cpp
 
 # RenderThread stuff
-	LOCAL_SRC_FILES += \
-		renderthread/CanvasContext.cpp \
-		renderthread/DrawFrameTask.cpp \
-		renderthread/EglManager.cpp \
-		renderthread/RenderProxy.cpp \
-		renderthread/RenderTask.cpp \
-		renderthread/RenderThread.cpp \
-		renderthread/TimeLord.cpp
+    LOCAL_SRC_FILES += \
+        renderthread/CanvasContext.cpp \
+        renderthread/DrawFrameTask.cpp \
+        renderthread/EglManager.cpp \
+        renderthread/RenderProxy.cpp \
+        renderthread/RenderTask.cpp \
+        renderthread/RenderThread.cpp \
+        renderthread/TimeLord.cpp
 
-	intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,)
+    intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,)
 
-	LOCAL_C_INCLUDES += \
-		external/skia/src/core
+    LOCAL_C_INCLUDES += \
+        external/skia/src/core
 
-	LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES
-	LOCAL_CFLAGS += -Wno-unused-parameter
-	LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-	LOCAL_SHARED_LIBRARIES := liblog libcutils libutils libEGL libGLESv2 libskia libui libgui
-	LOCAL_MODULE := libhwui
-	LOCAL_MODULE_TAGS := optional
+    LOCAL_CFLAGS += -DUSE_OPENGL_RENDERER -DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES
+    LOCAL_CFLAGS += -Wno-unused-parameter
+    LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+    LOCAL_SHARED_LIBRARIES := liblog libcutils libutils libEGL libGLESv2 libskia libui libgui
+    LOCAL_MODULE := libhwui
+    LOCAL_MODULE_TAGS := optional
 
-	ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT))
-		LOCAL_CFLAGS += -DANDROID_ENABLE_RENDERSCRIPT
-		LOCAL_SHARED_LIBRARIES += libRS libRScpp
-		LOCAL_C_INCLUDES += \
-			$(intermediates) \
-			frameworks/rs/cpp \
-			frameworks/rs \
+    ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT))
+        LOCAL_CFLAGS += -DANDROID_ENABLE_RENDERSCRIPT
+        LOCAL_SHARED_LIBRARIES += libRS libRScpp
+        LOCAL_C_INCLUDES += \
+            $(intermediates) \
+            frameworks/rs/cpp \
+            frameworks/rs \
 
-	endif
+    endif
 
-	ifndef HWUI_COMPILE_SYMBOLS
-		LOCAL_CFLAGS += -fvisibility=hidden
-	endif
+    ifndef HWUI_COMPILE_SYMBOLS
+        LOCAL_CFLAGS += -fvisibility=hidden
+    endif
 
-	ifdef HWUI_COMPILE_FOR_PERF
-		LOCAL_CFLAGS += -fno-omit-frame-pointer -marm -mapcs
-	endif
+    ifdef HWUI_COMPILE_FOR_PERF
+        # TODO: Non-arm?
+        LOCAL_CFLAGS += -fno-omit-frame-pointer -marm -mapcs
+    endif
 
-	# Defaults for ATRACE_TAG and LOG_TAG for libhwui
-	LOCAL_CFLAGS += -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\"
+    # Defaults for ATRACE_TAG and LOG_TAG for libhwui
+    LOCAL_CFLAGS += -DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\"
 
-	include external/stlport/libstlport.mk
-	include $(BUILD_SHARED_LIBRARY)
+    LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
 
-	include $(call all-makefiles-under,$(LOCAL_PATH))
+    include external/stlport/libstlport.mk
+    include $(BUILD_SHARED_LIBRARY)
+
+    include $(call all-makefiles-under,$(LOCAL_PATH))
 endif
diff --git a/libs/hwui/DeferredDisplayList.cpp b/libs/hwui/DeferredDisplayList.cpp
index a5e48e9..ea1d714 100644
--- a/libs/hwui/DeferredDisplayList.cpp
+++ b/libs/hwui/DeferredDisplayList.cpp
@@ -310,7 +310,7 @@
 class RestoreToCountBatch : public Batch {
 public:
     RestoreToCountBatch(const StateOp* op, const DeferredDisplayState* state, int restoreCount) :
-            mOp(op), mState(state), mRestoreCount(restoreCount) {}
+            mState(state), mRestoreCount(restoreCount) {}
 
     virtual void replay(OpenGLRenderer& renderer, Rect& dirty, int index) {
         DEFER_LOGD("batch %p restoring to count %d", this, mRestoreCount);
@@ -321,7 +321,6 @@
 
 private:
     // we use the state storage for the RestoreToCountOp, but don't replay the op itself
-    const StateOp* mOp;
     const DeferredDisplayState* mState;
 
     /*
@@ -669,7 +668,6 @@
     for (unsigned int i = mEarliestUnclearedIndex; i <= maxIndex; i++) {
         // leave deferred state ops alone for simplicity (empty save restore pairs may now exist)
         if (mBatches[i] && mBatches[i]->purelyDrawBatch()) {
-            DrawBatch* b = (DrawBatch*) mBatches[i];
             delete mBatches[i];
             mBatches.replaceAt(NULL, i);
         }
diff --git a/libs/hwui/DeferredDisplayList.h b/libs/hwui/DeferredDisplayList.h
index 9e48d3c..fe70ec2 100644
--- a/libs/hwui/DeferredDisplayList.h
+++ b/libs/hwui/DeferredDisplayList.h
@@ -79,7 +79,7 @@
 };
 
 class DeferredDisplayList {
-    friend class DeferStateStruct; // used to give access to allocator
+    friend struct DeferStateStruct; // used to give access to allocator
 public:
     DeferredDisplayList(const Rect& bounds) :
             mBounds(bounds) {
diff --git a/libs/hwui/DisplayList.h b/libs/hwui/DisplayList.h
index 85c2367..9ede003 100644
--- a/libs/hwui/DisplayList.h
+++ b/libs/hwui/DisplayList.h
@@ -92,8 +92,7 @@
     std::vector<SkPath> mTempPaths;
 };
 
-class DeferStateStruct : public PlaybackStateStruct {
-public:
+struct DeferStateStruct : public PlaybackStateStruct {
     DeferStateStruct(DeferredDisplayList& deferredList, OpenGLRenderer& renderer, int replayFlags)
             : PlaybackStateStruct(renderer, replayFlags, &(deferredList.mAllocator)),
             mDeferredList(deferredList) {}
diff --git a/libs/hwui/DisplayListLogBuffer.cpp b/libs/hwui/DisplayListLogBuffer.cpp
index 45aacca..bc9e7bd 100644
--- a/libs/hwui/DisplayListLogBuffer.cpp
+++ b/libs/hwui/DisplayListLogBuffer.cpp
@@ -80,7 +80,7 @@
 
         fprintf(file, "%*s%s\n", 2 * tmpBufferPtr->level, "", tmpBufferPtr->label);
 
-        OpLog* nextOp = tmpBufferPtr++;
+        tmpBufferPtr++;
         if (tmpBufferPtr > mBufferLast) {
             tmpBufferPtr = mBufferFirst;
         }
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp
index 3910381..5b5b098 100644
--- a/libs/hwui/FontRenderer.cpp
+++ b/libs/hwui/FontRenderer.cpp
@@ -358,7 +358,7 @@
             break;
         }
         case SkMask::kBW_Format: {
-            uint32_t cacheX = 0, bX = 0, cacheY = 0, bY = 0;
+            uint32_t cacheX = 0, cacheY = 0;
             uint32_t row = (startY - TEXTURE_BORDER_SIZE) * cacheWidth + startX
                     - TEXTURE_BORDER_SIZE;
             static const uint8_t COLORS[2] = { 0, 255 };
diff --git a/libs/hwui/Interpolator.cpp b/libs/hwui/Interpolator.cpp
index ff8ff73..0e62d77 100644
--- a/libs/hwui/Interpolator.cpp
+++ b/libs/hwui/Interpolator.cpp
@@ -14,6 +14,10 @@
  * 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"
diff --git a/libs/hwui/LayerCache.cpp b/libs/hwui/LayerCache.cpp
index 3033dc6..3216cd2 100644
--- a/libs/hwui/LayerCache.cpp
+++ b/libs/hwui/LayerCache.cpp
@@ -80,8 +80,10 @@
 
 void LayerCache::deleteLayer(Layer* layer) {
     if (layer) {
-        LAYER_LOGD("Destroying layer %dx%d, fbo %d", layer->getWidth(), layer->getHeight(),
-                layer->getFbo());
+        if (kDebugLayers) {
+            ALOGD("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);
@@ -110,9 +112,13 @@
         layer->state = Layer::kState_RemovedFromCache;
         mSize -= layer->getWidth() * layer->getHeight() * 4;
 
-        LAYER_LOGD("Reusing layer %dx%d", layer->getWidth(), layer->getHeight());
+        if (kDebugLayers) {
+            ALOGD("Reusing layer %dx%d", layer->getWidth(), layer->getHeight());
+        }
     } else {
-        LAYER_LOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight);
+        if (kDebugLayers) {
+            ALOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight);
+        }
 
         layer = new Layer(Layer::kType_DisplayList, renderState, entry.mWidth, entry.mHeight);
         layer->setBlend(true);
@@ -137,7 +143,9 @@
     size_t size = mCache.size();
     for (size_t i = 0; i < size; i++) {
         const LayerEntry& entry = mCache.itemAt(i);
-        LAYER_LOGD("  Layer size %dx%d", entry.mWidth, entry.mHeight);
+        if (kDebugLayers) {
+            ALOGD("  Layer size %dx%d", entry.mWidth, entry.mHeight);
+        }
     }
 }
 
@@ -157,8 +165,10 @@
             deleteLayer(victim);
             mCache.removeAt(position);
 
-            LAYER_LOGD("  Deleting layer %.2fx%.2f", victim->layer.getWidth(),
-                    victim->layer.getHeight());
+            if (kDebugLayers) {
+                ALOGD("  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 6b93e8f..81810ac 100644
--- a/libs/hwui/LayerCache.h
+++ b/libs/hwui/LayerCache.h
@@ -26,15 +26,11 @@
 
 class RenderState;
 
-///////////////////////////////////////////////////////////////////////////////
-// Defines
-///////////////////////////////////////////////////////////////////////////////
-
 // Debug
 #if DEBUG_LAYERS
-    #define LAYER_LOGD(...) ALOGD(__VA_ARGS__)
+static const bool kDebugLayers = true;
 #else
-    #define LAYER_LOGD(...)
+static const bool kDebugLayers = false;
 #endif
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 71b7c11..c113164 100755
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -473,8 +473,6 @@
             && layer->renderNode.get() && layer->renderNode->isRenderable()) {
         ATRACE_CALL();
 
-        Rect& dirty = layer->dirtyRect;
-
         if (inFrame) {
             endTiling();
             debugOverdraw(false, false);
@@ -762,8 +760,10 @@
  */
 bool OpenGLRenderer::createLayer(float left, float top, float right, float bottom,
         const SkPaint* paint, int flags, const SkPath* convexMask) {
-    LAYER_LOGD("Requesting layer %.2fx%.2f", right - left, bottom - top);
-    LAYER_LOGD("Layer cache size = %d", mCaches.layerCache.getSize());
+    if (kDebugLayers) {
+        ALOGD("Requesting layer %.2fx%.2f", right - left, bottom - top);
+        ALOGD("Layer cache size = %d", mCaches.layerCache.getSize());
+    }
 
     const bool fboLayer = flags & SkCanvas::kClipToLayer_SaveFlag;
 
@@ -941,7 +941,9 @@
     // Failing to add the layer to the cache should happen only if the layer is too large
     layer->setConvexMask(NULL);
     if (!mCaches.layerCache.put(layer)) {
-        LAYER_LOGD("Deleting layer");
+        if (kDebugLayers) {
+            ALOGD("Deleting layer");
+        }
         layer->decStrong(0);
     }
 }
@@ -1959,8 +1961,6 @@
 }
 
 void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, const SkPaint* paint) {
-    int color = paint != NULL ? paint->getColor() : 0;
-
     float x = left;
     float y = top;
 
@@ -2382,7 +2382,7 @@
     setupDrawShaderUniforms(getShader(paint));
 
     const void* vertices = vertexBuffer.getBuffer();
-    bool force = mCaches.unbindMeshBuffer();
+    mCaches.unbindMeshBuffer();
     mCaches.bindPositionVertexPointer(true, vertices, isAA ? gAlphaVertexStride : gVertexStride);
     mCaches.resetTexCoordsVertexPointer();
 
@@ -3185,14 +3185,6 @@
     drawColorRects(rects, count, paint, false, true, true);
 }
 
-static void mapPointFakeZ(Vector3& point, const mat4& transformXY, const mat4& transformZ) {
-    // map z coordinate with true 3d matrix
-    point.z = transformZ.mapZ(point);
-
-    // map x,y coordinates with draw/Skia matrix
-    transformXY.mapPoint(point.x, point.y);
-}
-
 void OpenGLRenderer::drawShadow(float casterAlpha,
         const VertexBuffer* ambientShadowVertexBuffer, const VertexBuffer* spotShadowVertexBuffer) {
     if (mState.currentlyIgnored()) return;
diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp
index 9ba8854..a3d7019 100644
--- a/libs/hwui/PathCache.cpp
+++ b/libs/hwui/PathCache.cpp
@@ -212,7 +212,7 @@
         // before attempting our cleanup
         const sp<Task<SkBitmap*> >& task = texture->task();
         if (task != NULL) {
-            SkBitmap* bitmap = task->getResult();
+            task->getResult();
             texture->clearTask();
         } else {
             // If there is a pending task, the path was not added
diff --git a/libs/hwui/PathTessellator.cpp b/libs/hwui/PathTessellator.cpp
index 27ef06f..bd97680 100644
--- a/libs/hwui/PathTessellator.cpp
+++ b/libs/hwui/PathTessellator.cpp
@@ -279,7 +279,6 @@
                     - (vertices[lastIndex].x - vertices[lastIndex - 1].x),
                     vertices[lastIndex].y - vertices[lastIndex - 1].y);
         const float dTheta = PI / (extra + 1);
-        const float radialScale = 2.0f / (1 + cos(dTheta));
 
         int capOffset;
         for (int i = 0; i < extra; i++) {
@@ -831,7 +830,6 @@
 
     Rect bounds;
     // tessellate, then duplicate outline across points
-    int numPoints = count / 2;
     VertexBuffer tempBuffer;
     if (!paintInfo.isAA) {
         getFillVerticesFromPerimeter(outlineVertices, tempBuffer);
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index befed16..7b9459a 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -253,7 +253,7 @@
 // Converts a number of kilo-bytes into bytes
 #define KB(s) s * 1024
 
-static DebugLevel readDebugLevel() {
+static inline DebugLevel readDebugLevel() {
     char property[PROPERTY_VALUE_MAX];
     if (property_get(PROPERTY_DEBUG, property, NULL) > 0) {
         return (DebugLevel) atoi(property);
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index e8f2bc0..743b2f5 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -752,7 +752,6 @@
         int restoreTo = renderer.save(SkCanvas::kMatrix_SaveFlag);
 
         DrawRenderNodeOp* childOp = zTranslatedNodes[drawIndex].value;
-        RenderNode* child = childOp->mRenderNode;
 
         renderer.concatMatrix(childOp->mTransformFromParent);
         childOp->mSkipInOrderDraw = false; // this is horrible, I'm so sorry everyone
@@ -901,7 +900,7 @@
                         initialTransform, zTranslatedNodes, renderer, handler);
 
 
-                for (int opIndex = chunk.beginOpIndex; opIndex < chunk.endOpIndex; opIndex++) {
+                for (size_t opIndex = chunk.beginOpIndex; opIndex < chunk.endOpIndex; opIndex++) {
                     DisplayListOp *op = mDisplayListData->displayListOps[opIndex];
 #if DEBUG_DISPLAY_LIST
                     op->output(level + 1);
@@ -909,7 +908,8 @@
                     logBuffer.writeCommand(level, op->name());
                     handler(op, saveCountOffset, properties().getClipToBounds());
 
-                    if (CC_UNLIKELY(!mProjectedNodes.isEmpty() && opIndex == projectionReceiveIndex)) {
+                    if (CC_UNLIKELY(!mProjectedNodes.isEmpty() && projectionReceiveIndex >= 0 &&
+                        opIndex == static_cast<size_t>(projectionReceiveIndex))) {
                         issueOperationsOfProjectedChildren(renderer, handler);
                     }
                 }
diff --git a/libs/hwui/ShadowTessellator.cpp b/libs/hwui/ShadowTessellator.cpp
index c1ffa0a..93d4b31 100644
--- a/libs/hwui/ShadowTessellator.cpp
+++ b/libs/hwui/ShadowTessellator.cpp
@@ -87,7 +87,6 @@
     reverseReceiverTransform.loadInverse(receiverTransform);
     reverseReceiverTransform.mapPoint3d(adjustedLightCenter);
 
-    const int lightVertexCount = 8;
     if (CC_UNLIKELY(caches.propertyLightDiameter > 0)) {
         lightRadius = caches.propertyLightDiameter;
     }
diff --git a/libs/hwui/SpotShadow.cpp b/libs/hwui/SpotShadow.cpp
index 0faee65..001e22f 100644
--- a/libs/hwui/SpotShadow.cpp
+++ b/libs/hwui/SpotShadow.cpp
@@ -795,11 +795,15 @@
                     previousPenumbra * weightForPreviousPenumbra;
 
                 int skippedUmbraIndex = (previousClosestUmbraIndex + k + 1) % umbraLength;
-                verticesPair[verticesPairIndex++] = {newPenumbraIndex, skippedUmbraIndex};
+                verticesPair[verticesPairIndex].outerIndex = newPenumbraIndex;
+                verticesPair[verticesPairIndex].innerIndex = skippedUmbraIndex;
+                verticesPairIndex++;
                 newPenumbra[newPenumbraIndex++] = interpolatedPenumbra;
             }
         }
-        verticesPair[verticesPairIndex++] = {newPenumbraIndex, currentClosestUmbraIndex};
+        verticesPair[verticesPairIndex].outerIndex = newPenumbraIndex;
+        verticesPair[verticesPairIndex].innerIndex = currentClosestUmbraIndex;
+        verticesPairIndex++;
         newPenumbra[newPenumbraIndex++] = currentPenumbraVertex;
 
         previousClosestUmbraIndex = currentClosestUmbraIndex;
diff --git a/libs/hwui/font/Font.cpp b/libs/hwui/font/Font.cpp
index e1df9ba..29c122b 100644
--- a/libs/hwui/font/Font.cpp
+++ b/libs/hwui/font/Font.cpp
@@ -378,7 +378,7 @@
             break;
         }
 
-        CachedGlyphInfo* cachedGlyph = getCachedGlyph(paint, glyph, true);
+        getCachedGlyph(paint, glyph, true);
         glyphsCount++;
     }
 }
@@ -403,8 +403,6 @@
     text += start;
     int glyphsCount = 0;
 
-    const SkPaint::Align align = paint->getTextAlign();
-
     while (glyphsCount < numGlyphs) {
         glyph_t glyph = GET_GLYPH(text);
 
diff --git a/libs/hwui/font/FontUtil.h b/libs/hwui/font/FontUtil.h
index c2fd5f5..4e5debe 100644
--- a/libs/hwui/font/FontUtil.h
+++ b/libs/hwui/font/FontUtil.h
@@ -30,9 +30,12 @@
 #define DEFAULT_TEXT_LARGE_CACHE_WIDTH 2048
 #define DEFAULT_TEXT_LARGE_CACHE_HEIGHT 512
 
-#define TEXTURE_BORDER_SIZE 1
-#if TEXTURE_BORDER_SIZE != 1
-# error TEXTURE_BORDER_SIZE other than 1 is not currently supported
+#ifdef TEXTURE_BORDER_SIZE
+  #if TEXTURE_BORDER_SIZE != 1
+    #error TEXTURE_BORDER_SIZE other than 1 is not currently supported
+  #endif
+#else
+  #define TEXTURE_BORDER_SIZE 1
 #endif
 
 #define CACHE_BLOCK_ROUNDING_SIZE 4
@@ -44,7 +47,7 @@
     #define GET_GLYPH(text) nextGlyph((const uint16_t**) &text)
     #define IS_END_OF_STRING(glyph) false
 
-    static glyph_t nextGlyph(const uint16_t** srcPtr) {
+    static inline glyph_t nextGlyph(const uint16_t** srcPtr) {
         const uint16_t* src = *srcPtr;
         glyph_t g = *src++;
         *srcPtr = src;
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 5d55ea6..3d106b7 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -345,8 +345,12 @@
     return NULL;
 }
 
+template <typename T>
+void UNUSED(T t) {}
+
 void RenderProxy::fence() {
     SETUP_TASK(fence);
+    UNUSED(args);
     postAndWait(task);
 }
 
diff --git a/libs/hwui/renderthread/RenderTask.cpp b/libs/hwui/renderthread/RenderTask.cpp
index 7ca61e4..13970ba 100644
--- a/libs/hwui/renderthread/RenderTask.cpp
+++ b/libs/hwui/renderthread/RenderTask.cpp
@@ -14,6 +14,10 @@
  * 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"