Use a strongly typed LogicalDisplayId for displayId(2/n)
Currently, we use int32_t for displayId, which is not a safe type, and
it may also lead to misdefinition of types. Here, we introduce
LogicalDisplayId as a strong type for displayId and move all contents
of constants.h into LogicalDisplayId.h.
Bug: 339106983
Test: atest inputflinger_tests
Test: atest InputTests
Test: m checkinput
Test: m libsurfaceflinger_unittest
Test: presubmit
Change-Id: If44e56f69553d095af5adb59b595e4a852ab32ce
Signed-off-by: Linnan Li <lilinnan@xiaomi.corp-partner.google.com>
diff --git a/services/inputflinger/PointerChoreographer.h b/services/inputflinger/PointerChoreographer.h
index b29d9cd..fda5f52 100644
--- a/services/inputflinger/PointerChoreographer.h
+++ b/services/inputflinger/PointerChoreographer.h
@@ -54,11 +54,11 @@
* Set the display that pointers, like the mouse cursor and drawing tablets,
* should be drawn on.
*/
- virtual void setDefaultMouseDisplayId(int32_t displayId) = 0;
+ virtual void setDefaultMouseDisplayId(ui::LogicalDisplayId displayId) = 0;
virtual void setDisplayViewports(const std::vector<DisplayViewport>& viewports) = 0;
virtual std::optional<DisplayViewport> getViewportForPointerDevice(
- int32_t associatedDisplayId = ADISPLAY_ID_NONE) = 0;
- virtual FloatPoint getMouseCursorPosition(int32_t displayId) = 0;
+ ui::LogicalDisplayId associatedDisplayId = ui::ADISPLAY_ID_NONE) = 0;
+ virtual FloatPoint getMouseCursorPosition(ui::LogicalDisplayId displayId) = 0;
virtual void setShowTouchesEnabled(bool enabled) = 0;
virtual void setStylusPointerIconEnabled(bool enabled) = 0;
/**
@@ -67,12 +67,12 @@
* Returns true if the icon was changed successfully, false otherwise.
*/
virtual bool setPointerIcon(std::variant<std::unique_ptr<SpriteIcon>, PointerIconStyle> icon,
- int32_t displayId, DeviceId deviceId) = 0;
+ ui::LogicalDisplayId displayId, DeviceId deviceId) = 0;
/**
* Set whether pointer icons for mice, touchpads, and styluses should be visible on the
* given display.
*/
- virtual void setPointerIconVisibility(int32_t displayId, bool visible) = 0;
+ virtual void setPointerIconVisibility(ui::LogicalDisplayId displayId, bool visible) = 0;
/**
* This method may be called on any thread (usually by the input manager on a binder thread).
@@ -86,16 +86,16 @@
PointerChoreographerPolicyInterface&);
~PointerChoreographer() override;
- void setDefaultMouseDisplayId(int32_t displayId) override;
+ void setDefaultMouseDisplayId(ui::LogicalDisplayId displayId) override;
void setDisplayViewports(const std::vector<DisplayViewport>& viewports) override;
std::optional<DisplayViewport> getViewportForPointerDevice(
- int32_t associatedDisplayId) override;
- FloatPoint getMouseCursorPosition(int32_t displayId) override;
+ ui::LogicalDisplayId associatedDisplayId) override;
+ FloatPoint getMouseCursorPosition(ui::LogicalDisplayId displayId) override;
void setShowTouchesEnabled(bool enabled) override;
void setStylusPointerIconEnabled(bool enabled) override;
bool setPointerIcon(std::variant<std::unique_ptr<SpriteIcon>, PointerIconStyle> icon,
- int32_t displayId, DeviceId deviceId) override;
- void setPointerIconVisibility(int32_t displayId, bool visible) override;
+ ui::LogicalDisplayId displayId, DeviceId deviceId) override;
+ void setPointerIconVisibility(ui::LogicalDisplayId displayId, bool visible) override;
void notifyInputDevicesChanged(const NotifyInputDevicesChangedArgs& args) override;
void notifyConfigurationChanged(const NotifyConfigurationChangedArgs& args) override;
@@ -113,16 +113,18 @@
void dump(std::string& dump) override;
private:
- using PointerDisplayChange =
- std::optional<std::tuple<int32_t /*displayId*/, FloatPoint /*cursorPosition*/>>;
+ using PointerDisplayChange = std::optional<
+ std::tuple<ui::LogicalDisplayId /*displayId*/, FloatPoint /*cursorPosition*/>>;
[[nodiscard]] PointerDisplayChange updatePointerControllersLocked() REQUIRES(mLock);
[[nodiscard]] PointerDisplayChange calculatePointerDisplayChangeToNotify() REQUIRES(mLock);
- const DisplayViewport* findViewportByIdLocked(int32_t displayId) const REQUIRES(mLock);
- int32_t getTargetMouseDisplayLocked(int32_t associatedDisplayId) const REQUIRES(mLock);
- std::pair<int32_t /*displayId*/, PointerControllerInterface&> ensureMouseControllerLocked(
- int32_t associatedDisplayId) REQUIRES(mLock);
+ const DisplayViewport* findViewportByIdLocked(ui::LogicalDisplayId displayId) const
+ REQUIRES(mLock);
+ ui::LogicalDisplayId getTargetMouseDisplayLocked(ui::LogicalDisplayId associatedDisplayId) const
+ REQUIRES(mLock);
+ std::pair<ui::LogicalDisplayId /*displayId*/, PointerControllerInterface&>
+ ensureMouseControllerLocked(ui::LogicalDisplayId associatedDisplayId) REQUIRES(mLock);
InputDeviceInfo* findInputDeviceLocked(DeviceId deviceId) REQUIRES(mLock);
- bool canUnfadeOnDisplay(int32_t displayId) REQUIRES(mLock);
+ bool canUnfadeOnDisplay(ui::LogicalDisplayId displayId) REQUIRES(mLock);
NotifyMotionArgs processMotion(const NotifyMotionArgs& args);
NotifyMotionArgs processMouseEventLocked(const NotifyMotionArgs& args) REQUIRES(mLock);
@@ -151,16 +153,18 @@
using ControllerConstructor =
ConstructorDelegate<std::function<std::shared_ptr<PointerControllerInterface>()>>;
ControllerConstructor mTouchControllerConstructor GUARDED_BY(mLock);
- ControllerConstructor getMouseControllerConstructor(int32_t displayId) REQUIRES(mLock);
- ControllerConstructor getStylusControllerConstructor(int32_t displayId) REQUIRES(mLock);
+ ControllerConstructor getMouseControllerConstructor(ui::LogicalDisplayId displayId)
+ REQUIRES(mLock);
+ ControllerConstructor getStylusControllerConstructor(ui::LogicalDisplayId displayId)
+ REQUIRES(mLock);
std::mutex mLock;
InputListenerInterface& mNextListener;
PointerChoreographerPolicyInterface& mPolicy;
- std::map<int32_t, std::shared_ptr<PointerControllerInterface>> mMousePointersByDisplay
- GUARDED_BY(mLock);
+ std::map<ui::LogicalDisplayId, std::shared_ptr<PointerControllerInterface>>
+ mMousePointersByDisplay GUARDED_BY(mLock);
std::map<DeviceId, std::shared_ptr<PointerControllerInterface>> mTouchPointersByDevice
GUARDED_BY(mLock);
std::map<DeviceId, std::shared_ptr<PointerControllerInterface>> mStylusPointersByDevice
@@ -168,14 +172,14 @@
std::map<DeviceId, std::shared_ptr<PointerControllerInterface>> mDrawingTabletPointersByDevice
GUARDED_BY(mLock);
- int32_t mDefaultMouseDisplayId GUARDED_BY(mLock);
- int32_t mNotifiedPointerDisplayId GUARDED_BY(mLock);
+ ui::LogicalDisplayId mDefaultMouseDisplayId GUARDED_BY(mLock);
+ ui::LogicalDisplayId mNotifiedPointerDisplayId GUARDED_BY(mLock);
std::vector<InputDeviceInfo> mInputDeviceInfos GUARDED_BY(mLock);
std::set<DeviceId> mMouseDevices GUARDED_BY(mLock);
std::vector<DisplayViewport> mViewports GUARDED_BY(mLock);
bool mShowTouchesEnabled GUARDED_BY(mLock);
bool mStylusPointerIconEnabled GUARDED_BY(mLock);
- std::set<int32_t /*displayId*/> mDisplaysWithPointersHidden;
+ std::set<ui::LogicalDisplayId /*displayId*/> mDisplaysWithPointersHidden;
};
} // namespace android