diff options
Diffstat (limited to 'indra/newview/llspeakers.h')
-rw-r--r-- | indra/newview/llspeakers.h | 430 |
1 files changed, 215 insertions, 215 deletions
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h index eb86fadea1..0242da1605 100644 --- a/indra/newview/llspeakers.h +++ b/indra/newview/llspeakers.h @@ -1,25 +1,25 @@ -/** +/** * @file llspeakers.h * @brief Management interface for muting and controlling volume of residents currently speaking * * $LicenseInfo:firstyear=2005&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -40,94 +40,94 @@ class LLAvatarName; class LLSpeaker : public LLRefCount, public LLOldEvents::LLObservable, public LLHandleProvider<LLSpeaker>, public boost::signals2::trackable { public: - typedef enum e_speaker_type - { - SPEAKER_AGENT, - SPEAKER_OBJECT, - SPEAKER_EXTERNAL // Speaker that doesn't map to an avatar or object (i.e. PSTN caller in a group) - } ESpeakerType; - - typedef enum e_speaker_status - { - STATUS_SPEAKING, - STATUS_HAS_SPOKEN, - STATUS_VOICE_ACTIVE, - STATUS_TEXT_ONLY, - STATUS_NOT_IN_CHANNEL, - STATUS_MUTED - } ESpeakerStatus; - - - LLSpeaker(const LLUUID& id, const std::string& name = LLStringUtil::null, const ESpeakerType type = SPEAKER_AGENT); - ~LLSpeaker() {}; - void lookupName(); - - void onNameCache(const LLUUID& id, const LLAvatarName& full_name); - - bool isInVoiceChannel(); - - ESpeakerStatus mStatus; // current activity status in speech group - F32 mLastSpokeTime; // timestamp when this speaker last spoke - F32 mSpeechVolume; // current speech amplitude (timea average rms amplitude?) - std::string mDisplayName; // cache user name for this speaker - BOOL mHasSpoken; // has this speaker said anything this session? - BOOL mHasLeftCurrentCall; // has this speaker left the current voice call? - LLColor4 mDotColor; - LLUUID mID; - BOOL mTyping; - S32 mSortIndex; - ESpeakerType mType; - BOOL mIsModerator; - BOOL mModeratorMutedVoice; - BOOL mModeratorMutedText; + typedef enum e_speaker_type + { + SPEAKER_AGENT, + SPEAKER_OBJECT, + SPEAKER_EXTERNAL // Speaker that doesn't map to an avatar or object (i.e. PSTN caller in a group) + } ESpeakerType; + + typedef enum e_speaker_status + { + STATUS_SPEAKING, + STATUS_HAS_SPOKEN, + STATUS_VOICE_ACTIVE, + STATUS_TEXT_ONLY, + STATUS_NOT_IN_CHANNEL, + STATUS_MUTED + } ESpeakerStatus; + + + LLSpeaker(const LLUUID& id, const std::string& name = LLStringUtil::null, const ESpeakerType type = SPEAKER_AGENT); + ~LLSpeaker() {}; + void lookupName(); + + void onNameCache(const LLUUID& id, const LLAvatarName& full_name); + + bool isInVoiceChannel(); + + ESpeakerStatus mStatus; // current activity status in speech group + F32 mLastSpokeTime; // timestamp when this speaker last spoke + F32 mSpeechVolume; // current speech amplitude (timea average rms amplitude?) + std::string mDisplayName; // cache user name for this speaker + BOOL mHasSpoken; // has this speaker said anything this session? + BOOL mHasLeftCurrentCall; // has this speaker left the current voice call? + LLColor4 mDotColor; + LLUUID mID; + BOOL mTyping; + S32 mSortIndex; + ESpeakerType mType; + BOOL mIsModerator; + BOOL mModeratorMutedVoice; + BOOL mModeratorMutedText; }; class LLSpeakerUpdateSpeakerEvent : public LLOldEvents::LLEvent { public: - LLSpeakerUpdateSpeakerEvent(LLSpeaker* source); - /*virtual*/ LLSD getValue(); + LLSpeakerUpdateSpeakerEvent(LLSpeaker* source); + /*virtual*/ LLSD getValue(); private: - const LLUUID& mSpeakerID; + const LLUUID& mSpeakerID; }; class LLSpeakerUpdateModeratorEvent : public LLOldEvents::LLEvent { public: - LLSpeakerUpdateModeratorEvent(LLSpeaker* source); - /*virtual*/ LLSD getValue(); + LLSpeakerUpdateModeratorEvent(LLSpeaker* source); + /*virtual*/ LLSD getValue(); private: - const LLUUID& mSpeakerID; - BOOL mIsModerator; + const LLUUID& mSpeakerID; + BOOL mIsModerator; }; class LLSpeakerTextModerationEvent : public LLOldEvents::LLEvent { public: - LLSpeakerTextModerationEvent(LLSpeaker* source); - /*virtual*/ LLSD getValue(); + LLSpeakerTextModerationEvent(LLSpeaker* source); + /*virtual*/ LLSD getValue(); }; class LLSpeakerVoiceModerationEvent : public LLOldEvents::LLEvent { public: - LLSpeakerVoiceModerationEvent(LLSpeaker* source); - /*virtual*/ LLSD getValue(); + LLSpeakerVoiceModerationEvent(LLSpeaker* source); + /*virtual*/ LLSD getValue(); }; class LLSpeakerListChangeEvent : public LLOldEvents::LLEvent { public: - LLSpeakerListChangeEvent(LLSpeakerMgr* source, const LLUUID& speaker_id); - /*virtual*/ LLSD getValue(); + LLSpeakerListChangeEvent(LLSpeakerMgr* source, const LLUUID& speaker_id); + /*virtual*/ LLSD getValue(); private: - const LLUUID& mSpeakerID; + const LLUUID& mSpeakerID; }; /** * class LLSpeakerActionTimer - * + * * Implements a timer that calls stored callback action for stored speaker after passed period. * * Action is called until callback returns "true". @@ -138,39 +138,39 @@ private: class LLSpeakerActionTimer : public LLEventTimer { public: - typedef boost::function<bool(const LLUUID&)> action_callback_t; - typedef std::map<LLUUID, LLSpeakerActionTimer*> action_timers_map_t; - typedef action_timers_map_t::value_type action_value_t; - typedef action_timers_map_t::const_iterator action_timer_const_iter_t; - typedef action_timers_map_t::iterator action_timer_iter_t; - - /** - * Constructor. - * - * @param action_cb - callback which will be called each time after passed action period. - * @param action_period - time in seconds timer should tick. - * @param speaker_id - LLUUID of speaker which will be passed into action callback. - */ - LLSpeakerActionTimer(action_callback_t action_cb, F32 action_period, const LLUUID& speaker_id); - virtual ~LLSpeakerActionTimer() {}; - - /** - * Implements timer "tick". - * - * If action callback is not specified returns true. Instance will be deleted by LLEventTimer::updateClass(). - */ - 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(); + typedef boost::function<bool(const LLUUID&)> action_callback_t; + typedef std::map<LLUUID, LLSpeakerActionTimer*> action_timers_map_t; + typedef action_timers_map_t::value_type action_value_t; + typedef action_timers_map_t::const_iterator action_timer_const_iter_t; + typedef action_timers_map_t::iterator action_timer_iter_t; + + /** + * Constructor. + * + * @param action_cb - callback which will be called each time after passed action period. + * @param action_period - time in seconds timer should tick. + * @param speaker_id - LLUUID of speaker which will be passed into action callback. + */ + LLSpeakerActionTimer(action_callback_t action_cb, F32 action_period, const LLUUID& speaker_id); + virtual ~LLSpeakerActionTimer() {}; + + /** + * Implements timer "tick". + * + * If action callback is not specified returns true. Instance will be deleted by LLEventTimer::updateClass(). + */ + bool tick() override; + + /** + * 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; + action_callback_t mActionCallback; + LLUUID mSpeakerId; }; /** @@ -180,153 +180,153 @@ private: class LLSpeakersDelayActionsStorage { public: - LLSpeakersDelayActionsStorage(LLSpeakerActionTimer::action_callback_t action_cb, F32 action_delay); - ~LLSpeakersDelayActionsStorage(); + LLSpeakersDelayActionsStorage(LLSpeakerActionTimer::action_callback_t action_cb, F32 action_delay); + ~LLSpeakersDelayActionsStorage(); - /** - * Sets new LLSpeakerActionTimer with passed speaker UUID. - */ - void setActionTimer(const LLUUID& speaker_id); + /** + * Sets new LLSpeakerActionTimer with passed speaker UUID. + */ + void setActionTimer(const LLUUID& speaker_id); - /** - * Removes stored LLSpeakerActionTimer for passed speaker UUID from internal map and optionally deletes it. - * - * @see onTimerActionCallback() - */ - void unsetActionTimer(const LLUUID& speaker_id); + /** + * Removes stored LLSpeakerActionTimer for passed speaker UUID from internal map and optionally deletes it. + * + * @see onTimerActionCallback() + */ + void unsetActionTimer(const LLUUID& speaker_id); - void removeAllTimers(); + void removeAllTimers(); - bool isTimerStarted(const LLUUID& speaker_id); + bool isTimerStarted(const LLUUID& speaker_id); private: - /** - * Callback of the each instance of LLSpeakerActionTimer. - * - * Unsets an appropriate timer instance and calls action callback for specified speacker_id. - * - * @see unsetActionTimer() - */ - bool onTimerActionCallback(const LLUUID& speaker_id); - - LLSpeakerActionTimer::action_timers_map_t mActionTimersMap; - LLSpeakerActionTimer::action_callback_t mActionCallback; - - /** - * Delay to call action callback for speakers after timer was set. - */ - F32 mActionDelay; + /** + * Callback of the each instance of LLSpeakerActionTimer. + * + * Unsets an appropriate timer instance and calls action callback for specified speacker_id. + * + * @see unsetActionTimer() + */ + bool onTimerActionCallback(const LLUUID& speaker_id); + + LLSpeakerActionTimer::action_timers_map_t mActionTimersMap; + LLSpeakerActionTimer::action_callback_t mActionCallback; + + /** + * Delay to call action callback for speakers after timer was set. + */ + F32 mActionDelay; }; class LLSpeakerMgr : public LLOldEvents::LLObservable { - LOG_CLASS(LLSpeakerMgr); + LOG_CLASS(LLSpeakerMgr); public: - LLSpeakerMgr(LLVoiceChannel* channelp); - virtual ~LLSpeakerMgr(); - - LLPointer<LLSpeaker> findSpeaker(const LLUUID& avatar_id); - void update(BOOL resort_ok); - void setSpeakerTyping(const LLUUID& speaker_id, BOOL typing); - void speakerChatted(const LLUUID& speaker_id); - LLPointer<LLSpeaker> setSpeaker(const LLUUID& id, - const std::string& name = LLStringUtil::null, - LLSpeaker::ESpeakerStatus status = LLSpeaker::STATUS_TEXT_ONLY, - LLSpeaker::ESpeakerType = LLSpeaker::SPEAKER_AGENT); - - BOOL isVoiceActive(); - - typedef std::vector<LLPointer<LLSpeaker> > speaker_list_t; - void getSpeakerList(speaker_list_t* speaker_list, BOOL include_text); - LLVoiceChannel* getVoiceChannel() { return mVoiceChannel; } - const LLUUID getSessionID(); - bool isSpeakerToBeRemoved(const LLUUID& speaker_id); - - /** - * Initializes mVoiceModerated depend on LLSpeaker::mModeratorMutedVoice of agent's participant. - * - * Is used only to implement workaround to initialize mVoiceModerated on first join to group chat. See EXT-6937 - */ - void initVoiceModerateMode(); + LLSpeakerMgr(LLVoiceChannel* channelp); + virtual ~LLSpeakerMgr(); + + LLPointer<LLSpeaker> findSpeaker(const LLUUID& avatar_id); + void update(BOOL resort_ok); + void setSpeakerTyping(const LLUUID& speaker_id, BOOL typing); + void speakerChatted(const LLUUID& speaker_id); + LLPointer<LLSpeaker> setSpeaker(const LLUUID& id, + const std::string& name = LLStringUtil::null, + LLSpeaker::ESpeakerStatus status = LLSpeaker::STATUS_TEXT_ONLY, + LLSpeaker::ESpeakerType = LLSpeaker::SPEAKER_AGENT); + + BOOL isVoiceActive(); + + typedef std::vector<LLPointer<LLSpeaker> > speaker_list_t; + void getSpeakerList(speaker_list_t* speaker_list, BOOL include_text); + LLVoiceChannel* getVoiceChannel() { return mVoiceChannel; } + const LLUUID getSessionID(); + bool isSpeakerToBeRemoved(const LLUUID& speaker_id); + + /** + * Initializes mVoiceModerated depend on LLSpeaker::mModeratorMutedVoice of agent's participant. + * + * Is used only to implement workaround to initialize mVoiceModerated on first join to group chat. See EXT-6937 + */ + void initVoiceModerateMode(); protected: - virtual void updateSpeakerList(); - void setSpeakerNotInChannel(LLPointer<LLSpeaker> speackerp); - bool removeSpeaker(const LLUUID& speaker_id); + virtual void updateSpeakerList(); + void setSpeakerNotInChannel(LLPointer<LLSpeaker> speackerp); + bool removeSpeaker(const LLUUID& speaker_id); - typedef std::map<LLUUID, LLPointer<LLSpeaker> > speaker_map_t; - speaker_map_t mSpeakers; - bool mSpeakerListUpdated; + typedef std::map<LLUUID, LLPointer<LLSpeaker> > speaker_map_t; + speaker_map_t mSpeakers; + bool mSpeakerListUpdated; LLTimer mGetListTime; - speaker_list_t mSpeakersSorted; - LLFrameTimer mSpeechTimer; - LLVoiceChannel* mVoiceChannel; + speaker_list_t mSpeakersSorted; + LLFrameTimer mSpeechTimer; + LLVoiceChannel* mVoiceChannel; - /** - * time out speakers when they are not part of current session - */ - LLSpeakersDelayActionsStorage* mSpeakerDelayRemover; + /** + * time out speakers when they are not part of current session + */ + LLSpeakersDelayActionsStorage* mSpeakerDelayRemover; - // *TODO: should be moved back into LLIMSpeakerMgr when a way to request the current voice channel - // moderation mode is implemented: See EXT-6937 - bool mVoiceModerated; + // *TODO: should be moved back into LLIMSpeakerMgr when a way to request the current voice channel + // moderation mode is implemented: See EXT-6937 + bool mVoiceModerated; - // *TODO: To be removed when a way to request the current voice channel - // moderation mode is implemented: See EXT-6937 - bool mModerateModeHandledFirstTime; + // *TODO: To be removed when a way to request the current voice channel + // moderation mode is implemented: See EXT-6937 + bool mModerateModeHandledFirstTime; }; class LLIMSpeakerMgr : public LLSpeakerMgr { - LOG_CLASS(LLIMSpeakerMgr); + LOG_CLASS(LLIMSpeakerMgr); public: - LLIMSpeakerMgr(LLVoiceChannel* channel); - - void updateSpeakers(const LLSD& update); - void setSpeakers(const LLSD& speakers); - - void toggleAllowTextChat(const LLUUID& speaker_id); - - /** - * Mutes/Unmutes avatar for current group voice chat. - * - * It only marks avatar as muted for session and does not use local Agent's Block list. - * It does not mute Agent itself. - * - * @param[in] avatar_id UUID of avatar to be processed - * @param[in] unmute if false - specified avatar will be muted, otherwise - unmuted. - * - * @see moderateVoiceAllParticipants() - */ - void moderateVoiceParticipant(const LLUUID& avatar_id, bool unmute); - - /** - * Mutes/Unmutes all avatars for current group voice chat. - * - * It only marks avatars as muted for session and does not use local Agent's Block list. - * It calls forceVoiceModeratedMode() in case of session is already in requested state. - * - * @param[in] unmute_everyone if false - avatars will be muted, otherwise - unmuted. - * - * @see moderateVoiceParticipant() - */ - void moderateVoiceAllParticipants(bool unmute_everyone); - - void processSessionUpdate(const LLSD& session_update); + LLIMSpeakerMgr(LLVoiceChannel* channel); + + void updateSpeakers(const LLSD& update); + void setSpeakers(const LLSD& speakers); + + void toggleAllowTextChat(const LLUUID& speaker_id); + + /** + * Mutes/Unmutes avatar for current group voice chat. + * + * It only marks avatar as muted for session and does not use local Agent's Block list. + * It does not mute Agent itself. + * + * @param[in] avatar_id UUID of avatar to be processed + * @param[in] unmute if false - specified avatar will be muted, otherwise - unmuted. + * + * @see moderateVoiceAllParticipants() + */ + void moderateVoiceParticipant(const LLUUID& avatar_id, bool unmute); + + /** + * Mutes/Unmutes all avatars for current group voice chat. + * + * It only marks avatars as muted for session and does not use local Agent's Block list. + * It calls forceVoiceModeratedMode() in case of session is already in requested state. + * + * @param[in] unmute_everyone if false - avatars will be muted, otherwise - unmuted. + * + * @see moderateVoiceParticipant() + */ + void moderateVoiceAllParticipants(bool unmute_everyone); + + void processSessionUpdate(const LLSD& session_update); protected: - virtual void updateSpeakerList(); + virtual void updateSpeakerList(); - void moderateVoiceSession(const LLUUID& session_id, bool disallow_voice); + void moderateVoiceSession(const LLUUID& session_id, bool disallow_voice); - /** - * Process all participants to mute/unmute them according to passed voice session state. - */ - void forceVoiceModeratedMode(bool should_be_muted); + /** + * Process all participants to mute/unmute them according to passed voice session state. + */ + void forceVoiceModeratedMode(bool should_be_muted); void moderationActionCoro(std::string url, LLSD action); @@ -334,20 +334,20 @@ protected: class LLActiveSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLActiveSpeakerMgr> { - LLSINGLETON(LLActiveSpeakerMgr); - LOG_CLASS(LLActiveSpeakerMgr); + LLSINGLETON(LLActiveSpeakerMgr); + LOG_CLASS(LLActiveSpeakerMgr); protected: - virtual void updateSpeakerList() override; + virtual void updateSpeakerList() override; }; class LLLocalSpeakerMgr : public LLSpeakerMgr, public LLSingleton<LLLocalSpeakerMgr> { - LLSINGLETON(LLLocalSpeakerMgr); - ~LLLocalSpeakerMgr (); - LOG_CLASS(LLLocalSpeakerMgr); + LLSINGLETON(LLLocalSpeakerMgr); + ~LLLocalSpeakerMgr (); + LOG_CLASS(LLLocalSpeakerMgr); protected: - virtual void updateSpeakerList() override; + virtual void updateSpeakerList() override; }; #endif // LL_LLSPEAKERS_H |