summaryrefslogtreecommitdiffstats
path: root/src/mixer
diff options
context:
space:
mode:
authorxerus2000 <27jf@pm.me>2020-07-30 13:54:19 +0200
committerxerus2000 <27jf@pm.me>2020-07-31 11:43:29 +0200
commitbcc3123b506174f2c42a59a1d78759ed37cd983a (patch)
tree4e2dd012e65a29685766e7f5ba5f9cae058df4ba /src/mixer
parent16950549cff6aad58fab58c1317e6a3eb40e9b87 (diff)
PlayerManager: Identify players by ChannelHandle
Diffstat (limited to 'src/mixer')
-rw-r--r--src/mixer/basetrackplayer.cpp13
-rw-r--r--src/mixer/basetrackplayer.h2
-rw-r--r--src/mixer/deck.cpp11
-rw-r--r--src/mixer/deck.h12
-rw-r--r--src/mixer/playermanager.cpp71
-rw-r--r--src/mixer/playermanager.h15
-rw-r--r--src/mixer/previewdeck.cpp11
-rw-r--r--src/mixer/previewdeck.h12
-rw-r--r--src/mixer/sampler.cpp11
-rw-r--r--src/mixer/sampler.h2
10 files changed, 102 insertions, 58 deletions
diff --git a/src/mixer/basetrackplayer.cpp b/src/mixer/basetrackplayer.cpp
index 17978ca7bb..cd80b2c666 100644
--- a/src/mixer/basetrackplayer.cpp
+++ b/src/mixer/basetrackplayer.cpp
@@ -41,19 +41,22 @@ BaseTrackPlayerImpl::BaseTrackPlayerImpl(
EffectsManager* pEffectsManager,
VisualsManager* pVisualsManager,
EngineChannel::ChannelOrientation defaultOrientation,
- const QString& group,
+ const ChannelHandleAndGroup& handle_group,
bool defaultMaster,
bool defaultHeadphones,
bool primaryDeck)
- : BaseTrackPlayer(pParent, group),
+ : BaseTrackPlayer(pParent, handle_group.name()),
m_pConfig(pConfig),
m_pEngineMaster(pMixingEngine),
m_pLoadedTrack(),
m_replaygainPending(false),
m_pChannelToCloneFrom(nullptr) {
- ChannelHandleAndGroup channelGroup =
- pMixingEngine->registerChannelGroup(group);
- m_pChannel = new EngineDeck(channelGroup, pConfig, pMixingEngine, pEffectsManager, defaultOrientation, primaryDeck);
+ m_pChannel = new EngineDeck(handle_group,
+ pConfig,
+ pMixingEngine,
+ pEffectsManager,
+ defaultOrientation,
+ primaryDeck);
m_pInputConfigured = make_parented<ControlProxy>(getGroup(), "input_configured", this);
#ifdef __VINYLCONTROL__
diff --git a/src/mixer/basetrackplayer.h b/src/mixer/basetrackplayer.h
index d5220ca7da..2308dac8fd 100644
--- a/src/mixer/basetrackplayer.h
+++ b/src/mixer/basetrackplayer.h
@@ -58,7 +58,7 @@ class BaseTrackPlayerImpl : public BaseTrackPlayer {
EffectsManager* pEffectsManager,
VisualsManager* pVisualsManager,
EngineChannel::ChannelOrientation defaultOrientation,
- const QString& group,
+ const ChannelHandleAndGroup& handle_group,
bool defaultMaster,
bool defaultHeadphones,
bool primaryDeck);
diff --git a/src/mixer/deck.cpp b/src/mixer/deck.cpp
index 121bef0f22..09575e7e7e 100644
--- a/src/mixer/deck.cpp
+++ b/src/mixer/deck.cpp
@@ -6,8 +6,15 @@ Deck::Deck(QObject* pParent,
EffectsManager* pEffectsManager,
VisualsManager* pVisualsManager,
EngineChannel::ChannelOrientation defaultOrientation,
- const QString& group)
- : BaseTrackPlayerImpl(pParent, pConfig, pMixingEngine, pEffectsManager, pVisualsManager, defaultOrientation, group, /*defaultMaster*/ true,
+ const ChannelHandleAndGroup& handle_group)
+ : BaseTrackPlayerImpl(pParent,
+ pConfig,
+ pMixingEngine,
+ pEffectsManager,
+ pVisualsManager,
+ defaultOrientation,
+ handle_group,
+ /*defaultMaster*/ true,
/*defaultHeadphones*/ false,
/*primaryDeck*/ true) {
}
diff --git a/src/mixer/deck.h b/src/mixer/deck.h
index 62e4cf964b..76e8ae9d24 100644
--- a/src/mixer/deck.h
+++ b/src/mixer/deck.h
@@ -8,11 +8,11 @@ class Deck : public BaseTrackPlayerImpl {
Q_OBJECT
public:
Deck(QObject* pParent,
- UserSettingsPointer pConfig,
- EngineMaster* pMixingEngine,
- EffectsManager* pEffectsManager,
- VisualsManager* pVisualsManager,
- EngineChannel::ChannelOrientation defaultOrientation,
- const QString& group);
+ UserSettingsPointer pConfig,
+ EngineMaster* pMixingEngine,
+ EffectsManager* pEffectsManager,
+ VisualsManager* pVisualsManager,
+ EngineChannel::ChannelOrientation defaultOrientation,
+ const ChannelHandleAndGroup& handle_group);
~Deck() override = default;
};
diff --git a/src/mixer/playermanager.cpp b/src/mixer/playermanager.cpp
index b7d9aebf0b..cb99809f70 100644
--- a/src/mixer/playermanager.cpp
+++ b/src/mixer/playermanager.cpp
@@ -147,7 +147,7 @@ void PlayerManager::bindToLibrary(Library* pLibrary) {
// Connect the player to the analyzer queue so that loaded tracks are
// analyzed.
- foreach(PreviewDeck* pPreviewDeck, m_preview_decks) {
+ foreach (PreviewDeck* pPreviewDeck, m_previewDecks) {
connect(pPreviewDeck, SIGNAL(newTrackLoaded(TrackPointer)),
this, SLOT(slotAnalyzeTrack(TrackPointer)));
}
@@ -307,15 +307,15 @@ void PlayerManager::slotChangeNumSamplers(double v) {
void PlayerManager::slotChangeNumPreviewDecks(double v) {
QMutexLocker locker(&m_mutex);
int num = (int)v;
- if (num < m_preview_decks.size()) {
+ if (num < m_previewDecks.size()) {
// The request was invalid -- don't set the value.
kLogger.debug() << "Ignoring request to reduce the number of preview decks to" << num;
return;
}
- while (m_preview_decks.size() < num) {
+ while (m_previewDecks.size() < num) {
addPreviewDeckInner();
}
- m_pCONumPreviewDecks->setAndConfirm(m_preview_decks.size());
+ m_pCONumPreviewDecks->setAndConfirm(m_previewDecks.size());
}
void PlayerManager::slotChangeNumMicrophones(double v) {
@@ -358,8 +358,9 @@ void PlayerManager::addConfiguredDecks() {
void PlayerManager::addDeckInner() {
// Do not lock m_mutex here.
- QString group = groupForDeck(m_decks.count());
- VERIFY_OR_DEBUG_ASSERT(!m_players.contains(group)) {
+ ChannelHandleAndGroup handle_group =
+ m_pEngine->registerChannelGroup(groupForDeck(m_decks.count()));
+ VERIFY_OR_DEBUG_ASSERT(!m_players.contains(handle_group.handle())) {
return;
}
@@ -371,7 +372,7 @@ void PlayerManager::addDeckInner() {
m_pEffectsManager,
m_pVisualsManager,
deckIndex % 2 == 1 ? EngineChannel::RIGHT : EngineChannel::LEFT,
- group);
+ handle_group);
connect(pDeck->getEngineDeck(),
&EngineDeck::noPassthroughInputConfigured,
this,
@@ -388,7 +389,7 @@ void PlayerManager::addDeckInner() {
&PlayerManager::slotAnalyzeTrack);
}
- m_players[group] = pDeck;
+ m_players[handle_group.handle()] = pDeck;
m_decks.append(pDeck);
// Register the deck output with SoundManager.
@@ -405,7 +406,7 @@ void PlayerManager::addDeckInner() {
VERIFY_OR_DEBUG_ASSERT(pEqRack) {
return;
}
- pEqRack->setupForGroup(group);
+ pEqRack->setupForGroup(handle_group.name());
// BaseTrackPlayer needs to delay until we have setup the equalizer rack for
// this deck to fetch the legacy EQ controls.
@@ -418,7 +419,7 @@ void PlayerManager::addDeckInner() {
VERIFY_OR_DEBUG_ASSERT(pQuickEffectRack) {
return;
}
- pQuickEffectRack->setupForGroup(group);
+ pQuickEffectRack->setupForGroup(handle_group.name());
}
void PlayerManager::loadSamplers() {
@@ -434,17 +435,22 @@ void PlayerManager::addSampler() {
void PlayerManager::addSamplerInner() {
// Do not lock m_mutex here.
- QString group = groupForSampler(m_samplers.count());
-
- VERIFY_OR_DEBUG_ASSERT(!m_players.contains(group)) {
+ ChannelHandleAndGroup handle_group =
+ m_pEngine->registerChannelGroup(groupForSampler(m_samplers.count()));
+ VERIFY_OR_DEBUG_ASSERT(!m_players.contains(handle_group.handle())) {
return;
}
// All samplers are in the center
EngineChannel::ChannelOrientation orientation = EngineChannel::CENTER;
- Sampler* pSampler = new Sampler(this, m_pConfig, m_pEngine,
- m_pEffectsManager, m_pVisualsManager, orientation, group);
+ Sampler* pSampler = new Sampler(this,
+ m_pConfig,
+ m_pEngine,
+ m_pEffectsManager,
+ m_pVisualsManager,
+ orientation,
+ handle_group);
if (m_pTrackAnalysisScheduler) {
connect(pSampler,
&Sampler::newTrackLoaded,
@@ -452,7 +458,7 @@ void PlayerManager::addSamplerInner() {
&PlayerManager::slotAnalyzeTrack);
}
- m_players[group] = pSampler;
+ m_players[handle_group.handle()] = pSampler;
m_samplers.append(pSampler);
}
@@ -463,16 +469,22 @@ void PlayerManager::addPreviewDeck() {
void PlayerManager::addPreviewDeckInner() {
// Do not lock m_mutex here.
- QString group = groupForPreviewDeck(m_preview_decks.count());
- VERIFY_OR_DEBUG_ASSERT(!m_players.contains(group)) {
+ ChannelHandleAndGroup handle_group = m_pEngine->registerChannelGroup(
+ groupForPreviewDeck(m_previewDecks.count()));
+ VERIFY_OR_DEBUG_ASSERT(!m_players.contains(handle_group.handle())) {
return;
}
// All preview decks are in the center
EngineChannel::ChannelOrientation orientation = EngineChannel::CENTER;
- PreviewDeck* pPreviewDeck = new PreviewDeck(this, m_pConfig, m_pEngine,
- m_pEffectsManager, m_pVisualsManager, orientation, group);
+ PreviewDeck* pPreviewDeck = new PreviewDeck(this,
+ m_pConfig,
+ m_pEngine,
+ m_pEffectsManager,
+ m_pVisualsManager,
+ orientation,
+ handle_group);
if (m_pTrackAnalysisScheduler) {
connect(pPreviewDeck,
&PreviewDeck::newTrackLoaded,
@@ -480,8 +492,8 @@ void PlayerManager::addPreviewDeckInner() {
&PlayerManager::slotAnalyzeTrack);
}
- m_players[group] = pPreviewDeck;
- m_preview_decks.append(pPreviewDeck);
+ m_players[handle_group.handle()] = pPreviewDeck;
+ m_previewDecks.append(pPreviewDeck);
}
void PlayerManager::addMicrophone() {
@@ -524,12 +536,17 @@ void PlayerManager::addAuxiliaryInner() {
m_auxiliaries.append(pAuxiliary);
}
-BaseTrackPlayer* PlayerManager::getPlayer(QString group) const {
+BaseTrackPlayer* PlayerManager::getPlayer(const QString& group) const {
+ return getPlayer(m_pEngine->registerChannelGroup(group).handle());
+}
+
+BaseTrackPlayer* PlayerManager::getPlayer(const ChannelHandle& handle) const {
QMutexLocker locker(&m_mutex);
- if (m_players.contains(group)) {
- return m_players[group];
+
+ if (m_players.contains(handle)) {
+ return m_players[handle];
}
- return NULL;
+ return nullptr;
}
Deck* PlayerManager::getDeck(unsigned int deck) const {
@@ -548,7 +565,7 @@ PreviewDeck* PlayerManager::getPreviewDeck(unsigned int libPreviewPlayer) const
<< libPreviewPlayer;
return NULL;
}
- return m_preview_decks[libPreviewPlayer - 1];
+ return m_previewDecks[libPreviewPlayer - 1];
}
Sampler* PlayerManager::getSampler(unsigned int sampler) const {
diff --git a/src/mixer/playermanager.h b/src/mixer/playermanager.h
index 82a4666fd6..0af951fc84 100644
--- a/src/mixer/playermanager.h
+++ b/src/mixer/playermanager.h
@@ -6,6 +6,7 @@
#include <QObject>
#include "analyzer/trackanalysisscheduler.h"
+#include "engine/channelhandle.h"
#include "preferences/usersettings.h"
#include "track/track.h"
#include "util/parented_ptr.h"
@@ -30,8 +31,8 @@ class PlayerManagerInterface {
public:
virtual ~PlayerManagerInterface() = default;
- // Get a BaseTrackPlayer (i.e. a Deck or a Sampler) by its group
- virtual BaseTrackPlayer* getPlayer(QString group) const = 0;
+ virtual BaseTrackPlayer* getPlayer(const QString& group) const = 0;
+ virtual BaseTrackPlayer* getPlayer(const ChannelHandle& channelHandle) const = 0;
// Get the deck by its deck number. Decks are numbered starting with 1.
virtual Deck* getDeck(unsigned int player) const = 0;
@@ -84,7 +85,7 @@ class PlayerManager : public QObject, public PlayerManagerInterface {
// Returns true if the group is a deck group. If index is non-NULL,
// populates it with the deck number (1-indexed).
- static bool isDeckGroup(const QString& group, int* number=NULL);
+ static bool isDeckGroup(const QString& group, int* number = nullptr);
// Returns true if the group is a sampler group. If index is non-NULL,
// populates it with the deck number (1-indexed).
@@ -92,11 +93,13 @@ class PlayerManager : public QObject, public PlayerManagerInterface {
// Returns true if the group is a preview deck group. If index is non-NULL,
// populates it with the deck number (1-indexed).
- static bool isPreviewDeckGroup(const QString& group, int* number=NULL);
+ static bool isPreviewDeckGroup(const QString& group, int* number = nullptr);
// Get a BaseTrackPlayer (Deck, Sampler or PreviewDeck) by its group.
// Auxiliaries and microphones are not players.
BaseTrackPlayer* getPlayer(const QString& group) const override;
+ // Get a BaseTrackPlayer (Deck, Sampler or PreviewDeck) by its handle.
+ BaseTrackPlayer* getPlayer(const ChannelHandle& handle) const override;
// Get the deck by its deck number. Decks are numbered starting with 1.
Deck* getDeck(unsigned int player) const override;
@@ -263,8 +266,8 @@ class PlayerManager : public QObject, public PlayerManagerInterface {
QList<Deck*> m_decks;
QList<Sampler*> m_samplers;
- QList<PreviewDeck*> m_preview_decks;
+ QList<PreviewDeck*> m_previewDecks;
QList<Microphone*> m_microphones;
QList<Auxiliary*> m_auxiliaries;
- QMap<QString, BaseTrackPlayer*> m_players;
+ QMap<ChannelHandle, BaseTrackPlayer*> m_players;
};
diff --git a/src/mixer/previewdeck.cpp b/src/mixer/previewdeck.cpp
index c414bbb3bc..9fc8f881a9 100644
--- a/src/mixer/previewdeck.cpp
+++ b/src/mixer/previewdeck.cpp
@@ -6,8 +6,15 @@ PreviewDeck::PreviewDeck(QObject* pParent,
EffectsManager* pEffectsManager,
VisualsManager* pVisualsManager,
EngineChannel::ChannelOrientation defaultOrientation,
- QString group)
- : BaseTrackPlayerImpl(pParent, pConfig, pMixingEngine, pEffectsManager, pVisualsManager, defaultOrientation, group, /*defaultMaster*/ false,
+ const ChannelHandleAndGroup& handle_group)
+ : BaseTrackPlayerImpl(pParent,
+ pConfig,
+ pMixingEngine,
+ pEffectsManager,
+ pVisualsManager,
+ defaultOrientation,
+ handle_group,
+ /*defaultMaster*/ false,
/*defaultHeadphones*/ true,
/*primaryDeck*/ false) {
}
diff --git a/src/mixer/previewdeck.h b/src/mixer/previewdeck.h
index d1414af654..67885ec936 100644
--- a/src/mixer/previewdeck.h
+++ b/src/mixer/previewdeck.h
@@ -7,12 +7,12 @@ class PreviewDeck : public BaseTrackPlayerImpl {
Q_OBJECT
public:
PreviewDeck(QObject* pParent,
- UserSettingsPointer pConfig,
- EngineMaster* pMixingEngine,
- EffectsManager* pEffectsManager,
- VisualsManager* pVisualsManager,
- EngineChannel::ChannelOrientation defaultOrientation,
- QString group);
+ UserSettingsPointer pConfig,
+ EngineMaster* pMixingEngine,
+ EffectsManager* pEffectsManager,
+ VisualsManager* pVisualsManager,
+ EngineChannel::ChannelOrientation defaultOrientation,
+ const ChannelHandleAndGroup& handle_group);
~PreviewDeck() override = default;
};
diff --git a/src/mixer/sampler.cpp b/src/mixer/sampler.cpp
index b829d1b4c1..de03f37b71 100644
--- a/src/mixer/sampler.cpp
+++ b/src/mixer/sampler.cpp
@@ -8,8 +8,15 @@ Sampler::Sampler(QObject* pParent,
EffectsManager* pEffectsManager,
VisualsManager* pVisualsManager,
EngineChannel::ChannelOrientation defaultOrientation,
- QString group)
- : BaseTrackPlayerImpl(pParent, pConfig, pMixingEngine, pEffectsManager, pVisualsManager, defaultOrientation, group, /*defaultMaster*/ true,
+ const ChannelHandleAndGroup& handle_group)
+ : BaseTrackPlayerImpl(pParent,
+ pConfig,
+ pMixingEngine,
+ pEffectsManager,
+ pVisualsManager,
+ defaultOrientation,
+ handle_group,
+ /*defaultMaster*/ true,
/*defaultHeadphones*/ false,
/*primaryDeck*/ false) {
}
diff --git a/src/mixer/sampler.h b/src/mixer/sampler.h
index b8e2114de8..d22b0419aa 100644
--- a/src/mixer/sampler.h
+++ b/src/mixer/sampler.h
@@ -11,6 +11,6 @@ class Sampler : public BaseTrackPlayerImpl {
EffectsManager* pEffectsManager,
VisualsManager* pVisualsManager,
EngineChannel::ChannelOrientation defaultOrientation,
- QString group);
+ const ChannelHandleAndGroup& handle_group);
~Sampler() override = default;
};