Isolate the graphics classes into their own static lib
Update additional headers to include-what-you-use to resolve
compiler errors related to moving include paths.
Test: CtsUiRenderingTestCases
Change-Id: I230408a53610ad1926f9e46d5aff66f52fec4a3a
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index d42c43b..73a7289 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -33,46 +33,10 @@
srcs: [
"android_animation_PropertyValuesHolder.cpp",
- "android_graphics_Canvas.cpp",
- "android_graphics_ColorSpace.cpp",
- "android_graphics_drawable_AnimatedVectorDrawable.cpp",
- "android_graphics_drawable_VectorDrawable.cpp",
- "android_graphics_Picture.cpp",
- "android_nio_utils.cpp",
"android_os_SystemClock.cpp",
"android_os_SystemProperties.cpp",
"android_util_EventLog.cpp",
"android_util_Log.cpp",
- "android_util_PathParser.cpp",
- "android_view_DisplayListCanvas.cpp",
- "android_view_RenderNode.cpp",
- "android/graphics/Bitmap.cpp",
- "android/graphics/BitmapFactory.cpp",
- "android/graphics/ByteBufferStreamAdaptor.cpp",
- "android/graphics/ColorFilter.cpp",
- "android/graphics/CreateJavaOutputStreamAdaptor.cpp",
- "android/graphics/FontFamily.cpp",
- "android/graphics/FontUtils.cpp",
- "android/graphics/Graphics.cpp",
- "android/graphics/ImageDecoder.cpp",
- "android/graphics/MaskFilter.cpp",
- "android/graphics/Matrix.cpp",
- "android/graphics/NinePatch.cpp",
- "android/graphics/NinePatchPeeker.cpp",
- "android/graphics/Paint.cpp",
- "android/graphics/PaintFilter.cpp",
- "android/graphics/Path.cpp",
- "android/graphics/PathEffect.cpp",
- "android/graphics/PathMeasure.cpp",
- "android/graphics/Picture.cpp",
- "android/graphics/Region.cpp",
- "android/graphics/Shader.cpp",
- "android/graphics/Typeface.cpp",
- "android/graphics/Utils.cpp",
- "android/graphics/fonts/Font.cpp",
- "android/graphics/fonts/FontFamily.cpp",
- "android/graphics/text/LineBreaker.cpp",
- "android/graphics/text/MeasuredText.cpp",
"com_android_internal_util_VirtualRefBasePtr.cpp",
"com_android_internal_view_animation_NativeInterpolatorFactoryHelper.cpp",
],
@@ -83,21 +47,23 @@
"bionic/libc/private",
"external/skia/include/private",
- "external/skia/src/codec",
- "external/skia/src/core",
- "external/skia/src/effects",
- "external/skia/src/image",
- "external/skia/src/images",
"frameworks/base/media/jni",
"system/media/camera/include",
"system/media/private/camera/include",
],
+ static_libs: [
+ "libandroid_graphics",
+ ],
+
+ whole_static_libs: ["libandroid_graphics"],
+
shared_libs: [
"libbase",
"libcutils",
"libharfbuzz_ng",
"libhwui",
+ "libjpeg",
"liblog",
"libminikin",
"libnativehelper",
@@ -105,7 +71,6 @@
"libziparchive",
],
- local_include_dirs: ["android/graphics"],
export_include_dirs: [
".",
"include",
@@ -141,7 +106,6 @@
"android_database_SQLiteDebug.cpp",
"android_view_CompositionSamplingListener.cpp",
"android_view_DisplayEventReceiver.cpp",
- "android_view_TextureLayer.cpp",
"android_view_InputChannel.cpp",
"android_view_InputDevice.cpp",
"android_view_InputEventReceiver.cpp",
@@ -157,7 +121,6 @@
"android_view_SurfaceControl.cpp",
"android_view_SurfaceSession.cpp",
"android_view_TextureView.cpp",
- "android_view_ThreadedRenderer.cpp",
"android_view_VelocityTracker.cpp",
"android_text_AndroidCharacter.cpp",
"android_text_Hyphenator.cpp",
@@ -188,21 +151,6 @@
"android_util_StringBlock.cpp",
"android_util_XmlBlock.cpp",
"android_util_jar_StrictJarFile.cpp",
- "android/graphics/AnimatedImageDrawable.cpp",
- "android/graphics/Camera.cpp",
- "android/graphics/CanvasProperty.cpp",
- "android/graphics/GIFMovie.cpp",
- "android/graphics/GraphicBuffer.cpp",
- "android/graphics/Interpolator.cpp",
- "android/graphics/Movie.cpp",
- "android/graphics/MovieImpl.cpp",
- "android/graphics/BitmapRegionDecoder.cpp",
- "android/graphics/SurfaceTexture.cpp",
- "android/graphics/YuvToJpegEncoder.cpp",
- "android/graphics/pdf/PdfDocument.cpp",
- "android/graphics/pdf/PdfEditor.cpp",
- "android/graphics/pdf/PdfRenderer.cpp",
- "android/graphics/pdf/PdfUtils.cpp",
"android_media_AudioEffectDescriptor.cpp",
"android_media_AudioRecord.cpp",
"android_media_AudioSystem.cpp",
@@ -302,7 +250,6 @@
"libmeminfo",
"libaudioclient",
"libaudiopolicy",
- "libjpeg",
"libusbhost",
"libpdfium",
"libimg_utils",
@@ -328,9 +275,6 @@
// our headers include libnativewindow's public headers
"libnativewindow",
-
- // GraphicsJNI.h includes hwui headers
- "libhwui",
],
generated_sources: ["android_util_StatsLogInternal.cpp"],
},
@@ -367,3 +311,140 @@
},
},
}
+
+cc_library_static {
+ name: "libandroid_graphics",
+ host_supported: true,
+ cflags: [
+ "-Wno-unused-parameter",
+ "-Wno-non-virtual-dtor",
+ "-Wno-maybe-uninitialized",
+ "-Wno-parentheses",
+
+ "-DGL_GLEXT_PROTOTYPES",
+ "-DEGL_EGLEXT_PROTOTYPES",
+
+ "-DU_USING_ICU_NAMESPACE=0",
+
+ "-Wall",
+ "-Werror",
+ "-Wno-error=deprecated-declarations",
+ "-Wunused",
+ "-Wunreachable-code",
+ ],
+
+ cppflags: ["-Wno-conversion-null"],
+
+ srcs: [
+ "android_graphics_Canvas.cpp",
+ "android_graphics_ColorSpace.cpp",
+ "android_graphics_drawable_AnimatedVectorDrawable.cpp",
+ "android_graphics_drawable_VectorDrawable.cpp",
+ "android_graphics_Picture.cpp",
+ "android_nio_utils.cpp",
+ "android_view_DisplayListCanvas.cpp",
+ "android_view_RenderNode.cpp",
+ "android_util_PathParser.cpp",
+
+ "android/graphics/AnimatedImageDrawable.cpp",
+ "android/graphics/Bitmap.cpp",
+ "android/graphics/BitmapFactory.cpp",
+ "android/graphics/ByteBufferStreamAdaptor.cpp",
+ "android/graphics/Camera.cpp",
+ "android/graphics/CanvasProperty.cpp",
+ "android/graphics/ColorFilter.cpp",
+ "android/graphics/CreateJavaOutputStreamAdaptor.cpp",
+ "android/graphics/FontFamily.cpp",
+ "android/graphics/FontUtils.cpp",
+ "android/graphics/Graphics.cpp",
+ "android/graphics/ImageDecoder.cpp",
+ "android/graphics/Interpolator.cpp",
+ "android/graphics/MaskFilter.cpp",
+ "android/graphics/Matrix.cpp",
+ "android/graphics/NinePatch.cpp",
+ "android/graphics/NinePatchPeeker.cpp",
+ "android/graphics/Paint.cpp",
+ "android/graphics/PaintFilter.cpp",
+ "android/graphics/Path.cpp",
+ "android/graphics/PathEffect.cpp",
+ "android/graphics/PathMeasure.cpp",
+ "android/graphics/Picture.cpp",
+ "android/graphics/Region.cpp",
+ "android/graphics/Shader.cpp",
+ "android/graphics/Typeface.cpp",
+ "android/graphics/Utils.cpp",
+ "android/graphics/YuvToJpegEncoder.cpp",
+ "android/graphics/fonts/Font.cpp",
+ "android/graphics/fonts/FontFamily.cpp",
+ "android/graphics/text/LineBreaker.cpp",
+ "android/graphics/text/MeasuredText.cpp",
+ ],
+
+ local_include_dirs: [
+ "include", // NEEDED FOR ANDROID RUNTIME
+ "android/graphics",
+ ],
+
+ export_include_dirs: [
+ ".",
+ ],
+
+ include_dirs: [
+ "external/skia/include/private",
+ "external/skia/src/codec",
+ "external/skia/src/core",
+ "external/skia/src/effects",
+ "external/skia/src/image",
+ "external/skia/src/images",
+ ],
+
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "libharfbuzz_ng",
+ "libhwui",
+ "liblog",
+ "libminikin",
+ "libnativehelper",
+ "libz",
+ "libziparchive",
+ "libjpeg",
+ ],
+
+ target: {
+ android: {
+ srcs: [ // sources that depend on android only libraries
+ "android_view_TextureLayer.cpp",
+ "android_view_ThreadedRenderer.cpp",
+ "android/graphics/BitmapRegionDecoder.cpp",
+ "android/graphics/GIFMovie.cpp",
+ "android/graphics/GraphicBuffer.cpp",
+ "android/graphics/Movie.cpp",
+ "android/graphics/MovieImpl.cpp",
+ "android/graphics/SurfaceTexture.cpp",
+ "android/graphics/pdf/PdfDocument.cpp",
+ "android/graphics/pdf/PdfEditor.cpp",
+ "android/graphics/pdf/PdfRenderer.cpp",
+ "android/graphics/pdf/PdfUtils.cpp",
+ ],
+ shared_libs: [
+ "libandroidfw",
+ "libnativewindow",
+ "libgui",
+ "libpdfium",
+ ],
+ static_libs: [
+ "libgif",
+ ],
+ },
+ host: {
+ cflags: [
+ "-Wno-unused-const-variable",
+ "-Wno-unused-function",
+ ],
+ static_libs: [
+ "libandroidfw",
+ ],
+ }
+ },
+}
diff --git a/core/jni/android_hardware_HardwareBuffer.cpp b/core/jni/android_hardware_HardwareBuffer.cpp
index 00e5ba3..706a2b8 100644
--- a/core/jni/android_hardware_HardwareBuffer.cpp
+++ b/core/jni/android_hardware_HardwareBuffer.cpp
@@ -20,7 +20,6 @@
#include <nativehelper/JNIHelp.h>
#include "android_os_Parcel.h"
-#include "android/graphics/GraphicsJNI.h"
#include "android/graphics/GraphicBuffer.h"
#include <android/hardware_buffer.h>
diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp
index 8ddbe72..f264679 100644
--- a/core/jni/android_view_MotionEvent.cpp
+++ b/core/jni/android_view_MotionEvent.cpp
@@ -27,7 +27,6 @@
#include "android_os_Parcel.h"
#include "android_view_MotionEvent.h"
#include "android_util_Binder.h"
-#include "android/graphics/Matrix.h"
#include "core_jni_helpers.h"
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 0d95f99..8eb9c9a 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -57,8 +57,8 @@
namespace android {
-static const char* const OutOfResourcesException =
- "android/view/Surface$OutOfResourcesException";
+static const char* const IllegalArgumentException = "java/lang/IllegalArgumentException";
+static const char* const OutOfResourcesException = "android/view/Surface$OutOfResourcesException";
static struct {
jclass clazz;
@@ -155,7 +155,7 @@
jobject surfaceTextureObj) {
sp<IGraphicBufferProducer> producer(SurfaceTexture_getProducer(env, surfaceTextureObj));
if (producer == NULL) {
- jniThrowException(env, "java/lang/IllegalArgumentException",
+ jniThrowException(env, IllegalArgumentException,
"SurfaceTexture has already been released");
return 0;
}
@@ -183,7 +183,7 @@
static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jlong nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
if (!isSurfaceValid(sur)) {
- doThrowIAE(env);
+ jniThrowException(env, IllegalArgumentException, NULL);
return JNI_FALSE;
}
int value = 0;
@@ -212,7 +212,7 @@
sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject));
if (!isSurfaceValid(surface)) {
- doThrowIAE(env);
+ jniThrowException(env, IllegalArgumentException, NULL);
return 0;
}
@@ -293,7 +293,7 @@
// unlock surface
status_t err = surface->unlockAndPost();
if (err < 0) {
- doThrowIAE(env);
+ jniThrowException(env, IllegalArgumentException, NULL);
}
}
@@ -344,7 +344,7 @@
jlong nativeObject, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == NULL) {
- doThrowNPE(env);
+ jniThrowNullPointerException(env, NULL);
return 0;
}
@@ -385,7 +385,7 @@
jlong nativeObject, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == NULL) {
- doThrowNPE(env);
+ jniThrowNullPointerException(env, NULL);
return;
}
sp<Surface> self(reinterpret_cast<Surface *>(nativeObject));
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index a579229..5cbf81c 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -20,7 +20,6 @@
#include "android_os_Parcel.h"
#include "android_util_Binder.h"
#include "android_hardware_input_InputWindowHandle.h"
-#include "android/graphics/Bitmap.h"
#include "android/graphics/Region.h"
#include "core_jni_helpers.h"
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 8aee8f5..8eb5e3d 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -20,6 +20,7 @@
#include "Debug.h"
#include "TreeInfo.h"
#include "VectorDrawable.h"
+#include "private/hwui/WebViewFunctor.h"
#ifdef __ANDROID__
#include "renderthread/CanvasContext.h"
#else
diff --git a/libs/hwui/pipeline/skia/SkiaDisplayList.cpp b/libs/hwui/pipeline/skia/SkiaDisplayList.cpp
index c7d5f31..d7076d4 100644
--- a/libs/hwui/pipeline/skia/SkiaDisplayList.cpp
+++ b/libs/hwui/pipeline/skia/SkiaDisplayList.cpp
@@ -15,6 +15,7 @@
*/
#include "SkiaDisplayList.h"
+#include "FunctorDrawable.h"
#include "DumpOpsCanvas.h"
#ifdef __ANDROID__ // Layoutlib does not support SkiaPipeline
diff --git a/libs/hwui/pipeline/skia/SkiaDisplayList.h b/libs/hwui/pipeline/skia/SkiaDisplayList.h
index b791037..e3c3273 100644
--- a/libs/hwui/pipeline/skia/SkiaDisplayList.h
+++ b/libs/hwui/pipeline/skia/SkiaDisplayList.h
@@ -16,7 +16,6 @@
#pragma once
-#include "FunctorDrawable.h"
#include "RecordingCanvas.h"
#include "RenderNodeDrawable.h"
#include "TreeInfo.h"
@@ -34,6 +33,7 @@
}
class Outline;
+struct WebViewSyncData;
namespace VectorDrawable {
class Tree;
@@ -42,6 +42,8 @@
namespace skiapipeline {
+class FunctorDrawable;
+
class SkiaDisplayList {
public:
size_t getUsedSize() { return allocator.usedSize() + mDisplayList.usedSize(); }
diff --git a/libs/hwui/renderthread/VulkanManager.h b/libs/hwui/renderthread/VulkanManager.h
index ec217c0..4c6a755 100644
--- a/libs/hwui/renderthread/VulkanManager.h
+++ b/libs/hwui/renderthread/VulkanManager.h
@@ -31,6 +31,7 @@
#include "Frame.h"
#include "IRenderPipeline.h"
#include "VulkanSurface.h"
+#include "private/hwui/DrawVkInfo.h"
class GrVkExtensions;