summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <[email protected]>2025-07-03 09:18:51 +0800
committerTim Blechmann <[email protected]>2025-07-04 08:23:13 +0800
commitce63fb9c4e6c191cccc616219c32684cda4e41bb (patch)
tree2f8a5f54177db2a0aea29d281ae4a5a1c66c3f3a
parent7ba37d17f2f0ea9f453634aa505afd23dccec590 (diff)
Pipewire: metadata listener - clear defaults when null key receivedHEADdev
According to pipewire's documentation, setting a nullptr key clears all metadata. Fixes: QTBUG-138197 Pick-to: 6.10 Change-Id: I2f09625a6691004f5002484739217c657b4efd19 Reviewed-by: Mikko Hallamaa <[email protected]> Reviewed-by: Timur Pocheptsov <[email protected]>
-rw-r--r--src/multimedia/pipewire/qpipewire_audiocontextmanager.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/multimedia/pipewire/qpipewire_audiocontextmanager.cpp b/src/multimedia/pipewire/qpipewire_audiocontextmanager.cpp
index 7366032a6..df5275820 100644
--- a/src/multimedia/pipewire/qpipewire_audiocontextmanager.cpp
+++ b/src/multimedia/pipewire/qpipewire_audiocontextmanager.cpp
@@ -362,6 +362,13 @@ int QAudioContextManager::handleMetadata(const MetadataRecord &record)
qDebug(lcPipewireRegistry) << "metadata:" << record.key << record.type << record.value;
+ if (record.key == nullptr) {
+ // "NULL clears all metadata for the subject"
+ m_deviceMonitor->setDefaultAudioSource(QAudioDeviceMonitor::NoDefaultDevice);
+ m_deviceMonitor->setDefaultAudioSink(QAudioDeviceMonitor::NoDefaultDevice);
+ return 0;
+ }
+
auto extractName = [&]() -> std::optional<QByteArray> {
if (record.type != "Spa:String:JSON"sv)
return std::nullopt;