19 #ifndef MIR_INPUT_ANDROID_INPUT_SENDER_H_
20 #define MIR_INPUT_ANDROID_INPUT_SENDER_H_
25 #include "androidfw/InputTransport.h"
28 #include <unordered_map>
61 InputSender(std::shared_ptr<compositor::Scene>
const& scene,
62 std::shared_ptr<MainLoop>
const& main_loop,
63 std::shared_ptr<InputSendObserver>
const& observer,
64 std::shared_ptr<InputReport>
const& report);
66 void send_event(
MirEvent const& event, std::shared_ptr<InputChannel>
const& channel)
override;
69 struct InputSenderState;
74 explicit SceneObserver(InputSenderState & state);
79 void scene_changed()
override;
82 InputSenderState & state;
88 ActiveTransfer(InputSenderState & state,
int server_fd,
input::Surface* surface);
92 void on_surface_disappeared();
97 void on_finish_signal();
98 void on_response_timeout();
101 droidinput::status_t send_key_event(uint32_t sequence_id,
MirKeyEvent const& event);
102 droidinput::status_t send_motion_event(uint32_t sequence_id,
MirMotionEvent const& event);
103 void process_and_submit_result(std::shared_ptr<InputSendObserver>
const& observer, std::shared_ptr<InputReport>
const& report);
107 InputSenderState & state;
108 droidinput::InputPublisher publisher;
110 std::vector<InputSendEntry> pending_responses;
111 std::mutex transfer_mutex;
112 std::atomic<bool> subscribed{
false};
113 std::unique_ptr<time::Alarm> send_timer;
115 ActiveTransfer&
operator=(ActiveTransfer
const&) =
delete;
116 ActiveTransfer(ActiveTransfer
const&) =
delete;
119 struct InputSenderState
121 InputSenderState(std::shared_ptr<MainLoop>
const& main_loop,
122 std::shared_ptr<InputSendObserver>
const& observer,
123 std::shared_ptr<InputReport>
const& report);
126 void remove_transfer(
int fd);
128 std::shared_ptr<MainLoop>
const main_loop;
129 std::shared_ptr<InputReport>
const report;
130 std::shared_ptr<InputSendObserver>
const observer;
133 std::shared_ptr<ActiveTransfer> get_transfer(
int fd);
137 std::unordered_map<int,std::shared_ptr<ActiveTransfer>> transfers;
138 std::mutex sender_mutex;
141 InputSenderState state;
142 std::shared_ptr<compositor::Scene> scene;
All things Mir.
Definition: buffer_stream.h:37
Definition: input_send_entry.h:36
Definition: null_observer.h:28
Definition: event_deprecated.h:122
surface_removed
Definition: scene_report_tp.h:46
surface_added
Definition: scene_report_tp.h:41
Definition: android_input_receiver.h:32
Definition: event_deprecated.h:237
Definition: event_deprecated.h:162