Merge Firestorm LGPL tip

meow-7.2.2
Ansariel 2016-06-25 17:16:36 +02:00
commit 98da46eac9
3 changed files with 83 additions and 59 deletions

View File

@ -574,17 +574,21 @@ void AOEngine::checkSitCancel()
if (foreignAnimations(seat))
{
LLUUID animation = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT)->mCurrentAnimationID;
if (animation.notNull())
AOSet::AOState* aoState = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT);
if (aoState)
{
LL_DEBUGS("AOEngine") << "Stopping sit animation due to foreign animations running" << LL_ENDL;
gAgent.sendAnimationRequest(animation, ANIM_REQUEST_STOP);
// remove cycle point cover-up
gAgent.sendAnimationRequest(ANIM_AGENT_SIT_GENERIC, ANIM_REQUEST_STOP);
gAgentAvatarp->LLCharacter::stopMotion(animation);
mSitCancelTimer.stop();
// stop cycle tiemr
mCurrentSet->stopTimer();
LLUUID animation = aoState->mCurrentAnimationID;
if (animation.notNull())
{
LL_DEBUGS("AOEngine") << "Stopping sit animation due to foreign animations running" << LL_ENDL;
gAgent.sendAnimationRequest(animation, ANIM_REQUEST_STOP);
// remove cycle point cover-up
gAgent.sendAnimationRequest(ANIM_AGENT_SIT_GENERIC, ANIM_REQUEST_STOP);
gAgentAvatarp->LLCharacter::stopMotion(animation);
mSitCancelTimer.stop();
// stop cycle tiemr
mCurrentSet->stopTimer();
}
}
}
}
@ -931,6 +935,11 @@ BOOL AOEngine::removeSet(AOSet* set)
BOOL AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 index)
{
if (index < 0)
{
return FALSE;
}
S32 numOfAnimations = state->mAnimations.size();
if (numOfAnimations == 0)
{
@ -1717,9 +1726,16 @@ void AOEngine::onNotecardLoadComplete(LLVFS* vfs, const LLUUID& assetUUID, LLAss
S32 notecardSize = vfs->getSize(assetUUID, type);
char* buffer = new char[notecardSize];
vfs->getData(assetUUID, type, (U8*) buffer, 0, notecardSize);
AOEngine::instance().parseNotecard(buffer);
S32 ret = vfs->getData(assetUUID, type, reinterpret_cast<U8*>(buffer), 0, notecardSize);
if (ret > 0)
{
AOEngine::instance().parseNotecard(buffer);
}
else
{
delete[] buffer;
}
}
void AOEngine::parseNotecard(const char* buffer)
@ -1739,7 +1755,7 @@ void AOEngine::parseNotecard(const char* buffer)
}
std::string text(buffer);
delete buffer;
delete[] buffer;
std::vector<std::string> lines;
LLStringUtil::getTokens(text, lines, "\n");

View File

@ -1083,17 +1083,22 @@ void LLInventoryFilter::setFilterWorn(BOOL worn)
// </FS>
// <FS:Ansariel> FIRE-19340: search inventory by transferable permission
void LLInventoryFilter::setFilterTransferable(BOOL transferable)
{
setModified();
if (transferable)
{
mFilterOps.mFilterTypes |= FILTERTYPE_TRANSFERABLE;
}
else
{
mFilterOps.mFilterTypes &= ~FILTERTYPE_TRANSFERABLE;
}
void LLInventoryFilter::setFilterTransferable(BOOL transferable)
{
BOOL current = (mFilterOps.mFilterTypes & FILTERTYPE_TRANSFERABLE) != 0;
if (current != transferable)
{
setModified();
if (transferable)
{
mFilterOps.mFilterTypes |= FILTERTYPE_TRANSFERABLE;
}
else
{
mFilterOps.mFilterTypes &= ~FILTERTYPE_TRANSFERABLE;
}
}
}
// </FS:Ansariel>

View File

@ -9193,7 +9193,8 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
static const U32 COMPLEXITY_BODY_PART_COST = 200;
// Diagnostic list of all textures on our avatar
static std::set<LLUUID> all_textures;
// <FS:Ansariel> Disable useless diagnostics
//static std::set<LLUUID> all_textures;
if (mVisualComplexityStale)
{
@ -9289,41 +9290,43 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
// Diagnostic output to identify all avatar-related textures.
// Does not affect rendering cost calculation.
// Could be wrapped in a debug option if output becomes problematic.
if (isSelf())
{
// print any attachment textures we didn't already know about.
for (LLVOVolume::texture_cost_t::iterator it = textures.begin(); it != textures.end(); ++it)
{
LLUUID image_id = it->first;
if( ! (image_id.isNull() || image_id == IMG_DEFAULT || image_id == IMG_DEFAULT_AVATAR)
&& (all_textures.find(image_id) == all_textures.end()))
{
// attachment texture not previously seen.
LL_INFOS() << "attachment_texture: " << image_id.asString() << LL_ENDL;
all_textures.insert(image_id);
}
}
// <FS:Ansariel> Disable useless diagnostics
//if (isSelf())
//{
// // print any attachment textures we didn't already know about.
// for (LLVOVolume::texture_cost_t::iterator it = textures.begin(); it != textures.end(); ++it)
// {
// LLUUID image_id = it->first;
// if( ! (image_id.isNull() || image_id == IMG_DEFAULT || image_id == IMG_DEFAULT_AVATAR)
// && (all_textures.find(image_id) == all_textures.end()))
// {
// // attachment texture not previously seen.
// LL_INFOS() << "attachment_texture: " << image_id.asString() << LL_ENDL;
// all_textures.insert(image_id);
// }
// }
// print any avatar textures we didn't already know about
for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
++iter)
{
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
// TODO: MULTI-WEARABLE: handle multiple textures for self
const LLViewerTexture* te_image = getImage(iter->first,0);
if (!te_image)
continue;
LLUUID image_id = te_image->getID();
if( image_id.isNull() || image_id == IMG_DEFAULT || image_id == IMG_DEFAULT_AVATAR)
continue;
if (all_textures.find(image_id) == all_textures.end())
{
LL_INFOS() << "local_texture: " << texture_dict->mName << ": " << image_id << LL_ENDL;
all_textures.insert(image_id);
}
}
}
// // print any avatar textures we didn't already know about
// for (LLAvatarAppearanceDictionary::Textures::const_iterator iter = LLAvatarAppearanceDictionary::getInstance()->getTextures().begin();
// iter != LLAvatarAppearanceDictionary::getInstance()->getTextures().end();
// ++iter)
// {
// const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
// // TODO: MULTI-WEARABLE: handle multiple textures for self
// const LLViewerTexture* te_image = getImage(iter->first,0);
// if (!te_image)
// continue;
// LLUUID image_id = te_image->getID();
// if( image_id.isNull() || image_id == IMG_DEFAULT || image_id == IMG_DEFAULT_AVATAR)
// continue;
// if (all_textures.find(image_id) == all_textures.end())
// {
// LL_INFOS() << "local_texture: " << texture_dict->mName << ": " << image_id << LL_ENDL;
// all_textures.insert(image_id);
// }
// }
//}
// </FS:Ansariel>
if ( cost != mVisualComplexity )
{