diff --git a/autobuild.xml b/autobuild.xml
index 963dd22556..0562d9ceb6 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -3221,26 +3221,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
name
darwin64
- linux
-
linux64
archive
hash
- 6e7b0961d6489a1b3c3090eccfd6e80e
+ 05c4debd4cccfea620fc7e6f9a190924
url
- http://3p.firestormviewer.org/slvoice-3.2.0002.10426.298329-linux-20160717.tar.bz2
+ http://3p.firestormviewer.org/slvoice-3.2.0002.10426.302004-linux64-212691952.tar.bz2
name
linux64
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 658df3f703..dfcfa349d8 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -25173,6 +25173,17 @@ Change of this parameter will affect the layout of buttons in notification toast
Value
0
+ FSLinuxEnableWin64VoiceProxy
+
+ Comment
+ Use Win64 SLVoice.exe for voice. Needs wine (https://www.winehq.org/) installed, as SLVoice.exe is started inside wine.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FSStatusBarMenuButtonPopupOnRollover
Comment
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 746ddfdb02..adbc6bc016 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -520,20 +520,29 @@ bool LLVivoxVoiceClient::writeString(const std::string &str)
// On Linux the viewer can run SLVoice.exe through wine (https://www.winehq.org/)
// Vivox does not support Linux anymore and the SDK SLVoice for Linux uses is old and according to LL
// will stop working 'soon' (as of 2016-07-17). See also FIRE-19663
-bool viewerUsesWineForVoice()
+
+enum class EWineMode{ eNoWine, e32Bit, e64Bit };
+EWineMode viewerUsesWineForVoice()
{
#ifndef LL_LINUX
- return false;
+ return EWineMode::eNoWine;
#else
- static LLCachedControl sEnableVoiceChat(gSavedSettings, "FSLinuxEnableWin32VoiceProxy" );
+ static LLCachedControl sEnable32BitVoiceChat(gSavedSettings, "FSLinuxEnableWin32VoiceProxy" );
+ static LLCachedControl sEnable64BitVoiceChat(gSavedSettings, "FSLinuxEnableWin64VoiceProxy" );
- return sEnableVoiceChat;
+ if( sEnable64BitVoiceChat )
+ return EWineMode::e64Bit;
+ if( sEnable32BitVoiceChat )
+ return EWineMode::e32Bit;
+
+
+ return EWineMode::eNoWine;
#endif
}
bool viewerChoosesConnectionHandles()
{
- return viewerUsesWineForVoice();
+ return viewerUsesWineForVoice() != EWineMode::eNoWine;
}
//
@@ -881,10 +890,18 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
std::string exe_path = gDirUtilp->getExecutableDir();
// On Linux the viewer can run SLVoice.exe through wine (https://www.winehq.org/)
//gDirUtilp->append(exe_path, "SLVoice");
- if( !viewerUsesWineForVoice() )
- gDirUtilp->append(exe_path, "SLVoice"); // native version
- else
- gDirUtilp->append(exe_path, "win32/SLVoice.exe"); // use bundled win32 version
+ switch( viewerUsesWineForVoice() )
+ {
+ case EWineMode::eNoWine:
+ gDirUtilp->append(exe_path, "SLVoice"); // native version
+ break;
+ case EWineMode::e32Bit:
+ gDirUtilp->append(exe_path, "win32/SLVoice.exe"); // use bundled win32 version
+ break;
+ case EWineMode::e64Bit:
+ gDirUtilp->append(exe_path, "win64/SLVoice.exe"); // use bundled win64 version
+ break;
+ }
//
#endif
// See if the vivox executable exists
@@ -897,7 +914,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
// On Linux the viewer can run SLVoice.exe through wine (https://www.winehq.org/)
params.executable = exe_path;
- if( !viewerUsesWineForVoice() )
+ if( EWineMode::eNoWine == viewerUsesWineForVoice() )
params.executable = exe_path;
else
{
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 8265e291a0..bae60e0e82 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -2056,6 +2056,7 @@ class LinuxManifest(ViewerManifest):
with self.prefix(src=os.path.join(pkgdir, 'lib', 'release'), dst="bin"):
self.path("SLVoice")
self.path("win32")
+ self.path("win64")
with self.prefix(src=os.path.join(pkgdir, 'lib', 'release'), dst="lib"):
self.path("libortp.so")