MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ queue_pending_processor_op()

bool MayaFlux::Buffers::BufferProcessingChain::queue_pending_processor_op ( const std::shared_ptr< BufferProcessor > &  processor,
const std::shared_ptr< Buffer > &  buffer,
bool  is_addition,
std::string *  rejection_reason = nullptr 
)
private

Definition at line 398 of file BufferProcessingChain.cpp.

399{
400 for (auto& m_pending_op : m_pending_ops) {
401 bool expected = false;
402 if (m_pending_op.active.compare_exchange_strong(
403 expected, true,
404 std::memory_order_acquire,
405 std::memory_order_relaxed)) {
406
407 m_pending_op.processor = processor;
408 m_pending_op.buffer = buffer;
409 m_pending_op.is_addition = is_addition;
410 m_pending_count.fetch_add(1, std::memory_order_relaxed);
411 return true;
412 }
413 }
414
415 if (rejection_reason && is_addition) {
416 *rejection_reason = "Processor operation queue full";
417 }
418 return false;
419}
PendingProcessorOp m_pending_ops[MAX_PENDING_PROCESSORS]

References m_pending_count, and m_pending_ops.

Referenced by add_processor(), and remove_processor().

+ Here is the caller graph for this function: