aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client
diff options
context:
space:
mode:
authorMrTheShy <49885496+MrTheShy@users.noreply.github.com>2026-03-09 00:36:56 +0100
committerGitHub <noreply@github.com>2026-03-08 18:36:56 -0500
commit3c52436c08607ca4a52b38a6dbdd195c398b879c (patch)
tree805314d30a41aa54acdfa6db87f14fc84c773010 /Minecraft.Client
parent28614b922fb77149a54da1a87bebfbc98736f296 (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.
Diffstat (limited to 'Minecraft.Client')
-rw-r--r--Minecraft.Client/Common/UI/UIController.cpp47
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");