Skip to content

Commit 44fb1f1

Browse files
committed
Fix selected channels parameter bug
1 parent 98a3aa2 commit 44fb1f1

4 files changed

Lines changed: 48 additions & 6 deletions

File tree

Source/Processors/Editors/GenericEditor.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,7 @@ Array<GenericEditor*> GenericEditor::getConnectedEditors()
10611061
void GenericEditor::updateSelectedStream(uint16 streamId)
10621062
{
10631063

1064-
LOGDD(getNameAndId(), " updating selected stream to ", streamId);
1064+
LOGD(getNameAndId(), " updating selected stream to ", streamId);
10651065

10661066
selectedStream = streamId;
10671067

@@ -1075,17 +1075,28 @@ void GenericEditor::updateSelectedStream(uint16 streamId)
10751075

10761076
if (param == nullptr)
10771077
continue;
1078+
1079+
//LOGD("Parameter: ", param->getName());
10781080

10791081
if (param->getScope() == Parameter::GLOBAL_SCOPE)
10801082
{
1083+
//LOGD("Global scope");
10811084
ed->setParameter(getProcessor()->getParameter(ed->getParameterName()));
10821085
}
10831086
else if (param->getScope() == Parameter::STREAM_SCOPE)
10841087
{
10851088
if (streamAvailable)
1086-
ed->setParameter(getProcessor()->getDataStream(streamId)->getParameter(param->getName()));
1089+
{
1090+
//LOGD("Stream scope");
1091+
Parameter* p2 = getProcessor()->getDataStream(streamId)->getParameter(param->getName());
1092+
ed->setParameter(p2);
1093+
}
10871094
else
1095+
{
1096+
//LOGD("Stream not available");
10881097
ed->setParameter(nullptr);
1098+
}
1099+
10891100
}
10901101

10911102
ed->updateView();

Source/Processors/GenericProcessor/GenericProcessor.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -960,6 +960,8 @@ void GenericProcessor::update()
960960

961961
p2->setChannelCount(stream->getChannelCount());
962962
p2->setDataStream(stream);
963+
//LOGD("GenericProcessor::update() Adding SelectedChannelsParameter to stream ", stream->getStreamId(), " with ", stream->getChannelCount(), " channels");
964+
963965
stream->addParameter(p2);
964966
}
965967
else if (param->getType() == Parameter::MASK_CHANNELS_PARAM)
@@ -987,10 +989,13 @@ void GenericProcessor::update()
987989
{
988990
SelectedChannelsParameter* p = (SelectedChannelsParameter*) stream->getParameter(param->getName());
989991
p->setChannelCount(stream->getChannelCount());
992+
//LOGD("GenericProcessor::update() Setting SelectedChannelsParameter channel count for ", stream->getStreamId(), " to ", stream->getChannelCount(), " channels");
993+
990994
} else if (param->getType() == Parameter::MASK_CHANNELS_PARAM)
991995
{
992996
MaskChannelsParameter* p = (MaskChannelsParameter*) stream->getParameter(param->getName());
993997
p->setChannelCount(stream->getChannelCount());
998+
994999
}
9951000
}
9961001
}
@@ -1005,6 +1010,8 @@ void GenericProcessor::update()
10051010

10061011
if (index > -1)
10071012
{
1013+
//LOGD("GenericProcessor::update() Copying savedDataStreamParameters for ", stream->getStreamId());
1014+
10081015
//std::cout << "COPYING STREAM PARAMETERS TO" << std::endl;
10091016
savedDataStreamParameters[index]->copyParametersTo(stream);
10101017
savedDataStreamParameters.remove(index);

Source/Processors/Parameter/ParameterCollection.cpp

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,14 @@ void ParameterCollection::copyParameterValuesTo(InfoObject* obj)
9292

9393
void ParameterCollection::copyParametersTo(InfoObject* obj)
9494
{
95+
int channelCount = -1;
96+
97+
if (obj->getType() == InfoObject::DATASTREAM_INFO)
98+
{
99+
DataStream* s = (DataStream*)obj;
100+
channelCount = s->getChannelCount();
101+
}
102+
95103
obj->parameters.clear();
96104

97105
for (auto parameter : parameters)
@@ -117,13 +125,21 @@ void ParameterCollection::copyParametersTo(InfoObject* obj)
117125
else if (parameter->getType() == Parameter::SELECTED_CHANNELS_PARAM)
118126
{
119127
SelectedChannelsParameter* p = (SelectedChannelsParameter*) parameter;
128+
129+
if (channelCount != -1)
130+
p->setChannelCount(channelCount);
131+
120132
obj->addParameter(new SelectedChannelsParameter(*p));
121133
setParameterOwner(p, obj);
122134

123135
}
124136
else if (parameter->getType() == Parameter::MASK_CHANNELS_PARAM)
125137
{
126138
MaskChannelsParameter* p = (MaskChannelsParameter*) parameter;
139+
140+
if (channelCount != -1)
141+
p->setChannelCount(channelCount);
142+
127143
obj->addParameter(new MaskChannelsParameter(*p));
128144
setParameterOwner(p, obj);
129145

@@ -261,10 +277,17 @@ void ParameterCollection::copyParametersFrom(InfoObject* obj)
261277

262278
void ParameterCollection::addParameter(Parameter* p)
263279
{
264-
parameters.add(p);
265-
266-
//std::cout << "Adding parameter to " << p->getStreamId() << ": " << p->getName() << std::endl;
280+
281+
if (parameterMap.find(p->getName()) != parameterMap.end()) {
282+
for (int i = 0; i < parameters.size(); i++) {
283+
if (parameters[i]->getName() == p->getName()) {
284+
parameters.remove(i);
285+
break;
286+
}
287+
}
288+
}
267289

290+
parameters.add(p);
268291
parameterMap[p->getName()] = p;
269292
}
270293

Source/Processors/Settings/InfoObject.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,6 @@ void InfoObject::copyParameters(InfoObject* object)
250250

251251
void InfoObject::addParameter(Parameter* p)
252252
{
253-
parameters.addParameter(p);
254253

255254
if (getType() == InfoObject::DATASTREAM_INFO)
256255
p->setDataStream((DataStream*) this);
@@ -260,6 +259,8 @@ void InfoObject::addParameter(Parameter* p)
260259
p->setContinuousChannel((ContinuousChannel*) this);
261260
else if (getType() == InfoObject::EVENT_CHANNEL)
262261
p->setEventChannel((EventChannel*) this);
262+
263+
parameters.addParameter(p);
263264
}
264265

265266
ChannelInfoObject::ChannelInfoObject(InfoObject::Type type, DataStream* dataStream)

0 commit comments

Comments
 (0)