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

Commit cfb5200a authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Android (Google) Code Review
Browse files

Merge "Fix memory leak in JNI"

parents 70791156 ccd8884f
Loading
Loading
Loading
Loading
+12 −8
Original line number Original line Diff line number Diff line
@@ -72,25 +72,29 @@ struct WindowInfosListener : public gui::WindowInfosListener {
            return;
            return;
        }
        }


        jobjectArray jWindowHandlesArray =
        ScopedLocalRef<jobjectArray>
                env->NewObjectArray(windowInfos.size(), gInputWindowHandleClass, nullptr);
                jWindowHandlesArray(env,
                                    env->NewObjectArray(windowInfos.size(), gInputWindowHandleClass,
                                                        nullptr));
        for (int i = 0; i < windowInfos.size(); i++) {
        for (int i = 0; i < windowInfos.size(); i++) {
            ScopedLocalRef<jobject>
            ScopedLocalRef<jobject>
                    jWindowHandle(env,
                    jWindowHandle(env,
                                  android_view_InputWindowHandle_fromWindowInfo(env,
                                  android_view_InputWindowHandle_fromWindowInfo(env,
                                                                                windowInfos[i]));
                                                                                windowInfos[i]));
            env->SetObjectArrayElement(jWindowHandlesArray, i, jWindowHandle.get());
            env->SetObjectArrayElement(jWindowHandlesArray.get(), i, jWindowHandle.get());
        }
        }


        jobjectArray jDisplayInfoArray =
        ScopedLocalRef<jobjectArray>
                env->NewObjectArray(displayInfos.size(), gDisplayInfoClassInfo.clazz, nullptr);
                jDisplayInfoArray(env,
                                  env->NewObjectArray(displayInfos.size(),
                                                      gDisplayInfoClassInfo.clazz, nullptr));
        for (int i = 0; i < displayInfos.size(); i++) {
        for (int i = 0; i < displayInfos.size(); i++) {
            ScopedLocalRef<jobject> jDisplayInfo(env, fromDisplayInfo(env, displayInfos[i]));
            ScopedLocalRef<jobject> jDisplayInfo(env, fromDisplayInfo(env, displayInfos[i]));
            env->SetObjectArrayElement(jDisplayInfoArray, i, jDisplayInfo.get());
            env->SetObjectArrayElement(jDisplayInfoArray.get(), i, jDisplayInfo.get());
        }
        }


        env->CallVoidMethod(listener, gListenerClassInfo.onWindowInfosChanged, jWindowHandlesArray,
        env->CallVoidMethod(listener, gListenerClassInfo.onWindowInfosChanged,
                            jDisplayInfoArray);
                            jWindowHandlesArray.get(), jDisplayInfoArray.get());
        env->DeleteGlobalRef(listener);
        env->DeleteGlobalRef(listener);


        if (env->ExceptionCheck()) {
        if (env->ExceptionCheck()) {