From 222c7cb3297f04484f44ef595c2962bf1c8acd55 Mon Sep 17 00:00:00 2001 From: blueyouth Date: Tue, 22 Apr 2025 21:43:25 +0800 Subject: [PATCH] touch tracking Signed-off-by: blueyouth Change-Id: Ic8144cecac3436476cc136bbf402c74eb56d3dda --- .../include/input_manager_impl.h | 1 + .../event_handler/src/input_manager_impl.cpp | 10 ++++ frameworks/proxy/events/src/input_manager.cpp | 5 ++ .../proxy/events/test/input_manager_test.cpp | 24 +++++++++ .../innerkits/proxy/include/input_manager.h | 2 + .../include/i_multimodal_input_connect.h | 1 + .../multimodal_input_connect_manager.h | 1 + .../include/multimodal_input_connect_proxy.h | 1 + .../include/multimodal_input_connect_stub.h | 1 + .../multimodalinput_ipc_interface_code.h | 1 + .../src/multimodal_input_connect_manager.cpp | 7 +++ .../src/multimodal_input_connect_proxy.cpp | 22 ++++++++ .../src/multimodal_input_connect_stub.cpp | 19 +++++++ .../test/mock_multimodal_input_connect_stub.h | 2 +- .../multimodal_input_connect_stub_ex_test.cpp | 2 + .../include/server_msg_handler.h | 1 + .../message_handle/src/server_msg_handler.cpp | 10 ++++ service/module_loader/include/mmi_service.h | 1 + service/module_loader/src/mmi_service.cpp | 11 ++++ .../include/i_input_windows_manager.h | 1 + .../include/input_windows_manager.h | 4 ++ .../src/input_windows_manager.cpp | 50 ++++++++++++++++++- .../mock/include/input_windows_manager_mock.h | 1 + util/common/include/error_multimodal.h | 2 + 24 files changed, 178 insertions(+), 2 deletions(-) diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index 05702a9ca..6b77e9ae7 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -244,6 +244,7 @@ public: int32_t CheckKnuckleEvent(float pointX, float pointY, bool &touchType); int32_t SubscribeInputActive(std::shared_ptr inputEventConsumer, int64_t interval); void UnsubscribeInputActive(int32_t subscribeId); + int32_t SwitchTouchTracking(bool touchTracking); private: int32_t PackWindowInfo(NetPacket &pkt); diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index 32334214b..fe3ec95f0 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -2815,5 +2815,15 @@ void InputManagerImpl::OnDeviceConsumerEvent(std::shared_ptr point inputConsumer->OnInputEvent(pointerEvent); MMI_HILOGD("Pointer event pointerId:%{public}d", pointerEvent->GetPointerId()); } + +int32_t InputManagerImpl::SwitchTouchTracking(bool touchTracking) +{ + CALL_INFO_TRACE; + if (PRODUCT_TYPE != "phone") { + MMI_HILOGW("Does not support touch-tracking on %{public}s", PRODUCT_TYPE.c_str()); + return CAPABILITY_NOT_SUPPORTED; + } + return MULTIMODAL_INPUT_CONNECT_MGR->SwitchTouchTracking(touchTracking); +} } // namespace MMI } // namespace OHOS \ No newline at end of file diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index d231efadc..4e7423df2 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -906,5 +906,10 @@ int32_t InputManager::SetInputDeviceConsumer(const std::vector& dev { return InputMgrImpl.SetInputDeviceConsumer(deviceNames, consumer); } + +int32_t InputManager::SwitchTouchTracking(bool touchTracking) +{ + return InputMgrImpl.SwitchTouchTracking(touchTracking); +} } // namespace MMI } // namespace OHOS diff --git a/frameworks/proxy/events/test/input_manager_test.cpp b/frameworks/proxy/events/test/input_manager_test.cpp index b54b08d48..b30d58fac 100644 --- a/frameworks/proxy/events/test/input_manager_test.cpp +++ b/frameworks/proxy/events/test/input_manager_test.cpp @@ -5581,5 +5581,29 @@ HWTEST_F(InputManagerTest, InputManagerTest_CheckKnuckleEvent_001, TestSize.Leve int32_t ret = InputManager::GetInstance()->CheckKnuckleEvent(pointX, pointY, isKnuckleType); EXPECT_EQ(ret, -2); } + +/* + * @tc.name: InputManagerTest_SwitchTouchTracking_001 + * @tc.desc: SwitchTouchTracking + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(InputManagerTest, InputManagerTest_SwitchTouchTracking_001, TestSize.Level1) +{ + CALL_TEST_DEBUG; + ASSERT_NO_FATAL_FAILURE(InputManager::GetInstance()->SwitchTouchTracking(true)); +} + +/* + * @tc.name: InputManagerTest_SwitchTouchTracking_002 + * @tc.desc: SwitchTouchTracking + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(InputManagerTest, InputManagerTest_SwitchTouchTracking_002, TestSize.Level1) +{ + CALL_TEST_DEBUG; + ASSERT_NO_FATAL_FAILURE(InputManager::GetInstance()->SwitchTouchTracking(false)); +} } // namespace MMI } // namespace OHOS diff --git a/interfaces/native/innerkits/proxy/include/input_manager.h b/interfaces/native/innerkits/proxy/include/input_manager.h index 9774baa60..4749c2829 100644 --- a/interfaces/native/innerkits/proxy/include/input_manager.h +++ b/interfaces/native/innerkits/proxy/include/input_manager.h @@ -1170,6 +1170,8 @@ public: int32_t SetInputDeviceConsumer(const std::vector& deviceName, std::shared_ptr consumer); + int32_t SwitchTouchTracking(bool touchTracking); + private: InputManager() = default; DISALLOW_COPY_AND_MOVE(InputManager); diff --git a/service/connect_manager/include/i_multimodal_input_connect.h b/service/connect_manager/include/i_multimodal_input_connect.h index 8a42fc86a..601bfa5de 100644 --- a/service/connect_manager/include/i_multimodal_input_connect.h +++ b/service/connect_manager/include/i_multimodal_input_connect.h @@ -188,6 +188,7 @@ public: virtual int32_t UnsubscribeInputActive(int32_t subscribeId) = 0; virtual int32_t SetInputDeviceConsumer(const std::vector& deviceNames) = 0; virtual int32_t ClearInputDeviceConsumer(const std::vector& deviceNames) = 0; + virtual int32_t SwitchTouchTracking(bool touchTracking) = 0; }; } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/include/multimodal_input_connect_manager.h b/service/connect_manager/include/multimodal_input_connect_manager.h index 15995698c..1e9b8c41a 100644 --- a/service/connect_manager/include/multimodal_input_connect_manager.h +++ b/service/connect_manager/include/multimodal_input_connect_manager.h @@ -176,6 +176,7 @@ public: int32_t UnsubscribeInputActive(int32_t subscribeId); int32_t SetInputDeviceConsumer(const std::vector& deviceNames); int32_t ClearInputDeviceConsumer(const std::vector& deviceNames); + int32_t SwitchTouchTracking(bool touchTracking); private: MultimodalInputConnectManager() = default; diff --git a/service/connect_manager/include/multimodal_input_connect_proxy.h b/service/connect_manager/include/multimodal_input_connect_proxy.h index 297946917..637a85fa3 100644 --- a/service/connect_manager/include/multimodal_input_connect_proxy.h +++ b/service/connect_manager/include/multimodal_input_connect_proxy.h @@ -174,6 +174,7 @@ public: int32_t UnsubscribeInputActive(int32_t subscribeId) override; int32_t SetInputDeviceConsumer(const std::vector& deviceNames) override; int32_t ClearInputDeviceConsumer(const std::vector& deviceNames) override; + int32_t SwitchTouchTracking(bool touchTracking) override; private: static inline BrokerDelegator delegator_; diff --git a/service/connect_manager/include/multimodal_input_connect_stub.h b/service/connect_manager/include/multimodal_input_connect_stub.h index 3013480ec..7d4d5904d 100644 --- a/service/connect_manager/include/multimodal_input_connect_stub.h +++ b/service/connect_manager/include/multimodal_input_connect_stub.h @@ -188,6 +188,7 @@ protected: int32_t StubSetMultiWindowScreenId(MessageParcel& data, MessageParcel& reply); int32_t StubSubscribeInputActive(MessageParcel& data, MessageParcel& reply); int32_t StubUnsubscribeInputActive(MessageParcel& data, MessageParcel& reply); + int32_t StubSwitchTouchTracking(MessageParcel& data, MessageParcel& reply); private: int32_t VerifyTouchPadSetting(void); diff --git a/service/connect_manager/include/multimodalinput_ipc_interface_code.h b/service/connect_manager/include/multimodalinput_ipc_interface_code.h index 1da6725eb..60829e843 100644 --- a/service/connect_manager/include/multimodalinput_ipc_interface_code.h +++ b/service/connect_manager/include/multimodalinput_ipc_interface_code.h @@ -162,6 +162,7 @@ enum class MultimodalinputConnectInterfaceCode { SUBSCRIBE_KEY_MONITOR = 351, UNSUBSCRIBE_KEY_MONITOR = 352, #endif // OHOS_BUILD_ENABLE_KEY_PRESSED_HANDLER + SWITCH_TOUCH_TRACKING, }; enum class MultimodalinputEventObserverCode { diff --git a/service/connect_manager/src/multimodal_input_connect_manager.cpp b/service/connect_manager/src/multimodal_input_connect_manager.cpp index 798b3d1ed..dde6d3864 100644 --- a/service/connect_manager/src/multimodal_input_connect_manager.cpp +++ b/service/connect_manager/src/multimodal_input_connect_manager.cpp @@ -1080,5 +1080,12 @@ int32_t MultimodalInputConnectManager::UnsubscribeInputActive(int32_t subscribeI CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID); return multimodalInputConnectService_->UnsubscribeInputActive(subscribeId); } + +int32_t MultimodalInputConnectManager::SwitchTouchTracking(bool touchTracking) +{ + std::lock_guard guard(lock_); + CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID); + return multimodalInputConnectService_->SwitchTouchTracking(touchTracking); +} } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index f5a87ef12..f40ffba16 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -3082,5 +3082,27 @@ int32_t MultimodalInputConnectProxy::UnsubscribeInputActive(int32_t subscribeId) } return ret; } + +int32_t MultimodalInputConnectProxy::SwitchTouchTracking(bool touchTracking) +{ + CALL_DEBUG_ENTER; + MessageParcel data; + if (!data.WriteInterfaceToken(MultimodalInputConnectProxy::GetDescriptor())) { + MMI_HILOGE("Failed to write descriptor"); + return ERR_INVALID_VALUE; + } + WRITEBOOL(data, touchTracking, ERR_INVALID_VALUE); + MessageParcel reply; + MessageOption option; + sptr remote = Remote(); + CHKPR(remote, RET_ERR); + auto ret = remote->SendRequest( + static_cast(MultimodalinputConnectInterfaceCode::SWITCH_TOUCH_TRACKING), + data, reply, option); + if (ret != RET_OK) { + MMI_HILOGE("Send request failed, ret:%{public}d", ret); + } + return ret; +} } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 88501b0b2..08b14c0ca 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -515,6 +515,9 @@ int32_t MultimodalInputConnectStub::OnRemoteRequest(uint32_t code, MessageParcel case static_cast(MultimodalinputConnectInterfaceCode::REMOVE_DEVICE_CONSUMER): ret = StubClearInputDeviceConsumer(data, reply); break; + case static_cast(MultimodalinputConnectInterfaceCode::SWITCH_TOUCH_TRACKING): + ret = StubSwitchTouchTracking(data, reply); + break; default: { MMI_HILOGE("Unknown code:%{public}u, go switch default", code); ret = IPCObjectStub::OnRemoteRequest(code, data, reply, option); @@ -3565,5 +3568,21 @@ int32_t MultimodalInputConnectStub::StubClearInputDeviceConsumer(MessageParcel& } return RET_OK; } + +int32_t MultimodalInputConnectStub::StubSwitchTouchTracking(MessageParcel& data, MessageParcel& reply) +{ + CALL_DEBUG_ENTER; + constexpr int32_t rootUid { 0 }; + constexpr int32_t accessibilityUid { 1103 }; + int32_t callingUid = GetCallingUid(); + if (((callingUid != rootUid) && (callingUid != accessibilityUid)) || !PER_HELPER->VerifySystemApp()) { + MMI_HILOGE("Verify system APP failed"); + return PERMISSION_DENIED; + } + bool touchTracking { false }; + READBOOL(data, touchTracking, IPC_PROXY_DEAD_OBJECT_ERR); + SwitchTouchTracking(touchTracking); + return RET_OK; +} } // namespace MMI } // namespace OHOS diff --git a/service/connect_manager/test/mock_multimodal_input_connect_stub.h b/service/connect_manager/test/mock_multimodal_input_connect_stub.h index 2a7b83b5b..7064673a0 100644 --- a/service/connect_manager/test/mock_multimodal_input_connect_stub.h +++ b/service/connect_manager/test/mock_multimodal_input_connect_stub.h @@ -202,8 +202,8 @@ public: MOCK_METHOD(int32_t, SubscribeInputActive, (int32_t subscribeId, int64_t interval), (override)); MOCK_METHOD(int32_t, UnsubscribeInputActive, (int32_t subscribeId), (override)); MOCK_METHOD(bool, IsRunning, (), (const override)); + MOCK_METHOD(int32_t, SwitchTouchTracking, (bool touchTracking), (override)); }; - } // namespace MMI } // namespace OHOS #endif // MOCK_MULTIMODAL_INPUT_CONNECT_STUB_H diff --git a/service/connect_manager/test/multimodal_input_connect_stub_ex_test.cpp b/service/connect_manager/test/multimodal_input_connect_stub_ex_test.cpp index a7e59ced3..86bdb0a11 100644 --- a/service/connect_manager/test/multimodal_input_connect_stub_ex_test.cpp +++ b/service/connect_manager/test/multimodal_input_connect_stub_ex_test.cpp @@ -392,6 +392,8 @@ public: return RET_OK; }; + int32_t SwitchTouchTracking(bool touchTracking) override { return RET_OK; } + std::atomic state_ = ServiceRunningState::STATE_NOT_START; int32_t rows_ = 0; int32_t size_ = 0; diff --git a/service/message_handle/include/server_msg_handler.h b/service/message_handle/include/server_msg_handler.h index d0d3968be..15d8bce85 100644 --- a/service/message_handle/include/server_msg_handler.h +++ b/service/message_handle/include/server_msg_handler.h @@ -123,6 +123,7 @@ public: bool AddInjectNotice(const InjectNoticeInfo& noticeInfo); int32_t OnTransferBinderClientSrv(const sptr &binderClientObject, int32_t pid); int32_t RegisterWindowStateErrorCallback(SessionPtr sess, NetPacket &pkt); + int32_t SwitchTouchTracking(bool touchTracking); protected: int32_t OnRegisterMsgHandler(SessionPtr sess, NetPacket& pkt); diff --git a/service/message_handle/src/server_msg_handler.cpp b/service/message_handle/src/server_msg_handler.cpp index 17eb0c1b3..c90499eda 100644 --- a/service/message_handle/src/server_msg_handler.cpp +++ b/service/message_handle/src/server_msg_handler.cpp @@ -860,6 +860,16 @@ int32_t ServerMsgHandler::RegisterWindowStateErrorCallback(SessionPtr sess, NetP return RET_OK; } +int32_t ServerMsgHandler::SwitchTouchTracking(bool touchTracking) +{ + if (PRODUCT_TYPE != "phone") { + MMI_HILOGW("Does not support touch-tracking on %{public}s", PRODUCT_TYPE.c_str()); + return CAPABILITY_NOT_SUPPORTED; + } + WIN_MGR->SwitchTouchTracking(touchTracking); + return RET_OK; +} + #ifdef OHOS_BUILD_ENABLE_SECURITY_COMPONENT int32_t ServerMsgHandler::OnEnhanceConfig(SessionPtr sess, NetPacket &pkt) { diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index f8a3be91d..1f8b4afd8 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -204,6 +204,7 @@ public: int32_t SetMultiWindowScreenIdInner(uint64_t screenId, uint64_t displayNodeScreenId); int32_t SubscribeInputActive(int32_t subscribeId, int64_t interval) override; int32_t UnsubscribeInputActive(int32_t subscribeId) override; + int32_t SwitchTouchTracking(bool touchTracking) override; protected: void OnConnected(SessionPtr s) override; diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index ca3408568..accef495f 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -3837,5 +3837,16 @@ int32_t MMIService::ClearInputDeviceConsumer(const std::vector& dev } return RET_OK; } + +int32_t MMIService::SwitchTouchTracking(bool touchTracking) +{ + auto ret = delegateTasks_.PostSyncTask([this, touchTracking] { + return sMsgHandler_.SwitchTouchTracking(touchTracking); + }); + if (ret != RET_OK) { + MMI_HILOGE("LaunchAiScreenAbility failed, return:%{public}d", ret); + } + return ret; +} } // namespace MMI } // namespace OHOS diff --git a/service/window_manager/include/i_input_windows_manager.h b/service/window_manager/include/i_input_windows_manager.h index 2bf620392..b1a84fd54 100644 --- a/service/window_manager/include/i_input_windows_manager.h +++ b/service/window_manager/include/i_input_windows_manager.h @@ -180,6 +180,7 @@ public: #ifdef OHOS_BUILD_ENABLE_TOUCH virtual std::shared_ptr GetLastPointerEventForGesture() = 0; #endif // OHOS_BUILD_ENABLE_TOUCH + virtual void SwitchTouchTracking(bool touchTracking) = 0; static std::shared_ptr GetInstance(); static void DestroyInstance(); diff --git a/service/window_manager/include/input_windows_manager.h b/service/window_manager/include/input_windows_manager.h index 0b6cecd38..0fa08e8d8 100644 --- a/service/window_manager/include/input_windows_manager.h +++ b/service/window_manager/include/input_windows_manager.h @@ -226,8 +226,11 @@ public: #ifdef OHOS_BUILD_ENABLE_TOUCH std::shared_ptr GetLastPointerEventForGesture() { return lastPointerEventforGesture_; }; #endif // OHOS_BUILD_ENABLE_TOUCH + void SwitchTouchTracking(bool touchTracking); private: + bool NeedTouchTracking(PointerEvent &event) const; + void ProcessTouchTracking(std::shared_ptr event, const WindowInfo &targetWindow); bool IgnoreTouchEvent(std::shared_ptr pointerEvent); void ReissueCancelTouchEvent(std::shared_ptr pointerEvent); int32_t GetDisplayId(std::shared_ptr inputEvent) const; @@ -497,6 +500,7 @@ private: #endif // OHOS_BUILD_ENABLE_TOUCH static std::unordered_map convertToolTypeMap_; bool IsFoldable_ { false }; + bool touchTracking_ { false }; int32_t timerId_ { -1 }; int32_t lastDpi_ { 0 }; std::shared_ptr GetlastPointerEvent(); diff --git a/service/window_manager/src/input_windows_manager.cpp b/service/window_manager/src/input_windows_manager.cpp index dd06febb0..57103c2c6 100644 --- a/service/window_manager/src/input_windows_manager.cpp +++ b/service/window_manager/src/input_windows_manager.cpp @@ -83,6 +83,7 @@ constexpr int32_t ANGLE_90 { 90 }; constexpr int32_t ANGLE_360 { 360 }; constexpr int32_t POINTER_MOVEFLAG = { 7 }; constexpr size_t POINTER_STYLE_WINDOW_NUM = { 10 }; +constexpr size_t SINGLE_TOUCH { 1 }; constexpr int32_t CAST_INPUT_DEVICEID { 0xAAAAAAFF }; constexpr int32_t CAST_SCREEN_DEVICEID { 0xAAAAAAFE }; constexpr int32_t DEFAULT_DPI { 0 }; @@ -4196,7 +4197,7 @@ int32_t InputWindowsManager::UpdateTouchScreenTarget(std::shared_ptr winMap; @@ -4363,6 +4364,7 @@ int32_t InputWindowsManager::UpdateTouchScreenTarget(std::shared_ptrSetTargetWindowId(touchWindow->id); pointerItem.SetTargetWindowId(touchWindow->id); #ifdef OHOS_BUILD_ENABLE_ANCO @@ -6264,5 +6266,51 @@ std::shared_ptr InputWindowsManager::GetlastPointerEvent() std::lock_guard guard(mtx_); return lastPointerEvent_; } + +void InputWindowsManager::SwitchTouchTracking(bool touchTracking) +{ + MMI_HILOGI("Switch touch tracking:%{public}d", touchTracking); + touchTracking_ = touchTracking; +} + +bool InputWindowsManager::NeedTouchTracking(PointerEvent &event) const +{ + if (!touchTracking_) { + return false; + } + if (event.HasFlag(InputEvent::EVENT_FLAG_ACCESSIBILITY)) { + return false; + } + if (event.GetPointerAction() != PointerEvent::POINTER_ACTION_MOVE) { + return false; + } + return (event.GetPointerCount() == SINGLE_TOUCH); +} + +void InputWindowsManager::ProcessTouchTracking(std::shared_ptr event, const WindowInfo &targetWindow) +{ + if (!NeedTouchTracking(*event)) { + return; + } + if (event->GetTargetWindowId() == targetWindow.id) { + return; + } + PointerEvent::PointerItem pointerItem {}; + if (!event->GetPointerItem(event->GetPointerId(), pointerItem)) { + MMI_HILOGE("Corrupted pointer event, No:%{public}d,PI:%{public}d", event->GetId(), event->GetPointerId()); + return; + } + pointerItem.SetPressed(false); + event->UpdatePointerItem(event->GetPointerId(), pointerItem); + event->SetPointerAction(PointerEvent::POINTER_ACTION_CANCEL); + + auto normalizeHandler = InputHandler->GetEventNormalizeHandler(); + CHKPV(normalizeHandler); + normalizeHandler->HandleTouchEvent(event); + + pointerItem.SetPressed(true); + event->UpdatePointerItem(event->GetPointerId(), pointerItem); + event->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN); +} } // namespace MMI } // namespace OHOS diff --git a/test/facility/mock/include/input_windows_manager_mock.h b/test/facility/mock/include/input_windows_manager_mock.h index bff791fa7..801e3d7fd 100644 --- a/test/facility/mock/include/input_windows_manager_mock.h +++ b/test/facility/mock/include/input_windows_manager_mock.h @@ -145,6 +145,7 @@ public: #ifdef OHOS_BUILD_ENABLE_TOUCH MOCK_METHOD(std::shared_ptr, GetLastPointerEventForGesture, ()); #endif // OHOS_BUILD_ENABLE_TOUCH + void SwitchTouchTracking(bool touchTracking) override {} static std::shared_ptr GetInstance(); diff --git a/util/common/include/error_multimodal.h b/util/common/include/error_multimodal.h index 8324ca303..14d7b0551 100644 --- a/util/common/include/error_multimodal.h +++ b/util/common/include/error_multimodal.h @@ -121,6 +121,8 @@ enum { SESSION_NOT_FOUND, // 监听增加失败 INVALID_MONITOR_MON, + // 权限校验失败 + PERMISSION_DENIED, // 功能不支持 CAPABILITY_NOT_SUPPORTED }; -- Gitee