summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llvovolume.cpp29
1 files changed, 19 insertions, 10 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 9b0d9f4a7b..c1ecfd07c1 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -266,9 +266,10 @@ void LLVOVolume::markDead()
{
mSculptTexture->removeVolume(LLRender::SCULPT_TEX, this);
}
- if (hasLightTexture())
+
+ if (mLightTexture.notNull())
{
- getLightTexture()->removeVolume(LLRender::LIGHT_TEX, this);
+ mLightTexture->removeVolume(LLRender::LIGHT_TEX, this);
}
}
@@ -2850,8 +2851,8 @@ void LLVOVolume::setLightTextureID(LLUUID id)
{
setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE, TRUE, true);
}
- else
- {
+ else if (old_texturep)
+ {
old_texturep->removeVolume(LLRender::LIGHT_TEX, this);
}
LLLightImageParams* param_block = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE);
@@ -2860,17 +2861,25 @@ void LLVOVolume::setLightTextureID(LLUUID id)
param_block->setLightTexture(id);
parameterChanged(LLNetworkData::PARAMS_LIGHT_IMAGE, true);
}
- getLightTexture()->addVolume(LLRender::LIGHT_TEX, this); // new texture
+ LLViewerTexture* tex = getLightTexture();
+ if (tex)
+ {
+ tex->addVolume(LLRender::LIGHT_TEX, this); // new texture
+ }
+ else
+ {
+ LL_WARNS() << "Can't get light texture for ID " << id.asString() << LL_ENDL;
+ }
}
- else
+ else if (hasLightTexture())
{
- if (hasLightTexture())
+ if (old_texturep)
{
old_texturep->removeVolume(LLRender::LIGHT_TEX, this);
- setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE, FALSE, true);
- parameterChanged(LLNetworkData::PARAMS_LIGHT_IMAGE, true);
- mLightTexture = NULL;
}
+ setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE, FALSE, true);
+ parameterChanged(LLNetworkData::PARAMS_LIGHT_IMAGE, true);
+ mLightTexture = NULL;
}
}