1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4//
5// W A R N I N G
6// -------------
7//
8// This file is not part of the Qt API. It exists purely as an
9// implementation detail. This header file may change from version to
10// version without notice, or even be removed.
11//
12// We mean it.
13//
14
15#ifndef QAUTORESETEVENT_LINUX_P_H
16#define QAUTORESETEVENT_LINUX_P_H
17
18#include <QtCore/qsocketnotifier.h>
19#include <QtMultimedia/qtmultimediaexports.h>
20
21QT_BEGIN_NAMESPACE
22
23namespace QtPrivate {
24
25class Q_MULTIMEDIA_EXPORT QAutoResetEventEventFD final : public QObject
26{
27 Q_OBJECT
28
29public:
30 explicit QAutoResetEventEventFD(QObject *parent = nullptr);
31 ~QAutoResetEventEventFD();
32 Q_DISABLE_COPY_MOVE(QAutoResetEventEventFD)
33
34 bool isValid() const { return m_fd != -1; }
35 void set();
36
37 template <typename... Args>
38 QMetaObject::Connection callOnActivated(Args &&...args)
39 {
40 return connect(this, &QAutoResetEventEventFD::activated, std::forward<Args>(args)...);
41 }
42
43 template <typename Functor>
44 QMetaObject::Connection callOnActivated(Functor &&functor)
45 {
46 return connect(this, &QAutoResetEventEventFD::activated, this,
47 std::forward<Functor>(functor));
48 }
49
50Q_SIGNALS:
51 void activated();
52
53private:
54 QSocketNotifier m_notifier;
55 int m_fd = -1;
56};
57
58} // namespace QtPrivate
59
60QT_END_NAMESPACE
61
62#endif // QAUTORESETEVENT_LINUX_P_H
63

source code of qtmultimedia/src/multimedia/audio/qautoresetevent_linux_p.h