Merge branch 'release/2024.06-atlasaurus' of https://github.com/secondlife/viewer

# Conflicts:
#	indra/newview/featuretable_linux.txt
master
Ansariel 2024-08-21 01:02:53 +02:00
commit 59bf1d192b
14 changed files with 151 additions and 81 deletions

View File

@ -1127,18 +1127,6 @@
</map>
<key>glm</key>
<map>
<key>canonical_repo</key>
<string>https://github.com/secondlife/3p-glm</string>
<key>copyright</key>
<string>Copyright (c) 2005 - G-Truc Creation</string>
<key>description</key>
<string>OpenGL Mathematics</string>
<key>license</key>
<string>MIT</string>
<key>license_file</key>
<string>LICENSES/glm_license.txt</string>
<key>name</key>
<string>glm</string>
<key>platforms</key>
<map>
<key>common</key>
@ -1156,16 +1144,28 @@
<string>common</string>
</map>
</map>
<key>source_type</key>
<string>git</string>
<key>license</key>
<string>MIT</string>
<key>license_file</key>
<string>LICENSES/glm_license.txt</string>
<key>copyright</key>
<string>Copyright (c) 2005 - G-Truc Creation</string>
<key>version</key>
<string>v1.0.1</string>
<key>name</key>
<string>glm</string>
<key>vcs_branch</key>
<string>refs/tags/v1.0.1-r1</string>
<key>vcs_revision</key>
<string>399cd5ba57a9267a560ce07e50a0f8c5fe3dc66f</string>
<key>vcs_url</key>
<string>git://github.com/secondlife/3p-glm.git</string>
<key>version</key>
<string>v1.0.1</string>
<key>canonical_repo</key>
<string>https://github.com/secondlife/3p-glm</string>
<key>description</key>
<string>OpenGL Mathematics</string>
<key>source_type</key>
<string>git</string>
</map>
<key>havok-source</key>
<map>
@ -1720,14 +1720,6 @@
</map>
<key>llphysicsextensions_source</key>
<map>
<key>copyright</key>
<string>Copyright (c) 2010, Linden Research, Inc.</string>
<key>license</key>
<string>internal</string>
<key>license_file</key>
<string>LICENSES/llphysicsextensions.txt</string>
<key>name</key>
<string>llphysicsextensions_source</string>
<key>platforms</key>
<map>
<key>darwin64</key>
@ -1779,8 +1771,16 @@
<string>windows64</string>
</map>
</map>
<key>license</key>
<string>internal</string>
<key>license_file</key>
<string>LICENSES/llphysicsextensions.txt</string>
<key>copyright</key>
<string>Copyright (c) 2010, Linden Research, Inc.</string>
<key>version</key>
<string>1.0.b8b1f73</string>
<key>name</key>
<string>llphysicsextensions_source</string>
</map>
<key>llphysicsextensions_stub</key>
<map>
@ -2345,16 +2345,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
</map>
<key>openal</key>
<map>
<key>copyright</key>
<string>Copyright (C) 1999-2007 by authors.</string>
<key>description</key>
<string>OpenAL Soft is a software implementation of the OpenAL 3D audio API.</string>
<key>license</key>
<string>LGPL2</string>
<key>license_file</key>
<string>LICENSES/openal-soft.txt</string>
<key>name</key>
<string>openal</string>
<key>platforms</key>
<map>
<key>darwin64</key>
@ -2400,8 +2390,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<string>windows64</string>
</map>
</map>
<key>license</key>
<string>LGPL2</string>
<key>license_file</key>
<string>LICENSES/openal-soft.txt</string>
<key>copyright</key>
<string>Copyright (C) 1999-2007 by authors.</string>
<key>version</key>
<string>1.23.1</string>
<key>name</key>
<string>openal</string>
<key>description</key>
<string>OpenAL Soft is a software implementation of the OpenAL 3D audio API.</string>
</map>
<key>openjpeg</key>
<map>
@ -3160,11 +3160,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>194b4f5957c9f003c46e61a434e23a7c3d1180d6</string>
<string>3570b6442d472cd97bad8622c2ec2571d72218a0</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-darwin64-10377605436.tar.zst</string>
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.72-test/webrtc-m114.5735.08.72-test.10444682919-darwin64-10444682919.tar.zst</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -3174,11 +3174,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>38e0c7d30b4c40eb04e60ab199440b847cc7c6cf</string>
<string>eadf6aa99313940ded11801d42c11375669f1628</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-linux64-10377605436.tar.zst</string>
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.72-test/webrtc-m114.5735.08.72-test.10444682919-linux64-10444682919.tar.zst</string>
</map>
<key>name</key>
<string>linux64</string>
@ -3188,11 +3188,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>053fb5c873df9192e34cddcf2db1c5fdcff76ba1</string>
<string>0081fd35290adbc8e66dd366535fb6cd8a966f1e</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.70-debug/webrtc-m114.5735.08.70-debug.10377605436-windows64-10377605436.tar.zst</string>
<string>https://github.com/secondlife/3p-webrtc-build/releases/download/m114.5735.08.72-test/webrtc-m114.5735.08.72-test.10444682919-windows64-10444682919.tar.zst</string>
</map>
<key>name</key>
<string>windows64</string>
@ -3205,7 +3205,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>copyright</key>
<string>Copyright (c) 2011, The WebRTC project authors. All rights reserved.</string>
<key>version</key>
<string>m114.5735.08.70-debug.10377605436</string>
<string>m114.5735.08.72-test.10444682919</string>
<key>name</key>
<string>webrtc</string>
<key>vcs_branch</key>

