diff --git a/indra/newview/rlvdefines.h b/indra/newview/rlvdefines.h index 5f681a430c..02ab5b8985 100644 --- a/indra/newview/rlvdefines.h +++ b/indra/newview/rlvdefines.h @@ -307,9 +307,10 @@ enum ERlvExceptionCheck enum ERlvLockMask { - RLV_LOCK_ADD = 0x01, - RLV_LOCK_REMOVE = 0x02, - RLV_LOCK_ANY = RLV_LOCK_ADD | RLV_LOCK_REMOVE + RLV_LOCK_NONE = 0x00, + RLV_LOCK_ADD = 0x01, + RLV_LOCK_REMOVE = 0x02, + RLV_LOCK_ANY = RLV_LOCK_ADD | RLV_LOCK_REMOVE }; enum ERlvWearMask diff --git a/indra/newview/rlvlocks.cpp b/indra/newview/rlvlocks.cpp index f9ba91e049..b7ac55da32 100644 --- a/indra/newview/rlvlocks.cpp +++ b/indra/newview/rlvlocks.cpp @@ -941,7 +941,7 @@ protected: // Checked: 2011-03-28 (RLVa-1.3.0g) | Modified: RLVa-1.3.0g RlvFolderLocks::RlvFolderLocks() - : m_fLookupDirty(false), m_fLockedRoot(false), m_cntLockAdd(0), m_cntLockRem(0) + : m_fLookupDirty(false), m_RootLockType(RLV_LOCK_NONE), m_cntLockAdd(0), m_cntLockRem(0) { LLOutfitObserver::instance().addCOFChangedCallback(boost::bind(&RlvFolderLocks::onNeedsLookupRefresh, this)); RlvInventory::instance().addSharedRootIDChangedCallback(boost::bind(&RlvFolderLocks::onNeedsLookupRefresh, this)); @@ -1193,7 +1193,7 @@ bool RlvFolderLocks::isLockedFolder(LLUUID idFolder, ERlvLockMask eLockTypeMask, idFolderCur = (pParent) ? pParent->getParentUUID() : idFolderRoot; } // If we didn't encounter an explicit deny lock with no exception then the folder is locked if the entire inventory is locked down - return (m_fLockedRoot) && (eSourceTypeMask & ST_ROOTFOLDER) && (idsRlvObjRem.empty()) && (idsRlvObjAdd.empty()); + return (m_RootLockType & eLockTypeMask) && (eSourceTypeMask & ST_ROOTFOLDER) && (idsRlvObjRem.empty()) && (idsRlvObjAdd.empty()); } // Checked: 2010-11-30 (RLVa-1.3.0b) | Added: RLVa-1.3.0b @@ -1209,7 +1209,7 @@ void RlvFolderLocks::refreshLockedLookups() const // // Refresh locked folders // - m_fLockedRoot = false; + m_RootLockType = RLV_LOCK_NONE; m_LockedFolderMap.clear(); for (folderlock_list_t::const_iterator itFolderLock = m_FolderLocks.begin(); itFolderLock != m_FolderLocks.end(); ++itFolderLock) { @@ -1223,8 +1223,8 @@ void RlvFolderLocks::refreshLockedLookups() const const LLViewerInventoryCategory* pFolder = lockedFolders.at(idxFolder); if (idFolderRoot != pFolder->getUUID()) m_LockedFolderMap.insert(std::pair(pFolder->getUUID(), pLockDescr)); - else - m_fLockedRoot |= (SCOPE_SUBTREE == pLockDescr->eLockScope); + else if (SCOPE_SUBTREE == pLockDescr->eLockScope) + m_RootLockType |= (U32)pLockDescr->eLockType; } } } diff --git a/indra/newview/rlvlocks.h b/indra/newview/rlvlocks.h index 3643845f91..61ab0acbb0 100644 --- a/indra/newview/rlvlocks.h +++ b/indra/newview/rlvlocks.h @@ -376,11 +376,11 @@ protected: // Cached item look-up variables typedef std::multimap folderlock_map_t; - mutable bool m_fLookupDirty; - mutable bool m_fLockedRoot; - mutable uuid_vec_t m_LockedAttachmentRem; - mutable folderlock_map_t m_LockedFolderMap; - mutable uuid_vec_t m_LockedWearableRem; + mutable bool m_fLookupDirty; + mutable U32 m_RootLockType; + mutable uuid_vec_t m_LockedAttachmentRem; + mutable folderlock_map_t m_LockedFolderMap; + mutable uuid_vec_t m_LockedWearableRem; private: friend class LLSingleton; };