FIRE-19956: Resolve the conflict of temporarily derendered objects still being part of the blacklist and shown in the floater when they were internally removed from the derendered object list after TP

meow-7.2.2
Ansariel 2016-08-27 16:03:31 +02:00
parent c0d00b60dc
commit 7a08bb3f11
1 changed files with 13 additions and 4 deletions

View File

@ -2422,16 +2422,25 @@ LLDebugBeacon::~LLDebugBeacon()
}
// <FS:ND> Helper function to purge the internal list of derendered objects on teleport.
void LLViewerObjectList::resetDerenderList()
{
std::map< LLUUID, bool > oDerendered;
uuid_vec_t removed_ids;
for( std::map< LLUUID, bool >::iterator itr = mDerendered.begin(); itr != mDerendered.end(); ++itr )
if( itr->second )
oDerendered[ itr->first ] = itr->second;
for (std::map< LLUUID, bool >::iterator itr = mDerendered.begin(); itr != mDerendered.end(); ++itr)
{
if (itr->second)
{
oDerendered[itr->first] = itr->second;
}
else
{
removed_ids.push_back(itr->first);
}
}
mDerendered.swap( oDerendered );
FSAssetBlacklist::instance().removeItemsFromBlacklist(removed_ids);
}
// <FS:ND> Helper function to add items from global blacklist after teleport.