Loading core/jni/android_window_WindowInfosListener.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android_runtime/Log.h> #include <gui/DisplayInfo.h> #include <gui/SurfaceComposerClient.h> #include <gui/WindowInfosUpdate.h> #include <nativehelper/JNIHelp.h> #include <nativehelper/ScopedLocalFrame.h> #include <utils/Log.h> Loading Loading @@ -91,8 +92,7 @@ struct WindowInfosListener : public gui::WindowInfosListener { WindowInfosListener(JNIEnv* env, jobject listener) : mListener(env->NewWeakGlobalRef(listener)) {} void onWindowInfosChanged(const std::vector<WindowInfo>& windowInfos, const std::vector<DisplayInfo>& displayInfos) override { void onWindowInfosChanged(const gui::WindowInfosUpdate& update) override { JNIEnv* env = AndroidRuntime::getJNIEnv(); LOG_ALWAYS_FATAL_IF(env == nullptr, "Unable to retrieve JNIEnv in onWindowInfoChanged."); Loading @@ -103,8 +103,10 @@ struct WindowInfosListener : public gui::WindowInfosListener { return; } ScopedLocalRef<jobjectArray> jWindowHandlesArray(env, fromWindowInfos(env, windowInfos)); ScopedLocalRef<jobjectArray> jDisplayInfoArray(env, fromDisplayInfos(env, displayInfos)); ScopedLocalRef<jobjectArray> jWindowHandlesArray(env, fromWindowInfos(env, update.windowInfos)); ScopedLocalRef<jobjectArray> jDisplayInfoArray(env, fromDisplayInfos(env, update.displayInfos)); env->CallVoidMethod(listener, gListenerClassInfo.onWindowInfosChanged, jWindowHandlesArray.get(), jDisplayInfoArray.get()); Loading libs/input/PointerController.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -45,14 +45,13 @@ const ui::Transform kIdentityTransform; // --- PointerController::DisplayInfoListener --- void PointerController::DisplayInfoListener::onWindowInfosChanged( const std::vector<android::gui::WindowInfo>&, const std::vector<android::gui::DisplayInfo>& displayInfos) { const gui::WindowInfosUpdate& update) { std::scoped_lock lock(mLock); if (mPointerController == nullptr) return; // PointerController uses DisplayInfoListener's lock. base::ScopedLockAssertion assumeLocked(mPointerController->getLock()); mPointerController->onDisplayInfosChangedLocked(displayInfos); mPointerController->onDisplayInfosChangedLocked(update.displayInfos); } void PointerController::DisplayInfoListener::onPointerControllerDestroyed() { Loading libs/input/PointerController.h +2 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <PointerControllerInterface.h> #include <gui/DisplayEventReceiver.h> #include <gui/WindowInfosUpdate.h> #include <input/DisplayViewport.h> #include <input/Input.h> #include <utils/BitSet.h> Loading Loading @@ -114,8 +115,7 @@ private: class DisplayInfoListener : public gui::WindowInfosListener { public: explicit DisplayInfoListener(PointerController* pc) : mPointerController(pc){}; void onWindowInfosChanged(const std::vector<android::gui::WindowInfo>&, const std::vector<android::gui::DisplayInfo>&) override; void onWindowInfosChanged(const gui::WindowInfosUpdate&) override; void onPointerControllerDestroyed(); // This lock is also used by PointerController. See PointerController::getLock(). Loading libs/input/tests/PointerController_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -343,7 +343,7 @@ TEST_F(PointerControllerWindowInfoListenerTest, localListenerCopy = registeredListener; } EXPECT_EQ(nullptr, registeredListener) << "WindowInfosListener was not unregistered"; localListenerCopy->onWindowInfosChanged({}, {}); localListenerCopy->onWindowInfosChanged({{}, {}, 0, 0}); } } // namespace android Loading
core/jni/android_window_WindowInfosListener.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <android_runtime/Log.h> #include <gui/DisplayInfo.h> #include <gui/SurfaceComposerClient.h> #include <gui/WindowInfosUpdate.h> #include <nativehelper/JNIHelp.h> #include <nativehelper/ScopedLocalFrame.h> #include <utils/Log.h> Loading Loading @@ -91,8 +92,7 @@ struct WindowInfosListener : public gui::WindowInfosListener { WindowInfosListener(JNIEnv* env, jobject listener) : mListener(env->NewWeakGlobalRef(listener)) {} void onWindowInfosChanged(const std::vector<WindowInfo>& windowInfos, const std::vector<DisplayInfo>& displayInfos) override { void onWindowInfosChanged(const gui::WindowInfosUpdate& update) override { JNIEnv* env = AndroidRuntime::getJNIEnv(); LOG_ALWAYS_FATAL_IF(env == nullptr, "Unable to retrieve JNIEnv in onWindowInfoChanged."); Loading @@ -103,8 +103,10 @@ struct WindowInfosListener : public gui::WindowInfosListener { return; } ScopedLocalRef<jobjectArray> jWindowHandlesArray(env, fromWindowInfos(env, windowInfos)); ScopedLocalRef<jobjectArray> jDisplayInfoArray(env, fromDisplayInfos(env, displayInfos)); ScopedLocalRef<jobjectArray> jWindowHandlesArray(env, fromWindowInfos(env, update.windowInfos)); ScopedLocalRef<jobjectArray> jDisplayInfoArray(env, fromDisplayInfos(env, update.displayInfos)); env->CallVoidMethod(listener, gListenerClassInfo.onWindowInfosChanged, jWindowHandlesArray.get(), jDisplayInfoArray.get()); Loading
libs/input/PointerController.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -45,14 +45,13 @@ const ui::Transform kIdentityTransform; // --- PointerController::DisplayInfoListener --- void PointerController::DisplayInfoListener::onWindowInfosChanged( const std::vector<android::gui::WindowInfo>&, const std::vector<android::gui::DisplayInfo>& displayInfos) { const gui::WindowInfosUpdate& update) { std::scoped_lock lock(mLock); if (mPointerController == nullptr) return; // PointerController uses DisplayInfoListener's lock. base::ScopedLockAssertion assumeLocked(mPointerController->getLock()); mPointerController->onDisplayInfosChangedLocked(displayInfos); mPointerController->onDisplayInfosChangedLocked(update.displayInfos); } void PointerController::DisplayInfoListener::onPointerControllerDestroyed() { Loading
libs/input/PointerController.h +2 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <PointerControllerInterface.h> #include <gui/DisplayEventReceiver.h> #include <gui/WindowInfosUpdate.h> #include <input/DisplayViewport.h> #include <input/Input.h> #include <utils/BitSet.h> Loading Loading @@ -114,8 +115,7 @@ private: class DisplayInfoListener : public gui::WindowInfosListener { public: explicit DisplayInfoListener(PointerController* pc) : mPointerController(pc){}; void onWindowInfosChanged(const std::vector<android::gui::WindowInfo>&, const std::vector<android::gui::DisplayInfo>&) override; void onWindowInfosChanged(const gui::WindowInfosUpdate&) override; void onPointerControllerDestroyed(); // This lock is also used by PointerController. See PointerController::getLock(). Loading
libs/input/tests/PointerController_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -343,7 +343,7 @@ TEST_F(PointerControllerWindowInfoListenerTest, localListenerCopy = registeredListener; } EXPECT_EQ(nullptr, registeredListener) << "WindowInfosListener was not unregistered"; localListenerCopy->onWindowInfosChanged({}, {}); localListenerCopy->onWindowInfosChanged({{}, {}, 0, 0}); } } // namespace android