[UI] Fixed issues with ImGui on Vulkan and few ASAN issues related to ImGui

- Simplified handling of notifications to faster version with ranges
- Removed usage of STB sprintf on checked due to ASAN violation
- Draw ImGui windows only when they're not in close_pending state
This commit is contained in:
Gliniak
2025-10-13 22:08:52 +02:00
parent f7ed633960
commit e27b1d1cb5
8 changed files with 40 additions and 36 deletions

View File

@@ -1459,7 +1459,11 @@ void EmulatorWindow::ToggleProfilesConfigDialog() {
} else {
disable_hotkeys_ = false;
emulator_->kernel_state()->BroadcastNotification(kXNotificationSystemUI, 0);
profile_config_dialog_.reset();
if (profile_config_dialog_->IsClosing()) {
profile_config_dialog_.release();
} else {
profile_config_dialog_.reset();
}
emulator_->kernel_state()->xam_state()->xam_dialogs_shown_--;
}
}

View File

@@ -168,6 +168,16 @@ void ProfileConfigDialog::OnDraw(ImGuiIO& io) {
return;
}
// For whatever reason dialog wasn't opened. It's probably in closing state.
// We need to handle it here before it will make icons allocation.
if (!dialog_open) {
ImGui::CloseCurrentPopup();
Close();
ImGui::End();
emulator_window_->ToggleProfilesConfigDialog();
return;
}
if (profiles->empty()) {
ImGui::TextUnformatted("No profiles found!");
ImGui::Spacing();
@@ -291,11 +301,6 @@ void ProfileConfigDialog::OnDraw(ImGuiIO& io) {
}
ImGui::End();
if (!dialog_open) {
emulator_window_->ToggleProfilesConfigDialog();
return;
}
}
} // namespace app