Mercurial > hg > svcore
diff base/PlayParameterRepository.cpp @ 1751:77543124651b by-id
Overhaul PlayParameters bits
author | Chris Cannam |
---|---|
date | Thu, 04 Jul 2019 18:04:21 +0100 |
parents | 52705a328b34 |
children |
line wrap: on
line diff
--- a/base/PlayParameterRepository.cpp Thu Jul 04 14:30:48 2019 +0100 +++ b/base/PlayParameterRepository.cpp Thu Jul 04 18:04:21 2019 +0100 @@ -17,8 +17,6 @@ #include "PlayParameters.h" #include "Playable.h" -#include "ById.h" - #include <iostream> PlayParameterRepository * @@ -35,24 +33,14 @@ } void -PlayParameterRepository::addPlayable(int playableId) +PlayParameterRepository::addPlayable(int playableId, const Playable *playable) { -// cerr << "PlayParameterRepository:addPlayable playable = " << playable << endl; - if (!getPlayParameters(playableId)) { - - auto playable = AnyById::getAs<Playable>(playableId); - if (!playable) { - SVCERR << "ERROR: id passed to PlayParameterRepository::addPlayable is not that of a Playable" << endl; - return; - } // Give all playables the same type of play parameters for the // moment -// cerr << "PlayParameterRepository:addPlayable: Adding play parameters for " << playable << endl; - - PlayParameters *params = new PlayParameters; + auto params = std::make_shared<PlayParameters>(); m_playParameters[playableId] = params; params->setPlayClipId @@ -61,14 +49,11 @@ params->setPlayAudible (playable->getDefaultPlayAudible()); - connect(params, SIGNAL(playParametersChanged()), + connect(params.get(), SIGNAL(playParametersChanged()), this, SLOT(playParametersChanged())); - connect(params, SIGNAL(playClipIdChanged(QString)), + connect(params.get(), SIGNAL(playClipIdChanged(QString)), this, SLOT(playClipIdChanged(QString))); - -// cerr << "Connected play parameters " << params << " for playable " -// << playable << " to this " << this << endl; } } @@ -76,10 +61,8 @@ PlayParameterRepository::removePlayable(int playableId) { if (m_playParameters.find(playableId) == m_playParameters.end()) { - SVCERR << "WARNING: PlayParameterRepository::removePlayable: unknown playable " << playableId << endl; return; } - delete m_playParameters[playableId]; m_playParameters.erase(playableId); } @@ -91,13 +74,13 @@ return; } if (!getPlayParameters(to)) { - cerr << "WARNING: PlayParameterRepository::copyParameters: target playable unknown, adding it now" << endl; - addPlayable(to); + cerr << "ERROR: PlayParameterRepository::copyParameters: target playable unknown" << endl; + return; } - getPlayParameters(to)->copyFrom(getPlayParameters(from)); + getPlayParameters(to)->copyFrom(getPlayParameters(from).get()); } -PlayParameters * +std::shared_ptr<PlayParameters> PlayParameterRepository::getPlayParameters(int playableId) { if (m_playParameters.find(playableId) == m_playParameters.end()) { @@ -110,17 +93,21 @@ PlayParameterRepository::playParametersChanged() { PlayParameters *params = dynamic_cast<PlayParameters *>(sender()); - emit playParametersChanged(params); + for (auto i: m_playParameters) { + if (i.second.get() == params) { + emit playParametersChanged(i.first); + return; + } + } } void PlayParameterRepository::playClipIdChanged(QString id) { PlayParameters *params = dynamic_cast<PlayParameters *>(sender()); - for (PlayableParameterMap::iterator i = m_playParameters.begin(); - i != m_playParameters.end(); ++i) { - if (i->second == params) { - emit playClipIdChanged(i->first, id); + for (auto i: m_playParameters) { + if (i.second.get() == params) { + emit playClipIdChanged(i.first, id); return; } } @@ -129,18 +116,14 @@ void PlayParameterRepository::clear() { -// cerr << "PlayParameterRepository: PlayParameterRepository::clear" << endl; - while (!m_playParameters.empty()) { - delete m_playParameters.begin()->second; - m_playParameters.erase(m_playParameters.begin()); - } + m_playParameters.clear(); } -PlayParameterRepository::EditCommand::EditCommand(PlayParameters *params) : +PlayParameterRepository::EditCommand::EditCommand(std::shared_ptr<PlayParameters> params) : m_params(params) { - m_from.copyFrom(m_params); - m_to.copyFrom(m_params); + m_from.copyFrom(m_params.get()); + m_to.copyFrom(m_params.get()); } void