Resend solo nodes on mixer reconnect

This commit is contained in:
Clement 2018-11-07 11:41:04 -08:00
parent b8cb433fa1
commit 65a83cb026
3 changed files with 17 additions and 1 deletions

View file

@ -284,6 +284,11 @@ AudioClient::AudioClient() :
connect(&domainHandler, &DomainHandler::disconnectedFromDomain, this, [this] { connect(&domainHandler, &DomainHandler::disconnectedFromDomain, this, [this] {
_solo.reset(); _solo.reset();
}); });
connect(nodeList.data(), &NodeList::nodeAdded, this, [this](SharedNodePointer node) {
if (node->getType() == NodeType::AudioMixer) {
_solo.resend();
}
});
} }
AudioClient::~AudioClient() { AudioClient::~AudioClient() {

View file

@ -72,6 +72,15 @@ void AudioSolo::removeUUIDs(QVector<QUuid> uuidList) {
} }
void AudioSolo::reset() { void AudioSolo::reset() {
Lock lock(_mutex);
removeUUIDs(getUUIDs()); removeUUIDs(getUUIDs());
} }
void AudioSolo::resend() {
Lock lock(_mutex);
auto uuids = getUUIDs();
_nodesSoloed.clear();
addUUIDs(uuids);
}

View file

@ -20,7 +20,7 @@
#include <QUuid> #include <QUuid>
class AudioSolo { class AudioSolo {
using Mutex = std::mutex; using Mutex = std::recursive_mutex;
using Lock = std::unique_lock<Mutex>; using Lock = std::unique_lock<Mutex>;
public: public:
@ -30,6 +30,8 @@ public:
void removeUUIDs(QVector<QUuid> uuidList); void removeUUIDs(QVector<QUuid> uuidList);
void reset(); void reset();
void resend();
private: private:
mutable Mutex _mutex; mutable Mutex _mutex;
QSet<QUuid> _nodesSoloed; QSet<QUuid> _nodesSoloed;