View File

@ -88,4 +88,3 @@ char* LLMessageStringTable::getString(const char *str)
}
return mString[hash_value];
}

View File

@ -2078,6 +2078,14 @@ void LLFloater::onClickClose( LLFloater* self )
self->onClickCloseBtn();
}
// static
void LLFloater::onClickClose(LLFloater* self, bool app_quitting)
{
if (!self)
return;
self->onClickCloseBtn(app_quitting);
}
void LLFloater::onClickCloseBtn(bool app_quitting)
{
// <FS:Ansariel> FIRE-24125: Add option to close all floaters of a group

View File

@ -378,6 +378,7 @@ public:
// }
static void onClickClose(LLFloater* floater);
static void onClickClose(LLFloater* floater, bool app_quitting);
static void onClickMinimize(LLFloater* floater);
static void onClickTearOff(LLFloater* floater);
static void onClickDock(LLFloater* floater);

View File

@ -30,6 +30,7 @@ add_library (llwebrtc SHARED ${llwebrtc_SOURCE_FILES})
set_target_properties(llwebrtc PROPERTIES PUBLIC_HEADER llwebrtc.h)
if (WINDOWS)
cmake_policy(SET CMP0091 NEW)
set_target_properties(llwebrtc
PROPERTIES
LINK_FLAGS "/debug /LARGEADDRESSAWARE"
@ -41,7 +42,10 @@ if (WINDOWS)
wmcodecdspuuid
msdmo
strmiids
iphlpapi)
iphlpapi
libcmt)
# as the webrtc libraries are release, build this binary as release as well.
target_compile_options(llwebrtc PRIVATE "/MT")
if (USE_BUGSPLAT)
set_target_properties(llwebrtc PROPERTIES PDB_OUTPUT_DIRECTORY "${SYMBOLS_STAGING_DIR}")
endif (USE_BUGSPLAT)

View File

