Deskflow 1.26.0.0
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
EiEventQueueBuffer.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2024 Symless Ltd.
4 * SPDX-FileCopyrightText: (C) 2022 Red Hat, Inc.
5 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6 */
7
8#pragma once
9
11#include "platform/EiScreen.h"
12
13#include <libei.h>
14#include <mutex>
15#include <queue>
16
17namespace deskflow {
18
21{
22public:
23 EiEventQueueBuffer(ei *ei, IEventQueue *events);
24 ~EiEventQueueBuffer() override;
25
26 // IEventQueueBuffer overrides
27 void init() override
28 {
29 // do nothing
30 }
31 void waitForEvent(double msTimeout) override;
32 Type getEvent(Event &event, uint32_t &dataID) override;
33 bool addEvent(uint32_t dataID) override;
34 bool isEmpty() const override;
35
36private:
37 ei *m_ei;
38 IEventQueue *m_events;
39 std::queue<std::pair<bool, uint32_t>> m_queue;
40 int m_pipeWrite;
41 int m_pipeRead;
42
43 mutable std::mutex m_mutex;
44};
45
46} // namespace deskflow
Event.
Definition Event.h:29
Event queue buffer interface.
Definition IEventQueueBuffer.h:22
Type
Definition IEventQueueBuffer.h:26
Event queue interface.
Definition IEventQueue.h:29
Type getEvent(Event &event, uint32_t &dataID) override
Get the next event.
Definition EiEventQueueBuffer.cpp:86
~EiEventQueueBuffer() override
Definition EiEventQueueBuffer.cpp:34
void waitForEvent(double msTimeout) override
Block waiting for an event.
Definition EiEventQueueBuffer.cpp:41
bool addEvent(uint32_t dataID) override
Post an event.
Definition EiEventQueueBuffer.cpp:116
EiEventQueueBuffer(ei *ei, IEventQueue *events)
Definition EiEventQueueBuffer.cpp:23
void init() override
Initialize.
Definition EiEventQueueBuffer.h:27
bool isEmpty() const override
Check if event queue buffer is empty.
Definition EiEventQueueBuffer.cpp:128
Definition DaemonApp.h:20