1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#ifndef OHOS_INPUT_TRANSFER_STATION_H 17e0dac50fSopenharmony_ci#define OHOS_INPUT_TRANSFER_STATION_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include "input_manager.h" 20e0dac50fSopenharmony_ci#include "pointer_event.h" 21e0dac50fSopenharmony_ci#include "window.h" 22e0dac50fSopenharmony_ci#include "window_input_channel.h" 23e0dac50fSopenharmony_ci#include "wm_single_instance.h" 24e0dac50fSopenharmony_ci#include "vsync_station.h" 25e0dac50fSopenharmony_ci 26e0dac50fSopenharmony_cinamespace OHOS { 27e0dac50fSopenharmony_cinamespace Rosen { 28e0dac50fSopenharmony_ciclass InputEventListener; 29e0dac50fSopenharmony_ci 30e0dac50fSopenharmony_ciclass InputTransferStation { 31e0dac50fSopenharmony_ciWM_DECLARE_SINGLE_INSTANCE_BASE(InputTransferStation); 32e0dac50fSopenharmony_cifriend class InputEventListener; 33e0dac50fSopenharmony_cipublic: 34e0dac50fSopenharmony_ci bool IsDestroyed() 35e0dac50fSopenharmony_ci { 36e0dac50fSopenharmony_ci return destroyed_; 37e0dac50fSopenharmony_ci } 38e0dac50fSopenharmony_ci void AddInputWindow(const sptr<Window>& window); 39e0dac50fSopenharmony_ci void RemoveInputWindow(uint32_t windowId); 40e0dac50fSopenharmony_ci void MarkRegisterToMMI() 41e0dac50fSopenharmony_ci { 42e0dac50fSopenharmony_ci isRegisteredMMI_ = true; 43e0dac50fSopenharmony_ci } 44e0dac50fSopenharmony_ci 45e0dac50fSopenharmony_ciprotected: 46e0dac50fSopenharmony_ci InputTransferStation() = default; 47e0dac50fSopenharmony_ci ~InputTransferStation(); 48e0dac50fSopenharmony_ci 49e0dac50fSopenharmony_ciprivate: 50e0dac50fSopenharmony_ci bool IsRegisterToMMI() const 51e0dac50fSopenharmony_ci { 52e0dac50fSopenharmony_ci return isRegisteredMMI_; 53e0dac50fSopenharmony_ci } 54e0dac50fSopenharmony_ci sptr<WindowInputChannel> GetInputChannel(uint32_t windowId); 55e0dac50fSopenharmony_ci 56e0dac50fSopenharmony_ci std::mutex mtx_; 57e0dac50fSopenharmony_ci bool destroyed_ { false }; 58e0dac50fSopenharmony_ci std::unordered_map<uint32_t, sptr<WindowInputChannel>> windowInputChannels_; 59e0dac50fSopenharmony_ci std::shared_ptr<MMI::IInputEventConsumer> inputListener_ = nullptr; 60e0dac50fSopenharmony_ci std::shared_ptr<AppExecFwk::EventHandler> eventHandler_ = nullptr; 61e0dac50fSopenharmony_ci const std::string INPUT_AND_VSYNC_THREAD = "InputAndVsyncThread"; 62e0dac50fSopenharmony_ci 63e0dac50fSopenharmony_ci bool isRegisteredMMI_ { false }; 64e0dac50fSopenharmony_ci}; 65e0dac50fSopenharmony_ci 66e0dac50fSopenharmony_ciclass InputEventListener : public MMI::IInputEventConsumer { 67e0dac50fSopenharmony_cipublic: 68e0dac50fSopenharmony_ci InputEventListener() = default; 69e0dac50fSopenharmony_ci void OnInputEvent(std::shared_ptr<MMI::PointerEvent> pointerEvent) const override; 70e0dac50fSopenharmony_ci void OnInputEvent(std::shared_ptr<MMI::KeyEvent> keyEvent) const override; 71e0dac50fSopenharmony_ci void OnInputEvent(std::shared_ptr<MMI::AxisEvent> axisEvent) const override; 72e0dac50fSopenharmony_ci}; 73e0dac50fSopenharmony_ci} // namespace Rosen 74e0dac50fSopenharmony_ci} // namespace OHOS 75e0dac50fSopenharmony_ci 76e0dac50fSopenharmony_ci 77e0dac50fSopenharmony_ci#endif // OHOS_INPUT_TRANSFER_STATION_H 78