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

◆ detach_window()

void MayaFlux::Buffers::RootGraphicsBuffer::detach_window ( const std::shared_ptr< Core::Window > &  window)

Stop all render processors from presenting to a window.

Child buffers and non-render processors remain attached to this root.

Definition at line 454 of file RootGraphicsBuffer.cpp.

455{
456 if (!window)
457 return;
458
459 std::erase_if(m_renderable_buffers, [&window](const RenderableBufferInfo& info) {
460 return info.target_window == window;
461 });
462
463 for (const auto& buffer : m_child_buffers) {
464 if (!buffer)
465 continue;
466
467 auto chain = buffer->get_processing_chain();
468 auto remove_render = [&buffer, &chain, &window](const std::shared_ptr<RenderProcessor>& render) {
469 if (!render || render->get_target_window() != window)
470 return;
471
472 if (buffer->get_default_processor() == render) {
473 buffer->set_default_processor(nullptr);
474 return;
475 }
476
477 if (!chain)
478 return;
479
480 chain->remove_processor_anywhere(render, buffer);
481 };
482
483 if (auto render = buffer->get_render_processor())
484 remove_render(render);
485
486 for (const auto& render : buffer->get_additional_render_processors())
487 remove_render(render);
488 }
489
491}
std::shared_ptr< NetworkGeometryBuffer > buffer
BufferProcessingChain * chain
std::weak_ptr< Core::Window > window
Definition Picker.cpp:23
std::vector< std::shared_ptr< VKBuffer > > m_child_buffers
Vector of tributary buffers that contribute to this root buffer.
std::vector< RenderableBufferInfo > m_renderable_buffers
std::unordered_set< std::shared_ptr< Core::Window > > m_pending_presentation_refreshes
std::vector< std::shared_ptr< RenderProcessor > > get_additional_render_processors()
Get additional live render processors attached through the chain.
Definition VKBuffer.cpp:376

References buffer, chain, MayaFlux::Buffers::RootBuffer< VKBuffer >::m_child_buffers, m_pending_presentation_refreshes, m_renderable_buffers, MayaFlux::Buffers::RootGraphicsBuffer::RenderableBufferInfo::target_window, and window.