Automated merge with ssh://hg.lindenlab.com/viewer/viewer-2-0
commit
d7277171c3
|
|
@ -560,45 +560,44 @@ void secondsToTimecodeString(F32 current_time, std::string& tcstring)
|
|||
// LLEventTimer Implementation
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
bool LLEventTimer::sInTickLoop = false;
|
||||
|
||||
LLEventTimer::LLEventTimer(F32 period)
|
||||
: mEventTimer()
|
||||
{
|
||||
mPeriod = period;
|
||||
mBusy = false;
|
||||
}
|
||||
|
||||
LLEventTimer::LLEventTimer(const LLDate& time)
|
||||
: mEventTimer()
|
||||
{
|
||||
mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch());
|
||||
mBusy = false;
|
||||
}
|
||||
|
||||
|
||||
LLEventTimer::~LLEventTimer()
|
||||
{
|
||||
llassert(!mBusy); // this LLEventTimer was destroyed from within its own tick() function - bad. if you want tick() to cause destruction of its own timer, make it return true.
|
||||
llassert(!LLEventTimer::sInTickLoop); // this LLEventTimer was destroyed from within its own tick() function - bad. if you want tick() to cause destruction of its own timer, make it return true.
|
||||
}
|
||||
|
||||
//static
|
||||
void LLEventTimer::updateClass()
|
||||
{
|
||||
std::list<LLEventTimer*> completed_timers;
|
||||
LLEventTimer::sInTickLoop = true;
|
||||
for (instance_iter iter = beginInstances(); iter != endInstances(); )
|
||||
{
|
||||
LLEventTimer& timer = *iter++;
|
||||
F32 et = timer.mEventTimer.getElapsedTimeF32();
|
||||
if (timer.mEventTimer.getStarted() && et > timer.mPeriod) {
|
||||
timer.mEventTimer.reset();
|
||||
timer.mBusy = true;
|
||||
if ( timer.tick() )
|
||||
{
|
||||
completed_timers.push_back( &timer );
|
||||
}
|
||||
timer.mBusy = false;
|
||||
}
|
||||
}
|
||||
LLEventTimer::sInTickLoop = false;
|
||||
|
||||
if ( completed_timers.size() > 0 )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ public:
|
|||
protected:
|
||||
LLTimer mEventTimer;
|
||||
F32 mPeriod;
|
||||
bool mBusy;
|
||||
static bool sInTickLoop;
|
||||
};
|
||||
|
||||
U64 LL_COMMON_API totalTime(); // Returns current system time in microseconds
|
||||
|
|
|
|||
|
|
@ -678,8 +678,7 @@ void LLCallFloater::resetVoiceRemoveTimers()
|
|||
|
||||
void LLCallFloater::removeVoiceRemoveTimer(const LLUUID& voice_speaker_id)
|
||||
{
|
||||
bool delete_it = true;
|
||||
mSpeakerDelayRemover->unsetActionTimer(voice_speaker_id, delete_it);
|
||||
mSpeakerDelayRemover->unsetActionTimer(voice_speaker_id);
|
||||
}
|
||||
|
||||
bool LLCallFloater::validateSpeaker(const LLUUID& speaker_id)
|
||||
|
|
|
|||
|
|
@ -175,6 +175,11 @@ BOOL LLSpeakerActionTimer::tick()
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void LLSpeakerActionTimer::unset()
|
||||
{
|
||||
mActionCallback = 0;
|
||||
}
|
||||
|
||||
LLSpeakersDelayActionsStorage::LLSpeakersDelayActionsStorage(LLSpeakerActionTimer::action_callback_t action_cb, F32 action_delay)
|
||||
: mActionCallback(action_cb)
|
||||
, mActionDelay(action_delay)
|
||||
|
|
@ -205,7 +210,7 @@ void LLSpeakersDelayActionsStorage::setActionTimer(const LLUUID& speaker_id)
|
|||
}
|
||||
}
|
||||
|
||||
void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id, bool delete_it)
|
||||
void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id)
|
||||
{
|
||||
if (mActionTimersMap.size() == 0) return;
|
||||
|
||||
|
|
@ -213,10 +218,7 @@ void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id, b
|
|||
|
||||
if (it_speaker != mActionTimersMap.end())
|
||||
{
|
||||
if (delete_it)
|
||||
{
|
||||
delete it_speaker->second;
|
||||
}
|
||||
it_speaker->second->unset();
|
||||
mActionTimersMap.erase(it_speaker);
|
||||
}
|
||||
}
|
||||
|
|
@ -233,8 +235,7 @@ void LLSpeakersDelayActionsStorage::removeAllTimers()
|
|||
|
||||
bool LLSpeakersDelayActionsStorage::onTimerActionCallback(const LLUUID& speaker_id)
|
||||
{
|
||||
bool delete_it = false; // we're *in* this timer, return true to delete it, don't manually delete it
|
||||
unsetActionTimer(speaker_id, delete_it);
|
||||
unsetActionTimer(speaker_id);
|
||||
|
||||
if (mActionCallback)
|
||||
{
|
||||
|
|
@ -293,9 +294,7 @@ LLPointer<LLSpeaker> LLSpeakerMgr::setSpeaker(const LLUUID& id, const std::strin
|
|||
}
|
||||
}
|
||||
|
||||
bool delete_it = true;
|
||||
mSpeakerDelayRemover->unsetActionTimer(speakerp->mID, delete_it);
|
||||
|
||||
mSpeakerDelayRemover->unsetActionTimer(speakerp->mID);
|
||||
return speakerp;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -155,6 +155,13 @@ public:
|
|||
*/
|
||||
virtual BOOL tick();
|
||||
|
||||
/**
|
||||
* Clears the callback.
|
||||
*
|
||||
* Use this instead of deleteing this object.
|
||||
* The next call to tick() will return true and that will destroy this object.
|
||||
*/
|
||||
void unset();
|
||||
private:
|
||||
action_callback_t mActionCallback;
|
||||
LLUUID mSpeakerId;
|
||||
|
|
@ -180,7 +187,7 @@ public:
|
|||
*
|
||||
* @see onTimerActionCallback()
|
||||
*/
|
||||
void unsetActionTimer(const LLUUID& speaker_id, bool delete_it);
|
||||
void unsetActionTimer(const LLUUID& speaker_id);
|
||||
|
||||
void removeAllTimers();
|
||||
private:
|
||||
|
|
@ -188,7 +195,6 @@ private:
|
|||
* Callback of the each instance of LLSpeakerActionTimer.
|
||||
*
|
||||
* Unsets an appropriate timer instance and calls action callback for specified speacker_id.
|
||||
* It always returns false to not use LLEventTimer::updateClass functionality of timer deleting.
|
||||
*
|
||||
* @see unsetActionTimer()
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue