Prefer LLPointer over potential for dangling LLSpatialGroup pointers.
This commit is contained in:
@@ -752,7 +752,7 @@ void LLSpatialGroup::handleChildAddition(const OctreeNode* parent, OctreeNode* c
|
||||
{
|
||||
if (child->getListenerCount() == 0)
|
||||
{
|
||||
new LLSpatialGroup(child, getSpatialPartition());
|
||||
LLPointer<LLSpatialGroup> tmp = new LLSpatialGroup(child, getSpatialPartition());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -817,7 +817,7 @@ LLSpatialPartition::LLSpatialPartition(U32 data_mask, BOOL render_by_group, U32
|
||||
mSlopRatio = 0.25f;
|
||||
mInfiniteFarClip = FALSE;
|
||||
|
||||
new LLSpatialGroup(mOctree, this);
|
||||
LLPointer<LLSpatialGroup> tmp = new LLSpatialGroup(mOctree, this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
BOOL mParticle;
|
||||
F32 mPartSize;
|
||||
F32 mVSize;
|
||||
LLSpatialGroup* mGroup;
|
||||
LLPointer<LLSpatialGroup> mGroup;
|
||||
LL_ALIGN_16(LLFace* mFace); //associated face
|
||||
F32 mDistance;
|
||||
U32 mDrawMode;
|
||||
@@ -478,7 +478,7 @@ class LLCullResult
|
||||
public:
|
||||
LLCullResult() {}
|
||||
|
||||
typedef std::vector<LLSpatialGroup*> sg_list_t;
|
||||
typedef std::vector<LLPointer<LLSpatialGroup> > sg_list_t;
|
||||
typedef std::vector<LLDrawable*> drawable_list_t;
|
||||
typedef std::vector<LLSpatialBridge*> bridge_list_t;
|
||||
typedef std::vector<LLDrawInfo*> drawinfo_list_t;
|
||||
|
||||
@@ -272,11 +272,10 @@ void LLViewerOctreeEntry::removeData(LLViewerOctreeEntryData* data)
|
||||
|
||||
mData[data->getDataType()] = NULL;
|
||||
|
||||
if(mGroup != NULL && !mData[LLDRAWABLE])
|
||||
if(!mGroup.isNull() && !mData[LLDRAWABLE])
|
||||
{
|
||||
LLViewerOctreeGroup* group = mGroup;
|
||||
mGroup->removeFromGroup(data);
|
||||
mGroup = NULL;
|
||||
group->removeFromGroup(data);
|
||||
|
||||
llassert(mBinIndex == -1);
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ private:
|
||||
|
||||
private:
|
||||
LLViewerOctreeEntryData* mData[NUM_DATA_TYPE]; //do not use LLPointer here.
|
||||
LLViewerOctreeGroup* mGroup;
|
||||
LLPointer<LLViewerOctreeGroup> mGroup;
|
||||
|
||||
//aligned members
|
||||
LL_ALIGN_16(LLVector4a mExtents[2]);
|
||||
@@ -229,6 +229,7 @@ public:
|
||||
void handleChildRemoval(const OctreeNode* parent, const OctreeNode* child) final override;
|
||||
|
||||
OctreeNode* getOctreeNode() {return mOctreeNode;}
|
||||
const OctreeNode* getOctreeNode() const { return mOctreeNode; }
|
||||
LLViewerOctreeGroup* getParent();
|
||||
|
||||
const LLVector4a* getBounds() const {return mBounds;}
|
||||
|
||||
@@ -117,6 +117,7 @@ public:
|
||||
mSeedCapMaxAttemptsBeforeLogin(MAX_SEED_CAP_ATTEMPTS_BEFORE_LOGIN),
|
||||
mSeedCapAttempts(0),
|
||||
mHttpResponderID(0),
|
||||
mLandp(NULL),
|
||||
// I'd prefer to set the LLCapabilityListener name to match the region
|
||||
// name -- it's disappointing that's not available at construction time.
|
||||
// We could instead store an LLCapabilityListener*, making
|
||||
|
||||
@@ -3459,8 +3459,9 @@ void forAllDrawables(LLCullResult::sg_iterator begin,
|
||||
{
|
||||
for (LLCullResult::sg_iterator i = begin; i != end; ++i)
|
||||
{
|
||||
OctreeGuard guard((*i)->getOctreeNode());
|
||||
for (LLSpatialGroup::element_iter j = (*i)->getDataBegin(); j != (*i)->getDataEnd(); ++j)
|
||||
LLSpatialGroup* group = (*i).get();
|
||||
OctreeGuard guard(group->getOctreeNode());
|
||||
for (LLSpatialGroup::element_iter j = group->getDataBegin(); j != group->getDataEnd(); ++j)
|
||||
{
|
||||
func((LLDrawable*)(*j)->getDrawable());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user