Work on major bug EXT-5562 (Misleading Active Voice Indicators in Group Chat Window, when Speakers are in Spatial Chat Only)
-- added more log information -- session uuid can now be set only from SpeakingIndicatorManager to ensure target session is the same indicator was registered with. -- comments cleanup --HG-- branch : product-enginemaster
parent
022c433d53
commit
2fc5956d9d
|
|
@ -303,7 +303,7 @@ void LLOutputMonitorCtrl::switchIndicator(bool switch_on)
|
|||
}
|
||||
|
||||
// otherwise remember necessary state and mark itself as dirty.
|
||||
// State will be applied i next draw when parents chain became visible.
|
||||
// State will be applied in next draw when parents chain becomes visible.
|
||||
else
|
||||
{
|
||||
LL_DEBUGS("SpeakingIndicator") << "Indicator is not in visible chain, parent won't be notified: " << mSpeakerId << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_i
|
|||
{
|
||||
// do not exclude agent's indicators. They should be processed in the same way as others. See EXT-3889.
|
||||
|
||||
LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << "|"<< speaking_indicator << LL_ENDL;
|
||||
LL_DEBUGS("SpeakingIndicator") << "Registering indicator: " << speaker_id << "|"<< speaking_indicator << ", session: " << session_id << LL_ENDL;
|
||||
|
||||
|
||||
ensureInstanceDoesNotExist(speaking_indicator);
|
||||
|
|
@ -249,6 +249,7 @@ void SpeakingIndicatorManager::switchSpeakerIndicators(const speaker_ids_t& spea
|
|||
if (switch_current_on && indicator->getTargetSessionID().notNull())
|
||||
{
|
||||
switch_current_on = indicator->getTargetSessionID() == session_id;
|
||||
LL_DEBUGS("SpeakingIndicator") << "Session: " << session_id << ", target: " << indicator->getTargetSessionID() << ", the same? = " << switch_current_on << LL_ENDL;
|
||||
}
|
||||
|
||||
indicator->switchIndicator(switch_current_on);
|
||||
|
|
@ -300,7 +301,7 @@ void SpeakingIndicatorManager::ensureInstanceDoesNotExist(LLSpeakingIndicator* c
|
|||
/************************************************************************/
|
||||
|
||||
void LLSpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator,
|
||||
const LLUUID& session_id/* = LLUUID::null*/)
|
||||
const LLUUID& session_id)
|
||||
{
|
||||
SpeakingIndicatorManager::instance().registerSpeakingIndicator(speaker_id, speaking_indicator, session_id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,15 +35,22 @@
|
|||
#ifndef LL_LLSPEAKINGINDICATORMANAGER_H
|
||||
#define LL_LLSPEAKINGINDICATORMANAGER_H
|
||||
|
||||
class SpeakingIndicatorManager;
|
||||
|
||||
class LLSpeakingIndicator
|
||||
{
|
||||
public:
|
||||
virtual ~LLSpeakingIndicator(){}
|
||||
virtual void switchIndicator(bool switch_on) = 0;
|
||||
|
||||
private:
|
||||
friend class SpeakingIndicatorManager;
|
||||
// Accessors for target voice session UUID.
|
||||
// They are intended to be used only from SpeakingIndicatorManager to ensure target session is
|
||||
// the same indicator was registered with.
|
||||
void setTargetSessionID(const LLUUID& session_id) { mTargetSessionID = session_id; }
|
||||
const LLUUID& getTargetSessionID() { return mTargetSessionID; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* session UUID for which indicator should be shown only.
|
||||
* If it is set, registered indicator will be shown only in voice channel
|
||||
|
|
@ -68,7 +75,7 @@ namespace LLSpeakingIndicatorManager
|
|||
* which has the same session id (EXT-5562).
|
||||
*/
|
||||
void registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator,
|
||||
const LLUUID& session_id = LLUUID::null);
|
||||
const LLUUID& session_id);
|
||||
|
||||
/**
|
||||
* Removes passed speaking indicator from observing.
|
||||
|
|
|
|||
Loading…
Reference in New Issue