From 2b334dedfdb40be4051b17fbbb4513f0fe1c90ae Mon Sep 17 00:00:00 2001 From: Mr-Wiseguy Date: Fri, 2 May 2025 06:53:42 -0400 Subject: [PATCH] Defer remaining set_text calls to prevent another race conditionresource --- src/ui/core/ui_context.cpp | 42 ++++++++++++++++++++++++---------- src/ui/core/ui_context.h | 2 +- src/ui/elements/ui_element.cpp | 17 +++++--------- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/src/ui/core/ui_context.cpp b/src/ui/core/ui_context.cpp index 40e9c8a..cff69fc 100644 --- a/src/ui/core/ui_context.cpp +++ b/src/ui/core/ui_context.cpp @@ -37,7 +37,7 @@ namespace recompui { Element* autofocus_element = nullptr; std::vector loose_elements; std::unordered_set to_update; - std::vector> to_set_text; + std::vector> to_set_text; bool captures_input = true; bool captures_mouse = true; Context(Rml::ElementDocument* document) : document(document), root_element(document) {} @@ -417,20 +417,38 @@ void recompui::ContextId::process_updates() { static_cast(cur_resource->get())->handle_event(update_event); } - std::vector> to_set_text = std::move(opened_context->to_set_text); + std::vector> to_set_text = std::move(opened_context->to_set_text); // Delete the Rml elements that are pending deletion. for (auto cur_text_update : to_set_text) { - resource_slotmap::key cur_key{ cur_text_update.first.slot_id }; - std::unique_ptr