diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index ee13c470f9..abfdd0edec 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -1468,9 +1468,9 @@ void GLGSRender::flip(int buffer) { if (m_overlay_manager->has_dirty()) { - for (const auto& uid : m_overlay_manager->get_dirty()) + for (const auto& view : m_overlay_manager->get_dirty()) { - m_ui_renderer.remove_temp_resources(uid); + m_ui_renderer.remove_temp_resources(view->uid); } m_overlay_manager->clear_dirty(); diff --git a/rpcs3/Emu/RSX/Overlays/overlays.h b/rpcs3/Emu/RSX/Overlays/overlays.h index fae7ce41d5..d774bad781 100644 --- a/rpcs3/Emu/RSX/Overlays/overlays.h +++ b/rpcs3/Emu/RSX/Overlays/overlays.h @@ -169,7 +169,7 @@ namespace rsx private: atomic_t m_uid_ctr { 0u }; std::vector> m_iface_list; - std::vector m_uids_to_clean; + std::vector> m_dirty_list; public: display_manager() {} @@ -189,7 +189,7 @@ namespace rsx if (It->get()->type_index == e->type_index) { // Replace - m_uids_to_clean.push_back(It->get()->uid); + m_dirty_list.push_back(std::move(*It)); It->reset(e); entry.reset(); return e; @@ -215,8 +215,8 @@ namespace rsx const auto e = It->get(); if (e->uid == uid) { + m_dirty_list.push_back(std::move(*It)); m_iface_list.erase(It); - m_uids_to_clean.push_back(uid); return true; } } @@ -232,6 +232,7 @@ namespace rsx { if (It->get()->type_index == type_id) { + m_dirty_list.push_back(std::move(*It)); It = m_iface_list.erase(It); } else @@ -250,7 +251,7 @@ namespace rsx // True if any elements have been deleted but their resources may not have been cleaned up bool has_dirty() const { - return !m_uids_to_clean.empty(); + return !m_dirty_list.empty(); } const std::vector>& get_views() const @@ -258,14 +259,14 @@ namespace rsx return m_iface_list; } - const std::vector& get_dirty() const + const std::vector>& get_dirty() const { - return m_uids_to_clean; + return m_dirty_list; } void clear_dirty() { - m_uids_to_clean.clear(); + m_dirty_list.clear(); } user_interface* get(u32 uid) const diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index ff88ed2d90..41e2874faf 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -2028,9 +2028,9 @@ void VKGSRender::process_swap_request(frame_context_t *ctx, bool free_resources) if (m_overlay_manager && m_overlay_manager->has_dirty()) { - for (const auto& uid : m_overlay_manager->get_dirty()) + for (const auto& view : m_overlay_manager->get_dirty()) { - m_ui_renderer->remove_temp_resources(uid); + m_ui_renderer->remove_temp_resources(view->uid); } m_overlay_manager->clear_dirty();