Fix virtual nodes

This commit is contained in:
Joey Yakimowich-Payne 2026-01-30 07:30:51 -07:00
commit 1dd4ef7327
7 changed files with 113 additions and 22 deletions

View file

@ -339,6 +339,8 @@ void Client::Impl::RegistryGlobal(void* data,
info.application_name = LookupString(props, PW_KEY_APP_NAME);
info.process_binary = LookupString(props, PW_KEY_APP_PROCESS_BINARY);
info.media_role = LookupString(props, PW_KEY_MEDIA_ROLE);
std::string virt_str = LookupString(props, PW_KEY_NODE_VIRTUAL);
info.is_virtual = (virt_str == "true");
impl->nodes[id] = info;
impl->CheckRulesForNode(info);
return;
@ -1098,7 +1100,13 @@ Result<std::vector<NodeInfo>> Client::ListNodes() {
std::vector<NodeInfo> items;
items.reserve(impl_->nodes.size());
for (const auto& entry : impl_->nodes) {
items.push_back(entry.second);
NodeInfo info = entry.second;
if (!info.is_virtual &&
impl_->virtual_streams.find(entry.first) !=
impl_->virtual_streams.end()) {
info.is_virtual = true;
}
items.push_back(std::move(info));
}
return {Status::Ok(), std::move(items)};
}