From 02b0545d02001ad152eeaf1ff35465345cbd5d4d Mon Sep 17 00:00:00 2001 From: Prabir Pradhan Date: Wed, 17 Nov 2021 21:48:11 +0000 Subject: Revert "Change PointerController to display space" Revert "Change PointerController to display space" Revert submission 16194643-pointer-controller-in-display-space Reason for revert: b/206817973 Reverted Changes: I764c070ad:Change PointerController to display space I5e9e19c36:Change PointerController to display space Change-Id: I615d343968b818f498e905bab7963106b4e62651 --- libs/input/PointerController.cpp | 86 +++++++--------------------------------- 1 file changed, 15 insertions(+), 71 deletions(-) (limited to 'libs/input/PointerController.cpp') diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp index 6ea303c0163e..8f04cfb70469 100644 --- a/libs/input/PointerController.cpp +++ b/libs/input/PointerController.cpp @@ -17,29 +17,24 @@ #define LOG_TAG "PointerController" //#define LOG_NDEBUG 0 +// Log debug messages about pointer updates +#define DEBUG_POINTER_UPDATES 0 + #include "PointerController.h" +#include "MouseCursorController.h" #include "PointerControllerContext.h" +#include "TouchSpotController.h" + +#include +#include #include #include #include +#include namespace android { -namespace { - -const ui::Transform kIdentityTransform; - -} // namespace - -// --- PointerController::DisplayInfoListener --- - -void PointerController::DisplayInfoListener::onWindowInfosChanged( - const std::vector&, - const std::vector& displayInfo) { - mPointerController.onDisplayInfosChanged(displayInfo); -} - // --- PointerController --- std::shared_ptr PointerController::create( @@ -68,12 +63,9 @@ std::shared_ptr PointerController::create( PointerController::PointerController(const sp& policy, const sp& looper, const sp& spriteController) - : mContext(policy, looper, spriteController, *this), - mCursorController(mContext), - mDisplayInfoListener(new DisplayInfoListener(*this)) { + : mContext(policy, looper, spriteController, *this), mCursorController(mContext) { std::scoped_lock lock(mLock); mLocked.presentation = Presentation::SPOT; - SurfaceComposerClient::getDefault()->addWindowInfosListener(mDisplayInfoListener); } bool PointerController::getBounds(float* outMinX, float* outMinY, float* outMaxX, @@ -82,14 +74,7 @@ bool PointerController::getBounds(float* outMinX, float* outMinY, float* outMaxX } void PointerController::move(float deltaX, float deltaY) { - const int32_t displayId = mCursorController.getDisplayId(); - vec2 transformed; - { - std::scoped_lock lock(mLock); - const auto& transform = getTransformForDisplayLocked(displayId); - transformed = transformWithoutTranslation(transform, {deltaX, deltaY}); - } - mCursorController.move(transformed.x, transformed.y); + mCursorController.move(deltaX, deltaY); } void PointerController::setButtonState(int32_t buttonState) { @@ -101,26 +86,12 @@ int32_t PointerController::getButtonState() const { } void PointerController::setPosition(float x, float y) { - const int32_t displayId = mCursorController.getDisplayId(); - vec2 transformed; - { - std::scoped_lock lock(mLock); - const auto& transform = getTransformForDisplayLocked(displayId); - transformed = transform.transform(x, y); - } - mCursorController.setPosition(transformed.x, transformed.y); + std::scoped_lock lock(mLock); + mCursorController.setPosition(x, y); } void PointerController::getPosition(float* outX, float* outY) const { - const int32_t displayId = mCursorController.getDisplayId(); mCursorController.getPosition(outX, outY); - { - std::scoped_lock lock(mLock); - const auto& transform = getTransformForDisplayLocked(displayId); - const auto xy = transform.inverse().transform(*outX, *outY); - *outX = xy.x; - *outY = xy.y; - } } int32_t PointerController::getDisplayId() const { @@ -159,25 +130,11 @@ void PointerController::setPresentation(Presentation presentation) { void PointerController::setSpots(const PointerCoords* spotCoords, const uint32_t* spotIdToIndex, BitSet32 spotIdBits, int32_t displayId) { std::scoped_lock lock(mLock); - std::array outSpotCoords{}; - const ui::Transform& transform = getTransformForDisplayLocked(displayId); - - for (BitSet32 idBits(spotIdBits); !idBits.isEmpty();) { - const uint32_t index = spotIdToIndex[idBits.clearFirstMarkedBit()]; - - const vec2 xy = transform.transform(spotCoords[index].getXYValue()); - outSpotCoords[index].setAxisValue(AMOTION_EVENT_AXIS_X, xy.x); - outSpotCoords[index].setAxisValue(AMOTION_EVENT_AXIS_Y, xy.y); - - float pressure = spotCoords[index].getAxisValue(AMOTION_EVENT_AXIS_PRESSURE); - outSpotCoords[index].setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, pressure); - } - auto it = mLocked.spotControllers.find(displayId); if (it == mLocked.spotControllers.end()) { mLocked.spotControllers.try_emplace(displayId, displayId, mContext); } - mLocked.spotControllers.at(displayId).setSpots(outSpotCoords.data(), spotIdToIndex, spotIdBits); + mLocked.spotControllers.at(displayId).setSpots(spotCoords, spotIdToIndex, spotIdBits); } void PointerController::clearSpots() { @@ -237,7 +194,7 @@ void PointerController::doInactivityTimeout() { void PointerController::onDisplayViewportsUpdated(std::vector& viewports) { std::unordered_set displayIdSet; - for (const DisplayViewport& viewport : viewports) { + for (DisplayViewport viewport : viewports) { displayIdSet.insert(viewport.displayId); } @@ -257,17 +214,4 @@ void PointerController::onDisplayViewportsUpdated(std::vector& } } -void PointerController::onDisplayInfosChanged(const std::vector& displayInfo) { - std::scoped_lock lock(mLock); - mLocked.mDisplayInfos = displayInfo; -} - -const ui::Transform& PointerController::getTransformForDisplayLocked(int displayId) const { - const auto& di = mLocked.mDisplayInfos; - auto it = std::find_if(di.begin(), di.end(), [displayId](const gui::DisplayInfo& info) { - return info.displayId == displayId; - }); - return it != di.end() ? it->transform : kIdentityTransform; -} - } // namespace android -- cgit v1.2.3-59-g8ed1b