Suppress Clang compilation warnings.

Ignore warnings about unused parameters and initialization of static
constant float data members.

Change one potential error of allocating variable length
array of non-POD element type on stack.

Fix mismatch of class and struct declaration tags.

BUG: 17512760
Change-Id: I3a09c945fb1c17f27aff74a7e439dd4c35d1fb32
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index 490921e..a2e4769 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -2,6 +2,14 @@
 include $(CLEAR_VARS)
 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 
+# Too many unused parameters in external/skia/include and this directory.
+# 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
+
 # Only build libhwui when USE_OPENGL_RENDERER is
 # defined in the current device/board configuration
 ifeq ($(USE_OPENGL_RENDERER),true)
diff --git a/libs/hwui/DisplayList.h b/libs/hwui/DisplayList.h
index 1cd5f1c..4fc60b8 100644
--- a/libs/hwui/DisplayList.h
+++ b/libs/hwui/DisplayList.h
@@ -57,9 +57,9 @@
 class DisplayListRenderer;
 class OpenGLRenderer;
 class Rect;
-class Layer;
-class SkiaColorFilter;
-class SkiaShader;
+struct Layer;
+struct SkiaColorFilter;
+struct SkiaShader;
 
 class ClipRectOp;
 class SaveLayerOp;
diff --git a/libs/hwui/Layer.h b/libs/hwui/Layer.h
index b70042f..f965123 100644
--- a/libs/hwui/Layer.h
+++ b/libs/hwui/Layer.h
@@ -44,7 +44,7 @@
 class OpenGLRenderer;
 class DisplayList;
 class DeferredDisplayList;
-class DeferStateStruct;
+struct DeferStateStruct;
 
 /**
  * A layer has dimensions and is backed by an OpenGL texture or FBO.
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index c13e614..8eb1f92 100755
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -2239,7 +2239,9 @@
 
     const uint32_t count = meshWidth * meshHeight * 6;
 
-    ColorTextureVertex mesh[count];
+    Vector<ColorTextureVertex> meshVector; // TODO: use C++11 unique_ptr
+    meshVector.setCapacity(count);
+    ColorTextureVertex* mesh = meshVector.editArray();
     ColorTextureVertex* vertex = mesh;
 
     bool cleanupColors = false;
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index 2e03a1b..3fbbe52 100755
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -1126,7 +1126,7 @@
     String8 mName;
 
     friend class DisplayListRenderer;
-    friend class Layer;
+    friend struct Layer;
     friend class TextSetupFunctor;
     friend class DrawBitmapOp;
     friend class DrawPatchOp;
diff --git a/libs/hwui/PathCache.h b/libs/hwui/PathCache.h
index 24f88f1..4fecd77 100644
--- a/libs/hwui/PathCache.h
+++ b/libs/hwui/PathCache.h
@@ -32,7 +32,7 @@
 class SkCanvas;
 class SkPaint;
 class SkPath;
-class SkRect;
+struct SkRect;
 
 namespace android {
 namespace uirenderer {