diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/input/PointerController.cpp | 14 | ||||
-rw-r--r-- | libs/input/PointerController.h | 11 | ||||
-rw-r--r-- | libs/input/TouchSpotController.cpp | 2 | ||||
-rw-r--r-- | libs/input/tests/PointerController_test.cpp | 5 |
4 files changed, 22 insertions, 10 deletions
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index bba9c9764eee..1604ba2968db 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -111,7 +111,11 @@ PointerController::PointerController(const sp<PointerControllerPolicyInterface>& : PointerController( policy, looper, spriteController, enabled, [](const sp<android::gui::WindowInfosListener>& listener) { - SurfaceComposerClient::getDefault()->addWindowInfosListener(listener); + auto initialInfo = std::make_pair(std::vector<android::gui::WindowInfo>{}, + std::vector<android::gui::DisplayInfo>{}); + SurfaceComposerClient::getDefault()->addWindowInfosListener(listener, + &initialInfo); + return initialInfo; }, [](const sp<android::gui::WindowInfosListener>& listener) { SurfaceComposerClient::getDefault()->removeWindowInfosListener(listener); @@ -119,8 +123,9 @@ PointerController::PointerController(const sp<PointerControllerPolicyInterface>& PointerController::PointerController(const sp<PointerControllerPolicyInterface>& policy, const sp<Looper>& looper, SpriteController& spriteController, - bool enabled, WindowListenerConsumer registerListener, - WindowListenerConsumer unregisterListener) + bool enabled, + const WindowListenerRegisterConsumer& registerListener, + WindowListenerUnregisterConsumer unregisterListener) : mEnabled(enabled), mContext(policy, looper, spriteController, *this), mCursorController(mContext), @@ -128,7 +133,8 @@ PointerController::PointerController(const sp<PointerControllerPolicyInterface>& mUnregisterWindowInfosListener(std::move(unregisterListener)) { std::scoped_lock lock(getLock()); mLocked.presentation = Presentation::SPOT; - registerListener(mDisplayInfoListener); + const auto& [_, initialDisplayInfos] = registerListener(mDisplayInfoListener); + onDisplayInfosChangedLocked(initialDisplayInfos); } PointerController::~PointerController() { diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h index a8b963367f4c..8daa3a33dea4 100644 --- a/libs/input/PointerController.h +++ b/libs/input/PointerController.h @@ -79,14 +79,17 @@ public: std::string dump() override; protected: - using WindowListenerConsumer = + using WindowListenerRegisterConsumer = + std::function<std::pair<std::vector<gui::WindowInfo>, std::vector<gui::DisplayInfo>>( + const sp<android::gui::WindowInfosListener>&)>; + using WindowListenerUnregisterConsumer = std::function<void(const sp<android::gui::WindowInfosListener>&)>; // Constructor used to test WindowInfosListener registration. PointerController(const sp<PointerControllerPolicyInterface>& policy, const sp<Looper>& looper, SpriteController& spriteController, bool enabled, - WindowListenerConsumer registerListener, - WindowListenerConsumer unregisterListener); + const WindowListenerRegisterConsumer& registerListener, + WindowListenerUnregisterConsumer unregisterListener); PointerController(const sp<PointerControllerPolicyInterface>& policy, const sp<Looper>& looper, SpriteController& spriteController, bool enabled); @@ -129,7 +132,7 @@ private: }; sp<DisplayInfoListener> mDisplayInfoListener; - const WindowListenerConsumer mUnregisterWindowInfosListener; + const WindowListenerUnregisterConsumer mUnregisterWindowInfosListener; const ui::Transform& getTransformForDisplayLocked(int displayId) const REQUIRES(getLock()); diff --git a/libs/input/TouchSpotController.cpp b/libs/input/TouchSpotController.cpp index b8de919fbd8c..99952aa14904 100644 --- a/libs/input/TouchSpotController.cpp +++ b/libs/input/TouchSpotController.cpp @@ -93,7 +93,7 @@ void TouchSpotController::setSpots(const PointerCoords* spotCoords, const uint32 const PointerCoords& c = spotCoords[spotIdToIndex[id]]; ALOGD(" spot %d: position=(%0.3f, %0.3f), pressure=%0.3f, displayId=%" PRId32 ".", id, c.getAxisValue(AMOTION_EVENT_AXIS_X), c.getAxisValue(AMOTION_EVENT_AXIS_Y), - c.getAxisValue(AMOTION_EVENT_AXIS_PRESSURE), displayId); + c.getAxisValue(AMOTION_EVENT_AXIS_PRESSURE), mDisplayId); } #endif diff --git a/libs/input/tests/PointerController_test.cpp b/libs/input/tests/PointerController_test.cpp index adfa91e96ebb..45b426bf5c5e 100644 --- a/libs/input/tests/PointerController_test.cpp +++ b/libs/input/tests/PointerController_test.cpp @@ -160,9 +160,12 @@ public: : PointerController( policy, looper, spriteController, /*enabled=*/true, - [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { + [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) + -> std::pair<std::vector<gui::WindowInfo>, + std::vector<gui::DisplayInfo>> { // Register listener registeredListener = listener; + return {}; }, [®isteredListener](const sp<android::gui::WindowInfosListener>& listener) { // Unregister listener |