Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qpipewire_instance_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_INSTANCE_P_H
5
#
define
QPIPEWIRE_INSTANCE_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
20
#
include
<
QtCore
/
private
/
qexpected_p
.
h
>
21
#
include
<
QtCore
/
qglobal
.
h
>
22
#
include
<
QtCore
/
qloggingcategory
.
h
>
23
#
include
<
QtCore
/
private
/
qexpected_p
.
h
>
24
25
#
include
<
pipewire
/
pipewire
.
h
>
26
27
#
include
<
optional
>
28
#
include
<
system_error
>
29
30
QT_BEGIN_NAMESPACE
31
32
namespace
QtPipeWire
{
33
34
Q_DECLARE_LOGGING_CATEGORY
(
lcPipewire
);
// "qt.multimedia.pipewire"
35
36
struct
QPipewireInitializer
37
{
38
QPipewireInitializer
();
39
~
QPipewireInitializer
();
40
};
41
42
class
QPipeWireInstance
:
private
QPipewireInitializer
43
{
44
public
:
45
[[nodiscard]]
static
std
::
shared_ptr
<
QPipeWireInstance
>
instance
();
46
[[nodiscard]]
static
bool
isLoaded
();
47
[[nodiscard]]
static
q23
::
expected
<
void
,
std
::
error_code
>
hasSPAFactory
(
const
char
*factoryName);
48
49
// event loop
50
template
<
typename
Closure>
51
auto
runWithEventLoopLock
(Closure &&c)
52
{
53
return
m_eventLoop.runWithEventLoopLock(std::forward<Closure>(c));
54
}
55
56
auto
eventLoopLock
() {
return
std::unique_lock{ m_eventLoop }; }
57
bool
isInPwThreadLoop
()
const
;
58
pw_loop *
eventLoop
()
const
;
59
PWThreadedEventLoop
&
pwEventLoop
() {
return
m_eventLoop; };
60
61
// portal
62
bool
hasScreenCastPortal
();
63
64
// connection factories
65
q23
::
expected
<
PwCoreConnectionHandle
,
std
::
error_code
>
connectToDaemon
();
66
q23
::
expected
<
PwCoreConnectionHandle
,
std
::
error_code
>
connectToPortal
(
int
fd);
67
68
~
QPipeWireInstance
();
69
70
private
:
71
static
std::unique_ptr<QPipeWireInstance> create();
72
QPipeWireInstance();
73
74
PWThreadedEventLoop m_eventLoop{
"PwEventLoop"
};
75
PwContextHandle m_context;
76
77
std
::optional<
bool
> m_hasScreenCastPortal;
78
};
79
80
}
// namespace QtPipeWire
81
82
QT_END_NAMESPACE
83
84
#
endif
// QPIPEWIRE_INSTANCE_P_H
QtPipeWire::QPipeWireInstance
Definition
qpipewire_instance_p.h:43
QtPipeWire::QPipeWireInstance::isLoaded
static bool isLoaded()
Definition
qpipewire_instance.cpp:70
QtPipeWire::QPipeWireInstance::isInPwThreadLoop
bool isInPwThreadLoop() const
Definition
qpipewire_instance.cpp:94
QtPipeWire::QPipeWireInstance::~QPipeWireInstance
~QPipeWireInstance()
Definition
qpipewire_instance.cpp:170
QtPipeWire::QPipeWireInstance::eventLoopLock
auto eventLoopLock()
Definition
qpipewire_instance_p.h:56
QtPipeWire::QPipeWireInstance::pwEventLoop
PWThreadedEventLoop & pwEventLoop()
Definition
qpipewire_instance_p.h:59
QtPipeWire::QPipeWireInstance::connectToPortal
q23::expected< PwCoreConnectionHandle, std::error_code > connectToPortal(int fd)
Definition
qpipewire_instance.cpp:128
QtPipeWire::QPipeWireInstance::connectToDaemon
q23::expected< PwCoreConnectionHandle, std::error_code > connectToDaemon()
Definition
qpipewire_instance.cpp:116
QtPipeWire::QPipeWireInstance::eventLoop
pw_loop * eventLoop() const
Definition
qpipewire_instance.cpp:99
QtPipeWire::QPipeWireInstance::hasSPAFactory
static q23::expected< void, std::error_code > hasSPAFactory(const char *factoryName)
Definition
qpipewire_instance.cpp:79
QtPipeWire::QPipeWireInstance::hasScreenCastPortal
bool hasScreenCastPortal()
Definition
qpipewire_instance.cpp:104
QtPipeWire::QPipeWireInstance::runWithEventLoopLock
auto runWithEventLoopLock(Closure &&c)
Definition
qpipewire_instance_p.h:51
QtPipeWire::QPipeWireInstance::instance
static std::shared_ptr< QPipeWireInstance > instance()
Definition
qpipewire_instance.cpp:58
QtPipeWire
Definition
qpipewire_async_support.cpp:10
QtPipeWire::Q_LOGGING_CATEGORY
Q_LOGGING_CATEGORY(lcPipewire, "qt.multimedia.pipewire")
QtPipeWire::Q_DECLARE_LOGGING_CATEGORY
Q_DECLARE_LOGGING_CATEGORY(lcPipewire)
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
QtPipeWire::QPipewireInitializer
Definition
qpipewire_instance_p.h:37
QtPipeWire::QPipewireInitializer::~QPipewireInitializer
~QPipewireInitializer()
Definition
qpipewire_instance.cpp:52
QtPipeWire::QPipewireInitializer::QPipewireInitializer
QPipewireInitializer()
Definition
qpipewire_instance.cpp:44
qtmultimedia
src
multimedia
pipewire
qpipewire_instance_p.h
Generated on
for Qt by
1.18.0