From 6d061b388374ed0621d8b7a7040e165c6bb04089 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Thu, 16 Jun 2011 10:27:42 +0200 Subject: fix Bug #967 memleak in llfloaterregioninfo --- linden/indra/newview/llfloaterregioninfo.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp index 60bdfcd..505f8e6 100644 --- a/linden/indra/newview/llfloaterregioninfo.cpp +++ b/linden/indra/newview/llfloaterregioninfo.cpp @@ -1739,11 +1739,7 @@ void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data) //--------------------------------------------------------------------------- // Kick from estate methods //--------------------------------------------------------------------------- -struct LLKickFromEstateInfo -{ - LLPanelEstateInfo *mEstatePanelp; - LLUUID mAgentID; -}; + void LLPanelEstateInfo::onClickKickUser(void *user_data) { @@ -1770,10 +1766,7 @@ void LLPanelEstateInfo::onKickUserCommit(const std::vector& names, LLPanelEstateInfo* self = (LLPanelEstateInfo*)userdata; if(!self) return; - //keep track of what user they want to kick and other misc info - LLKickFromEstateInfo *kick_info = new LLKickFromEstateInfo(); - kick_info->mEstatePanelp = self; - kick_info->mAgentID = ids[0]; + //Bring up a confirmation dialog LLSD args; -- cgit v1.1 From 09f701ed47c7b54dc9c8da444f84f288c0e2fc2a Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Thu, 16 Jun 2011 11:46:57 +0200 Subject: fix pass LLSD& instead LLSD to selectByValue --- linden/indra/llui/llctrlselectioninterface.cpp | 4 ++-- linden/indra/llui/llctrlselectioninterface.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/llui/llctrlselectioninterface.cpp b/linden/indra/llui/llctrlselectioninterface.cpp index dac0939..1111b9d 100644 --- a/linden/indra/llui/llctrlselectioninterface.cpp +++ b/linden/indra/llui/llctrlselectioninterface.cpp @@ -39,12 +39,12 @@ LLCtrlSelectionInterface::~LLCtrlSelectionInterface() { } -BOOL LLCtrlSelectionInterface::selectByValue(LLSD value) +BOOL LLCtrlSelectionInterface::selectByValue(const LLSD& value) { return setSelectedByValue(value, TRUE); } -BOOL LLCtrlSelectionInterface::deselectByValue(LLSD value) +BOOL LLCtrlSelectionInterface::deselectByValue(const LLSD& value) { return setSelectedByValue(value, FALSE); } diff --git a/linden/indra/llui/llctrlselectioninterface.h b/linden/indra/llui/llctrlselectioninterface.h index 45727d6..7b5cd66 100644 --- a/linden/indra/llui/llctrlselectioninterface.h +++ b/linden/indra/llui/llctrlselectioninterface.h @@ -67,8 +67,8 @@ public: virtual BOOL setCurrentByID( const LLUUID& id ) = 0; virtual LLUUID getCurrentID() const = 0; - BOOL selectByValue(const LLSD value); - BOOL deselectByValue(const LLSD value); + BOOL selectByValue(const LLSD& value); + BOOL deselectByValue(const LLSD& value); virtual BOOL setSelectedByValue(const LLSD& value, BOOL selected) = 0; virtual LLSD getSelectedValue() = 0; -- cgit v1.1 From f8864a146bd0e7a871f5ce27f92683df66729dab Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Thu, 16 Jun 2011 14:31:08 +0200 Subject: 2 fixes in llxmlnode: pass LLUUID& instead of LLUUID to setUUIDValue; remove superfluous NULL pointer check --- linden/indra/llxml/llxmlnode.cpp | 5 +---- linden/indra/llxml/llxmlnode.h | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/llxml/llxmlnode.cpp b/linden/indra/llxml/llxmlnode.cpp index 5bb5012..0e2f9a2 100644 --- a/linden/indra/llxml/llxmlnode.cpp +++ b/linden/indra/llxml/llxmlnode.cpp @@ -499,10 +499,7 @@ void XMLCALL StartXMLNode(void *userData, pos += 2; } - if (parent) - { - parent->addChild(new_node); - } + parent->addChild(new_node); } void XMLCALL EndXMLNode(void *userData, diff --git a/linden/indra/llxml/llxmlnode.h b/linden/indra/llxml/llxmlnode.h index ab1a772..d71a221 100644 --- a/linden/indra/llxml/llxmlnode.h +++ b/linden/indra/llxml/llxmlnode.h @@ -245,7 +245,7 @@ public: void setFloatValue(const F32 value, Encoding encoding = ENCODING_DEFAULT, U32 precision = 0) { setFloatValue(1, &value, encoding); } void setDoubleValue(const F64 value, Encoding encoding = ENCODING_DEFAULT, U32 precision = 0) { setDoubleValue(1, &value, encoding); } void setStringValue(const std::string& value) { setStringValue(1, &value); } - void setUUIDValue(const LLUUID value) { setUUIDValue(1, &value); } + void setUUIDValue(const LLUUID& value) { setUUIDValue(1, &value); } void setNodeRefValue(const LLXMLNode *value) { setNodeRefValue(1, &value); } void setBoolValue(U32 length, const BOOL *array); -- cgit v1.1 From f0e9b30faea4c4b9a9957fa24bfc355e276e3e1d Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Thu, 30 Jun 2011 08:21:57 +0200 Subject: Linux64: don't use -ffast-math for release builds, it didn't do anything for us. But lloctree crashes teleporting to mega regions using -ffast-math . --- linden/indra/cmake/00-Common.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/00-Common.cmake b/linden/indra/cmake/00-Common.cmake index 7d50f25..d92aa0f 100644 --- a/linden/indra/cmake/00-Common.cmake +++ b/linden/indra/cmake/00-Common.cmake @@ -195,7 +195,8 @@ if (LINUX) # This rather needs to be done elsewhere # anyway these are the flags for the 64bit releases: add_definitions(-DLINUX64=1 -pipe) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fomit-frame-pointer -mmmx -msse -mfpmath=sse -msse2 -ffast-math -ftree-vectorize -fweb -fexpensive-optimizations -frename-registers") + # with -ffast-math lloctree crashes teleporting to mega regions, and it didn't do much for us anyway + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fomit-frame-pointer -mmmx -msse -mfpmath=sse -msse2 -ftree-vectorize -fweb -fexpensive-optimizations -frename-registers") endif (${ARCH} STREQUAL "x86_64") set(CMAKE_CXX_FLAGS_RELEASESSE2 "${CMAKE_CXX_FLAGS_RELEASESSE2} -mfpmath=sse2 -msse2") endif (VIEWER) -- cgit v1.1 From dd868b608fc9d39acc16b2423d74a09eddbc4501 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 8 Jul 2011 17:05:44 +0200 Subject: improve the voiceclient shutdown a bit --- linden/indra/newview/llvoiceclient.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp index 946b289..07d2fa9 100644 --- a/linden/indra/newview/llvoiceclient.cpp +++ b/linden/indra/newview/llvoiceclient.cpp @@ -1209,13 +1209,22 @@ void LLVoiceClient::terminate() // ms_sleep(2000); gVoiceClient->connectorShutdown(); gVoiceClient->closeSocket(); // Need to do this now -- bad things happen if the destructor does it later. - - // This will do unpleasant things on windows. -// killGateway(); - + + LL_DEBUGS("IdleCallbacks") << "IdleCallbacks deleteFunction " + << "called from LLVoiceClient" << LL_ENDL; + gIdleCallbacks.deleteFunction(idle, gVoiceClient); + + if (isGatewayRunning()) + { + // This will do unpleasant things on windows. + // AW: no unpleasant things observed on windows, + // guess they came from sloppy cleanup. + killGateway(); + } + // Don't do this anymore -- LLSingleton will take care of deleting the object. // delete gVoiceClient; - + // Hint to other code not to access the voice client anymore. gVoiceClient = NULL; } -- cgit v1.1 From eceee44dd3c990c536574aafa0a0084e9c8c7c57 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 8 Jul 2011 16:43:43 +0200 Subject: Linux: update OpenAL to 1.13.0 for Linux64 the 32bit compatibility libs (32bit openal et al.) are now integrated into the openal package. --- linden/indra/cmake/ViewerMiscLibs.cmake | 6 ------ linden/indra/newview/viewer_manifest.py | 23 +++++++++++++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/ViewerMiscLibs.cmake b/linden/indra/cmake/ViewerMiscLibs.cmake index 38d0444..bf33490 100644 --- a/linden/indra/cmake/ViewerMiscLibs.cmake +++ b/linden/indra/cmake/ViewerMiscLibs.cmake @@ -5,18 +5,12 @@ if (NOT STANDALONE) use_prebuilt_binary(libuuid) use_prebuilt_binary(vivox) if(LINUX) - if (${ARCH} STREQUAL "x86_64") - use_prebuilt_binary(32bitcompatibilitylibs) - endif (${ARCH} STREQUAL "x86_64") use_prebuilt_binary(fontconfig) endif(LINUX) else (NOT STANDALONE) # Download there even when using standalone. set(STANDALONE OFF) use_prebuilt_binary(vivox) - if(LINUX AND ${ARCH} STREQUAL "x86_64") - use_prebuilt_binary(32bitcompatibilitylibs) - endif(LINUX AND ${ARCH} STREQUAL "x86_64") set(STANDALONE ON) endif(NOT STANDALONE) diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index a0b9d77..190b48a 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py @@ -938,8 +938,12 @@ class Linux_i686Manifest(LinuxManifest): self.path("libz.so.1") # OpenAL - self.path("libopenal.so.1.12.854", "libopenal.so.1") - self.path("libalut.so.0.1.0", "libalut.so.0") + self.path("libalut.so") + self.path("libalut.so.0") + self.path("libalut.so.0.0.0") + self.path("libopenal.so") + self.path("libopenal.so.1") + self.path("libopenal.so.1.13.0") # GTK+ and dependencies ## Lets just use the system libraries for all of these: @@ -1028,7 +1032,6 @@ class Linux_i686Manifest(LinuxManifest): self.end_prefix("bin") if self.prefix(src="vivox-runtime/i686-linux", dst="lib"): - self.path("libalut.so") self.path("libortp.so") self.path("libvivoxsdk.so") self.end_prefix("lib") @@ -1071,8 +1074,13 @@ class Linux_x86_64Manifest(LinuxManifest): #self.path("libz.so.1") #not needed # OpenAL - self.path("libopenal.so.1.12.854", "libopenal.so.1") - self.path("libalut.so.0.1.0", "libalut.so.0") + self.path("libopenal.so") + self.path("libopenal.so.1") + self.path("libopenal.so.1.13.0") + self.path("libalut.so") + self.path("libalut.so.0") + self.path("libalut.so.0.0.0") + # GTK+ and dependencies ## Lets just use the system libraries for all of these: ##self.path("libatk-1.0.so.0") @@ -1169,9 +1177,12 @@ class Linux_x86_64Manifest(LinuxManifest): # 32bit libs needed for voice if self.prefix("../../libraries/x86_64-linux/lib_release_client/32bit-compat", dst="lib32"): self.path("libalut.so") + self.path("libalut.so.0") + self.path("libalut.so.0.0.0") self.path("libidn.so.11") + self.path("libopenal.so") self.path("libopenal.so.1") - # self.path("libortp.so") + self.path("libopenal.so.1.13.0") self.path("libuuid.so.1") self.end_prefix("lib32") -- cgit v1.1 From aa9215f34d1126b2b502b46e3dc07397fab4ac3d Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Thu, 14 Jul 2011 11:00:47 +0200 Subject: Linux: remove libxml2 dependency. This might also be possible on other platforms, the newer your gstreamer is, the easier to get rid of libxml2. --- linden/indra/cmake/GStreamer010Plugin.cmake | 23 ++++++++++++++++------- linden/indra/newview/viewer_manifest.py | 2 -- 2 files changed, 16 insertions(+), 9 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/GStreamer010Plugin.cmake b/linden/indra/cmake/GStreamer010Plugin.cmake index 9d2c553..d05cb9c 100644 --- a/linden/indra/cmake/GStreamer010Plugin.cmake +++ b/linden/indra/cmake/GStreamer010Plugin.cmake @@ -21,13 +21,22 @@ else (STANDALONE) ${LIBS_PREBUILT_DIR}/include/libxml2 ) else (WINDOWS) - use_prebuilt_binary(glib) # gstreamer needs glib - use_prebuilt_binary(libxml) - set(GSTREAMER010_INCLUDE_DIRS - ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/gstreamer-0.10 - ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0 - ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/libxml2 - ) + use_prebuilt_binary(glib) # gstreamer needs glib + if (DARWIN) + + use_prebuilt_binary(libxml) + set(GSTREAMER010_INCLUDE_DIRS + ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/gstreamer-0.10 + ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0 + ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/libxml2 + ) + else (DARWIN) + add_definitions(-DGST_DISABLE_XML -DGST_DISABLE_LOADSAVE) + set(GSTREAMER010_INCLUDE_DIRS + ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/gstreamer-0.10 + ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0 + ) + endif (DARWIN) endif (WINDOWS) endif (STANDALONE) diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 190b48a..9ad43ad 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py @@ -933,7 +933,6 @@ class Linux_i686Manifest(LinuxManifest): self.path("libSDL-1.2.so.0") self.path("libELFIO.so") self.path("libopenjpeg.so.2") - self.path("libxml2.so.2") self.path("libz.so") self.path("libz.so.1") @@ -1070,7 +1069,6 @@ class Linux_x86_64Manifest(LinuxManifest): self.path("libjpeg.so.7") self.path("libpng12.so.0") self.path("libopenjpeg.so.2") - self.path("libxml2.so.2") #self.path("libz.so.1") #not needed # OpenAL -- cgit v1.1 From 5c069f43e5776a7956daa5c26a86e9bf0389850b Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Mon, 20 Jun 2011 19:07:47 +0200 Subject: use qt/webkit 4.7.4 on linux --- linden/indra/cmake/WebKitLibPlugin.cmake | 7 ++- linden/indra/cmake/ZLIB.cmake | 6 +- .../media_plugins/webkit/media_plugin_webkit.cpp | 3 + linden/indra/newview/llfloaterabout.cpp | 5 +- linden/indra/newview/viewer_manifest.py | 64 +++++----------------- 5 files changed, 32 insertions(+), 53 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/WebKitLibPlugin.cmake b/linden/indra/cmake/WebKitLibPlugin.cmake index a4befa4..034eed5 100644 --- a/linden/indra/cmake/WebKitLibPlugin.cmake +++ b/linden/indra/cmake/WebKitLibPlugin.cmake @@ -29,6 +29,9 @@ if (STANDALONE) set(WEBKITLIBPLUGIN OFF CACHE BOOL "WEBKITLIBPLUGIN support for the llplugin/llmedia test apps.") else (STANDALONE) + if(LINUX) + use_prebuilt_binary(kokua-qt) + endif(LINUX) use_prebuilt_binary(llqtwebkit) set(WEBKITLIBPLUGIN ON CACHE BOOL "WEBKITLIBPLUGIN support for the llplugin/llmedia test apps.") @@ -62,8 +65,6 @@ elseif (LINUX) else (STANDALONE) set(WEBKIT_PLUGIN_LIBRARIES llqtwebkit - qgif - qjpeg QtWebKit QtOpenGL QtNetwork @@ -74,6 +75,8 @@ elseif (LINUX) X11 Xrender GL + jscore ) + endif (STANDALONE) endif (WINDOWS) diff --git a/linden/indra/cmake/ZLIB.cmake b/linden/indra/cmake/ZLIB.cmake index 48e5130..8a16a0e 100644 --- a/linden/indra/cmake/ZLIB.cmake +++ b/linden/indra/cmake/ZLIB.cmake @@ -17,6 +17,10 @@ else (STANDALONE) set(ZLIB_LIBRARIES z) endif (WINDOWS) if (WINDOWS OR LINUX) - set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib) + if(LINUX AND ${ARCH} STREQUAL "x86_64") + set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) + else(LINUX AND ${ARCH} STREQUAL "x86_64") + set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib) + endif(LINUX AND ${ARCH} STREQUAL "x86_64") endif (WINDOWS OR LINUX) endif (STANDALONE) diff --git a/linden/indra/media_plugins/webkit/media_plugin_webkit.cpp b/linden/indra/media_plugins/webkit/media_plugin_webkit.cpp index 4a00557..2cae8d2 100755 --- a/linden/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/linden/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -81,6 +81,7 @@ extern "C" { #ifdef LL_STANDALONE #include #elif defined(LL_LINUX) + // We don't provide Qt headers for non-standalone, therefore define this here. // Our prebuilt is built with QT_NAMESPACE undefined. #define QT_MANGLE_NAMESPACE(name) name @@ -1156,7 +1157,9 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) std::string url = message_in.getValue("url"); if ( 404 == code ) // browser lib only supports 404 right now { +#if LLQTWEBKIT_API_VERSION < 8 LLQtWebKit::getInstance()->set404RedirectUrl( mBrowserWindowId, url ); +#endif }; } else if(message_name == "set_user_agent") diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp index 13795e5..06bee7d 100644 --- a/linden/indra/newview/llfloaterabout.cpp +++ b/linden/indra/newview/llfloaterabout.cpp @@ -261,8 +261,11 @@ LLFloaterAbout::LLFloaterAbout() support.append("\n"); // TODO: Implement media plugin version query - +#if LL_LINUX + support.append("Qt Webkit Version: 4.7.4 (version number hard-coded)"); +#else support.append("Qt Webkit Version: 4.6 (version number hard-coded)"); +#endif support.append("\n"); if (gPacketsIn > 0) diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 9ad43ad..c13cf1a 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py @@ -1059,19 +1059,30 @@ class Linux_x86_64Manifest(LinuxManifest): self.path("libapr-1.so.0") self.path("libaprutil-1.so.0") self.path("libdb-4.2.so") - self.path("libcrypto.so.0.9.8") + self.path("libcrypto.so") + self.path("libcrypto.so.1.0.0") self.path("libexpat.so.1") self.path("libhunspell-1.2.so.0.0.0", "libhunspell-1.2.so.0") - self.path("libssl.so.0.9.8") + self.path("libssl.so") + self.path("libssl.so.1.0.0") self.path("libuuid.so", "libuuid.so.1") self.path("libSDL-1.2.so.0") self.path("libELFIO.so") self.path("libjpeg.so.7") self.path("libpng12.so.0") self.path("libopenjpeg.so.2") - #self.path("libz.so.1") #not needed + self.path("libcares.so") + self.path("libcares.so.2") + self.path("libcares.so.2.0.0") + self.path("libcurl.so") + self.path("libcurl.so.4") + self.path("libcurl.so.4.2.0") + self.path("libz.so.1.2.5") + self.path("libz.so.1") + self.path("libz.so") # OpenAL + self.path("libopenal.so") self.path("libopenal.so.1") self.path("libopenal.so.1.13.0") @@ -1112,54 +1123,9 @@ class Linux_x86_64Manifest(LinuxManifest): #self.path("libgsttag-0.10.so.0") #self.path("libgstvideo-0.10.so.0") - ## Gstreamer plugin dependencies - #self.path("libfaad.so.0") - #self.path("libogg.so.0") - #self.path("libtheora.so.0") - #self.path("libvorbis.so.0") - #self.path("libvorbisenc.so.2") - #self.path("liboil-0.3.so.0") - ## Gstreamer plugins - #if self.prefix("gstreamer-plugins"): - #self.path("libgstalsa.so") - #self.path("libgstasf.so") - #self.path("libgstaudioconvert.so") - #self.path("libgstaudioresample.so") - #self.path("libgstautodetect.so") - #self.path("libgstavi.so") - #self.path("libgstcoreelements.so") - #self.path("libgstcoreindexers.so") - #self.path("libgstdecodebin2.so") - #self.path("libgstdecodebin.so") - #self.path("libgstesd.so") - #self.path("libgstfaad.so") - #self.path("libgstffmpeg.so") - #self.path("libgstffmpegcolorspace.so") - #self.path("libgstgnomevfs.so") - #self.path("libgsticydemux.so") - #self.path("libgstid3demux.so") - #self.path("libgstmpegdemux.so") - #self.path("libgstmultifile.so") - #self.path("libgstmultipart.so") - #self.path("libgstogg.so") - #self.path("libgstossaudio.so") - #self.path("libgstplaybin.so") - #self.path("libgstpulse.so") - #self.path("libgstqtdemux.so") - #self.path("libgstqueue2.so") - #self.path("libgsttcp.so") - #self.path("libgsttheora.so") - #self.path("libgsttypefindfunctions.so") - #self.path("libgstudp.so") - #self.path("libgstvideoscale.so") - #self.path("libgstvolume.so") - #self.path("libgstvorbis.so") - #self.path("libgstwavparse.so") - - #self.end_prefix("gstreamer-plugins") self.end_prefix("lib64") - + # Vivox runtimes and libs if self.prefix(src="vivox-runtime/i686-linux", dst="bin"): -- cgit v1.1 From 64db97e226ec993b7336fe8ede0a00c938afdc61 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Sun, 13 Nov 2011 14:31:42 +0100 Subject: Linux: allow cross compiling the 32bit viewer on a x86_64 platform to do so: (have anything for crosscompiling installed), export WORD_SIZE='32' before configuring and/or building. Be aware: Mixing several platforms in one root directory probably wont work (didn't try though). Cross compiling the 64bit viewer on a i686 platform isn't tested, but probably will work using export WORD_SIZE='64' --- linden/indra/cmake/00-Common.cmake | 9 +++++++++ linden/indra/cmake/Variables.cmake | 26 ++++++++++++++++++++++++-- linden/indra/develop.py | 20 ++++++++++++++++---- 3 files changed, 49 insertions(+), 6 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/cmake/00-Common.cmake b/linden/indra/cmake/00-Common.cmake index d92aa0f..81bfbdf 100644 --- a/linden/indra/cmake/00-Common.cmake +++ b/linden/indra/cmake/00-Common.cmake @@ -233,6 +233,15 @@ if (LINUX OR DARWIN) set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}") + + if (WORD_SIZE EQUAL 32) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") + elseif (WORD_SIZE EQUAL 64) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64") + endif (WORD_SIZE EQUAL 32) + endif (LINUX OR DARWIN) diff --git a/linden/indra/cmake/Variables.cmake b/linden/indra/cmake/Variables.cmake index eb9c004..6b7ded3 100644 --- a/linden/indra/cmake/Variables.cmake +++ b/linden/indra/cmake/Variables.cmake @@ -50,8 +50,30 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows") if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(LINUX ON BOOl FORCE) - execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/ - OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) + + # If someone has specified a word size, use that to determine the + # architecture. Otherwise, let the architecture specify the word size. + + if ("$ENV{WORD_SIZE}" MATCHES "32") + set(WORD_SIZE 32) + elseif ("$ENV{WORD_SIZE}" MATCHES "64") + set(WORD_SIZE 64) + endif () + + if (WORD_SIZE EQUAL 32) + set(ARCH i686) + elseif (WORD_SIZE EQUAL 64) + set(ARCH x86_64) + else (WORD_SIZE EQUAL 32) + execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/ + OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) + if (ARCH STREQUAL x86_64) + set(WORD_SIZE 64) + else (ARCH STREQUAL x86_64) + set(WORD_SIZE 32) + endif (ARCH STREQUAL x86_64) + endif (WORD_SIZE EQUAL 32) + set(LL_ARCH ${ARCH}_linux) set(LL_ARCH_DIR ${ARCH}-linux) endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") diff --git a/linden/indra/develop.py b/linden/indra/develop.py index 8b23b1d..2f07e9e 100755 --- a/linden/indra/develop.py +++ b/linden/indra/develop.py @@ -223,14 +223,26 @@ class UnixSetup(PlatformSetup): def arch(self): cpu = os.uname()[-1] + word_size = os.environ.get('WORD_SIZE') if cpu.endswith('386'): cpu = 'i386' + if word_size == '64': + cpu = 'x86_64' elif cpu.endswith('86'): - cpu = 'i686' + if word_size == '64': + cpu = 'x86_64' + else: + cpu = 'i686' elif cpu in ('x86_64'): - cpu = 'x86_64' - elif cpu in ('athlon',): - cpu = 'i686' + if word_size == '32': + cpu = 'i686' + else: + cpu = 'x86_64' + elif cpu in ('athlon',): + if word_size == '64': + cpu = 'x86_64' + else: + cpu = 'i686' elif cpu == 'Power Macintosh': cpu = 'ppc' return cpu -- cgit v1.1 From 89482e614a337069905a4f77300e280b3e19fe9e Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Sun, 25 Dec 2011 13:15:21 +0100 Subject: disable voice if ParcelVoiceInfoRequest response is malformed. Seen (empty LLSD) in OSGrid Mumble Sandbox. Without a "voice_credentials" key the client never connects to the server, but would retry in vain to do so. Note to OpenSim devs: the "channel_uri" of the ParcelVoiceInfoRequest response is parsed to identify if we are connecting to a mumble server on parcel change. The presence of "sip:" within the uri is interpreted as connecting to vivox/freeswitch, the absence as connecting to a mumble server. However it would be much better to add a "server_type" key to the response, which could hold a string like "mumble", "freeswitch", etc - the absence would indicate connecting to a legacy(like) voice server. Additional note: to detect a mumble server also of the VoiceAccountProvision response the voice_account_server_uri is parsed: If the uri starts with tcp:// the "mumble" client is loaded(by default, you can change it in the "VoiceModuleMumble" debug setting), for any other scheme "SLVoice" (default, "VoiceModuleVivox" debug setting). --- linden/indra/newview/llvoiceclient.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'linden/indra') diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp index 07d2fa9..3cf15fc 100644 --- a/linden/indra/newview/llvoiceclient.cpp +++ b/linden/indra/newview/llvoiceclient.cpp @@ -1051,6 +1051,11 @@ void LLVoiceClientCapResponder::result(const LLSD& content) gVoiceClient->setSpatialChannel(uri, credentials, mResponseID); } + else + { + llwarns << "ParcelVoiceInfoRequest response malformed, disabling voice." << llendl; + gVoiceClient->close(); + } } @@ -1771,11 +1776,13 @@ void LLVoiceClient::close() { LL_DEBUGS("VoiceSession") << "Cancel Session: LLVoiceClient::close() called." << llendl; + mAccountActive = false; setState(stateDisableCleanup); } void LLVoiceClient::start() { + mAccountActive = true; setState(stateStart); } @@ -7207,6 +7214,11 @@ class LLViewerParcelVoiceInfo : public LLHTTPNode gVoiceClient->setPIRCapResponseID(response_id); gVoiceClient->setSpatialChannel(uri, credentials, response_id); } + else + { + llwarns << "ParcelVoiceInfoRequest response malformed, disabling voice." << llendl; + gVoiceClient->close(); + } } } }; -- cgit v1.1