Fix shutdown hangs, bank bag icons/drag-drop, loading screen progress, and login spawn

- Fix shutdown hang: skip vmaDestroyAllocator (walked thousands of allocations),
  replace unsafe pthread_timedjoin_np with plain join + early-exit checks in workers
- Bank window: full icon rendering, click-and-hold pickup (0.10s), drag-drop for
  all bank slots including bank bag equip slots, same-slot drop detection
- Loading screen: process one tile per frame for live progress updates
- Camera reset: trust server position in online mode to avoid spawning under WMOs
- Fix PLAYER_BYTES/PLAYER_BYTES_2 field indices, preserve purchasedBankBagSlots
  across inventory rebuilds, fix bank slot purchase result codes
This commit is contained in:
Kelsi 2026-02-26 13:38:29 -08:00
parent 804b947203
commit a559d5944b
14 changed files with 489 additions and 146 deletions

View file

@ -726,31 +726,38 @@ bool Renderer::initialize(core::Window* win) {
}
void Renderer::shutdown() {
LOG_WARNING("Renderer::shutdown - terrainManager stopWorkers...");
if (terrainManager) {
terrainManager->unloadAll();
terrainManager->stopWorkers();
LOG_WARNING("Renderer::shutdown - terrainManager reset...");
terrainManager.reset();
}
LOG_WARNING("Renderer::shutdown - terrainRenderer...");
if (terrainRenderer) {
terrainRenderer->shutdown();
terrainRenderer.reset();
}
LOG_WARNING("Renderer::shutdown - waterRenderer...");
if (waterRenderer) {
waterRenderer->shutdown();
waterRenderer.reset();
}
LOG_WARNING("Renderer::shutdown - minimap...");
if (minimap) {
minimap->shutdown();
minimap.reset();
}
LOG_WARNING("Renderer::shutdown - worldMap...");
if (worldMap) {
worldMap->shutdown();
worldMap.reset();
}
LOG_WARNING("Renderer::shutdown - skySystem...");
if (skySystem) {
skySystem->shutdown();
skySystem.reset();
@ -772,34 +779,41 @@ void Renderer::shutdown() {
swimEffects.reset();
}
LOG_WARNING("Renderer::shutdown - characterRenderer...");
if (characterRenderer) {
characterRenderer->shutdown();
characterRenderer.reset();
}
LOG_WARNING("Renderer::shutdown - wmoRenderer...");
if (wmoRenderer) {
wmoRenderer->shutdown();
wmoRenderer.reset();
}
LOG_WARNING("Renderer::shutdown - m2Renderer...");
if (m2Renderer) {
m2Renderer->shutdown();
m2Renderer.reset();
}
LOG_WARNING("Renderer::shutdown - musicManager...");
if (musicManager) {
musicManager->shutdown();
musicManager.reset();
}
LOG_WARNING("Renderer::shutdown - footstepManager...");
if (footstepManager) {
footstepManager->shutdown();
footstepManager.reset();
}
LOG_WARNING("Renderer::shutdown - activitySoundManager...");
if (activitySoundManager) {
activitySoundManager->shutdown();
activitySoundManager.reset();
}
LOG_WARNING("Renderer::shutdown - AudioEngine...");
// Shutdown AudioEngine singleton
audio::AudioEngine::instance().shutdown();