[Pcloud]StimProducer: Impl addAttachedStimBuffIfNotExists
Reduces code duplication, centralizes checking and enforces consistent behaviour across producers. Also reordered the writes to the sh_ptr<StimulusBuffer>s such that the pointers are written last.
This commit is contained in:
@@ -52,6 +52,28 @@ bool StimulusProducer::hasBufferWithQualeIfaceApi(
|
||||
return false;
|
||||
}
|
||||
|
||||
bool StimulusProducer::addAttachedStimulusBufferIfNotExists(
|
||||
const std::shared_ptr<StimulusBuffer>& buffer)
|
||||
{
|
||||
if (!buffer) { return false; }
|
||||
|
||||
auto it = std::find_if(
|
||||
attachedStimulusBuffers.begin(),
|
||||
attachedStimulusBuffers.end(),
|
||||
[&](const std::shared_ptr<StimulusBuffer>& buf) {
|
||||
return buf && buffer &&
|
||||
buf->deviceAttachmentSpec && buffer->deviceAttachmentSpec &&
|
||||
*(buf->deviceAttachmentSpec) == *(buffer->deviceAttachmentSpec);
|
||||
});
|
||||
|
||||
if (it != attachedStimulusBuffers.end()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
attachedStimulusBuffers.push_back(buffer);
|
||||
return true;
|
||||
}
|
||||
|
||||
void StimulusProducer::destroyAttachedStimulusBuffer(
|
||||
const std::shared_ptr<StimulusBuffer>& buffer)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user