From e4a0dda457039b1a04c74024d9fbcf02e071b13d Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 28 Jun 2012 14:24:04 -0400 Subject: SH-3228 WIP - always respond to processAppearance for self, convert baked textures to checkerboards --- indra/llcommon/imageids.cpp | 3 +++ indra/llcommon/imageids.h | 1 + 2 files changed, 4 insertions(+) mode change 100644 => 100755 indra/llcommon/imageids.cpp mode change 100644 => 100755 indra/llcommon/imageids.h (limited to 'indra/llcommon') diff --git a/indra/llcommon/imageids.cpp b/indra/llcommon/imageids.cpp old mode 100644 new mode 100755 index fe11465221..7d647e5c36 --- a/indra/llcommon/imageids.cpp +++ b/indra/llcommon/imageids.cpp @@ -68,3 +68,6 @@ const LLUUID TERRAIN_MOUNTAIN_DETAIL ("303cd381-8560-7579-23f1-f0a880799740"); / const LLUUID TERRAIN_ROCK_DETAIL ("53a2f406-4895-1d13-d541-d2e3b86bc19c"); // VIEWER const LLUUID DEFAULT_WATER_NORMAL ("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); // VIEWER + +const LLUUID IMG_CHECKERBOARD_RGBA ("2585a0f3-4163-6dd1-0f34-ad48cb909e25"); // dataserver + diff --git a/indra/llcommon/imageids.h b/indra/llcommon/imageids.h old mode 100644 new mode 100755 index e0c2683fdc..18c8ecb074 --- a/indra/llcommon/imageids.h +++ b/indra/llcommon/imageids.h @@ -66,4 +66,5 @@ LL_COMMON_API extern const LLUUID TERRAIN_ROCK_DETAIL; LL_COMMON_API extern const LLUUID DEFAULT_WATER_NORMAL; +LL_COMMON_API extern const LLUUID IMG_CHECKERBOARD_RGBA; #endif -- cgit v1.3 From 8808325ced4d380d937c9be1cc81e20a5ebb5f62 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Fri, 14 Sep 2012 11:27:04 +0000 Subject: Removed appearance utility from viewer source. Added appearance utility autobuild package. --- BuildParams | 4 + autobuild.xml | 26 ++ build.sh | 39 +- debian/changelog | 6 - debian/control | 8 - debian/copyright | 33 +- debian/rules | 43 -- debian/secondlife-appearance-utility.substvars | 1 - indra/CMakeLists.txt | 5 +- indra/appearance_utility/CMakeLists.txt | 66 --- indra/appearance_utility/appearance_utility.cpp | 66 --- .../appearance_utility/llappappearanceutility.cpp | 445 --------------------- indra/appearance_utility/llappappearanceutility.h | 97 ----- indra/appearance_utility/llbakingavatar.cpp | 159 -------- indra/appearance_utility/llbakingavatar.h | 125 ------ indra/appearance_utility/llbakingjoint.cpp | 54 --- indra/appearance_utility/llbakingjoint.h | 44 -- indra/appearance_utility/llbakingjointmesh.cpp | 43 -- indra/appearance_utility/llbakingjointmesh.h | 43 -- indra/appearance_utility/llbakingprocess.h | 55 --- indra/appearance_utility/llbakingshadermgr.cpp | 226 ----------- indra/appearance_utility/llbakingshadermgr.h | 137 ------- indra/appearance_utility/llbakingtexlayer.cpp | 51 --- indra/appearance_utility/llbakingtexlayer.h | 43 -- indra/appearance_utility/llprocessparams.cpp | 53 --- indra/appearance_utility/llprocessparams.h | 42 -- indra/appearance_utility/wrapper.sh | 25 -- indra/cmake/LLAppearanceUtility.cmake | 12 + indra/llcommon/llversionserver.h | 2 +- indra/llcommon/llversionviewer.h | 2 +- indra/newview/English.lproj/InfoPlist.strings | 4 +- indra/newview/Info-SecondLife.plist | 2 +- indra/newview/res/viewerRes.rc | 8 +- 33 files changed, 118 insertions(+), 1851 deletions(-) delete mode 100644 debian/secondlife-appearance-utility.substvars delete mode 100644 indra/appearance_utility/CMakeLists.txt delete mode 100644 indra/appearance_utility/appearance_utility.cpp delete mode 100644 indra/appearance_utility/llappappearanceutility.cpp delete mode 100644 indra/appearance_utility/llappappearanceutility.h delete mode 100644 indra/appearance_utility/llbakingavatar.cpp delete mode 100644 indra/appearance_utility/llbakingavatar.h delete mode 100644 indra/appearance_utility/llbakingjoint.cpp delete mode 100644 indra/appearance_utility/llbakingjoint.h delete mode 100644 indra/appearance_utility/llbakingjointmesh.cpp delete mode 100644 indra/appearance_utility/llbakingjointmesh.h delete mode 100644 indra/appearance_utility/llbakingprocess.h delete mode 100644 indra/appearance_utility/llbakingshadermgr.cpp delete mode 100644 indra/appearance_utility/llbakingshadermgr.h delete mode 100644 indra/appearance_utility/llbakingtexlayer.cpp delete mode 100644 indra/appearance_utility/llbakingtexlayer.h delete mode 100644 indra/appearance_utility/llprocessparams.cpp delete mode 100644 indra/appearance_utility/llprocessparams.h delete mode 100755 indra/appearance_utility/wrapper.sh create mode 100644 indra/cmake/LLAppearanceUtility.cmake (limited to 'indra/llcommon') diff --git a/BuildParams b/BuildParams index ebfc640023..cfe21696b0 100644 --- a/BuildParams +++ b/BuildParams @@ -8,9 +8,13 @@ Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2" CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2" Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2" +variants=Release + # Use Public Upload Locations public_build = true +clean_on_success = false + # skip windows debug build until we can get a fix in. build_CYGWIN_Debug = false diff --git a/autobuild.xml b/autobuild.xml index a86c8fd866..28964b1d5f 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1239,6 +1239,32 @@ + llappearanceutility-source + + license + TEMPORARY + license_file + LICENSES/llappearanceutility.txt + name + llappearanceutility-source + platforms + + linux + + archive + + hash + a1197a789ccedb6cdd9d8aeb30e52b1b + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llappearanceutility-source/rev/264759/arch/Linux/installer/llappearanceutility_source-0.1-linux-20120914.tar.bz2 + + name + linux + + + version + 0.1 + llphysicsextensions_source license diff --git a/build.sh b/build.sh index 2f4f440a92..a85d4af6fc 100755 --- a/build.sh +++ b/build.sh @@ -113,11 +113,23 @@ build() check_for "Before 'autobuild build'" ${build_dir}/packages/dictionaries "$AUTOBUILD" build --no-configure -c $variant - viewer_build_ok=$? + build_ok=$? end_section "Viewer$variant" + + # Run build extensions + if [ $build_ok -eq 0 -a -d ${build_dir}/packages/build-extensions ]; then + for extension in ${build_dir}/packages/build-extensions/*.sh; do + . $extension + if [ $build_ok -ne 0 ]; then + break + fi + done + fi + + # *TODO: Make this a build extension. package_llphysicsextensions_tpv tpvlib_build_ok=$? - if [ $viewer_build_ok -eq 0 -a $tpvlib_build_ok -eq 0 ] + if [ $build_ok -eq 0 -a $tpvlib_build_ok -eq 0 ] then echo true >"$build_dir"/build_ok else @@ -299,7 +311,7 @@ then then if $build_viewer_deb && [ "$last_built_variant" == "Release" ] then - begin_section "Build Debian Package" + begin_section "Build Viewer Debian Package" # mangle the changelog dch --force-bad-version \ --distribution unstable \ @@ -313,7 +325,16 @@ then # Unmangle the changelog file hg revert debian/changelog - end_section "Build Debian Package" + end_section "Build Viewer Debian Package" + + # Run debian extensions + if [ -d ${build_dir}/packages/debian-extensions ]; then + for extension in ${build_dir}/packages/debian-extensions/*.sh; do + . $extension + done + fi + # Move any .deb results. + mv ${build_dir}/packages/*.deb ../ 2>/dev/null || true # upload debian package and create repository begin_section "Upload Debian Repository" @@ -394,8 +415,9 @@ then do upload_item symbolfile "$build_dir/$symbolfile" binary/octet-stream done - + # Upload the llphysicsextensions_tpv package, if one was produced + # *TODO: Make this an upload-extension if [ -r "$build_dir/llphysicsextensions_package" ] then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) @@ -409,6 +431,13 @@ then ;; esac + # Run upload extensions + if [ -d ${build_dir}/packages/upload-extensions ]; then + for extension in ${build_dir}/packages/upload-extensions/*.sh; do + . $extension + done + fi + # Upload stub installers upload_stub_installers "$build_dir_stubs" fi diff --git a/debian/changelog b/debian/changelog index b3df2fcab3..ce54b54c6f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,3 @@ -secondlife-viewer (0.4) unstable; urgency=low - - * Adding appearance utility package - - -- Don Kjer Thu, 06 Sep 2012 19:32:55 +0000 - secondlife-viewer (0.3) unstable; urgency=low * Initial debian configuration diff --git a/debian/control b/debian/control index 9ebd71df65..50b9ed9a26 100644 --- a/debian/control +++ b/debian/control @@ -14,11 +14,3 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, Description: Second Life Viewer Second Life is an online virtual world developed by Linden Lab. -Package: secondlife-appearance-utility -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, - ia32-libs, - ia32-libs-gtk -Description: Second Life Appearance Utility - Utility for manipulating Second Life avatar appearance. - diff --git a/debian/copyright b/debian/copyright index ecfceb3927..106fa3802f 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,7 +1,32 @@ -Copyright: 2012 Linden Research, Inc. +Second Life Viewer Copyright: 2000-2012 Linden Research, Inc. License: -No license to distribute, copy, modify, or make derivitave works of this -software is granted unless specifically granted in writing by Linden Research, -Inc. +3Dconnexion SDK Copyright (C) 1992-2009 3Dconnexion +APR Copyright (C) 2011 The Apache Software Foundation +Collada DOM Copyright 2006 Sony Computer Entertainment Inc. +cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se) +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. +expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. +FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg. +GL Copyright (C) 1999-2004 Brian Paul. +GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. +google-perftools Copyright (c) 2005, Google Inc. +Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeglib Copyright (C) 1991-1998, Thomas G. Lane. +ogg/vorbis Copyright (C) 2002, Xiphophorus +OpenSSL Copyright (C) 1998-2008 The OpenSSL Project. +PCRE Copyright (c) 1997-2012 University of Cambridge +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +xmlrpc-epi Copyright (C) 2000 Epinions, Inc. +zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler. + +Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details. + +This software contains source code provided by NVIDIA Corporation. + +All rights reserved. See licenses.txt for details. + +Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) diff --git a/debian/rules b/debian/rules index 10301bf7d3..305fc58bb4 100755 --- a/debian/rules +++ b/debian/rules @@ -17,12 +17,6 @@ VIEWER_DESTDIR=$(CURDIR)/debian/$(VIEWER_PKG) VIEWER_VERSION:=$(shell dpkg-parsechangelog | grep ^Version | sed 's/^Version: //') VIEWER_INSTALLDIR:=$(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION) -UTILITY_PKG=secondlife-appearance-utility -UTILITY_SRCDIR=indra/appearance_utility -UTILITY_PACKAGEDIR=build-linux-i686/appearance_utility -UTILITY_DESTDIR=$(CURDIR)/debian/$(UTILITY_PKG) -UTILITY_INSTALLDIR:=$(BASEDIR)/utilities - configure: configure-stamp configure-stamp: dh_testdir @@ -77,43 +71,6 @@ install: build dh_link -p $(VIEWER_PKG) /$(VIEWER_INSTALLDIR)/secondlife /usr/bin/secondlife dh_link -p $(VIEWER_PKG) $(BASEDIR)/viewer/SecondLife-i686-$(VIEWER_VERSION) $(BASEDIR)/viewer/SecondLife - # Add here commands to install the package into debian/secondlife-appearance-utility - # create containing directory - install -v -m 755 -o root -g root -d "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)" - # install utility wrapper - install -v -m 755 -o root -g root "$(UTILITY_SRCDIR)/wrapper.sh" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/wrapper.sh" - # install appearance-utility - install -v -m 755 -o root -g root "$(UTILITY_PACKAGEDIR)/appearance-utility-bin" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/appearance-utility-bin" - dh_link -p $(UTILITY_PKG) $(UTILITY_INSTALLDIR)/wrapper.sh $(UTILITY_INSTALLDIR)/appearance-utility - # install xml/image resources from viewer package - for file in $$(find $(VIEWER_PACKAGEDIR)/character -name "avatar_*.xml" -o -name "*.tga" | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \ - # create containing directory \ - install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \ - PERM=644; \ - if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \ - PERM=755; \ - fi; \ - install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \ - done - # install viewer libraries - for file in $$(find $(VIEWER_PACKAGEDIR)/lib -type f -o -type l | sed 's~$(VIEWER_PACKAGEDIR)/~~'); do \ - # create containing directory \ - install -v -m 755 -o root -g root -d "$$(dirname "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file")"; \ - PERM=644; \ - if [ -x "$(VIEWER_PACKAGEDIR)/$$file" ]; then \ - PERM=755; \ - fi; \ - if [ -L "$(VIEWER_PACKAGEDIR)/$$file" ]; then \ - REAL="$$( readlink -f $(VIEWER_PACKAGEDIR)/$$file )"; \ - RELATIVE="$$( echo $$REAL | sed 's~$(CURDIR)/$(VIEWER_PACKAGEDIR)/~~' )"; \ - echo dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \ - dh_link -p $(UTILITY_PKG) "$(UTILITY_INSTALLDIR)/$$RELATIVE" "$(UTILITY_INSTALLDIR)/$$file" ; \ - else \ - install -v -m $$PERM -o root -g root "$(VIEWER_PACKAGEDIR)/$$file" "$(UTILITY_DESTDIR)/$(UTILITY_INSTALLDIR)/$$file"; \ - fi; \ - done - dh_link -p $(UTILITY_PKG) /$(UTILITY_INSTALLDIR)/appearance-utility /usr/bin/appearance-utility - # Build architecture-independent files here. binary-indep: build install diff --git a/debian/secondlife-appearance-utility.substvars b/debian/secondlife-appearance-utility.substvars deleted file mode 100644 index abd3ebebc3..0000000000 --- a/debian/secondlife-appearance-utility.substvars +++ /dev/null @@ -1 +0,0 @@ -misc:Depends= diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 4e209ff75a..f5ed9632fa 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -83,7 +83,10 @@ if (VIEWER) if (LINUX) add_subdirectory(${VIEWER_PREFIX}linux_crash_logger) add_subdirectory(${VIEWER_PREFIX}linux_updater) - add_subdirectory(${VIEWER_PREFIX}appearance_utility) + if (INSTALL_PROPRIETARY) + include(LLAppearanceUtility) + add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR}) + endif (INSTALL_PROPRIETARY) add_dependencies(viewer linux-crash-logger-strip-target linux-updater) elseif (DARWIN) add_subdirectory(${VIEWER_PREFIX}mac_crash_logger) diff --git a/indra/appearance_utility/CMakeLists.txt b/indra/appearance_utility/CMakeLists.txt deleted file mode 100644 index 92898fa48b..0000000000 --- a/indra/appearance_utility/CMakeLists.txt +++ /dev/null @@ -1,66 +0,0 @@ -# -*- cmake -*- - -project(appearance_utility) - -include(00-Common) -include(LLAppearance) -include(LLCharacter) -include(LLCommon) -include(LLImage) -include(LLInventory) -include(LLMath) -include(LLRender) -include(LLVFS) -include(LLXML) -include(Linking) -include(GooglePerfTools) - -include_directories( - ${LLCOMMON_INCLUDE_DIRS} - ${LLVFS_INCLUDE_DIRS} - ${LLXML_INCLUDE_DIRS} - ${LLCHARACTER_INCLUDE_DIRS} - ${LLIMAGE_INCLUDE_DIRS} - ${LLMATH_INCLUDE_DIRS} - ${LLINVENTORY_INCLUDE_DIRS} - ${LLRENDER_INCLUDE_DIRS} - ${LLAPPEARANCE_INCLUDE_DIRS} - ) - -set(appearance_utility_SOURCE_FILES - appearance_utility.cpp - llappappearanceutility.cpp - llbakingavatar.cpp - llbakingjoint.cpp - llbakingjointmesh.cpp - llbakingshadermgr.cpp - llbakingtexlayer.cpp - llprocessparams.cpp - ) - -set(appearance_utility_HEADER_FILES - CMakeLists.txt - llappappearanceutility.h - llbakingavatar.h - llbakingjoint.h - llbakingjointmesh.h - llbakingprocess.h - llbakingshadermgr.h - llbakingtexlayer.h - llprocessparams.h - ) - -set_source_files_properties(${appearance_utility_HEADER_FILES} - PROPERTIES HEADER_FILES_ONLY TRUE) - -list(APPEND appearance_utility_SOURCE_FILES ${appearance_utility_HEADER_FILES}) - -add_executable(appearance-utility-bin ${appearance_utility_SOURCE_FILES}) - -target_link_libraries(appearance-utility-bin - ${LLAPPEARANCE_LIBRARIES} - ${TCMALLOC_LIBRARIES} - ) - -add_custom_target(appearance-utility-bin-target ALL - DEPENDS appearance-utility-bin) diff --git a/indra/appearance_utility/appearance_utility.cpp b/indra/appearance_utility/appearance_utility.cpp deleted file mode 100644 index 098c3550de..0000000000 --- a/indra/appearance_utility/appearance_utility.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @file appearance_utility.cpp - * @author Don Kjer , Nyx Linden - * @brief Utility for processing avatar appearance without a full viewer implementation. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -// linden includes -#include "linden_common.h" -#include "llapr.h" - -// project includes -#include "llappappearanceutility.h" - -int main(int argc, char** argv) -{ - // Create an application instance. - ll_init_apr(); - LLAppAppearanceUtility* app = new LLAppAppearanceUtility(argc, argv); - - // Assume success, unless exception is thrown. - EResult rv = RV_SUCCESS; - try - { - // Process command line and initialize system. - if (app->init()) - { - // Run process. - app->mainLoop(); - } - } - catch (LLAppException& e) - { - // Deal with errors. - rv = e.getStatusCode(); - } - - // Clean up application instance. - app->cleanup(); - delete app; - ll_cleanup_apr(); - - return (int) rv; -} - - diff --git a/indra/appearance_utility/llappappearanceutility.cpp b/indra/appearance_utility/llappappearanceutility.cpp deleted file mode 100644 index 66e59e1b89..0000000000 --- a/indra/appearance_utility/llappappearanceutility.cpp +++ /dev/null @@ -1,445 +0,0 @@ -/** - * @file llappappearanceutility.cpp - * @brief Implementation of LLAppAppearanceUtility class. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include -#include -#include - -// linden includes -#include "linden_common.h" - -#include "llapr.h" -#include "llerrorcontrol.h" -#include "llsd.h" -#include "llsdserialize.h" -#include "llsdutil.h" - -// appearance includes -#include "llavatarappearance.h" -#include "llwearabletype.h" - -// project includes -#include "llappappearanceutility.h" -#include "llbakingprocess.h" -#include "llprocessparams.h" - -const std::string NOTHING_EXTRA(""); - -//////////////////////////////////////////// -// LLAppException -//////////////////////////////////////////// - -static const std::string MESSAGE_RV_UNKNOWN("Unknown error."); -static const std::string MESSAGE_RV_ARGUMENTS -("Invalid arguments: "); -static const std::string MESSAGE_RV_UNABLE_OPEN("Unable to open file: "); -static const std::string MESSAGE_RV_UNABLE_TO_PARSE("Unable to parse input LLSD."); -static const std::string MESSAGE_DUPLICATE_MODES = "Cannot specify more than one process mode."; - - -LLAppException::LLAppException(EResult status_code, const std::string& extra) : - mStatusCode(status_code) -{ - switch(status_code) - { - case RV_UNKNOWN_ERROR: - printErrorLLSD("unknown", MESSAGE_RV_UNKNOWN); - case RV_BAD_ARGUMENTS: - printErrorLLSD("arguments", MESSAGE_RV_ARGUMENTS + extra); - break; - case RV_UNABLE_OPEN: - printErrorLLSD("file", MESSAGE_RV_UNABLE_OPEN + extra); - break; - case RV_UNABLE_TO_PARSE: - printErrorLLSD("input", MESSAGE_RV_UNABLE_TO_PARSE); - break; - default: - printErrorLLSD("arguments", "Unknown exception."); - break; - } -} - -void LLAppException::printErrorLLSD(const std::string& key, const std::string& message) -{ - LLSD error_llsd; - error_llsd["success"] = false; - error_llsd["error"]["key"] = key; - error_llsd["error"]["message"] = message; - - std::cerr << LLSDOStreamer(error_llsd); -} - - - -//////////////////////////////////////////// -// LLAppAppearanceUtility -//////////////////////////////////////////// - -///////// Option Parsing ///////// - -// Simple usage command. -class LLProcessUsage : public LLBakingProcess -{ -public: - LLProcessUsage(LLAppAppearanceUtility* app) : - LLBakingProcess(app) {} - /*virtual*/ void process(LLSD& input, std::ostream& output) - { - mApp->usage(output); - } -}; - - -static const apr_getopt_option_t APPEARANCE_UTILITY_OPTIONS[] = -{ - {"params", 'p', 0, "Generate appearance parameters for an agent."}, - {"output", 'o', 1, "The output file to write to. Default is stdout"}, - {"agent-id", 'a', 1, "The agent-id of the user."}, - //{"grid", 'g', 1, "The grid."}, - {"help", 'h', 0, "Print the help message."}, - {0, 0, 0, 0} -}; - -void LLAppAppearanceUtility::usage(std::ostream& ostr) -{ - ostr << "Utilities for processing agent appearance data." - << std::endl << std::endl - << "Usage:" << std::endl - << "\t" << mAppName << " [options] filename" << std::endl << std::endl - << "Will read from stdin if filename is set to '-'." << std::endl << std::endl - << "Options:" << std::endl; - const apr_getopt_option_t* option = &APPEARANCE_UTILITY_OPTIONS[0]; - while(option->name) - { - ostr << "\t--" << option->name << "\t\t" - << option->description << std::endl; - ++option; - } - ostr << std::endl << "Return Values:" << std::endl - << "\t0\t\tSuccess." << std::endl - << "\t1\t\tUnknown error." << std::endl - << "\t2\t\tBad arguments." << std::endl - << "\t3\t\tUnable to open file. Possibly wrong filename" - << " or bad permissions." << std::endl - << "\t4\t\tUnable to parse input LLSD." << std::endl - << std::endl - << "Output:" << std::endl - << "If a non-zero status code is returned, additional error information" - << " will be returned on stderr." << std::endl - << "* This will be in the form of an LLSD document." << std::endl - << "* Check ['error']['message'] to get a human readable message." << std::endl - << "If a zero status code is returned, processed output will be written" - << " to the file specified by --out (or stdout, if not specified)." << std::endl - << std::endl - << std::endl; -} - - -/////// LLApp Interface //////// - -LLAppAppearanceUtility::LLAppAppearanceUtility(int argc, char** argv) : - LLApp(), - mArgc(argc), - mArgv(argv), - mProcess(NULL), - mInput(NULL), - mOutput(NULL), - mAppName(argv[0]) -{ -} - -// virtual -LLAppAppearanceUtility::~LLAppAppearanceUtility() -{ -} - -void LLAppAppearanceUtility::verifyNoProcess() -{ - if (mProcess) - { - std::cerr << "Invalid arguments. " << MESSAGE_DUPLICATE_MODES << std::endl; - usage(std::cerr); - throw LLAppException(RV_BAD_ARGUMENTS, MESSAGE_DUPLICATE_MODES); - } -} - -void LLAppAppearanceUtility::parseArguments() -{ - ////// BEGIN OPTION PARSING ////// - // Check for '-' as last option, since apr doesn't seem to like that. - if (std::string(mArgv[mArgc-1]) == "-") - { - mInputFilename.assign("-"); - mArgc--; - } - - apr_status_t apr_err; - const char* opt_arg = NULL; - int opt_id = 0; - apr_getopt_t* os = NULL; - if(APR_SUCCESS != apr_getopt_init(&os, gAPRPoolp, mArgc, mArgv)) - { - std::cerr << "Unable to initialize apr" << std::endl; - throw LLAppException(RV_UNKNOWN_ERROR); - } - - //std::string grid; - while(true) - { - apr_err = apr_getopt_long(os, APPEARANCE_UTILITY_OPTIONS, &opt_id, &opt_arg); - if(APR_STATUS_IS_EOF(apr_err)) break; - if(apr_err) - { - char buf[MAX_STRING]; /* Flawfinder: ignore */ - std::cerr << "Error parsing options: " - << apr_strerror(apr_err, buf, MAX_STRING) << std::endl; - usage(std::cerr); - throw LLAppException(RV_BAD_ARGUMENTS, buf); - } - switch (opt_id) - { - case 'h': - verifyNoProcess(); - mProcess = new LLProcessUsage(this); - break; - case 'p': - verifyNoProcess(); - mProcess = new LLProcessParams(this); - break; - case 'o': - mOutputFilename.assign(opt_arg); - break; - case 'a': - mAgentID.set(opt_arg); - if (mAgentID.isNull()) - { - const char* INVALID_AGENT_ID="agent-id must be a valid uuid."; - std::cerr << "Invalid arguments. " << INVALID_AGENT_ID << std::endl; - usage(std::cerr); - throw LLAppException(RV_BAD_ARGUMENTS, INVALID_AGENT_ID); - } - break; - //case 'g': - // grid = opt_arg; - // break; - default: - usage(std::cerr); - throw LLAppException(RV_BAD_ARGUMENTS, "Unknown option."); - } - } - - if ("-" != mInputFilename) - { - bool valid_input_filename = false; - // Try to grab the input filename. - if (os->argv && os->argv[os->ind]) - { - mInputFilename.assign(os->argv[os->ind]); - if (! mInputFilename.empty() ) - { - valid_input_filename = true; - } - } - if (!valid_input_filename) - { - const char* INVALID_FILENAME="Must specify input file."; - std::cerr << "Invalid arguments. " << INVALID_FILENAME << std::endl; - usage(std::cerr); - throw LLAppException(RV_BAD_ARGUMENTS, INVALID_FILENAME); - } - } - - ////// END OPTION PARSING ////// -} - -void LLAppAppearanceUtility::validateArguments() -{ - ///// BEGIN ARGUMENT VALIDATION ///// - - // Make sure we have a command specified. - if (!mProcess) - { - const char* INVALID_MODE="No process mode specified."; - std::cerr << "Invalid arguments. " << INVALID_MODE - << std::endl; - usage(std::cerr); - throw LLAppException(RV_BAD_ARGUMENTS, INVALID_MODE); - } - - ///// END ARGUMENT VALIDATION ///// -} - -void LLAppAppearanceUtility::initializeIO() -{ - ///// BEGIN OPEN INPUT FILE //// - - if ( "-" == mInputFilename ) - { - // Read unformated data from stdin in to memory. - std::stringstream* data = new std::stringstream(); - const S32 BUFFER_SIZE = BUFSIZ; - char buffer[BUFFER_SIZE]; - while (true) - { - std::cin.read(buffer, BUFFER_SIZE); - // Check if anything out of the ordinary happened. - if (!std::cin) - { - // See if something 'really bad' happened, or if we just - // used up all of our buffer. - if (std::cin.bad()) - { - std::cerr << "Problem reading standard input." << std::endl; - delete data; - throw (RV_UNKNOWN_ERROR); - } - else - { - // Output normally. - data->write(buffer, std::cin.gcount()); - if (std::cin.eof()) break; - - // Clear this problem. We have handled it. - std::cin.clear(); - } - } - else - { - data->write(buffer, std::cin.gcount()); - if (std::cin.eof()) break; - } - } - mInput = data; - } - else - { - // Make sure we can open the input file. - std::ifstream* input_file = new std::ifstream(); - input_file->open( mInputFilename.c_str(), std::fstream::in ); - if ( input_file->fail()) - { - std::cerr << "Couldn't open input file '" << mInputFilename << "'." << std::endl; - delete input_file; - throw LLAppException(RV_UNABLE_OPEN, mInputFilename); - } - mInput = input_file; - } - ///// END OPEN INPUT FILE //// - - ///// BEGIN OPEN OUTPUT FILE //// - - if ("" == mOutputFilename) - { - mOutput = &std::cout; - } - else - { - // Make sure we can open the output file. - std::fstream* output_file = new std::fstream(); - output_file->open( mOutputFilename.c_str(), std::fstream::out ); - if ( output_file->fail() ) - { - std::cerr << "Couldn't open output file '" << mOutputFilename << "'." << std::endl; - delete output_file; - throw LLAppException(RV_UNABLE_OPEN, mOutputFilename); - } - mOutput = output_file; - } - ///// END OPEN OUTPUT FILE //// - - ///// BEGIN INPUT PARSING //// - LLSDSerialize::fromXML( mInputData, *mInput ); - if (mInputData.isUndefined()) - { - throw LLAppException(RV_UNABLE_TO_PARSE); - } - ///// END INPUT PARSING //// -} - -class LLPassthroughTranslationBridge : public LLTranslationBridge -{ -public: - virtual std::string getString(const std::string &xml_desc) - { - // Just pass back the input string. - return xml_desc; - } -}; - - -bool LLAppAppearanceUtility::init() -{ - parseArguments(); - - bool log_to_stderr = true; - LLError::initForApplication("", log_to_stderr); - // *TODO: Add debug mode(s). Skip this in debug mode. - LLError::setDefaultLevel(LLError::LEVEL_WARN); - - validateArguments(); - initializeIO(); - - // Initialize classes. - LLWearableType::initClass(new LLPassthroughTranslationBridge()); - - // *TODO: Create a texture bridge? - LLAvatarAppearance::initClass(); - - return true; -} - -bool LLAppAppearanceUtility::cleanup() -{ - LLAvatarAppearance::cleanupClass(); - LLWearableType::cleanupClass(); - - if (mProcess) - { - delete mProcess; - mProcess = NULL; - } - if ("-" != mInputFilename && mInput) - { - static_cast(mInput)->close(); - } - if ("" != mOutputFilename && mOutput) - { - static_cast(mOutput)->close(); - delete mOutput; - mOutput = NULL; - } - delete mInput; - mInput = NULL; - return true; -} - -bool LLAppAppearanceUtility::mainLoop() -{ - // This isn't really a loop, for this application. We just execute the requested command. - mProcess->process(mInputData, *mOutput); - return true; -} - diff --git a/indra/appearance_utility/llappappearanceutility.h b/indra/appearance_utility/llappappearanceutility.h deleted file mode 100644 index 2a5b8232eb..0000000000 --- a/indra/appearance_utility/llappappearanceutility.h +++ /dev/null @@ -1,97 +0,0 @@ -/** - * @file llappappearanceutility.h - * @brief Declaration of LLAppAppearanceUtility class. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLAPPAPPEARANCEUTILITY_H -#define LL_LLAPPAPPEARANCEUTILITY_H - -#include - -#include "llapp.h" - -enum EResult -{ - RV_SUCCESS = 0, - RV_UNKNOWN_ERROR, - RV_BAD_ARGUMENTS, - RV_UNABLE_OPEN, - RV_UNABLE_TO_PARSE, -}; - -extern const std::string NOTHING_EXTRA; - -class LLAppAppearanceUtility; -class LLBakingProcess; - -// Translate error status into error messages. -class LLAppException : public std::exception -{ -public: - LLAppException(EResult status_code, const std::string& extra = NOTHING_EXTRA); - EResult getStatusCode() { return mStatusCode; } - -private: - void printErrorLLSD(const std::string& key, const std::string& message); - EResult mStatusCode; -}; - - -class LLAppAppearanceUtility : public LLApp -{ -public: - LLAppAppearanceUtility(int argc, char** argv); - virtual ~LLAppAppearanceUtility(); - - // LLApp interface. - /*virtual*/ bool init(); - /*virtual*/ bool cleanup(); - /*virtual*/ bool mainLoop(); - -private: - // Option parsing. - void verifyNoProcess(); - void parseArguments(); - void validateArguments(); - void initializeIO(); -public: - void usage(std::ostream& ostr); - - -private: - int mArgc; - char** mArgv; - LLBakingProcess* mProcess; - std::istream* mInput; - std::ostream* mOutput; - std::string mAppName; - std::string mInputFilename; - std::string mOutputFilename; - LLUUID mAgentID; - LLSD mInputData; -}; - - -#endif /* LL_LLAPPAPPEARANCEUTILITY_H */ - diff --git a/indra/appearance_utility/llbakingavatar.cpp b/indra/appearance_utility/llbakingavatar.cpp deleted file mode 100644 index 0424e8134b..0000000000 --- a/indra/appearance_utility/llbakingavatar.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/** - * @File llbakingavatar.cpp - * @brief Implementation of LLBakingAvatar class which is a derivation of LLAvatarAppearance - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -// linden includes -#include "linden_common.h" -#include "v3dmath.h" - -// project includes -#include "llbakingavatar.h" -#include "llbakingjoint.h" -#include "llbakingjointmesh.h" -#include "llbakingtexlayer.h" - -LLBakingAvatar::LLBakingAvatar(LLWearableData* wearable_data) : - LLAvatarAppearance(wearable_data) -{ -} - -// virtual -LLBakingAvatar::~LLBakingAvatar() -{ -} - -//----------------------------------------------------------------------------- -// Implemented methods -//----------------------------------------------------------------------------- - -LLAvatarJoint* LLBakingAvatar::createAvatarJoint() -{ - return new LLBakingJoint(); -} - -LLAvatarJoint* LLBakingAvatar::createAvatarJoint(S32 joint_num) -{ - return new LLBakingJoint(joint_num); -} - -LLAvatarJointMesh* LLBakingAvatar::createAvatarJointMesh() -{ - return new LLBakingJointMesh(); -} - -LLTexLayerSet* LLBakingAvatar::createTexLayerSet() -{ - return new LLBakingTexLayerSet(this); -} - -//----------------------------------------------------------------------------- -// (Ignored) Non-implemented methods. -//----------------------------------------------------------------------------- - -void LLBakingAvatar::bodySizeChanged() {} -void LLBakingAvatar::applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, - LLAvatarAppearanceDefines::EBakedTextureIndex index) {} -void LLBakingAvatar::invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result) {} -void LLBakingAvatar::updateMeshTextures() {} -void LLBakingAvatar::dirtyMesh() {} -void LLBakingAvatar::dirtyMesh(S32 priority) {} -void LLBakingAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake) {} - -BOOL LLBakingAvatar::isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index) const -{ - return TRUE; -} - - -//----------------------------------------------------------------------------- -// (LLERR) Non-implemented methods. -//----------------------------------------------------------------------------- - -LLVector3 LLBakingAvatar::getCharacterPosition() -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return LLVector3::zero; -} - -LLQuaternion LLBakingAvatar::getCharacterRotation() -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return LLQuaternion::DEFAULT; -} - -LLVector3 LLBakingAvatar::getCharacterVelocity() -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return LLVector3::zero; -} - -LLVector3 LLBakingAvatar::getCharacterAngularVelocity() -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return LLVector3::zero; -} - -const LLUUID& LLBakingAvatar::getID() const -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return LLUUID::null; -} - -void LLBakingAvatar::addDebugText(const std::string& text) -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; -} - -F32 LLBakingAvatar::getTimeDilation() -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return 0.0f; -} - -void LLBakingAvatar::getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm) -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; -} - -F32 LLBakingAvatar::getPixelArea() const -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return 0.0f; -} - -LLVector3d LLBakingAvatar::getPosGlobalFromAgent(const LLVector3 &position) -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return LLVector3d::zero; -} - -LLVector3 LLBakingAvatar::getPosAgentFromGlobal(const LLVector3d &position) -{ - LL_ERRS("AppearanceUtility") << "Not implemented." << LL_ENDL; - return LLVector3::zero; -} - - - diff --git a/indra/appearance_utility/llbakingavatar.h b/indra/appearance_utility/llbakingavatar.h deleted file mode 100644 index 7f20d31674..0000000000 --- a/indra/appearance_utility/llbakingavatar.h +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @file llbakingavatar.h - * @brief Declaration of LLBakingAvatar class which is a derivation of LLAvatarAppearance - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLBAKINGAVATAR_H -#define LL_LLBAKINGAVATAR_H - -#include "llavatarappearance.h" - -class LLBakingAvatar : public LLAvatarAppearance -{ - LOG_CLASS(LLBakingAvatar); - -/******************************************************************************** - ** ** - ** INITIALIZATION - **/ -public: - void* operator new(size_t size) - { - return ll_aligned_malloc_16(size); - } - - void operator delete(void* ptr) - { - ll_aligned_free_16(ptr); - } - - LLBakingAvatar(LLWearableData* wearable_data); - virtual ~LLBakingAvatar(); - - static void initClass(); // initializes static members - -/** Initialization - ** ** - *******************************************************************************/ - -/******************************************************************************** - ** ** - ** INHERITED - **/ - - //-------------------------------------------------------------------- - // LLCharacter interface - //-------------------------------------------------------------------- -public: - /*virtual*/ LLVector3 getCharacterPosition(); - /*virtual*/ LLQuaternion getCharacterRotation(); - /*virtual*/ LLVector3 getCharacterVelocity(); - /*virtual*/ LLVector3 getCharacterAngularVelocity(); - - /*virtual*/ const LLUUID& getID() const; - /*virtual*/ void addDebugText(const std::string& text); - /*virtual*/ F32 getTimeDilation(); - /*virtual*/ void getGround(const LLVector3 &inPos, LLVector3 &outPos, LLVector3 &outNorm); - /*virtual*/ F32 getPixelArea() const; - /*virtual*/ LLVector3d getPosGlobalFromAgent(const LLVector3 &position); - /*virtual*/ LLVector3 getPosAgentFromGlobal(const LLVector3d &position); - - //-------------------------------------------------------------------- - // LLAvatarAppearance interface - //-------------------------------------------------------------------- -public: - /*virtual*/ void bodySizeChanged(); - /*virtual*/ void applyMorphMask(U8* tex_data, S32 width, S32 height, S32 num_components, - LLAvatarAppearanceDefines::EBakedTextureIndex index); - /*virtual*/ void invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result); - /*virtual*/ void updateMeshTextures(); - /*virtual*/ void dirtyMesh(); // Dirty the avatar mesh - /*virtual*/ void onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake); - /*virtual*/ BOOL isTextureDefined(LLAvatarAppearanceDefines::ETextureIndex type, U32 index = 0) const; -private: - /*virtual*/ void dirtyMesh(S32 priority); // Dirty the avatar mesh, with priority - - // LLAvatarAppearance instance factories: -protected: - /*virtual*/ LLAvatarJoint* createAvatarJoint(); - /*virtual*/ LLAvatarJoint* createAvatarJoint(S32 joint_num); - /*virtual*/ LLAvatarJointMesh* createAvatarJointMesh(); - /*virtual*/ LLTexLayerSet* createTexLayerSet(); - - -/** Inherited - ** ** - *******************************************************************************/ - -/******************************************************************************** - ** ** - ** STATE - **/ -public: - /*virtual*/ bool isSelf() const { return true; } - /*virtual*/ BOOL isValid() const { return TRUE; } - /*virtual*/ BOOL isUsingBakedTextures() const { return TRUE; } - -/** State - ** ** - *******************************************************************************/ - -}; - -#endif /* LL_LLBAKINGAVATAR_H */ - diff --git a/indra/appearance_utility/llbakingjoint.cpp b/indra/appearance_utility/llbakingjoint.cpp deleted file mode 100644 index 96f7b686b2..0000000000 --- a/indra/appearance_utility/llbakingjoint.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @file llbakingjoint.cpp - * @brief Implementation of LLBakingJoint class - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - - -#include "linden_common.h" - -#include "llbakingjoint.h" - - -LLBakingJoint::LLBakingJoint() : - LLAvatarJoint() -{ -} - -LLBakingJoint::LLBakingJoint(S32 joint_num) : - LLAvatarJoint(joint_num) -{ -} - -// virtual -LLBakingJoint::~LLBakingJoint() -{ -} - -// virtual -U32 LLBakingJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy) -{ - llerrs << "LLBakingJoint::render() should never be called!" << llendl; - return 0; -} - diff --git a/indra/appearance_utility/llbakingjoint.h b/indra/appearance_utility/llbakingjoint.h deleted file mode 100644 index 5247eb7510..0000000000 --- a/indra/appearance_utility/llbakingjoint.h +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @file llbakingjoint.h - * @brief Implementation of LLBakingJoint class - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLBAKINGJOINT_H -#define LL_LLBAKINGJOINT_H - -#include "llavatarjoint.h" - -class LLBakingJoint : public virtual LLAvatarJoint -{ -public: - LLBakingJoint(); - LLBakingJoint(S32 joint_num); - virtual ~LLBakingJoint(); - - // LLViewerJoint interface - virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE, BOOL is_dummy = FALSE ); -}; - -#endif /* LL_LLBAKINGJOINT_H */ - diff --git a/indra/appearance_utility/llbakingjointmesh.cpp b/indra/appearance_utility/llbakingjointmesh.cpp deleted file mode 100644 index 877317deb8..0000000000 --- a/indra/appearance_utility/llbakingjointmesh.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @file llbakingjointmesh.cpp - * @brief Implementation of LLBakingJointMesh class - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - - -#include "linden_common.h" - -#include "llbakingjointmesh.h" - - -LLBakingJointMesh::LLBakingJointMesh() : - LLAvatarJointMesh() -{ -} - -// virtual -LLBakingJointMesh::~LLBakingJointMesh() -{ -} - - diff --git a/indra/appearance_utility/llbakingjointmesh.h b/indra/appearance_utility/llbakingjointmesh.h deleted file mode 100644 index 6252f6cee3..0000000000 --- a/indra/appearance_utility/llbakingjointmesh.h +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @file llbakingjoint.h - * @brief Implementation of LLBakingJointMesh class - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLBAKINGJOINTMESH_H -#define LL_LLBAKINGJOINTMESH_H - -#include "llavatarjointmesh.h" -#include "llbakingjoint.h" - -class LLBakingJointMesh : public LLAvatarJointMesh, public LLBakingJoint -{ -public: - LLBakingJointMesh(); - LLBakingJointMesh(S32 joint_num); - virtual ~LLBakingJointMesh(); - -}; - -#endif /* LL_LLBAKINGJOINTMESH_H */ - diff --git a/indra/appearance_utility/llbakingprocess.h b/indra/appearance_utility/llbakingprocess.h deleted file mode 100644 index a32eae6443..0000000000 --- a/indra/appearance_utility/llbakingprocess.h +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @file llbakingprocess.h - * @brief Declaration of LLBakingProcess interface. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLBAKINGPROCESS_H -#define LL_LLBAKINGPROCESS_H - -#include - -class LLAppAppearanceUtility; -class LLSD; - -// Simple wrapper for various process modes. -class LLBakingProcess -{ -private: - // Hide default constructor. - LLBakingProcess() {} -public: - LLBakingProcess(LLAppAppearanceUtility* app) : - mApp(app) {} - virtual ~LLBakingProcess() {} - - //virtual std::string getProcessName() const = 0; - virtual void process(LLSD& input, std::ostream& output) = 0; - -protected: - LLAppAppearanceUtility* mApp; -}; - - -#endif /* LL_LLBAKINGPROCESS_H */ - diff --git a/indra/appearance_utility/llbakingshadermgr.cpp b/indra/appearance_utility/llbakingshadermgr.cpp deleted file mode 100644 index a858fc760f..0000000000 --- a/indra/appearance_utility/llbakingshadermgr.cpp +++ /dev/null @@ -1,226 +0,0 @@ - -/** - * @file LLBakingShaderMgr.cpp - * @brief Viewer shader manager implementation. - * - * $LicenseInfo:firstyear=2005&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - - -#include "linden_common.h" - -#include "llbakingshadermgr.h" - -#include "lldir.h" -#include "llfile.h" -#include "llrender.h" -#include "llvertexbuffer.h" - -#if LL_DARWIN -#include "OpenGL/OpenGL.h" -#endif - -#ifdef LL_RELEASE_FOR_DOWNLOAD -#define UNIFORM_ERRS LL_WARNS_ONCE("Shader") -#else -#define UNIFORM_ERRS LL_ERRS("Shader") -#endif - -// Lots of STL stuff in here, using namespace std to keep things more readable -using std::vector; -using std::pair; -using std::make_pair; -using std::string; - -BOOL LLBakingShaderMgr::sInitialized = FALSE; -bool LLBakingShaderMgr::sSkipReload = false; - -//utility shaders -LLGLSLShader gAlphaMaskProgram; - - -LLBakingShaderMgr::LLBakingShaderMgr() : - mVertexShaderLevel(SHADER_COUNT, 0), - mMaxAvatarShaderLevel(0) -{ -} - -LLBakingShaderMgr::~LLBakingShaderMgr() -{ - mVertexShaderLevel.clear(); - mShaderList.clear(); -} - -// static -LLBakingShaderMgr * LLBakingShaderMgr::instance() -{ - if(NULL == sInstance) - { - sInstance = new LLBakingShaderMgr(); - } - - return static_cast(sInstance); -} - -void LLBakingShaderMgr::initAttribsAndUniforms(void) -{ - if (mReservedAttribs.empty()) - { - LLShaderMgr::initAttribsAndUniforms(); - } -} - - -//============================================================================ -// Set Levels - -S32 LLBakingShaderMgr::getVertexShaderLevel(S32 type) -{ - return mVertexShaderLevel[type]; -} - -//============================================================================ -// Shader Management - -void LLBakingShaderMgr::setShaders() -{ - //setShaders might be called redundantly by gSavedSettings, so return on reentrance - static bool reentrance = false; - - if (!sInitialized || reentrance || sSkipReload) - { - return; - } - - LLGLSLShader::sIndexedTextureChannels = llmax(gGLManager.mNumTextureImageUnits, 1); - - //NEVER use more than 16 texture channels (work around for prevalent driver bug) - LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16); - - if (gGLManager.mGLSLVersionMajor < 1 || - (gGLManager.mGLSLVersionMajor == 1 && gGLManager.mGLSLVersionMinor <= 20)) - { //NEVER use indexed texture rendering when GLSL version is 1.20 or earlier - LLGLSLShader::sIndexedTextureChannels = 1; - } - - reentrance = true; - - //setup preprocessor definitions - LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits); - - // Make sure the compiled shader map is cleared before we recompile shaders. - mShaderObjects.clear(); - - initAttribsAndUniforms(); - - // Shaders - LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL; - LL_INFOS("ShaderLoading") << llformat("Using GLSL %d.%d", gGLManager.mGLSLVersionMajor, gGLManager.mGLSLVersionMinor) << llendl; - - for (S32 i = 0; i < SHADER_COUNT; i++) - { - mVertexShaderLevel[i] = 0; - } - mMaxAvatarShaderLevel = 0; - - LLGLSLShader::sNoFixedFunction = false; - LLVertexBuffer::unbind(); - if (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 10) - { - //using shaders, disable fixed function - LLGLSLShader::sNoFixedFunction = true; - - //gPipeline.mVertexShadersEnabled = TRUE; - //gPipeline.mVertexShadersLoaded = 1; - - loadShadersInterface(); - } - else - { - LLGLSLShader::sNoFixedFunction = false; - //gPipeline.mVertexShadersEnabled = FALSE; - //gPipeline.mVertexShadersLoaded = 0; - mVertexShaderLevel[SHADER_LIGHTING] = 0; - mVertexShaderLevel[SHADER_INTERFACE] = 0; - mVertexShaderLevel[SHADER_ENVIRONMENT] = 0; - mVertexShaderLevel[SHADER_WATER] = 0; - mVertexShaderLevel[SHADER_OBJECT] = 0; - mVertexShaderLevel[SHADER_EFFECT] = 0; - mVertexShaderLevel[SHADER_WINDLIGHT] = 0; - mVertexShaderLevel[SHADER_AVATAR] = 0; - } - - //gPipeline.createGLBuffers(); - - reentrance = false; -} - -void LLBakingShaderMgr::unloadShaders() -{ - gAlphaMaskProgram.unload(); - - mVertexShaderLevel[SHADER_INTERFACE] = 0; - - //gPipeline.mVertexShadersLoaded = 0; -} - -BOOL LLBakingShaderMgr::loadShadersInterface() -{ - BOOL success = TRUE; - - if (success) - { - gAlphaMaskProgram.mName = "Alpha Mask Shader"; - gAlphaMaskProgram.mShaderFiles.clear(); - gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskV.glsl", GL_VERTEX_SHADER_ARB)); - gAlphaMaskProgram.mShaderFiles.push_back(make_pair("interface/alphamaskF.glsl", GL_FRAGMENT_SHADER_ARB)); - gAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE]; - success = gAlphaMaskProgram.createShader(NULL, NULL); - } - - if( !success ) - { - mVertexShaderLevel[SHADER_INTERFACE] = 0; - return FALSE; - } - - return TRUE; -} - -std::string LLBakingShaderMgr::getShaderDirPrefix(void) -{ - return gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "shaders/class"); -} - -void LLBakingShaderMgr::updateShaderUniforms(LLGLSLShader * shader) -{ -} - -LLBakingShaderMgr::shader_iter LLBakingShaderMgr::beginShaders() const -{ - return mShaderList.begin(); -} - -LLBakingShaderMgr::shader_iter LLBakingShaderMgr::endShaders() const -{ - return mShaderList.end(); -} diff --git a/indra/appearance_utility/llbakingshadermgr.h b/indra/appearance_utility/llbakingshadermgr.h deleted file mode 100644 index 88d43ab769..0000000000 --- a/indra/appearance_utility/llbakingshadermgr.h +++ /dev/null @@ -1,137 +0,0 @@ -/** - * @file llbakingshadermgr.h - * @brief Texture Baking Shader Manager - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_BAKING_SHADER_MGR_H -#define LL_BAKING_SHADER_MGR_H - -#include "llshadermgr.h" - -class LLBakingShaderMgr: public LLShaderMgr -{ -public: - static BOOL sInitialized; - static bool sSkipReload; - - LLBakingShaderMgr(); - /* virtual */ ~LLBakingShaderMgr(); - - // singleton pattern implementation - static LLBakingShaderMgr * instance(); - - void initAttribsAndUniforms(void); - void setShaders(); - void unloadShaders(); - S32 getVertexShaderLevel(S32 type); - BOOL loadShadersInterface(); - - std::vector mVertexShaderLevel; - S32 mMaxAvatarShaderLevel; - - enum EShaderClass - { - SHADER_LIGHTING, - SHADER_OBJECT, - SHADER_AVATAR, - SHADER_ENVIRONMENT, - SHADER_INTERFACE, - SHADER_EFFECT, - SHADER_WINDLIGHT, - SHADER_WATER, - SHADER_DEFERRED, - SHADER_TRANSFORM, - SHADER_COUNT - }; - - // simple model of forward iterator - // http://www.sgi.com/tech/stl/ForwardIterator.html - class shader_iter - { - private: - friend bool operator == (shader_iter const & a, shader_iter const & b); - friend bool operator != (shader_iter const & a, shader_iter const & b); - - typedef std::vector::const_iterator base_iter_t; - public: - shader_iter() - { - } - - shader_iter(base_iter_t iter) : mIter(iter) - { - } - - LLGLSLShader & operator * () const - { - return **mIter; - } - - LLGLSLShader * operator -> () const - { - return *mIter; - } - - shader_iter & operator++ () - { - ++mIter; - return *this; - } - - shader_iter operator++ (int) - { - return mIter++; - } - - private: - base_iter_t mIter; - }; - - shader_iter beginShaders() const; - shader_iter endShaders() const; - - /* virtual */ std::string getShaderDirPrefix(void); - - /* virtual */ void updateShaderUniforms(LLGLSLShader * shader); - -private: - - // the list of shaders we need to propagate parameters to. - std::vector mShaderList; - -}; //LLBakingShaderMgr - -inline bool operator == (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b) -{ - return a.mIter == b.mIter; -} - -inline bool operator != (LLBakingShaderMgr::shader_iter const & a, LLBakingShaderMgr::shader_iter const & b) -{ - return a.mIter != b.mIter; -} - -extern LLVector4 gShinyOrigin; - -#endif // LL_BAKING_SHADER_MGR_H diff --git a/indra/appearance_utility/llbakingtexlayer.cpp b/indra/appearance_utility/llbakingtexlayer.cpp deleted file mode 100644 index 38fbd7c557..0000000000 --- a/indra/appearance_utility/llbakingtexlayer.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @file llbakingtexlayer.cpp - * @brief Implementation of LLBakingTexLayer class - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "linden_common.h" - -#include "llbakingtexlayer.h" - -LLBakingTexLayerSet::LLBakingTexLayerSet(LLAvatarAppearance* const appearance) : - LLTexLayerSet(appearance) -{ -} - -// virtual -LLBakingTexLayerSet::~LLBakingTexLayerSet() -{ -} - -// Ignored. -void LLBakingTexLayerSet::requestUpdate() -{ -} - -void LLBakingTexLayerSet::createComposite() -{ - llerrs << "TODO: Create a composite." << llendl; -} - - diff --git a/indra/appearance_utility/llbakingtexlayer.h b/indra/appearance_utility/llbakingtexlayer.h deleted file mode 100644 index 2ed9863d4a..0000000000 --- a/indra/appearance_utility/llbakingtexlayer.h +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @file llbakingtexlayer.h - * @brief Declaration of LLBakingTexLayerSet. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLBAKINGTEXLAYER_H -#define LL_LLBAKINGTEXLAYER_H - -#include "lltexlayer.h" - -class LLBakingTexLayerSet : public LLTexLayerSet -{ -public: - LLBakingTexLayerSet(LLAvatarAppearance* const appearance); - virtual ~LLBakingTexLayerSet(); - - /*virtual*/void requestUpdate(); - /*virtual*/void createComposite(); -}; - -#endif /* LL_LLBAKINGTEXLAYER_H */ - diff --git a/indra/appearance_utility/llprocessparams.cpp b/indra/appearance_utility/llprocessparams.cpp deleted file mode 100644 index 723bae0dd6..0000000000 --- a/indra/appearance_utility/llprocessparams.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @file llprocessparams.cpp - * @brief Implementation of LLProcessParams class. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -// linden includes -#include "linden_common.h" - -#include "llsd.h" -#include "llsdserialize.h" -#include "llsdutil.h" - -// appearance includes -#include "llwearabledata.h" - -// project includes -#include "llappappearanceutility.h" -#include "llbakingavatar.h" -#include "llprocessparams.h" - -void LLProcessParams::process(LLSD& input, std::ostream& output) -{ - LLWearableData wearable_data; - LLBakingAvatar avatar(&wearable_data); - avatar.initInstance(); - - LLSD result; - result["success"] = true; - result["input"] = input; - output << LLSDOStreamer(result); -} - diff --git a/indra/appearance_utility/llprocessparams.h b/indra/appearance_utility/llprocessparams.h deleted file mode 100644 index d1e64cb4f0..0000000000 --- a/indra/appearance_utility/llprocessparams.h +++ /dev/null @@ -1,42 +0,0 @@ -/** - * @file llprocessparams.h - * @brief Declaration of LLProcessParams class. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2012, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLPROCESSPARAMS_H -#define LL_LLPROCESSPARAMS_H - -#include "llbakingprocess.h" - -class LLProcessParams : public LLBakingProcess -{ -public: - LLProcessParams(LLAppAppearanceUtility* app) : - LLBakingProcess(app) {} - - /*virtual*/ void process(LLSD& intput, std::ostream& output); -}; - -#endif /* LL_LLPROCESSPARAMS_H */ - diff --git a/indra/appearance_utility/wrapper.sh b/indra/appearance_utility/wrapper.sh deleted file mode 100755 index 87d2179a13..0000000000 --- a/indra/appearance_utility/wrapper.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# Simple wrapper for secondlife utilities. - -## - Avoids an often-buggy X feature that doesn't really benefit us anyway. -export SDL_VIDEO_X11_DGAMOUSE=0 - -## - Works around a problem with misconfigured 64-bit systems not finding GL -export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}":/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri - -## - The 'scim' GTK IM module widely crashes the viewer. Avoid it. -if [ "$GTK_IM_MODULE" = "scim" ]; then - export GTK_IM_MODULE=xim -fi - -EXECUTABLE="$(basename "$0")-bin" -SCRIPTSRC="$(readlink -f "$0" || echo "$0")" -RUN_PATH="$(dirname "${SCRIPTSRC}" || echo .)" -cd "${RUN_PATH}" - -export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH}" - -# Run the program. -"./$EXECUTABLE" "$@" -exit $? diff --git a/indra/cmake/LLAppearanceUtility.cmake b/indra/cmake/LLAppearanceUtility.cmake new file mode 100644 index 0000000000..bea45543de --- /dev/null +++ b/indra/cmake/LLAppearanceUtility.cmake @@ -0,0 +1,12 @@ +# -*- cmake -*- +include(Prebuilt) + +# Linux proprietary build only +if (INSTALL_PROPRIETARY) + if(LINUX) + use_prebuilt_binary(llappearanceutility-source) + set(LLAPPEARANCEUTILITY_SRC_DIR ${LIBS_PREBUILT_DIR}/llappearanceutility/src) + set(LLAPPEARANCEUTILITY_BIN_DIR ${CMAKE_BINARY_DIR}/llappearanceutility) + endif (LINUX) +endif (INSTALL_PROPRIETARY) + diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h index b19ba3bf74..ef68a0eaf5 100644 --- a/indra/llcommon/llversionserver.h +++ b/indra/llcommon/llversionserver.h @@ -30,7 +30,7 @@ const S32 LL_VERSION_MAJOR = 2; const S32 LL_VERSION_MINOR = 1; const S32 LL_VERSION_PATCH = 0; -const S32 LL_VERSION_BUILD = 13828; +const S32 LL_VERSION_BUILD = 264760; const char * const LL_CHANNEL = "Second Life Server"; diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index bcc661a920..295fed3c4b 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -30,7 +30,7 @@ const S32 LL_VERSION_MAJOR = 3; const S32 LL_VERSION_MINOR = 4; const S32 LL_VERSION_PATCH = 1; -const S32 LL_VERSION_BUILD = 0; +const S32 LL_VERSION_BUILD = 264760; const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings index 5c7cacedec..1802e14703 100644 --- a/indra/newview/English.lproj/InfoPlist.strings +++ b/indra/newview/English.lproj/InfoPlist.strings @@ -2,6 +2,6 @@ CFBundleName = "Second Life"; -CFBundleShortVersionString = "Second Life version 2.1.0.13828"; -CFBundleGetInfoString = "Second Life version 2.1.0.13828, Copyright 2004-2009 Linden Research, Inc."; +CFBundleShortVersionString = "Second Life version 3.4.1.264760"; +CFBundleGetInfoString = "Second Life version 3.4.1.264760, Copyright 2004-2009 Linden Research, Inc."; diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist index f7b11b217c..035d6cbe6c 100644 --- a/indra/newview/Info-SecondLife.plist +++ b/indra/newview/Info-SecondLife.plist @@ -60,7 +60,7 @@ CFBundleVersion - 2.1.0.13828 + 3.4.1.264760 CSResourcesFileMapped diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc index df75f3f697..471a896019 100644 --- a/indra/newview/res/viewerRes.rc +++ b/indra/newview/res/viewerRes.rc @@ -135,8 +135,8 @@ TOOLNO CURSOR "llno.cur" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,1,1,0 - PRODUCTVERSION 2,1,1,0 + FILEVERSION 3,4,1,264760 + PRODUCTVERSION 3,4,1,264760 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -153,12 +153,12 @@ BEGIN BEGIN VALUE "CompanyName", "Linden Lab" VALUE "FileDescription", "Second Life" - VALUE "FileVersion", "2.1.1.0" + VALUE "FileVersion", "3.4.1.264760" VALUE "InternalName", "Second Life" VALUE "LegalCopyright", "Copyright � 2001-2010, Linden Research, Inc." VALUE "OriginalFilename", "SecondLife.exe" VALUE "ProductName", "Second Life" - VALUE "ProductVersion", "2.1.1.0" + VALUE "ProductVersion", "3.4.1.264760" END END BLOCK "VarFileInfo" -- cgit v1.3 From 7153d1db11c00245a379fa9601f092020152ea73 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Thu, 20 Sep 2012 04:29:17 +0000 Subject: Partial rewrite of llifstream and llofstream (Windows implementation pending). Moved more functionality from llviewerwearable to llwearable --- indra/llappearance/llavatarappearance.h | 1 + indra/llappearance/llavatarappearancedefines.h | 3 +- indra/llappearance/lllocaltextureobject.h | 1 - indra/llappearance/lltexlayer.h | 1 + indra/llappearance/lltexturemanagerbridge.h | 1 + indra/llappearance/llwearable.cpp | 443 +++++++++++----- indra/llappearance/llwearable.h | 23 +- indra/llappearance/llwearabledata.h | 1 + indra/llcommon/lldictionary.h | 2 + indra/llcommon/llfile.cpp | 705 ++++++++++++++++++++++--- indra/llcommon/llfile.h | 423 +++++++++++---- indra/llinventory/llinventory.cpp | 8 +- indra/llinventory/llpermissions.cpp | 193 ++----- indra/llinventory/llpermissions.h | 4 +- indra/llinventory/llsaleinfo.cpp | 95 +--- indra/llinventory/llsaleinfo.h | 4 +- indra/newview/llagent.h | 1 + indra/newview/lllocalbitmaps.h | 4 +- indra/newview/lltoolmorph.cpp | 1 + indra/newview/llviewertexlayer.h | 1 + indra/newview/llviewerwearable.cpp | 184 +------ indra/newview/llviewerwearable.h | 16 +- indra/newview/llwearablelist.cpp | 8 +- indra/test/llpermissions_tut.cpp | 14 +- indra/test/llsaleinfo_tut.cpp | 9 +- 25 files changed, 1392 insertions(+), 754 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index 5726ff62d1..4f57335688 100644 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -37,6 +37,7 @@ class LLTexLayerSet; class LLTexGlobalColor; +class LLTexGlobalColorInfo; class LLWearableData; class LLAvatarBoneInfo; class LLAvatarSkeletonInfo; diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h index e7c94104cc..0351f28429 100644 --- a/indra/llappearance/llavatarappearancedefines.h +++ b/indra/llappearance/llavatarappearancedefines.h @@ -29,9 +29,10 @@ #define LL_AVATARAPPEARANCE_DEFINES_H #include -#include "llwearable.h" #include "lljointpickname.h" #include "lldictionary.h" +#include "llwearabletype.h" +#include "lluuid.h" namespace LLAvatarAppearanceDefines { diff --git a/indra/llappearance/lllocaltextureobject.h b/indra/llappearance/lllocaltextureobject.h index 6f14448cca..9b9f41fd19 100644 --- a/indra/llappearance/lllocaltextureobject.h +++ b/indra/llappearance/lllocaltextureobject.h @@ -32,7 +32,6 @@ #include "llpointer.h" #include "llgltexture.h" -class LLUUID; class LLTexLayer; class LLTexLayerTemplate; class LLWearable; diff --git a/indra/llappearance/lltexlayer.h b/indra/llappearance/lltexlayer.h index 0d7fad349c..692cfa1a38 100644 --- a/indra/llappearance/lltexlayer.h +++ b/indra/llappearance/lltexlayer.h @@ -36,6 +36,7 @@ class LLAvatarAppearance; class LLImageTGA; class LLImageRaw; +class LLLocalTextureObject; class LLXmlTreeNode; class LLTexLayerSet; class LLTexLayerSetInfo; diff --git a/indra/llappearance/lltexturemanagerbridge.h b/indra/llappearance/lltexturemanagerbridge.h index 99c01755d4..4b814b522d 100644 --- a/indra/llappearance/lltexturemanagerbridge.h +++ b/indra/llappearance/lltexturemanagerbridge.h @@ -27,6 +27,7 @@ #ifndef LL_TEXTUREMANAGERBRIDGE_H #define LL_TEXTUREMANAGERBRIDGE_H +#include "llavatarappearancedefines.h" #include "llpointer.h" #include "llgltexture.h" diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp index 9e73a6669a..78ff510909 100755 --- a/indra/llappearance/llwearable.cpp +++ b/indra/llappearance/llwearable.cpp @@ -62,52 +62,41 @@ LLAssetType::EType LLWearable::getAssetType() const return LLWearableType::getAssetType(mType); } +BOOL LLWearable::exportFile(LLFILE* fp) const +{ + llofstream ofs(fp); + return exportStream(ofs); +} + // virtual -BOOL LLWearable::exportFile(LLFILE* file) const +BOOL LLWearable::exportStream( std::ostream& output_stream ) const { - // header and version - if( fprintf( file, "LLWearable version %d\n", mDefinitionVersion ) < 0 ) - { - return FALSE; - } + if (!output_stream.good()) return FALSE; + // header and version + output_stream << "LLWearable version " << mDefinitionVersion << "\n"; // name - if( fprintf( file, "%s\n", mName.c_str() ) < 0 ) - { - return FALSE; - } - + output_stream << mName << "\n"; // description - if( fprintf( file, "%s\n", mDescription.c_str() ) < 0 ) - { - return FALSE; - } - + output_stream << mDescription << "\n"; + // permissions - if( !mPermissions.exportFile( file ) ) + if( !mPermissions.exportStream( output_stream ) ) { return FALSE; } // sale info - if( !mSaleInfo.exportFile( file ) ) + if( !mSaleInfo.exportStream( output_stream ) ) { return FALSE; } // wearable type - S32 type = (S32)mType; - if( fprintf( file, "type %d\n", type ) < 0 ) - { - return FALSE; - } + output_stream << "type " << (S32) getType() << "\n"; // parameters - S32 num_parameters = mVisualParamIndexMap.size(); - if( fprintf( file, "parameters %d\n", num_parameters ) < 0 ) - { - return FALSE; - } + output_stream << "parameters " << mVisualParamIndexMap.size() << "\n"; for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); @@ -116,27 +105,17 @@ BOOL LLWearable::exportFile(LLFILE* file) const S32 param_id = iter->first; const LLVisualParam* param = iter->second; F32 param_weight = param->getWeight(); - if( fprintf( file, "%d %s\n", param_id, terse_F32_to_string( param_weight ).c_str() ) < 0 ) - { - return FALSE; - } + output_stream << param_id << " " << terse_F32_to_string( param_weight ) << "\n"; } // texture entries - S32 num_textures = mTEMap.size(); - if( fprintf( file, "textures %d\n", num_textures ) < 0 ) - { - return FALSE; - } + output_stream << "textures " << mTEMap.size() << "\n"; for (te_map_t::const_iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter) { S32 te = iter->first; const LLUUID& image_id = iter->second->getID(); - if( fprintf( file, "%d %s\n", te, image_id.asString().c_str()) < 0 ) - { - return FALSE; - } + output_stream << te << " " << image_id << "\n"; } return TRUE; } @@ -195,29 +174,49 @@ void LLWearable::createLayers(S32 te, LLAvatarAppearance *avatarp) } } +LLWearable::EImportResult LLWearable::importFile(LLFILE* fp, LLAvatarAppearance* avatarp ) +{ + llifstream ifs(fp); + return importStream(ifs, avatarp); +} + // virtual -LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearance* avatarp ) +LLWearable::EImportResult LLWearable::importStream( std::istream& input_stream, LLAvatarAppearance* avatarp ) { // *NOTE: changing the type or size of this buffer will require - // changes in the fscanf() code below. You would be better off - // rewriting this to use streams and not require an open FILE. - char text_buffer[2048]; /* Flawfinder: ignore */ - S32 fields_read = 0; + // changes in the fscanf() code below. + // We are using a local max buffer size here to avoid issues + // if MAX_STRING size changes. + const U32 PARSE_BUFFER_SIZE = 2048; + char buffer[2048]; /* Flawfinder: ignore */ + char uuid_buffer[37]; /* Flawfinder: ignore */ + + // This data is being generated on the viewer. + // Impose some sane limits on parameter and texture counts. + const S32 MAX_WEARABLE_ASSET_TEXTURES = 100; + const S32 MAX_WEARABLE_ASSET_PARAMETERS = 1000; - // read header and version - fields_read = fscanf( file, "LLWearable version %d\n", &mDefinitionVersion ); - if( fields_read != 1 ) + if(!avatarp) { - return LLWearable::BAD_HEADER; + return LLWearable::FAILURE; } - if(!avatarp) + // read header and version + if (!input_stream.good()) { + llwarns << "Failed to read wearable asset input stream." << llendl; return LLWearable::FAILURE; } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); + if ( 1 != sscanf( /* Flawfinder: ignore */ + buffer, + "LLWearable version %d\n", + &mDefinitionVersion ) ) + { + return LLWearable::BAD_HEADER; + } - - // Temporary hack to allow wearables with definition version 24 to still load. + // Hack to allow wearables with definition version 24 to still load. // This should only affect lindens and NDA'd testers who have saved wearables in 2.0 // the extra check for version == 24 can be removed before release, once internal testers // have loaded these wearables again. See hack pt 2 at bottom of function to ensure that @@ -229,68 +228,58 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan } // name - int next_char = fgetc( file ); /* Flawfinder: ignore */ - if( '\n' == next_char ) - { - // no name - mName = ""; - } - else + if (!input_stream.good()) { - ungetc( next_char, file ); - fields_read = fscanf( /* Flawfinder: ignore */ - file, - "%2047[^\n]", - text_buffer); - if( (1 != fields_read) || (fgetc( file ) != '\n') ) /* Flawfinder: ignore */ - { - llwarns << "Bad Wearable asset: early end of file" << llendl; - return LLWearable::FAILURE; - } - mName = text_buffer; + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading name" << llendl; + return LLWearable::FAILURE; } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); + mName = buffer; // description - next_char = fgetc( file ); /* Flawfinder: ignore */ - if( '\n' == next_char ) + if (!input_stream.good()) { - // no description - mDescription = ""; - } - else - { - ungetc( next_char, file ); - fields_read = fscanf( /* Flawfinder: ignore */ - file, - "%2047[^\n]", - text_buffer ); - if( (1 != fields_read) || (fgetc( file ) != '\n') ) /* Flawfinder: ignore */ - { - llwarns << "Bad Wearable asset: early end of file" << llendl; - return LLWearable::FAILURE; - } - mDescription = text_buffer; + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading description" << llendl; + return LLWearable::FAILURE; } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); + mDescription = buffer; // permissions - S32 perm_version; - fields_read = fscanf( file, " permissions %d\n", &perm_version ); - if( (fields_read != 1) || (perm_version != 0) ) + if (!input_stream.good()) + { + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading permissions" << llendl; + return LLWearable::FAILURE; + } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); + S32 perm_version = -1; + if ( 1 != sscanf( buffer, " permissions %d\n", &perm_version ) || + perm_version != 0 ) { - llwarns << "Bad Wearable asset: missing permissions" << llendl; + llwarns << "Bad Wearable asset: missing valid permissions" << llendl; return LLWearable::FAILURE; } - if( !mPermissions.importFile( file ) ) + if( !mPermissions.importStream( input_stream ) ) { return LLWearable::FAILURE; } // sale info - S32 sale_info_version; - fields_read = fscanf( file, " sale_info %d\n", &sale_info_version ); - if( (fields_read != 1) || (sale_info_version != 0) ) + if (!input_stream.good()) { - llwarns << "Bad Wearable asset: missing sale_info" << llendl; + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading sale info" << llendl; + return LLWearable::FAILURE; + } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); + S32 sale_info_version = -1; + if ( 1 != sscanf( buffer, " sale_info %d\n", &sale_info_version ) || + sale_info_version != 0 ) + { + llwarns << "Bad Wearable asset: missing valid sale_info" << llendl; return LLWearable::FAILURE; } // Sale info used to contain next owner perm. It is now in the @@ -299,7 +288,7 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan // up the vast majority of the tasks. BOOL has_perm_mask = FALSE; U32 perm_mask = 0; - if( !mSaleInfo.importFile(file, has_perm_mask, perm_mask) ) + if( !mSaleInfo.importStream(input_stream, has_perm_mask, perm_mask) ) { return LLWearable::FAILURE; } @@ -314,9 +303,15 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan } // wearable type + if (!input_stream.good()) + { + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading type" << llendl; + return LLWearable::FAILURE; + } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); S32 type = -1; - fields_read = fscanf( file, "type %d\n", &type ); - if( fields_read != 1 ) + if ( 1 != sscanf( buffer, "type %d\n", &type ) ) { llwarns << "Bad Wearable asset: bad type" << llendl; return LLWearable::FAILURE; @@ -333,27 +328,48 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan } // parameters header - S32 num_parameters = 0; - fields_read = fscanf( file, "parameters %d\n", &num_parameters ); - if( fields_read != 1 ) + if (!input_stream.good()) + { + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading parameters header" << llendl; + return LLWearable::FAILURE; + } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); + S32 num_parameters = -1; + if ( 1 != sscanf( buffer, "parameters %d\n", &num_parameters ) ) { llwarns << "Bad Wearable asset: missing parameters block" << llendl; return LLWearable::FAILURE; } - + if ( num_parameters > MAX_WEARABLE_ASSET_PARAMETERS ) + { + llwarns << "Bad Wearable asset: too many parameters, " + << num_parameters << llendl; + return LLWearable::FAILURE; + } if( num_parameters != mVisualParamIndexMap.size() ) { - llwarns << "Wearable parameter mismatch. Reading in " << num_parameters << " from file, but created " << mVisualParamIndexMap.size() << " from avatar parameters. type: " << mType << llendl; + llwarns << "Wearable parameter mismatch. Reading in " + << num_parameters << " from file, but created " + << mVisualParamIndexMap.size() + << " from avatar parameters. type: " + << getType() << llendl; } // parameters S32 i; for( i = 0; i < num_parameters; i++ ) { + if (!input_stream.good()) + { + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading parameter #" << i << llendl; + return LLWearable::FAILURE; + } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); S32 param_id = 0; F32 param_weight = 0.f; - fields_read = fscanf( file, "%d %f\n", ¶m_id, ¶m_weight ); - if( fields_read != 2 ) + if ( 2 != sscanf( buffer, "%d %f\n", ¶m_id, ¶m_weight ) ) { llwarns << "Bad Wearable asset: bad parameter, #" << i << llendl; return LLWearable::FAILURE; @@ -362,34 +378,53 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan } // textures header - S32 num_textures = 0; - fields_read = fscanf( file, "textures %d\n", &num_textures); - if( fields_read != 1 ) + if (!input_stream.good()) + { + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading textures header" << i << llendl; + return LLWearable::FAILURE; + } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); + S32 num_textures = -1; + if ( 1 != sscanf( buffer, "textures %d\n", &num_textures) ) { llwarns << "Bad Wearable asset: missing textures block" << llendl; return LLWearable::FAILURE; } + if ( num_textures > MAX_WEARABLE_ASSET_TEXTURES ) + { + llwarns << "Bad Wearable asset: too many textures, " + << num_textures << llendl; + return LLWearable::FAILURE; + } // textures for( i = 0; i < num_textures; i++ ) { + if (!input_stream.good()) + { + llwarns << "Bad Wearable asset: early end of input stream " + << "while reading textures #" << i << llendl; + return LLWearable::FAILURE; + } + input_stream.getline(buffer, PARSE_BUFFER_SIZE); S32 te = 0; - fields_read = fscanf( /* Flawfinder: ignore */ - file, - "%d %2047s\n", - &te, text_buffer); - if( fields_read != 2 ) + if ( 2 != sscanf( /* Flawfinder: ignore */ + buffer, + "%d %36s\n", + &te, uuid_buffer) ) { llwarns << "Bad Wearable asset: bad texture, #" << i << llendl; return LLWearable::FAILURE; } - if( !LLUUID::validate( text_buffer ) ) + if( !LLUUID::validate( uuid_buffer ) ) { - llwarns << "Bad Wearable asset: bad texture uuid: " << text_buffer << llendl; + llwarns << "Bad Wearable asset: bad texture uuid: " + << uuid_buffer << llendl; return LLWearable::FAILURE; } - LLUUID id = LLUUID(text_buffer); + LLUUID id = LLUUID(uuid_buffer); LLGLTexture* image = gTextureManagerBridgep->getFetchedTexture( id ); if( mTEMap.find(te) != mTEMap.end() ) { @@ -400,12 +435,15 @@ LLWearable::EImportResult LLWearable::importFile( LLFILE* file, LLAvatarAppearan delete mSavedTEMap[te]; } - LLUUID textureid(text_buffer); + LLUUID textureid(uuid_buffer); mTEMap[te] = new LLLocalTextureObject(image, textureid); mSavedTEMap[te] = new LLLocalTextureObject(image, textureid); createLayers(te, avatarp); } + // copy all saved param values to working params + revertValues(); + return LLWearable::SUCCESS; } @@ -417,6 +455,171 @@ void LLWearable::setType(LLWearableType::EType type, LLAvatarAppearance *avatarp } +LLLocalTextureObject* LLWearable::getLocalTextureObject(S32 index) +{ + te_map_t::iterator iter = mTEMap.find(index); + if( iter != mTEMap.end() ) + { + LLLocalTextureObject* lto = iter->second; + return lto; + } + return NULL; +} + +const LLLocalTextureObject* LLWearable::getLocalTextureObject(S32 index) const +{ + te_map_t::const_iterator iter = mTEMap.find(index); + if( iter != mTEMap.end() ) + { + const LLLocalTextureObject* lto = iter->second; + return lto; + } + return NULL; +} + +std::vector LLWearable::getLocalTextureListSeq() +{ + std::vector result; + + for(te_map_t::const_iterator iter = mTEMap.begin(); + iter != mTEMap.end(); iter++) + { + LLLocalTextureObject* lto = iter->second; + result.push_back(lto); + } + + return result; +} + +void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject <o) +{ + if( mTEMap.find(index) != mTEMap.end() ) + { + mTEMap.erase(index); + } + mTEMap[index] = new LLLocalTextureObject(lto); +} + +void LLWearable::revertValues() +{ + //update saved settings so wearable is no longer dirty + // non-driver params first + for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++) + { + S32 id = iter->first; + F32 value = iter->second; + LLVisualParam *param = getVisualParam(id); + if(param && !dynamic_cast(param) ) + { + setVisualParamWeight(id, value, TRUE); + } + } + + //then driver params + for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++) + { + S32 id = iter->first; + F32 value = iter->second; + LLVisualParam *param = getVisualParam(id); + if(param && dynamic_cast(param) ) + { + setVisualParamWeight(id, value, TRUE); + } + } + + // make sure that saved values are sane + for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++) + { + S32 id = iter->first; + LLVisualParam *param = getVisualParam(id); + if( param ) + { + mSavedVisualParamMap[id] = param->getWeight(); + } + } + + syncImages(mSavedTEMap, mTEMap); +} + +void LLWearable::saveValues() +{ + //update saved settings so wearable is no longer dirty + mSavedVisualParamMap.clear(); + for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); ++iter) + { + S32 id = iter->first; + LLVisualParam *wearable_param = iter->second; + F32 value = wearable_param->getWeight(); + mSavedVisualParamMap[id] = value; + } + + // Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed) + syncImages(mTEMap, mSavedTEMap); +} + +void LLWearable::syncImages(te_map_t &src, te_map_t &dst) +{ + // Deep copy of src (copies only those tes that are current, filling in defaults where needed) + for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) + { + if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType) + { + te_map_t::const_iterator iter = src.find(te); + LLUUID image_id; + LLGLTexture *image = NULL; + LLLocalTextureObject *lto = NULL; + if(iter != src.end()) + { + // there's a Local Texture Object in the source image map. Use this to populate the values to store in the destination image map. + lto = iter->second; + image = lto->getImage(); + image_id = lto->getID(); + } + else + { + // there is no Local Texture Object in the source image map. Get defaults values for populating the destination image map. + image_id = getDefaultTextureImageID((ETextureIndex) te); + image = gTextureManagerBridgep->getFetchedTexture( image_id ); + } + + if( dst.find(te) != dst.end() ) + { + // there's already an entry in the destination map for the texture. Just update its values. + dst[te]->setImage(image); + dst[te]->setID(image_id); + } + else + { + // no entry found in the destination map, we need to create a new Local Texture Object + dst[te] = new LLLocalTextureObject(image, image_id); + } + + if( lto ) + { + // If we pulled values from a Local Texture Object in the source map, make sure the proper flags are set in the new (or updated) entry in the destination map. + dst[te]->setBakedReady(lto->getBakedReady()); + dst[te]->setDiscard(lto->getDiscard()); + } + } + } +} + +void LLWearable::destroyTextures() +{ + for( te_map_t::iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter ) + { + LLLocalTextureObject *lto = iter->second; + delete lto; + } + mTEMap.clear(); + for( te_map_t::iterator iter = mSavedTEMap.begin(); iter != mSavedTEMap.end(); ++iter ) + { + LLLocalTextureObject *lto = iter->second; + delete lto; + } + mSavedTEMap.clear(); +} + void LLWearable::addVisualParam(LLVisualParam *param) { if( mVisualParamIndexMap[param->getID()] ) diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h index b8bbf82a6e..bc73ed4d8c 100644 --- a/indra/llappearance/llwearable.h +++ b/indra/llappearance/llwearable.h @@ -27,6 +27,7 @@ #ifndef LL_LLWEARABLE_H #define LL_LLWEARABLE_H +#include "llavatarappearancedefines.h" #include "llextendedstatus.h" #include "llpermissions.h" #include "llsaleinfo.h" @@ -79,14 +80,19 @@ public: SUCCESS, BAD_HEADER }; - virtual BOOL exportFile(LLFILE* file) const; - virtual EImportResult importFile(LLFILE* file, LLAvatarAppearance* avatarp); - - + BOOL exportFile(LLFILE* file) const; + EImportResult importFile(LLFILE* file, LLAvatarAppearance* avatarp ); + virtual BOOL exportStream( std::ostream& output_stream ) const; + virtual EImportResult importStream( std::istream& input_stream, LLAvatarAppearance* avatarp ); static void setCurrentDefinitionVersion( S32 version ) { LLWearable::sCurrentDefinitionVersion = version; } + virtual LLUUID getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index) const = 0; + + LLLocalTextureObject* getLocalTextureObject(S32 index); + const LLLocalTextureObject* getLocalTextureObject(S32 index) const; + std::vector getLocalTextureListSeq(); - virtual LLLocalTextureObject* getLocalTextureObject(S32 index) = 0; + void setLocalTextureObject(S32 index, LLLocalTextureObject <o); void addVisualParam(LLVisualParam *param); void setVisualParamWeight(S32 index, F32 value, BOOL upload_bake); F32 getVisualParamWeight(S32 index) const; @@ -97,6 +103,9 @@ public: LLColor4 getClothesColor(S32 te) const; void setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake ); + virtual void revertValues(); + virtual void saveValues(); + // Something happened that requires the wearable to be updated (e.g. worn/unworn). virtual void setUpdated() const = 0; @@ -104,6 +113,9 @@ public: virtual void addToBakedTextureHash(LLMD5& hash) const = 0; protected: + typedef std::map te_map_t; + void syncImages(te_map_t &src, te_map_t &dst); + void destroyTextures(); void createVisualParams(LLAvatarAppearance *avatarp); void createLayers(S32 te, LLAvatarAppearance *avatarp); @@ -121,7 +133,6 @@ protected: typedef std::map visual_param_index_map_t; visual_param_index_map_t mVisualParamIndexMap; - typedef std::map te_map_t; te_map_t mTEMap; // maps TE to LocalTextureObject te_map_t mSavedTEMap; // last saved version of TEMap }; diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h index 2931424131..379384a989 100644 --- a/indra/llappearance/llwearabledata.h +++ b/indra/llappearance/llwearabledata.h @@ -28,6 +28,7 @@ #define LL_WEARABLEDATA_H #include "llavatarappearancedefines.h" +#include "llwearable.h" #include "llerror.h" class LLAvatarAppearance; diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index bc3bc3e74a..c752859a36 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -30,6 +30,8 @@ #include #include +#include "llerror.h" + struct LL_COMMON_API LLDictionaryEntry { LLDictionaryEntry(const std::string &name); diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp index c51d042a3d..38b0dfdaf1 100644 --- a/indra/llcommon/llfile.cpp +++ b/indra/llcommon/llfile.cpp @@ -56,6 +56,8 @@ std::string strerr(int errn) return buffer; } +typedef std::basic_ios > _Myios; + #else // On Posix we want to call strerror_r(), but alarmingly, there are two // different variants. The one that returns int always populates the passed @@ -324,9 +326,10 @@ const char *LLFile::tmpdir() /***************** Modified file stream created to overcome the incorrect behaviour of posix fopen in windows *******************/ -#if USE_LLFILESTREAMS +#if LL_WINDOWS -LLFILE * LLFile::_Fiopen(const std::string& filename, std::ios::openmode mode,int) // protection currently unused +LLFILE * LLFile::_Fiopen(const std::string& filename, + std::ios::openmode mode,int) // protection currently unused { // open a file static const char *mods[] = { // fopen mode strings corresponding to valid[i] @@ -385,117 +388,677 @@ LLFILE * LLFile::_Fiopen(const std::string& filename, std::ios::openmode mode,in return (0); } -/************** input file stream ********************************/ +#endif /* LL_WINDOWS */ -void llifstream::close() -{ // close the C stream - if (_Filebuffer && _Filebuffer->close() == 0) +/************** llstdio file buffer ********************************/ + + +//llstdio_filebuf* llstdio_filebuf::open(const char *_Filename, +// ios_base::openmode _Mode) +//{ +//#if LL_WINDOWS +// _Filet *_File; +// if (is_open() || (_File = LLFILE::_Fiopen(_Filename, _Mode)) == 0) +// return (0); // open failed +// +// _Init(_File, _Openfl); +// _Initcvt(&_USE(_Mysb::getloc(), _Cvt)); +// return (this); // open succeeded +//#else +// std::filebuf* _file = std::filebuf::open(_Filename, _Mode); +// if (NULL == _file) return NULL; +// return this; +//#endif +//} + +llstdio_filebuf::int_type llstdio_filebuf::overflow(llstdio_filebuf::int_type __c) +{ + int_type __ret = traits_type::eof(); + const bool __testeof = traits_type::eq_int_type(__c, __ret); + const bool __testout = _M_mode & ios_base::out; + if (__testout && !_M_reading) { - _Myios::setstate(ios_base::failbit); /*Flawfinder: ignore*/ + if (this->pbase() < this->pptr()) + { + // If appropriate, append the overflow char. + if (!__testeof) + { + *this->pptr() = traits_type::to_char_type(__c); + this->pbump(1); + } + + // Convert pending sequence to external representation, + // and output. + if (_convert_to_external(this->pbase(), + this->pptr() - this->pbase())) + { + _M_set_buffer(0); + __ret = traits_type::not_eof(__c); + } + } + else if (_M_buf_size > 1) + { + // Overflow in 'uncommitted' mode: set _M_writing, set + // the buffer to the initial 'write' mode, and put __c + // into the buffer. + _M_set_buffer(0); + _M_writing = true; + if (!__testeof) + { + *this->pptr() = traits_type::to_char_type(__c); + this->pbump(1); + } + __ret = traits_type::not_eof(__c); + } + else + { + // Unbuffered. + char_type __conv = traits_type::to_char_type(__c); + if (__testeof || _convert_to_external(&__conv, 1)) + { + _M_writing = true; + __ret = traits_type::not_eof(__c); + } + } } + return __ret; } -void llifstream::open(const std::string& _Filename, /* Flawfinder: ignore */ - ios_base::openmode _Mode, - int _Prot) -{ // open a C stream with specified mode +bool llstdio_filebuf::_convert_to_external(char_type* __ibuf, + std::streamsize __ilen) +{ + // Sizes of external and pending output. + streamsize __elen; + streamsize __plen; + if (__check_facet(_M_codecvt).always_noconv()) + { + //__elen = _M_file.xsputn(reinterpret_cast(__ibuf), __ilen); + __elen = fwrite(reinterpret_cast(__ibuf), 1, + __ilen, _M_file.file()); + __plen = __ilen; + } + else + { + // Worst-case number of external bytes needed. + // XXX Not done encoding() == -1. + streamsize __blen = __ilen * _M_codecvt->max_length(); + char* __buf = static_cast(__builtin_alloca(__blen)); + + char* __bend; + const char_type* __iend; + codecvt_base::result __r; + __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen, + __iend, __buf, __buf + __blen, __bend); - LLFILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::in, _Prot); - if(filep == NULL) + if (__r == codecvt_base::ok || __r == codecvt_base::partial) + __blen = __bend - __buf; + else if (__r == codecvt_base::noconv) + { + // Same as the always_noconv case above. + __buf = reinterpret_cast(__ibuf); + __blen = __ilen; + } + else + __throw_ios_failure(__N("llstdio_filebuf::_convert_to_external " + "conversion error")); + + //__elen = _M_file.xsputn(__buf, __blen); + __elen = fwrite(__buf, 1, __blen, _M_file.file()); + __plen = __blen; + + // Try once more for partial conversions. + if (__r == codecvt_base::partial && __elen == __plen) + { + const char_type* __iresume = __iend; + streamsize __rlen = this->pptr() - __iend; + __r = _M_codecvt->out(_M_state_cur, __iresume, + __iresume + __rlen, __iend, __buf, + __buf + __blen, __bend); + if (__r != codecvt_base::error) + { + __rlen = __bend - __buf; + //__elen = _M_file.xsputn(__buf, __rlen); + __elen = fwrite(__buf, 1, __rlen, _M_file.file()); + __plen = __rlen; + } + else + { + __throw_ios_failure(__N("llstdio_filebuf::_convert_to_external " + "conversion error")); + } + } + } + return __elen == __plen; +} + +llstdio_filebuf::int_type llstdio_filebuf::underflow() +{ + int_type __ret = traits_type::eof(); + const bool __testin = _M_mode & ios_base::in; + if (__testin) { - _Myios::setstate(ios_base::failbit); /*Flawfinder: ignore*/ - return; + if (_M_writing) + { + if (overflow() == traits_type::eof()) + return __ret; + //_M_set_buffer(-1); + //_M_writing = false; + } + // Check for pback madness, and if so switch back to the + // normal buffers and jet outta here before expensive + // fileops happen... + _M_destroy_pback(); + + if (this->gptr() < this->egptr()) + return traits_type::to_int_type(*this->gptr()); + + // Get and convert input sequence. + const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; + + // Will be set to true if ::fread() returns 0 indicating EOF. + bool __got_eof = false; + // Number of internal characters produced. + streamsize __ilen = 0; + codecvt_base::result __r = codecvt_base::ok; + if (__check_facet(_M_codecvt).always_noconv()) + { + //__ilen = _M_file.xsgetn(reinterpret_cast(this->eback()), + // __buflen); + __ilen = fread(reinterpret_cast(this->eback()), 1, + __buflen, _M_file.file()); + if (__ilen == 0) + __got_eof = true; + } + else + { + // Worst-case number of external bytes. + // XXX Not done encoding() == -1. + const int __enc = _M_codecvt->encoding(); + streamsize __blen; // Minimum buffer size. + streamsize __rlen; // Number of chars to read. + if (__enc > 0) + __blen = __rlen = __buflen * __enc; + else + { + __blen = __buflen + _M_codecvt->max_length() - 1; + __rlen = __buflen; + } + const streamsize __remainder = _M_ext_end - _M_ext_next; + __rlen = __rlen > __remainder ? __rlen - __remainder : 0; + + // An imbue in 'read' mode implies first converting the external + // chars already present. + if (_M_reading && this->egptr() == this->eback() && __remainder) + __rlen = 0; + + // Allocate buffer if necessary and move unconverted + // bytes to front. + if (_M_ext_buf_size < __blen) + { + char* __buf = new char[__blen]; + if (__remainder) + __builtin_memcpy(__buf, _M_ext_next, __remainder); + + delete [] _M_ext_buf; + _M_ext_buf = __buf; + _M_ext_buf_size = __blen; + } + else if (__remainder) + __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); + + _M_ext_next = _M_ext_buf; + _M_ext_end = _M_ext_buf + __remainder; + _M_state_last = _M_state_cur; + + do + { + if (__rlen > 0) + { + // Sanity check! + // This may fail if the return value of + // codecvt::max_length() is bogus. + if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size) + { + __throw_ios_failure(__N("llstdio_filebuf::underflow " + "codecvt::max_length() " + "is not valid")); + } + //streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen); + streamsize __elen = fread(_M_ext_end, 1, + __rlen, _M_file.file()); + if (__elen == 0) + __got_eof = true; + else if (__elen == -1) + break; + //_M_ext_end += __elen; + } + + char_type* __iend = this->eback(); + if (_M_ext_next < _M_ext_end) + { + __r = _M_codecvt->in(_M_state_cur, _M_ext_next, + _M_ext_end, _M_ext_next, + this->eback(), + this->eback() + __buflen, __iend); + } + if (__r == codecvt_base::noconv) + { + size_t __avail = _M_ext_end - _M_ext_buf; + __ilen = std::min(__avail, __buflen); + traits_type::copy(this->eback(), + reinterpret_cast + (_M_ext_buf), __ilen); + _M_ext_next = _M_ext_buf + __ilen; + } + else + __ilen = __iend - this->eback(); + + // _M_codecvt->in may return error while __ilen > 0: this is + // ok, and actually occurs in case of mixed encodings (e.g., + // XML files). + if (__r == codecvt_base::error) + break; + + __rlen = 1; + } while (__ilen == 0 && !__got_eof); + } + + if (__ilen > 0) + { + _M_set_buffer(__ilen); + _M_reading = true; + __ret = traits_type::to_int_type(*this->gptr()); + } + else if (__got_eof) + { + // If the actual end of file is reached, set 'uncommitted' + // mode, thus allowing an immediate write without an + // intervening seek. + _M_set_buffer(-1); + _M_reading = false; + // However, reaching it while looping on partial means that + // the file has got an incomplete character. + if (__r == codecvt_base::partial) + __throw_ios_failure(__N("llstdio_filebuf::underflow " + "incomplete character in file")); + } + else if (__r == codecvt_base::error) + __throw_ios_failure(__N("llstdio_filebuf::underflow " + "invalid byte sequence in file")); + else + __throw_ios_failure(__N("llstdio_filebuf::underflow " + "error reading the file")); } - llassert(_Filebuffer == NULL); - _Filebuffer = new _Myfb(filep); - _ShouldClose = true; - _Myios::init(_Filebuffer); + return __ret; } -bool llifstream::is_open() const -{ // test if C stream has been opened - if(_Filebuffer) - return (_Filebuffer->is_open()); - return false; +std::streamsize llstdio_filebuf::xsgetn(char_type* __s, std::streamsize __n) +{ + // Clear out pback buffer before going on to the real deal... + streamsize __ret = 0; + if (_M_pback_init) + { + if (__n > 0 && this->gptr() == this->eback()) + { + *__s++ = *this->gptr(); + this->gbump(1); + __ret = 1; + --__n; + } + _M_destroy_pback(); + } + + // Optimization in the always_noconv() case, to be generalized in the + // future: when __n > __buflen we read directly instead of using the + // buffer repeatedly. + const bool __testin = _M_mode & ios_base::in; + const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; + + if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() + && __testin && !_M_writing) + { + // First, copy the chars already present in the buffer. + const streamsize __avail = this->egptr() - this->gptr(); + if (__avail != 0) + { + if (__avail == 1) + *__s = *this->gptr(); + else + traits_type::copy(__s, this->gptr(), __avail); + __s += __avail; + this->gbump(__avail); + __ret += __avail; + __n -= __avail; + } + + // Need to loop in case of short reads (relatively common + // with pipes). + streamsize __len; + for (;;) + { + //__len = _M_file.xsgetn(reinterpret_cast(__s), __n); + __len = fread(reinterpret_cast(__s), 1, + __n, _M_file.file()); + if (__len == -1) + __throw_ios_failure(__N("llstdio_filebuf::xsgetn " + "error reading the file")); + if (__len == 0) + break; + + __n -= __len; + __ret += __len; + if (__n == 0) + break; + + __s += __len; + } + + if (__n == 0) + { + _M_set_buffer(0); + _M_reading = true; + } + else if (__len == 0) + { + // If end of file is reached, set 'uncommitted' + // mode, thus allowing an immediate write without + // an intervening seek. + _M_set_buffer(-1); + _M_reading = false; + } + } + else + __ret += __streambuf_type::xsgetn(__s, __n); + + return __ret; } -llifstream::~llifstream() + +std::streamsize llstdio_filebuf::xsputn(char_type* __s, std::streamsize __n) { - if (_ShouldClose) + // Optimization in the always_noconv() case, to be generalized in the + // future: when __n is sufficiently large we write directly instead of + // using the buffer. + streamsize __ret = 0; + const bool __testout = _M_mode & ios_base::out; + if (__check_facet(_M_codecvt).always_noconv() + && __testout && !_M_reading) { - close(); + // Measurement would reveal the best choice. + const streamsize __chunk = 1ul << 10; + streamsize __bufavail = this->epptr() - this->pptr(); + + // Don't mistake 'uncommitted' mode buffered with unbuffered. + if (!_M_writing && _M_buf_size > 1) + __bufavail = _M_buf_size - 1; + + const streamsize __limit = std::min(__chunk, __bufavail); + if (__n >= __limit) + { + const streamsize __buffill = this->pptr() - this->pbase(); + const char* __buf = reinterpret_cast(this->pbase()); + //__ret = _M_file.xsputn_2(__buf, __buffill, + // reinterpret_cast(__s), __n); + if (__buffill) + { + __ret = fwrite(__buf, 1, __buffill, _M_file.file()); + } + if (__ret == __buffill) + { + __ret += fwrite(reinterpret_cast(__s), 1, + __n, _M_file.file()); + } + if (__ret == __buffill + __n) + { + _M_set_buffer(0); + _M_writing = true; + } + if (__ret > __buffill) + __ret -= __buffill; + else + __ret = 0; + } + else + __ret = __streambuf_type::xsputn(__s, __n); } - delete _Filebuffer; + else + __ret = __streambuf_type::xsputn(__s, __n); + return __ret; } -llifstream::llifstream(const std::string& _Filename, - ios_base::openmode _Mode, - int _Prot) - : std::basic_istream< char , std::char_traits< char > >(NULL,true),_Filebuffer(NULL),_ShouldClose(false) +int llstdio_filebuf::sync() +{ + return (_M_file.sync() == 0 ? 0 : -1); +} -{ // construct with named file and specified mode - open(_Filename, _Mode | ios_base::in, _Prot); /* Flawfinder: ignore */ +/************** input file stream ********************************/ + + +llifstream::llifstream() : _M_filebuf(), +#if LL_WINDOWS + std::istream(&_M_filebuf) {} +#else + std::istream() +{ + this->init(&_M_filebuf); +} +#endif + +// explicit +llifstream::llifstream(const std::string& _Filename, + ios_base::openmode _Mode) : _M_filebuf(), +#if LL_WINDOWS + std::istream(&_M_filebuf) +{ + if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::in) == 0) + { + _Myios::setstate(ios_base::failbit); + } +} +#else + std::istream() +{ + this->init(&_M_filebuf); + this->open(_Filename.c_str(), _Mode | ios_base::in); } +#endif +// explicit +llifstream::llifstream(const char* _Filename, + ios_base::openmode _Mode) : _M_filebuf(), +#if LL_WINDOWS + std::istream(&_M_filebuf) +{ + if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0) + { + _Myios::setstate(ios_base::failbit); + } +} +#else + std::istream() +{ + this->init(&_M_filebuf); + this->open(_Filename, _Mode | ios_base::in); +} +#endif -/************** output file stream ********************************/ -bool llofstream::is_open() const +// explicit +llifstream::llifstream(_Filet *_File, + ios_base::openmode _Mode, size_t _Size) : + _M_filebuf(_File, _Mode, _Size), +#if LL_WINDOWS + std::istream(&_M_filebuf) {} +#else + std::istream() +{ + this->init(&_M_filebuf); +} +#endif + +#if LL_WINDOWS +// explicit +llifstream::llifstream(int __fd, + ios_base::openmode _Mode, size_t _Size) : + _M_filebuf(__fd, _Mode, _Size), + std::istream() +{ + this->init(&_M_filebuf); +} +#endif + +bool llifstream::is_open() const { // test if C stream has been opened - if(_Filebuffer) - return (_Filebuffer->is_open()); - return false; + return _M_filebuf.is_open(); } -void llofstream::open(const std::string& _Filename, /* Flawfinder: ignore */ - ios_base::openmode _Mode, - int _Prot) +void llifstream::open(const char* _Filename, ios_base::openmode _Mode) { // open a C stream with specified mode - - LLFILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::out, _Prot); - if(filep == NULL) + if (_M_filebuf.open(_Filename, _Mode | ios_base::in) == 0) +#if LL_WINDOWS { - _Myios::setstate(ios_base::failbit); /*Flawfinder: ignore*/ - return; + _Myios::setstate(ios_base::failbit); } - llassert(_Filebuffer==NULL); - _Filebuffer = new _Myfb(filep); - _ShouldClose = true; - _Myios::init(_Filebuffer); + else + { + _Myios::clear(); + } +#else + { + this->setstate(ios_base::failbit); + } + else + { + this->clear(); + } +#endif } -void llofstream::close() +void llifstream::close() { // close the C stream - if(is_open()) + if (_M_filebuf.close() == 0) { - if (_Filebuffer->close() == 0) - { - _Myios::setstate(ios_base::failbit); /*Flawfinder: ignore*/ - } - delete _Filebuffer; - _Filebuffer = NULL; - _ShouldClose = false; +#if LL_WINDOWS + _Myios::setstate(ios_base::failbit); +#else + this->setstate(ios_base::failbit); +#endif } } + +/************** output file stream ********************************/ + + +llofstream::llofstream() : _M_filebuf(), +#if LL_WINDOWS + std::ostream(&_M_filebuf) {} +#else + std::ostream() +{ + this->init(&_M_filebuf); +} +#endif + +// explicit llofstream::llofstream(const std::string& _Filename, - std::ios_base::openmode _Mode, - int _Prot) - : std::basic_ostream >(NULL,true),_Filebuffer(NULL),_ShouldClose(false) -{ // construct with named file and specified mode - open(_Filename, _Mode , _Prot); /* Flawfinder: ignore */ + ios_base::openmode _Mode) : _M_filebuf(), +#if LL_WINDOWS + std::ostream(&_M_filebuf) +{ + if (_M_filebuf.open(_Filename.c_str(), _Mode | ios_base::out) == 0) + { + _Myios::setstate(ios_base::failbit); + } +} +#else + std::ostream() +{ + this->init(&_M_filebuf); + this->open(_Filename.c_str(), _Mode | ios_base::out); +} +#endif + +// explicit +llofstream::llofstream(const char* _Filename, + ios_base::openmode _Mode) : _M_filebuf(), +#if LL_WINDOWS + std::ostream(&_M_filebuf) +{ + if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0) + { + _Myios::setstate(ios_base::failbit); + } +} +#else + std::ostream() +{ + this->init(&_M_filebuf); + this->open(_Filename, _Mode | ios_base::out); +} +#endif + +// explicit +llofstream::llofstream(_Filet *_File, + ios_base::openmode _Mode, size_t _Size) : + _M_filebuf(_File, _Mode, _Size), +#if LL_WINDOWS + std::ostream(&_M_filebuf) {} +#else + std::ostream() +{ + this->init(&_M_filebuf); } +#endif -llofstream::~llofstream() +#if LL_WINDOWS +// explicit +llofstream::llofstream(int __fd, + ios_base::openmode _Mode, size_t _Size) : + _M_filebuf(__fd, _Mode, _Size), + std::ostream() { - // destroy the object - if (_ShouldClose) + this->init(&_M_filebuf); +} +#endif + +bool llofstream::is_open() const +{ // test if C stream has been opened + return _M_filebuf.is_open(); +} + +void llofstream::open(const char* _Filename, ios_base::openmode _Mode) +{ // open a C stream with specified mode + if (_M_filebuf.open(_Filename, _Mode | ios_base::out) == 0) +#if LL_WINDOWS + { + _Myios::setstate(ios_base::failbit); + } + else { - close(); + _Myios::clear(); } - delete _Filebuffer; +#else + { + this->setstate(ios_base::failbit); + } + else + { + this->clear(); + } +#endif } -#endif // #if USE_LLFILESTREAMS +void llofstream::close() +{ // close the C stream + if (_M_filebuf.close() == 0) + { +#if LL_WINDOWS + _Myios::setstate(ios_base::failbit); +#else + this->setstate(ios_base::failbit); +#endif + } +} /************** helper functions ********************************/ diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h index dd7d36513a..7049ab1396 100644 --- a/indra/llcommon/llfile.h +++ b/indra/llcommon/llfile.h @@ -35,16 +35,10 @@ * Attempts to mostly mirror the POSIX style IO functions. */ -typedef FILE LLFILE; +typedef FILE LLFILE; #include - -#ifdef LL_WINDOWS -#define USE_LLFILESTREAMS 1 -#else -#define USE_LLFILESTREAMS 0 -#endif - +#include #include #if LL_WINDOWS @@ -52,6 +46,7 @@ typedef FILE LLFILE; typedef struct _stat llstat; #else typedef struct stat llstat; +#include #endif #ifndef S_ISREG @@ -83,142 +78,342 @@ public: static int stat(const std::string& filename,llstat* file_status); static bool isdir(const std::string& filename); static bool isfile(const std::string& filename); - static LLFILE * _Fiopen(const std::string& filename, std::ios::openmode mode,int); // protection currently unused + static LLFILE * _Fiopen(const std::string& filename, + std::ios::openmode mode); static const char * tmpdir(); }; +/** + * @brief Provides a layer of compatibility for C/POSIX. + * + * This is taken from both the GNU __gnu_cxx::stdio_filebuf extension and + * VC's basic_filebuf implementation. + * This file buffer provides extensions for working with standard C FILE*'s + * and POSIX file descriptors for platforms that support this. +*/ +namespace +{ +#if LL_WINDOWS +typedef std::filebuf _Myfb; +#else +typedef __gnu_cxx::stdio_filebuf< char > _Myfb; +typedef std::__c_file _Filet; +#endif /* LL_WINDOWS */ +} -#if USE_LLFILESTREAMS - -class LL_COMMON_API llifstream : public std::basic_istream < char , std::char_traits < char > > +class LL_COMMON_API llstdio_filebuf : public _Myfb { - // input stream associated with a C stream public: - typedef std::basic_ifstream > _Myt; - typedef std::basic_filebuf > _Myfb; - typedef std::basic_ios > _Myios; - - llifstream() - : std::basic_istream >(NULL,true),_Filebuffer(NULL),_ShouldClose(false) - { // construct unopened - } + /** + * deferred initialization / destruction + */ + llstdio_filebuf() : _Myfb() {} + virtual ~llstdio_filebuf() {} + + /** + * @param f An open @c FILE*. + * @param mode Same meaning as in a standard filebuf. + * @param size Optimal or preferred size of internal buffer, in chars. + * Defaults to system's @c BUFSIZ. + * + * This constructor associates a file stream buffer with an open + * C @c FILE*. The @c FILE* will not be automatically closed when the + * stdio_filebuf is closed/destroyed. + */ + llstdio_filebuf(_Filet* __f, std::ios_base::openmode __mode, + //size_t __size = static_cast(BUFSIZ)) : + size_t __size = static_cast(1)) : +#if LL_WINDOWS + _Myfb(__f) {} +#else + _Myfb(__f, __mode, __size) {} +#endif - explicit llifstream(const std::string& _Filename, - ios_base::openmode _Mode = ios_base::in, - int _Prot = (int)ios_base::_Openprot); - - explicit llifstream(_Filet *_File) - : std::basic_istream >(NULL,true), - _Filebuffer(new _Myfb(_File)), - _ShouldClose(false) - { // construct with specified C stream - } - virtual ~llifstream(); - - _Myfb *rdbuf() const - { // return pointer to file buffer - return _Filebuffer; - } - bool is_open() const; - void open(const std::string& _Filename, /* Flawfinder: ignore */ - ios_base::openmode _Mode = ios_base::in, - int _Prot = (int)ios_base::_Openprot); - void close(); + /** + * @brief Opens an external file. + * @param s The name of the file. + * @param mode The open mode flags. + * @return @c this on success, NULL on failure + * + * If a file is already open, this function immediately fails. + * Otherwise it tries to open the file named @a s using the flags + * given in @a mode. + */ + //llstdio_filebuf* open(const char *_Filename, + // std::ios_base::openmode _Mode); + + /** + * @param fd An open file descriptor. + * @param mode Same meaning as in a standard filebuf. + * @param size Optimal or preferred size of internal buffer, in chars. + * + * This constructor associates a file stream buffer with an open + * POSIX file descriptor. The file descriptor will be automatically + * closed when the stdio_filebuf is closed/destroyed. + */ +#if !LL_WINDOWS + llstdio_filebuf(int __fd, std::ios_base::openmode __mode, + //size_t __size = static_cast(BUFSIZ)) : + size_t __size = static_cast(1)) : + _Myfb(__fd, __mode, __size) {} +#endif -private: - _Myfb* _Filebuffer; // the file buffer - bool _ShouldClose; +// *TODO: Seek the underlying c stream for better cross-platform compatibility? +#if !LL_WINDOWS +protected: + /** underflow() and uflow() functions are called to get the next + * character from the real input source when the buffer is empty. + * Buffered input uses underflow() + */ + /*virtual*/ int_type underflow(); + + /* Convert internal byte sequence to external, char-based + * sequence via codecvt. + */ + bool _convert_to_external(char_type*, std::streamsize); + + /** The overflow() function is called to transfer characters to the + * real output destination when the buffer is full. A call to + * overflow(c) outputs the contents of the buffer plus the + * character c. + * Consume some sequence of the characters in the pending sequence. + */ + /*virtual*/ int_type overflow(int_type __c = traits_type::eof()); + + /** sync() flushes the underlying @c FILE* stream. + */ + /*virtual*/ int sync(); + + std::streamsize xsgetn(char_type*, std::streamsize); + std::streamsize xsputn(char_type*, std::streamsize); +#endif }; -class LL_COMMON_API llofstream : public std::basic_ostream< char , std::char_traits < char > > +/** + * @brief Controlling input for files. + * + * This class supports reading from named files, using the inherited + * functions from std::basic_istream. To control the associated + * sequence, an instance of std::basic_filebuf (or a platform-specific derivative) + * which allows construction using a pre-exisintg file stream buffer. + * We refer to this std::basic_filebuf (or derivative) as @c sb. +*/ +class LL_COMMON_API llifstream : public std::istream { + // input stream associated with a C stream public: - typedef std::basic_ostream< char , std::char_traits < char > > _Myt; - typedef std::basic_filebuf< char , std::char_traits < char > > _Myfb; - typedef std::basic_ios > _Myios; - - llofstream() - : std::basic_ostream >(NULL,true),_Filebuffer(NULL),_ShouldClose(false) - { // construct unopened - } - - explicit llofstream(const std::string& _Filename, - std::ios_base::openmode _Mode = ios_base::out, - int _Prot = (int)std::ios_base::_Openprot); - - - explicit llofstream(_Filet *_File) - : std::basic_ostream >(NULL,true), - _Filebuffer(new _Myfb(_File)),//_File) - _ShouldClose(false) - { // construct with specified C stream - } - - virtual ~llofstream(); - - _Myfb *rdbuf() const - { // return pointer to file buffer - return _Filebuffer; - } + // Constructors: + /** + * @brief Default constructor. + * + * Initializes @c sb using its default constructor, and passes + * @c &sb to the base class initializer. Does not open any files + * (you haven't given it a filename to open). + */ + llifstream(); + + /** + * @brief Create an input file stream. + * @param Filename String specifying the filename. + * @param Mode Open file in specified mode (see std::ios_base). + * + * @c ios_base::in is automatically included in @a mode. + */ + explicit llifstream(const std::string& _Filename, + ios_base::openmode _Mode = ios_base::in); + explicit llifstream(const char* _Filename, + ios_base::openmode _Mode = ios_base::in); + + /** + * @brief Create a stream using an open c file stream. + * @param File An open @c FILE*. + @param Mode Same meaning as in a standard filebuf. + @param Size Optimal or preferred size of internal buffer, in chars. + Defaults to system's @c BUFSIZ. + */ + explicit llifstream(_Filet *_File, + ios_base::openmode _Mode = ios_base::in, + //size_t _Size = static_cast(BUFSIZ)); + size_t _Size = static_cast(1)); + + /** + * @brief Create a stream using an open file descriptor. + * @param fd An open file descriptor. + @param Mode Same meaning as in a standard filebuf. + @param Size Optimal or preferred size of internal buffer, in chars. + Defaults to system's @c BUFSIZ. + */ +#if !LL_WINDOWS + explicit llifstream(int __fd, + ios_base::openmode _Mode = ios_base::in, + //size_t _Size = static_cast(BUFSIZ)); + size_t _Size = static_cast(1)); +#endif + /** + * @brief The destructor does nothing. + * + * The file is closed by the filebuf object, not the formatting + * stream. + */ + virtual ~llifstream() {} + + // Members: + /** + * @brief Accessing the underlying buffer. + * @return The current basic_filebuf buffer. + * + * This hides both signatures of std::basic_ios::rdbuf(). + */ + llstdio_filebuf* rdbuf() const + { return const_cast(&_M_filebuf); } + + /** + * @brief Wrapper to test for an open file. + * @return @c rdbuf()->is_open() + */ bool is_open() const; - void open(const std::string& _Filename,ios_base::openmode _Mode = ios_base::out,int _Prot = (int)ios_base::_Openprot); /* Flawfinder: ignore */ - + /** + * @brief Opens an external file. + * @param Filename The name of the file. + * @param Node The open mode flags. + * + * Calls @c llstdio_filebuf::open(s,mode|in). If that function + * fails, @c failbit is set in the stream's error state. + */ + void open(const std::string& _Filename, + ios_base::openmode _Mode = ios_base::in) + { open(_Filename.c_str(), _Mode); } + void open(const char* _Filename, + ios_base::openmode _Mode = ios_base::in); + + /** + * @brief Close the file. + * + * Calls @c llstdio_filebuf::close(). If that function + * fails, @c failbit is set in the stream's error state. + */ void close(); private: - _Myfb *_Filebuffer; // the file buffer - bool _ShouldClose; -}; - - - -#else -//Use standard file streams on non windows platforms -//#define llifstream std::ifstream -//#define llofstream std::ofstream - -class LL_COMMON_API llifstream : public std::ifstream -{ -public: - llifstream() : std::ifstream() - { - } - - explicit llifstream(const std::string& _Filename, std::_Ios_Openmode _Mode = in) - : std::ifstream(_Filename.c_str(), _Mode) - { - } - void open(const std::string& _Filename, std::_Ios_Openmode _Mode = in) /* Flawfinder: ignore */ - { - std::ifstream::open(_Filename.c_str(), _Mode); - } + llstdio_filebuf _M_filebuf; }; -class LL_COMMON_API llofstream : public std::ofstream +/** + * @brief Controlling output for files. + * + * This class supports writing to named files, using the inherited + * functions from std::basic_ostream. To control the associated + * sequence, an instance of std::basic_filebuf (or a platform-specific derivative) + * which allows construction using a pre-exisintg file stream buffer. + * We refer to this std::basic_filebuf (or derivative) as @c sb. +*/ +class LL_COMMON_API llofstream : public std::ostream { public: - llofstream() : std::ofstream() - { - } + // Constructors: + /** + * @brief Default constructor. + * + * Initializes @c sb using its default constructor, and passes + * @c &sb to the base class initializer. Does not open any files + * (you haven't given it a filename to open). + */ + llofstream(); + + /** + * @brief Create an output file stream. + * @param Filename String specifying the filename. + * @param Mode Open file in specified mode (see std::ios_base). + * + * @c ios_base::out|ios_base::trunc is automatically included in + * @a mode. + */ + explicit llofstream(const std::string& _Filename, + ios_base::openmode _Mode = ios_base::out|ios_base::trunc); + explicit llofstream(const char* _Filename, + ios_base::openmode _Mode = ios_base::out|ios_base::trunc); + + /** + * @brief Create a stream using an open c file stream. + * @param File An open @c FILE*. + @param Mode Same meaning as in a standard filebuf. + @param Size Optimal or preferred size of internal buffer, in chars. + Defaults to system's @c BUFSIZ. + */ + explicit llofstream(_Filet *_File, + ios_base::openmode _Mode = ios_base::out, + //size_t _Size = static_cast(BUFSIZ)); + size_t _Size = static_cast(1)); + + /** + * @brief Create a stream using an open file descriptor. + * @param fd An open file descriptor. + @param Mode Same meaning as in a standard filebuf. + @param Size Optimal or preferred size of internal buffer, in chars. + Defaults to system's @c BUFSIZ. + */ +#if !LL_WINDOWS + explicit llofstream(int __fd, + ios_base::openmode _Mode = ios_base::out, + //size_t _Size = static_cast(BUFSIZ)); + size_t _Size = static_cast(1)); +#endif - explicit llofstream(const std::string& _Filename, std::_Ios_Openmode _Mode = out) - : std::ofstream(_Filename.c_str(), _Mode) - { - } + /** + * @brief The destructor does nothing. + * + * The file is closed by the filebuf object, not the formatting + * stream. + */ + virtual ~llofstream() {} + + // Members: + /** + * @brief Accessing the underlying buffer. + * @return The current basic_filebuf buffer. + * + * This hides both signatures of std::basic_ios::rdbuf(). + */ + llstdio_filebuf* rdbuf() const + { return const_cast(&_M_filebuf); } + + /** + * @brief Wrapper to test for an open file. + * @return @c rdbuf()->is_open() + */ + bool is_open() const; - void open(const std::string& _Filename, std::_Ios_Openmode _Mode = out) /* Flawfinder: ignore */ - { - std::ofstream::open(_Filename.c_str(), _Mode); - } + /** + * @brief Opens an external file. + * @param Filename The name of the file. + * @param Node The open mode flags. + * + * Calls @c llstdio_filebuf::open(s,mode|out). If that function + * fails, @c failbit is set in the stream's error state. + */ + void open(const std::string& _Filename, + ios_base::openmode _Mode = ios_base::out|ios_base::trunc) + { open(_Filename.c_str(), _Mode); } + void open(const char* _Filename, + ios_base::openmode _Mode = ios_base::out|ios_base::trunc); + + /** + * @brief Close the file. + * + * Calls @c llstdio_filebuf::close(). If that function + * fails, @c failbit is set in the stream's error state. + */ + void close(); +private: + llstdio_filebuf _M_filebuf; }; -#endif /** * @breif filesize helpers. diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp index fbf23bc3f0..2dbc331036 100644 --- a/indra/llinventory/llinventory.cpp +++ b/indra/llinventory/llinventory.cpp @@ -824,7 +824,7 @@ BOOL LLInventoryItem::importLegacyStream(std::istream& input_stream) } else if(0 == strcmp("permissions", keyword)) { - success = mPermissions.importLegacyStream(input_stream); + success = mPermissions.importStream(input_stream); } else if(0 == strcmp("sale_info", keyword)) { @@ -834,7 +834,7 @@ BOOL LLInventoryItem::importLegacyStream(std::istream& input_stream) // should pick up the vast majority of the tasks. BOOL has_perm_mask = FALSE; U32 perm_mask = 0; - success = mSaleInfo.importLegacyStream(input_stream, has_perm_mask, perm_mask); + success = mSaleInfo.importStream(input_stream, has_perm_mask, perm_mask); if(has_perm_mask) { if(perm_mask == PERM_NONE) @@ -950,7 +950,7 @@ BOOL LLInventoryItem::exportLegacyStream(std::ostream& output_stream, BOOL inclu output_stream << "\t\titem_id\t" << uuid_str << "\n"; mParentUUID.toString(uuid_str); output_stream << "\t\tparent_id\t" << uuid_str << "\n"; - mPermissions.exportLegacyStream(output_stream); + mPermissions.exportStream(output_stream); // Check for permissions to see the asset id, and if so write it // out as an asset id. Otherwise, apply our cheesy encryption. @@ -984,7 +984,7 @@ BOOL LLInventoryItem::exportLegacyStream(std::ostream& output_stream, BOOL inclu std::string buffer; buffer = llformat( "\t\tflags\t%08x\n", mFlags); output_stream << buffer; - mSaleInfo.exportLegacyStream(output_stream); + mSaleInfo.exportStream(output_stream); output_stream << "\t\tname\t" << mName.c_str() << "|\n"; output_stream << "\t\tdesc\t" << mDescription.c_str() << "|\n"; output_stream << "\t\tcreation_date\t" << mCreationDate << "\n"; diff --git a/indra/llinventory/llpermissions.cpp b/indra/llinventory/llpermissions.cpp index 7e013de11a..34354e3e8c 100644 --- a/indra/llinventory/llpermissions.cpp +++ b/indra/llinventory/llpermissions.cpp @@ -572,143 +572,17 @@ void LLPermissions::unpackMessage(LLMessageSystem* msg, const char* block, S32 b BOOL LLPermissions::importFile(LLFILE* fp) { - init(LLUUID::null, LLUUID::null, LLUUID::null, LLUUID::null); - const S32 BUFSIZE = 16384; - - // *NOTE: Changing the buffer size will require changing the scanf - // calls below. - char buffer[BUFSIZE]; /* Flawfinder: ignore */ - char keyword[256]; /* Flawfinder: ignore */ - char valuestr[256]; /* Flawfinder: ignore */ - char uuid_str[256]; /* Flawfinder: ignore */ - U32 mask; - - keyword[0] = '\0'; - valuestr[0] = '\0'; - - while (!feof(fp)) - { - if (fgets(buffer, BUFSIZE, fp) == NULL) - { - buffer[0] = '\0'; - } - - sscanf( /* Flawfinder: ignore */ - buffer, - " %255s %255s", - keyword, valuestr); - if (!strcmp("{", keyword)) - { - continue; - } - if (!strcmp("}",keyword)) - { - break; - } - else if (!strcmp("creator_mask", keyword)) - { - // legacy support for "creator" masks - sscanf(valuestr, "%x", &mask); - mMaskBase = mask; - fixFairUse(); - } - else if (!strcmp("base_mask", keyword)) - { - sscanf(valuestr, "%x", &mask); - mMaskBase = mask; - //fixFairUse(); - } - else if (!strcmp("owner_mask", keyword)) - { - sscanf(valuestr, "%x", &mask); - mMaskOwner = mask; - } - else if (!strcmp("group_mask", keyword)) - { - sscanf(valuestr, "%x", &mask); - mMaskGroup = mask; - } - else if (!strcmp("everyone_mask", keyword)) - { - sscanf(valuestr, "%x", &mask); - mMaskEveryone = mask; - } - else if (!strcmp("next_owner_mask", keyword)) - { - sscanf(valuestr, "%x", &mask); - mMaskNextOwner = mask; - } - else if (!strcmp("creator_id", keyword)) - { - sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */ - mCreator.set(uuid_str); - } - else if (!strcmp("owner_id", keyword)) - { - sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */ - mOwner.set(uuid_str); - } - else if (!strcmp("last_owner_id", keyword)) - { - sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */ - mLastOwner.set(uuid_str); - } - else if (!strcmp("group_id", keyword)) - { - sscanf(valuestr, "%255s", uuid_str); /* Flawfinder: ignore */ - mGroup.set(uuid_str); - } - else if (!strcmp("group_owned", keyword)) - { - sscanf(valuestr, "%d", &mask); - if(mask) mIsGroupOwned = true; - else mIsGroupOwned = false; - } - else - { - llinfos << "unknown keyword " << keyword << " in permissions import" << llendl; - } - } - fix(); - return TRUE; + llifstream ifs(fp); + return importStream(ifs); } - BOOL LLPermissions::exportFile(LLFILE* fp) const { - std::string uuid_str; - - fprintf(fp, "\tpermissions 0\n"); - fprintf(fp, "\t{\n"); - - fprintf(fp, "\t\tbase_mask\t%08x\n", mMaskBase); - fprintf(fp, "\t\towner_mask\t%08x\n", mMaskOwner); - fprintf(fp, "\t\tgroup_mask\t%08x\n", mMaskGroup); - fprintf(fp, "\t\teveryone_mask\t%08x\n", mMaskEveryone); - fprintf(fp, "\t\tnext_owner_mask\t%08x\n", mMaskNextOwner); - - mCreator.toString(uuid_str); - fprintf(fp, "\t\tcreator_id\t%s\n", uuid_str.c_str()); - - mOwner.toString(uuid_str); - fprintf(fp, "\t\towner_id\t%s\n", uuid_str.c_str()); - - mLastOwner.toString(uuid_str); - fprintf(fp, "\t\tlast_owner_id\t%s\n", uuid_str.c_str()); - - mGroup.toString(uuid_str); - fprintf(fp, "\t\tgroup_id\t%s\n", uuid_str.c_str()); - - if(mIsGroupOwned) - { - fprintf(fp, "\t\tgroup_owned\t1\n"); - } - fprintf(fp,"\t}\n"); - return TRUE; + llofstream ofs(fp); + return exportStream(ofs); } - -BOOL LLPermissions::importLegacyStream(std::istream& input_stream) +BOOL LLPermissions::importStream(std::istream& input_stream) { init(LLUUID::null, LLUUID::null, LLUUID::null, LLUUID::null); const S32 BUFSIZE = 16384; @@ -727,6 +601,18 @@ BOOL LLPermissions::importLegacyStream(std::istream& input_stream) while (input_stream.good()) { input_stream.getline(buffer, BUFSIZE); + if (input_stream.eof()) + { + llwarns << "Bad permissions: early end of input stream" + << llendl; + return FALSE; + } + if (input_stream.fail()) + { + llwarns << "Bad permissions: failed to read from input stream" + << llendl; + return FALSE; + } sscanf( /* Flawfinder: ignore */ buffer, " %255s %255s", @@ -800,7 +686,8 @@ BOOL LLPermissions::importLegacyStream(std::istream& input_stream) } else { - llinfos << "unknown keyword " << keyword << " in permissions import" << llendl; + llwarns << "unknown keyword " << keyword + << " in permissions import" << llendl; } } fix(); @@ -808,36 +695,26 @@ BOOL LLPermissions::importLegacyStream(std::istream& input_stream) } -BOOL LLPermissions::exportLegacyStream(std::ostream& output_stream) const +BOOL LLPermissions::exportStream(std::ostream& output_stream) const { - std::string uuid_str; - + if (!output_stream.good()) return FALSE; output_stream << "\tpermissions 0\n"; output_stream << "\t{\n"; - std::string buffer; - buffer = llformat( "\t\tbase_mask\t%08x\n", mMaskBase); - output_stream << buffer; - buffer = llformat( "\t\towner_mask\t%08x\n", mMaskOwner); - output_stream << buffer; - buffer = llformat( "\t\tgroup_mask\t%08x\n", mMaskGroup); - output_stream << buffer; - buffer = llformat( "\t\teveryone_mask\t%08x\n", mMaskEveryone); - output_stream << buffer; - buffer = llformat( "\t\tnext_owner_mask\t%08x\n", mMaskNextOwner); - output_stream << buffer; - - mCreator.toString(uuid_str); - output_stream << "\t\tcreator_id\t" << uuid_str << "\n"; - - mOwner.toString(uuid_str); - output_stream << "\t\towner_id\t" << uuid_str << "\n"; - - mLastOwner.toString(uuid_str); - output_stream << "\t\tlast_owner_id\t" << uuid_str << "\n"; - - mGroup.toString(uuid_str); - output_stream << "\t\tgroup_id\t" << uuid_str << "\n"; + char prev_fill = output_stream.fill('0'); + output_stream << std::hex; + output_stream << "\t\tbase_mask\t" << std::setw(8) << mMaskBase << "\n"; + output_stream << "\t\towner_mask\t" << std::setw(8) << mMaskOwner << "\n"; + output_stream << "\t\tgroup_mask\t" << std::setw(8) << mMaskGroup << "\n"; + output_stream << "\t\teveryone_mask\t" << std::setw(8) << mMaskEveryone << "\n"; + output_stream << "\t\tnext_owner_mask\t" << std::setw(8) << mMaskNextOwner << "\n"; + output_stream << std::dec; + output_stream.fill(prev_fill); + + output_stream << "\t\tcreator_id\t" << mCreator << "\n"; + output_stream << "\t\towner_id\t" << mOwner << "\n"; + output_stream << "\t\tlast_owner_id\t" << mLastOwner << "\n"; + output_stream << "\t\tgroup_id\t" << mGroup << "\n"; if(mIsGroupOwned) { diff --git a/indra/llinventory/llpermissions.h b/indra/llinventory/llpermissions.h index 3ecc922370..7d3a68d353 100644 --- a/indra/llinventory/llpermissions.h +++ b/indra/llinventory/llpermissions.h @@ -316,8 +316,8 @@ public: BOOL importFile(LLFILE* fp); BOOL exportFile(LLFILE* fp) const; - BOOL importLegacyStream(std::istream& input_stream); - BOOL exportLegacyStream(std::ostream& output_stream) const; + BOOL importStream(std::istream& input_stream); + BOOL exportStream(std::ostream& output_stream) const; bool operator==(const LLPermissions &rhs) const; bool operator!=(const LLPermissions &rhs) const; diff --git a/indra/llinventory/llsaleinfo.cpp b/indra/llinventory/llsaleinfo.cpp index dd408a8efe..a829667933 100644 --- a/indra/llinventory/llsaleinfo.cpp +++ b/indra/llinventory/llsaleinfo.cpp @@ -81,15 +81,13 @@ U32 LLSaleInfo::getCRC32() const BOOL LLSaleInfo::exportFile(LLFILE* fp) const { - fprintf(fp, "\tsale_info\t0\n\t{\n"); - fprintf(fp, "\t\tsale_type\t%s\n", lookup(mSaleType)); - fprintf(fp, "\t\tsale_price\t%d\n", mSalePrice); - fprintf(fp,"\t}\n"); - return TRUE; + llofstream ofs(fp); + return exportStream(ofs); } -BOOL LLSaleInfo::exportLegacyStream(std::ostream& output_stream) const +BOOL LLSaleInfo::exportStream(std::ostream& output_stream) const { + if (!output_stream.good()) return FALSE; output_stream << "\tsale_info\t0\n\t{\n"; output_stream << "\t\tsale_type\t" << lookup(mSaleType) << "\n"; output_stream << "\t\tsale_price\t" << mSalePrice << "\n"; @@ -134,80 +132,39 @@ bool LLSaleInfo::fromLLSD(const LLSD& sd, BOOL& has_perm_mask, U32& perm_mask) BOOL LLSaleInfo::importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask) { - has_perm_mask = FALSE; - - // *NOTE: Changing the buffer size will require changing the scanf - // calls below. - char buffer[MAX_STRING]; /* Flawfinder: ignore */ - char keyword[MAX_STRING]; /* Flawfinder: ignore */ - char valuestr[MAX_STRING]; /* Flawfinder: ignore */ - BOOL success = TRUE; - - keyword[0] = '\0'; - valuestr[0] = '\0'; - while(success && (!feof(fp))) - { - if (fgets(buffer, MAX_STRING, fp) == NULL) - { - buffer[0] = '\0'; - } - - sscanf( /* Flawfinder: ignore */ - buffer, - " %254s %254s", - keyword, valuestr); - if(!keyword[0]) - { - continue; - } - if(0 == strcmp("{",keyword)) - { - continue; - } - if(0 == strcmp("}", keyword)) - { - break; - } - else if(0 == strcmp("sale_type", keyword)) - { - mSaleType = lookup(valuestr); - } - else if(0 == strcmp("sale_price", keyword)) - { - sscanf(valuestr, "%d", &mSalePrice); - mSalePrice = llclamp(mSalePrice, 0, S32_MAX); - } - else if (!strcmp("perm_mask", keyword)) - { - //llinfos << "found deprecated keyword perm_mask" << llendl; - has_perm_mask = TRUE; - sscanf(valuestr, "%x", &perm_mask); - } - else - { - llwarns << "unknown keyword '" << keyword - << "' in sale info import" << llendl; - } - } - return success; + llifstream ifs(fp); + return importStream(ifs, has_perm_mask, perm_mask); } -BOOL LLSaleInfo::importLegacyStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask) +BOOL LLSaleInfo::importStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask) { has_perm_mask = FALSE; + const S32 BUFSIZE = 16384; + // *NOTE: Changing the buffer size will require changing the scanf // calls below. - char buffer[MAX_STRING]; /* Flawfinder: ignore */ - char keyword[MAX_STRING]; /* Flawfinder: ignore */ - char valuestr[MAX_STRING]; /* Flawfinder: ignore */ - BOOL success = TRUE; + char buffer[BUFSIZE]; /* Flawfinder: ignore */ + char keyword[255]; /* Flawfinder: ignore */ + char valuestr[255]; /* Flawfinder: ignore */ keyword[0] = '\0'; valuestr[0] = '\0'; - while(success && input_stream.good()) + while(input_stream.good()) { input_stream.getline(buffer, MAX_STRING); + if (input_stream.eof()) + { + llwarns << "Bad sale info: early end of input stream" + << llendl; + return FALSE; + } + if (input_stream.fail()) + { + llwarns << "Bad sale info: failed to read from input stream" + << llendl; + return FALSE; + } sscanf( /* Flawfinder: ignore */ buffer, " %254s %254s", @@ -245,7 +202,7 @@ BOOL LLSaleInfo::importLegacyStream(std::istream& input_stream, BOOL& has_perm_m << "' in sale info import" << llendl; } } - return success; + return TRUE; } void LLSaleInfo::setSalePrice(S32 price) diff --git a/indra/llinventory/llsaleinfo.h b/indra/llinventory/llsaleinfo.h index 4e98ccf6ff..f7f3f9269c 100644 --- a/indra/llinventory/llsaleinfo.h +++ b/indra/llinventory/llsaleinfo.h @@ -89,11 +89,11 @@ public: BOOL exportFile(LLFILE* fp) const; BOOL importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask); - BOOL exportLegacyStream(std::ostream& output_stream) const; + BOOL exportStream(std::ostream& output_stream) const; LLSD asLLSD() const; operator LLSD() const { return asLLSD(); } bool fromLLSD(const LLSD& sd, BOOL& has_perm_mask, U32& perm_mask); - BOOL importLegacyStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask); + BOOL importStream(std::istream& input_stream, BOOL& has_perm_mask, U32& perm_mask); LLSD packMessage() const; void unpackMessage(LLSD sales); diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index f784262e90..ae5efb2287 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -34,6 +34,7 @@ #include "llcharacter.h" #include "llcoordframe.h" // for mFrameAgent #include "llavatarappearancedefines.h" +#include "llpermissionsflags.h" #include #include diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h index ca12fe2045..580b6dfa7e 100644 --- a/indra/newview/lllocalbitmaps.h +++ b/indra/newview/lllocalbitmaps.h @@ -28,9 +28,11 @@ #ifndef LL_LOCALBITMAPS_H #define LL_LOCALBITMAPS_H +#include "llavatarappearancedefines.h" #include "lleventtimer.h" +#include "llimage.h" +#include "llpointer.h" #include "llwearabletype.h" -#include "llavatarappearancedefines.h" class LLScrollListCtrl; class LLViewerObject; diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 0d5daf129f..148e5a015b 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -34,6 +34,7 @@ #include "llaudioengine.h" #include "llviewercontrol.h" #include "llfontgl.h" +#include "llwearable.h" #include "sound_ids.h" #include "v3math.h" #include "v3color.h" diff --git a/indra/newview/llviewertexlayer.h b/indra/newview/llviewertexlayer.h index 95c339a5b0..9df9474eff 100644 --- a/indra/newview/llviewertexlayer.h +++ b/indra/newview/llviewertexlayer.h @@ -28,6 +28,7 @@ #define LL_VIEWER_TEXLAYER_H #include "lldynamictexture.h" +#include "llextendedstatus.h" #include "lltexlayer.h" class LLVOAvatarSelf; diff --git a/indra/newview/llviewerwearable.cpp b/indra/newview/llviewerwearable.cpp index e9fa92e8be..162c20837a 100644 --- a/indra/newview/llviewerwearable.cpp +++ b/indra/newview/llviewerwearable.cpp @@ -90,13 +90,13 @@ LLViewerWearable::~LLViewerWearable() } // virtual -LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file, LLAvatarAppearance* avatarp ) +LLWearable::EImportResult LLViewerWearable::importStream( std::istream& input_stream, LLAvatarAppearance* avatarp ) { // suppress texlayerset updates while wearables are being imported. Layersets will be updated // when the wearables are "worn", not loaded. Note state will be restored when this object is destroyed. LLOverrideBakedTextureUpdate stop_bakes(false); - LLWearable::EImportResult result = LLWearable::importFile(file, avatarp); + LLWearable::EImportResult result = LLWearable::importStream(input_stream, avatarp); if (LLWearable::FAILURE == result) return result; if (LLWearable::BAD_HEADER == result) { @@ -129,9 +129,6 @@ LLWearable::EImportResult LLViewerWearable::importFile( LLFILE* file, LLAvatarAp } } - // copy all saved param values to working params - revertValues(); - return result; } @@ -296,8 +293,8 @@ void LLViewerWearable::setTexturesToDefaults() } -//static -const LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index) +// virtual +LLUUID LLViewerWearable::getDefaultTextureImageID(ETextureIndex index) const { const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = LLAvatarAppearanceDictionary::getInstance()->getTexture(index); const std::string &default_image_name = texture_dict->mDefaultImageName; @@ -475,103 +472,9 @@ void LLViewerWearable::setItemID(const LLUUID& item_id) mItemID = item_id; } - -LLLocalTextureObject* LLViewerWearable::getLocalTextureObject(S32 index) -{ - te_map_t::iterator iter = mTEMap.find(index); - if( iter != mTEMap.end() ) - { - LLLocalTextureObject* lto = iter->second; - return lto; - } - return NULL; -} - -const LLLocalTextureObject* LLViewerWearable::getLocalTextureObject(S32 index) const -{ - te_map_t::const_iterator iter = mTEMap.find(index); - if( iter != mTEMap.end() ) - { - const LLLocalTextureObject* lto = iter->second; - return lto; - } - return NULL; -} - -std::vector LLViewerWearable::getLocalTextureListSeq() -{ - std::vector result; - - for(te_map_t::const_iterator iter = mTEMap.begin(); - iter != mTEMap.end(); iter++) - { - LLLocalTextureObject* lto = iter->second; - result.push_back(lto); - } - - return result; -} - -void LLViewerWearable::setLocalTextureObject(S32 index, LLLocalTextureObject <o) -{ - if( mTEMap.find(index) != mTEMap.end() ) - { - mTEMap.erase(index); - } - mTEMap[index] = new LLLocalTextureObject(lto); -} - -void LLViewerWearable::setVisualParams() -{ - for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++) - { - S32 id = iter->first; - LLVisualParam *wearable_param = iter->second; - F32 value = wearable_param->getWeight(); - gAgentAvatarp->setVisualParamWeight(id, value, FALSE); - } -} - void LLViewerWearable::revertValues() { - //update saved settings so wearable is no longer dirty - // non-driver params first - for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++) - { - S32 id = iter->first; - F32 value = iter->second; - LLVisualParam *param = getVisualParam(id); - if(param && !dynamic_cast(param) ) - { - setVisualParamWeight(id, value, TRUE); - } - } - - //then driver params - for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++) - { - S32 id = iter->first; - F32 value = iter->second; - LLVisualParam *param = getVisualParam(id); - if(param && dynamic_cast(param) ) - { - setVisualParamWeight(id, value, TRUE); - } - } - - // make sure that saved values are sane - for (param_map_t::const_iterator iter = mSavedVisualParamMap.begin(); iter != mSavedVisualParamMap.end(); iter++) - { - S32 id = iter->first; - LLVisualParam *param = getVisualParam(id); - if( param ) - { - mSavedVisualParamMap[id] = param->getWeight(); - } - } - - syncImages(mSavedTEMap, mTEMap); - + LLWearable::revertValues(); LLSidepanelAppearance *panel = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance")); if( panel ) @@ -582,19 +485,7 @@ void LLViewerWearable::revertValues() void LLViewerWearable::saveValues() { - //update saved settings so wearable is no longer dirty - mSavedVisualParamMap.clear(); - for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); ++iter) - { - S32 id = iter->first; - LLVisualParam *wearable_param = iter->second; - F32 value = wearable_param->getWeight(); - mSavedVisualParamMap[id] = value; - } - - // Deep copy of mTEMap (copies only those tes that are current, filling in defaults where needed) - syncImages(mTEMap, mSavedTEMap); - + LLWearable::saveValues(); LLSidepanelAppearance *panel = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance")); if( panel ) @@ -603,69 +494,6 @@ void LLViewerWearable::saveValues() } } -void LLViewerWearable::syncImages(te_map_t &src, te_map_t &dst) -{ - // Deep copy of src (copies only those tes that are current, filling in defaults where needed) - for( S32 te = 0; te < TEX_NUM_INDICES; te++ ) - { - if (LLAvatarAppearanceDictionary::getTEWearableType((ETextureIndex) te) == mType) - { - te_map_t::const_iterator iter = src.find(te); - LLUUID image_id; - LLViewerFetchedTexture *image = NULL; - LLLocalTextureObject *lto = NULL; - if(iter != src.end()) - { - // there's a Local Texture Object in the source image map. Use this to populate the values to store in the destination image map. - lto = iter->second; - image = dynamic_cast (lto->getImage()); - image_id = lto->getID(); - } - else - { - // there is no Local Texture Object in the source image map. Get defaults values for populating the destination image map. - image_id = getDefaultTextureImageID((ETextureIndex) te); - image = LLViewerTextureManager::getFetchedTexture( image_id ); - } - - if( dst.find(te) != dst.end() ) - { - // there's already an entry in the destination map for the texture. Just update its values. - dst[te]->setImage(image); - dst[te]->setID(image_id); - } - else - { - // no entry found in the destination map, we need to create a new Local Texture Object - dst[te] = new LLLocalTextureObject(image, image_id); - } - - if( lto ) - { - // If we pulled values from a Local Texture Object in the source map, make sure the proper flags are set in the new (or updated) entry in the destination map. - dst[te]->setBakedReady(lto->getBakedReady()); - dst[te]->setDiscard(lto->getDiscard()); - } - } - } -} - -void LLViewerWearable::destroyTextures() -{ - for( te_map_t::iterator iter = mTEMap.begin(); iter != mTEMap.end(); ++iter ) - { - LLLocalTextureObject *lto = iter->second; - delete lto; - } - mTEMap.clear(); - for( te_map_t::iterator iter = mSavedTEMap.begin(); iter != mSavedTEMap.end(); ++iter ) - { - LLLocalTextureObject *lto = iter->second; - delete lto; - } - mSavedTEMap.clear(); -} - // virtual void LLViewerWearable::setUpdated() const { diff --git a/indra/newview/llviewerwearable.h b/indra/newview/llviewerwearable.h index d8412b1c65..65566f23a5 100644 --- a/indra/newview/llviewerwearable.h +++ b/indra/newview/llviewerwearable.h @@ -64,12 +64,12 @@ public: void removeFromAvatar( BOOL upload_bake ) { LLViewerWearable::removeFromAvatar( mType, upload_bake ); } static void removeFromAvatar( LLWearableType::EType type, BOOL upload_bake ); - /*virtual*/ EImportResult importFile(LLFILE* file, LLAvatarAppearance* avatarp); + /*virtual*/ EImportResult importStream( std::istream& input_stream, LLAvatarAppearance* avatarp ); void setParamsToDefaults(); void setTexturesToDefaults(); - static const LLUUID getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index); + /*virtual*/ LLUUID getDefaultTextureImageID(LLAvatarAppearanceDefines::ETextureIndex index) const; void saveNewAsset() const; @@ -79,14 +79,8 @@ public: friend std::ostream& operator<<(std::ostream &s, const LLViewerWearable &w); - /*virtual*/ LLLocalTextureObject* getLocalTextureObject(S32 index); - const LLLocalTextureObject* getLocalTextureObject(S32 index) const; - std::vector getLocalTextureListSeq(); - void setLocalTextureObject(S32 index, LLLocalTextureObject <o); - void setVisualParams(); - - void revertValues(); - void saveValues(); + /*virtual*/ void revertValues(); + /*virtual*/ void saveValues(); // Something happened that requires the wearable's label to be updated (e.g. worn/unworn). /*virtual*/void setUpdated() const; @@ -99,8 +93,6 @@ public: /*virtual*/void addToBakedTextureHash(LLMD5& hash) const; protected: - void syncImages(te_map_t &src, te_map_t &dst); - void destroyTextures(); LLAssetID mAssetID; LLTransactionID mTransactionID; diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index 50beaaec3f..3dfacd70f3 100644 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -112,15 +112,16 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID else if (status >= 0) { // read the file - LLFILE* fp = LLFile::fopen(std::string(filename), "rb"); /*Flawfinder: ignore*/ - if( !fp ) + llifstream ifs(filename, llifstream::binary); + if( !ifs.is_open() ) { LL_WARNS("Wearable") << "Bad Wearable Asset: unable to open file: '" << filename << "'" << LL_ENDL; } else { wearable = new LLViewerWearable(uuid); - LLWearable::EImportResult result = wearable->importFile( fp, avatarp ); + LLWearable::EImportResult result = wearable->importStream( + ifs, avatarp ); if (LLWearable::SUCCESS != result) { if (wearable->getType() == LLWearableType::WT_COUNT) @@ -131,7 +132,6 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID wearable = NULL; } - fclose( fp ); if(filename) { LLFile::remove(std::string(filename)); diff --git a/indra/test/llpermissions_tut.cpp b/indra/test/llpermissions_tut.cpp index bf6766424c..dff8bca53f 100644 --- a/indra/test/llpermissions_tut.cpp +++ b/indra/test/llpermissions_tut.cpp @@ -407,7 +407,7 @@ namespace tut LLFILE* fp = LLFile::fopen("linden_file.dat","w+"); if(!fp) { - llerrs << "file coudnt be opened\n" << llendl; + llerrs << "file couldn't be opened\n" << llendl; return; } LLPermissions perm,perm1; @@ -425,15 +425,15 @@ namespace tut perm.initMasks(base, ownerp, everyone, groupp, next); - perm.exportFile(fp); + ensure("Permissions export failed", perm.exportFile(fp)); fclose(fp); fp = LLFile::fopen("linden_file.dat","r+"); if(!fp) { - llerrs << "file coudnt be opened\n" << llendl; + llerrs << "file couldn't be opened\n" << llendl; return; } - perm1.importFile(fp); + ensure("Permissions import failed", perm1.importFile(fp)); fclose(fp); ensure_equals("exportFile()/importFile():failed to export and import the data ", perm1, perm); } @@ -457,11 +457,11 @@ namespace tut perm.initMasks(base, ownerp, everyone, groupp, next); std::ostringstream ostream; - perm.exportLegacyStream(ostream); + perm.exportStream(ostream); std::istringstream istream(ostream.str()); - perm1.importLegacyStream(istream); + perm1.importStream(istream); - ensure_equals("exportLegacyStream()/importLegacyStream():failed to export and import the data ", perm1, perm); + ensure_equals("exportStream()/importStream():failed to export and import the data ", perm1, perm); } template<> template<> diff --git a/indra/test/llsaleinfo_tut.cpp b/indra/test/llsaleinfo_tut.cpp index 09fca2abba..d546803947 100644 --- a/indra/test/llsaleinfo_tut.cpp +++ b/indra/test/llsaleinfo_tut.cpp @@ -146,16 +146,17 @@ namespace tut LLSaleInfo llsaleinfo(LLSaleInfo::FS_ORIGINAL, sale_price); std::ostringstream ostream; - llsaleinfo.exportLegacyStream(ostream); + llsaleinfo.exportStream(ostream); std::istringstream istream(ostream.str()); LLSaleInfo llsaleinfo1; U32 perm_mask = 0; BOOL has_perm_mask = FALSE; - llsaleinfo1.importLegacyStream(istream, has_perm_mask, perm_mask); + llsaleinfo1.importStream(istream, has_perm_mask, perm_mask); - ensure("importLegacyStream() fn failed ", llsaleinfo.getSalePrice() == llsaleinfo1.getSalePrice() && - llsaleinfo.getSaleType() == llsaleinfo1.getSaleType()); + ensure("importStream() fn failed ", + llsaleinfo.getSalePrice() == llsaleinfo1.getSalePrice() && + llsaleinfo.getSaleType() == llsaleinfo1.getSaleType()); } template<> template<> -- cgit v1.3 From 7d62343f4444e05d30092e6219bfea564a8e8e17 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Thu, 20 Sep 2012 04:56:09 +0000 Subject: Skipping experimental filebuffering code on windows for now --- indra/llcommon/llfile.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp index 38b0dfdaf1..deab7a87fc 100644 --- a/indra/llcommon/llfile.cpp +++ b/indra/llcommon/llfile.cpp @@ -411,6 +411,9 @@ LLFILE * LLFile::_Fiopen(const std::string& filename, //#endif //} + +// *TODO: Seek the underlying c stream for better cross-platform compatibility? +#if !LL_WINDOWS llstdio_filebuf::int_type llstdio_filebuf::overflow(llstdio_filebuf::int_type __c) { int_type __ret = traits_type::eof(); @@ -829,6 +832,7 @@ int llstdio_filebuf::sync() { return (_M_file.sync() == 0 ? 0 : -1); } +#endif /************** input file stream ********************************/ -- cgit v1.3 From 0fc7c2aac14eaf1f2dbe9e64c02e1b68ae3e70ec Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Thu, 20 Sep 2012 06:32:43 +0000 Subject: Fix for windows compile issue --- indra/llcommon/llfile.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h index 7049ab1396..9d70db96ea 100644 --- a/indra/llcommon/llfile.h +++ b/indra/llcommon/llfile.h @@ -38,7 +38,6 @@ typedef FILE LLFILE; #include -#include #include #if LL_WINDOWS @@ -47,6 +46,7 @@ typedef struct _stat llstat; #else typedef struct stat llstat; #include +#include #endif #ifndef S_ISREG -- cgit v1.3 From e9e459c89cdfc57f32ffc7c421e01f43348f3b6c Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Thu, 20 Sep 2012 17:13:16 +0000 Subject: Restoring llrenderheadless changes so we can fix them --- indra/cmake/LLRender.cmake | 15 +++++------- indra/llcommon/llfile.h | 2 +- indra/llrender/CMakeLists.txt | 54 +++++++++++++++++++++---------------------- 3 files changed, 34 insertions(+), 37 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake index e438872772..6695ed6bd9 100644 --- a/indra/cmake/LLRender.cmake +++ b/indra/cmake/LLRender.cmake @@ -8,18 +8,15 @@ set(LLRENDER_INCLUDE_DIRS ${GLH_INCLUDE_DIR} ) -#if ((SERVER OR BAKING) AND LINUX) -# set(LLRENDER_LIBRARIES -# llrenderheadless -# ) -#else ((SERVER OR BAKING) AND LINUX) -#set(LLRENDER_LIBRARIES -# llrender -# ) -#endif ((SERVER OR BAKING) AND LINUX) +if ((SERVER OR BAKING) AND LINUX) + set(LLRENDER_LIBRARIES + llrenderheadless + ) +else ((SERVER OR BAKING) AND LINUX) set(LLRENDER_LIBRARIES llrender ) +endif ((SERVER OR BAKING) AND LINUX) # mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set # differently for different object files. diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h index 9d70db96ea..7049ab1396 100644 --- a/indra/llcommon/llfile.h +++ b/indra/llcommon/llfile.h @@ -38,6 +38,7 @@ typedef FILE LLFILE; #include +#include #include #if LL_WINDOWS @@ -46,7 +47,6 @@ typedef struct _stat llstat; #else typedef struct stat llstat; #include -#include #endif #ifndef S_ISREG diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt index e45b55ef59..638ab23bd6 100644 --- a/indra/llrender/CMakeLists.txt +++ b/indra/llrender/CMakeLists.txt @@ -83,23 +83,23 @@ list(APPEND llrender_SOURCE_FILES llrender.cpp llrendertarget.cpp ) - #if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN) - # copy_server_sources( - # llgl - # llrender - # ) - # - # - # set_source_files_properties( - # ${server_SOURCE_FILES} - # PROPERTIES - # COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1" - # ) -# add_library (llrenderheadless -# ${llrender_SOURCE_FILES} -# ${server_SOURCE_FILES} -# ) -#endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN) +if ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN) + copy_server_sources( + llgl + llrender + ) + + + set_source_files_properties( + ${server_SOURCE_FILES} + PROPERTIES + COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1" + ) + add_library (llrenderheadless + ${llrender_SOURCE_FILES} + ${server_SOURCE_FILES} + ) +endif ((SERVER OR BAKING) AND NOT WINDOWS AND NOT DARWIN) add_library (llrender ${llrender_SOURCE_FILES}) # Libraries on which this library depends, needed for Linux builds @@ -116,14 +116,14 @@ target_link_libraries(llrender ${FREETYPE_LIBRARIES} ${OPENGL_LIBRARIES}) -#target_link_libraries(llrenderheadless -# ${LLCOMMON_LIBRARIES} -# ${LLIMAGE_LIBRARIES} -# ${LLMATH_LIBRARIES} -# ${LLRENDER_LIBRARIES} -# ${LLVFS_LIBRARIES} -# ${LLXML_LIBRARIES} -# ${LLVFS_LIBRARIES} -# ${LLWINDOW_LIBRARIES} -# ${OPENGL_LIBRARIES}) +target_link_libraries(llrenderheadless + ${LLCOMMON_LIBRARIES} + ${LLIMAGE_LIBRARIES} + ${LLMATH_LIBRARIES} + ${LLRENDER_LIBRARIES} + ${LLVFS_LIBRARIES} + ${LLXML_LIBRARIES} + ${LLVFS_LIBRARIES} + ${LLWINDOW_LIBRARIES} + ${OPENGL_LIBRARIES}) -- cgit v1.3 From ecf72da021d16168688a833e776e8a76e80ee4d6 Mon Sep 17 00:00:00 2001 From: "developer@Developer-PC" Date: Fri, 21 Sep 2012 22:21:42 -0700 Subject: More windows build fixes --- indra/cmake/DirectX.cmake | 2 ++ indra/llcommon/llfile.cpp | 6 +++--- indra/llcommon/llfile.h | 2 +- indra/lscript/lscript_compile/CMakeLists.txt | 4 +++- indra/lscript/lscript_compile/bison.bat | 9 +++++---- 5 files changed, 14 insertions(+), 9 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake index b2a18805d4..8cae606848 100644 --- a/indra/cmake/DirectX.cmake +++ b/indra/cmake/DirectX.cmake @@ -3,6 +3,7 @@ if (VIEWER AND WINDOWS) find_path(DIRECTX_INCLUDE_DIR dxdiag.h "$ENV{DXSDK_DIR}/Include" + "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Include" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include" @@ -25,6 +26,7 @@ if (VIEWER AND WINDOWS) find_path(DIRECTX_LIBRARY_DIR dxguid.lib "$ENV{DXSDK_DIR}/Lib/x86" + "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Lib/x86" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2009)/Lib/x86" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86" "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86" diff --git a/indra/llcommon/llfile.cpp b/indra/llcommon/llfile.cpp index deab7a87fc..bc615ed39e 100644 --- a/indra/llcommon/llfile.cpp +++ b/indra/llcommon/llfile.cpp @@ -329,7 +329,7 @@ const char *LLFile::tmpdir() #if LL_WINDOWS LLFILE * LLFile::_Fiopen(const std::string& filename, - std::ios::openmode mode,int) // protection currently unused + std::ios::openmode mode) { // open a file static const char *mods[] = { // fopen mode strings corresponding to valid[i] @@ -899,7 +899,7 @@ llifstream::llifstream(_Filet *_File, } #endif -#if LL_WINDOWS +#if !LL_WINDOWS // explicit llifstream::llifstream(int __fd, ios_base::openmode _Mode, size_t _Size) : @@ -1014,7 +1014,7 @@ llofstream::llofstream(_Filet *_File, } #endif -#if LL_WINDOWS +#if !LL_WINDOWS // explicit llofstream::llofstream(int __fd, ios_base::openmode _Mode, size_t _Size) : diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h index 7049ab1396..9d70db96ea 100644 --- a/indra/llcommon/llfile.h +++ b/indra/llcommon/llfile.h @@ -38,7 +38,6 @@ typedef FILE LLFILE; #include -#include #include #if LL_WINDOWS @@ -47,6 +46,7 @@ typedef struct _stat llstat; #else typedef struct stat llstat; #include +#include #endif #ifndef S_ISREG diff --git a/indra/lscript/lscript_compile/CMakeLists.txt b/indra/lscript/lscript_compile/CMakeLists.txt index 134703eed3..13cbd3ffd2 100644 --- a/indra/lscript/lscript_compile/CMakeLists.txt +++ b/indra/lscript/lscript_compile/CMakeLists.txt @@ -113,8 +113,10 @@ if (WINDOWS) ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp ${CMAKE_CURRENT_BINARY_DIR}/indra.y.hpp COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bison.bat + ARGS ${BISON} ${M4_PATH} - ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp + -p indra_ + -d -o ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp ${CMAKE_CURRENT_SOURCE_DIR}/indra.y DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bison.bat diff --git a/indra/lscript/lscript_compile/bison.bat b/indra/lscript/lscript_compile/bison.bat index 0baff4e5ef..d40997225e 100644 --- a/indra/lscript/lscript_compile/bison.bat +++ b/indra/lscript/lscript_compile/bison.bat @@ -2,10 +2,11 @@ @REM find m4, even if neither program is present in PATH. @set bison=%1 -set M4PATH=%2 +shift +set M4PATH=%1 +shift set M4= -@set output=%3 -@set input=%4 set PATH=%M4PATH%;%PATH% -%bison% -d -o %output% %input% +@REM %* does not work with shift... +%bison% %1 %2 %3 %4 %5 %6 %7 %8 %9 -- cgit v1.3 From c06c35609c6683731eaea283468f6b32af18fea2 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Thu, 11 Oct 2012 00:09:04 +0000 Subject: Updating linux build to gcc4.6 --- BuildParams | 5 ++ autobuild.xml | 8 ++-- indra/cmake/LLCommon.cmake | 2 + indra/cmake/LLXML.cmake | 4 +- indra/cmake/UI.cmake | 2 + .../llimage_libtest/CMakeLists.txt | 3 ++ .../integration_tests/llui_libtest/CMakeLists.txt | 4 ++ indra/linux_crash_logger/CMakeLists.txt | 4 ++ indra/linux_updater/CMakeLists.txt | 4 ++ indra/linux_updater/linux_updater.cpp | 4 +- indra/llappearance/llavatarappearance.cpp | 2 +- indra/llcharacter/CMakeLists.txt | 4 ++ indra/llcommon/llsdserialize.cpp | 5 +- indra/llcommon/tests/bitpack_test.cpp | 15 +++--- indra/llcommon/tests/llinstancetracker_test.cpp | 3 +- indra/llcommon/tests/reflection_test.cpp | 2 +- indra/llcrashlogger/CMakeLists.txt | 4 ++ indra/llinventory/CMakeLists.txt | 4 ++ indra/llmath/llvolume.cpp | 5 -- indra/llmessage/llhttpassetstorage.cpp | 2 +- indra/llmessage/lliosocket.cpp | 9 ++++ indra/llplugin/CMakeLists.txt | 4 ++ indra/llplugin/slplugin/CMakeLists.txt | 3 ++ indra/llprimitive/CMakeLists.txt | 6 ++- indra/llrender/CMakeLists.txt | 4 ++ indra/llrender/llfontfreetype.cpp | 7 +-- indra/llrender/llfontgl.cpp | 2 - indra/llrender/llgl.cpp | 14 +++--- indra/llrender/llimagegl.cpp | 4 +- indra/llrender/llvertexbuffer.cpp | 6 --- indra/llui/CMakeLists.txt | 4 ++ indra/llui/llconsole.cpp | 1 - indra/llui/llfunctorregistry.h | 2 - indra/llui/llkeywords.cpp | 4 -- indra/llui/lllayoutstack.cpp | 1 - indra/llui/lltextbase.cpp | 2 - indra/llui/lltexteditor.cpp | 1 - indra/llui/lltoolbar.cpp | 4 -- indra/llui/llui.h | 2 + indra/llwindow/CMakeLists.txt | 4 ++ indra/llwindow/GL/glh_extensions.h | 4 +- indra/llwindow/llwindowsdl.cpp | 10 ++-- indra/llxml/CMakeLists.txt | 3 ++ indra/lscript/lscript_compile/CMakeLists.txt | 3 ++ indra/lscript/lscript_execute/CMakeLists.txt | 3 ++ indra/lscript/lscript_execute/lscript_execute.cpp | 11 +---- indra/lscript/lscript_execute/lscript_readlso.cpp | 9 ++-- indra/lscript/lscript_library/CMakeLists.txt | 3 ++ indra/mac_crash_logger/CMakeLists.txt | 4 ++ indra/media_plugins/base/CMakeLists.txt | 3 ++ indra/media_plugins/example/CMakeLists.txt | 3 ++ indra/media_plugins/gstreamer010/CMakeLists.txt | 3 ++ .../gstreamer010/llmediaimplgstreamervidplug.cpp | 3 +- indra/media_plugins/quicktime/CMakeLists.txt | 3 ++ indra/media_plugins/webkit/CMakeLists.txt | 3 ++ indra/newview/CMakeLists.txt | 7 ++- indra/newview/llagent.cpp | 4 +- indra/newview/llagentcamera.cpp | 14 ------ indra/newview/llbuycurrencyhtml.cpp | 4 ++ indra/newview/llcompilequeue.cpp | 12 ----- indra/newview/lldrawable.cpp | 2 - indra/newview/llfasttimerview.cpp | 5 +- indra/newview/llflexibleobject.cpp | 3 -- indra/newview/llfloatermodelpreview.cpp | 13 ------ indra/newview/llfloaterreporter.cpp | 7 +-- indra/newview/llfloateruipreview.cpp | 1 - indra/newview/llfolderview.cpp | 8 ---- indra/newview/llhudtext.cpp | 5 +- indra/newview/llimview.cpp | 6 +-- indra/newview/llinventorybridge.cpp | 1 - indra/newview/llinventorymodel.cpp | 10 ---- indra/newview/llinventorypanel.cpp | 6 --- indra/newview/llmaniprotate.cpp | 1 - indra/newview/llmanipscale.cpp | 5 -- indra/newview/llmaniptranslate.cpp | 17 ------- indra/newview/llmeshrepository.cpp | 4 +- indra/newview/llnetmap.cpp | 2 +- indra/newview/llpanelcontents.cpp | 2 - indra/newview/llpaneleditwearable.cpp | 5 +- indra/newview/llpanelface.cpp | 1 - indra/newview/llpanelgrouplandmoney.cpp | 4 -- indra/newview/llpanellandmarkinfo.cpp | 18 -------- indra/newview/llpanelobject.cpp | 3 +- indra/newview/llpanelpermissions.cpp | 4 +- indra/newview/llpanelvolume.cpp | 3 +- indra/newview/llphysicsmotion.cpp | 13 +++--- indra/newview/llscreenchannel.cpp | 3 +- indra/newview/llsechandler_basic.cpp | 2 - indra/newview/llselectmgr.cpp | 2 - indra/newview/llsidepaneltaskinfo.cpp | 4 +- indra/newview/llspatialpartition.cpp | 6 --- indra/newview/llspeakers.cpp | 2 +- indra/newview/llstartup.cpp | 7 --- indra/newview/llsurface.cpp | 2 - indra/newview/lltoastnotifypanel.cpp | 2 - indra/newview/lltoolcomp.cpp | 2 +- indra/newview/lltoolfocus.cpp | 10 ---- indra/newview/lltoolpie.cpp | 7 --- indra/newview/llurlhistory.cpp | 2 - indra/newview/llviewercamera.cpp | 6 +-- indra/newview/llviewerdisplay.cpp | 1 - indra/newview/llviewermediafocus.cpp | 2 - indra/newview/llviewermessage.cpp | 15 +----- indra/newview/llviewerobjectlist.cpp | 9 ++-- indra/newview/llviewerparcelmedia.cpp | 2 - indra/newview/llviewertexteditor.cpp | 2 - indra/newview/llviewerwindow.cpp | 2 - indra/newview/llvlcomposition.cpp | 8 ---- indra/newview/llvoavatar.cpp | 6 --- indra/newview/llvoavatarself.cpp | 4 -- indra/newview/llvoicevivox.cpp | 11 ++--- indra/newview/llvosurfacepatch.cpp | 10 +--- indra/newview/llvowlsky.cpp | 16 +++---- indra/newview/llwaterparamset.cpp | 2 - indra/newview/llworldmapview.cpp | 3 -- indra/newview/pipeline.cpp | 6 +-- indra/test/CMakeLists.txt | 4 ++ indra/test/io.cpp | 8 ++-- indra/test/llstreamtools_tut.cpp | 53 ++++++++++------------ indra/test/lltemplatemessagebuilder_tut.cpp | 3 +- indra/test_apps/llplugintest/CMakeLists.txt | 3 ++ indra/viewer_components/login/CMakeLists.txt | 4 ++ indra/viewer_components/updater/CMakeLists.txt | 3 ++ indra/win_crash_logger/CMakeLists.txt | 4 ++ 124 files changed, 250 insertions(+), 416 deletions(-) (limited to 'indra/llcommon') diff --git a/BuildParams b/BuildParams index ebfc640023..4567f72ede 100644 --- a/BuildParams +++ b/BuildParams @@ -20,6 +20,11 @@ email_status_this_is_os = true # Limit extent of codeticket updates to revisions after... codeticket_since = 3.3.0-release +# Override build system default toolchain +# Note that this will only affect automated builds. +Linux.gcc_version = /usr/bin/gcc-4.6 +Linux.cxx_version = /usr/bin/g++-4.6 + # ======================================== # Viewer Development # ======================================== diff --git a/autobuild.xml b/autobuild.xml index 2b57908551..096e40a429 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -690,9 +690,9 @@ archive hash - 26f2df1f0b0fa01e94e0253e322f3583 + 1b1f1e9975e3a671c9faf32fcf4b6d43 url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-linux-20101001.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glh_linear/rev/263308/arch/Linux/installer/glh_linear-0.0.0-linux-20120810.tar.bz2 name linux @@ -1330,9 +1330,9 @@ archive hash - b706fdeed4ce2182d434043dc33d9d1d + a6856b4d58a3b71321acad7e1fa9c8d4 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20120814.tar.bz2 + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/265749/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20121011.tar.bz2 name linux diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index d4694ad37a..6daef5eb83 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -10,6 +10,8 @@ set(LLCOMMON_INCLUDE_DIRS ${LIBS_OPEN_DIR}/llcommon ${APRUTIL_INCLUDE_DIR} ${APR_INCLUDE_DIR} + ) +set(LLCOMMON_SYSTEM_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ) diff --git a/indra/cmake/LLXML.cmake b/indra/cmake/LLXML.cmake index 64dfdb604f..b093c76297 100644 --- a/indra/cmake/LLXML.cmake +++ b/indra/cmake/LLXML.cmake @@ -5,8 +5,10 @@ include(EXPAT) set(LLXML_INCLUDE_DIRS ${LIBS_OPEN_DIR}/llxml - ${Boost_INCLUDE_DIRS} ${EXPAT_INCLUDE_DIRS} ) +set(LLXML_SYSTEM_INCLUDE_DIRS + ${Boost_INCLUDE_DIRS} + ) set(LLXML_LIBRARIES llxml) diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index 91e5258fb7..d0fd4df03a 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -1,5 +1,6 @@ # -*- cmake -*- include(Prebuilt) +include(FreeType) if (STANDALONE) include(FindPkgConfig) @@ -47,6 +48,7 @@ else (STANDALONE) pangoft2-1.0 pangox-1.0 pangoxft-1.0 + ${FREETYPE_LIBRARIES} ) endif (LINUX) diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt index af5c9fb2e7..36a7d38bb7 100644 --- a/indra/integration_tests/llimage_libtest/CMakeLists.txt +++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt @@ -16,6 +16,9 @@ include_directories( ${LLVFS_INCLUDE_DIRS} ${LLIMAGE_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) set(llimage_libtest_SOURCE_FILES llimage_libtest.cpp diff --git a/indra/integration_tests/llui_libtest/CMakeLists.txt b/indra/integration_tests/llui_libtest/CMakeLists.txt index 91c9f20c10..e83b4e8cd7 100644 --- a/indra/integration_tests/llui_libtest/CMakeLists.txt +++ b/indra/integration_tests/llui_libtest/CMakeLists.txt @@ -34,6 +34,10 @@ include_directories( ${LLXML_INCLUDE_DIRS} ${LIBS_PREBUILD_DIR}/include/hunspell ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llui_libtest_SOURCE_FILES llui_libtest.cpp diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt index 98ebdc7487..e0d0c9fc69 100644 --- a/indra/linux_crash_logger/CMakeLists.txt +++ b/indra/linux_crash_logger/CMakeLists.txt @@ -20,6 +20,10 @@ include_directories( ${LLVFS_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(linux_crash_logger_SOURCE_FILES linux_crash_logger.cpp diff --git a/indra/linux_updater/CMakeLists.txt b/indra/linux_updater/CMakeLists.txt index c4e25f4a04..4a9e82f9b6 100644 --- a/indra/linux_updater/CMakeLists.txt +++ b/indra/linux_updater/CMakeLists.txt @@ -24,6 +24,10 @@ include_directories( ${OPENSSL_INCLUDE_DIRS} ${UI_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(linux_updater_SOURCE_FILES linux_updater.cpp) diff --git a/indra/linux_updater/linux_updater.cpp b/indra/linux_updater/linux_updater.cpp index 277f0a5367..e3ee137897 100644 --- a/indra/linux_updater/linux_updater.cpp +++ b/indra/linux_updater/linux_updater.cpp @@ -812,7 +812,6 @@ void parse_args_and_init(int argc, char **argv, UpdaterAppState *app_state) int main(int argc, char **argv) { UpdaterAppState* app_state = new UpdaterAppState; - GThread *worker_thread; parse_args_and_init(argc, argv, app_state); @@ -842,8 +841,7 @@ int main(int argc, char **argv) //llinfos << "SAMPLE TRANSLATION IS: " << LLTrans::getString("LoginInProgress") << llendl; // create download thread - worker_thread = g_thread_create - (GThreadFunc(worker_thread_cb), app_state, FALSE, NULL); + g_thread_create(GThreadFunc(worker_thread_cb), app_state, FALSE, NULL); gdk_threads_enter(); gtk_main(); diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index 8677a1daff..bdd2d75822 100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -438,7 +438,7 @@ void LLAvatarAppearance::computeBodySize() // some of the joints have not been cached LLVector3 skull = mSkullp->getPosition(); - LLVector3 skull_scale = mSkullp->getScale(); + //LLVector3 skull_scale = mSkullp->getScale(); LLVector3 neck = mNeckp->getPosition(); LLVector3 neck_scale = mNeckp->getScale(); diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt index 607cdf6d35..2573417b26 100644 --- a/indra/llcharacter/CMakeLists.txt +++ b/indra/llcharacter/CMakeLists.txt @@ -16,6 +16,10 @@ include_directories( ${LLVFS_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llcharacter_SOURCE_FILES llanimationstates.cpp diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index 7f4f670ed0..ad4fce6f35 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -1451,9 +1451,12 @@ S32 LLSDBinaryFormatter::format(const LLSD& data, std::ostream& ostr, U32 option } case LLSD::TypeUUID: + { ostr.put('u'); - ostr.write((const char*)(&(data.asUUID().mData)), UUID_BYTES); + LLUUID temp = data.asUUID(); + ostr.write((const char*)(&(temp.mData)), UUID_BYTES); break; + } case LLSD::TypeString: ostr.put('s'); diff --git a/indra/llcommon/tests/bitpack_test.cpp b/indra/llcommon/tests/bitpack_test.cpp index 05289881d0..afc0c18cd0 100644 --- a/indra/llcommon/tests/bitpack_test.cpp +++ b/indra/llcommon/tests/bitpack_test.cpp @@ -71,7 +71,6 @@ namespace tut U8 packbuffer[255]; U8 unpackbuffer[255]; int pack_bufsize = 0; - int unpack_bufsize = 0; LLBitPack bitpack(packbuffer, 255); @@ -81,19 +80,19 @@ namespace tut pack_bufsize = bitpack.flushBitPack(); LLBitPack bitunpack(packbuffer, pack_bufsize*8); - unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8); + bitunpack.bitUnpack(&unpackbuffer[0], 8); ensure("bitPack: individual unpack: 0", unpackbuffer[0] == (U8) str[0]); - unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8); + bitunpack.bitUnpack(&unpackbuffer[0], 8); ensure("bitPack: individual unpack: 1", unpackbuffer[0] == (U8) str[1]); - unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8); + bitunpack.bitUnpack(&unpackbuffer[0], 8); ensure("bitPack: individual unpack: 2", unpackbuffer[0] == (U8) str[2]); - unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8); + bitunpack.bitUnpack(&unpackbuffer[0], 8); ensure("bitPack: individual unpack: 3", unpackbuffer[0] == (U8) str[3]); - unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8); + bitunpack.bitUnpack(&unpackbuffer[0], 8); ensure("bitPack: individual unpack: 4", unpackbuffer[0] == (U8) str[4]); - unpack_bufsize = bitunpack.bitUnpack(&unpackbuffer[0], 8); + bitunpack.bitUnpack(&unpackbuffer[0], 8); ensure("bitPack: individual unpack: 5", unpackbuffer[0] == (U8) str[5]); - unpack_bufsize = bitunpack.bitUnpack(unpackbuffer, 8*4); // Life + bitunpack.bitUnpack(unpackbuffer, 8*4); // Life ensure_memory_matches("bitPack: 4 bytes unpack:", unpackbuffer, 4, str+6, 4); } diff --git a/indra/llcommon/tests/llinstancetracker_test.cpp b/indra/llcommon/tests/llinstancetracker_test.cpp index 454695ff9f..e769c3e22c 100644 --- a/indra/llcommon/tests/llinstancetracker_test.cpp +++ b/indra/llcommon/tests/llinstancetracker_test.cpp @@ -267,7 +267,6 @@ namespace tut { existing.insert(&*uki); } - Unkeyed* puk = NULL; try { // We don't expect the assignment to take place because we expect @@ -280,7 +279,7 @@ namespace tut // realize we're testing the C++ implementation more than // Unkeyed's implementation, but this seems an important point to // nail down. - puk = new Unkeyed("throw"); + new Unkeyed("throw"); } catch (const Badness&) { diff --git a/indra/llcommon/tests/reflection_test.cpp b/indra/llcommon/tests/reflection_test.cpp index 59491cd1fe..8980ebb1f1 100644 --- a/indra/llcommon/tests/reflection_test.cpp +++ b/indra/llcommon/tests/reflection_test.cpp @@ -207,7 +207,7 @@ namespace tut const LLReflective* reflective = property->get(aggregated_data); // Wrong reflective type, should throw exception. // useless op to get rid of compiler warning. - reflective = NULL; + reflective = reflective; } catch(...) { diff --git a/indra/llcrashlogger/CMakeLists.txt b/indra/llcrashlogger/CMakeLists.txt index b2639aec30..12986de8b2 100644 --- a/indra/llcrashlogger/CMakeLists.txt +++ b/indra/llcrashlogger/CMakeLists.txt @@ -16,6 +16,10 @@ include_directories( ${LLVFS_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llcrashlogger_SOURCE_FILES llcrashlogger.cpp diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt index f2dd0b06f5..c69e153dec 100644 --- a/indra/llinventory/CMakeLists.txt +++ b/indra/llinventory/CMakeLists.txt @@ -15,6 +15,10 @@ include_directories( ${LLMESSAGE_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llinventory_SOURCE_FILES llcategory.cpp diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 53d56e96da..81c52d370b 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -6348,12 +6348,7 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build) S32 max_t = volume->getPath().mPath.size(); // S32 i; - S32 num_vertices = 0, num_indices = 0; S32 grid_size = (profile.size()-1)/4; - S32 quad_count = (grid_size * grid_size); - - num_vertices = (grid_size+1)*(grid_size+1); - num_indices = quad_count * 4; LLVector4a& min = mExtents[0]; LLVector4a& max = mExtents[1]; diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp index 612d765969..7dcf160c9b 100644 --- a/indra/llmessage/llhttpassetstorage.cpp +++ b/indra/llmessage/llhttpassetstorage.cpp @@ -747,7 +747,7 @@ LLAssetRequest* LLHTTPAssetStorage::findNextRequest(LLAssetStorage::request_list request_list_t::iterator running_end = running.end(); request_list_t::iterator pending_iter = pending.begin(); - request_list_t::iterator pending_end = pending.end(); + // Loop over all pending requests until we miss finding it in the running list. for (; pending_iter != pending.end(); ++pending_iter) { diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp index d5b4d45821..46430994d9 100644 --- a/indra/llmessage/lliosocket.cpp +++ b/indra/llmessage/lliosocket.cpp @@ -608,6 +608,15 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl( PUMP_DEBUG; apr_pool_t* new_pool = NULL; apr_status_t status = apr_pool_create(&new_pool, mPool); + if(ll_apr_warn_status(status)) + { + if(new_pool) + { + apr_pool_destroy(new_pool); + } + return STATUS_ERROR; + } + apr_socket_t* socket = NULL; status = apr_socket_accept( &socket, diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt index 1353b7a458..75d89aac78 100644 --- a/indra/llplugin/CMakeLists.txt +++ b/indra/llplugin/CMakeLists.txt @@ -22,6 +22,10 @@ include_directories( ${LLWINDOW_INCLUDE_DIRS} ${LLQTWEBKIT_INCLUDE_DIR} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llplugin_SOURCE_FILES llpluginclassmedia.cpp diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index 3fc54573a7..8f0299ebdd 100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt @@ -12,6 +12,9 @@ include_directories( ${LLMESSAGE_INCLUDE_DIRS} ${LLCOMMON_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) if (DARWIN) include(CMakeFindFrameworks) diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt index cf01e10577..1768a06a27 100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -14,10 +14,14 @@ include_directories( ${LLMATH_INCLUDE_DIRS} ${LLMESSAGE_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} - ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS} ${LIBS_PREBUILT_DIR}/include/collada ${LIBS_PREBUILT_DIR}/include/collada/1.4 ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS} + ) set(llprimitive_SOURCE_FILES llmaterialtable.cpp diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt index 46dde5a0d9..26b5ac17fe 100644 --- a/indra/llrender/CMakeLists.txt +++ b/indra/llrender/CMakeLists.txt @@ -25,6 +25,10 @@ include_directories( ${LLXML_INCLUDE_DIRS} ${LLVFS_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llrender_SOURCE_FILES llcubemap.cpp diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index 66d4ad2d87..af4ffc6aea 100644 --- a/indra/llrender/llfontfreetype.cpp +++ b/indra/llrender/llfontfreetype.cpp @@ -485,14 +485,11 @@ void LLFontFreetype::renderGlyph(U32 glyph_index) const if (mFTFace == NULL) return; - int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT ); - llassert(!error); + llassert(! FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_FORCE_AUTOHINT) ); - error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode); + llassert(! FT_Render_Glyph(mFTFace->glyph, gFontRenderMode) ); mRenderGlyphCount++; - - llassert(!error); } void LLFontFreetype::reset(F32 vert_dpi, F32 horz_dpi) diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 4dc2fcd714..de3d710824 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -541,7 +541,6 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch BOOL clip = FALSE; F32 cur_x = 0; - F32 drawn_x = 0; S32 start_of_last_word = 0; BOOL in_word = FALSE; @@ -624,7 +623,6 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch // Round after kerning. cur_x = (F32)llround(cur_x); - drawn_x = cur_x; } if( clip ) diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index e3e330c323..4b2bcef9fb 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -593,11 +593,12 @@ bool LLGLManager::initGL() if (mGLVendor.substr(0,4) == "ATI ") { mGLVendorShort = "ATI"; - BOOL mobile = FALSE; - if (mGLRenderer.find("MOBILITY") != std::string::npos) - { - mobile = TRUE; - } + // "mobile" appears to be unused, and this code was causing warnings. + //BOOL mobile = FALSE; + //if (mGLRenderer.find("MOBILITY") != std::string::npos) + //{ + // mobile = TRUE; + //} mIsATI = TRUE; #if LL_WINDOWS && !LL_MESA_HEADLESS @@ -1451,8 +1452,7 @@ void assert_glerror() void clear_glerror() { // Create or update texture to be used with this data - GLenum error; - error = glGetError(); + glGetError(); } /////////////////////////////////////////////////////////////// diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 74c7f81698..16fe77a755 100755 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -744,7 +744,6 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips) S32 w = width, h = height; const U8* prev_mip_data = 0; const U8* cur_mip_data = 0; - S32 prev_mip_size = 0; S32 cur_mip_size = 0; mMipLevels = nummips; @@ -760,7 +759,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips) { S32 bytes = w * h * mComponents; llassert(prev_mip_data); - llassert(prev_mip_size == bytes*4); + llassert(cur_mip_size == bytes*4); U8* new_data = new U8[bytes]; llassert_always(new_data); LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents); @@ -798,7 +797,6 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips) delete[] prev_mip_data; } prev_mip_data = cur_mip_data; - prev_mip_size = cur_mip_size; w >>= 1; h >>= 1; } diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 48e0a79b3a..8e2ae65652 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -404,7 +404,6 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) { if (sLastMask != data_mask) { - bool error = false; if (gGLManager.mGLSLVersionMajor < 2 && gGLManager.mGLSLVersionMinor < 30) { @@ -471,7 +470,6 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) { if (gDebugSession) { - error = true; gFailLog << "Bad client state! " << array[i] << " disabled." << std::endl; } else @@ -491,7 +489,6 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) { //needs to be disabled, make sure it was (DEBUG TEMPORARY) if (gDebugSession) { - error = true; gFailLog << "Bad client state! " << array[i] << " enabled." << std::endl; } else @@ -2237,7 +2234,6 @@ void LLVertexBuffer::setBuffer(U32 data_mask) setup = setup || bindBuffer || bindIndices; } - bool error = false; if (gDebugGL && !mGLArray) { GLint buff; @@ -2246,7 +2242,6 @@ void LLVertexBuffer::setBuffer(U32 data_mask) { if (gDebugSession) { - error = true; gFailLog << "Invalid GL vertex buffer bound: " << buff << std::endl; } else @@ -2262,7 +2257,6 @@ void LLVertexBuffer::setBuffer(U32 data_mask) { if (gDebugSession) { - error = true; gFailLog << "Invalid GL index buffer bound: " << buff << std::endl; } else diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt index 4d4b8edc37..cc76d53c96 100644 --- a/indra/llui/CMakeLists.txt +++ b/indra/llui/CMakeLists.txt @@ -25,6 +25,10 @@ include_directories( ${LLXML_INCLUDE_DIRS} ${LIBS_PREBUILD_DIR}/include/hunspell ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llui_SOURCE_FILES llaccordionctrl.cpp diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index 161496b1f5..c216d593a2 100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp @@ -243,7 +243,6 @@ void LLConsole::draw() void LLConsole::Paragraph::makeParagraphColorSegments (const LLColor4 &color) { LLSD paragraph_color_segments; - LLColor4 lcolor=color; paragraph_color_segments[0]["text"] =wstring_to_utf8str(mParagraphText); LLSD color_sd = color.getValue(); diff --git a/indra/llui/llfunctorregistry.h b/indra/llui/llfunctorregistry.h index 899cc3a326..beac212441 100644 --- a/indra/llui/llfunctorregistry.h +++ b/indra/llui/llfunctorregistry.h @@ -69,7 +69,6 @@ public: bool registerFunctor(const std::string& name, ResponseFunctor f) { bool retval = true; - typename FunctorMap::iterator it = mMap.find(name); if (mMap.count(name) == 0) { mMap[name] = f; @@ -96,7 +95,6 @@ public: FUNCTOR_TYPE getFunctor(const std::string& name) { - typename FunctorMap::iterator it = mMap.find(name); if (mMap.count(name) != 0) { return mMap[name]; diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index c1cd04186b..795dacdbb0 100644 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -367,7 +367,6 @@ void LLKeywords::findSegments(std::vector* seg_list, const LLW const llwchar* base = wtext.c_str(); const llwchar* cur = base; - const llwchar* line = NULL; while( *cur ) { @@ -385,9 +384,6 @@ void LLKeywords::findSegments(std::vector* seg_list, const LLW } } - // Start of a new line - line = cur; - // Skip white space while( *cur && isspace(*cur) && (*cur != '\n') ) { diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 4c730286da..106475cb2a 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -477,7 +477,6 @@ void LLLayoutStack::createResizeBar(LLLayoutPanel* panelp) if (lp->mResizeBar == NULL) { LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; - LLRect resize_bar_rect = getRect(); LLResizeBar::Params resize_params; resize_params.name("resize"); diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index abe74c3f20..57359a20ec 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -351,7 +351,6 @@ void LLTextBase::drawSelectionBackground() S32 selection_left = llmin( mSelectionStart, mSelectionEnd ); S32 selection_right = llmax( mSelectionStart, mSelectionEnd ); - LLRect selection_rect = mVisibleTextRect; // Skip through the lines we aren't drawing. LLRect content_display_rect = getVisibleDocumentRect(); @@ -2239,7 +2238,6 @@ const LLWString& LLTextBase::getWText() const S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, bool hit_past_end_of_line) const { // Figure out which line we're nearest to. - LLRect visible_region = getVisibleDocumentRect(); LLRect doc_rect = mDocumentView->getRect(); S32 doc_y = local_y - doc_rect.mBottom; diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 1b22f87823..a3f3de6c33 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2446,7 +2446,6 @@ void LLTextEditor::updateSegments() mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this); clearSegments(); - segment_set_t::iterator insert_it = mSegments.begin(); for (segment_vec_t::iterator list_it = segment_list.begin(); list_it != segment_list.end(); ++list_it) { insertSegment(*list_it); diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index 81ea0ebf0c..bffcaa9e0d 100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -652,7 +652,6 @@ void LLToolBar::updateLayoutAsNeeded() S32 max_row_length = 0; S32 max_length; - S32 max_total_girth; S32 cur_start; S32 cur_row ; S32 row_pad_start; @@ -663,7 +662,6 @@ void LLToolBar::updateLayoutAsNeeded() if (orientation == LLLayoutStack::HORIZONTAL) { max_length = getRect().getWidth() - mPadLeft - mPadRight; - max_total_girth = getRect().getHeight() - mPadTop - mPadBottom; row_pad_start = mPadLeft; row_pad_end = mPadRight; cur_row = mPadTop; @@ -672,7 +670,6 @@ void LLToolBar::updateLayoutAsNeeded() else // VERTICAL { max_length = getRect().getHeight() - mPadTop - mPadBottom; - max_total_girth = getRect().getWidth() - mPadLeft - mPadRight; row_pad_start = mPadTop; row_pad_end = mPadBottom; cur_row = mPadLeft; @@ -835,7 +832,6 @@ void LLToolBar::draw() if (mDragAndDropTarget && !mButtonCommands.empty()) { LLRect caret_rect = caret->getRect(); - LLRect toolbar_rect = getRect(); if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL) { caret->setRect(LLRect(mDragx-caret_rect.getWidth()/2+1, diff --git a/indra/llui/llui.h b/indra/llui/llui.h index a38ae9a560..4c46fd9a31 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -347,8 +347,10 @@ public: // even if their constructors have side effects void reference() { +#ifdef LL_WINDOWS S32 dummy; dummy = 0; +#endif /*LL_WINDOWS*/ } }; diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt index 908ed9e2c5..4610b7a234 100644 --- a/indra/llwindow/CMakeLists.txt +++ b/indra/llwindow/CMakeLists.txt @@ -32,6 +32,10 @@ include_directories( ${LLXML_INCLUDE_DIRS} ${DIRECTX_INCLUDE_DIR} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(llwindow_SOURCE_FILES llkeyboard.cpp diff --git a/indra/llwindow/GL/glh_extensions.h b/indra/llwindow/GL/glh_extensions.h index d89d85930b..554cb1731f 100644 --- a/indra/llwindow/GL/glh_extensions.h +++ b/indra/llwindow/GL/glh_extensions.h @@ -113,7 +113,7 @@ static const char* EatNonWhiteSpace(const char *str) int glh_init_extensions(const char *origReqExts) { // Length of requested extensions string - unsigned reqExtsLen; + //unsigned reqExtsLen; char *reqExts; // Ptr for individual extensions within reqExts char *reqExt; @@ -155,8 +155,8 @@ int glh_init_extensions(const char *origReqExts) return TRUE; } reqExts = strdup(origReqExts); - reqExtsLen = (S32)strlen(reqExts); /* + reqExtsLen = (S32)strlen(reqExts); if (NULL == gGLHExts.mUnsupportedExts) { gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1); diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index de731df228..c7b141d7c1 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -1643,24 +1643,24 @@ void check_vm_bloat() const long long significant_vm_difference = 250 * 1024*1024; const long long significant_rss_difference = 50 * 1024*1024; - ssize_t res; size_t dummy; char *ptr; - for (int i=0; i<22; ++i) // parse past the values we don't want + size_t delim_result = 0; + for (int i=0; i<22 && delim_result > -1; ++i) // parse past the values we don't want { ptr = NULL; - res = getdelim(&ptr, &dummy, ' ', fp); + delim_result = getdelim(&ptr, &dummy, ' ', fp); free(ptr); } // 23rd space-delimited entry is vsize ptr = NULL; - res = getdelim(&ptr, &dummy, ' ', fp); + delim_result = getdelim(&ptr, &dummy, ' ', fp); llassert(ptr); long long this_vm_size = atoll(ptr); free(ptr); // 24th space-delimited entry is RSS ptr = NULL; - res = getdelim(&ptr, &dummy, ' ', fp); + delim_result = getdelim(&ptr, &dummy, ' ', fp); llassert(ptr); long long this_rss_size = getpagesize() * atoll(ptr); free(ptr); diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt index ccd8387633..cf96f26a77 100644 --- a/indra/llxml/CMakeLists.txt +++ b/indra/llxml/CMakeLists.txt @@ -13,6 +13,9 @@ include_directories( ${LLMATH_INCLUDE_DIRS} ${LLVFS_INCLUDE_DIRS} ) +include_directories( + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) set(llxml_SOURCE_FILES llcontrol.cpp diff --git a/indra/lscript/lscript_compile/CMakeLists.txt b/indra/lscript/lscript_compile/CMakeLists.txt index 2cfd389893..07662005b9 100644 --- a/indra/lscript/lscript_compile/CMakeLists.txt +++ b/indra/lscript/lscript_compile/CMakeLists.txt @@ -45,6 +45,9 @@ include_directories( ${LLPRIMITIVE_INCLUDE_DIRS} ${LSCRIPT_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) set(lscript_generated_SOURCE_FILES indra.l.cpp diff --git a/indra/lscript/lscript_execute/CMakeLists.txt b/indra/lscript/lscript_execute/CMakeLists.txt index 3a16ffdc01..49605982a8 100644 --- a/indra/lscript/lscript_execute/CMakeLists.txt +++ b/indra/lscript/lscript_execute/CMakeLists.txt @@ -10,6 +10,9 @@ include_directories( ${LLMATH_INCLUDE_DIRS} ${LSCRIPT_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) set(lscript_execute_SOURCE_FILES llscriptresource.cpp diff --git a/indra/lscript/lscript_execute/lscript_execute.cpp b/indra/lscript/lscript_execute/lscript_execute.cpp index d79e9f8bde..b12d2e4a16 100644 --- a/indra/lscript/lscript_execute/lscript_execute.cpp +++ b/indra/lscript/lscript_execute/lscript_execute.cpp @@ -806,16 +806,7 @@ void LLScriptExecute::runInstructions(BOOL b_print, const LLUUID &id, // is there a fault? // if yes, print out message and exit S32 value = getVersion(); - S32 major_version = 0; - if (value == LSL2_VERSION1_END_NUMBER) - { - major_version = 1; - } - else if (value == LSL2_VERSION_NUMBER) - { - major_version = 2; - } - else + if ( (value != LSL2_VERSION1_END_NUMBER) && (value != LSL2_VERSION_NUMBER) ) { setFault(LSRF_VERSION_MISMATCH); } diff --git a/indra/lscript/lscript_execute/lscript_readlso.cpp b/indra/lscript/lscript_execute/lscript_readlso.cpp index 35caa41ae1..8b41cb5a72 100644 --- a/indra/lscript/lscript_execute/lscript_readlso.cpp +++ b/indra/lscript/lscript_execute/lscript_readlso.cpp @@ -123,7 +123,7 @@ void LLScriptLSOParse::printRegisters(LLFILE *fp) void LLScriptLSOParse::printGlobals(LLFILE *fp) { // print out registers first - S32 offset, varoffset; + S32 varoffset; S32 ivalue; F32 fpvalue; LLVector3 vvalue; @@ -144,7 +144,7 @@ void LLScriptLSOParse::printGlobals(LLFILE *fp) // get offset to skip past name varoffset = global_v_offset; - offset = bytestream2integer(mRawData, global_v_offset); + bytestream2integer(mRawData, global_v_offset); // get typeexport type = *(mRawData + global_v_offset++); @@ -262,8 +262,6 @@ void LLScriptLSOParse::printGlobalFunctions(LLFILE *fp) fprintf(fp, "[Function #%d] [0x%X] %s\n", function_number, orig_function_offset, name); fprintf(fp, "\tReturn Type: %s\n", LSCRIPTTypeNames[type]); type = *(mRawData + function_offset++); - S32 params; - params = 0; S32 pcount = 0; while (type) { @@ -347,7 +345,6 @@ void LLScriptLSOParse::printStates(LLFILE *fp) read_ahead = event_jump_table; S32 temp_end; - S32 dummy; opcode_end = worst_case_opcode_end; @@ -356,7 +353,7 @@ void LLScriptLSOParse::printStates(LLFILE *fp) if (event_handlers & LSCRIPTStateBitField[k]) { temp_end = bytestream2integer(mRawData, read_ahead); - dummy = bytestream2integer(mRawData, read_ahead); + bytestream2integer(mRawData, read_ahead); if ( (temp_end < opcode_end) &&(temp_end > event_offset)) { diff --git a/indra/lscript/lscript_library/CMakeLists.txt b/indra/lscript/lscript_library/CMakeLists.txt index f6bc67a994..5af850c41b 100644 --- a/indra/lscript/lscript_library/CMakeLists.txt +++ b/indra/lscript/lscript_library/CMakeLists.txt @@ -28,5 +28,8 @@ include_directories( ${LLMATH_INCLUDE_DIRS} ${LSCRIPT_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) add_library (lscript_library ${lscript_library_SOURCE_FILES}) diff --git a/indra/mac_crash_logger/CMakeLists.txt b/indra/mac_crash_logger/CMakeLists.txt index 420e836e36..ab8460b1a9 100644 --- a/indra/mac_crash_logger/CMakeLists.txt +++ b/indra/mac_crash_logger/CMakeLists.txt @@ -19,6 +19,10 @@ include_directories( ${LLVFS_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(mac_crash_logger_SOURCE_FILES mac_crash_logger.cpp diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt index cd3718c5f3..7367b9e5e6 100644 --- a/indra/media_plugins/base/CMakeLists.txt +++ b/indra/media_plugins/base/CMakeLists.txt @@ -21,6 +21,9 @@ include_directories( ${LLRENDER_INCLUDE_DIRS} ${LLWINDOW_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) ### media_plugin_base diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt index 38b712bfd7..171645ef04 100644 --- a/indra/media_plugins/example/CMakeLists.txt +++ b/indra/media_plugins/example/CMakeLists.txt @@ -25,6 +25,9 @@ include_directories( ${LLRENDER_INCLUDE_DIRS} ${LLWINDOW_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) ### media_plugin_example diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt index 519a74aabf..447f6e0689 100644 --- a/indra/media_plugins/gstreamer010/CMakeLists.txt +++ b/indra/media_plugins/gstreamer010/CMakeLists.txt @@ -27,6 +27,9 @@ include_directories( ${GSTREAMER010_INCLUDE_DIRS} ${GSTREAMER010_PLUGINS_BASE_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) ### media_plugin_gstreamer010 diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp index cdb7f4faeb..932aaffa1b 100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp @@ -278,10 +278,9 @@ gst_slvideo_set_caps (GstBaseSink * bsink, GstCaps * caps) static gboolean gst_slvideo_start (GstBaseSink * bsink) { - GstSLVideo *slvideo; gboolean ret = TRUE; - slvideo = GST_SLVIDEO(bsink); + GST_SLVIDEO(bsink); return ret; } diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt index 88e870b556..58391007ff 100644 --- a/indra/media_plugins/quicktime/CMakeLists.txt +++ b/indra/media_plugins/quicktime/CMakeLists.txt @@ -24,6 +24,9 @@ include_directories( ${LLRENDER_INCLUDE_DIRS} ${LLWINDOW_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) if (DARWIN) include(CMakeFindFrameworks) diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt index 452202acd2..0c1c3d800e 100644 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/webkit/CMakeLists.txt @@ -29,6 +29,9 @@ include_directories( ${LLWINDOW_INCLUDE_DIRS} ${LLQTWEBKIT_INCLUDE_DIR} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) ### media_plugin_webkit diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 25feb24788..6835939292 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -65,7 +65,6 @@ include_directories( ${LLINVENTORY_INCLUDE_DIRS} ${LLMATH_INCLUDE_DIRS} ${LLMESSAGE_INCLUDE_DIRS} - ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS} ${LLPLUGIN_INCLUDE_DIRS} ${LLPRIMITIVE_INCLUDE_DIRS} ${LLRENDER_INCLUDE_DIRS} @@ -84,6 +83,12 @@ include_directories( ${LLAPPEARANCE_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS} + ) + set(viewer_SOURCE_FILES groupchatlistener.cpp llaccountingcostmanager.cpp diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 709d29e884..3e26eac59a 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -1709,13 +1709,11 @@ void LLAgent::autoPilot(F32 *delta_yaw) *delta_yaw = yaw; - // Compute when to start slowing down and when to stop - F32 stop_distance = mAutoPilotStopDistance; + // Compute when to start slowing down F32 slow_distance; if (getFlying()) { slow_distance = llmax(6.f, mAutoPilotStopDistance + 5.f); - stop_distance = llmax(2.f, mAutoPilotStopDistance); } else { diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 7f4d33753d..f7b1ba44f0 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -593,7 +593,6 @@ BOOL LLAgentCamera::calcCameraMinDistance(F32 &obj_min_distance) abs_target_offset.abs(); LLVector3 target_offset_dir = target_offset_origin; - F32 object_radius = mFocusObject->getVObjRadius(); BOOL target_outside_object_extents = FALSE; @@ -688,17 +687,6 @@ BOOL LLAgentCamera::calcCameraMinDistance(F32 &obj_min_distance) LLVector3 camera_offset_object(getCameraPositionAgent() - mFocusObject->getPositionAgent()); - // length projected orthogonal to target offset - F32 camera_offset_dist = (camera_offset_object - target_offset_dir * (camera_offset_object * target_offset_dir)).magVec(); - - // calculate whether the target point would be "visible" if it were outside the bounding box - // on the opposite of the splitting plane defined by object_split_axis; - BOOL exterior_target_visible = FALSE; - if (camera_offset_dist > object_radius) - { - // target is visible from camera, so turn off fov zoom - exterior_target_visible = TRUE; - } F32 camera_offset_clip = camera_offset_object * object_split_axis; F32 target_offset_clip = target_offset_dir * object_split_axis; @@ -1657,7 +1645,6 @@ F32 LLAgentCamera::calcCameraFOVZoomFactor() else if (mFocusObject.notNull() && !mFocusObject->isAvatar() && !mFocusOnAvatar) { // don't FOV zoom on mostly transparent objects - LLVector3 focus_offset = mFocusObjectOffset; F32 obj_min_dist = 0.f; calcCameraMinDistance(obj_min_dist); F32 current_distance = llmax(0.001f, camera_offset_dir.magVec()); @@ -1819,7 +1806,6 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit) // set the global camera position LLVector3d camera_offset; - LLVector3 av_pos = !isAgentAvatarValid() ? LLVector3::zero : gAgentAvatarp->getRenderPosition(); camera_offset.setVec( local_camera_offset ); camera_position_global = frame_center_global + head_offset + camera_offset; diff --git a/indra/newview/llbuycurrencyhtml.cpp b/indra/newview/llbuycurrencyhtml.cpp index e5a9be0203..459123a5d8 100644 --- a/indra/newview/llbuycurrencyhtml.cpp +++ b/indra/newview/llbuycurrencyhtml.cpp @@ -61,6 +61,10 @@ public: if ( params.size() >= 3 ) { result_code = params[ 2 ].asInteger(); + if ( result_code != 0 ) + { + LL_WARNS("LLBuyCurrency") << "Received nonzero result code: " << result_code << LL_ENDL ; + } }; // open the legacy XUI based currency floater diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 4f5f9e22b6..4588424474 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -161,18 +161,6 @@ BOOL LLFloaterScriptQueue::start() { std::string buffer; - LLSelectMgr *mgr = LLSelectMgr::getInstance(); - LLObjectSelectionHandle selectHandle = mgr->getSelection(); - U32 n_objects = 0; - if (gSavedSettings.getBOOL("EditLinkedParts")) - { - n_objects = selectHandle->getObjectCount(); - } - else - { - n_objects = selectHandle->getRootObjectCount(); - } - LLStringUtil::format_map_t args; args["[START]"] = mStartString; args["[COUNT]"] = llformat ("%d", mObjectIDs.count()); diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 4eda2b92b3..ded8b20829 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -503,7 +503,6 @@ F32 LLDrawable::updateXform(BOOL undamped) //scaling LLVector3 target_scale = mVObjp->getScale(); LLVector3 old_scale = mCurrentScale; - LLVector3 dest_scale = target_scale; // Damping F32 dist_squared = 0.f; @@ -1215,7 +1214,6 @@ LLCamera LLSpatialBridge::transformCamera(LLCamera& camera) LLCamera ret = camera; LLXformMatrix* mat = mDrawable->getXform(); LLVector3 center = LLVector3(0,0,0) * mat->getWorldMatrix(); - LLQuaternion rotation = LLQuaternion(mat->getWorldMatrix()); LLVector3 delta = ret.getOrigin() - center; LLQuaternion rot = ~mat->getRotation(); diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 9664aa7dbe..04ed362719 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -369,7 +369,7 @@ void LLFastTimerView::draw() S32 left, top, right, bottom; S32 x, y, barw, barh, dx, dy; - S32 texth, textw; + S32 texth; LLPointer box_imagep = LLUI::getUIImage("Rounded_Square"); // Draw the window background @@ -410,7 +410,6 @@ void LLFastTimerView::draw() tdesc = llformat("Full bar = %s [Click to pause/reset] [SHIFT-Click to toggle]",modedesc[mDisplayMode]); LLFontGL::getFontMonospace()->renderUTF8(tdesc, 0, x, y, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP); - textw = LLFontGL::getFontMonospace()->getWidth(tdesc); x = xleft, y -= (texth + 2); tdesc = llformat("Justification = %s [CTRL-Click to toggle]",centerdesc[mDisplayCenter]); @@ -537,8 +536,6 @@ void LLFastTimerView::draw() y -= (texth + 2); - textw = dx + LLFontGL::getFontMonospace()->getWidth(idp->getName()) + 40; - if (idp->getCollapsed()) { it.skipDescendants(); diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index ef412a6bbf..a9d7c749ab 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -270,9 +270,6 @@ void LLVolumeImplFlexible::setAttributesOfAllSections(LLVector3* inScale) mSection[0].mVelocity.setVec(0,0,0); mSection[0].mAxisRotation.setQuat(begin_rot,0,0,1); - LLVector3 parentSectionPosition = mSection[0].mPosition; - LLVector3 last_direction = mSection[0].mDirection; - remapSections(mSection, mInitializedRes, mSection, mSimulateRes); mInitializedRes = mSimulateRes; diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index dbab15dc9e..35d306c6c0 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -746,7 +746,6 @@ void LLFloaterModelPreview::onLODParamCommit(S32 lod, bool enforce_tri_limit) void LLFloaterModelPreview::draw() { LLFloater::draw(); - LLRect r = getRect(); mModelPreview->update(); @@ -1670,7 +1669,6 @@ bool LLModelLoader::doLoadModel() //If no skeleton, do a breadth-first search to get at specific joints bool rootNode = false; - bool skeletonWithNoRootNode = false; //Need to test for a skeleton that does not have a root node //This occurs when your instance controller does not have an associated scene @@ -1681,10 +1679,6 @@ bool LLModelLoader::doLoadModel() { rootNode = true; } - else - { - skeletonWithNoRootNode = true; - } } if ( !pSkeleton || !rootNode ) @@ -4977,16 +4971,9 @@ BOOL LLModelPreview::render() bool upload_skin = mFMP->childGetValue("upload_skin").asBoolean(); bool upload_joints = mFMP->childGetValue("upload_joints").asBoolean(); - bool resetJoints = false; if ( upload_joints != mLastJointUpdate ) { - if ( mLastJointUpdate ) - { - resetJoints = true; - } - mLastJointUpdate = upload_joints; - } for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter) diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index da773e90ec..86bd15b217 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -813,12 +813,7 @@ void LLFloaterReporter::uploadDoneCallback(const LLUUID &uuid, void *user_data, return; } - EReportType report_type = UNKNOWN_REPORT; - if (data->mPreferredLocation == LLResourceData::INVALID_LOCATION) - { - report_type = COMPLAINT_REPORT; - } - else + if (data->mPreferredLocation != LLResourceData::INVALID_LOCATION) { llwarns << "Unknown report type : " << data->mPreferredLocation << llendl; } diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index d741b5b133..5e43e981a4 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -914,7 +914,6 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) else { panel->buildFromFile(path); // build it - LLRect new_size = panel->getRect(); // get its rectangle panel->setOrigin(2,2); // reset its origin point so it's not offset by -left or other XUI attributes (*floaterp)->setTitle(path); // use the file name as its title, since panels have no guaranteed meaningful name attribute panel->setUseBoundingRect(TRUE); // enable the use of its outer bounding rect (normally disabled because it's O(n) on the number of sub-elements) diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index d4080ab3f7..93f9c0a3f3 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -888,7 +888,6 @@ void LLFolderView::commitRename( const LLSD& data ) void LLFolderView::draw() { - static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", LLColor4::white); if (mDebugFilters) { std::string current_filter_string = llformat("Current Filter: %d, Least Filter: %d, Auto-accept Filter: %d", @@ -1506,12 +1505,6 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) LLMenuGL::sMenuContainer->hideMenus(); } - LLView *item = NULL; - if (getChildCount() > 0) - { - item = *(getChildList()->begin()); - } - switch( key ) { case KEY_F2: @@ -2034,7 +2027,6 @@ void LLFolderView::scrollToShowItem(LLFolderViewItem* item, const LLRect& constr { LLRect local_rect = item->getLocalRect(); LLRect item_scrolled_rect; // item position relative to display area of scroller - LLRect visible_doc_rect = mScrollContainer->getVisibleContentRect(); S32 icon_height = mIcon.isNull() ? 0 : mIcon->getHeight(); S32 label_height = getLabelFontForStyle(mLabelStyle)->getLineHeight(); diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index 579b6008ae..3c6bcd9829 100644 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp @@ -186,11 +186,8 @@ void LLHUDText::renderText() LLViewerCamera::getInstance()->getPixelVectors(mPositionAgent, y_pixel_vec, x_pixel_vec); } - LLVector2 border_scale_vec((F32)border_width / (F32)imagep->getTextureWidth(), (F32)border_height / (F32)imagep->getTextureHeight()); LLVector3 width_vec = mWidth * x_pixel_vec; LLVector3 height_vec = mHeight * y_pixel_vec; - LLVector3 scaled_border_width = (F32)llfloor(border_scale * (F32)border_width) * x_pixel_vec; - LLVector3 scaled_border_height = (F32)llfloor(border_scale * (F32)border_height) * y_pixel_vec; mRadius = (width_vec + height_vec).magVec() * 0.5f; @@ -440,7 +437,7 @@ LLVector2 LLHUDText::updateScreenPos(LLVector2 &offset) LLVector3 x_pixel_vec; LLVector3 y_pixel_vec; LLViewerCamera::getInstance()->getPixelVectors(mPositionAgent, y_pixel_vec, x_pixel_vec); - LLVector3 world_pos = mPositionAgent + (offset.mV[VX] * x_pixel_vec) + (offset.mV[VY] * y_pixel_vec); +// LLVector3 world_pos = mPositionAgent + (offset.mV[VX] * x_pixel_vec) + (offset.mV[VY] * y_pixel_vec); // if (!LLViewerCamera::getInstance()->projectPosAgentToScreen(world_pos, screen_pos, FALSE) && mVisibleOffScreen) // { // // bubble off-screen, so find a spot for it along screen edge diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 4000570872..57373704ef 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2674,7 +2674,6 @@ void LLIMMgr::inviteToSession( // voice invite question is different from default only for group call (EXT-7118) std::string question_type = "VoiceInviteQuestionDefault"; - BOOL ad_hoc_invite = FALSE; BOOL voice_invite = FALSE; bool is_linden = LLMuteList::getInstance()->isLinden(caller_name); @@ -2697,13 +2696,11 @@ void LLIMMgr::inviteToSession( //else it's an ad-hoc //and a voice ad-hoc notify_box_type = "VoiceInviteAdHoc"; - ad_hoc_invite = TRUE; voice_invite = TRUE; } else if ( inv_type == INVITATION_TYPE_IMMEDIATE ) { notify_box_type = "InviteAdHoc"; - ad_hoc_invite = TRUE; } LLSD payload; @@ -3269,10 +3266,9 @@ public: } std::string buffer = saved + message; - BOOL is_this_agent = FALSE; if(from_id == gAgentID) { - is_this_agent = TRUE; + return; } gIMMgr->addMessage( session_id, diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 4834d8dd70..0fd406f470 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2514,7 +2514,6 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id, if(drop && accept) { it = inventory_objects.begin(); - LLInventoryObject::object_list_t::iterator first_it = inventory_objects.begin(); LLMoveInv* move_inv = new LLMoveInv; move_inv->mObjectID = object_id; move_inv->mCategoryID = category_id; diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 6e23d7c701..ac1f40b486 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -1354,7 +1354,6 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) item_array_t items; update_map_t update; S32 count = content["items"].size(); - bool all_one_folder = true; LLUUID folder_id; // Does this loop ever execute more than once? for(S32 i = 0; i < count; ++i) @@ -1387,10 +1386,6 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) { folder_id = titem->getParentUUID(); } - else - { - all_one_folder = false; - } } U32 changes = 0x0; @@ -2478,7 +2473,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account) item_array_t items; update_map_t update; S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData); - bool all_one_folder = true; LLUUID folder_id; // Does this loop ever execute more than once? for(S32 i = 0; i < count; ++i) @@ -2510,10 +2504,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account) { folder_id = titem->getParentUUID(); } - else - { - all_one_folder = false; - } } if(account) { diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 05c81957c6..dabb9bb69f 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -402,8 +402,6 @@ void LLInventoryPanel::modelChanged(U32 mask) static LLFastTimer::DeclareTimer FTM_REFRESH("Inventory Refresh"); LLFastTimer t2(FTM_REFRESH); - bool handled = false; - if (!mViewsInitialized) return; const LLInventoryModel* model = getModel(); @@ -429,7 +427,6 @@ void LLInventoryPanel::modelChanged(U32 mask) // Empty out the display name for relabel. if (mask & LLInventoryObserver::LABEL) { - handled = true; if (view_item) { // Request refresh on this item (also flags for filtering) @@ -448,7 +445,6 @@ void LLInventoryPanel::modelChanged(U32 mask) // Destroy and regenerate the UI. if (mask & LLInventoryObserver::REBUILD) { - handled = true; if (model_item && view_item) { view_item->destroyView(); @@ -488,8 +484,6 @@ void LLInventoryPanel::modelChanged(U32 mask) LLInventoryObserver::ADD | LLInventoryObserver::REMOVE)) { - handled = true; - ////////////////////////////// // ADD Operation // Item exists in memory but a UI element hasn't been created for it. diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 826e8d560a..d79f1040bb 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -1689,7 +1689,6 @@ void LLManipRotate::highlightManipulators( S32 x, S32 y ) return; } - LLQuaternion object_rot = first_object->getRenderRotation(); LLVector3 rotation_center = gAgent.getPosAgentFromGlobal(mRotationCenter); LLVector3 mouse_dir_x; LLVector3 mouse_dir_y; diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 00a0bf8894..ae0884ac5d 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -1191,9 +1191,6 @@ void LLManipScale::dragFace( S32 x, S32 y ) mInSnapRegime = FALSE; } - BOOL send_scale_update = FALSE; - BOOL send_position_update = FALSE; - LLVector3 dir_agent; if( part_dir_local.mV[VX] ) { @@ -1210,8 +1207,6 @@ void LLManipScale::dragFace( S32 x, S32 y ) stretchFace( projected_vec(drag_start_dir_f, dir_agent) + drag_start_center_agent, projected_vec(drag_delta, dir_agent)); - send_position_update = TRUE; - send_scale_update = TRUE; mDragPointGlobal = drag_point_global; } diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 362308c176..b62db70ec8 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -485,7 +485,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) } // Throttle updates to 10 per second. - BOOL send_update = FALSE; LLVector3 axis_f; LLVector3d axis_d; @@ -702,11 +701,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) LLVector3 old_position_local = object->getPosition(); LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation); - // move and clamp root object first, before adjusting children - if (new_position_local != old_position_local) - { - send_update = TRUE; - } //RN: I forget, but we need to do this because of snapping which doesn't often result // in position changes even when the mouse moves object->setPosition(new_position_local); @@ -716,8 +710,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) if (selectNode->mIndividualSelection) { - send_update = FALSE; - // counter-translate child objects if we are moving the root as an individual object->resetChildrenPosition(old_position_local - new_position_local, TRUE) ; } @@ -753,7 +745,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) } // PR: Only update if changed - LLVector3d old_position_global = object->getPositionGlobal(); LLVector3 old_position_agent = object->getPositionAgent(); LLVector3 new_position_agent = gAgent.getPosAgentFromGlobal(new_position_global); if (object->isRootEdit()) @@ -775,11 +766,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) { // counter-translate child objects if we are moving the root as an individual object->resetChildrenPosition(old_position_agent - new_position_agent, TRUE) ; - send_update = FALSE; - } - else if (old_position_global != new_position_global) - { - send_update = TRUE; } } selectNode->mLastPositionLocal = object->getPosition(); @@ -1310,7 +1296,6 @@ void LLManipTranslate::renderSnapGuides() // add in off-axis offset tick_start += (mSnapOffsetAxis * mSnapOffsetMeters); - BOOL is_sub_tick = FALSE; F32 tick_scale = 1.f; for (F32 division_level = max_subdivisions; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f) { @@ -1319,7 +1304,6 @@ void LLManipTranslate::renderSnapGuides() break; } tick_scale *= 0.7f; - is_sub_tick = TRUE; } // S32 num_ticks_to_fade = is_sub_tick ? num_ticks_per_side / 2 : num_ticks_per_side; @@ -1542,7 +1526,6 @@ void LLManipTranslate::renderSnapGuides() float a = line_alpha; - LLColor4 col = LLUIColorTable::instance().getColor("SilhouetteChildColor"); { //draw grid behind objects LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index bc7f522848..d7064f04d7 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -3058,6 +3058,7 @@ void LLPhysicsDecomp::doDecomposition() param_map[params[i].mName] = params+i; } + U32 ret = LLCD_OK; //set parameter values for (decomp_params::iterator iter = mCurRequest->mParams.begin(); iter != mCurRequest->mParams.end(); ++iter) { @@ -3071,7 +3072,6 @@ void LLPhysicsDecomp::doDecomposition() continue; } - U32 ret = LLCD_OK; if (param->mType == LLCDParam::LLCD_FLOAT) { @@ -3090,8 +3090,6 @@ void LLPhysicsDecomp::doDecomposition() mCurRequest->setStatusMessage("Executing."); - LLCDResult ret = LLCD_OK; - if (LLConvexDecomposition::getInstance() != NULL) { ret = LLConvexDecomposition::getInstance()->executeStage(stage); diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 1bda7640bd..dea90b9042 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -150,7 +150,7 @@ void LLNetMap::draw() static LLUIColor map_avatar_color = LLUIColorTable::instance().getColor("MapAvatarColor", LLColor4::white); static LLUIColor map_avatar_friend_color = LLUIColorTable::instance().getColor("MapAvatarFriendColor", LLColor4::white); static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white); - static LLUIColor map_track_disabled_color = LLUIColorTable::instance().getColor("MapTrackDisabledColor", LLColor4::white); + //static LLUIColor map_track_disabled_color = LLUIColorTable::instance().getColor("MapTrackDisabledColor", LLColor4::white); static LLUIColor map_frustum_color = LLUIColorTable::instance().getColor("MapFrustumColor", LLColor4::white); static LLUIColor map_frustum_rotating_color = LLUIColorTable::instance().getColor("MapFrustumRotatingColor", LLColor4::white); diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 77e1487f38..1a427338e5 100644 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp @@ -78,8 +78,6 @@ const char* LLPanelContents::PERMS_ANYONE_CONTROL_KEY = "perms_anyone_control"; BOOL LLPanelContents::postBuild() { - LLRect rect = this->getRect(); - setMouseOpaque(FALSE); childSetAction("button new script",&LLPanelContents::onClickNewScript, this); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 43bb1f57e0..7832156a0e 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -1007,13 +1007,11 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type) return; bool is_modifiable = false; - bool is_copyable = false; if(mWearableItem) { const LLPermissions& perm = mWearableItem->getPermissions(); is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); - is_copyable = perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID()); } if (is_modifiable) @@ -1440,7 +1438,6 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value { panel_list->clearPanels(); value_map_t::iterator end = sorted_params.end(); - S32 height = 0; for(value_map_t::iterator it = sorted_params.begin(); it != end; ++it) { LLPanel::Params p; @@ -1455,7 +1452,7 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value { panel_param = new LLScrollingPanelParam( p, NULL, (*it).second, TRUE, this->getWearable(), jointp); } - height = panel_list->addPanel( panel_param ); + panel_list->addPanel( panel_param ); } } } diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index 202be9671b..445c0d811f 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -84,7 +84,6 @@ BOOL LLPanelFace::postBuild() childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureInfo, this); childSetAction("button align",&LLPanelFace::onClickAutoFix,this); - LLRect rect = this->getRect(); LLTextureCtrl* mTextureCtrl; LLColorSwatchCtrl* mColorSwatch; diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp index 363443646d..9a08782757 100644 --- a/indra/newview/llpanelgrouplandmoney.cpp +++ b/indra/newview/llpanelgrouplandmoney.cpp @@ -1383,13 +1383,11 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, S32 cur_land_tax; S32 cur_group_tax; S32 cur_parcel_dir_fee; - S32 cur_total_tax; S32 proj_object_tax; S32 proj_light_tax; S32 proj_land_tax; S32 proj_group_tax; S32 proj_parcel_dir_fee; - S32 proj_total_tax; S32 non_exempt_members; msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_IntervalDays, interval_days ); @@ -1413,8 +1411,6 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, msg->getStringFast(_PREHASH_MoneyData, _PREHASH_LastTaxDate, last_stipend_date); msg->getStringFast(_PREHASH_MoneyData, _PREHASH_TaxDate, next_stipend_date); - cur_total_tax = cur_object_tax + cur_light_tax + cur_land_tax + cur_group_tax + cur_parcel_dir_fee; - proj_total_tax = proj_object_tax + proj_light_tax + proj_land_tax + proj_group_tax + proj_parcel_dir_fee; if (interval_days != mImplementationp->mIntervalLength || current_interval != mImplementationp->mCurrentInterval) diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index c57746ec00..5c9b968ac9 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -209,24 +209,6 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data) mMaturityRatingText->setText(LLViewerRegion::accessToString(SIM_ACCESS_PG)); } - S32 region_x; - S32 region_y; - S32 region_z; - - // If the region position is zero, grab position from the global - if(mPosRegion.isExactlyZero()) - { - region_x = llround(parcel_data.global_x) % REGION_WIDTH_UNITS; - region_y = llround(parcel_data.global_y) % REGION_WIDTH_UNITS; - region_z = llround(parcel_data.global_z); - } - else - { - region_x = llround(mPosRegion.mV[VX]); - region_y = llround(mPosRegion.mV[VY]); - region_z = llround(mPosRegion.mV[VZ]); - } - LLSD info; info["update_verbs"] = true; info["global_x"] = parcel_data.global_x; diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index d87b565b32..25ef9a3d6a 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -439,10 +439,9 @@ void LLPanelObject::getState( ) mCtrlRotY->setEnabled( enable_rotate ); mCtrlRotZ->setEnabled( enable_rotate ); - BOOL owners_identical; LLUUID owner_id; std::string owner_name; - owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); + LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); // BUG? Check for all objects being editable? S32 roots_selected = LLSelectMgr::getInstance()->getSelection()->getRootObjectCount(); diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp index 51ab7649a4..bc6ae35fda 100644 --- a/indra/newview/llpanelpermissions.cpp +++ b/indra/newview/llpanelpermissions.cpp @@ -365,10 +365,8 @@ void LLPanelPermissions::refresh() // Update creator text field getChildView("Creator:")->setEnabled(TRUE); - BOOL creators_identical; std::string creator_name; - creators_identical = LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, - creator_name); + LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_name); getChild("Creator Name")->setValue(creator_name); getChildView("Creator Name")->setEnabled(TRUE); diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index 13b746dbab..02d363d795 100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -252,10 +252,9 @@ void LLPanelVolume::getState( ) return; } - BOOL owners_identical; LLUUID owner_id; std::string owner_name; - owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); + LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); // BUG? Check for all objects being editable? BOOL editable = root_objectp->permModify() && !root_objectp->isPermanentEnforced(); diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp index ded7d66022..3ee0746412 100644 --- a/indra/newview/llphysicsmotion.cpp +++ b/indra/newview/llphysicsmotion.cpp @@ -428,14 +428,13 @@ F32 LLPhysicsMotion::toLocal(const LLVector3 &world) F32 LLPhysicsMotion::calculateVelocity_local() { const F32 world_to_model_scale = 100.0f; - LLJoint *joint = mJointState->getJoint(); - const LLVector3 position_world = joint->getWorldPosition(); - const LLQuaternion rotation_world = joint->getWorldRotation(); - const LLVector3 last_position_world = mPosition_world; + LLJoint *joint = mJointState->getJoint(); + const LLVector3 position_world = joint->getWorldPosition(); + const LLVector3 last_position_world = mPosition_world; const LLVector3 positionchange_world = (position_world-last_position_world) * world_to_model_scale; - const LLVector3 velocity_world = positionchange_world; - const F32 velocity_local = toLocal(velocity_world); - return velocity_local; + const LLVector3 velocity_world = positionchange_world; + const F32 velocity_local = toLocal(velocity_world); + return velocity_local; } F32 LLPhysicsMotion::calculateAcceleration_local(const F32 velocity_local) diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index d340b304ca..1f5b1a616f 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -707,7 +707,6 @@ void LLScreenChannel::showToastsTop() LLRect toast_rect; S32 top = channel_rect.mTop; - S32 toast_margin = 0; std::vector::reverse_iterator it; updateRect(); @@ -726,7 +725,7 @@ void LLScreenChannel::showToastsTop() } top = toast->getRect().mBottom - toast->getTopPad(); - toast_margin = gSavedSettings.getS32("ToastGap"); + gSavedSettings.getS32("ToastGap"); } LLToast* toast = it->getToast(); diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp index 30400a4c6a..928d26646b 100644 --- a/indra/newview/llsechandler_basic.cpp +++ b/indra/newview/llsechandler_basic.cpp @@ -1239,7 +1239,6 @@ void LLSecAPIBasicHandler::_readProtectedData() llifstream::binary); if (!protected_data_stream.fail()) { - int offset; U8 salt[STORE_SALT_SIZE]; U8 buffer[BUFFER_READ_SIZE]; U8 decrypted_buffer[BUFFER_READ_SIZE]; @@ -1250,7 +1249,6 @@ void LLSecAPIBasicHandler::_readProtectedData() // read in the salt and key protected_data_stream.read((char *)salt, STORE_SALT_SIZE); - offset = 0; if (protected_data_stream.gcount() < STORE_SALT_SIZE) { throw LLProtectedDataException("Config file too short."); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 24e272c740..047bd2f7f3 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1182,7 +1182,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount()) { //LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject()); - LLBBox bbox = mSavedSelectionBBox; mGridOrigin = mSavedSelectionBBox.getCenterAgent(); mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f; @@ -1200,7 +1199,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull()) { mGridRotation = first_grid_object->getRenderRotation(); - LLVector3 first_grid_obj_pos = first_grid_object->getRenderPosition(); LLVector4a min_extents(F32_MAX); LLVector4a max_extents(-F32_MAX); diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp index c351b1a128..95e173ef3e 100644 --- a/indra/newview/llsidepaneltaskinfo.cpp +++ b/indra/newview/llsidepaneltaskinfo.cpp @@ -368,10 +368,8 @@ void LLSidepanelTaskInfo::refresh() // Update creator text field getChildView("Creator:")->setEnabled(TRUE); - BOOL creators_identical; std::string creator_name; - creators_identical = LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, - creator_name); + LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_name); getChild("Creator Name")->setValue(creator_name); getChildView("Creator Name")->setEnabled(TRUE); diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index fadaaf4541..77809f3706 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -4092,9 +4092,6 @@ public: return; } - LLVector4a nodeCenter = group->mBounds[0]; - LLVector4a octCenter = group->mOctreeNode->getCenter(); - group->rebuildGeom(); group->rebuildMesh(); @@ -4571,9 +4568,6 @@ public: virtual bool check(LLDrawable* drawable) { - LLVector3 local_start = mStart; - LLVector3 local_end = mEnd; - if (!drawable || !gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible()) { return false; diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 07d2f1ad6f..1c7c6450c7 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -350,7 +350,7 @@ void LLSpeakerMgr::update(BOOL resort_ok) LLUUID speaker_id = speaker_it->first; LLSpeaker* speakerp = speaker_it->second; - speaker_map_t::iterator cur_speaker_it = speaker_it++; + speaker_it++; if (voice_channel_active && LLVoiceClient::getInstance()->getVoiceEnabled(speaker_id)) { diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 561734aaae..8be8a5a56b 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -316,7 +316,6 @@ bool idle_startup() const F32 PRECACHING_DELAY = gSavedSettings.getF32("PrecachingDelay"); static LLTimer timeout; - static S32 timeout_count = 0; static LLTimer login_time; @@ -332,7 +331,6 @@ bool idle_startup() // last location by default static S32 agent_location_id = START_LOCATION_ID_LAST; - static S32 location_which = START_LOCATION_ID_LAST; static bool show_connect_box = true; @@ -744,8 +742,6 @@ bool idle_startup() gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); - timeout_count = 0; - // Login screen needs menus for preferences, but we can enter // this startup phase more than once. if (gLoginMenuBarView == NULL) @@ -982,15 +978,12 @@ bool idle_startup() { case LLSLURL::LOCATION: agent_location_id = START_LOCATION_ID_URL; - location_which = START_LOCATION_ID_LAST; break; case LLSLURL::LAST_LOCATION: agent_location_id = START_LOCATION_ID_LAST; - location_which = START_LOCATION_ID_LAST; break; default: agent_location_id = START_LOCATION_ID_HOME; - location_which = START_LOCATION_ID_HOME; break; } diff --git a/indra/newview/llsurface.cpp b/indra/newview/llsurface.cpp index f64a72a616..dad253ffc3 100644 --- a/indra/newview/llsurface.cpp +++ b/indra/newview/llsurface.cpp @@ -1249,8 +1249,6 @@ BOOL LLSurface::generateWaterTexture(const F32 x, const F32 y, y_end = tex_width; } - LLVector3d origin_global = from_region_handle(getRegion()->getHandle()); - // OK, for now, just have the composition value equal the height at the point. LLVector3 location; LLColor4U coloru; diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 602b924398..8f5d6404e8 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -369,8 +369,6 @@ void LLToastNotifyPanel::adjustPanelForScriptNotice(S32 button_panel_width, S32 void LLToastNotifyPanel::adjustPanelForTipNotice() { - LLRect info_rect = mInfoPanel->getRect(); - LLRect this_rect = getRect(); //we don't need display ControlPanel for tips because they doesn't contain any buttons. mControlPanel->setVisible(FALSE); reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight()); diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 923fbecb1a..5270c3d33f 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -471,7 +471,7 @@ BOOL LLToolCompCreate::handleMouseDown(S32 x, S32 y, MASK mask) mObjectPlacedOnMouseDown = TRUE; - return TRUE; + return handled; } void LLToolCompCreate::pickCallback(const LLPickInfo& pick_info) diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index a754d8ee7e..857b0f0714 100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -314,8 +314,6 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) S32 dx = gViewerWindow->getCurrentMouseDX(); S32 dy = gViewerWindow->getCurrentMouseDY(); - BOOL moved_outside_slop = FALSE; - if (hasMouseCapture() && mValidClickPoint) { mAccumX += llabs(dx); @@ -323,19 +321,11 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) if (mAccumX >= SLOP_RANGE) { - if (!mOutsideSlopX) - { - moved_outside_slop = TRUE; - } mOutsideSlopX = TRUE; } if (mAccumY >= SLOP_RANGE) { - if (!mOutsideSlopY) - { - moved_outside_slop = TRUE; - } mOutsideSlopY = TRUE; } } diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 3cd761b73b..c26d9dbede 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -790,14 +790,10 @@ BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg) LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); LLUUID owner; - S32 width = 0; - S32 height = 0; if ( hover_parcel ) { owner = hover_parcel->getOwnerID(); - width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); - height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); } // Line: "Land" @@ -1609,9 +1605,6 @@ BOOL LLToolPie::handleRightClickPick() // didn't click in any UI object, so must have clicked in the world LLViewerObject *object = mPick.getObject(); - LLViewerObject *parent = NULL; - if(object) - parent = object->getRootEdit(); // Can't ignore children here. LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE); diff --git a/indra/newview/llurlhistory.cpp b/indra/newview/llurlhistory.cpp index edec30f8c4..dd17068be5 100644 --- a/indra/newview/llurlhistory.cpp +++ b/indra/newview/llurlhistory.cpp @@ -112,8 +112,6 @@ void LLURLHistory::addURL(const std::string& collection, const std::string& url) // static void LLURLHistory::removeURL(const std::string& collection, const std::string& url) { - LLSD::array_iterator iter = sHistorySD[collection].beginArray(); - LLSD::array_iterator end = sHistorySD[collection].endArray(); for(int index = 0; index < sHistorySD[collection].size(); index++) { if(sHistorySD[collection].get(index).asString() == url) diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index a437a8b3b5..b5aa0ac92a 100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp @@ -136,9 +136,6 @@ void LLViewerCamera::updateCameraLocation(const LLVector3 ¢er, mLastPointOfInterest = point_of_interest; - // constrain to max distance from avatar - LLVector3 camera_offset = center - gAgent.getPositionAgent(); - LLViewerRegion * regp = gAgent.getRegion(); F32 water_height = (NULL != regp) ? regp->getWaterHeight() : 0.f; @@ -318,7 +315,7 @@ void LLViewerCamera::setPerspective(BOOL for_selection, { F32 fov_y, aspect; fov_y = RAD_TO_DEG * getView(); - BOOL z_default_near, z_default_far = FALSE; + BOOL z_default_far = FALSE; if (z_far <= 0) { z_default_far = TRUE; @@ -326,7 +323,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection, } if (z_near <= 0) { - z_default_near = TRUE; z_near = getNear(); } aspect = getAspect(); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index fae20b1c13..bd8377e281 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -1034,7 +1034,6 @@ void render_hud_attachments() if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices()) { LLCamera hud_cam = *LLViewerCamera::getInstance(); - LLVector3 origin = hud_cam.getOrigin(); hud_cam.setOrigin(-1.f,0,0); hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1)); LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE); diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 4543a1ba9a..297906803b 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -406,11 +406,9 @@ void LLViewerMediaFocus::update() LLViewerObject *viewer_object = getFocusedObject(); S32 face = mFocusedObjectFace; LLVector3 normal = mFocusedObjectNormal; - bool focus = true; if(!media_impl || !viewer_object) { - focus = false; media_impl = getHoverMediaImpl(); viewer_object = getHoverObject(); face = mHoverObjectFace; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f399275c94..2a904d393a 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -626,7 +626,6 @@ void send_sound_trigger(const LLUUID& sound_id, F32 gain) bool join_group_response(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - BOOL delete_context_data = TRUE; bool accept_invite = false; LLUUID group_id = notification["payload"]["group_id"].asUUID(); @@ -655,7 +654,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response) } else { - delete_context_data = FALSE; LLSD args; args["NAME"] = name; LLNotificationsUtil::add("JoinedTooManyGroupsMember", args, notification["payload"]); @@ -668,7 +666,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response) // sure the user is sure they want to join. if (fee > 0) { - delete_context_data = FALSE; LLSD args; args["COST"] = llformat("%d", fee); // Set the fee for next time to 0, so that we don't keep @@ -2768,11 +2765,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str()); } buffer = saved + message; - BOOL is_this_agent = FALSE; - if(from_id == gAgentID) - { - is_this_agent = TRUE; - } gIMMgr->addMessage( session_id, from_id, @@ -3386,7 +3378,6 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) LLColor4 color(1.0f, 1.0f, 1.0f, 1.0f); LLUUID from_id; LLUUID owner_id; - BOOL is_owned_by_me = FALSE; LLViewerObject* chatter; msg->getString("ChatData", "FromName", from_name); @@ -3471,13 +3462,11 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) gAgent.heardChat(chat.mFromID); } } - - is_owned_by_me = chatter->permYouOwner(); } if (is_audible) { - BOOL visible_in_chat_bubble = FALSE; + //BOOL visible_in_chat_bubble = FALSE; color.setVec(1.f,1.f,1.f,1.f); msg->getStringFast(_PREHASH_ChatData, _PREHASH_Message, mesg); @@ -3560,7 +3549,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) if (!is_muted && !is_busy) { - visible_in_chat_bubble = gSavedSettings.getBOOL("UseChatBubbles"); + //visible_in_chat_bubble = gSavedSettings.getBOOL("UseChatBubbles"); std::string formated_msg = ""; LLViewerChat::formatChatMsg(chat, formated_msg); LLChat chat_bubble = chat; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index e399b45cba..d74324f830 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -286,7 +286,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, LLMemType mt(LLMemType::MTYPE_OBJECT_PROCESS_UPDATE); LLFastTimer t(FTM_PROCESS_OBJECTS); - LLVector3d camera_global = gAgentCamera.getCameraPositionGlobal(); LLViewerObject *objectp; S32 num_objects; U32 local_id; @@ -305,6 +304,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, { //llinfos << "TEST: !cached && !compressed && update_type != OUT_FULL" << llendl; gTerseObjectUpdates += num_objects; + /* S32 size; if (mesgsys->getReceiveCompressedSize()) { @@ -314,10 +314,12 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, { size = mesgsys->getReceiveSize(); } - //llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; + llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; + */ } else { + /* S32 size; if (mesgsys->getReceiveCompressedSize()) { @@ -328,7 +330,8 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, size = mesgsys->getReceiveSize(); } - // llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; + llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; + */ gFullObjectUpdates += num_objects; } diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 90fbc41daa..386b2fd400 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -85,7 +85,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel) } // we're in a parcel - bool new_parcel = false; S32 parcelid = parcel->getLocalID(); LLUUID regionid = gAgent.getRegion()->getRegionID(); @@ -94,7 +93,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel) LL_DEBUGS("Media") << "New parcel, parcel id = " << parcelid << ", region id = " << regionid << LL_ENDL; sMediaParcelLocalID = parcelid; sMediaRegionID = regionid; - new_parcel = true; } std::string mediaUrl = std::string ( parcel->getMediaURL () ); diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 99102309a1..d309faf331 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -1052,8 +1052,6 @@ void LLViewerTextEditor::findEmbeddedItemSegments(S32 start, S32 end) { LLWString text = getWText(); - LLColor4 text_color = ( mReadOnly ? mReadOnlyFgColor.get() : mFgColor.get() ); - // Start with i just after the first embedded item for(S32 idx = start; idx < end; idx++ ) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 4f66b32c1f..394e063c86 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2778,7 +2778,6 @@ void LLViewerWindow::updateUI() BOOL handled = FALSE; - BOOL handled_by_top_ctrl = FALSE; LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl(); LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture(); LLView* captor_view = dynamic_cast(mouse_captor); @@ -2963,7 +2962,6 @@ void LLViewerWindow::updateUI() S32 local_x, local_y; top_ctrl->screenPointToLocal( x, y, &local_x, &local_y ); handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleHover(local_x, local_y, mask); - handled_by_top_ctrl = TRUE; } if ( !handled ) diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp index e90a2470d4..49474dcc7a 100644 --- a/indra/newview/llvlcomposition.cpp +++ b/indra/newview/llvlcomposition.cpp @@ -376,9 +376,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, LLPointer raw = new LLImageRaw(tex_width, tex_height, tex_comps); U8 *rawp = raw->getData(); - F32 tex_width_inv = 1.f/tex_width; - F32 tex_height_inv = 1.f/tex_height; - F32 st_x_stride, st_y_stride; st_x_stride = ((F32)st_width / (F32)mTexScaleX)*((F32)mWidth / (F32)tex_width); st_y_stride = ((F32)st_height / (F32)mTexScaleY)*((F32)mWidth / (F32)tex_height); @@ -413,11 +410,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, tex1 = tex0 + 1; tex1 = llclamp(tex1, 0, 3); - F32 xy_int_i, xy_int_j; - - xy_int_i = i * tex_width_inv; - xy_int_j = j * tex_height_inv; - st_offset = (lltrunc(sti) + lltrunc(stj)*st_width) * st_comps; for (U32 k = 0; k < tex_comps; k++) { diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 50c2659563..3d4573903f 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1755,7 +1755,6 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys, { LLMemType mt(LLMemType::MTYPE_AVATAR); - LLVector3 old_vel = getVelocity(); const BOOL has_name = !getNVPair("FirstName"); // Do base class updates... @@ -2645,8 +2644,6 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name) mNameText->setTextAlignment(LLHUDNameTag::ALIGN_TEXT_LEFT); mNameText->setFadeDistance(CHAT_NORMAL_RADIUS * 2.f, 5.f); - char line[MAX_STRING]; /* Flawfinder: ignore */ - line[0] = '\0'; std::deque::iterator chat_iter = mChats.begin(); mNameText->clearString(); @@ -3035,8 +3032,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) xyVel.mV[VZ] = 0.0f; speed = xyVel.length(); - BOOL throttle = TRUE; - if (!(mIsSitting && getParent())) { //-------------------------------------------------------------------- @@ -3047,7 +3042,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) if (mTimeLast == 0.0f) { mTimeLast = animation_time; - throttle = FALSE; // put the pelvis at slaved position/mRotation mRoot->setWorldPosition( getPositionAgent() ); // first frame diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index a29ef2f3ad..e4fb1ebf88 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -341,7 +341,6 @@ BOOL LLVOAvatarSelf::buildMenus() } else { - BOOL attachment_found = FALSE; for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); iter != mAttachmentPoints.end(); ++iter) @@ -369,7 +368,6 @@ BOOL LLVOAvatarSelf::buildMenus() gAttachPieMenu->addChild(item); - attachment_found = TRUE; break; } @@ -382,7 +380,6 @@ BOOL LLVOAvatarSelf::buildMenus() } else { - BOOL attachment_found = FALSE; for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); iter != mAttachmentPoints.end(); ++iter) @@ -409,7 +406,6 @@ BOOL LLVOAvatarSelf::buildMenus() gDetachPieMenu->addChild(item); - attachment_found = TRUE; break; } } diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 820d1d73e1..db0fc3dca7 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -2236,7 +2236,8 @@ void LLVivoxVoiceClient::giveUp() static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel) { - F32 nat[3], nup[3], nl[3], nvel[3]; // the new at, up, left vectors and the new position and velocity + F32 nat[3], nup[3], nl[3]; // the new at, up, left vectors and the new position and velocity +// F32 nvel[3]; F64 npos[3]; // The original XML command was sent like this: @@ -2286,9 +2287,9 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe npos[1] = pos.mdV[VZ]; npos[2] = pos.mdV[VY]; - nvel[0] = vel.mV[VX]; - nvel[1] = vel.mV[VZ]; - nvel[2] = vel.mV[VY]; +// nvel[0] = vel.mV[VX]; +// nvel[1] = vel.mV[VZ]; +// nvel[2] = vel.mV[VY]; for(int i=0;i<3;++i) { at.mV[i] = nat[i]; @@ -3942,7 +3943,6 @@ void LLVivoxVoiceClient::messageEvent( bool is_busy = gAgent.getBusy(); bool is_muted = LLMuteList::getInstance()->isMuted(session->mCallerID, session->mName, LLMute::flagTextChat); bool is_linden = LLMuteList::getInstance()->isLinden(session->mName); - bool quiet_chat = false; LLChat chat; chat.mMuted = is_muted && !is_linden; @@ -3955,7 +3955,6 @@ void LLVivoxVoiceClient::messageEvent( if(is_busy && !is_linden) { - quiet_chat = true; // TODO: Question: Return busy mode response here? Or maybe when session is started instead? } diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp index cb905d02da..de15f0ef43 100644 --- a/indra/newview/llvosurfacepatch.cpp +++ b/indra/newview/llvosurfacepatch.cpp @@ -467,7 +467,7 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, S32 vertex_count = 0; S32 i, x, y; - S32 num_vertices, num_indices; + S32 num_vertices; U32 render_stride = mLastStride; S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); @@ -485,7 +485,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, if (north_stride == render_stride) { num_vertices = 2 * length + 1; - num_indices = length * 6 - 3; facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; @@ -536,7 +535,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, { // North stride is longer (has less vertices) num_vertices = length + length/2 + 1; - num_indices = half_length*9 - 3; facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; @@ -595,7 +593,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, length = patch_size / north_stride; half_length = length / 2; num_vertices = length + half_length + 1; - num_indices = 9*half_length - 3; facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; @@ -666,7 +663,7 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, { S32 i, x, y; - S32 num_vertices, num_indices; + S32 num_vertices; U32 render_stride = mLastStride; S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); @@ -679,7 +676,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, if (east_stride == render_stride) { num_vertices = 2 * length + 1; - num_indices = length * 6 - 3; facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; @@ -728,7 +724,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, { // East stride is longer (has less vertices) num_vertices = length + half_length + 1; - num_indices = half_length*9 - 3; facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; @@ -783,7 +778,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, length = patch_size / east_stride; half_length = length / 2; num_vertices = length + length/2 + 1; - num_indices = 9*(length/2) - 3; facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp index a33f42cf84..01024f4a12 100644 --- a/indra/newview/llvowlsky.cpp +++ b/indra/newview/llvowlsky.cpp @@ -724,8 +724,8 @@ void LLVOWLSky::updateStarColors() const F32 var = 0.15f; const F32 min = 0.5f; //0.75f; - const F32 sunclose_max = 0.6f; - const F32 sunclose_range = 1 - sunclose_max; + //const F32 sunclose_max = 0.6f; + //const F32 sunclose_range = 1 - sunclose_max; //F32 below_horizon = - llmin(0.0f, gSky.mVOSkyp->getToSunLast().mV[2]); //F32 brightness_factor = llmin(1.0f, below_horizon * 20); @@ -739,14 +739,14 @@ void LLVOWLSky::updateStarColors() U32 x; for (x = 0; x < getStarsNumVerts(); ++x) { - F32 sundir_factor = 1; + //F32 sundir_factor = 1; LLVector3 tostar = *v_p; tostar.normVec(); - const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast(); - if (how_close_to_sun > sunclose_max) - { - sundir_factor = (1 - how_close_to_sun) / sunclose_range; - } + //const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast(); + //if (how_close_to_sun > sunclose_max) + //{ + // sundir_factor = (1 - how_close_to_sun) / sunclose_range; + //} intensity = *(v_i); F32 alpha = v_c->mV[VALPHA] + (ll_frand() - 0.5f) * var * intensity; if (alpha < min * intensity) diff --git a/indra/newview/llwaterparamset.cpp b/indra/newview/llwaterparamset.cpp index 39d366b023..9cc91d2246 100644 --- a/indra/newview/llwaterparamset.cpp +++ b/indra/newview/llwaterparamset.cpp @@ -185,8 +185,6 @@ LLVector3 LLWaterParamSet::getVector3(const std::string& paramName, bool& error) LLVector2 LLWaterParamSet::getVector2(const std::string& paramName, bool& error) { // test to see if right type - int ttest; - ttest = mParamValues.size(); LLSD cur_val = mParamValues.get(paramName); if (!cur_val.isArray() || cur_val.size() != 2) { diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 428be8efb9..ad4d59d671 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -965,8 +965,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4& S32 text_x = x; S32 text_y = (S32)(y - sTrackCircleImage->getHeight()/2 - font->getLineHeight()); - BOOL is_in_window = true; - if( x < 0 || y < 0 || x >= getRect().getWidth() @@ -979,7 +977,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4& text_x = sTrackingArrowX; text_y = sTrackingArrowY; } - is_in_window = false; } else if (LLTracker::getTrackingStatus() == LLTracker::TRACKING_LOCATION && LLTracker::getTrackedLocationType() != LLTracker::LOCATION_NOTHING) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 61df5bc2eb..126e8bc436 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -5909,7 +5909,6 @@ void LLPipeline::setupHWLights(LLDrawPool* pool) if (light->isLightSpotlight() // directional (spot-)light && (LLPipeline::sRenderDeferred || RenderSpotLightsInNondeferred)) // these are only rendered as GL spotlights if we're in deferred rendering mode *or* the setting forces them on { - LLVector3 spotparams = light->getSpotLightParams(); LLQuaternion quat = light->getRenderRotation(); LLVector3 at_axis(0,0,-1); // this matches deferred rendering's object light direction at_axis *= quat; @@ -9097,9 +9096,6 @@ BOOL LLPipeline::getVisiblePointCloud(LLCamera& camera, LLVector3& min, LLVector 3,7 }; - LLVector3 center = (max+min)*0.5f; - LLVector3 size = (max-min)*0.5f; - for (U32 i = 0; i < 12; i++) { for (U32 j = 0; j < 6; ++j) @@ -9325,7 +9321,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera) mSunOrthoClipPlanes = LLVector4(clip, clip.mV[2]*clip.mV[2]/clip.mV[1]); //currently used for amount to extrude frusta corners for constructing shadow frusta - LLVector3 n = RenderShadowNearDist; + //LLVector3 n = RenderShadowNearDist; //F32 nearDist[] = { n.mV[0], n.mV[1], n.mV[2], n.mV[2] }; //put together a universal "near clip" plane for shadow frusta diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index 816f1d7175..31e1d89c68 100644 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt @@ -28,6 +28,10 @@ include_directories( ${GOOGLEMOCK_INCLUDE_DIRS} ${TUT_INCLUDE_DIR} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(test_SOURCE_FILES io.cpp diff --git a/indra/test/io.cpp b/indra/test/io.cpp index ce747f667d..47a67deed0 100644 --- a/indra/test/io.cpp +++ b/indra/test/io.cpp @@ -1140,7 +1140,7 @@ namespace tut bool connected = client->blockingConnect(server_host); ensure("Connected to server", connected); lldebugs << "connected" << llendl; - F32 elapsed = pump_loop(mPump,0.1f); + pump_loop(mPump,0.1f); count = mPump->runningChains(); ensure_equals("server chain onboard", count, 2); lldebugs << "** Client is connected." << llendl; @@ -1156,20 +1156,20 @@ namespace tut chain.clear(); // pump for a bit and make sure all 3 chains are running - elapsed = pump_loop(mPump,0.1f); + pump_loop(mPump,0.1f); count = mPump->runningChains(); ensure_equals("client chain onboard", count, 3); lldebugs << "** request should have been sent." << llendl; // pump for long enough the the client socket closes, and the // server socket should not be closed yet. - elapsed = pump_loop(mPump,0.2f); + pump_loop(mPump,0.2f); count = mPump->runningChains(); ensure_equals("client chain timed out ", count, 2); lldebugs << "** client chain should be closed." << llendl; // At this point, the socket should be closed by the timeout - elapsed = pump_loop(mPump,1.0f); + pump_loop(mPump,1.0f); count = mPump->runningChains(); ensure_equals("accepted socked close", count, 1); lldebugs << "** Sleeper should have timed out.." << llendl; diff --git a/indra/test/llstreamtools_tut.cpp b/indra/test/llstreamtools_tut.cpp index a93f2e8f65..0f6436f0f4 100644 --- a/indra/test/llstreamtools_tut.cpp +++ b/indra/test/llstreamtools_tut.cpp @@ -385,16 +385,15 @@ namespace tut std::string expected_result; std::string actual_result; std::istringstream is; - bool ret; is.clear(); is.str(str = " First Second \t \r \n Third Fourth-ShouldThisBePartOfFourth Fifth\n"); actual_result = ""; - ret = get_word(actual_result, is); // First + get_word(actual_result, is); // First actual_result = ""; - ret = get_word(actual_result, is); // Second + get_word(actual_result, is); // Second actual_result = ""; - ret = get_word(actual_result, is); // Third + get_word(actual_result, is); // Third // the current implementation of get_word seems inconsistent with // skip_to_next_word. skip_to_next_word treats any character other @@ -403,22 +402,22 @@ namespace tut // carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v') // as delimiters actual_result = ""; - ret = get_word(actual_result, is); // will copy Fourth-ShouldThisBePartOfFourth + get_word(actual_result, is); // will copy Fourth-ShouldThisBePartOfFourth actual_result = ""; - ret = get_word(actual_result, is); // will copy Fifth + get_word(actual_result, is); // will copy Fifth is.clear(); is.str(str = " First Second \t \r \n Third Fourth_ShouldThisBePartOfFourth Fifth\n"); - ret = skip_to_next_word(is); // should now point to First - ret = skip_to_next_word(is); // should now point to Second - ret = skip_to_next_word(is); // should now point to Third - ret = skip_to_next_word(is); // should now point to Fourth - ret = skip_to_next_word(is); // should now point to ShouldThisBePartOfFourth + skip_to_next_word(is); // should now point to First + skip_to_next_word(is); // should now point to Second + skip_to_next_word(is); // should now point to Third + skip_to_next_word(is); // should now point to Fourth + skip_to_next_word(is); // should now point to ShouldThisBePartOfFourth expected_result = ""; // will copy ShouldThisBePartOfFourth, the fifth word, // while using get_word above five times result in getting "Fifth" - ret = get_word(expected_result, is); + get_word(expected_result, is); ensure_equals("get_word: skip_to_next_word compatibility", actual_result, expected_result); } @@ -480,39 +479,38 @@ namespace tut std::string expected_result; std::string actual_result; std::istringstream is; - bool ret; is.clear(); is.str(str = "First Second \t \r\n Third Fourth-ShouldThisBePartOfFourth IsThisFifth\n"); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = "First Second \t \r\n"; ensure_equals("get_line: 1", actual_result, expected_result); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = " Third Fourth-ShouldThisBePartOfFourth IsThisFifth\n"; ensure_equals("get_line: 2", actual_result, expected_result); is.clear(); is.str(str = "\nFirst Line.\n\nSecond Line.\n"); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = "\n"; ensure_equals("get_line: First char as newline", actual_result, expected_result); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = "First Line.\n"; ensure_equals("get_line: 3", actual_result, expected_result); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = "\n"; ensure_equals("get_line: 4", actual_result, expected_result); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = "Second Line.\n"; ensure_equals("get_line: 5", actual_result, expected_result); } @@ -544,13 +542,12 @@ namespace tut std::string expected_result; std::string actual_result; std::istringstream is; - bool ret; // need to be check if this test case is wrong or the implementation is wrong. is.clear(); is.str(str = "Should not skip lone \r.\r\n"); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = "Should not skip lone \r.\r\n"; ensure_equals("get_line: carriage return skipped even though not followed by newline", actual_result, expected_result); } @@ -563,12 +560,11 @@ namespace tut std::string expected_result; std::string actual_result; std::istringstream is; - bool ret; is.clear(); is.str(str = "\n"); actual_result = ""; - ret = get_line(actual_result, is); + get_line(actual_result, is); expected_result = "\n"; ensure_equals("get_line: Just newline", actual_result, expected_result); } @@ -582,36 +578,35 @@ namespace tut std::string expected_result; std::string actual_result; std::istringstream is; - bool ret; is.clear(); is.str(str = "First Line.\nSecond Line.\n"); actual_result = ""; - ret = get_line(actual_result, is, 255); + get_line(actual_result, is, 255); expected_result = "First Line.\n"; ensure_equals("get_line: Basic Operation", actual_result, expected_result); actual_result = ""; - ret = get_line(actual_result, is, sizeof("Second")-1); + get_line(actual_result, is, sizeof("Second")-1); expected_result = "Second\n"; ensure_equals("get_line: Insufficient length 1", actual_result, expected_result); actual_result = ""; - ret = get_line(actual_result, is, 255); + get_line(actual_result, is, 255); expected_result = " Line.\n"; ensure_equals("get_line: Remainder after earlier insufficient length", actual_result, expected_result); is.clear(); is.str(str = "One Line only with no newline with limited length"); actual_result = ""; - ret = get_line(actual_result, is, sizeof("One Line only with no newline with limited length")-1); + get_line(actual_result, is, sizeof("One Line only with no newline with limited length")-1); expected_result = "One Line only with no newline with limited length\n"; ensure_equals("get_line: No newline with limited length", actual_result, expected_result); is.clear(); is.str(str = "One Line only with no newline"); actual_result = ""; - ret = get_line(actual_result, is, 255); + get_line(actual_result, is, 255); expected_result = "One Line only with no newline"; ensure_equals("get_line: No newline", actual_result, expected_result); } diff --git a/indra/test/lltemplatemessagebuilder_tut.cpp b/indra/test/lltemplatemessagebuilder_tut.cpp index 6e1c82bb24..6c0b70edd2 100644 --- a/indra/test/lltemplatemessagebuilder_tut.cpp +++ b/indra/test/lltemplatemessagebuilder_tut.cpp @@ -937,7 +937,7 @@ namespace tut // build message with single block LLMessageTemplate messageTemplate = defaultTemplate(); messageTemplate.addBlock(defaultBlock(MVT_U32, 4, MBT_SINGLE)); - U32 outValue, outValue2, inValue = 0xbbbbbbbb; + U32 outValue, inValue = 0xbbbbbbbb; LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate); builder->addU32(_PREHASH_Test0, inValue); const U32 bufferSize = 1024; @@ -962,7 +962,6 @@ namespace tut memset(buffer, 0xcc, bufferSize); reader->getString(_PREHASH_Test1, _PREHASH_Test0, bufferSize, outBuffer); - outValue2 = reader->getNumberOfBlocks(_PREHASH_Test1); ensure_equals("Ensure present value ", outValue, inValue); ensure_equals("Ensure unchanged buffer ", strlen(outBuffer), 0); delete reader; diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt index 08f5a8a888..8179be66f5 100644 --- a/indra/test_apps/llplugintest/CMakeLists.txt +++ b/indra/test_apps/llplugintest/CMakeLists.txt @@ -25,6 +25,9 @@ include_directories( ${LLRENDER_INCLUDE_DIRS} ${LLWINDOW_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) if (DARWIN) include(CMakeFindFrameworks) diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt index 7720619df3..658f167c2e 100644 --- a/indra/viewer_components/login/CMakeLists.txt +++ b/indra/viewer_components/login/CMakeLists.txt @@ -15,6 +15,10 @@ include_directories( ${LLMATH_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(login_SOURCE_FILES lllogin.cpp diff --git a/indra/viewer_components/updater/CMakeLists.txt b/indra/viewer_components/updater/CMakeLists.txt index ef82290b47..de7e336341 100644 --- a/indra/viewer_components/updater/CMakeLists.txt +++ b/indra/viewer_components/updater/CMakeLists.txt @@ -20,6 +20,9 @@ include_directories( ${LLVFS_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ) set(updater_service_SOURCE_FILES llupdaterservice.cpp diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt index 5329c89554..aa35c3b05e 100644 --- a/indra/win_crash_logger/CMakeLists.txt +++ b/indra/win_crash_logger/CMakeLists.txt @@ -21,6 +21,10 @@ include_directories( ${LLXML_INCLUDE_DIRS} ${LLVFS_INCLUDE_DIRS} ) +include_directories(SYSTEM + ${LLCOMMON_SYSTEM_INCLUDE_DIRS} + ${LLXML_SYSTEM_INCLUDE_DIRS} + ) set(win_crash_logger_SOURCE_FILES win_crash_logger.cpp -- cgit v1.3 From 1004eff4a29371719f98eae378f6ecd7dc6be225 Mon Sep 17 00:00:00 2001 From: Logan Dethrow Date: Wed, 5 Dec 2012 17:29:52 -0500 Subject: Linux Viewer build fixes. * Removed no longer used unpack_bufsize from bitpack_test.cpp * Added llviewertexture_stub.cpp to the newview tests directory to fix llworldmap_test.cpp and llworldmipmap_test.cpp linker errors. --- indra/llcommon/tests/bitpack_test.cpp | 1 - indra/newview/CMakeLists.txt | 9 ++++++++ indra/newview/tests/llviewertexture_stub.cpp | 32 ++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 indra/newview/tests/llviewertexture_stub.cpp (limited to 'indra/llcommon') diff --git a/indra/llcommon/tests/bitpack_test.cpp b/indra/llcommon/tests/bitpack_test.cpp index 49cae16400..afc0c18cd0 100644 --- a/indra/llcommon/tests/bitpack_test.cpp +++ b/indra/llcommon/tests/bitpack_test.cpp @@ -94,7 +94,6 @@ namespace tut ensure("bitPack: individual unpack: 5", unpackbuffer[0] == (U8) str[5]); bitunpack.bitUnpack(unpackbuffer, 8*4); // Life ensure_memory_matches("bitPack: 4 bytes unpack:", unpackbuffer, 4, str+6, 4); - ensure("keep compiler quiet", unpack_bufsize == unpack_bufsize); } // U32 packing diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index f85060a140..e64697982f 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2060,6 +2060,15 @@ if (LL_TESTS) llworldmipmap.cpp ) + set_source_files_properties( + llworldmap.cpp + llworldmipmap.cpp + PROPERTIES + LL_TEST_ADDITIONAL_SOURCE_FILES + tests/llviewertexture_stub.cpp + #llviewertexturelist.cpp + ) + set_source_files_properties( lltranslate.cpp PROPERTIES diff --git a/indra/newview/tests/llviewertexture_stub.cpp b/indra/newview/tests/llviewertexture_stub.cpp new file mode 100644 index 0000000000..90e76a8f83 --- /dev/null +++ b/indra/newview/tests/llviewertexture_stub.cpp @@ -0,0 +1,32 @@ +/** + * @file llviewertexture_stub.cpp + * @brief stub class to allow unit testing + * + * $LicenseInfo:firstyear=2012&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "linden_common.h" +#include "../llviewertexture.h" + +void LLViewerTexture::setBoostLevel(int level) +{ +} -- cgit v1.3 From 438ceeb008b7c4eec0fc48894935289ca352fc65 Mon Sep 17 00:00:00 2001 From: Nyx Linden Date: Fri, 25 Jan 2013 17:58:11 -0500 Subject: BUILDFIX: merge cleanup A couple of merge issues that caused the resulting code to not build. --- indra/llappearance/llavatarappearance.cpp | 10 ---------- indra/llappearance/llpolyskeletaldistortion.h | 2 +- indra/llcommon/llfasttimer.cpp | 6 ++++++ indra/llcommon/llfasttimer.h | 2 ++ indra/newview/llworldmapview.cpp | 2 +- 5 files changed, 10 insertions(+), 12 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index c4ff667fa1..89e64822f8 100755 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -169,8 +169,6 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) : mRoot(NULL), mWearableData(wearable_data) { - LLMemType mt(LLMemType::MTYPE_AVATAR); - llassert_always(mWearableData); mBakedTextureDatas.resize(LLAvatarAppearanceDefines::BAKED_NUM_INDICES); for (U32 i = 0; i < mBakedTextureDatas.size(); i++ ) @@ -495,8 +493,6 @@ void LLAvatarAppearance::computeBodySize() //----------------------------------------------------------------------------- BOOL LLAvatarAppearance::parseSkeletonFile(const std::string& filename) { - LLMemType mt(LLMemType::MTYPE_AVATAR); - //------------------------------------------------------------------------- // parse the file //------------------------------------------------------------------------- @@ -538,8 +534,6 @@ BOOL LLAvatarAppearance::parseSkeletonFile(const std::string& filename) //----------------------------------------------------------------------------- BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 &volume_num, S32 &joint_num) { - LLMemType mt(LLMemType::MTYPE_AVATAR); - LLJoint* joint = NULL; if (info->mIsJoint) @@ -621,8 +615,6 @@ BOOL LLAvatarAppearance::allocateCharacterJoints( U32 num ) //----------------------------------------------------------------------------- BOOL LLAvatarAppearance::buildSkeleton(const LLAvatarSkeletonInfo *info) { - LLMemType mt(LLMemType::MTYPE_AVATAR); - //------------------------------------------------------------------------- // allocate joints //------------------------------------------------------------------------- @@ -675,8 +667,6 @@ void LLAvatarAppearance::clearSkeleton() //----------------------------------------------------------------------------- void LLAvatarAppearance::buildCharacter() { - LLMemType mt(LLMemType::MTYPE_AVATAR); - //------------------------------------------------------------------------- // remove all references to our existing skeleton // so we can rebuild it diff --git a/indra/llappearance/llpolyskeletaldistortion.h b/indra/llappearance/llpolyskeletaldistortion.h index 170f8e8771..774bc7dfa2 100644 --- a/indra/llappearance/llpolyskeletaldistortion.h +++ b/indra/llappearance/llpolyskeletaldistortion.h @@ -119,7 +119,7 @@ public: /*virtual*/ const LLVector4a* getNextDistortion(U32 *index, LLPolyMesh **poly_mesh){index = 0; poly_mesh = NULL; return NULL;}; protected: - LL_ALIGN_16(LLVector4a>-mDefaultVec); + LL_ALIGN_16(LLVector4a mDefaultVec); typedef std::map joint_vec_map_t; joint_vec_map_t mJointScales; joint_vec_map_t mJointOffsets; diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp index 6970c29092..9b15804e97 100644 --- a/indra/llcommon/llfasttimer.cpp +++ b/indra/llcommon/llfasttimer.cpp @@ -561,6 +561,12 @@ std::vector& LLFastTimer::NamedTimer::getChildren() return mChildren; } +// static +LLFastTimer::NamedTimer& LLFastTimer::NamedTimer::getRootNamedTimer() +{ + return *NamedTimerFactory::instance().getRootTimer(); +} + //static void LLFastTimer::nextFrame() { diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index e42e549df5..81c4b78775 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -91,6 +91,8 @@ public: U32 getHistoricalCount(S32 history_index = 0) const; U32 getHistoricalCalls(S32 history_index = 0) const; + static NamedTimer& getRootNamedTimer(); + void setFrameState(FrameState* state) { mFrameState = state; state->setNamedTimer(this); } FrameState& getFrameState() const; diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index e96906b4bb..1940cf541e 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -1317,7 +1317,7 @@ void LLWorldMapView::drawTrackingCircle( const LLRect& rect, S32 x, S32 y, const gGL.matrixMode(LLRender::MM_MODELVIEW); gGL.pushMatrix(); - gGL.translatef((F32)x * LLUI::sGLScaleFactor.mV[VX], (F32)y * LLUI::sGLScaleFactor.mV[VY], 0.f); + gGL.translatef((F32)x * LLUI::getScaleFactor().mV[VX], (F32)y * LLUI::getScaleFactor().mV[VY], 0.f); gl_washer_segment_2d(inner_radius, outer_radius, start_theta, end_theta, 40, color, color); gGL.popMatrix(); -- cgit v1.3 From 54cdc322b8f2bd35b289cacf3493622e7cc51194 Mon Sep 17 00:00:00 2001 From: Don Kjer Date: Tue, 5 Mar 2013 22:05:22 -0800 Subject: Fixing issues with not detecting when LLSD XML parsing fails. Changing most http error handlers to understand LLSD error responses. Fleshing out most http error handler message spam. --- indra/llcommon/llmetricperformancetester.cpp | 2 +- indra/llcommon/llsdserialize.h | 16 +++--- indra/llcommon/llsdserialize_xml.cpp | 18 +++++-- indra/llcrashlogger/llcrashlogger.cpp | 2 +- indra/llmessage/llavatarnamecache.cpp | 6 ++- indra/llmessage/llcachename.cpp | 4 +- indra/llmessage/llcurl.cpp | 4 +- indra/llplugin/llpluginprocessparent.cpp | 3 +- indra/llui/llspellcheck.cpp | 8 ++- indra/llxml/llcontrol.cpp | 6 +-- indra/newview/llaccountingcostmanager.cpp | 4 +- indra/newview/llagent.cpp | 13 ++--- indra/newview/llagentpilot.cpp | 2 +- indra/newview/llappearancemgr.cpp | 6 +-- indra/newview/llassetuploadqueue.cpp | 7 +-- indra/newview/llassetuploadresponders.cpp | 15 +++--- indra/newview/llassetuploadresponders.h | 6 +-- indra/newview/llclassifiedstatsresponder.cpp | 5 +- indra/newview/llclassifiedstatsresponder.h | 2 +- indra/newview/llestateinfomodel.cpp | 4 +- indra/newview/lleventpoll.cpp | 12 ++--- indra/newview/llfasttimerview.cpp | 6 +-- indra/newview/llfloateravatarpicker.cpp | 3 +- indra/newview/llfloaterregiondebugconsole.cpp | 2 +- indra/newview/llfloaterregioninfo.cpp | 16 +++--- indra/newview/llfloaterreporter.cpp | 2 +- indra/newview/llfloaterscriptlimits.cpp | 16 +++--- indra/newview/llfloaterscriptlimits.h | 8 +-- indra/newview/llgroupmgr.cpp | 7 +-- indra/newview/llhomelocationresponder.cpp | 4 +- indra/newview/llhomelocationresponder.h | 2 +- indra/newview/llimfloater.cpp | 5 +- indra/newview/llimpanel.cpp | 5 +- indra/newview/llimview.cpp | 11 +++-- indra/newview/llinspectavatar.cpp | 4 +- indra/newview/llinventorymodel.cpp | 10 ++-- indra/newview/llinventorymodel.h | 2 +- indra/newview/llinventorymodelbackgroundfetch.cpp | 14 +++--- indra/newview/llmediadataclient.cpp | 10 ++-- indra/newview/llmediadataclient.h | 4 +- indra/newview/llpathfindingmanager.cpp | 59 +++++++++++++---------- indra/newview/llpathfindingnavmesh.cpp | 5 +- indra/newview/llpathfindingnavmesh.h | 2 +- indra/newview/llproductinforequest.cpp | 6 +-- indra/newview/llremoteparcelrequest.cpp | 6 +-- indra/newview/llremoteparcelrequest.h | 2 +- indra/newview/llspeakers.cpp | 4 +- indra/newview/lluploadfloaterobservers.cpp | 5 +- indra/newview/lluploadfloaterobservers.h | 2 +- indra/newview/llviewerdisplayname.cpp | 4 +- indra/newview/llviewerobjectlist.cpp | 12 ++--- indra/newview/llviewerregion.cpp | 15 +++--- indra/newview/llviewerstats.cpp | 6 +-- indra/newview/llvoavatarself.cpp | 7 +-- indra/newview/llvoicechannel.cpp | 10 ++-- indra/newview/llvoicevivox.cpp | 21 ++++---- indra/newview/llwebsharing.cpp | 16 +++--- indra/newview/llwlhandlers.cpp | 17 ++++--- indra/newview/llwlhandlers.h | 5 +- indra/newview/tests/llmediadataclient_test.cpp | 4 +- 60 files changed, 267 insertions(+), 217 deletions(-) (limited to 'indra/llcommon') diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp index 41d3eb0bf3..731e58bd20 100644 --- a/indra/llcommon/llmetricperformancetester.cpp +++ b/indra/llcommon/llmetricperformancetester.cpp @@ -100,7 +100,7 @@ LLSD LLMetricPerformanceTesterBasic::analyzeMetricPerformanceLog(std::istream& i LLSD ret; LLSD cur; - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter) { diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h index 86e3fc864c..e7a5507385 100644 --- a/indra/llcommon/llsdserialize.h +++ b/indra/llcommon/llsdserialize.h @@ -300,7 +300,7 @@ public: /** * @brief Constructor */ - LLSDXMLParser(); + LLSDXMLParser(bool emit_errors=true); protected: /** @@ -747,25 +747,25 @@ public: return f->format(sd, str, LLSDFormatter::OPTIONS_PRETTY); } - static S32 fromXMLEmbedded(LLSD& sd, std::istream& str) + static S32 fromXMLEmbedded(LLSD& sd, std::istream& str, bool emit_errors=true) { // no need for max_bytes since xml formatting is not // subvertable by bad sizes. - LLPointer p = new LLSDXMLParser; + LLPointer p = new LLSDXMLParser(emit_errors); return p->parse(str, sd, LLSDSerialize::SIZE_UNLIMITED); } // Line oriented parser, 30% faster than fromXML(), but can // only be used when you know you have the complete XML // document available in the stream. - static S32 fromXMLDocument(LLSD& sd, std::istream& str) + static S32 fromXMLDocument(LLSD& sd, std::istream& str, bool emit_errors=true) { - LLPointer p = new LLSDXMLParser(); + LLPointer p = new LLSDXMLParser(emit_errors); return p->parseLines(str, sd); } - static S32 fromXML(LLSD& sd, std::istream& str) + static S32 fromXML(LLSD& sd, std::istream& str, bool emit_errors=true) { - return fromXMLEmbedded(sd, str); -// return fromXMLDocument(sd, str); + return fromXMLEmbedded(sd, str, emit_errors); +// return fromXMLDocument(sd, str, emit_errors); } /* diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp index 34b3dbb99a..cef743a7be 100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp @@ -250,7 +250,7 @@ std::string LLSDXMLFormatter::escapeString(const std::string& in) class LLSDXMLParser::Impl { public: - Impl(); + Impl(bool emit_errors); ~Impl(); S32 parse(std::istream& input, LLSD& data); @@ -294,6 +294,7 @@ private: static const XML_Char* findAttribute(const XML_Char* name, const XML_Char** pairs); + bool mEmitErrors; XML_Parser mParser; @@ -315,7 +316,8 @@ private: }; -LLSDXMLParser::Impl::Impl() +LLSDXMLParser::Impl::Impl(bool emit_errors) + : mEmitErrors(emit_errors) { mParser = XML_ParserCreate(NULL); reset(); @@ -402,7 +404,10 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data) { ((char*) buffer)[count ? count - 1 : 0] = '\0'; } - llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; + if (mEmitErrors) + { + llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; + } data = LLSD(); return LLSDParser::PARSE_FAILURE; } @@ -480,7 +485,10 @@ S32 LLSDXMLParser::Impl::parseLines(std::istream& input, LLSD& data) if (status == XML_STATUS_ERROR && !mGracefullStop) { - llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; + if (mEmitErrors) + { + llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; + } return LLSDParser::PARSE_FAILURE; } @@ -897,7 +905,7 @@ LLSDXMLParser::Impl::Element LLSDXMLParser::Impl::readElement(const XML_Char* na /** * LLSDXMLParser */ -LLSDXMLParser::LLSDXMLParser() : impl(* new Impl) +LLSDXMLParser::LLSDXMLParser(bool emit_errors /* = true */) : impl(* new Impl(emit_errors)) { } diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 34e25a8a71..fb2d43e3b0 100644 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -147,7 +147,7 @@ void LLCrashLogger::gatherFiles() // Look for it in the debug_info.log file if (debug_log_file.is_open()) - { + { LLSDSerialize::fromXML(mDebugLog, debug_log_file); mCrashInPreviousExec = mDebugLog["CrashNotHandled"].asBoolean(); diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index a6e2c89ba4..f9e3ad26f7 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -443,8 +443,10 @@ void LLAvatarNameCache::cleanupClass() void LLAvatarNameCache::importFile(std::istream& istr) { LLSD data; - S32 parse_count = LLSDSerialize::fromXMLDocument(data, istr); - if (parse_count < 1) return; + if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr)) + { + return; + } // by convention LLSD storage is a map // we only store one entry in the map diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 8f4af1984c..d9eb65ff59 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -308,8 +308,10 @@ boost::signals2::connection LLCacheName::addObserver(const LLCacheNameCallback& bool LLCacheName::importFile(std::istream& istr) { LLSD data; - if(LLSDSerialize::fromXMLDocument(data, istr) < 1) + if(LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(data, istr)) + { return false; + } // We'll expire entries more than a week old U32 now = (U32)time(NULL); diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 8ffa8e4271..47041a2880 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -175,9 +175,11 @@ void LLCurl::Responder::completedRaw( { LLSD content; LLBufferStream istr(channels, buffer.get()); - if (!LLSDSerialize::fromXML(content, istr)) + const bool emit_errors = false; + if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(content, istr, emit_errors)) { llinfos << "Failed to deserialize LLSD. " << mURL << " [" << status << "]: " << reason << llendl; + content["reason"] = reason; } completed(status, reason, content); diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 71a6145b58..a4da7674d5 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -31,6 +31,7 @@ #include "llpluginprocessparent.h" #include "llpluginmessagepipe.h" #include "llpluginmessageclasses.h" +#include "llsdserialize.h" #include "stringize.h" #include "llapr.h" @@ -836,7 +837,7 @@ void LLPluginProcessParent::receiveMessageRaw(const std::string &message) LL_DEBUGS("Plugin") << "Received: " << message << LL_ENDL; LLPluginMessage parsed; - if(parsed.parse(message) != -1) + if(LLSDParser::PARSE_FAILURE != parsed.parse(message)) { if(parsed.hasValue("blocking_request")) { diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp index a189375fbe..250372da5b 100644 --- a/indra/llui/llspellcheck.cpp +++ b/indra/llui/llspellcheck.cpp @@ -145,10 +145,14 @@ void LLSpellChecker::refreshDictionaryMap() // Load dictionary information (file name, friendly name, ...) llifstream user_file(user_path + DICT_FILE_MAIN, std::ios::binary); - if ( (!user_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, user_file)) || (0 == sDictMap.size()) ) + if ( (!user_file.is_open()) + || (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, user_file)) + || (0 == sDictMap.size()) ) { llifstream app_file(app_path + DICT_FILE_MAIN, std::ios::binary); - if ( (!app_file.is_open()) || (0 == LLSDSerialize::fromXMLDocument(sDictMap, app_file)) || (0 == sDictMap.size()) ) + if ( (!app_file.is_open()) + || (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXMLDocument(sDictMap, app_file)) + || (0 == sDictMap.size()) ) { return; } diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 53d9380f4f..666c03e9ff 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -850,12 +850,10 @@ U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_v return 0; } - S32 ret = LLSDSerialize::fromXML(settings, infile); - - if (ret <= 0) + if (LLSDParser::PARSE_FAILURE == LLSDSerialize::fromXML(settings, infile)) { infile.close(); - llwarns << "Unable to open LLSD control file " << filename << ". Trying Legacy Method." << llendl; + llwarns << "Unable to parse LLSD control file " << filename << ". Trying Legacy Method." << llendl; return loadFromFileLegacy(filename, TRUE, TYPE_STRING); } diff --git a/indra/newview/llaccountingcostmanager.cpp b/indra/newview/llaccountingcostmanager.cpp index 8767955fcb..7662a9689d 100644 --- a/indra/newview/llaccountingcostmanager.cpp +++ b/indra/newview/llaccountingcostmanager.cpp @@ -56,9 +56,9 @@ public: } } - void error( U32 statusNum, const std::string& reason ) + void errorWithContent( U32 statusNum, const std::string& reason, const LLSD& content ) { - llwarns << "Transport error "<handlePreferredMaturityResult(actualMaturity); } -void LLMaturityPreferencesResponder::error(U32 pStatus, const std::string& pReason) +void LLMaturityPreferencesResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { llwarns << "while attempting to change maturity preference from '" << LLViewerRegion::accessToString(mPreviousMaturity) - << "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error because '" - << pReason << "' [status:" << pStatus << "]" << llendl; + << "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error with [status:" + << pStatus << "]: " << (pContent.isDefined() ? pContent : LLSD(pReason)) << llendl; mAgent->handlePreferredMaturityError(); } @@ -2783,7 +2783,7 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity) // If we don't have a region, report it as an error if (getRegion() == NULL) { - responderPtr->error(0U, "region is not defined"); + responderPtr->errorWithContent(0U, "region is not defined", LLSD()); } else { @@ -2793,7 +2793,8 @@ void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity) // If the capability is not defined, report it as an error if (url.empty()) { - responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region"); + responderPtr->errorWithContent(0U, + "capability 'UpdateAgentInformation' is not defined for region", LLSD()); } else { diff --git a/indra/newview/llagentpilot.cpp b/indra/newview/llagentpilot.cpp index 734c502fcf..c7872fc5f6 100644 --- a/indra/newview/llagentpilot.cpp +++ b/indra/newview/llagentpilot.cpp @@ -139,7 +139,7 @@ void LLAgentPilot::loadXML(const std::string& filename) mActions.reset(); LLSD record; - while (!file.eof() && LLSDSerialize::fromXML(record, file)) + while (!file.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(record, file)) { Action action; action.mTime = record["time"].asReal(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 1561f8d74c..2c76efc7fb 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -3308,10 +3308,10 @@ public: app_mgr->mLastUpdateRequestCOFVersion = new_version; } - virtual void error(U32 pStatus, const std::string& pReason) + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& content) { - llwarns << "While attempting to increment the agent's cof we got an error because '" - << pReason << "' [status:" << pStatus << "]" << llendl; + llwarns << "While attempting to increment the agent's cof we got an error with [status:" + << pStatus << "]: " << content << llendl; F32 seconds_to_wait; if (mRetryPolicy->shouldRetry(pStatus,seconds_to_wait)) { diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp index f943759bb8..4bdb690225 100644 --- a/indra/newview/llassetuploadqueue.cpp +++ b/indra/newview/llassetuploadqueue.cpp @@ -69,10 +69,11 @@ public: delete mData; } - virtual void error(U32 statusNum, const std::string& reason) + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llwarns << "Error: " << reason << llendl; - LLUpdateTaskInventoryResponder::error(statusNum, reason); + llwarns << "LLAssetUploadChainResponder Error [status:" + << statusNum << "]: " << content << llendl; + LLUpdateTaskInventoryResponder::errorWithContent(statusNum, reason, content); LLAssetUploadQueue *queue = mSupplier->get(); if (queue) { diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 694bbdfb67..2564802387 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -225,10 +225,10 @@ LLAssetUploadResponder::~LLAssetUploadResponder() } // virtual -void LLAssetUploadResponder::error(U32 statusNum, const std::string& reason) +void LLAssetUploadResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "LLAssetUploadResponder::error " << statusNum - << " reason: " << reason << llendl; + llinfos << "LLAssetUploadResponder::error [status:" + << statusNum << "]: " << content << llendl; LLSD args; switch(statusNum) { @@ -340,9 +340,9 @@ LLNewAgentInventoryResponder::LLNewAgentInventoryResponder( } // virtual -void LLNewAgentInventoryResponder::error(U32 statusNum, const std::string& reason) +void LLNewAgentInventoryResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - LLAssetUploadResponder::error(statusNum, reason); + LLAssetUploadResponder::errorWithContent(statusNum, reason, content); //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE); } @@ -487,9 +487,10 @@ void LLSendTexLayerResponder::uploadComplete(const LLSD& content) } } -void LLSendTexLayerResponder::error(U32 statusNum, const std::string& reason) +void LLSendTexLayerResponder::errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "status: " << statusNum << " reason: " << reason << llendl; + llinfos << "LLSendTexLayerResponder error [status:" + << statusNum << "]: " << content << llendl; // Invoke the original callback with an error result LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakedUploadData, -1, LL_EXSTAT_NONE); diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h index 381b919c4a..a6d1016136 100644 --- a/indra/newview/llassetuploadresponders.h +++ b/indra/newview/llassetuploadresponders.h @@ -42,7 +42,7 @@ public: LLAssetType::EType asset_type); ~LLAssetUploadResponder(); - virtual void error(U32 statusNum, const std::string& reason); + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); virtual void uploadUpload(const LLSD& content); virtual void uploadComplete(const LLSD& content); @@ -67,7 +67,7 @@ public: const LLSD& post_data, const std::string& file_name, LLAssetType::EType asset_type); - virtual void error(U32 statusNum, const std::string& reason); + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content); virtual void uploadComplete(const LLSD& content); virtual void uploadFailure(const LLSD& content); }; @@ -122,7 +122,7 @@ public: ~LLSendTexLayerResponder(); virtual void uploadComplete(const LLSD& content); - virtual void error(U32 statusNum, const std::string& reason); + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content); LLBakedUploadData * mBakedUploadData; }; diff --git a/indra/newview/llclassifiedstatsresponder.cpp b/indra/newview/llclassifiedstatsresponder.cpp index b4da31895f..e3cd83e174 100644 --- a/indra/newview/llclassifiedstatsresponder.cpp +++ b/indra/newview/llclassifiedstatsresponder.cpp @@ -62,8 +62,7 @@ void LLClassifiedStatsResponder::result(const LLSD& content) } /*virtual*/ -void LLClassifiedStatsResponder::error(U32 status, const std::string& reason) +void LLClassifiedStatsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "LLClassifiedStatsResponder::error(" - << status << ": " << reason << ")" << llendl; + llinfos << "LLClassifiedStatsResponder::error [status:" << status << "]: " << content << llendl; } diff --git a/indra/newview/llclassifiedstatsresponder.h b/indra/newview/llclassifiedstatsresponder.h index 3db1868cb2..06dcb62fd0 100644 --- a/indra/newview/llclassifiedstatsresponder.h +++ b/indra/newview/llclassifiedstatsresponder.h @@ -39,7 +39,7 @@ public: virtual void result(const LLSD& content); //If we get back an error (not found, etc...), handle it here - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: LLUUID mClassifiedID; diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp index 0faa888398..2669b0340f 100644 --- a/indra/newview/llestateinfomodel.cpp +++ b/indra/newview/llestateinfomodel.cpp @@ -122,9 +122,9 @@ public: } // if we get an error response - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Failed to commit estate info (" << status << "): " << reason << llendl; + llwarns << "Failed to commit estate info [status:" << status << "]: " << content << llendl; } }; diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp index 2c786b7f8b..e0f7223a8c 100644 --- a/indra/newview/lleventpoll.cpp +++ b/indra/newview/lleventpoll.cpp @@ -62,7 +62,7 @@ namespace void handleMessage(const LLSD& content); - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); virtual void completedRaw(U32 status, @@ -187,7 +187,7 @@ namespace } //virtual - void LLEventPollResponder::error(U32 status, const std::string& reason) + void LLEventPollResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { if (mDone) return; @@ -207,13 +207,13 @@ namespace + mErrorCount * EVENT_POLL_ERROR_RETRY_SECONDS_INC , this); - llwarns << "Unexpected HTTP error. status: " << status << ", reason: " << reason << llendl; + llwarns << "LLEventPollResponder error [status:" << status << "]: " << content << llendl; } else { - llwarns << "LLEventPollResponder::error: <" << mCount << "> got " - << status << ": " << reason - << (mDone ? " -- done" : "") << llendl; + llwarns << "LLEventPollResponder error <" << mCount + << "> [status:" << status << "]: " << content + << (mDone ? " -- done" : "") << llendl; stop(); // At this point we have given up and the viewer will not receive HTTP messages from the simulator. diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 19fca9b95d..fbf72b1a85 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -1070,7 +1070,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t { //read base log into memory S32 i = 0; std::ifstream is(base.c_str()); - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { base_data[i++] = cur; } @@ -1083,7 +1083,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t { //read current log into memory S32 i = 0; std::ifstream is(target.c_str()); - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { cur_data[i++] = cur; @@ -1374,7 +1374,7 @@ LLSD LLFastTimerView::analyzePerformanceLogDefault(std::istream& is) stats_map_t time_stats; stats_map_t sample_stats; - while (!is.eof() && LLSDSerialize::fromXML(cur, is)) + while (!is.eof() && LLSDParser::PARSE_FAILURE != LLSDSerialize::fromXML(cur, is)) { for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter) { diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 0290e7cdf0..752aba5e16 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -404,8 +404,7 @@ public: } else { - llinfos << "avatar picker failed " << status - << " reason " << reason << llendl; + llwarns << "avatar picker failed [status:" << status << "]: " << content << llendl; } } diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index c7fab2573f..0cde878055 100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp @@ -75,7 +75,7 @@ namespace { public: /* virtual */ - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason) { sConsoleReplySignal(UNABLE_TO_SEND_COMMAND); } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index a36021f971..4a9ea5acf0 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -756,9 +756,10 @@ class ConsoleRequestResponder : public LLHTTPClient::Responder { public: /*virtual*/ - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "requesting mesh_rez_enabled failed" << llendl; + llwarns << "ConsoleRequestResponder error requesting mesh_rez_enabled [status:" + << status << "]: " << content << llendl; } }; @@ -768,9 +769,10 @@ class ConsoleUpdateResponder : public LLHTTPClient::Responder { public: /* virtual */ - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Updating mesh enabled region setting failed" << llendl; + llwarns << "ConsoleRequestResponder error updating mesh enabled region setting [status:" + << status << "]: " << content << llendl; } }; @@ -2207,10 +2209,10 @@ public: } // if we get an error response - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "LLEstateChangeInfoResponder::error " - << status << ": " << reason << llendl; + llinfos << "LLEstateChangeInfoResponder::error [status:" + << status << "]: " << content << llendl; } private: LLHandle mpPanel; diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 86bd15b217..685b566fa8 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -695,7 +695,7 @@ class LLUserReportResponder : public LLHTTPClient::Responder public: LLUserReportResponder(): LLHTTPClient::Responder() {} - void error(U32 status, const std::string& reason) + void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { // *TODO do some user messaging here LLUploadDialog::modalUploadFinished(); diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index a50907601c..17c34f1da0 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -221,9 +221,9 @@ void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content) } } -void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsRegionInfoResponder error [status:" << status << "]: " << content << llendl; } void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) @@ -308,9 +308,9 @@ void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content_ref) } } -void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionSummaryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsRegionSummaryResponder error [status:" << status << "]: " << content << llendl; } void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content_ref) @@ -417,9 +417,9 @@ result (map) } } -void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsRegionDetailsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsRegionDetailsResponder error [status:" << status << "]: " << content << llendl; } void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) @@ -513,9 +513,9 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content_ref) } } -void fetchScriptLimitsAttachmentInfoResponder::error(U32 status, const std::string& reason) +void fetchScriptLimitsAttachmentInfoResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "Error from responder " << reason << llendl; + llwarns << "fetchScriptLimitsAttachmentInfoResponder error [status:" << status << "]: " << content << llendl; } ///---------------------------------------------------------------------------- diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 9bcfa5fe14..f8732ef94b 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -89,7 +89,7 @@ class fetchScriptLimitsRegionInfoResponder: public LLHTTPClient::Responder fetchScriptLimitsRegionInfoResponder(const LLSD& info) : mInfo(info) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: LLSD mInfo; @@ -101,7 +101,7 @@ class fetchScriptLimitsRegionSummaryResponder: public LLHTTPClient::Responder fetchScriptLimitsRegionSummaryResponder(const LLSD& info) : mInfo(info) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: LLSD mInfo; @@ -113,7 +113,7 @@ class fetchScriptLimitsRegionDetailsResponder: public LLHTTPClient::Responder fetchScriptLimitsRegionDetailsResponder(const LLSD& info) : mInfo(info) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: LLSD mInfo; @@ -125,7 +125,7 @@ class fetchScriptLimitsAttachmentInfoResponder: public LLHTTPClient::Responder fetchScriptLimitsAttachmentInfoResponder() {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); public: protected: }; diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 81eb1d397e..cbd844cdac 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1847,14 +1847,15 @@ public: GroupMemberDataResponder() {} virtual ~GroupMemberDataResponder() {} virtual void result(const LLSD& pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); private: LLSD mMemberData; }; -void GroupMemberDataResponder::error(U32 pStatus, const std::string& pReason) +void GroupMemberDataResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { - LL_WARNS("GrpMgr") << "Error receiving group member data." << LL_ENDL; + LL_WARNS("GrpMgr") << "Error receiving group member data [status:" + << pStatus << "]: " << pContent << LL_ENDL; } void GroupMemberDataResponder::result(const LLSD& content) diff --git a/indra/newview/llhomelocationresponder.cpp b/indra/newview/llhomelocationresponder.cpp index 4850d18d99..37428c4a44 100644 --- a/indra/newview/llhomelocationresponder.cpp +++ b/indra/newview/llhomelocationresponder.cpp @@ -97,7 +97,7 @@ void LLHomeLocationResponder::result( const LLSD& content ) } } -void LLHomeLocationResponder::error( U32 status, const std::string& reason ) +void LLHomeLocationResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content ) { - llinfos << "received error(" << reason << ")" << llendl; + llwarns << "LLHomeLocationResponder error [status:" << status << "]: " << content << llendl; } diff --git a/indra/newview/llhomelocationresponder.h b/indra/newview/llhomelocationresponder.h index d640b9c894..9bf4b12c4e 100644 --- a/indra/newview/llhomelocationresponder.h +++ b/indra/newview/llhomelocationresponder.h @@ -36,7 +36,7 @@ class LLHomeLocationResponder : public LLHTTPClient::Responder { virtual void result( const LLSD& content ); - virtual void error( U32 status, const std::string& reason ); + virtual void errorWithContent( U32 status, const std::string& reason, const LLSD& content ); }; #endif diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 63eedcdfea..fff178f8fe 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -985,9 +985,10 @@ public: mSessionID = session_id; } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "Error inviting all agents to session" << llendl; + llwarns << "Error inviting all agents to session [status:" + << statusNum << "]: " << content << llendl; //throw something back to the viewer here? } diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 0250af6a0e..1dab0e67bf 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -394,9 +394,10 @@ public: mSessionID = session_id; } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "Error inviting all agents to session" << llendl; + llwarns << "Error inviting all agents to session [status:" + << statusNum << "]: " << content << llendl; //throw something back to the viewer here? } diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 57373704ef..20b33c5d08 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1227,7 +1227,7 @@ public: mAgents = agents_to_invite; } - virtual void error(U32 statusNum, const std::string& reason) + virtual void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { //try an "old school" way. if ( statusNum == 400 ) @@ -1239,6 +1239,9 @@ public: mAgents); } + llwarns << "LLStartConferenceChatResponder error [status:" + << statusNum << "]: " << content << llendl; + //else throw an error back to the client? //in theory we should have just have these error strings //etc. set up in this file as opposed to the IMMgr, @@ -1384,8 +1387,10 @@ public: } } - void error(U32 statusNum, const std::string& reason) - { + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) + { + llwarns << "LLViewerChatterBoxInvitationAcceptResponder error [status:" + << statusNum << "]: " << content << llendl; //throw something back to the viewer here? if ( gIMMgr ) { diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 17d0b0ffbb..aafc43b02d 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -501,9 +501,9 @@ void LLInspectAvatar::toggleSelectedVoice(bool enabled) mSessionID = session_id; } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << status << ": " << reason << llendl; + llwarns << "MuteVoiceResponder error [status:" << status << "]: " << content << llendl; if ( gIMMgr ) { diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index ac1f40b486..99e72cdb22 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -424,9 +424,10 @@ public: { } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("InvAPI") << "CreateInventoryCategory failed. status = " << status << ", reasion = \"" << reason << "\"" << LL_ENDL; + LL_WARNS("InvAPI") << "CreateInventoryCategory failed [status:" + << status << "]: " << content << LL_ENDL; } virtual void result(const LLSD& content) @@ -1399,10 +1400,9 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) } //If we get back an error (not found, etc...), handle it here -void LLInventoryModel::fetchInventoryResponder::error(U32 status, const std::string& reason) +void LLInventoryModel::fetchInventoryResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "fetchInventory::error " - << status << ": " << reason << llendl; + llwarns << "fetchInventory error [status:" << status << "]: " << content << llendl; gInventory.notifyObservers(); } diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 8382e875b4..dfdd237c95 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -84,7 +84,7 @@ public: public: fetchInventoryResponder(const LLSD& request_sd) : mRequestSD(request_sd) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: LLSD mRequestSD; }; diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index 024d34519f..f2b39e7186 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -366,7 +366,7 @@ class LLInventoryModelFetchItemResponder : public LLInventoryModel::fetchInvento public: LLInventoryModelFetchItemResponder(const LLSD& request_sd) : LLInventoryModel::fetchInventoryResponder(request_sd) {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); }; void LLInventoryModelFetchItemResponder::result( const LLSD& content ) @@ -375,9 +375,9 @@ void LLInventoryModelFetchItemResponder::result( const LLSD& content ) LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1); } -void LLInventoryModelFetchItemResponder::error( U32 status, const std::string& reason ) +void LLInventoryModelFetchItemResponder::errorWithContent( U32 status, const std::string& reason, const LLSD& content ) { - LLInventoryModel::fetchInventoryResponder::error(status, reason); + LLInventoryModel::fetchInventoryResponder::errorWithContent(status, reason, content); LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1); } @@ -391,7 +391,7 @@ public: {}; //LLInventoryModelFetchDescendentsResponder() {}; void result(const LLSD& content); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: BOOL getIsRecursive(const LLUUID& cat_id) const; private: @@ -529,12 +529,12 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content) } // If we get back an error (not found, etc...), handle it here. -void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason) +void LLInventoryModelFetchDescendentsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { LLInventoryModelBackgroundFetch *fetcher = LLInventoryModelBackgroundFetch::getInstance(); - llinfos << "LLInventoryModelFetchDescendentsResponder::error " - << status << ": " << reason << llendl; + llinfos << "LLInventoryModelFetchDescendentsResponder::error [status:" + << status << "]: " << content << llendl; fetcher->incrFetchCount(-1); diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp index 31038b4aac..e3b46d5d2f 100644 --- a/indra/newview/llmediadataclient.cpp +++ b/indra/newview/llmediadataclient.cpp @@ -564,7 +564,7 @@ LLMediaDataClient::Responder::Responder(const request_ptr_t &request) } /*virtual*/ -void LLMediaDataClient::Responder::error(U32 status, const std::string& reason) +void LLMediaDataClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { mRequest->stopTracking(); @@ -596,8 +596,8 @@ void LLMediaDataClient::Responder::error(U32 status, const std::string& reason) } else { - std::string msg = boost::lexical_cast(status) + ": " + reason; - LL_WARNS("LLMediaDataClient") << *mRequest << " http error(" << msg << ")" << LL_ENDL; + LL_WARNS("LLMediaDataClient") << *mRequest << " http error [status:" + << status << "]:" << content << ")" << LL_ENDL; } } @@ -1003,7 +1003,7 @@ LLMediaDataClient::Responder *LLObjectMediaNavigateClient::RequestNavigate::crea } /*virtual*/ -void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string& reason) +void LLObjectMediaNavigateClient::Responder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { getRequest()->stopTracking(); @@ -1017,7 +1017,7 @@ void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string // class if (status == HTTP_SERVICE_UNAVAILABLE) { - LLMediaDataClient::Responder::error(status, reason); + LLMediaDataClient::Responder::errorWithContent(status, reason, content); } else { diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h index ab90915c55..89e20a28d0 100644 --- a/indra/newview/llmediadataclient.h +++ b/indra/newview/llmediadataclient.h @@ -195,7 +195,7 @@ protected: public: Responder(const request_ptr_t &request); //If we get back an error (not found, etc...), handle it here - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); //If we get back a normal response, handle it here. Default just logs it. virtual void result(const LLSD& content); @@ -400,7 +400,7 @@ protected: public: Responder(const request_ptr_t &request) : LLMediaDataClient::Responder(request) {} - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD &content); private: void mediaNavigateBounceBack(); diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp index 2dd01e931e..c277359133 100644 --- a/indra/newview/llpathfindingmanager.cpp +++ b/indra/newview/llpathfindingmanager.cpp @@ -108,7 +108,7 @@ public: virtual ~NavMeshStatusResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -130,7 +130,7 @@ public: virtual ~NavMeshResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -151,7 +151,7 @@ public: virtual ~AgentStateResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -170,7 +170,7 @@ public: virtual ~NavMeshRebakeResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string& pReason); + virtual void errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent); protected: @@ -190,9 +190,11 @@ public: virtual ~LinksetsResponder(); void handleObjectLinksetsResult(const LLSD &pContent); - void handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL); + void handleObjectLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL); void handleTerrainLinksetsResult(const LLSD &pContent); - void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL); + void handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL); protected: @@ -230,7 +232,7 @@ public: virtual ~ObjectLinksetsResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string &pReason); + virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent); protected: @@ -250,7 +252,7 @@ public: virtual ~TerrainLinksetsResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string &pReason); + virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent); protected: @@ -270,7 +272,7 @@ public: virtual ~CharactersResponder(); virtual void result(const LLSD &pContent); - virtual void error(U32 pStatus, const std::string &pReason); + virtual void errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent); protected: @@ -800,9 +802,9 @@ void NavMeshStatusResponder::result(const LLSD &pContent) LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly); } -void NavMeshStatusResponder::error(U32 pStatus, const std::string& pReason) +void NavMeshStatusResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "NavMeshStatusResponder error [status:" << pStatus << "]: " << pContent << llendl; LLPathfindingNavMeshStatus navMeshStatus(mRegionUUID); LLPathfindingManager::getInstance()->handleNavMeshStatusRequest(navMeshStatus, mRegion, mIsGetStatusOnly); } @@ -828,9 +830,9 @@ void NavMeshResponder::result(const LLSD &pContent) mNavMeshPtr->handleNavMeshResult(pContent, mNavMeshVersion); } -void NavMeshResponder::error(U32 pStatus, const std::string& pReason) +void NavMeshResponder::errorWithContent(U32 pStatus, const std::string& pReason, const LLSD& pContent) { - mNavMeshPtr->handleNavMeshError(pStatus, pReason, mCapabilityURL, mNavMeshVersion); + mNavMeshPtr->handleNavMeshError(pStatus, pReason, pContent, mCapabilityURL, mNavMeshVersion); } //--------------------------------------------------------------------------- @@ -855,9 +857,9 @@ void AgentStateResponder::result(const LLSD &pContent) LLPathfindingManager::getInstance()->handleAgentState(canRebakeRegion); } -void AgentStateResponder::error(U32 pStatus, const std::string &pReason) +void AgentStateResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "AgentStateResponder error [status:" << pStatus << "]: " << pContent << llendl; LLPathfindingManager::getInstance()->handleAgentState(FALSE); } @@ -881,9 +883,9 @@ void NavMeshRebakeResponder::result(const LLSD &pContent) mRebakeNavMeshCallback(true); } -void NavMeshRebakeResponder::error(U32 pStatus, const std::string &pReason) +void NavMeshRebakeResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "NavMeshRebakeResponder error [status:" << pStatus << "]: " << pContent << llendl; mRebakeNavMeshCallback(false); } @@ -916,9 +918,11 @@ void LinksetsResponder::handleObjectLinksetsResult(const LLSD &pContent) } } -void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL) +void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL) { - llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "LinksetsResponder object linksets error with request to URL '" << pURL << "' [status:" + << pStatus << "]: " << pContent << llendl; mObjectMessagingState = kReceivedError; if (mTerrainMessagingState != kWaiting) { @@ -937,8 +941,11 @@ void LinksetsResponder::handleTerrainLinksetsResult(const LLSD &pContent) } } -void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL) +void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, + const LLSD& pContent, const std::string &pURL) { + llwarns << "LinksetsResponder terrain linksets error with request to URL '" << pURL << "' [status:" + << pStatus << "]: " << pContent << llendl; mTerrainMessagingState = kReceivedError; if (mObjectMessagingState != kWaiting) { @@ -988,9 +995,9 @@ void ObjectLinksetsResponder::result(const LLSD &pContent) mLinksetsResponsderPtr->handleObjectLinksetsResult(pContent); } -void ObjectLinksetsResponder::error(U32 pStatus, const std::string &pReason) +void ObjectLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, mCapabilityURL); + mLinksetsResponsderPtr->handleObjectLinksetsError(pStatus, pReason, pContent, mCapabilityURL); } //--------------------------------------------------------------------------- @@ -1013,9 +1020,9 @@ void TerrainLinksetsResponder::result(const LLSD &pContent) mLinksetsResponsderPtr->handleTerrainLinksetsResult(pContent); } -void TerrainLinksetsResponder::error(U32 pStatus, const std::string &pReason) +void TerrainLinksetsResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, mCapabilityURL); + mLinksetsResponsderPtr->handleTerrainLinksetsError(pStatus, pReason, pContent, mCapabilityURL); } //--------------------------------------------------------------------------- @@ -1040,9 +1047,9 @@ void CharactersResponder::result(const LLSD &pContent) mCharactersCallback(mRequestId, LLPathfindingManager::kRequestCompleted, characterListPtr); } -void CharactersResponder::error(U32 pStatus, const std::string &pReason) +void CharactersResponder::errorWithContent(U32 pStatus, const std::string &pReason, const LLSD& pContent) { - llwarns << "error with request to URL '" << mCapabilityURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "CharactersResponder error [status:" << pStatus << "]: " << pContent << llendl; LLPathfindingObjectListPtr characterListPtr = LLPathfindingObjectListPtr(new LLPathfindingCharacterList()); mCharactersCallback(mRequestId, LLPathfindingManager::kRequestError, characterListPtr); diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp index e01dd3a152..0c23e5ac92 100644 --- a/indra/newview/llpathfindingnavmesh.cpp +++ b/indra/newview/llpathfindingnavmesh.cpp @@ -184,9 +184,10 @@ void LLPathfindingNavMesh::handleNavMeshError() setRequestStatus(kNavMeshRequestError); } -void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion) +void LLPathfindingNavMesh::handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion) { - llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl; + llwarns << "LLPathfindingNavMesh error with request to URL '" << pURL << "' [status:" + << pStatus << "]: " << pContent << llendl; if (mNavMeshStatus.getVersion() == pNavMeshVersion) { handleNavMeshError(); diff --git a/indra/newview/llpathfindingnavmesh.h b/indra/newview/llpathfindingnavmesh.h index 7a844f54ce..b872ccad7c 100644 --- a/indra/newview/llpathfindingnavmesh.h +++ b/indra/newview/llpathfindingnavmesh.h @@ -74,7 +74,7 @@ public: void handleNavMeshResult(const LLSD &pContent, U32 pNavMeshVersion); void handleNavMeshNotEnabled(); void handleNavMeshError(); - void handleNavMeshError(U32 pStatus, const std::string &pReason, const std::string &pURL, U32 pNavMeshVersion); + void handleNavMeshError(U32 pStatus, const std::string &pReason, const LLSD& pContent, const std::string &pURL, U32 pNavMeshVersion); protected: diff --git a/indra/newview/llproductinforequest.cpp b/indra/newview/llproductinforequest.cpp index 93bf8b2328..1390000fc5 100644 --- a/indra/newview/llproductinforequest.cpp +++ b/indra/newview/llproductinforequest.cpp @@ -43,10 +43,10 @@ public: } //If we get back an error (not found, etc...), handle it here - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "LLProductInfoRequest::error(" - << status << ": " << reason << ")" << llendl; + llwarns << "LLProductInfoRequest error [status:" + << status << ":] " << content << llendl; } }; diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp index 3862dac340..500dec7ee5 100644 --- a/indra/newview/llremoteparcelrequest.cpp +++ b/indra/newview/llremoteparcelrequest.cpp @@ -62,10 +62,10 @@ void LLRemoteParcelRequestResponder::result(const LLSD& content) //If we get back an error (not found, etc...), handle it here //virtual -void LLRemoteParcelRequestResponder::error(U32 status, const std::string& reason) +void LLRemoteParcelRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llinfos << "LLRemoteParcelRequest::error(" - << status << ": " << reason << ")" << llendl; + llwarns << "LLRemoteParcelRequest error [status:" + << status << "]: " << content << llendl; // Panel inspecting the information may be closed and destroyed // before this response is received. diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index 74cf1616df..b87056573b 100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h @@ -44,7 +44,7 @@ public: /*virtual*/ void result(const LLSD& content); //If we get back an error (not found, etc...), handle it here - /*virtual*/ void error(U32 status, const std::string& reason); + /*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content); protected: LLHandle mObserverHandle; diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 1c7c6450c7..890bc0f42d 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -726,9 +726,9 @@ public: mSessionID = session_id; } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << status << ": " << reason << llendl; + llwarns << "ModerationResponder error [status:" << status << "]: " << content << llendl; if ( gIMMgr ) { diff --git a/indra/newview/lluploadfloaterobservers.cpp b/indra/newview/lluploadfloaterobservers.cpp index 5a6a17fbca..1d777b3f7f 100644 --- a/indra/newview/lluploadfloaterobservers.cpp +++ b/indra/newview/lluploadfloaterobservers.cpp @@ -33,9 +33,10 @@ LLUploadModelPremissionsResponder::LLUploadModelPremissionsResponder(const LLHan { } -void LLUploadModelPremissionsResponder::error(U32 status, const std::string& reason) +void LLUploadModelPremissionsResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - llwarns << "LLUploadModelPremissionsResponder::error("<< status << ": " << reason << ")" << llendl; + llwarns << "LLUploadModelPremissionsResponder error [status:" + << status << "]: " << content << llendl; LLUploadPermissionsObserver* observer = mObserverHandle.get(); diff --git a/indra/newview/lluploadfloaterobservers.h b/indra/newview/lluploadfloaterobservers.h index 79aad282d7..b43ddb44d9 100644 --- a/indra/newview/lluploadfloaterobservers.h +++ b/indra/newview/lluploadfloaterobservers.h @@ -86,7 +86,7 @@ public: LLUploadModelPremissionsResponder(const LLHandle& observer); - void error(U32 status, const std::string& reason); + void errorWithContent(U32 status, const std::string& reason, const LLSD& content); void result(const LLSD& content); diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp index 5741fab29a..1ac6a90894 100644 --- a/indra/newview/llviewerdisplayname.cpp +++ b/indra/newview/llviewerdisplayname.cpp @@ -59,8 +59,10 @@ class LLSetDisplayNameResponder : public LLHTTPClient::Responder { public: // only care about errors - /*virtual*/ void error(U32 status, const std::string& reason) + /*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { + llwarns << "LLSetDisplayNameResponder error [status:" + << status << "]: " << content << llendl; LLViewerDisplayName::sSetDisplayNameSignal(false, "", LLSD()); LLViewerDisplayName::sSetDisplayNameSignal.disconnect_all_slots(); } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index eec44c7a74..0561e731e7 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -691,12 +691,12 @@ public: } } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { llwarns << "Transport error requesting object cost " - << "HTTP status: " << statusNum << ", reason: " - << reason << "." << llendl; + << "[status: " << statusNum << "]: " + << content << llendl; // TODO*: Error message to user // For now just clear the request from the pending list @@ -780,12 +780,12 @@ public: } } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { llwarns << "Transport error requesting object physics flags " - << "HTTP status: " << statusNum << ", reason: " - << reason << "." << llendl; + << "[status: " << statusNum << "]: " + << content << llendl; // TODO*: Error message to user // For now just clear the request from the pending list diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index e940dda010..b8b53aa6e4 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -210,9 +210,9 @@ public: virtual ~BaseCapabilitiesComplete() { } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - LL_WARNS2("AppInit", "Capabilities") << statusNum << ": " << reason << LL_ENDL; + LL_WARNS2("AppInit", "Capabilities") << "[status:" << statusNum << ":] " << content << LL_ENDL; LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(mRegionHandle); if (regionp) { @@ -278,8 +278,11 @@ public: virtual ~BaseCapabilitiesCompleteTracker() { } - void error(U32 statusNum, const std::string& reason) - { } + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) + { + llwarns << "BaseCapabilitiesCompleteTracker error [status:" + << statusNum << "]: " << content << llendl; + } void result(const LLSD& content) { @@ -1731,9 +1734,9 @@ public: { } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - LL_WARNS2("AppInit", "SimulatorFeatures") << statusNum << ": " << reason << LL_ENDL; + LL_WARNS2("AppInit", "SimulatorFeatures") << "[status:" << statusNum << "]: " << content << LL_ENDL; retry(); } diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 17bb03b889..4ed01f36ab 100755 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -530,10 +530,10 @@ class ViewerStatsResponder : public LLHTTPClient::Responder public: ViewerStatsResponder() { } - void error(U32 statusNum, const std::string& reason) + void errorWithContent(U32 statusNum, const std::string& reason, const LLSD& content) { - llinfos << "ViewerStatsResponder::error " << statusNum << " " - << reason << llendl; + llwarns << "ViewerStatsResponder error [status:" << statusNum << "]: " + << content << llendl; } void result(const LLSD& content) diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 3605383c5c..9be1de4f0e 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2264,7 +2264,7 @@ public: else { LL_WARNS("Avatar") << "Failed " << status << " reason " << reason << LL_ENDL; - error(status,reason); + errorWithContent(status,reason,content); } } @@ -2440,11 +2440,12 @@ public: } // Error - /*virtual*/ void error(U32 status, const std::string& reason) + /*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { if (isAgentAvatarValid()) { - LL_DEBUGS("Avatar") << "failed, will rebake" << llendl; + LL_DEBUGS("Avatar") << "failed, will rebake [status:" + << status << "]: " << content << llendl; forceAppearanceUpdate(); } } diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index bd12328a6b..181735ee30 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -56,7 +56,8 @@ class LLVoiceCallCapResponder : public LLHTTPClient::Responder public: LLVoiceCallCapResponder(const LLUUID& session_id) : mSessionID(session_id) {}; - virtual void error(U32 status, const std::string& reason); // called with bad status codes + // called with bad status codes + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); private: @@ -64,11 +65,10 @@ private: }; -void LLVoiceCallCapResponder::error(U32 status, const std::string& reason) +void LLVoiceCallCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("Voice") << "LLVoiceCallCapResponder::error(" - << status << ": " << reason << ")" - << LL_ENDL; + LL_WARNS("Voice") << "LLVoiceCallCapResponder error [status:" + << status << "]: " << content << LL_ENDL; LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(mSessionID); if ( channelp ) { diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index db0fc3dca7..e112c589e9 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -126,17 +126,18 @@ public: mRetries = retries; } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { + LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, " + << ( (mRetries > 0) ? "retrying" : "too many retries (giving up)" ) + << status << "]: " << content << LL_ENDL; + if ( mRetries > 0 ) { - LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, retrying. status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; - LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision( - mRetries - 1); + LLVivoxVoiceClient::getInstance()->requestVoiceAccountProvision(mRetries - 1); } else { - LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up). status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; LLVivoxVoiceClient::getInstance()->giveUp(); } } @@ -195,18 +196,18 @@ class LLVivoxVoiceClientCapResponder : public LLHTTPClient::Responder public: LLVivoxVoiceClientCapResponder(LLVivoxVoiceClient::state requesting_state) : mRequestingState(requesting_state) {}; - virtual void error(U32 status, const std::string& reason); // called with bad status codes + // called with bad status codes + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); virtual void result(const LLSD& content); private: LLVivoxVoiceClient::state mRequestingState; // state }; -void LLVivoxVoiceClientCapResponder::error(U32 status, const std::string& reason) +void LLVivoxVoiceClientCapResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder::error(" - << status << ": " << reason << ")" - << LL_ENDL; + LL_WARNS("Voice") << "LLVivoxVoiceClientCapResponder error [status:" + << status << "]: " << content << LL_ENDL; LLVivoxVoiceClient::getInstance()->sessionTerminate(); } diff --git a/indra/newview/llwebsharing.cpp b/indra/newview/llwebsharing.cpp index 43b1a320c3..3a80051b9b 100644 --- a/indra/newview/llwebsharing.cpp +++ b/indra/newview/llwebsharing.cpp @@ -68,9 +68,9 @@ public: } } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; } virtual void result(const LLSD& content) @@ -99,7 +99,7 @@ public: /// Left empty to override the default LLSD parsing behaviour. } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { if (HTTP_UNAUTHORIZED == status) { @@ -108,7 +108,7 @@ public: } else { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; LLWebSharing::instance().retryOpenIDAuth(); } @@ -152,9 +152,9 @@ public: } } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; LLWebSharing::instance().retryOpenIDAuth(); } @@ -221,9 +221,9 @@ public: } } - virtual void error(U32 status, const std::string& reason) + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_WARNS("WebSharing") << "Error [" << status << "]: " << reason << LL_ENDL; + LL_WARNS("WebSharing") << "Error [status:" << status << "]: " << content << LL_ENDL; } virtual void result(const LLSD& content) diff --git a/indra/newview/llwlhandlers.cpp b/indra/newview/llwlhandlers.cpp index be3e3ff30e..93eba5b604 100644 --- a/indra/newview/llwlhandlers.cpp +++ b/indra/newview/llwlhandlers.cpp @@ -121,9 +121,11 @@ LLEnvironmentRequestResponder::LLEnvironmentRequestResponder() LLEnvManagerNew::getInstance()->onRegionSettingsResponse(unvalidated_content); } -/*virtual*/ void LLEnvironmentRequestResponder::error(U32 status, const std::string& reason) +/*virtual*/ +void LLEnvironmentRequestResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - LL_INFOS("WindlightCaps") << "Got an error, not using region windlight..." << LL_ENDL; + LL_INFOS("WindlightCaps") << "Got an error, not using region windlight... [status:" + << status << "]: " << content << LL_ENDL; LLEnvManagerNew::getInstance()->onRegionSettingsResponse(LLSD()); } @@ -190,14 +192,15 @@ bool LLEnvironmentApply::initiateRequest(const LLSD& content) LLEnvManagerNew::instance().onRegionSettingsApplyResponse(false); } } -/*virtual*/ void LLEnvironmentApplyResponder::error(U32 status, const std::string& reason) +/*virtual*/ +void LLEnvironmentApplyResponder::errorWithContent(U32 status, const std::string& reason, const LLSD& content) { - std::stringstream msg; - msg << reason << " (Code " << status << ")"; - - LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region! Reason: " << msg << LL_ENDL; + LL_WARNS("WindlightCaps") << "Couldn't apply windlight settings to region! [status:" + << status << "]: " << content << LL_ENDL; LLSD args(LLSD::emptyMap()); + std::stringstream msg; + msg << reason << " (Code " << status << ")"; args["FAIL_REASON"] = msg.str(); LLNotificationsUtil::add("WLRegionApplyFail", args); } diff --git a/indra/newview/llwlhandlers.h b/indra/newview/llwlhandlers.h index 23558876da..598ce6d52a 100644 --- a/indra/newview/llwlhandlers.h +++ b/indra/newview/llwlhandlers.h @@ -47,7 +47,7 @@ class LLEnvironmentRequestResponder: public LLHTTPClient::Responder LOG_CLASS(LLEnvironmentRequestResponder); public: virtual void result(const LLSD& content); - virtual void error(U32 status, const std::string& reason); + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); private: friend class LLEnvironmentRequest; @@ -89,7 +89,8 @@ public: */ virtual void result(const LLSD& content); - virtual void error(U32 status, const std::string& reason); // non-200 errors only + // non-200 errors only + virtual void errorWithContent(U32 status, const std::string& reason, const LLSD& content); private: friend class LLEnvironmentApply; diff --git a/indra/newview/tests/llmediadataclient_test.cpp b/indra/newview/tests/llmediadataclient_test.cpp index 0254c5881f..41cb344808 100644 --- a/indra/newview/tests/llmediadataclient_test.cpp +++ b/indra/newview/tests/llmediadataclient_test.cpp @@ -126,7 +126,9 @@ void LLHTTPClient::post( result[LLTextureEntry::OBJECT_ID_KEY] = body[LLTextureEntry::OBJECT_ID_KEY]; if ( url == FAKE_OBJECT_MEDIA_CAP_URL_503 ) { - responder->error(HTTP_SERVICE_UNAVAILABLE, "fake reason"); + LLSD content; + content["reason"] = "fake reason"; + responder->errorWithContent(HTTP_SERVICE_UNAVAILABLE, "fake reason", content); return; } else if (url == FAKE_OBJECT_MEDIA_NAVIGATE_CAP_URL_ERROR) -- cgit v1.3