Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c3a088a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "jni: use SurfaceComposerClient in sampling"

parents fa5fe935 66ed4f8c
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@

#include <gui/IRegionSamplingListener.h>
#include <gui/ISurfaceComposer.h>
#include <gui/SurfaceComposerClient.h>
#include <ui/Rect.h>

namespace android {
@@ -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[] = {
+3 −0
Original line number Diff line number Diff line
@@ -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" />