Fix crash when clicking on << >> buttons and the AO wasn't set up with animations yet.

master
ZiRee 2011-04-21 14:03:47 +02:00
parent 937b540882
commit 47776e3ae1
3 changed files with 27 additions and 3 deletions

View File

@ -142,6 +142,10 @@ BOOL FloaterAO::postBuild()
mCycleTimeTextLabel=aoPanel->getChild<LLTextBox>("ao_cycle_time_seconds_label");
mCycleTimeSpinner=aoPanel->getChild<LLSpinCtrl>("ao_cycle_time");
mPreviousButton=aoPanel->getChild<LLButton>("ao_previous");
mNextButton=aoPanel->getChild<LLButton>("ao_next");
mReloadButton=aoPanel->getChild<LLButton>("ao_reload");
mSetSelector->setCommitCallback(boost::bind(&FloaterAO::onSelectSet,this));
mActivateSetButton->setCommitCallback(boost::bind(&FloaterAO::onClickActivate,this));
mAddButton->setCommitCallback(boost::bind(&FloaterAO::onClickAdd,this));
@ -151,6 +155,9 @@ BOOL FloaterAO::postBuild()
mSmartCheckBox->setCommitCallback(boost::bind(&FloaterAO::onCheckSmart,this));
mDisableMouselookCheckBox->setCommitCallback(boost::bind(&FloaterAO::onCheckDisableStands,this));
mPreviousButton->setCommitCallback(boost::bind(&FloaterAO::onClickPrevious,this));
mNextButton->setCommitCallback(boost::bind(&FloaterAO::onClickNext,this));
mAnimationList->setCommitOnSelectionChange(TRUE);
mStateSelector->setCommitCallback(boost::bind(&FloaterAO::onSelectState,this));
@ -163,9 +170,7 @@ BOOL FloaterAO::postBuild()
updateSmart();
aoPanel->getChild<LLButton>("ao_reload")->setCommitCallback(boost::bind(&FloaterAO::onClickReload,this));
aoPanel->getChild<LLButton>("ao_previous")->setCommitCallback(boost::bind(&FloaterAO::onClickPrevious,this));
aoPanel->getChild<LLButton>("ao_next")->setCommitCallback(boost::bind(&FloaterAO::onClickNext,this));
mReloadButton->setCommitCallback(boost::bind(&FloaterAO::onClickReload,this));
AOEngine::instance().setReloadCallback(boost::bind(&FloaterAO::updateList,this));
@ -191,6 +196,8 @@ void FloaterAO::enableStateControls(BOOL yes)
mRandomizeCheckBox->setEnabled(yes);
mCycleTimeTextLabel->setEnabled(yes);
mCycleTimeSpinner->setEnabled(yes);
mPreviousButton->setEnabled(yes);
mNextButton->setEnabled(yes);
mCanDragAndDrop=yes;
}

View File

@ -110,6 +110,11 @@ class FloaterAO
LLTextBox* mCycleTimeTextLabel;
LLSpinCtrl* mCycleTimeSpinner;
LLButton* mReloadButton;
LLButton* mPreviousButton;
LLButton* mNextButton;
BOOL mCanDragAndDrop;
};

View File

@ -387,6 +387,12 @@ void AOEngine::cycleTimeout(const AOSet* set)
void AOEngine::cycle(eCycleMode cycleMode)
{
if(!mCurrentSet)
{
lldebugs << "cycle without set." << llendl;
return;
}
LLUUID motion=mCurrentSet->getMotion();
// assume stand if no motion is registered, happens after login when the avatar hasn't moved at all yet
@ -406,6 +412,12 @@ void AOEngine::cycle(eCycleMode cycleMode)
return;
}
if(!state->mAnimations.size())
{
lldebugs << "cycle without animations in state." << llendl;
return;
}
LLUUID animation=state->mCurrentAnimationID;
if(!animation.isNull())
gAgent.sendAnimationRequest(animation,ANIM_REQUEST_STOP);