11 #include "context_p.h"
18 Server::Server(Context *context)
20 , d(new ServerPrivate(this))
24 connect(&context->d->m_sinks, &MapBaseQObject::added,
this, &Server::updateDefaultDevices);
25 connect(&context->d->m_sinks, &MapBaseQObject::removed,
this, &Server::updateDefaultDevices);
26 connect(&context->d->m_sources, &MapBaseQObject::added,
this, &Server::updateDefaultDevices);
27 connect(&context->d->m_sources, &MapBaseQObject::removed,
this, &Server::updateDefaultDevices);
34 ServerPrivate::ServerPrivate(Server *q)
36 , m_defaultSink(nullptr)
37 , m_defaultSource(nullptr)
41 ServerPrivate::~ServerPrivate()
45 Sink *Server::defaultSink()
const
47 return d->m_defaultSink;
50 void Server::setDefaultSink(Sink *sink)
53 Context::instance()->setDefaultSink(sink->name());
56 Source *Server::defaultSource()
const
58 return d->m_defaultSource;
61 void Server::setDefaultSource(Source *source)
64 Context::instance()->setDefaultSource(source->name());
69 if (d->m_defaultSink) {
70 d->m_defaultSink =
nullptr;
71 Q_EMIT defaultSinkChanged(d->m_defaultSink);
74 if (d->m_defaultSource) {
75 d->m_defaultSource =
nullptr;
76 Q_EMIT defaultSourceChanged(d->m_defaultSource);
80 void ServerPrivate::update(
const pa_server_info *info)
87 if (isPw != m_isPipeWire) {
89 Q_EMIT q->isPipeWireChanged();
92 q->updateDefaultDevices();
96 template<
typename Type,
typename Vector>
103 for (Type *t : vector) {
105 if (out->name() == name) {
109 qCWarning(PULSEAUDIOQT) <<
"No object for name" <<
name;
113 void Server::updateDefaultDevices()
115 Sink *sink = findByName<Sink>(Context::instance()->d->m_sinks.data(), d->m_defaultSinkName);
116 Source *source = findByName<Source>(Context::instance()->d->m_sources.data(), d->m_defaultSourceName);
118 if (d->m_defaultSink != sink) {
119 qCDebug(PULSEAUDIOQT) <<
"Default sink changed" << sink;
120 d->m_defaultSink = sink;
121 Q_EMIT defaultSinkChanged(d->m_defaultSink);
124 if (d->m_defaultSource != source) {
125 qCDebug(PULSEAUDIOQT) <<
"Default source changed" << source;
126 d->m_defaultSource = source;
127 Q_EMIT defaultSourceChanged(d->m_defaultSource);
131 bool Server::isPipeWire()
const
133 return d->m_isPipeWire;