Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer
# Conflicts: # indra/newview/llvoicevivox.cppmaster
commit
8ed4989c34
|
|
@ -13,7 +13,7 @@ jobs:
|
|||
steps:
|
||||
- name: CLA Assistant
|
||||
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
|
||||
uses: secondlife-3p/contributor-assistant@v2
|
||||
uses: secondlife-3p/contributor-assistant@v2.6.1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
PERSONAL_ACCESS_TOKEN: ${{ secrets.SHARED_CLA_TOKEN }}
|
||||
|
|
|
|||
|
|
@ -63,15 +63,16 @@ LLSD LlsdFromJson(const boost::json::value& val)
|
|||
case boost::json::kind::array:
|
||||
{
|
||||
result = LLSD::emptyArray();
|
||||
auto& array = val.as_array();
|
||||
const boost::json::array& array = val.as_array();
|
||||
size_t size = array.size();
|
||||
// allocate elements 0 .. (size() - 1) to avoid incremental allocation
|
||||
if (! array.empty())
|
||||
{
|
||||
result[array.size() - 1] = LLSD();
|
||||
result[size - 1] = LLSD();
|
||||
}
|
||||
for (const auto &element : array)
|
||||
for (size_t i = 0; i < size; i++)
|
||||
{
|
||||
result.append(LlsdFromJson(element));
|
||||
result[i] = (LlsdFromJson(array[i]));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,8 +133,8 @@ void LLSettingsWater::loadValuesFromLLSD()
|
|||
mWave1Dir = LLVector2(settings[SETTING_WAVE1_DIR]);
|
||||
mWave2Dir = LLVector2(settings[SETTING_WAVE2_DIR]);
|
||||
|
||||
mNormalMapID = getNormalMapID();
|
||||
mTransparentTextureID = getTransparentTextureID();
|
||||
mNormalMapID = settings[SETTING_NORMAL_MAP].asUUID();
|
||||
mTransparentTextureID = settings[SETTING_TRANSPARENT_TEXTURE].asUUID();
|
||||
}
|
||||
|
||||
void LLSettingsWater::saveValuesToLLSD()
|
||||
|
|
|
|||
|
|
@ -6030,10 +6030,7 @@ void LLAppViewer::sendLogoutRequest()
|
|||
gLogoutMaxTime = LOGOUT_REQUEST_TIME;
|
||||
mLogoutRequestSent = true;
|
||||
|
||||
if(LLVoiceClient::instanceExists())
|
||||
{
|
||||
LLVoiceClient::getInstance()->setVoiceEnabled(false);
|
||||
}
|
||||
LLVoiceClient::setVoiceEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -195,8 +195,15 @@ namespace
|
|||
|
||||
// LL_ERRS message, when there is one
|
||||
sBugSplatSender->setDefaultUserDescription(WCSTR(LLError::getFatalMessage()));
|
||||
// App state
|
||||
|
||||
sBugSplatSender->setAttribute(WCSTR(L"OS"), WCSTR(LLOSInfo::instance().getOSStringSimple())); // In case we ever stop using email for this
|
||||
sBugSplatSender->setAttribute(WCSTR(L"AppState"), WCSTR(LLStartUp::getStartupStateString()));
|
||||
sBugSplatSender->setAttribute(WCSTR(L"GL Vendor"), WCSTR(gGLManager.mGLVendor));
|
||||
sBugSplatSender->setAttribute(WCSTR(L"GL Version"), WCSTR(gGLManager.mGLVersionString));
|
||||
sBugSplatSender->setAttribute(WCSTR(L"GPU Version"), WCSTR(gGLManager.mDriverVersionVendorString));
|
||||
sBugSplatSender->setAttribute(WCSTR(L"GL Renderer"), WCSTR(gGLManager.mGLRenderer));
|
||||
sBugSplatSender->setAttribute(WCSTR(L"VRAM"), WCSTR(STRINGIZE(gGLManager.mVRAM)));
|
||||
sBugSplatSender->setAttribute(WCSTR(L"RAM"), WCSTR(STRINGIZE(gSysMemory.getPhysicalMemoryKB().value())));
|
||||
|
||||
if (gAgent.getRegion())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1284,7 +1284,7 @@ bool LLChicletPanel::postBuild()
|
|||
LLScriptFloaterManager::getInstance()->addNewObjectCallback(boost::bind(&LLChicletPanel::objectChicletCallback, this, _1));
|
||||
LLScriptFloaterManager::getInstance()->addToggleObjectFloaterCallback(boost::bind(&LLChicletPanel::objectChicletCallback, this, _1));
|
||||
LLIMChiclet::sFindChicletsSignal.connect(boost::bind(&LLChicletPanel::findChiclet<LLChiclet>, this, _1));
|
||||
LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLChicletPanel::onCurrentVoiceChannelChanged, this, _1));
|
||||
mVoiceChannelChanged = LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLChicletPanel::onCurrentVoiceChannelChanged, this, _1));
|
||||
|
||||
mLeftScrollButton=getChild<LLButton>("chicklet_left_scroll_button");
|
||||
LLTransientFloaterMgr::getInstance()->addControlView(mLeftScrollButton);
|
||||
|
|
|
|||
|
|
@ -1253,6 +1253,8 @@ protected:
|
|||
S32 mMinWidth;
|
||||
bool mShowControls;
|
||||
static const S32 s_scroll_ratio;
|
||||
|
||||
boost::signals2::connection mVoiceChannelChanged;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
|
|
|
|||
|
|
@ -200,6 +200,22 @@ LLConversationLog::LLConversationLog() :
|
|||
{
|
||||
}
|
||||
|
||||
LLConversationLog::~LLConversationLog()
|
||||
{
|
||||
if (mLoggingEnabled)
|
||||
{
|
||||
if (LLIMMgr::instanceExists())
|
||||
{
|
||||
LLIMMgr::instance().removeSessionObserver(this);
|
||||
}
|
||||
LLAvatarTracker::instance().removeObserver(mFriendObserver);
|
||||
}
|
||||
if (mAvatarNameCacheConnection.connected())
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
void LLConversationLog::enableLogging(S32 log_mode)
|
||||
{
|
||||
mLoggingEnabled = log_mode > 0;
|
||||
|
|
|
|||
|
|
@ -166,13 +166,7 @@ public:
|
|||
|
||||
private:
|
||||
|
||||
virtual ~LLConversationLog()
|
||||
{
|
||||
if (mAvatarNameCacheConnection.connected())
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
}
|
||||
}
|
||||
virtual ~LLConversationLog();
|
||||
|
||||
void enableLogging(S32 log_mode);
|
||||
|
||||
|
|
|
|||
|
|
@ -696,6 +696,7 @@ void LLFloaterIMSession::onClose(bool app_quitting)
|
|||
// Last change:
|
||||
// EXT-3516 X Button should end IM session, _ button should hide
|
||||
gIMMgr->leaveSession(mSessionID);
|
||||
mSession = nullptr; // leaveSession should have deleted it.
|
||||
// *TODO: Study why we need to restore the floater before we close it.
|
||||
// Might be because we want to save some state data in some clean open state.
|
||||
LLFloaterIMSessionTab::restoreFloater();
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)
|
|||
{
|
||||
setAutoFocus(false);
|
||||
mSession = LLIMModel::getInstance()->findIMSession(mSessionID);
|
||||
LLIMMgr::instance().addSessionObserver(this);
|
||||
|
||||
mCommitCallbackRegistrar.add("IMSession.Menu.Action",
|
||||
boost::bind(&LLFloaterIMSessionTab::onIMSessionMenuItemClicked, this, _2));
|
||||
|
|
@ -104,6 +105,7 @@ LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)
|
|||
LLFloaterIMSessionTab::~LLFloaterIMSessionTab()
|
||||
{
|
||||
delete mRefreshTimer;
|
||||
LLIMMgr::instance().removeSessionObserver(this);
|
||||
|
||||
LLFloaterIMContainer* im_container = LLFloaterIMContainer::findInstance();
|
||||
if (im_container)
|
||||
|
|
@ -442,7 +444,10 @@ void LLFloaterIMSessionTab::enableDisableCallBtn()
|
|||
|
||||
bool enable = false;
|
||||
|
||||
if (mSessionID.notNull() && mSession && mSession->mSessionInitialized && mSession->mCallBackEnabled)
|
||||
if (mSessionID.notNull()
|
||||
&& mSession
|
||||
&& mSession->mSessionInitialized
|
||||
&& mSession->mCallBackEnabled)
|
||||
{
|
||||
if (mVoiceButtonHangUpMode)
|
||||
{
|
||||
|
|
@ -452,9 +457,10 @@ void LLFloaterIMSessionTab::enableDisableCallBtn()
|
|||
else
|
||||
{
|
||||
// We allow to start call from this state only
|
||||
if (mSession->mVoiceChannel &&
|
||||
!mSession->mVoiceChannel->callStarted() &&
|
||||
LLVoiceClient::instanceExists())
|
||||
if (LLVoiceClient::instanceExists() &&
|
||||
mSession->mVoiceChannel &&
|
||||
!mSession->mVoiceChannel->callStarted()
|
||||
)
|
||||
{
|
||||
LLVoiceClient* client = LLVoiceClient::getInstance();
|
||||
if (client->voiceEnabled() && client->isVoiceWorking())
|
||||
|
|
@ -1368,6 +1374,14 @@ LLView* LLFloaterIMSessionTab::getChatHistory()
|
|||
return mChatHistory;
|
||||
}
|
||||
|
||||
void LLFloaterIMSessionTab::sessionRemoved(const LLUUID& session_id)
|
||||
{
|
||||
if (session_id == mSessionID)
|
||||
{
|
||||
mSession = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool LLFloaterIMSessionTab::handleKeyHere(KEY key, MASK mask )
|
||||
{
|
||||
bool handled = false;
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ class LLPanelEmojiComplete;
|
|||
|
||||
class LLFloaterIMSessionTab
|
||||
: public LLTransientDockableFloater
|
||||
, public LLIMSessionObserver
|
||||
{
|
||||
using super = LLTransientDockableFloater;
|
||||
|
||||
|
|
@ -78,13 +79,13 @@ public:
|
|||
bool isNearbyChat() {return mIsNearbyChat;}
|
||||
|
||||
// LLFloater overrides
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
/*virtual*/ bool postBuild();
|
||||
/*virtual*/ void draw();
|
||||
/*virtual*/ void setVisible(bool visible);
|
||||
/*virtual*/ void setFocus(bool focus);
|
||||
/*virtual*/ void closeFloater(bool app_quitting = false);
|
||||
/*virtual*/ void deleteAllChildren();
|
||||
void onOpen(const LLSD& key) override;
|
||||
bool postBuild() override;
|
||||
void draw() override;
|
||||
void setVisible(bool visible) override;
|
||||
void setFocus(bool focus) override;
|
||||
void closeFloater(bool app_quitting = false) override;
|
||||
void deleteAllChildren() override;
|
||||
|
||||
// Handle the left hand participant list widgets
|
||||
void addConversationViewParticipant(LLConversationItem* item, bool update_view = true);
|
||||
|
|
@ -100,7 +101,7 @@ public:
|
|||
virtual void updateMessages() {}
|
||||
LLConversationItem* getCurSelectedViewModelItem();
|
||||
void forceReshape();
|
||||
virtual bool handleKeyHere( KEY key, MASK mask );
|
||||
virtual bool handleKeyHere( KEY key, MASK mask ) override;
|
||||
bool isMessagePaneExpanded(){return mMessagePaneExpanded;}
|
||||
void setMessagePaneExpanded(bool expanded){mMessagePaneExpanded = expanded;}
|
||||
void restoreFloater();
|
||||
|
|
@ -110,6 +111,13 @@ public:
|
|||
|
||||
LLView* getChatHistory();
|
||||
|
||||
// LLIMSessionObserver triggers
|
||||
virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, bool has_offline_msg) override {}; // Stub
|
||||
virtual void sessionActivated(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) override {}; // Stub
|
||||
virtual void sessionRemoved(const LLUUID& session_id) override;
|
||||
virtual void sessionVoiceOrIMStarted(const LLUUID& session_id) override {}; // Stub
|
||||
virtual void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id) override {}; // Stub
|
||||
|
||||
protected:
|
||||
|
||||
// callback for click on any items of the visual states menu
|
||||
|
|
@ -141,8 +149,8 @@ protected:
|
|||
virtual void enableDisableCallBtn();
|
||||
|
||||
// process focus events to set a currently active session
|
||||
/* virtual */ void onFocusReceived();
|
||||
/* virtual */ void onFocusLost();
|
||||
void onFocusReceived() override;
|
||||
void onFocusLost() override;
|
||||
|
||||
// prepare chat's params and out one message to chatHistory
|
||||
void appendMessage(const LLChat& chat, const LLSD& args = LLSD());
|
||||
|
|
@ -214,7 +222,7 @@ private:
|
|||
void getSelectedUUIDs(uuid_vec_t& selected_uuids);
|
||||
|
||||
/// Refreshes the floater at a constant rate.
|
||||
virtual void refresh() = 0;
|
||||
virtual void refresh() override = 0;
|
||||
|
||||
/**
|
||||
* Adjusts chat history height to fit vertically with input chat field
|
||||
|
|
|
|||
|
|
@ -941,7 +941,6 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id,
|
|||
|
||||
void LLIMModel::LLIMSession::initVoiceChannel(const LLSD& voiceChannelInfo)
|
||||
{
|
||||
|
||||
if (mVoiceChannel)
|
||||
{
|
||||
if (mVoiceChannel->isThisVoiceChannel(voiceChannelInfo))
|
||||
|
|
@ -2642,7 +2641,7 @@ LLCallDialogManager::~LLCallDialogManager()
|
|||
|
||||
void LLCallDialogManager::initSingleton()
|
||||
{
|
||||
LLVoiceChannel::setCurrentVoiceChannelChangedCallback(LLCallDialogManager::onVoiceChannelChanged);
|
||||
mVoiceChannelChanged = LLVoiceChannel::setCurrentVoiceChannelChangedCallback(LLCallDialogManager::onVoiceChannelChanged);
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
|
|||
|
|
@ -607,6 +607,8 @@ protected:
|
|||
std::string mCurrentSessionlName;
|
||||
LLIMModel::LLIMSession* mSession;
|
||||
LLVoiceChannel::EState mOldState;
|
||||
|
||||
boost::signals2::connection mVoiceChannelChanged;
|
||||
};
|
||||
|
||||
class LLCallDialog : public LLDockableFloater
|
||||
|
|
|
|||
|
|
@ -133,6 +133,8 @@ private:
|
|||
* @see onChange()
|
||||
*/
|
||||
speaker_ids_t mSwitchedIndicatorsOn;
|
||||
|
||||
boost::signals2::connection mVoiceChannelChanged;
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -181,7 +183,7 @@ void SpeakingIndicatorManager::unregisterSpeakingIndicator(const LLUUID& speaker
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
SpeakingIndicatorManager::SpeakingIndicatorManager()
|
||||
{
|
||||
LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&SpeakingIndicatorManager::sOnCurrentChannelChanged, this, _1));
|
||||
mVoiceChannelChanged = LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&SpeakingIndicatorManager::sOnCurrentChannelChanged, this, _1));
|
||||
LLVoiceClient::addObserver(this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -450,7 +450,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
|
|||
|
||||
LLViewerObject *objectp;
|
||||
S32 num_objects;
|
||||
U32 local_id;
|
||||
U32 local_id = 0;
|
||||
LLPCode pcode = 0;
|
||||
LLUUID fullid;
|
||||
S32 i;
|
||||
|
|
|
|||
|
|
@ -621,6 +621,7 @@ void LLViewerShaderMgr::setShaders()
|
|||
LLError::setDefaultLevel(LLError::LEVEL_DEBUG);
|
||||
loadBasicShaders();
|
||||
LLError::setDefaultLevel(lvl);
|
||||
gGLManager.printGLInfoString();
|
||||
LL_ERRS() << "Unable to load basic shader " << shader_name << ", verify graphics driver installed and current." << LL_ENDL;
|
||||
reentrance = false; // For hygiene only, re-try probably helps nothing
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -80,9 +80,8 @@ LLVoiceChannel::~LLVoiceChannel()
|
|||
if (sCurrentVoiceChannel == this)
|
||||
{
|
||||
sCurrentVoiceChannel = NULL;
|
||||
// Must check instance exists here, the singleton MAY have already been destroyed.
|
||||
LLVoiceClient::removeObserver(this);
|
||||
}
|
||||
LLVoiceClient::removeObserver(this);
|
||||
|
||||
sVoiceChannelMap.erase(mSessionID);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -179,7 +179,11 @@ void LLVoiceClient::init(LLPumpIO *pump)
|
|||
|
||||
void LLVoiceClient::userAuthorized(const std::string& user_id, const LLUUID &agentID)
|
||||
{
|
||||
gAgent.addRegionChangedCallback(boost::bind(&LLVoiceClient::onRegionChanged, this));
|
||||
if (mRegionChangedCallbackSlot.connected())
|
||||
{
|
||||
mRegionChangedCallbackSlot.disconnect();
|
||||
}
|
||||
mRegionChangedCallbackSlot = gAgent.addRegionChangedCallback(boost::bind(&LLVoiceClient::onRegionChanged, this));
|
||||
LLWebRTCVoiceClient::getInstance()->userAuthorized(user_id, agentID);
|
||||
LLVivoxVoiceClient::getInstance()->userAuthorized(user_id, agentID);
|
||||
}
|
||||
|
|
@ -629,8 +633,14 @@ bool LLVoiceClient::voiceEnabled(bool no_cache)
|
|||
|
||||
void LLVoiceClient::setVoiceEnabled(bool enabled)
|
||||
{
|
||||
LLWebRTCVoiceClient::getInstance()->setVoiceEnabled(enabled);
|
||||
LLVivoxVoiceClient::getInstance()->setVoiceEnabled(enabled);
|
||||
if (LLWebRTCVoiceClient::instanceExists())
|
||||
{
|
||||
LLWebRTCVoiceClient::getInstance()->setVoiceEnabled(enabled);
|
||||
}
|
||||
if (LLVivoxVoiceClient::instanceExists())
|
||||
{
|
||||
LLVivoxVoiceClient::getInstance()->setVoiceEnabled(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
void LLVoiceClient::updateMicMuteLogic()
|
||||
|
|
|
|||
|
|
@ -462,7 +462,7 @@ public:
|
|||
bool getUserPTTState();
|
||||
void toggleUserPTTState(void);
|
||||
void inputUserControlState(bool down); // interpret any sort of up-down mic-open control input according to ptt-toggle prefs
|
||||
void setVoiceEnabled(bool enabled);
|
||||
static void setVoiceEnabled(bool enabled);
|
||||
|
||||
void setUsePTT(bool usePTT);
|
||||
void setPTTIsToggle(bool PTTIsToggle);
|
||||
|
|
@ -550,6 +550,7 @@ protected:
|
|||
LLPumpIO *m_servicePump;
|
||||
|
||||
boost::signals2::connection mSimulatorFeaturesReceivedSlot;
|
||||
boost::signals2::connection mRegionChangedCallbackSlot;
|
||||
|
||||
LLCachedControl<bool> mVoiceEffectEnabled;
|
||||
LLCachedControl<std::string> mVoiceEffectDefault;
|
||||
|
|
|
|||
|
|
@ -2125,23 +2125,48 @@ bool LLVivoxVoiceClient::waitForChannel()
|
|||
llcoro::suspend();
|
||||
break;
|
||||
}
|
||||
sessionStatePtr_t joinSession = mNextAudioSession;
|
||||
mNextAudioSession.reset();
|
||||
mIsProcessingChannels = true;
|
||||
if (!runSession(joinSession)) //suspends
|
||||
|
||||
try
|
||||
{
|
||||
mIsProcessingChannels = false;
|
||||
LL_DEBUGS("Voice") << "runSession returned false; leaving inner loop" << LL_ENDL;
|
||||
// break; <FS:Beq/> Fix broken state model
|
||||
sessionStatePtr_t joinSession = mNextAudioSession;
|
||||
mNextAudioSession.reset();
|
||||
mIsProcessingChannels = true;
|
||||
if (!runSession(joinSession)) //suspends
|
||||
{
|
||||
mIsProcessingChannels = false;
|
||||
LL_DEBUGS("Voice") << "runSession returned false; leaving inner loop" << LL_ENDL;
|
||||
// break; <FS:Beq/> Fix broken state model
|
||||
}
|
||||
else
|
||||
{
|
||||
mIsProcessingChannels = false;
|
||||
LL_DEBUGS("Voice")
|
||||
<< "runSession returned true to inner loop"
|
||||
<< " RelogRequested=" << mRelogRequested
|
||||
<< " VoiceEnabled=" << mVoiceEnabled
|
||||
<< LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
catch (const LLCoros::Stop&)
|
||||
{
|
||||
mIsProcessingChannels = false;
|
||||
LL_DEBUGS("Voice")
|
||||
<< "runSession returned true to inner loop"
|
||||
<< " RelogRequested=" << mRelogRequested
|
||||
<< " VoiceEnabled=" << mVoiceEnabled
|
||||
LL_DEBUGS("LLVivoxVoiceClient") << "Received a shutdown exception" << LL_ENDL;
|
||||
}
|
||||
catch (const LLContinueError&)
|
||||
{
|
||||
LOG_UNHANDLED_EXCEPTION("LLVivoxVoiceClient");
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
// Ideally for Windows need to log SEH exception instead or to set SEH
|
||||
// handlers but bugsplat shows local variables for windows, which should
|
||||
// be enough
|
||||
LL_WARNS("Voice") << "voiceControlStateMachine crashed in state VOICE_CHANNEL_STATE_PROCESS_CHANNEL"
|
||||
<< " mRelogRequested " << mRelogRequested
|
||||
<< " mVoiceEnabled " << mVoiceEnabled
|
||||
<< " mIsProcessingChannels " << mIsProcessingChannels
|
||||
<< " mProcessChannels " << mProcessChannels
|
||||
<< LL_ENDL;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -258,6 +258,8 @@ void LLWebRTCVoiceClient::cleanupSingleton()
|
|||
}
|
||||
cleanUp();
|
||||
sessionState::clearSessions();
|
||||
|
||||
mStatusObservers.clear();
|
||||
}
|
||||
|
||||
//---------------------------------------------------
|
||||
|
|
@ -403,8 +405,9 @@ void LLWebRTCVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::ESt
|
|||
LL_DEBUGS("Voice") << "( " << LLVoiceClientStatusObserver::status2string(status) << " )"
|
||||
<< " mSession=" << mSession << LL_ENDL;
|
||||
|
||||
bool in_spatial_channel = inSpatialChannel();
|
||||
LL_DEBUGS("Voice") << " " << LLVoiceClientStatusObserver::status2string(status) << ", session channelInfo "
|
||||
<< getAudioSessionChannelInfo() << ", proximal is " << inSpatialChannel() << LL_ENDL;
|
||||
<< getAudioSessionChannelInfo() << ", proximal is " << in_spatial_channel << LL_ENDL;
|
||||
|
||||
mIsProcessingChannels = status == LLVoiceClientStatusObserver::STATUS_JOINED;
|
||||
|
||||
|
|
@ -412,7 +415,7 @@ void LLWebRTCVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::ESt
|
|||
for (status_observer_set_t::iterator it = mStatusObservers.begin(); it != mStatusObservers.end();)
|
||||
{
|
||||
LLVoiceClientStatusObserver *observer = *it;
|
||||
observer->onChange(status, channelInfo, inSpatialChannel());
|
||||
observer->onChange(status, channelInfo, in_spatial_channel);
|
||||
// In case onError() deleted an entry.
|
||||
it = mStatusObservers.upper_bound(observer);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6835,6 +6835,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
|
|||
if (gltf_mat->mAlphaMode == LLGLTFMaterial::ALPHA_MODE_BLEND)
|
||||
{
|
||||
registerFace(group, facep, LLRenderPass::PASS_ALPHA);
|
||||
is_alpha = true;
|
||||
}
|
||||
else if (gltf_mat->mAlphaMode == LLGLTFMaterial::ALPHA_MODE_MASK)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue