From 53eb7af1b7920d32618318b457b103aef60ce4eb Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sat, 26 Jun 2021 13:53:38 -0400 Subject: [PATCH] Fix H-uru/Plasma#941. Fixes a reference counting issue that prevents non-DirectXCompressed mipmaps from being used in GUI Lists (eg as icons for avatar clothing). All future clothing PRPs produced by CreateClothingPRP.py will depend on this change. --- .../FeatureLib/pfGameGUIMgr/pfGUIListElement.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.cpp b/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.cpp index 031fab5c..bbb6e1d8 100644 --- a/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.cpp +++ b/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIListElement.cpp @@ -216,16 +216,17 @@ pfGUIListPicture::pfGUIListPicture( plKey mipKey, hsBool respectAlpha ) : pfGUIL fMipmapKey = mipKey; fRespectAlpha = respectAlpha; - plMipmap *mip = plMipmap::ConvertNoRef( fMipmapKey->ObjectIsLoaded() ); - if( mip != nil && mip->IsCompressed() ) + plMipmap* mip = plMipmap::ConvertNoRef(fMipmapKey->ObjectIsLoaded()); + if (mip != nil && mip->IsCompressed()) { // Gotta make and grab an uncompressed one - plMipmap *uncompBuffer = hsCodecManager::Instance().CreateUncompressedMipmap( mip, hsCodecManager::k32BitDepth ); + plMipmap* uncompBuffer = hsCodecManager::Instance().CreateUncompressedMipmap(mip, hsCodecManager::k32BitDepth); char str[ 512 ]; sprintf( str, "%s_uncomp", mip->GetKeyName() ); - fMipmapKey = hsgResMgr::ResMgr()->NewKey( str, uncompBuffer, fMipmapKey->GetUoid().GetLocation() ); - fMipmapKey->RefObject(); + fMipmapKey = hsgResMgr::ResMgr()->NewKey(str, uncompBuffer, fMipmapKey->GetUoid().GetLocation()); } + + fMipmapKey->RefObject(); } pfGUIListPicture::~pfGUIListPicture()