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

◆ process_pending_processor_operations()

void MayaFlux::Buffers::BufferProcessingChain::process_pending_processor_operations ( )
private

Process pending processor operations.

Definition at line 221 of file BufferProcessingChain.cpp.

222{
223 for (auto& m_pending_op : m_pending_ops) {
224 if (m_pending_op.active.load(std::memory_order_acquire)) {
225 auto& op = m_pending_op;
226
227 if (op.is_addition) {
228 add_processor_direct(op.processor, op.buffer);
229 } else if (op.search_all_slots) {
230 remove_processor_anywhere_direct(op.processor, op.buffer);
231 } else {
232 remove_processor_direct(op.processor, op.buffer);
233 }
234
235 op.processor.reset();
236 op.buffer.reset();
237 op.active.store(false, std::memory_order_release);
238 m_pending_count.fetch_sub(1, std::memory_order_relaxed);
239 }
240 }
241}
void remove_processor_anywhere_direct(const std::shared_ptr< BufferProcessor > &processor, const std::shared_ptr< Buffer > &buffer)
void remove_processor_direct(const std::shared_ptr< BufferProcessor > &processor, const std::shared_ptr< Buffer > &buffer)
PendingProcessorOp m_pending_ops[MAX_PENDING_PROCESSORS]
bool add_processor_direct(const std::shared_ptr< BufferProcessor > &processor, const std::shared_ptr< Buffer > &buffer, std::string *rejection_reason=nullptr)

References add_processor_direct(), m_pending_count, m_pending_ops, remove_processor_anywhere_direct(), and remove_processor_direct().

Referenced by process(), and process_non_owning().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: