diff options
-rw-r--r-- | indra/newview/llvovolume.cpp | 29 |
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; } } |