From 66ed4f8c32c8fad3fe151da5a16c346330268547 Mon Sep 17 00:00:00 2001 From: Kevin DuBois Date: Mon, 18 Feb 2019 16:27:11 -0800 Subject: [PATCH] jni: use SurfaceComposerClient in sampling Use SurfaceComposerClient in add/remove sampling listener. Test: boot Test: atest CompositionSamplingListenerTest Bug: 124305231 Change-Id: Ic70ad6c32ef15f6500c5b1149403f4cabd35a8ca --- ...droid_view_CompositionSamplingListener.cpp | 25 ++++++++----------- core/tests/coretests/AndroidManifest.xml | 3 +++ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/core/jni/android_view_CompositionSamplingListener.cpp b/core/jni/android_view_CompositionSamplingListener.cpp index 283ba0d057c5..7141e6e14176 100644 --- a/core/jni/android_view_CompositionSamplingListener.cpp +++ b/core/jni/android_view_CompositionSamplingListener.cpp @@ -28,6 +28,7 @@ #include #include +#include #include namespace android { @@ -83,28 +84,22 @@ void nativeRegister(JNIEnv* env, jclass clazz, jlong ptr, jobject stopLayerToken sp listener = reinterpret_cast(ptr); sp stopLayerHandle = ibinderForJavaObject(env, stopLayerTokenObj); - // TODO: Use SurfaceComposerClient once it has addRegionSamplingListener. - sp composer; - if (getService(String16("SurfaceFlinger"), &composer) != NO_ERROR) { - jniThrowRuntimeException(env, "Couldn't retrieve SurfaceFlinger"); - return; + if (SurfaceComposerClient::addRegionSamplingListener( + Rect(left, top, right, bottom), stopLayerHandle, listener) != OK) { + constexpr auto error_msg = "Couldn't addRegionSamplingListener"; + ALOGE(error_msg); + jniThrowRuntimeException(env, error_msg); } - - composer->addRegionSamplingListener( - Rect(left, top, right, bottom), stopLayerHandle, listener); } void nativeUnregister(JNIEnv* env, jclass clazz, jlong ptr) { sp listener = reinterpret_cast(ptr); - // TODO: Use SurfaceComposerClient once it has addRegionSamplingListener. - sp composer; - if (getService(String16("SurfaceFlinger"), &composer) != NO_ERROR) { - jniThrowRuntimeException(env, "Couldn't retrieve SurfaceFlinger"); - return; + if (SurfaceComposerClient::removeRegionSamplingListener(listener) != OK) { + constexpr auto error_msg = "Couldn't removeRegionSamplingListener"; + ALOGE(error_msg); + jniThrowRuntimeException(env, error_msg); } - - composer->removeRegionSamplingListener(listener); } const JNINativeMethod gMethods[] = { diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml index 1764249de662..37913056fe8d 100644 --- a/core/tests/coretests/AndroidManifest.xml +++ b/core/tests/coretests/AndroidManifest.xml @@ -123,6 +123,9 @@ + + +