Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qpipewire_async_support_p.h
Go to the documentation of this file.
1
// Copyright (C) 2025 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
#
ifndef
QPIPEWIRE_ASYNC_SUPPORT_P_H
5
#
define
QPIPEWIRE_ASYNC_SUPPORT_P_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
<
QtMultimedia
/
private
/
qpipewire_support_p
.
h
>
19
#
include
<
QtCore
/
private
/
qexpected_p
.
h
>
20
#
include
<
QtCore
/
qglobal
.
h
>
21
#
include
<
QtCore
/
qsemaphore
.
h
>
22
23
#
include
<
spa
/
utils
/
hook
.
h
>
24
25
#
include
<
functional
>
26
27
QT_BEGIN_NAMESPACE
28
29
namespace
QtPipeWire
{
30
31
struct
SpaListenerBase
32
{
33
explicit
SpaListenerBase
();
34
Q_DISABLE_COPY_MOVE
(
SpaListenerBase
)
35
36
int
sequenceNumber
()
const
{
return
m_sequenceNumber
; }
37
38
protected
:
39
void
removeHooks
();
40
41
int
m_sequenceNumber
;
42
spa_hook
m_listenerHook
{};
43
};
44
45
struct
NodeEventListener
final
:
SpaListenerBase
46
{
47
using
InfoHandler
=
std
::
function
<
void
(
const
struct
pw_node_info *)>;
48
using
ParamHandler
=
std
::
function
<
void
(
int
/*seq*/
,
uint32_t
/*id*/
,
uint32_t
/*index*/
,
49
uint32_t
/*next*/
,
const
struct
spa_pod *
/*param*/
)>;
50
51
struct
NodeHandler
52
{
53
InfoHandler
infoHandler
;
54
ParamHandler
paramHandler
;
55
};
56
57
explicit
NodeEventListener
(
PwNodeHandle
,
NodeHandler
);
58
~
NodeEventListener
();
59
60
void
enumParams
(
spa_param_type
);
61
62
private
:
63
PwNodeHandle m_node;
64
NodeHandler
m_handler;
65
66
static
void
onInfo(
void
*userData,
const
struct
pw_node_info *);
67
static
void
onParam(
void
*userData,
int
seq, uint32_t id, uint32_t index, uint32_t next,
68
const
struct
spa_pod *);
69
};
70
71
struct
CoreEventListener
:
SpaListenerBase
72
{
73
protected
:
74
CoreEventListener
();
75
~
CoreEventListener
();
76
77
pw_core_events
coreEvents
{};
78
};
79
80
struct
CoreEventDoneListener
:
CoreEventListener
81
{
82
CoreEventDoneListener
();
83
q23
::
expected
<
void
,
int
>
asyncWait
(pw_core *coreConnection,
std
::function<
void
()> handler);
84
85
private
:
86
int
m_seqnum = -1;
87
std
::function<
void
()> m_handler;
88
};
89
90
struct
CoreEventSyncHelper
:
CoreEventDoneListener
91
{
92
CoreEventSyncHelper
();
93
q23
::
expected
<
bool
,
int
>
sync
(pw_core *coreConnection,
94
std::optional<std::chrono::nanoseconds> timeout = {});
95
96
private
:
97
QSemaphore m_semaphore;
98
};
99
100
}
// namespace QtPipeWire
101
102
QT_END_NAMESPACE
103
104
#
endif
// QPIPEWIRE_ASYNC_SUPPORT_P_H
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qrandomaccessasyncfile_darwin.mm:17
QtPipeWire
Definition
qpipewire_async_support.cpp:10
QtPipeWire::s_sequenceNumberAllocator
static std::atomic_int s_sequenceNumberAllocator
Definition
qpipewire_async_support.cpp:14
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
QtPipeWire::CoreEventDoneListener
Definition
qpipewire_async_support_p.h:81
QtPipeWire::CoreEventDoneListener::asyncWait
q23::expected< void, int > asyncWait(pw_core *coreConnection, std::function< void()> handler)
Definition
qpipewire_async_support.cpp:107
QtPipeWire::CoreEventDoneListener::CoreEventDoneListener
CoreEventDoneListener()
Definition
qpipewire_async_support.cpp:94
QtPipeWire::CoreEventListener
Definition
qpipewire_async_support_p.h:72
QtPipeWire::CoreEventListener::~CoreEventListener
~CoreEventListener()
Definition
qpipewire_async_support.cpp:83
QtPipeWire::CoreEventListener::coreEvents
pw_core_events coreEvents
Definition
qpipewire_async_support_p.h:77
QtPipeWire::CoreEventListener::CoreEventListener
CoreEventListener()
Definition
qpipewire_async_support.cpp:78
QtPipeWire::CoreEventSyncHelper
Definition
qpipewire_async_support_p.h:91
QtPipeWire::CoreEventSyncHelper::sync
q23::expected< bool, int > sync(pw_core *coreConnection, std::optional< std::chrono::nanoseconds > timeout={})
Definition
qpipewire_async_support.cpp:132
QtPipeWire::CoreEventSyncHelper::CoreEventSyncHelper
CoreEventSyncHelper()
QtPipeWire::NodeEventListener::NodeHandler
Definition
qpipewire_async_support_p.h:52
QtPipeWire::NodeEventListener::NodeHandler::paramHandler
ParamHandler paramHandler
Definition
qpipewire_async_support_p.h:54
QtPipeWire::NodeEventListener::NodeHandler::infoHandler
InfoHandler infoHandler
Definition
qpipewire_async_support_p.h:53
QtPipeWire::NodeEventListener::NodeEventListener
NodeEventListener(PwNodeHandle, NodeHandler)
Definition
qpipewire_async_support.cpp:30
QtPipeWire::NodeEventListener::InfoHandler
std::function< void(const struct pw_node_info *)> InfoHandler
Definition
qpipewire_async_support_p.h:47
QtPipeWire::NodeEventListener::~NodeEventListener
~NodeEventListener()
Definition
qpipewire_async_support.cpp:44
QtPipeWire::NodeEventListener::enumParams
void enumParams(spa_param_type)
Definition
qpipewire_async_support.cpp:52
QtPipeWire::SpaListenerBase
Definition
qpipewire_async_support_p.h:32
QtPipeWire::SpaListenerBase::SpaListenerBase
SpaListenerBase()
Definition
qpipewire_async_support.cpp:16
QtPipeWire::SpaListenerBase::m_listenerHook
spa_hook m_listenerHook
Definition
qpipewire_async_support_p.h:42
QtPipeWire::SpaListenerBase::m_sequenceNumber
int m_sequenceNumber
Definition
qpipewire_async_support_p.h:41
qtmultimedia
src
multimedia
pipewire
qpipewire_async_support_p.h
Generated on
for Qt by
1.16.1