@ -206,10 +206,10 @@ void LLWebRTCImpl::init()
mTuningDeviceModule->SetAudioDeviceSink(this);
mTuningDeviceModule->InitMicrophone();
mTuningDeviceModule->InitSpeaker();
mTuningDeviceModule->SetStereoRecording(false);
mTuningDeviceModule->SetStereoPlayout(true);
mTuningDeviceModule->InitRecording();
mTuningDeviceModule->InitPlayout();
mTuningDeviceModule->SetStereoRecording(true);
mTuningDeviceModule->SetStereoPlayout(true);
updateDevices();
});
@ -227,10 +227,6 @@ void LLWebRTCImpl::init()
mPeerDeviceModule->EnableBuiltInAEC(false);
mPeerDeviceModule->InitMicrophone();
mPeerDeviceModule->InitSpeaker();
mPeerDeviceModule->InitRecording();
mPeerDeviceModule->InitPlayout();
mPeerDeviceModule->SetStereoRecording(true);
mPeerDeviceModule->SetStereoPlayout(true);
});
// The custom processor allows us to retrieve audio data (and levels)
@ -251,8 +247,9 @@ void LLWebRTCImpl::init()
apm_config.noise_suppression.level = webrtc::AudioProcessing::Config::NoiseSuppression::kVeryHigh;
apm_config.transient_suppression.enabled = true;
apm_config.pipeline.multi_channel_render = true;
apm_config.pipeline.multi_channel_capture = true;
apm_config.pipeline.multi_channel_capture = true;
apm_config.pipeline.multi_channel_capture = false;
mAudioProcessingModule->ApplyConfig(apm_config);
webrtc::ProcessingConfig processing_config;
processing_config.input_stream().set_num_channels(2);
@ -264,10 +261,8 @@ void LLWebRTCImpl::init()
processing_config.reverse_output_stream().set_num_channels(2);
processing_config.reverse_output_stream().set_sample_rate_hz(48000);
mAudioProcessingModule->ApplyConfig(apm_config);
mAudioProcessingModule->Initialize(processing_config);
mPeerConnectionFactory = webrtc::CreatePeerConnectionFactory(mNetworkThread.get(),
mWorkerThread.get(),
mSignalingThread.get(),
@ -279,7 +274,6 @@ void LLWebRTCImpl::init()
nullptr /* audio_mixer */,
mAudioProcessingModule);
mWorkerThread->BlockingCall([this]() { mPeerDeviceModule->StartPlayout(); });
}
void LLWebRTCImpl::terminate()
@ -331,6 +325,8 @@ void LLWebRTCImpl::setRecording(bool recording)
{
if (recording)
{
mPeerDeviceModule->SetStereoRecording(false);
mPeerDeviceModule->InitRecording();
mPeerDeviceModule->StartRecording();
}
else
@ -340,6 +336,24 @@ void LLWebRTCImpl::setRecording(bool recording)
});
}
void LLWebRTCImpl::setPlayout(bool playing)
{
mWorkerThread->PostTask(
[this, playing]()
{
if (playing)
{
mPeerDeviceModule->SetStereoPlayout(true);
mPeerDeviceModule->InitPlayout();
mPeerDeviceModule->StartPlayout();
}
else
{
mPeerDeviceModule->StopPlayout();
}
});
}
void LLWebRTCImpl::setAudioConfig(LLWebRTCDeviceInterface::AudioConfig config)
{
webrtc::AudioProcessing::Config apm_config;
@ -402,7 +416,6 @@ void LLWebRTCImpl::unsetDevicesObserver(LLWebRTCDevicesObserver *observer)
void ll_set_device_module_capture_device(rtc::scoped_refptr<webrtc::AudioDeviceModule> device_module, int16_t device)
{
device_module->StopRecording();
#if WEBRTC_WIN
if (device < 0)
{
@ -417,10 +430,9 @@ void ll_set_device_module_capture_device(rtc::scoped_refptr<webrtc::AudioDeviceM
// has it at 0
device_module->SetRecordingDevice(device + 1);
#endif
device_module->SetStereoRecording(false);
device_module->InitMicrophone();
device_module->InitRecording();
device_module->SetStereoRecording(false);
device_module->StartRecording();
}
void LLWebRTCImpl::setCaptureDevice(const std::string &id)
@ -444,18 +456,32 @@ void LLWebRTCImpl::setCaptureDevice(const std::string &id)
mRecordingDevice = recordingDevice;
if (mTuningMode)
{
mWorkerThread->PostTask([this, recordingDevice]() { ll_set_device_module_capture_device(mTuningDeviceModule, recordingDevice); });
mWorkerThread->PostTask([this, recordingDevice]()
{
ll_set_device_module_capture_device(mTuningDeviceModule, recordingDevice);
});
}
else
{
mWorkerThread->PostTask([this, recordingDevice]() { ll_set_device_module_capture_device(mPeerDeviceModule, recordingDevice); });
mWorkerThread->PostTask([this, recordingDevice]()
{
bool recording = mPeerDeviceModule->Recording();
if (recording)
{
mPeerDeviceModule->StopRecording();
}
ll_set_device_module_capture_device(mPeerDeviceModule, recordingDevice);
if (recording)
{
mPeerDeviceModule->StartRecording();
}
});
}
}
void ll_set_device_module_render_device(rtc::scoped_refptr<webrtc::AudioDeviceModule> device_module, int16_t device)
{
device_module->StopPlayout();
#if WEBRTC_WIN
if (device < 0)
{
@ -468,9 +494,9 @@ void ll_set_device_module_render_device(rtc::scoped_refptr<webrtc::AudioDeviceMo
#else
device_module->SetPlayoutDevice(device + 1);
#endif
device_module->SetStereoPlayout(true);
device_module->InitSpeaker();
device_module->InitPlayout();
device_module->SetStereoPlayout(true);
}
void LLWebRTCImpl::setRenderDevice(const std::string &id)
@ -506,8 +532,16 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
mWorkerThread->PostTask(
[this, playoutDevice]()
{
bool playing = mPeerDeviceModule->Playing();
if (playing)
{
mPeerDeviceModule->StopPlayout();
}
ll_set_device_module_render_device(mPeerDeviceModule, playoutDevice);
mPeerDeviceModule->StartPlayout();
if (playing)
{
mPeerDeviceModule->StartPlayout();
}
});
}
}
@ -592,6 +626,8 @@ void LLWebRTCImpl::setTuningMode(bool enable)
//mTuningDeviceModule->StopPlayout();
ll_set_device_module_render_device(mPeerDeviceModule, mPlayoutDevice);
ll_set_device_module_capture_device(mPeerDeviceModule, mRecordingDevice);
mPeerDeviceModule->SetStereoPlayout(true);
mPeerDeviceModule->SetStereoRecording(false);
mPeerDeviceModule->InitPlayout();
mPeerDeviceModule->InitRecording();
mPeerDeviceModule->StartPlayout();
@ -635,6 +671,11 @@ LLWebRTCPeerConnectionInterface *LLWebRTCImpl::newPeerConnection()
mPeerConnections.emplace_back(peerConnection);
peerConnection->enableSenderTracks(!mMute);
if (mPeerConnections.empty())
{
setRecording(true);
setPlayout(true);
}
return peerConnection.get();
}
@ -649,6 +690,7 @@ void LLWebRTCImpl::freePeerConnection(LLWebRTCPeerConnectionInterface* peer_conn
if (mPeerConnections.empty())
{
setRecording(false);
setPlayout(false);
}
}
@ -662,7 +704,7 @@ void LLWebRTCImpl::freePeerConnection(LLWebRTCPeerConnectionInterface* peer_conn
LLWebRTCPeerConnectionImpl::LLWebRTCPeerConnectionImpl() :
mWebRTCImpl(nullptr),
mPeerConnection(nullptr),
mMute(false),
mMute(true),
mAnswerReceived(false)
{
}
@ -684,8 +726,8 @@ void LLWebRTCPeerConnectionImpl::init(LLWebRTCImpl * webrtc_impl)
}
void LLWebRTCPeerConnectionImpl::terminate()
{
mWebRTCImpl->PostSignalingTask(
[=]()
mWebRTCImpl->SignalingBlockingCall(
[this]()
{
if (mPeerConnection)
{

View File

@ -278,6 +278,8 @@ class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceS
// enables/disables capture via the capture device
void setRecording(bool recording);
void setPlayout(bool playing);
protected:
LLWebRTCLogSink* mLogSink;

View File

@ -1,4 +1,4 @@
version 60
version 61
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@ -252,7 +252,7 @@ RenderReflectionsEnabled 1 1
RenderReflectionProbeDetail 1 1
RenderScreenSpaceReflections 1 0
RenderReflectionProbeLevel 1 3
RenderMirrors 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 512
RenderHeroProbeDistance 1 8
RenderHeroProbeUpdateRate 1 2
@ -288,7 +288,7 @@ RenderReflectionsEnabled 1 1
RenderReflectionProbeDetail 1 1
RenderScreenSpaceReflections 1 0
RenderReflectionProbeLevel 1 3
RenderMirrors 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 1024
RenderHeroProbeDistance 1 16
RenderHeroProbeUpdateRate 1 1
@ -324,7 +324,7 @@ RenderReflectionsEnabled 1 1
RenderReflectionProbeDetail 1 1
RenderScreenSpaceReflections 1 0
RenderReflectionProbeLevel 1 3
RenderMirrors 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 2048
RenderHeroProbeDistance 1 16
RenderHeroProbeUpdateRate 1 1

View File

@ -70,12 +70,19 @@ RenderShadowDetail 1 2
RenderUseStreamVBO 1 1
RenderFSAASamples 1 16
RenderMaxTextureIndex 1 16
RenderMirrors 1 1
RenderGLContextCoreProfile 1 1
RenderGLMultiThreadedTextures 1 0
RenderGLMultiThreadedMedia 1 1
RenderReflectionProbeResolution 1 128
RenderScreenSpaceReflections 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 256
RenderHeroProbeDistance 1 4
RenderHeroProbeUpdateRate 1 6
RenderHeroProbeConservativeUpdateMultiplier 1 16
//
// Low Graphics Settings
@ -323,7 +330,7 @@ RenderReflectionsEnabled 1 1
RenderReflectionProbeDetail 1 1
RenderScreenSpaceReflections 1 0
RenderReflectionProbeLevel 1 3
RenderMirrors 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 2048
RenderHeroProbeDistance 1 16
RenderHeroProbeUpdateRate 1 1

View File

@ -1,4 +1,4 @@
version 57
version 58
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@ -250,7 +250,7 @@ RenderReflectionsEnabled 1 1
RenderReflectionProbeDetail 1 1
RenderScreenSpaceReflections 1 0
RenderReflectionProbeLevel 1 1
RenderMirrors 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 512
RenderHeroProbeDistance 1 8
RenderHeroProbeUpdateRate 1 2
@ -286,7 +286,7 @@ RenderReflectionsEnabled 1 1
RenderReflectionProbeDetail 1 1
RenderScreenSpaceReflections 1 0
RenderReflectionProbeLevel 1 2
RenderMirrors 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 512
RenderHeroProbeDistance 1 16
RenderHeroProbeUpdateRate 1 1
@ -322,7 +322,7 @@ RenderReflectionsEnabled 1 1
RenderReflectionProbeDetail 1 1
RenderScreenSpaceReflections 1 0
RenderReflectionProbeLevel 1 3
RenderMirrors 1 1
RenderMirrors 1 0
RenderHeroProbeResolution 1 1024
RenderHeroProbeDistance 1 16
RenderHeroProbeUpdateRate 1 1

View File

@ -2444,7 +2444,7 @@ void LLFloaterIMContainer::closeHostedFloater()
onClickCloseBtn();
}
void LLFloaterIMContainer::closeAllConversations()
void LLFloaterIMContainer::closeAllConversations(bool app_quitting)
{
std::vector<LLUUID> ids;
for (conversations_items_map::iterator it_session = mConversationsItems.begin(); it_session != mConversationsItems.end(); it_session++)
@ -2459,7 +2459,7 @@ void LLFloaterIMContainer::closeAllConversations()
for (std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)
{
LLFloaterIMSession *conversationFloater = LLFloaterIMSession::findInstance(*it);
LLFloater::onClickClose(conversationFloater);
LLFloater::onClickClose(conversationFloater, app_quitting);
}
}
@ -2482,7 +2482,7 @@ void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/)
{
if(app_quitting)
{
closeAllConversations();
closeAllConversations(app_quitting);
onClickCloseBtn(app_quitting);
}
else

View File

@ -119,7 +119,7 @@ public:
void assignResizeLimits();
virtual bool handleKeyHere(KEY key, MASK mask );
/*virtual*/ void closeFloater(bool app_quitting = false);
void closeAllConversations();
void closeAllConversations(bool app_quitting);
void closeSelectedConversations(const uuid_vec_t& ids);
/*virtual*/ bool isFrontmost();

View File

@ -143,8 +143,14 @@ void LLFloaterIMSession::onTearOffClicked()
}
// virtual
void LLFloaterIMSession::onClickCloseBtn(bool)
void LLFloaterIMSession::onClickCloseBtn(bool app_qutting)
{
if (app_qutting)
{
LLFloaterIMSessionTab::onClickCloseBtn();
return;
}
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSessionID);
if (session != NULL)

View File

@ -268,6 +268,7 @@ void LLWebRTCVoiceClient::init(LLPumpIO* pump)
mWebRTCDeviceInterface = llwebrtc::getDeviceInterface();
mWebRTCDeviceInterface->setDevicesObserver(this);
mMainQueue = LL::WorkQueue::getInstance("mainloop");
refreshDeviceLists();
}
void LLWebRTCVoiceClient::terminate()
@ -636,7 +637,7 @@ void LLWebRTCVoiceClient::clearCaptureDevices()
void LLWebRTCVoiceClient::addCaptureDevice(const LLVoiceDevice& device)
{
LL_DEBUGS("Voice") << "display: '" << device.display_name << "' device: '" << device.full_name << "'" << LL_ENDL;
LL_INFOS("Voice") << "Voice Capture Device: '" << device.display_name << "' (" << device.full_name << ")" << LL_ENDL;
mCaptureDevices.push_back(device);
}
@ -705,7 +706,7 @@ void LLWebRTCVoiceClient::clearRenderDevices()
void LLWebRTCVoiceClient::addRenderDevice(const LLVoiceDevice& device)
{
LL_DEBUGS("Voice") << "display: '" << device.display_name << "' device: '" << device.full_name << "'" << LL_ENDL;
LL_INFOS("Voice") << "Voice Render Device: '" << device.display_name << "' (" << device.full_name << ")" << LL_ENDL;
mRenderDevices.push_back(device);
}