Make sure Blacklist still works with object cache even after a TP.
parent
d640e75511
commit
50d9483aa8
|
|
@ -107,6 +107,8 @@ void FSWSAssetBlacklist::addNewItemToBlacklist(const LLUUID& id, const std::stri
|
|||
|
||||
void FSWSAssetBlacklist::removeItemFromBlacklist(const LLUUID& id)
|
||||
{
|
||||
gObjectList.removeDerenderedItem( id );
|
||||
|
||||
blacklist_data_t::iterator it;
|
||||
it = mBlacklistData.find(id);
|
||||
|
||||
|
|
@ -130,7 +132,7 @@ void FSWSAssetBlacklist::addNewItemToBlacklistData(const LLUUID& id, const LLSD&
|
|||
|
||||
addEntryToBlacklistMap(id, type);
|
||||
mBlacklistData[id] = data;
|
||||
gObjectList.addBlacklistedItem( id );
|
||||
gObjectList.addDerenderedItem( id, true );
|
||||
|
||||
if (type == LLAssetType::AT_SOUND)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2824,7 +2824,8 @@ void derenderObject(bool permanent)
|
|||
|
||||
// <FS:ND> Pass true to make sure this object stays dead.
|
||||
// gObjectList.killObject(objp);
|
||||
gObjectList.killObject(objp, true);
|
||||
gObjectList.addDerenderedItem( objp->getID(), permanent );
|
||||
gObjectList.killObject(objp);
|
||||
// </FS:ND>
|
||||
}
|
||||
else if( (objp) && (gAgentID != objp->getID()) && ((rlv_handler_t::isEnabled()) || (objp->isAttachment()) || (objp->permYouOwner())) )
|
||||
|
|
|
|||
|
|
@ -1428,8 +1428,7 @@ void LLViewerObjectList::removeDrawable(LLDrawable* drawablep)
|
|||
}
|
||||
}
|
||||
|
||||
// BOOL LLViewerObjectList::killObject(LLViewerObject *objectp)
|
||||
BOOL LLViewerObjectList::killObject(LLViewerObject *objectp, bool aForDerender )
|
||||
BOOL LLViewerObjectList::killObject(LLViewerObject *objectp)
|
||||
{
|
||||
// Don't ever kill gAgentAvatarp, just force it to the agent's region
|
||||
// unless region is NULL which is assumed to mean you are logging out.
|
||||
|
|
@ -1444,11 +1443,6 @@ BOOL LLViewerObjectList::killObject(LLViewerObject *objectp, bool aForDerender )
|
|||
|
||||
if (objectp)
|
||||
{
|
||||
// <FS:ND> Remember this object it case it comes back.
|
||||
if( aForDerender )
|
||||
mDerendered[ objectp->getID()] = LLTimer::getTotalSeconds().value();
|
||||
// </FS:ND>
|
||||
|
||||
objectp->markDead(); // does the right thing if object already dead
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -2455,13 +2449,23 @@ LLDebugBeacon::~LLDebugBeacon()
|
|||
|
||||
void LLViewerObjectList::resetDerenderList()
|
||||
{
|
||||
mDerendered.clear();
|
||||
std::map< LLUUID, bool > oDerendered;
|
||||
|
||||
for( std::map< LLUUID, bool >::iterator itr = mDerendered.begin(); itr != mDerendered.end(); ++itr )
|
||||
if( itr->second )
|
||||
oDerendered[ itr->first ] = itr->second;
|
||||
|
||||
mDerendered.swap( oDerendered );
|
||||
}
|
||||
|
||||
// <FS:ND> Helper function to add items from global blacklist after teleport.
|
||||
void LLViewerObjectList::addBlacklistedItem( LLUUID const &aId )
|
||||
void LLViewerObjectList::addDerenderedItem( LLUUID const &aId, bool aPermanent )
|
||||
{
|
||||
mDerendered[ aId ] = LLTimer::getTotalSeconds().value();
|
||||
mDerendered[ aId ] = aPermanent;
|
||||
}
|
||||
void LLViewerObjectList::removeDerenderedItem( LLUUID const &aId )
|
||||
{
|
||||
mDerendered.erase( aId );
|
||||
}
|
||||
|
||||
// </FS:ND>
|
||||
|
|
|
|||
|
|
@ -72,10 +72,7 @@ public:
|
|||
|
||||
LLViewerObject *replaceObject(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); // TomY: hack to switch VO instances on the fly
|
||||
|
||||
// <FS:ND> For blacklist/derender
|
||||
// BOOL killObject(LLViewerObject *objectp);
|
||||
BOOL killObject(LLViewerObject *objectp, bool aForDerender = false );
|
||||
// </FS:ND>
|
||||
BOOL killObject(LLViewerObject *objectp);
|
||||
|
||||
void killObjects(LLViewerRegion *regionp); // Kill all objects owned by a particular region.
|
||||
void killAllObjects();
|
||||
|
|
@ -241,10 +238,11 @@ protected:
|
|||
|
||||
// <FS:ND> Remember objects we did derender. We might get object updates for them that create new instances. In those cases we kill them again.
|
||||
private:
|
||||
std::map< LLUUID, U64 > mDerendered;
|
||||
std::map< LLUUID, bool > mDerendered;
|
||||
public:
|
||||
void resetDerenderList();
|
||||
void addBlacklistedItem( LLUUID const & );
|
||||
void addDerenderedItem( LLUUID const &, bool );
|
||||
void removeDerenderedItem( LLUUID const & );
|
||||
// </FS:ND>
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue