Loading core/jni/android_view_CompositionSamplingListener.cpp +10 −15 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <gui/IRegionSamplingListener.h> #include <gui/ISurfaceComposer.h> #include <gui/SurfaceComposerClient.h> #include <ui/Rect.h> namespace android { Loading Loading @@ -83,28 +84,22 @@ void nativeRegister(JNIEnv* env, jclass clazz, jlong ptr, jobject stopLayerToken sp<CompositionSamplingListener> listener = reinterpret_cast<CompositionSamplingListener*>(ptr); sp<IBinder> stopLayerHandle = ibinderForJavaObject(env, stopLayerTokenObj); // TODO: Use SurfaceComposerClient once it has addRegionSamplingListener. sp<ISurfaceComposer> 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<CompositionSamplingListener> listener = reinterpret_cast<CompositionSamplingListener*>(ptr); // TODO: Use SurfaceComposerClient once it has addRegionSamplingListener. sp<ISurfaceComposer> 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[] = { Loading core/tests/coretests/AndroidManifest.xml +3 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,9 @@ <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" /> <uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" /> <!-- color extraction test permissions --> <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> <!-- accessibility test permissions --> <uses-permission android:name="android.permission.RETRIEVE_WINDOW_CONTENT" /> Loading Loading
core/jni/android_view_CompositionSamplingListener.cpp +10 −15 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <gui/IRegionSamplingListener.h> #include <gui/ISurfaceComposer.h> #include <gui/SurfaceComposerClient.h> #include <ui/Rect.h> namespace android { Loading Loading @@ -83,28 +84,22 @@ void nativeRegister(JNIEnv* env, jclass clazz, jlong ptr, jobject stopLayerToken sp<CompositionSamplingListener> listener = reinterpret_cast<CompositionSamplingListener*>(ptr); sp<IBinder> stopLayerHandle = ibinderForJavaObject(env, stopLayerTokenObj); // TODO: Use SurfaceComposerClient once it has addRegionSamplingListener. sp<ISurfaceComposer> 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<CompositionSamplingListener> listener = reinterpret_cast<CompositionSamplingListener*>(ptr); // TODO: Use SurfaceComposerClient once it has addRegionSamplingListener. sp<ISurfaceComposer> 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[] = { Loading
core/tests/coretests/AndroidManifest.xml +3 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,9 @@ <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" /> <uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" /> <!-- color extraction test permissions --> <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> <!-- accessibility test permissions --> <uses-permission android:name="android.permission.RETRIEVE_WINDOW_CONTENT" /> Loading