diff options
| author | MrTheShy <49885496+MrTheShy@users.noreply.github.com> | 2026-03-09 00:36:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-08 18:36:56 -0500 |
| commit | 3c52436c08607ca4a52b38a6dbdd195c398b879c (patch) | |
| tree | 805314d30a41aa54acdfa6db87f14fc84c773010 | |
| parent | 28614b922fb77149a54da1a87bebfbc98736f296 (diff) | |
Fix crash when launching at 720p or lower resolutions (#981)
The HD skin libraries (skinHD.swf, skinHDHud.swf, etc.) are loaded
unconditionally on Win64/Durango/Orbis, and they import the Iggy
library "platformskinHD.swf" by name. However, the platform skin
path and registration name were gated behind a runtime resolution
check (m_fScreenHeight > 720.0f), so at exactly 720p the skin was
registered as "platformskin.swf" instead, and below 720p the non-HD
.swf file was loaded entirely. This caused Iggy to fail resolving
the import, which cascaded into a failed scene load and hit a
__debugbreak().
Always use the HD platform skin on these platforms since the HD
libraries that depend on it are always loaded regardless of
resolution. PS3/PSVita are unaffected as they have their own
non-HD skin loading path.
| -rw-r--r-- | Minecraft.Client/Common/UI/UIController.cpp | 47 |
1 files changed, 14 insertions, 33 deletions
diff --git a/Minecraft.Client/Common/UI/UIController.cpp b/Minecraft.Client/Common/UI/UIController.cpp index e64808fc..205a4f0b 100644 --- a/Minecraft.Client/Common/UI/UIController.cpp +++ b/Minecraft.Client/Common/UI/UIController.cpp @@ -529,43 +529,24 @@ void UIController::loadSkins() #elif defined __PSVITA__ platformSkinPath = L"skinVita.swf"; #elif defined _WINDOWS64 - if(m_fScreenHeight>720.0f) - { - platformSkinPath = L"skinHDWin.swf"; - } - else - { - platformSkinPath = L"skinWin.swf"; - } + // Windows64/Durango/Orbis always load HD skin libraries unconditionally, + // which import "platformskinHD.swf" by name. The platform skin must + // therefore always be the HD variant regardless of screen resolution. + platformSkinPath = L"skinHDWin.swf"; #elif defined _DURANGO - if(m_fScreenHeight>720.0f) - { - platformSkinPath = L"skinHDDurango.swf"; - } - else - { - platformSkinPath = L"skinDurango.swf"; - } + platformSkinPath = L"skinHDDurango.swf"; #elif defined __ORBIS__ - if(m_fScreenHeight>720.0f) - { - platformSkinPath = L"skinHDOrbis.swf"; - } - else - { - platformSkinPath = L"skinOrbis.swf"; - } + platformSkinPath = L"skinHDOrbis.swf"; #endif - // Every platform has one of these, so nothing shared - if(m_fScreenHeight>720.0f) - { - m_iggyLibraries[eLibrary_Platform] = loadSkin(platformSkinPath, L"platformskinHD.swf"); - } - else - { - m_iggyLibraries[eLibrary_Platform] = loadSkin(platformSkinPath, L"platformskin.swf"); - } + // Every platform has one of these, so nothing shared. + // On HD platforms (Win64/Durango/Orbis) the skin libraries always import + // "platformskinHD.swf", so we must register under that name at any resolution. +#if defined(_WINDOWS64) || defined(_DURANGO) || defined(__ORBIS__) + m_iggyLibraries[eLibrary_Platform] = loadSkin(platformSkinPath, L"platformskinHD.swf"); +#else + m_iggyLibraries[eLibrary_Platform] = loadSkin(platformSkinPath, L"platformskin.swf"); +#endif #if defined(__PS3__) || defined(__PSVITA__) m_iggyLibraries[eLibrary_GraphicsDefault] = loadSkin(L"skinGraphics.swf", L"skinGraphics.swf"); |
