MayaFlux 0.2.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 380 of file BufferProcessingChain.cpp.

381{
382 for (auto& m_pending_op : m_pending_ops) {
383 bool expected = false;
384 if (m_pending_op.active.compare_exchange_strong(
385 expected, true,
386 std::memory_order_acquire,
387 std::memory_order_relaxed)) {
388
389 m_pending_op.processor = processor;
390 m_pending_op.buffer = buffer;
391 m_pending_op.is_addition = is_addition;
392 m_pending_count.fetch_add(1, std::memory_order_relaxed);
393 return true;
394 }
395 }
396
397 if (rejection_reason && is_addition) {
398 *rejection_reason = "Processor operation queue full";
399 }
400 return false;
401}
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: