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 - - archive - - hash - 6e7b0961d6489a1b3c3090eccfd6e80e - url - http://3p.firestormviewer.org/slvoice-3.2.0002.10426.298329-linux-20160717.tar.bz2 - - name - 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")