Delete
This commit is contained in:
parent
453003cb25
commit
4796f6f5d7
2 changed files with 32 additions and 4 deletions
|
|
@ -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<Potato::NodeInfo> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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" }
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue