From 4796f6f5d72a15ef65acb66c7fa274a0d9cdb5eb Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Wed, 28 Jan 2026 12:28:28 -0700 Subject: [PATCH] Delete --- src/gui/GraphEditorWidget.cpp | 35 ++++++++++++++++++++++++++--- src/pipewire/pipewirecontroller.cpp | 1 - 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/gui/GraphEditorWidget.cpp b/src/gui/GraphEditorWidget.cpp index 86e0bdf..57f4505 100644 --- a/src/gui/GraphEditorWidget.cpp +++ b/src/gui/GraphEditorWidget.cpp @@ -78,6 +78,8 @@ class DeleteVirtualNodeCommand : public QUndoCommand { public: struct VirtualNodeData { + uint32_t pipewireNodeId; + QtNodes::NodeId qtNodeId; QString name; QString description; Potato::MediaClass mediaClass; @@ -109,6 +111,8 @@ public: } VirtualNodeData data; + data.pipewireNodeId = info->id; + data.qtNodeId = nodeId; data.name = info->name; data.description = info->description; data.mediaClass = info->mediaClass; @@ -166,13 +170,38 @@ public: return; } + auto *controller = m_widget->m_controller; PipeWireGraphModel *model = m_widget->m_model; - if (!model) { + if (!controller || !model) { return; } - for (const auto nodeId : m_nodeIds) { - model->deleteNode(nodeId); + for (int i = 0; i < m_virtualNodes.size(); ++i) { + VirtualNodeData &data = m_virtualNodes[i]; + + const Potato::NodeInfo *nodeInfo = model->nodeInfo(data.qtNodeId); + if (nodeInfo && nodeInfo->type == Potato::NodeType::Virtual) { + controller->destroyVirtualNode(data.pipewireNodeId); + } else { + const QVector nodes = controller->nodes(); + for (const auto &node : nodes) { + if (node.name == data.name && node.type == Potato::NodeType::Virtual) { + data.pipewireNodeId = node.id; + + const auto allNodes = model->allNodeIds(); + for (const auto qtId : allNodes) { + const Potato::NodeInfo *info = model->nodeInfo(qtId); + if (info && info->id == node.id) { + data.qtNodeId = qtId; + break; + } + } + + controller->destroyVirtualNode(node.id); + break; + } + } + } } } diff --git a/src/pipewire/pipewirecontroller.cpp b/src/pipewire/pipewirecontroller.cpp index 9c03aaf..5098dd6 100644 --- a/src/pipewire/pipewirecontroller.cpp +++ b/src/pipewire/pipewirecontroller.cpp @@ -104,7 +104,6 @@ bool PipeWireController::createVirtualDevice(const QString &name, { PW_KEY_MEDIA_CLASS, mediaClass }, { PW_KEY_AUDIO_CHANNELS, channelsBytes.constData() }, { PW_KEY_AUDIO_RATE, rateBytes.constData() }, - { "object.linger", "true" }, { PW_KEY_APP_NAME, "Potato-Manager" } };