Remove a buffer from this processor and its target window.
Processor-wide pipeline and window state remain active for other buffers.
1002{
1003 auto vk_buffer = std::dynamic_pointer_cast<VKBuffer>(
buffer);
1004 if (!vk_buffer)
1005 return;
1006
1008
1010 bool has_other_pipeline = false;
1011 for (
const auto& [
id,
window] : vk_buffer->get_render_pipelines()) {
1013 has_other_pipeline = true;
1014 break;
1015 }
1016 }
1017
1018 if (!has_other_pipeline) {
1019 auto primary = vk_buffer->get_render_processor();
1020 has_other_pipeline = primary && primary.get() != this
1022
1023 if (!has_other_pipeline) {
1024 for (const auto& render : vk_buffer->get_additional_render_processors()) {
1025 if (render.get() !=
this && render->get_target_window() ==
m_target_window) {
1026 has_other_pipeline = true;
1027 break;
1028 }
1029 }
1030 }
1031 }
1032
1033 if (!has_other_pipeline)
1035 }
1036
1040}
std::shared_ptr< NetworkGeometryBuffer > buffer
std::weak_ptr< Core::Window > window
Portal::Graphics::RenderPipelineID m_pipeline_id
std::unordered_map< std::shared_ptr< VKBuffer >, BufferState > m_buffer_info
std::shared_ptr< Core::Window > m_target_window
std::vector< const VKBuffer * > m_hidden_buffers
Non-owning exceptions to default visibility, removed on detach.
void on_detach(const std::shared_ptr< Buffer > &buffer) override
Called when this processor is detached from a buffer.