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

Commit ccef0224 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update the callers of windowinfoslistener" into main

parents b0e5cce3 027538de
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -13,7 +13,6 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code

#define LOG_TAG "WindowInfosListener"

@@ -136,27 +135,30 @@ jlong nativeCreate(JNIEnv* env, jclass clazz, jobject obj) {
}

void destroyNativeService(void* ptr) {
    WindowInfosListener* listener = reinterpret_cast<WindowInfosListener*>(ptr);
    sp<WindowInfosListener> listener =
            sp<WindowInfosListener>::fromExisting(reinterpret_cast<WindowInfosListener*>(ptr));
    SurfaceComposerClient::getDefault()->removeWindowInfosListener(listener);
    listener->decStrong((void*)nativeCreate);
}

jobject nativeRegister(JNIEnv* env, jclass clazz, jlong ptr) {
    sp<WindowInfosListener> listener = reinterpret_cast<WindowInfosListener*>(ptr);
    gui::WindowInfosUpdate initialInfo;
    SurfaceComposerClient::getDefault()->addWindowInfosListener(listener, &initialInfo);
    sp<WindowInfosListener> listener =
            sp<WindowInfosListener>::fromExisting(reinterpret_cast<WindowInfosListener*>(ptr));
    android::base::Result<gui::WindowInfosUpdate> result =
            SurfaceComposerClient::getDefault()->addWindowInfosListener(std::move(listener));

    ScopedLocalRef<jobjectArray> jWindowHandlesArray(env,
                                                     fromWindowInfos(env, initialInfo.windowInfos));
                                                     fromWindowInfos(env, result->windowInfos));
    ScopedLocalRef<jobjectArray> jDisplayInfoArray(env,
                                                   fromDisplayInfos(env, initialInfo.displayInfos));
                                                   fromDisplayInfos(env, result->displayInfos));

    return env->NewObject(gPairClassInfo.clazz, gPairClassInfo.ctor, jWindowHandlesArray.get(),
                          jDisplayInfoArray.get());
}

void nativeUnregister(JNIEnv* env, jclass clazz, jlong ptr) {
    sp<WindowInfosListener> listener = reinterpret_cast<WindowInfosListener*>(ptr);
    sp<WindowInfosListener> listener =
            sp<WindowInfosListener>::fromExisting(reinterpret_cast<WindowInfosListener*>(ptr));
    SurfaceComposerClient::getDefault()->removeWindowInfosListener(listener);
}

+5 −4
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <SkBlendMode.h>
#include <SkCanvas.h>
#include <SkColor.h>
#include <android-base/logging.h>
#include <android-base/stringprintf.h>
#include <android-base/thread_annotations.h>
#include <ftl/enum.h>
@@ -105,10 +106,10 @@ PointerController::PointerController(const sp<PointerControllerPolicyInterface>&
      : PointerController(
                policy, looper, spriteController,
                [](const sp<android::gui::WindowInfosListener>& listener) {
                    gui::WindowInfosUpdate initialInfo;
                    SurfaceComposerClient::getDefault()->addWindowInfosListener(listener,
                                                                                &initialInfo);
                    return initialInfo.displayInfos;
                    android::base::Result<gui::WindowInfosUpdate> result =
                            SurfaceComposerClient::getDefault()->addWindowInfosListener(listener);
                    LOG_IF(FATAL, !result.ok()) << "Can't add window info listener";
                    return result->displayInfos;
                },
                [](const sp<android::gui::WindowInfosListener>& listener) {
                    SurfaceComposerClient::getDefault()->removeWindowInfosListener(listener);