diff options
Diffstat (limited to 'indra')
126 files changed, 985 insertions, 337 deletions
| diff --git a/indra/cmake/00-COMPILE-LINK-RUN.txt b/indra/cmake/00-COMPILE-LINK-RUN.txt new file mode 100644 index 0000000000..d08cc2dc0c --- /dev/null +++ b/indra/cmake/00-COMPILE-LINK-RUN.txt @@ -0,0 +1,344 @@ + +    A short guide to compiling, linking, running and debugging issues +    in the viewer and its packaged libraries. + +Introduction + +    A recent pass through some third-party libraries resulted in the +    collection of a lot of information about how things should and +    shouldn't be built in the viewer.  Some of that is presented below +    with hints and rules about doing things well.  What's presented is +    a guideline only.  Not all suggestions are hard rules and you'll +    find exceptions all over.  Some exceptions arise from solid +    reasoning, others may be legacy that hasn't been re-examined. + +    Use good engineering judgement when applying this information. + +Compilation + +  Windows Targets + +    Significant compilation flags and defines follow: + +    ---------------------------------------------------------------------------- +    Option                Release          RelWithDebInfo          Debug +    ---------------------------------------------------------------------------- +    wchar_t             /Zc:wchar_t-             "                   " +    RTL type               /MD                  /MD                 /MDd +    FLoating Point       /fp:fast                "                   " +    Debug Info        /Zi (app/dll), /Z7 (lib)   "                   " +    Optimizer           /O2 /Ob2 /GR       /Od /Ob0 /GR           /Od /GR +    Incr. Link      /INCREMENTAL:NO        /INCREMENTAL       /INCREMENTAL:NO +    Debug                /DEBUG               /DEBUG              /DEBUG +                         /OPT:REF +    Ignore Libs          LIBCMT               LIBCMT      LIBCMT;LIBCMTD;MSVCRT +    Alignment           Default                  "                   " + +    Defines        WIN32                         "                   " +                   _WINDOWS                      "                   " +                   LL_RELEASE=1          LL_RELEASE=1               n/a +                   LL_RELEASE_FOR_DOWNLOAD=1    n/a                 n/a +                   NDEBUG                NDEBUG               _DEBUG +                           n/a                  n/a           LL_DEBUG=1 +                           n/a           LL_RELEASE_WITH_\          n/a +                                         DEBUG_INFO=1 +                           n/a                  n/a           _SCL_SECURE_NO_WARNINGS=1 +                   _SECURE_STL=0         _SECURE_STL=0        _SECURE_STL=0 +                   _HAS_ITERATOR_DEBUGGING=0    n/a                 n/a +                   LL_WINDOWS=1                  "                   " +                   UNICODE                       "                   " +                   _UNICODE                      "                   " +                   WINVER=0x0501                 "                   " +                   _WIN32_WINNT=0x0501           "                   " +                   LL_OS_DRAGDROP_ENABLED=1      "                   " +                   CARES_STATICLIB               "                   " +                   LIB_NDOF=1                    "                   " + +    ---------------------------------------------------------------------------- +    Notes: + +    1.  /Zc:wchar_t-.  Not certain where this comes from.  It may be +    due to a default set of compilation flags in Qt 4.X that then +    propagates outward.  In Qt 5.X, this setting is flipped back to +    default (wchar_t is a built-in).  Other options for dealing with +    this include: + +    http://msdn.microsoft.com/en-us/library/dh8che7s%28v=vs.110%29.aspx + +    Recommend trying to stay with /Zc:wchar_t (the default) when +    adding libraries.  If incompatible, you'll typically get some +    missing ostream '<<' operators or something similar in the stream +    headers. + +    2.  /Z7 (VC 7.0 compatibility symbols) gives us debug information +    in the static libraries we build.  Otherwise builds generate +    vc100.pdb files all over the place which generally aren't useful. +    DLL's and .EXEs are to get /Zi or /ZI with separate .PDB files. +    These .PDB files can then be packaged up in symbol tarballs for +    the crash dump analyzer or used in debugging.  There are issues here +    for VS 2013 (see below). + + +  Mac Targets + +    Fairly straightforward, optimization level is easily changed (may +    be little or negative gain for -O3 and RelWithDebInfo should be +    kicked up to 1 or 2.  Boost debug symbols to dwarf-2 with a goal +    of dwarf-2 in separate dSYM file when building .dylibs and +    executables. + +    ---------------------------------------------------------------------------- +    Option                Release          RelWithDebInfo          Debug +    ---------------------------------------------------------------------------- +    Strip Debug Symbols     On                   "                   " +    During Copy + +    Generate Debug Syms     On                   "                   " + +    Level Debug Syms    -gdwarf-2                "                   " + +    Optimization           -O3                  -O0                 -O0 + +    PIC                -fPIC -DPIC               "                   " + +    Defines        LL_RELEASE=1          LL_RELEASE=1               n/a +                   LL_RELEASE_FOR_DOWNLOAD=1    n/a                 n/a +                   NDEBUG                NDEBUG               _DEBUG +                           n/a                  n/a           LL_DEBUG=1 +                           n/a           LL_RELEASE_WITH_\          n/a +                                         DEBUG_INFO=1 +                   LL_DARWIN=1                   "                   " +                   LL_OS_DRAGDROP_ENABLED=1      "                   " +                   CARES_STATICLIB               "                   " +                   LIB_NDOF=1                    "                   " + +    ---------------------------------------------------------------------------- +    Notes: + +    1.  We’re also building dylibs in a somewhat unusual way.  They’re +    currently being generated with a link path of +    ‘@executable_path/../Resources/<library>’.  If we were to follow +    the recommendations in dyld’s man page, we’d instead reference +    ‘@loader_path/<library>’, use -rpath on the executable link +    (pointing to the ‘Resources’ subdir of the main executable), and +    be able to avoid some symlinking in the .app tree. + +    2.  Use the -headerpad_max_install_names link option on all .dylibs. + + +  Linux Targets + +    Not much variety here. + +    ---------------------------------------------------------------------------- +    Option                Release          RelWithDebInfo          Debug +    ---------------------------------------------------------------------------- +    Debug Level     -g (-g0/1 better?)          -g                  -g +    During Copy + +    Optimization            -O2                 -O0                 -O0 + +    PIC                    -fPIC                 "                   " +    ---------------------------------------------------------------------------- +    Notes: + + +Linking + +    The library update work has generally moved in the direction of +    preferring static libraries over dynamic (Qt4 being the notable +    exception).  It also mostly eliminated the extremely bad practice +    of having multiple versions of a library built into an image. + +    How bad was it?  Very.  Appalling.  A nightmare.  On Windows, at +    least four versions of zlib (1.2.3, 1.2.5, 1.2.6, unknown), three +    versions of Boost (1.45, 1.48, 1.52), two versions of OpenSSL +    (0.9.8q, 1.0.0g) and three different builds of libexpat +    2.0.5/1.5.2 were used.  Mac was worse with five builds or versions +    of zlib, two of PCRE, two of c-ares, and three of OpenSSL.  Linux +    topped that by adding two builds of libpng. + +    DO NOT ALLOW THIS TO HAPPEN AGAIN.  It isn't enough to update a +    library and then stuff a new triplet of S3 URLs into the viewer's +    autobuild.xml.  If you update a library you MUST: + +    *  Update the autobuild.xml of ALL consumers of the library.  In +    the case of zlib, that meant updating freetype, libpng, openssl, +    libxml2, fontconfig, curl, Boost, SDL, llqtwebkit, google-mock and +    colladadom. + +    *  Confirm by test and observation that the consumers actually use +    your library rather than 'call home to mother' and find +    system-supplied versions of your library.  This may consist of +    watching configuration scripts, probing with ldd/depends/otool, +    pulling text out of binaries with 'strings'.  The previously- +    mentioned libraries all have a README.Linden file that gives +    examples specific to the consumer library. + +    *  DO NOT RE-EXPORT LIBRARIES.  Colladadom was the worst offender +    of this rule.  As a shared library, it was re-exporting part, but +    not all, of Boost filesystem and system, some zlib, some PCRE, +    some libxml2 and minizip.  This meant that depending upon link- +    time and run-time symbol resolution, data constructed with one +    version of a library might be processed by a method built in a +    second, incompatible version of the library.  Switching colladadom +    to a static library ended the re-export problem. + +    *  Preventing re-export is not sufficient.  other libraries will +    still be shipped as shared and they can still have Singleton and +    Fragile Base Class issues.  A DLL may be built with a static +    archive of a library that has global data.  That same static +    archive might be linked into the application proper.  An object +    created with a method in the DLL may pass into a method in the +    application where the archive's global data has a second instance +    and no knowledge of the object.  This is a failure due to an +    assumption of Singleton global data which leads to some kind of +    failure.  This is the same effect as when, in Windows, both MSVCRT +    and MSVCRTD get activated in a program.  If you're lucky, some +    asserts fail in that case having to do with file handle global +    data. + + +Running + +    Windows Debug Build.  Seems to have been rendered nearly useless +    by having the LL_CHECK_MEMORY define in llmemory.h calling +    _CrtCheckMemory().  Viewer is almost useful disabling this in +    llvoavatar code alone but not quite. + + +Futures + +  Static Versus Dynamic Libraries + +    One solution to the above linking problems is the use of static +    libraries for everything.  Single version, singleton instancing of +    data, etc.  But it's not the 1950's and we're not running our +    applications on bare metal.  Every platform comes with 100s of +    libraries waiting to interfere with operations by breaking the +    single-version and singleton-data assumption. + +    Additionally, there are libraries that simply expect to be built +    into shared libraries.  Qt4 is one such.  The version we're using +    now, 4.7.1, is actually trying to disable both Webkit and plugin +    modules because we're building it statically on Mac and Linux. +    It's only because of configuration bugs that we're getting the +    functionality out of it that we want. + +    With enough libraries and a single, global namespace, eventually +    there will be collisions and there may not be a warning.  All it +    takes is two programmers who thought that 'FILE * open_file(const +    char *);' was a safe signature to use between compilation units in +    their libraries and glorious debugging sessions are in your +    future.  Having debugged it, you will now become the proud owner +    of a one-off version of one of those libraries that uses a special +    symbol prefix which you will be maintaining forever. + +    Lastly, we have some binary blobs that we must use as delivered. +    Executables can be isolated at run-time if necessary.  Shared +    libraries are a different problem.  They may bring their own +    library dependencies that affect link- and run-time symbol +    resolution and they'll impose that on us according to platform +    rules. + +    So, what to do?  My natural bias for large software is to use +    shared libraries for everything.  It's a path to single-version +    and singleton data and isolates namespaces and prevents +    interactions.  It also has some field serviceability benefits if +    you need to debug some bizarre problem a user has. + +    But there's a local preference for static.  Here, my +    rules-of-thumb are: + +    * Static library used by default. + +    * Shared library where the library must be built shared. + +    * Shared library if that is the only means to enforce the +      single-version and singleton-data requirements. + +    * Shared library *on a case-by-case basis* if the library is also +      provided by the platform and some benefit is plausible.  (An +      example of this is freetype/fontconfig on Linux.  The .so +      versions we build with, and incompletely ship, are inferior in +      behavior to the platform libraries.  By being shared libraries, +      the platform-supplied option is available to all Linux users.) + +    In all cases, beware of cmake which appears to collapse and move +    library references in links.  This can drastically affect symbol +    resolution when there are multiple sources for a symbol. + +  General + +    VS 2013.  The /Z7 flag is rumored to be somewhat broken in 2013. +    But it also sounds like there are explicit controls to name .PDB +    files associated with static archives.  That would make this an +    ideal time to switch to /Zi or /ZI everywhere with explicit naming +    and bring all the .PDBs together. + +    The embedded browser technology (e.g. Qt4 with Webkit) is the +    800-pound gorilla in the viewer.  When starting any major work, +    decide what changes you need here as those changes will propagate +    outwards forcing many other decisions (cf: /Zc:wchar_t- flag). + +    The current package structure (./include, ./lib/release, +    ./lib/debug, etc.) really works against the conventions used by +    configure-like programs.  I wasted a lot of time getting each +    library to work with our structure without having to go back to +    automake/autoconf.  For Linux and Mac (and even for Windows), a +    structure like the following where each grouping is optional would +    probably save some work: + +        ./debug/bin +               /include +               /lib +        ./debug/shared/bin +                      /include +                      /lib +        ./debug/static/bin +                      /include +                      /lib +        ./release/bin +                 /include +                 /lib +        ... + +    In zlib and openssl and in a few of the libraries that consume +    them, I experimented with packaging both static and shared +    libraries and then having the consumer library move the unwanted +    pieces out of the way to use the library type of choice (see +    restore_dylibs() and restore_sos() functions).  It was a bit fussy +    and simplicity and clarity are the keys to maintaining libraries +    in the future. + +    But it did suggest another approach.  The idea is that every build +    pre-stages inputs.  Before anything is built, package pieces are +    copied or symlinked from the 'stage/packages' area to the +    'stage/input' area.  Builds then proceed with a single set of +    -I/-L options for the dependencies.  And products are built and +    installed in a similar output staging structure for the next +    consumer: + +        stage/packages/<package>/[above structure] +        stage/input/{bin,include,lib} +        stage/<package>/[above structure] + +    Next library project.  I'd recommend working on the related set of +    libexpat, apr, aprutil, xmlrpc-epi.  We know libexpat has some +    updates that should improve stability.  Libapr consumes it and it +    could use some /Z7 flag work to get rid of some 1000's of PDB +    warnings and improve our debug symbols. + +    Miscellany to be sorted out: + +    * The packaging of libfreetype and libfontconfig on Linux. +    Determine what the right thing is, do it. + +    * Maybe do something with ICU4C.  Qt5 will require it and a number +    of our packages can consume it typically replacing iconv or some +    other library.  But it is a huge bolus of static data.  It can be +    trimmed, but still. + +    * Revisit openssl.  Package as a shared library?  Replace with +    LibreSSL when available?  Start using platform-supplied crypto? + diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 6a0f7a214c..52b0f4e8b4 100755 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -62,7 +62,7 @@ if (WINDOWS)    add_definitions(        /DLL_WINDOWS=1        /DNOMINMAX -      /DDOM_DYNAMIC +#      /DDOM_DYNAMIC            # For shared library colladadom        /DUNICODE        /D_UNICODE         /GS diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 50ac27d402..25e54b7cbd 100755 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -8,6 +8,7 @@ if (USESYSTEMLIBS)    include(FindBoost)    set(BOOST_CONTEXT_LIBRARY boost_context-mt) +  set(BOOST_COROUTINE_LIBRARY boost_coroutine-mt)    set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)    set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)    set(BOOST_REGEX_LIBRARY boost_regex-mt) @@ -17,10 +18,11 @@ if (USESYSTEMLIBS)  else (USESYSTEMLIBS)    use_prebuilt_binary(boost)    set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) -  set(BOOST_VERSION "1.52") +  set(BOOST_VERSION "1.55")    if (WINDOWS)      if(MSVC80) +      # This should be obsolete at this point        set(BOOST_CONTEXT_LIBRARY             optimized libboost_context-vc80-mt-${BOOST_VERSION}            debug libboost_context-vc80-mt-gd-${BOOST_VERSION}) @@ -47,6 +49,9 @@ else (USESYSTEMLIBS)        set(BOOST_CONTEXT_LIBRARY             optimized libboost_context-mt            debug libboost_context-mt-gd) +      set(BOOST_COROUTINE_LIBRARY  +          optimized libboost_coroutine-mt +          debug libboost_coroutine-mt-gd)        set(BOOST_FILESYSTEM_LIBRARY             optimized libboost_filesystem-mt            debug libboost_filesystem-mt-gd) @@ -70,6 +75,9 @@ else (USESYSTEMLIBS)      set(BOOST_CONTEXT_LIBRARY          optimized boost_context-mt          debug boost_context-mt-d) +    set(BOOST_COROUTINE_LIBRARY +        optimized boost_coroutine-mt +        debug boost_coroutine-mt-d)      set(BOOST_FILESYSTEM_LIBRARY          optimized boost_filesystem-mt          debug boost_filesystem-mt-d) @@ -92,6 +100,9 @@ else (USESYSTEMLIBS)      set(BOOST_CONTEXT_LIBRARY          optimized boost_context-mt          debug boost_context-mt-d) +    set(BOOST_COROUTINE_LIBRARY +        optimized boost_coroutine-mt +        debug boost_coroutine-mt-d)      set(BOOST_FILESYSTEM_LIBRARY          optimized boost_filesystem-mt          debug boost_filesystem-mt-d) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 4f1b6640c2..28202f85d6 100755 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -40,7 +40,6 @@ if(WINDOWS)          libapriconv-1.dll          ssleay32.dll          libeay32.dll -        libcollada14dom22-d.dll          glod.dll              libhunspell.dll          ) @@ -53,7 +52,6 @@ if(WINDOWS)          libapriconv-1.dll          ssleay32.dll          libeay32.dll -        libcollada14dom22.dll          glod.dll          libhunspell.dll          ) @@ -213,15 +211,12 @@ elseif(DARWIN)          libapr-1.dylib          libaprutil-1.0.dylib          libaprutil-1.dylib +        libexception_handler.dylib          libexpat.1.5.2.dylib          libexpat.dylib          libGLOD.dylib -        libllqtwebkit.dylib -        libminizip.a -        libndofdev.dylib          libhunspell-1.3.0.dylib -        libexception_handler.dylib -        libcollada14dom.dylib +        libndofdev.dylib         )      if (FMODEX) @@ -259,35 +254,21 @@ elseif(LINUX)          libapr-1.so.0          libaprutil-1.so.0          libatk-1.0.so -        libboost_context-mt.so.${BOOST_VERSION}.0 -        libboost_filesystem-mt.so.${BOOST_VERSION}.0 -        libboost_program_options-mt.so.${BOOST_VERSION}.0 -        libboost_regex-mt.so.${BOOST_VERSION}.0 -        libboost_signals-mt.so.${BOOST_VERSION}.0 -        libboost_system-mt.so.${BOOST_VERSION}.0 -        libboost_thread-mt.so.${BOOST_VERSION}.0 -        libcollada14dom.so -        libcrypto.so.1.0.0          libdb-5.1.so          libexpat.so          libexpat.so.1 +        libfreetype.so.6.6.2          libfreetype.so.6          libGLOD.so -        libgmock_main.so -        libgmock.so.0          libgmodule-2.0.so          libgobject-2.0.so -        libgtest_main.so -        libgtest.so.0          libhunspell-1.3.so.0.0.0 -        libminizip.so          libopenal.so          libopenjpeg.so -        libssl.so          libuuid.so.16          libuuid.so.16.0.22 -        libssl.so.1.0.0 -        libfontconfig.so.1.4.4 +        libfontconfig.so.1.8.0 +        libfontconfig.so.1         )      if (USE_TCMALLOC) diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index 02c5b37f28..a36485f6d0 100755 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake @@ -7,7 +7,7 @@ if (USESYSTEMLIBS)    pkg_check_modules(FREETYPE REQUIRED freetype2)  else (USESYSTEMLIBS)    use_prebuilt_binary(freetype) -  set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +  set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/freetype2/)    set(FREETYPE_LIBRARIES freetype)  endif (USESYSTEMLIBS) diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake index c4c96a9af7..cac072988e 100755 --- a/indra/cmake/GoogleMock.cmake +++ b/indra/cmake/GoogleMock.cmake @@ -2,7 +2,7 @@  include(Prebuilt)  include(Linking) -use_prebuilt_binary(googlemock) +use_prebuilt_binary(gmock)  set(GOOGLEMOCK_INCLUDE_DIRS       ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 67c2115237..93626f689f 100755 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -6,32 +6,40 @@ include(Boost)  use_prebuilt_binary(colladadom)  use_prebuilt_binary(pcre) +use_prebuilt_binary(libxml2)  set(LLPRIMITIVE_INCLUDE_DIRS      ${LIBS_OPEN_DIR}/llprimitive      )  if (WINDOWS) -    set(LLPRIMITIVE_LIBRARIES +    set(LLPRIMITIVE_LIBRARIES           debug llprimitive          optimized llprimitive -        debug libcollada14dom22-d -        optimized libcollada14dom22 +        debug libcollada14dom23-sd +        optimized libcollada14dom23-s +        libxml2_a +        debug pcrecppd +        optimized pcrecpp +        debug pcred +        optimized pcre          ${BOOST_SYSTEM_LIBRARIES}          ) -elseif (LINUX) -    use_prebuilt_binary(libxml2) -    set(LLPRIMITIVE_LIBRARIES +elseif (DARWIN) +    set(LLPRIMITIVE_LIBRARIES           llprimitive -        collada14dom +        debug collada14dom-d +        optimized collada14dom          minizip          xml2          pcrecpp          pcre +        iconv           # Required by libxml2          ) -else (WINDOWS) -    set(LLPRIMITIVE_LIBRARIES +elseif (LINUX) +    set(LLPRIMITIVE_LIBRARIES           llprimitive -        collada14dom +        debug collada14dom-d +        optimized collada14dom          minizip          xml2          pcrecpp diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index b9c9e531fc..74fe3f1137 100755 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -6,6 +6,7 @@ set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")  include(Variables)  set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib) +set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins)  set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)  set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)  if (WINDOWS) diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index 5b469f74f9..eb548bdcc1 100755 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -7,7 +7,7 @@ set(OpenSSL_FIND_REQUIRED ON)  if (USESYSTEMLIBS)    include(FindOpenSSL)  else (USESYSTEMLIBS) -  use_prebuilt_binary(openSSL) +  use_prebuilt_binary(openssl)    if (WINDOWS)      set(OPENSSL_LIBRARIES ssleay32 libeay32)    else (WINDOWS) @@ -17,7 +17,7 @@ else (USESYSTEMLIBS)  endif (USESYSTEMLIBS)  if (LINUX) -  set(CRYPTO_LIBRARIES crypto) +  set(CRYPTO_LIBRARIES crypto dl)  elseif (DARWIN)    set(CRYPTO_LIBRARIES crypto)  endif (LINUX) diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake index 173d59391e..248a875a19 100755 --- a/indra/cmake/PNG.cmake +++ b/indra/cmake/PNG.cmake @@ -9,13 +9,26 @@ if (USESYSTEMLIBS)  else (USESYSTEMLIBS)    use_prebuilt_binary(libpng)    if (WINDOWS) -    set(PNG_LIBRARIES libpng15) -    set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng15) +    set(PNG_LIBRARIES libpng16) +    set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)    elseif(DARWIN) -    set(PNG_LIBRARIES png15) -    set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng15) +    set(PNG_LIBRARIES png16) +    set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)    else() -    set(PNG_LIBRARIES png15) -    set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng15) +    # +    # When we have updated static libraries in competition with older +    # shared libraries and we want the former to win, we need to do some +    # extra work.  The *_PRELOAD_ARCHIVES settings are invoked early +    # and will pull in the entire archive to the binary giving it  +    # priority in symbol resolution.  Beware of cmake moving the +    # achive load itself to another place on the link command line.  If +    # that happens, you can try something like -Wl,-lpng16 here to hide +    # the archive.  Also be aware that the linker will not tolerate a +    # second whole-archive load of the archive.  See viewer's +    # CMakeLists.txt for more information. +    # +    set(PNG_PRELOAD_ARCHIVES -Wl,--whole-archive png16 -Wl,--no-whole-archive) +    set(PNG_LIBRARIES png16) +    set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)    endif()  endif (USESYSTEMLIBS) diff --git a/indra/cmake/WebKitLibPlugin.cmake b/indra/cmake/WebKitLibPlugin.cmake index 76f2c148db..f7c548a2fd 100755 --- a/indra/cmake/WebKitLibPlugin.cmake +++ b/indra/cmake/WebKitLibPlugin.cmake @@ -1,6 +1,7 @@  # -*- cmake -*-  include(Linking)  include(Prebuilt) +include(OpenSSL)  if (USESYSTEMLIBS)    # The minimal version, 4.4.3, is rather arbitrary: it's the version in Debian/Lenny. @@ -36,27 +37,32 @@ endif (USESYSTEMLIBS)  if (WINDOWS)      set(WEBKIT_PLUGIN_LIBRARIES  -    debug llqtwebkitd -    debug QtWebKitd4 -    debug QtOpenGLd4 -    debug QtNetworkd4 -    debug QtGuid4 -    debug QtCored4 -    debug qtmaind -    optimized llqtwebkit -    optimized QtWebKit4 -    optimized QtOpenGL4 -    optimized QtNetwork4 -    optimized QtGui4 -    optimized QtCore4 -    optimized qtmain +        debug llqtwebkitd +        debug QtWebKitd4 +        debug QtOpenGLd4 +        debug QtNetworkd4 +        debug QtGuid4 +        debug QtCored4 +        debug qtmaind +        optimized llqtwebkit +        optimized QtWebKit4 +        optimized QtOpenGL4 +        optimized QtNetwork4 +        optimized QtGui4 +        optimized QtCore4 +        optimized qtmain      )  elseif (DARWIN)      set(WEBKIT_PLUGIN_LIBRARIES -        optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib -        debug ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib -        ) +        ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.a +        ${ARCH_PREBUILT_DIRS_RELEASE}/libQtWebKit.4.dylib +        ${ARCH_PREBUILT_DIRS_RELEASE}/libQtOpenGL.4.dylib +        ${ARCH_PREBUILT_DIRS_RELEASE}/libQtNetwork.4.dylib +        ${ARCH_PREBUILT_DIRS_RELEASE}/libQtGui.4.dylib +        ${ARCH_PREBUILT_DIRS_RELEASE}/libQtCore.4.dylib +       )  elseif (LINUX) +    # *HUH:  What does this do?      set(WEBKIT_PLUGIN_LIBRARIES ${LLQTWEBKIT_LIBRARY} ${QT_LIBRARIES} ${QT_PLUGIN_LIBRARIES})      set(WEBKIT_PLUGIN_LIBRARIES          llqtwebkit @@ -68,9 +74,10 @@ elseif (LINUX)          QtWebKit          QtOpenGL          QtNetwork +        ${OPENSSL_LIBRARIES}          QtGui          QtCore -        jscore +#        jscore  #        qgif  #        qjpeg  #        jpeg diff --git a/indra/cmake/ZLIB.cmake b/indra/cmake/ZLIB.cmake index b99a8644c9..6cff0753b2 100755 --- a/indra/cmake/ZLIB.cmake +++ b/indra/cmake/ZLIB.cmake @@ -13,10 +13,23 @@ else (USESYSTEMLIBS)      set(ZLIB_LIBRARIES         debug zlibd        optimized zlib) -  else (WINDOWS) +  elseif (LINUX) +    # +    # When we have updated static libraries in competition with older +    # shared libraries and we want the former to win, we need to do some +    # extra work.  The *_PRELOAD_ARCHIVES settings are invoked early +    # and will pull in the entire archive to the binary giving it  +    # priority in symbol resolution.  Beware of cmake moving the +    # achive load itself to another place on the link command line.  If +    # that happens, you can try something like -Wl,-lz here to hide +    # the archive.  Also be aware that the linker will not tolerate a +    # second whole-archive load of the archive.  See viewer's +    # CMakeLists.txt for more information. +    # +    set(ZLIB_PRELOAD_ARCHIVES -Wl,--whole-archive z -Wl,--no-whole-archive) +    set(ZLIB_LIBRARIES z) +  elseif (DARWIN)      set(ZLIB_LIBRARIES z)    endif (WINDOWS) -  if (WINDOWS OR LINUX) -    set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib) -  endif (WINDOWS OR LINUX) +  set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib)  endif (USESYSTEMLIBS) diff --git a/indra/edit-me-to-trigger-new-build.txt b/indra/edit-me-to-trigger-new-build.txt index c63ad74682..6f2087d580 100755 --- a/indra/edit-me-to-trigger-new-build.txt +++ b/indra/edit-me-to-trigger-new-build.txt @@ -1 +1,2 @@  2014-02-25 10:34 + diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 8eeb186936..763f5a3521 100755 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -301,7 +301,7 @@ if (LL_TESTS)    LL_ADD_INTEGRATION_TEST(llunits "" "${test_libs}")    LL_ADD_INTEGRATION_TEST(stringize "" "${test_libs}")    LL_ADD_INTEGRATION_TEST(lleventdispatcher "" "${test_libs}") -  LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs};${BOOST_CONTEXT_LIBRARY}") +  LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs};${BOOST_CONTEXT_LIBRARY};${BOOST_COROUTINE_LIBRARY};${BOOST_SYSTEM_LIBRARY}")    LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}")    LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}")    LL_ADD_INTEGRATION_TEST(llstreamqueue "" "${test_libs}") diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index db52f2b1f4..7d1d541a4b 100755 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -257,7 +257,8 @@ inline void ll_memcpy_nonaliased_aligned_16(char* __restrict dst, const char* __  	assert((bytes % sizeof(F32))== 0);   	ll_assert_aligned(src,16);  	ll_assert_aligned(dst,16); -	assert((src < dst) ? ((src + bytes) < dst) : ((dst + bytes) < src)); + +	assert((src < dst) ? ((src + bytes) <= dst) : ((dst + bytes) <= src));  	assert(bytes%16==0);  	char* end = dst + bytes; diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index d6db20d7a3..ec7b21d8b6 100755 --- a/indra/llmessage/lltransfermanager.cpp +++ b/indra/llmessage/lltransfermanager.cpp @@ -1260,9 +1260,13 @@ bool LLTransferTarget::addDelayedPacket(  		size);  #ifdef _DEBUG -	if (mDelayedPacketMap.find(packet_id) != mDelayedPacketMap.end()) +    transfer_packet_map::iterator iter = mDelayedPacketMap.find(packet_id); +	if (iter != mDelayedPacketMap.end())  	{ -		LL_ERRS() << "Packet ALREADY in delayed packet map!" << LL_ENDL; +        if (!(iter->second->mSize == size) && !(iter->second->mDatap == datap)) +        { +            LL_ERRS() << "Packet ALREADY in delayed packet map!" << LL_ENDL; +        }  	}  #endif diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt index 0c1c3d800e..5a8fe90bdd 100755 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/webkit/CMakeLists.txt @@ -121,12 +121,12 @@ if (DARWIN)    )    # copy the webkit dylib to the build directory -  add_custom_command( -    TARGET media_plugin_webkit POST_BUILD -#    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib -    COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ -    DEPENDS media_plugin_webkit ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib -    ) +#   add_custom_command( +#     TARGET media_plugin_webkit POST_BUILD +# #    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib +#     COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ +#     DEPENDS media_plugin_webkit ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib +#     )  endif (DARWIN) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 3e296c8d9f..b81b2aa9cf 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -47,6 +47,8 @@ include(VisualLeakDetector)  include(GLOD)  include(CMakeCopyIfDifferent)  include(LLAppearance) +include(PNG) +include(ZLIB)  if (NOT HAVOK_TPV)     # When using HAVOK_TPV, the library is precompiled, so no need for this @@ -1891,13 +1893,37 @@ else (WINDOWS)          )  endif (WINDOWS) -# *NOTE - this list is very sensitive to ordering, test carefully on all +# *NOTE: - this list is very sensitive to ordering, test carefully on all  # platforms if you change the releative order of the entries here.  # In particular, cmake 2.6.4 (when buidling with linux/makefile generators)  # appears to sometimes de-duplicate redundantly listed dependencies improperly.  # To work around this, higher level modules should be listed before the modules  # that they depend upon. -brad +# +# *NOTE:  On mixing system shared libraries and updated static archives. +# We use a number of libraries that have an existence as system libraries, +# internal-use libraries and applications libraries.  The most-referenced +# one of these being libz where you can find four or more versions in play +# at once.  On Linux, libz can be found at link and run time via a number +# of paths: +#      +#      => -lfreetype +#        => libz.so.1 (on install machine, not build) +#      => -lSDL +#        => libz.so.1 (on install machine, not build) +#      => -lgdk-x11-2.0 +#        => libz.so.1 +#      => -lz +# +# We generally want the newest version of the library to provide all symbol +# resolution.  To that end, when using static archives, the *_PRELOAD_ARCHIVES +# variables, PNG_PRELOAD_ARCHIVES and ZLIB_PRELOAD_ARCHIVES, get the archives +# dumped into the target binary and runtime lookup will find the most +# modern version. +  target_link_libraries(${VIEWER_BINARY_NAME} +    ${PNG_PRELOAD_ARCHIVES} +    ${ZLIB_PRELOAD_ARCHIVES}      ${UPDATER_LIBRARIES}      ${GOOGLE_PERFTOOLS_LIBRARIES}      ${LLAUDIO_LIBRARIES} @@ -1924,6 +1950,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}      ${BOOST_PROGRAM_OPTIONS_LIBRARY}      ${BOOST_REGEX_LIBRARY}      ${BOOST_CONTEXT_LIBRARY} +    ${BOOST_COROUTINE_LIBRARY}      ${DBUSGLIB_LIBRARIES}      ${OPENGL_LIBRARIES}      ${FMODWRAPPER_LIBRARY} # must come after LLAudio diff --git a/indra/newview/icons/beta/secondlife_128.png b/indra/newview/icons/beta/secondlife_128.pngBinary files differ index fa42aa764b..af5ae63335 100755 --- a/indra/newview/icons/beta/secondlife_128.png +++ b/indra/newview/icons/beta/secondlife_128.png diff --git a/indra/newview/icons/beta/secondlife_16.png b/indra/newview/icons/beta/secondlife_16.pngBinary files differ index ff648cf3fc..9e6305d98f 100755 --- a/indra/newview/icons/beta/secondlife_16.png +++ b/indra/newview/icons/beta/secondlife_16.png diff --git a/indra/newview/icons/beta/secondlife_256.png b/indra/newview/icons/beta/secondlife_256.pngBinary files differ index 245e2c3e9f..b0814fc180 100755 --- a/indra/newview/icons/beta/secondlife_256.png +++ b/indra/newview/icons/beta/secondlife_256.png diff --git a/indra/newview/icons/beta/secondlife_32.png b/indra/newview/icons/beta/secondlife_32.pngBinary files differ index fd7f46bf4d..a00b3cf53c 100755 --- a/indra/newview/icons/beta/secondlife_32.png +++ b/indra/newview/icons/beta/secondlife_32.png diff --git a/indra/newview/icons/beta/secondlife_48.png b/indra/newview/icons/beta/secondlife_48.pngBinary files differ index cc3a795e2b..551587b1cd 100755 --- a/indra/newview/icons/beta/secondlife_48.png +++ b/indra/newview/icons/beta/secondlife_48.png diff --git a/indra/newview/icons/beta/secondlife_512.png b/indra/newview/icons/beta/secondlife_512.pngBinary files differ index a959bd9a9e..99226de74e 100755 --- a/indra/newview/icons/beta/secondlife_512.png +++ b/indra/newview/icons/beta/secondlife_512.png diff --git a/indra/newview/icons/project/secondlife_128.png b/indra/newview/icons/project/secondlife_128.pngBinary files differ index d67b8228f9..b1b4997306 100755 --- a/indra/newview/icons/project/secondlife_128.png +++ b/indra/newview/icons/project/secondlife_128.png diff --git a/indra/newview/icons/project/secondlife_16.png b/indra/newview/icons/project/secondlife_16.pngBinary files differ index 91493a033c..7d3d74b534 100755 --- a/indra/newview/icons/project/secondlife_16.png +++ b/indra/newview/icons/project/secondlife_16.png diff --git a/indra/newview/icons/project/secondlife_256.png b/indra/newview/icons/project/secondlife_256.pngBinary files differ index cccfaf7cba..88ad959275 100755 --- a/indra/newview/icons/project/secondlife_256.png +++ b/indra/newview/icons/project/secondlife_256.png diff --git a/indra/newview/icons/project/secondlife_32.png b/indra/newview/icons/project/secondlife_32.pngBinary files differ index ad7b33f789..e55f75e1dd 100755 --- a/indra/newview/icons/project/secondlife_32.png +++ b/indra/newview/icons/project/secondlife_32.png diff --git a/indra/newview/icons/project/secondlife_48.png b/indra/newview/icons/project/secondlife_48.pngBinary files differ index 104a931fbc..c29703e164 100755 --- a/indra/newview/icons/project/secondlife_48.png +++ b/indra/newview/icons/project/secondlife_48.png diff --git a/indra/newview/icons/project/secondlife_512.png b/indra/newview/icons/project/secondlife_512.pngBinary files differ index 74e2fa9bc6..4fa3474d70 100755 --- a/indra/newview/icons/project/secondlife_512.png +++ b/indra/newview/icons/project/secondlife_512.png diff --git a/indra/newview/icons/release/secondlife_128.png b/indra/newview/icons/release/secondlife_128.pngBinary files differ index bcf94dcae8..4c9544f498 100755 --- a/indra/newview/icons/release/secondlife_128.png +++ b/indra/newview/icons/release/secondlife_128.png diff --git a/indra/newview/icons/release/secondlife_16.png b/indra/newview/icons/release/secondlife_16.pngBinary files differ index 90311ea8b0..bb3168b8be 100755 --- a/indra/newview/icons/release/secondlife_16.png +++ b/indra/newview/icons/release/secondlife_16.png diff --git a/indra/newview/icons/release/secondlife_256.png b/indra/newview/icons/release/secondlife_256.pngBinary files differ index a89fb4c74f..bece338a90 100755 --- a/indra/newview/icons/release/secondlife_256.png +++ b/indra/newview/icons/release/secondlife_256.png diff --git a/indra/newview/icons/release/secondlife_32.png b/indra/newview/icons/release/secondlife_32.pngBinary files differ index 530e8fc80c..736359c147 100755 --- a/indra/newview/icons/release/secondlife_32.png +++ b/indra/newview/icons/release/secondlife_32.png diff --git a/indra/newview/icons/release/secondlife_48.png b/indra/newview/icons/release/secondlife_48.pngBinary files differ index cb33c51f8a..07d39ae585 100755 --- a/indra/newview/icons/release/secondlife_48.png +++ b/indra/newview/icons/release/secondlife_48.png diff --git a/indra/newview/icons/release/secondlife_512.png b/indra/newview/icons/release/secondlife_512.pngBinary files differ index f291e60586..53d1643f45 100755 --- a/indra/newview/icons/release/secondlife_512.png +++ b/indra/newview/icons/release/secondlife_512.png diff --git a/indra/newview/icons/test/secondlife_128.png b/indra/newview/icons/test/secondlife_128.pngBinary files differ index 019f65db28..486772b6d3 100755 --- a/indra/newview/icons/test/secondlife_128.png +++ b/indra/newview/icons/test/secondlife_128.png diff --git a/indra/newview/icons/test/secondlife_16.png b/indra/newview/icons/test/secondlife_16.pngBinary files differ index 91493a033c..7d3d74b534 100755 --- a/indra/newview/icons/test/secondlife_16.png +++ b/indra/newview/icons/test/secondlife_16.png diff --git a/indra/newview/icons/test/secondlife_256.png b/indra/newview/icons/test/secondlife_256.pngBinary files differ index f402424c51..56c781788d 100755 --- a/indra/newview/icons/test/secondlife_256.png +++ b/indra/newview/icons/test/secondlife_256.png diff --git a/indra/newview/icons/test/secondlife_32.png b/indra/newview/icons/test/secondlife_32.pngBinary files differ index 80d6efe13d..476029db61 100755 --- a/indra/newview/icons/test/secondlife_32.png +++ b/indra/newview/icons/test/secondlife_32.png diff --git a/indra/newview/icons/test/secondlife_48.png b/indra/newview/icons/test/secondlife_48.pngBinary files differ index bba938feba..d7de7849f9 100755 --- a/indra/newview/icons/test/secondlife_48.png +++ b/indra/newview/icons/test/secondlife_48.png diff --git a/indra/newview/icons/test/secondlife_512.png b/indra/newview/icons/test/secondlife_512.pngBinary files differ index 10ff65312b..a4b1e4974c 100755 --- a/indra/newview/icons/test/secondlife_512.png +++ b/indra/newview/icons/test/secondlife_512.png diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 9ea46cab68..425e339713 100755 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -4,7 +4,7 @@   *   * $LicenseInfo:firstyear=2000&license=viewerlgpl$   * Second Life Viewer Source Code - * Copyright (C) 2012-2013, Linden Research, Inc. + * Copyright (C) 2012-2014, 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 @@ -244,6 +244,13 @@ LLTrace::EventStatHandle<F64Milliseconds > LLTextureFetch::sCacheReadLatency("te  static const S32 HTTP_REQUESTS_IN_QUEUE_HIGH_WATER = 40;		// Maximum requests to have active in HTTP  static const S32 HTTP_REQUESTS_IN_QUEUE_LOW_WATER = 20;			// Active level at which to refill +// BUG-3323/SH-4375 +// *NOTE:  This is a heuristic value.  Texture fetches have a habit of using a +// value of 32MB to indicate 'get the rest of the image'.  Certain ISPs and +// network equipment get confused when they see this in a Range: header.  So, +// if the request end is beyond this value, we issue an open-ended Range: +// request (e.g. 'Range: <start>-') which seems to fix the problem. +static const S32 HTTP_REQUESTS_RANGE_END_MAX = 20000000;  ////////////////////////////////////////////////////////////////////////////// @@ -266,6 +273,9 @@ static const char* e_state_name[] =  	"DONE"  }; +// Log scope +static const char * const LOG_TXT = "Texture"; +  class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler  { @@ -926,7 +936,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,  	calcWorkPriority();  	mType = host.isOk() ? LLImageBase::TYPE_AVATAR_BAKE : LLImageBase::TYPE_NORMAL; -// 	LL_INFOS() << "Create: " << mID << " mHost:" << host << " Discard=" << discard << LL_ENDL; +// 	LL_INFOS(LOG_TXT) << "Create: " << mID << " mHost:" << host << " Discard=" << discard << LL_ENDL;  	if (!mFetcher->mDebugPause)  	{  		U32 work_priority = mWorkPriority | LLWorkerThread::PRIORITY_HIGH; @@ -937,7 +947,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,  LLTextureFetchWorker::~LLTextureFetchWorker()  { -// 	LL_INFOS() << "Destroy: " << mID +// 	LL_INFOS(LOG_TXT) << "Destroy: " << mID  // 			<< " Decoded=" << mDecodedDiscard  // 			<< " Requested=" << mRequestedDiscard  // 			<< " Desired=" << mDesiredDiscard << LL_ENDL; @@ -1001,7 +1011,7 @@ void LLTextureFetchWorker::setupPacketData()  		mFirstPacket = (data_size - FIRST_PACKET_SIZE) / MAX_IMG_PACKET_SIZE + 1;  		if (FIRST_PACKET_SIZE + (mFirstPacket-1) * MAX_IMG_PACKET_SIZE != data_size)  		{ -			LL_WARNS() << "Bad CACHED TEXTURE size: " << data_size << " removing." << LL_ENDL; +			LL_WARNS(LOG_TXT) << "Bad CACHED TEXTURE size: " << data_size << " removing." << LL_ENDL;  			removeFromCache();  			resetFormattedData();  			clearPackets(); @@ -1124,14 +1134,14 @@ bool LLTextureFetchWorker::doWork(S32 param)  	{  		if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)  		{ -			LL_DEBUGS("Texture") << mID << " abort: mImagePriority < F_ALMOST_ZERO" << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << mID << " abort: mImagePriority < F_ALMOST_ZERO" << LL_ENDL;  			return true; // abort  		}  	}  	if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)  	{  		//nowhere to get data, abort. -		LL_WARNS("Texture") << mID << " abort, nowhere to get data" << LL_ENDL; +		LL_WARNS(LOG_TXT) << mID << " abort, nowhere to get data" << LL_ENDL;  		return true ;  	} @@ -1177,8 +1187,8 @@ bool LLTextureFetchWorker::doWork(S32 param)  		setState(LOAD_FROM_TEXTURE_CACHE);  		mInCache = FALSE;  		mDesiredSize = llmax(mDesiredSize, TEXTURE_CACHE_ENTRY_SIZE); // min desired size is TEXTURE_CACHE_ENTRY_SIZE -		LL_DEBUGS("Texture") << mID << ": Priority: " << llformat("%8.0f",mImagePriority) -							 << " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL; +		LL_DEBUGS(LOG_TXT) << mID << ": Priority: " << llformat("%8.0f",mImagePriority) +						   << " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;  		// fall through  	} @@ -1246,7 +1256,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				//  				//This should never happen  				// -				LL_DEBUGS("Texture") << mID << " this should never happen" << LL_ENDL; +				LL_DEBUGS(LOG_TXT) << mID << " this should never happen" << LL_ENDL;  				return false;  			}  		} @@ -1267,15 +1277,15 @@ bool LLTextureFetchWorker::doWork(S32 param)  			mLoadedDiscard = mDesiredDiscard;  			if (mLoadedDiscard < 0)  			{ -				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard -									<< ", should be >=0" << LL_ENDL; +				LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard +								  << ", should be >=0" << LL_ENDL;  			}  			setState(DECODE_IMAGE);  			mInCache = TRUE;  			mWriteToCacheState = NOT_WRITE ; -			LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize() -								 << " Size: " << llformat("%dx%d",mFormattedImage->getWidth(),mFormattedImage->getHeight()) -								 << " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize() +							   << " Size: " << llformat("%dx%d",mFormattedImage->getWidth(),mFormattedImage->getHeight()) +							   << " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;  			record(LLTextureFetch::sCacheHitRate, LLUnits::Ratio::fromValue(1));  		}  		else @@ -1283,13 +1293,13 @@ bool LLTextureFetchWorker::doWork(S32 param)  			if (mUrl.compare(0, 7, "file://") == 0)  			{  				// failed to load local file, we're done. -				LL_WARNS("Texture") << mID << ": abort, failed to load local file " << mUrl << LL_ENDL; +				LL_WARNS(LOG_TXT) << mID << ": abort, failed to load local file " << mUrl << LL_ENDL;  				return true;  			}  			// need more data  			else  			{ -				LL_DEBUGS("Texture") << mID << ": Not in Cache" << LL_ENDL; +				LL_DEBUGS(LOG_TXT) << mID << ": Not in Cache" << LL_ENDL;  				setState(LOAD_FROM_NETWORK);  			} @@ -1306,11 +1316,11 @@ bool LLTextureFetchWorker::doWork(S32 param)  		{  			if (wait_seconds <= 0.0)  			{ -				LL_INFOS() << mID << " retrying now" << LL_ENDL; +				LL_INFOS(LOG_TXT) << mID << " retrying now" << LL_ENDL;  			}  			else  			{ -				//LL_INFOS() << mID << " waiting to retry for " << wait_seconds << " seconds" << LL_ENDL; +				//LL_INFOS(LOG_TXT) << mID << " waiting to retry for " << wait_seconds << " seconds" << LL_ENDL;  				return false;  			}  		} @@ -1333,7 +1343,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				{  					if (mFTType != FTT_DEFAULT)  					{ -						LL_WARNS() << "trying to seek a non-default texture on the sim. Bad!" << LL_ENDL; +						LL_WARNS(LOG_TXT) << "trying to seek a non-default texture on the sim. Bad!" << LL_ENDL;  					}  					setUrl(http_url + "/?texture_id=" + mID.asString().c_str());  					mWriteToCacheState = CAN_WRITE ; //because this texture has a fixed texture id. @@ -1346,7 +1356,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  			else  			{  				// This will happen if not logged in or if a region deoes not have HTTP Texture enabled -				//LL_WARNS() << "Region not found for host: " << mHost << LL_ENDL; +				//LL_WARNS(LOG_TXT) << "Region not found for host: " << mHost << LL_ENDL;  				mCanUseHTTP = false;  			}  		} @@ -1400,20 +1410,20 @@ bool LLTextureFetchWorker::doWork(S32 param)  		}  		if (processSimulatorPackets())  		{ -			LL_DEBUGS("Texture") << mID << ": Loaded from Sim. Bytes: " << mFormattedImage->getDataSize() << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << mID << ": Loaded from Sim. Bytes: " << mFormattedImage->getDataSize() << LL_ENDL;  			mFetcher->removeFromNetworkQueue(this, false);  			if (mFormattedImage.isNull() || !mFormattedImage->getDataSize())  			{  				// processSimulatorPackets() failed -// 				LL_WARNS() << "processSimulatorPackets() failed to load buffer" << LL_ENDL; -				LL_WARNS("Texture") << mID << " processSimulatorPackets() failed to load buffer" << LL_ENDL; +// 				LL_WARNS(LOG_TXT) << "processSimulatorPackets() failed to load buffer" << LL_ENDL; +				LL_WARNS(LOG_TXT) << mID << " processSimulatorPackets() failed to load buffer" << LL_ENDL;  				return true; // failed  			}  			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);  			if (mLoadedDiscard < 0)  			{ -				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard -									<< ", should be >=0" << LL_ENDL; +				LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard +								  << ", should be >=0" << LL_ENDL;  			}  			setState(DECODE_IMAGE);  			mWriteToCacheState = SHOULD_WRITE; @@ -1463,7 +1473,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  		if (! mCanUseHTTP)  		{  			releaseHttpSemaphore(); -			LL_WARNS("Texture") << mID << " abort: SEND_HTTP_REQ but !mCanUseHTTP" << LL_ENDL; +			LL_WARNS(LOG_TXT) << mID << " abort: SEND_HTTP_REQ but !mCanUseHTTP" << LL_ENDL;  			return true; // abort  		} @@ -1482,8 +1492,8 @@ bool LLTextureFetchWorker::doWork(S32 param)  					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);  					if (mLoadedDiscard < 0)  					{ -						LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard -											<< ", should be >=0" << LL_ENDL; +						LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard +										  << ", should be >=0" << LL_ENDL;  					}  					setState(DECODE_IMAGE);  					releaseHttpSemaphore(); @@ -1492,7 +1502,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				else  				{  					releaseHttpSemaphore(); -					LL_WARNS("Texture") << mID << " SEND_HTTP_REQ abort: cur_size " << cur_size << " <=0" << LL_ENDL; +					LL_WARNS(LOG_TXT) << mID << " SEND_HTTP_REQ abort: cur_size " << cur_size << " <=0" << LL_ENDL;  					return true; // abort.  				}  			} @@ -1523,10 +1533,10 @@ bool LLTextureFetchWorker::doWork(S32 param)  			mLoaded = FALSE;  			mGetStatus = LLCore::HttpStatus();  			mGetReason.clear(); -			LL_DEBUGS("Texture") << "HTTP GET: " << mID << " Offset: " << mRequestedOffset -								 << " Bytes: " << mRequestedSize -								 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << mFetcher->mMaxBandwidth -								 << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << "HTTP GET: " << mID << " Offset: " << mRequestedOffset +							   << " Bytes: " << mRequestedSize +							   << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << mFetcher->mMaxBandwidth +							   << LL_ENDL;  			// Will call callbackHttpGet when curl request completes  			// Only server bake images use the returned headers currently, for getting retry-after field. @@ -1535,14 +1545,16 @@ bool LLTextureFetchWorker::doWork(S32 param)  																	  mWorkPriority,  																	  mUrl,  																	  mRequestedOffset, -																	  mRequestedSize, +																	  (mRequestedOffset + mRequestedSize) > HTTP_REQUESTS_RANGE_END_MAX +																	  ? 0 +																	  : mRequestedSize,  																	  options,  																	  mFetcher->mHttpHeaders,  																	  this);  		}  		if (LLCORE_HTTP_HANDLE_INVALID == mHttpHandle)  		{ -			LL_WARNS() << "HTTP GET request failed for " << mID << LL_ENDL; +			LL_WARNS(LOG_TXT) << "HTTP GET request failed for " << mID << LL_ENDL;  			resetFormattedData();  			releaseHttpSemaphore();  			return true; // failed @@ -1570,7 +1582,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				{  					if (mFTType != FTT_MAP_TILE)  					{ -						LL_WARNS() << "Texture missing from server (404): " << mUrl << LL_ENDL; +						LL_WARNS(LOG_TXT) << "Texture missing from server (404): " << mUrl << LL_ENDL;  					}  					if(mWriteToCacheState == NOT_WRITE) //map tiles or server bakes @@ -1579,7 +1591,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  						releaseHttpSemaphore();  						if (mFTType != FTT_MAP_TILE)  						{ -							LL_WARNS("Texture") << mID << " abort: WAIT_HTTP_REQ not found" << LL_ENDL; +							LL_WARNS(LOG_TXT) << mID << " abort: WAIT_HTTP_REQ not found" << LL_ENDL;  						}  						return true;   					} @@ -1597,11 +1609,11 @@ bool LLTextureFetchWorker::doWork(S32 param)  				}  				else if (http_service_unavail == mGetStatus)  				{ -					LL_INFOS_ONCE("Texture") << "Texture server busy (503): " << mUrl << LL_ENDL; -					LL_INFOS() << "503: HTTP GET failed for: " << mUrl -							<< " Status: " << mGetStatus.toHex() -							<< " Reason: '" << mGetReason << "'" -							<< LL_ENDL; +					LL_INFOS_ONCE(LOG_TXT) << "Texture server busy (503): " << mUrl << LL_ENDL; +					LL_INFOS(LOG_TXT) << "503: HTTP GET failed for: " << mUrl +									  << " Status: " << mGetStatus.toHex() +									  << " Reason: '" << mGetReason << "'" +									  << LL_ENDL;  				}  				else if (http_not_sat == mGetStatus)  				{ @@ -1610,10 +1622,10 @@ bool LLTextureFetchWorker::doWork(S32 param)  				}  				else  				{ -					LL_INFOS() << "HTTP GET failed for: " << mUrl -							<< " Status: " << mGetStatus.toTerseString() -							<< " Reason: '" << mGetReason << "'" -							<< LL_ENDL; +					LL_INFOS(LOG_TXT) << "HTTP GET failed for: " << mUrl +									  << " Status: " << mGetStatus.toTerseString() +									  << " Reason: '" << mGetReason << "'" +									  << LL_ENDL;  				}  				if (mFTType != FTT_SERVER_BAKE) @@ -1627,8 +1639,8 @@ bool LLTextureFetchWorker::doWork(S32 param)  					setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);  					if (mLoadedDiscard < 0)  					{ -						LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard -											<< ", should be >=0" << LL_ENDL; +						LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard +										  << ", should be >=0" << LL_ENDL;  					}  					setState(DECODE_IMAGE);  					releaseHttpSemaphore(); @@ -1639,7 +1651,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				resetFormattedData();  				setState(DONE);  				releaseHttpSemaphore(); -				LL_WARNS("Texture") << mID << " abort: fail harder" << LL_ENDL; +				LL_WARNS(LOG_TXT) << mID << " abort: fail harder" << LL_ENDL;  				return true; // failed  			} @@ -1663,7 +1675,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  				// abort.  				setState(DONE); -				LL_WARNS("Texture") << mID << " abort: no data received" << LL_ENDL; +				LL_WARNS(LOG_TXT) << mID << " abort: no data received" << LL_ENDL;  				releaseHttpSemaphore();  				return true;  			} @@ -1679,8 +1691,8 @@ bool LLTextureFetchWorker::doWork(S32 param)  				// Get back into alignment.  				if (mHttpReplyOffset > cur_size)  				{ -					LL_WARNS("Texture") << "Partial HTTP response produces break in image data for texture " -										<< mID << ".  Aborting load."  << LL_ENDL; +					LL_WARNS(LOG_TXT) << "Partial HTTP response produces break in image data for texture " +									  << mID << ".  Aborting load."  << LL_ENDL;  					setState(DONE);  					releaseHttpSemaphore();  					return true; @@ -1731,8 +1743,8 @@ bool LLTextureFetchWorker::doWork(S32 param)  			mLoadedDiscard = mRequestedDiscard;  			if (mLoadedDiscard < 0)  			{ -				LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard -									<< ", should be >=0" << LL_ENDL; +				LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard +								  << ", should be >=0" << LL_ENDL;  			}  			setState(DECODE_IMAGE);  			if (mWriteToCacheState != NOT_WRITE) @@ -1773,26 +1785,26 @@ bool LLTextureFetchWorker::doWork(S32 param)  		{  			// We aborted, don't decode  			setState(DONE); -			LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: desired discard " << mDesiredDiscard << "<0" << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: desired discard " << mDesiredDiscard << "<0" << LL_ENDL;  			return true;  		}  		if (mFormattedImage->getDataSize() <= 0)  		{ -			LL_WARNS() << "Decode entered with invalid mFormattedImage. ID = " << mID << LL_ENDL; +			LL_WARNS(LOG_TXT) << "Decode entered with invalid mFormattedImage. ID = " << mID << LL_ENDL;  			//abort, don't decode  			setState(DONE); -			LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: (mFormattedImage->getDataSize() <= 0)" << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: (mFormattedImage->getDataSize() <= 0)" << LL_ENDL;  			return true;  		}  		if (mLoadedDiscard < 0)  		{ -			LL_WARNS() << "Decode entered with invalid mLoadedDiscard. ID = " << mID << LL_ENDL; +			LL_WARNS(LOG_TXT) << "Decode entered with invalid mLoadedDiscard. ID = " << mID << LL_ENDL;  			//abort, don't decode  			setState(DONE); -			LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: mLoadedDiscard < 0" << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: mLoadedDiscard < 0" << LL_ENDL;  			return true;  		} @@ -1803,8 +1815,8 @@ bool LLTextureFetchWorker::doWork(S32 param)  		U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;  		mDecoded  = FALSE;  		setState(DECODE_IMAGE_UPDATE); -		LL_DEBUGS("Texture") << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard -				<< " All Data: " << mHaveAllData << LL_ENDL; +		LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard +						   << " All Data: " << mHaveAllData << LL_ENDL;  		mDecodeHandle = mFetcher->mImageDecodeThread->decodeImage(mFormattedImage, image_priority, discard, mNeedsAux,  																  new DecodeResponder(mFetcher, mID, this));  		// fall though @@ -1821,11 +1833,11 @@ bool LLTextureFetchWorker::doWork(S32 param)  			if (mDecodedDiscard < 0)  			{ -				LL_DEBUGS("Texture") << mID << ": Failed to Decode." << LL_ENDL; +				LL_DEBUGS(LOG_TXT) << mID << ": Failed to Decode." << LL_ENDL;  				if (mCachedSize > 0 && !mInLocalCache && mRetryAttempt == 0)  				{  					// Cache file should be deleted, try again - 					LL_WARNS() << mID << ": Decode of cached file failed (removed), retrying" << LL_ENDL; + 					LL_WARNS(LOG_TXT) << mID << ": Decode of cached file failed (removed), retrying" << LL_ENDL;  					llassert_always(mDecodeHandle == 0);  					mFormattedImage = NULL;  					++mRetryAttempt; @@ -1835,15 +1847,15 @@ bool LLTextureFetchWorker::doWork(S32 param)  				}  				else  				{ -// 					LL_WARNS() << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << LL_ENDL; +// 					LL_WARNS(LOG_TXT) << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << LL_ENDL;  					setState(DONE); // failed  				}  			}  			else  			{  				llassert_always(mRawImage.notNull()); -				LL_DEBUGS("Texture") << mID << ": Decoded. Discard: " << mDecodedDiscard -						<< " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL; +				LL_DEBUGS(LOG_TXT) << mID << ": Decoded. Discard: " << mDecodedDiscard +								   << " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL;  				setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);  				setState(WRITE_TO_CACHE);  			} @@ -1915,9 +1927,9 @@ bool LLTextureFetchWorker::doWork(S32 param)  		{  			// More data was requested, return to INIT  			setState(INIT); -			LL_DEBUGS("Texture") << mID << " more data requested, returning to INIT: "  -								 << " mDecodedDiscard " << mDecodedDiscard << ">= 0 && mDesiredDiscard " << mDesiredDiscard -								 << "<" << " mDecodedDiscard " << mDecodedDiscard << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << mID << " more data requested, returning to INIT: "  +							   << " mDecodedDiscard " << mDecodedDiscard << ">= 0 && mDesiredDiscard " << mDesiredDiscard +							   << "<" << " mDecodedDiscard " << mDecodedDiscard << LL_ENDL;  			setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);  			return false;  		} @@ -1957,8 +1969,8 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe  	F32 rate = fake_failure_rate;  	if (mFTType == FTT_SERVER_BAKE && (fake_failure_rate > 0.0) && (rand_val < fake_failure_rate))  	{ -		LL_WARNS() << mID << " for debugging, setting fake failure status for texture " << mID -				<< " (rand was " << rand_val << "/" << rate << ")" << LL_ENDL; +		LL_WARNS(LOG_TXT) << mID << " for debugging, setting fake failure status for texture " << mID +						  << " (rand was " << rand_val << "/" << rate << ")" << LL_ENDL;  		response->setStatus(LLCore::HttpStatus(503));  	}  	bool success = true; @@ -1966,12 +1978,12 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe  	LLCore::HttpStatus status(response->getStatus());  	if (!status && (mFTType == FTT_SERVER_BAKE))  	{ -		LL_INFOS() << mID << " state " << e_state_name[mState] << LL_ENDL; +		LL_INFOS(LOG_TXT) << mID << " state " << e_state_name[mState] << LL_ENDL;  		mFetchRetryPolicy.onFailure(response);  		F32 retry_after;  		if (mFetchRetryPolicy.shouldRetry(retry_after))  		{ -			LL_INFOS() << mID << " will retry after " << retry_after << " seconds, resetting state to LOAD_FROM_NETWORK" << LL_ENDL; +			LL_INFOS(LOG_TXT) << mID << " will retry after " << retry_after << " seconds, resetting state to LOAD_FROM_NETWORK" << LL_ENDL;  			mFetcher->removeFromHTTPQueue(mID, S32Bytes(0));  			std::string reason(status.toString());  			setGetStatus(status, reason); @@ -1981,7 +1993,7 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe  		}  		else  		{ -			LL_INFOS() << mID << " will not retry" << LL_ENDL; +			LL_INFOS(LOG_TXT) << mID << " will not retry" << LL_ENDL;  		}  	}  	else @@ -1989,30 +2001,20 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe  		mFetchRetryPolicy.onSuccess();  	} -	LL_DEBUGS("Texture") << "HTTP COMPLETE: " << mID -						 << " status: " << status.toTerseString() -						 << " '" << status.toString() << "'" -						 << LL_ENDL; - -//	unsigned int offset(0), length(0), full_length(0); -//	response->getRange(&offset, &length, &full_length); -// 	LL_WARNS() << "HTTP COMPLETE: " << mID << " handle: " << handle -// 			<< " status: " << status.toULong() << " '" << status.toString() << "'" -// 			<< " req offset: " << mRequestedOffset << " req length: " << mRequestedSize -// 			<< " offset: " << offset << " length: " << length -// 			<< LL_ENDL; -  	std::string reason(status.toString());  	setGetStatus(status, reason); +	LL_DEBUGS(LOG_TXT) << "HTTP COMPLETE: " << mID +					   << " status: " << status.toTerseString() +					   << " '" << reason << "'" +					   << LL_ENDL; +  	if (! status)  	{  		success = false;  		if (mFTType != FTT_MAP_TILE) // missing map tiles are normal, don't complain about them.  		{ -			std::string reason(status.toString()); -			setGetStatus(status, reason); -			LL_WARNS() << "CURL GET FAILED, status: " << status.toTerseString() -					<< " reason: " << reason << LL_ENDL; +			LL_WARNS(LOG_TXT) << "CURL GET FAILED, status: " << status.toTerseString() +							  << " reason: " << reason << LL_ENDL;  		}  	}  	else @@ -2223,13 +2225,13 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,  	if (mState != WAIT_HTTP_REQ)  	{ -		LL_WARNS() << "callbackHttpGet for unrequested fetch worker: " << mID -				<< " req=" << mSentRequest << " state= " << mState << LL_ENDL; +		LL_WARNS(LOG_TXT) << "callbackHttpGet for unrequested fetch worker: " << mID +						  << " req=" << mSentRequest << " state= " << mState << LL_ENDL;  		return data_size;  	}  	if (mLoaded)  	{ -		LL_WARNS() << "Duplicate callback for " << mID.asString() << LL_ENDL; +		LL_WARNS(LOG_TXT) << "Duplicate callback for " << mID.asString() << LL_ENDL;  		return data_size ; // ignore duplicate callback  	}  	if (success) @@ -2238,7 +2240,7 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,  		LLCore::BufferArray * body(response->getBody());  		data_size = body ? body->size() : 0; -		LL_DEBUGS("Texture") << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL; +		LL_DEBUGS(LOG_TXT) << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL;  		if (data_size > 0)  		{  			LLViewerStatsRecorder::instance().textureFetch(data_size); @@ -2278,10 +2280,10 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,  				// response body becomes the entire dataset.  				if (data_size <= mRequestedOffset)  				{ -					LL_WARNS("Texture") << "Fetched entire texture " << mID -										<< " when it was expected to be marked complete.  mImageSize:  " -										<< mFileSize << " datasize:  " << mFormattedImage->getDataSize() -										<< LL_ENDL; +					LL_WARNS(LOG_TXT) << "Fetched entire texture " << mID +									  << " when it was expected to be marked complete.  mImageSize:  " +									  << mFileSize << " datasize:  " << mFormattedImage->getDataSize() +									  << LL_ENDL;  				}  				mHaveAllData = TRUE;  				llassert_always(mDecodeHandle == 0); @@ -2294,7 +2296,7 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,  			else if (data_size > mRequestedSize)  			{  				// *TODO: This shouldn't be happening any more  (REALLY don't expect this anymore) -				LL_WARNS() << "data_size = " << data_size << " > requested: " << mRequestedSize << LL_ENDL; +				LL_WARNS(LOG_TXT) << "data_size = " << data_size << " > requested: " << mRequestedSize << LL_ENDL;  				mHaveAllData = TRUE;  				llassert_always(mDecodeHandle == 0);  				mFormattedImage = NULL; // discard any previous data we had @@ -2329,7 +2331,7 @@ void LLTextureFetchWorker::callbackCacheRead(bool success, LLImageFormatted* ima  	LLMutexLock lock(&mWorkMutex);										// +Mw  	if (mState != LOAD_FROM_TEXTURE_CACHE)  	{ -// 		LL_WARNS() << "Read callback for " << mID << " with state = " << mState << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Read callback for " << mID << " with state = " << mState << LL_ENDL;  		return;  	}  	if (success) @@ -2354,7 +2356,7 @@ void LLTextureFetchWorker::callbackCacheWrite(bool success)  	LLMutexLock lock(&mWorkMutex);										// +Mw  	if (mState != WAIT_ON_WRITE)  	{ -// 		LL_WARNS() << "Write callback for " << mID << " with state = " << mState << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Write callback for " << mID << " with state = " << mState << LL_ENDL;  		return;  	}  	mWritten = TRUE; @@ -2373,7 +2375,7 @@ void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImag  	}  	if (mState != DECODE_IMAGE_UPDATE)  	{ -// 		LL_WARNS() << "Decode callback for " << mID << " with state = " << mState << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Decode callback for " << mID << " with state = " << mState << LL_ENDL;  		mDecodeHandle = 0;  		return;  	} @@ -2386,17 +2388,17 @@ void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImag  		mRawImage = raw;  		mAuxImage = aux;  		mDecodedDiscard = mFormattedImage->getDiscardLevel(); - 		LL_DEBUGS("Texture") << mID << ": Decode Finished. Discard: " << mDecodedDiscard -							 << " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL; + 		LL_DEBUGS(LOG_TXT) << mID << ": Decode Finished. Discard: " << mDecodedDiscard +						   << " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL;  	}  	else  	{ -		LL_WARNS() << "DECODE FAILED: " << mID << " Discard: " << (S32)mFormattedImage->getDiscardLevel() << LL_ENDL; +		LL_WARNS(LOG_TXT) << "DECODE FAILED: " << mID << " Discard: " << (S32)mFormattedImage->getDiscardLevel() << LL_ENDL;  		removeFromCache();  		mDecodedDiscard = -1; // Redundant, here for clarity and paranoia  	}  	mDecoded = TRUE; -// 	LL_INFOS() << mID << " : DECODE COMPLETE " << LL_ENDL; +// 	LL_INFOS(LOG_TXT) << mID << " : DECODE COMPLETE " << LL_ENDL;  	setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);  	mCacheReadTime = mCacheReadTimer.getElapsedTimeF32();  }																		// -Mw @@ -2583,8 +2585,8 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const  	{  		if (worker->mHost != host)  		{ -			LL_WARNS() << "LLTextureFetch::createRequest " << id << " called with multiple hosts: " -					<< host << " != " << worker->mHost << LL_ENDL; +			LL_WARNS(LOG_TXT) << "LLTextureFetch::createRequest " << id << " called with multiple hosts: " +							  << host << " != " << worker->mHost << LL_ENDL;  			removeRequest(worker, true);  			worker = NULL;  			return false; @@ -2601,13 +2603,13 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const  		llassert(!url.empty() && (!exten.empty() && LLImageBase::getCodecFromExtension(exten) != IMG_CODEC_J2C));  		// Do full requests for baked textures to reduce interim blurring. -		LL_DEBUGS("Texture") << "full request for " << id << " texture is FTT_SERVER_BAKE" << LL_ENDL; +		LL_DEBUGS(LOG_TXT) << "full request for " << id << " texture is FTT_SERVER_BAKE" << LL_ENDL;  		desired_size = MAX_IMAGE_DATA_SIZE;  		desired_discard = 0;  	}  	else if (!url.empty() && (!exten.empty() && LLImageBase::getCodecFromExtension(exten) != IMG_CODEC_J2C))  	{ -		LL_DEBUGS("Texture") << "full request for " << id << " exten is not J2C: " << exten << LL_ENDL; +		LL_DEBUGS(LOG_TXT) << "full request for " << id << " exten is not J2C: " << exten << LL_ENDL;  		// Only do partial requests for J2C at the moment  		desired_size = MAX_IMAGE_DATA_SIZE;  		desired_discard = 0; @@ -2648,7 +2650,9 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const  		worker->setImagePriority(priority);  		worker->setDesiredDiscard(desired_discard, desired_size);  		worker->setCanUseHTTP(can_use_http); -		worker->setUrl(url); + +		//MAINT-4184 url is always empty.  Do not set with it. +  		if (!worker->haveWork())  		{  			worker->setState(LLTextureFetchWorker::INIT); @@ -2675,8 +2679,8 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const  		worker->unlockWorkMutex();										// -Mw  	} - 	LL_DEBUGS("Texture") << "REQUESTED: " << id << " f_type " << fttype_to_string(f_type) -						 << " Discard: " << desired_discard << " size " << desired_size << LL_ENDL; + 	LL_DEBUGS(LOG_TXT) << "REQUESTED: " << id << " f_type " << fttype_to_string(f_type) +					   << " Discard: " << desired_discard << " size " << desired_size << LL_ENDL;  	return true;  } @@ -2871,7 +2875,7 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,  			// Should only happen if we set mDebugPause...  			if (!mDebugPause)  			{ -// 				LL_WARNS() << "Adding work for inactive worker: " << id << LL_ENDL; +// 				LL_WARNS(LOG_TXT) << "Adding work for inactive worker: " << id << LL_ENDL;  				worker->addWork(0, LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);  			}  		} @@ -2888,7 +2892,7 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,  				record(sCacheReadLatency, cache_read_time);  			}  			res = true; -			LL_DEBUGS("Texture") << id << ": Request Finished. State: " << worker->mState << " Discard: " << discard_level << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << id << ": Request Finished. State: " << worker->mState << " Discard: " << discard_level << LL_ENDL;  			worker->unlockWorkMutex();									// -Mw  		}  		else @@ -2993,9 +2997,9 @@ void LLTextureFetch::commonUpdate()  	LLCore::HttpStatus status = mHttpRequest->update(0);  	if (! status)  	{ -		LL_INFOS_ONCE("Texture") << "Problem during HTTP servicing.  Reason:  " -								 << status.toString() -								 << LL_ENDL; +		LL_INFOS_ONCE(LOG_TXT) << "Problem during HTTP servicing.  Reason:  " +							   << status.toString() +							   << LL_ENDL;  	}  } @@ -3075,11 +3079,11 @@ void LLTextureFetch::startThread()  // Threads:  Ttf  void LLTextureFetch::endThread()  { -	LL_INFOS("Texture") << "CacheReads:  " << mTotalCacheReadCount -						<< ", CacheWrites:  " << mTotalCacheWriteCount -						<< ", ResWaits:  " << mTotalResourceWaitCount -						<< ", TotalHTTPReq:  " << getTotalNumHTTPRequests() -						<< LL_ENDL; +	LL_INFOS(LOG_TXT) << "CacheReads:  " << mTotalCacheReadCount +					  << ", CacheWrites:  " << mTotalCacheWriteCount +					  << ", ResWaits:  " << mTotalResourceWaitCount +					  << ", TotalHTTPReq:  " << getTotalNumHTTPRequests() +					  << LL_ENDL;  }  // Threads:  Ttf @@ -3108,7 +3112,7 @@ void LLTextureFetch::threadedUpdate()  		S32 q = mCurlGetRequest->getQueued();  		if (q > 0)  		{ -			LL_INFOS() << "Queued gets: " << q << LL_ENDL; +			LL_INFOS(LOG_TXT) << "Queued gets: " << q << LL_ENDL;  			info_timer.reset();  		}  	} @@ -3157,7 +3161,7 @@ void LLTextureFetch::sendRequestListToSimulators()  				(req->mState != LLTextureFetchWorker::LOAD_FROM_SIMULATOR))  			{  				// We already received our URL, remove from the queue -				LL_WARNS() << "Worker: " << req->mID << " in mNetworkQueue but in wrong state: " << req->mState << LL_ENDL; +				LL_WARNS(LOG_TXT) << "Worker: " << req->mID << " in mNetworkQueue but in wrong state: " << req->mState << LL_ENDL;  				mNetworkQueue.erase(curiter);  				continue;  			} @@ -3225,7 +3229,7 @@ void LLTextureFetch::sendRequestListToSimulators()  				gMessageSystem->addF32Fast(_PREHASH_DownloadPriority, req->mImagePriority);  				gMessageSystem->addU32Fast(_PREHASH_Packet, packet);  				gMessageSystem->addU8Fast(_PREHASH_Type, req->mType); -// 				LL_INFOS() << "IMAGE REQUEST: " << req->mID << " Discard: " << req->mDesiredDiscard +// 				LL_INFOS(LOG_TXT) << "IMAGE REQUEST: " << req->mID << " Discard: " << req->mDesiredDiscard  // 						<< " Packet: " << packet << " Priority: " << req->mImagePriority << LL_ENDL;  				static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog", false); @@ -3247,7 +3251,7 @@ void LLTextureFetch::sendRequestListToSimulators()  				sim_request_count++;  				if (sim_request_count >= IMAGES_PER_REQUEST)  				{ -// 					LL_INFOS() << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL; +// 					LL_INFOS(LOG_TXT) << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL;  					gMessageSystem->sendSemiReliable(host, NULL, NULL);  					sim_request_count = 0; @@ -3256,7 +3260,7 @@ void LLTextureFetch::sendRequestListToSimulators()  		}  		if (gMessageSystem && sim_request_count > 0 && sim_request_count < IMAGES_PER_REQUEST)  		{ -// 			LL_INFOS() << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL; +// 			LL_INFOS(LOG_TXT) << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL;  			gMessageSystem->sendSemiReliable(host, NULL, NULL);  			sim_request_count = 0;  		} @@ -3292,7 +3296,7 @@ void LLTextureFetch::sendRequestListToSimulators()  					gMessageSystem->addF32Fast(_PREHASH_DownloadPriority, 0);  					gMessageSystem->addU32Fast(_PREHASH_Packet, 0);  					gMessageSystem->addU8Fast(_PREHASH_Type, 0); -// 				LL_INFOS() << "CANCELING IMAGE REQUEST: " << (*iter2) << LL_ENDL; +// 				LL_INFOS(LOG_TXT) << "CANCELING IMAGE REQUEST: " << (*iter2) << LL_ENDL;  					request_count++;  					if (request_count >= IMAGES_PER_REQUEST) @@ -3320,12 +3324,12 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)  	mRequestedTimer.reset();  	if (index >= mTotalPackets)  	{ -// 		LL_WARNS() << "Received Image Packet " << index << " > max: " << mTotalPackets << " for image: " << mID << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Received Image Packet " << index << " > max: " << mTotalPackets << " for image: " << mID << LL_ENDL;  		return false;  	}  	if (index > 0 && index < mTotalPackets-1 && size != MAX_IMG_PACKET_SIZE)  	{ -// 		LL_WARNS() << "Received bad sized packet: " << index << ", " << size << " != " << MAX_IMG_PACKET_SIZE << " for image: " << mID << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Received bad sized packet: " << index << ", " << size << " != " << MAX_IMG_PACKET_SIZE << " for image: " << mID << LL_ENDL;  		return false;  	} @@ -3335,7 +3339,7 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)  	}  	else if (mPackets[index] != NULL)  	{ -// 		LL_WARNS() << "Received duplicate packet: " << index << " for image: " << mID << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Received duplicate packet: " << index << " for image: " << mID << LL_ENDL;  		return false;  	} @@ -3355,7 +3359,7 @@ void LLTextureFetchWorker::setState(e_state new_state)  	// blurry images fairly frequently. Presumably this is an  	// indication of some subtle timing or locking issue. -//		LL_INFOS("Texture") << "id: " << mID << " FTType: " << mFTType << " disc: " << mDesiredDiscard << " sz: " << mDesiredSize << " state: " << e_state_name[mState] << " => " << e_state_name[new_state] << LL_ENDL; +//		LL_INFOS(LOG_TXT) << "id: " << mID << " FTType: " << mFTType << " disc: " << mDesiredDiscard << " sz: " << mDesiredSize << " state: " << e_state_name[mState] << " => " << e_state_name[new_state] << LL_ENDL;  	}  	mState = new_state;  } @@ -3371,13 +3375,13 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8  	if (!worker)  	{ -// 		LL_WARNS() << "Received header for non active worker: " << id << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Received header for non active worker: " << id << LL_ENDL;  		res = false;  	}  	else if (worker->mState != LLTextureFetchWorker::LOAD_FROM_NETWORK ||  			 worker->mSentRequest != LLTextureFetchWorker::SENT_SIM)  	{ -// 		LL_WARNS() << "receiveImageHeader for worker: " << id +// 		LL_WARNS(LOG_TXT) << "receiveImageHeader for worker: " << id  // 				<< " in state: " << LLTextureFetchWorker::sStateDescs[worker->mState]  // 				<< " sent: " << worker->mSentRequest << LL_ENDL;  		res = false; @@ -3385,12 +3389,12 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8  	else if (worker->mLastPacket != -1)  	{  		// check to see if we've gotten this packet before -// 		LL_WARNS() << "Received duplicate header for: " << id << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Received duplicate header for: " << id << LL_ENDL;  		res = false;  	}  	else if (!data_size)  	{ -// 		LL_WARNS() << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL;  		res = false;  	}  	if (!res) @@ -3432,17 +3436,17 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1  	if (!worker)  	{ -// 		LL_WARNS() << "Received packet " << packet_num << " for non active worker: " << id << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Received packet " << packet_num << " for non active worker: " << id << LL_ENDL;  		res = false;  	}  	else if (worker->mLastPacket == -1)  	{ -// 		LL_WARNS() << "Received packet " << packet_num << " before header for: " << id << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Received packet " << packet_num << " before header for: " << id << LL_ENDL;  		res = false;  	}  	else if (!data_size)  	{ -// 		LL_WARNS() << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL; +// 		LL_WARNS(LOG_TXT) << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL;  		res = false;  	}  	if (!res) @@ -3470,7 +3474,7 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1  	}  	else  	{ -// 		LL_WARNS() << "receiveImagePacket " << packet_num << "/" << worker->mLastPacket << " for worker: " << id +// 		LL_WARNS(LOG_TXT) << "receiveImagePacket " << packet_num << "/" << worker->mLastPacket << " for worker: " << id  // 				<< " in state: " << LLTextureFetchWorker::sStateDescs[worker->mState] << LL_ENDL;  		removeFromNetworkQueue(worker, true); // failsafe  	} @@ -3563,33 +3567,33 @@ S32 LLTextureFetch::getFetchState(const LLUUID& id, F32& data_progress_p, F32& r  void LLTextureFetch::dump()  { -	LL_INFOS() << "LLTextureFetch REQUESTS:" << LL_ENDL; +	LL_INFOS(LOG_TXT) << "LLTextureFetch REQUESTS:" << LL_ENDL;  	for (request_queue_t::iterator iter = mRequestQueue.begin();  		 iter != mRequestQueue.end(); ++iter)  	{  		LLQueuedThread::QueuedRequest* qreq = *iter;  		LLWorkerThread::WorkRequest* wreq = (LLWorkerThread::WorkRequest*)qreq;  		LLTextureFetchWorker* worker = (LLTextureFetchWorker*)wreq->getWorkerClass(); -		LL_INFOS() << " ID: " << worker->mID -				<< " PRI: " << llformat("0x%08x",wreq->getPriority()) -				<< " STATE: " << worker->sStateDescs[worker->mState] -				<< LL_ENDL; +		LL_INFOS(LOG_TXT) << " ID: " << worker->mID +						  << " PRI: " << llformat("0x%08x",wreq->getPriority()) +						  << " STATE: " << worker->sStateDescs[worker->mState] +						  << LL_ENDL;  	} -	LL_INFOS() << "LLTextureFetch ACTIVE_HTTP:" << LL_ENDL; +	LL_INFOS(LOG_TXT) << "LLTextureFetch ACTIVE_HTTP:" << LL_ENDL;  	for (queue_t::const_iterator iter(mHTTPTextureQueue.begin());  		 mHTTPTextureQueue.end() != iter;  		 ++iter)  	{ -		LL_INFOS() << " ID: " << (*iter) << LL_ENDL; +		LL_INFOS(LOG_TXT) << " ID: " << (*iter) << LL_ENDL;  	} -	LL_INFOS() << "LLTextureFetch WAIT_HTTP_RESOURCE:" << LL_ENDL; +	LL_INFOS(LOG_TXT) << "LLTextureFetch WAIT_HTTP_RESOURCE:" << LL_ENDL;  	for (wait_http_res_queue_t::const_iterator iter(mHttpWaitResource.begin());  		 mHttpWaitResource.end() != iter;  		 ++iter)  	{ -		LL_INFOS() << " ID: " << (*iter) << LL_ENDL; +		LL_INFOS(LOG_TXT) << " ID: " << (*iter) << LL_ENDL;  	}  } @@ -3714,10 +3718,10 @@ void LLTextureFetch::releaseHttpWaiters()  		{  			// Not in expected state, remove it, try the next one  			worker->unlockWorkMutex();									// -Mw -			LL_WARNS("Texture") << "Resource-waited texture " << worker->mID -								<< " in unexpected state:  " << worker->mState -								<< ".  Removing from wait list." -								<< LL_ENDL; +			LL_WARNS(LOG_TXT) << "Resource-waited texture " << worker->mID +							  << " in unexpected state:  " << worker->mState +							  << ".  Removing from wait list." +							  << LL_ENDL;  			removeHttpWaiter(worker->mID);  			continue;  		} @@ -3884,14 +3888,14 @@ public:  		if (status)  		{ -			LL_DEBUGS("Texture") << "Successfully delivered asset metrics to grid." -								 << LL_ENDL; +			LL_DEBUGS(LOG_TXT) << "Successfully delivered asset metrics to grid." +							   << LL_ENDL;  		}  		else  		{ -			LL_WARNS("Texture") << "Error delivering asset metrics to grid.  Status:  " -								<< status.toTerseString() -								<< ", Reason:  " << status.toString() << LL_ENDL; +			LL_WARNS(LOG_TXT) << "Error delivering asset metrics to grid.  Status:  " +							  << status.toTerseString() +							  << ", Reason:  " << status.toString() << LL_ENDL;  		}  	}  }; // end class AssetReportHandler @@ -4502,14 +4506,14 @@ void LLTextureFetchDebugger::debugHTTP()  	LLViewerRegion* region = gAgent.getRegion();  	if (!region)  	{ -		LL_INFOS() << "Fetch Debugger : Current region undefined. Cannot fetch textures through HTTP." << LL_ENDL; +		LL_INFOS(LOG_TXT) << "Fetch Debugger : Current region undefined. Cannot fetch textures through HTTP." << LL_ENDL;  		return;  	}  	mHTTPUrl = region->getHttpUrl();  	if (mHTTPUrl.empty())  	{ -		LL_INFOS() << "Fetch Debugger : Current region URL undefined. Cannot fetch textures through HTTP." << LL_ENDL; +		LL_INFOS(LOG_TXT) << "Fetch Debugger : Current region URL undefined. Cannot fetch textures through HTTP." << LL_ENDL;  		return;  	} @@ -4580,15 +4584,15 @@ S32 LLTextureFetchDebugger::fillCurlQueue()  			// Failed to queue request, log it and mark it done.  			LLCore::HttpStatus status(mFetcher->getHttpRequest().getStatus()); -			LL_WARNS("Texture") << "Couldn't issue HTTP request in debugger for texture " -								<< mFetchingHistory[i].mID -								<< ", status: " << status.toTerseString() -								<< " reason:  " << status.toString() -								<< LL_ENDL; +			LL_WARNS(LOG_TXT) << "Couldn't issue HTTP request in debugger for texture " +							  << mFetchingHistory[i].mID +							  << ", status: " << status.toTerseString() +							  << " reason:  " << status.toString() +							  << LL_ENDL;  			mFetchingHistory[i].mCurlState = FetchEntry::CURL_DONE;  		}  	} -	//LL_INFOS() << "Fetch Debugger : Having " << mNbCurlRequests << " requests through the curl thread." << LL_ENDL; +	//LL_INFOS(LOG_TXT) << "Fetch Debugger : Having " << mNbCurlRequests << " requests through the curl thread." << LL_ENDL;  	return mNbCurlRequests;  } @@ -4890,7 +4894,7 @@ void LLTextureFetchDebugger::onCompleted(LLCore::HttpHandle handle, LLCore::Http  	handle_fetch_map_t::iterator iter(mHandleToFetchIndex.find(handle));  	if (mHandleToFetchIndex.end() == iter)  	{ -		LL_INFOS() << "Fetch Debugger : Couldn't find handle " << handle << " in fetch list." << LL_ENDL; +		LL_INFOS(LOG_TXT) << "Fetch Debugger : Couldn't find handle " << handle << " in fetch list." << LL_ENDL;  		return;  	} @@ -4898,7 +4902,7 @@ void LLTextureFetchDebugger::onCompleted(LLCore::HttpHandle handle, LLCore::Http  	mHandleToFetchIndex.erase(iter);  	if (fetch_ind >= mFetchingHistory.size() || mFetchingHistory[fetch_ind].mHttpHandle != handle)  	{ -		LL_INFOS() << "Fetch Debugger : Handle and fetch object in disagreement.  Punting." << LL_ENDL; +		LL_INFOS(LOG_TXT) << "Fetch Debugger : Handle and fetch object in disagreement.  Punting." << LL_ENDL;  	}  	else  	{ @@ -4948,7 +4952,7 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon  		S32 data_size = ba ? ba->size() : 0;  		fetch.mCurlReceivedSize += data_size; -		//LL_INFOS() << "Fetch Debugger : got results for " << fetch.mID << ", data_size = " << data_size << ", received = " << fetch.mCurlReceivedSize << ", requested = " << fetch.mRequestedSize << ", partial = " << partial << LL_ENDL; +		//LL_INFOS(LOG_TXT) << "Fetch Debugger : got results for " << fetch.mID << ", data_size = " << data_size << ", received = " << fetch.mCurlReceivedSize << ", requested = " << fetch.mRequestedSize << ", partial = " << partial << LL_ENDL;  		if ((fetch.mCurlReceivedSize >= fetch.mRequestedSize) || !partial || (fetch.mRequestedSize == 600))  		{  			U8* d_buffer = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), data_size); @@ -4974,9 +4978,9 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon  	}  	else //failed  	{ -		LL_INFOS() << "Fetch Debugger : CURL GET FAILED,  ID = " << fetch.mID -				<< ", status: " << status.toTerseString() -				<< " reason:  " << status.toString() << LL_ENDL; +		LL_INFOS(LOG_TXT) << "Fetch Debugger : CURL GET FAILED,  ID = " << fetch.mID +						  << ", status: " << status.toTerseString() +						  << " reason:  " << status.toString() << LL_ENDL;  	}  } diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index aa1f680a1e..4f0413a2e4 100755 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -563,7 +563,7 @@ void LLGLTexMemBar::draw()  	//---------------------------------------------------------------------------- -	text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d RAW:%d HTP:%d DEC:%d CRE:%d", +	text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d RAW:%d HTP:%d DEC:%d CRE:%d ",  					gTextureList.getNumImages(),  					LLAppViewer::getTextureFetch()->getNumRequests(), LLAppViewer::getTextureFetch()->getNumDeletes(),  					LLAppViewer::getTextureFetch()->mPacketCount, LLAppViewer::getTextureFetch()->mBadPacketCount,  @@ -585,7 +585,7 @@ void LLGLTexMemBar::draw()  	color = bandwidth > max_bandwidth ? LLColor4::red : bandwidth > max_bandwidth*.75f ? LLColor4::yellow : text_color;  	color[VALPHA] = text_color[VALPHA];  	text = llformat("BW:%.0f/%.0f",bandwidth.value(), max_bandwidth.value()); -	LLFontGL::getFontMonospace()->renderUTF8(text, 0, x_right, v_offset + line_height*2, +	LLFontGL::getFontMonospace()->renderUTF8(text, 0, x_right, v_offset + line_height*3,  											 color, LLFontGL::LEFT, LLFontGL::TOP);  	// Mesh status line diff --git a/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png b/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.pngBinary files differ index 8b58db0cba..50239c8af8 100755 --- a/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png +++ b/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.pngBinary files differ index 9e7291d6fb..fade065ce7 100755 --- a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.pngBinary files differ index 0ac5b72b8f..eb2f3dbaa4 100755 --- a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png +++ b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png diff --git a/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png b/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.pngBinary files differ index d7ec04237b..4ab4bbe4af 100755 --- a/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Snapshot_Off.png diff --git a/indra/newview/skins/default/textures/down_arrow.png b/indra/newview/skins/default/textures/down_arrow.pngBinary files differ index 155f80c97e..21a0fc5ec0 100755 --- a/indra/newview/skins/default/textures/down_arrow.png +++ b/indra/newview/skins/default/textures/down_arrow.png diff --git a/indra/newview/skins/default/textures/icons/Edit_Wrench.png b/indra/newview/skins/default/textures/icons/Edit_Wrench.pngBinary files differ index edb40b9c96..42f8466969 100755 --- a/indra/newview/skins/default/textures/icons/Edit_Wrench.png +++ b/indra/newview/skins/default/textures/icons/Edit_Wrench.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png b/indra/newview/skins/default/textures/icons/Generic_Group_Large.pngBinary files differ index 75833eccf3..46ee6dfe2c 100755 --- a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png +++ b/indra/newview/skins/default/textures/icons/Generic_Group_Large.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Person.png b/indra/newview/skins/default/textures/icons/Generic_Person.pngBinary files differ index 45b491ab59..e1411354af 100755 --- a/indra/newview/skins/default/textures/icons/Generic_Person.png +++ b/indra/newview/skins/default/textures/icons/Generic_Person.png diff --git a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.pngBinary files differ index 296311e797..ae8c8b4c1a 100755 --- a/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png +++ b/indra/newview/skins/default/textures/icons/Hierarchy_View_On.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Link.png b/indra/newview/skins/default/textures/icons/Inv_Link.pngBinary files differ index c1543dacb5..26bf4086fb 100755 --- a/indra/newview/skins/default/textures/icons/Inv_Link.png +++ b/indra/newview/skins/default/textures/icons/Inv_Link.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LostClosed.png b/indra/newview/skins/default/textures/icons/Inv_LostClosed.pngBinary files differ index a800217e0d..42b5c88fdd 100755 --- a/indra/newview/skins/default/textures/icons/Inv_LostClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_LostClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_LostOpen.png b/indra/newview/skins/default/textures/icons/Inv_LostOpen.pngBinary files differ index 8c4a1a9ac0..a52168d6c7 100755 --- a/indra/newview/skins/default/textures/icons/Inv_LostOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_LostOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Mesh.png b/indra/newview/skins/default/textures/icons/Inv_Mesh.pngBinary files differ index f1f21f7941..77e52264c3 100755 --- a/indra/newview/skins/default/textures/icons/Inv_Mesh.png +++ b/indra/newview/skins/default/textures/icons/Inv_Mesh.png diff --git a/indra/newview/skins/default/textures/icons/Inv_SysClosed.png b/indra/newview/skins/default/textures/icons/Inv_SysClosed.pngBinary files differ index dcf998449f..57eafc4047 100755 --- a/indra/newview/skins/default/textures/icons/Inv_SysClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_SysClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_SysOpen.png b/indra/newview/skins/default/textures/icons/Inv_SysOpen.pngBinary files differ index 0efd403c95..b080688e55 100755 --- a/indra/newview/skins/default/textures/icons/Inv_SysOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_SysOpen.png diff --git a/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png b/indra/newview/skins/default/textures/icons/Inv_TrashClosed.pngBinary files differ index c5201e6f9a..7a958c1ec0 100755 --- a/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png +++ b/indra/newview/skins/default/textures/icons/Inv_TrashClosed.png diff --git a/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png b/indra/newview/skins/default/textures/icons/Inv_TrashOpen.pngBinary files differ index 4a886a3f37..11e6bf33bc 100755 --- a/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png +++ b/indra/newview/skins/default/textures/icons/Inv_TrashOpen.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.pngBinary files differ index e0b18b2451..af65873cb6 100755 --- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.pngBinary files differ index 101aaa42b1..6ceb9d3d8f 100755 --- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.pngBinary files differ index c27f18e3c7..7084e2f591 100755 --- a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.pngBinary files differ index 956e02b14d..60d056b573 100755 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.pngBinary files differ index 434caeda8b..d004b0f750 100755 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.pngBinary files differ index 064687ed0f..eed28765f7 100755 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.pngBinary files differ index 5465650d0c..e35de3c2fa 100755 --- a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png diff --git a/indra/newview/skins/default/textures/icons/Person_Check.png b/indra/newview/skins/default/textures/icons/Person_Check.pngBinary files differ index f8638540d4..d40eafe793 100755 --- a/indra/newview/skins/default/textures/icons/Person_Check.png +++ b/indra/newview/skins/default/textures/icons/Person_Check.png diff --git a/indra/newview/skins/default/textures/icons/Person_Star.png b/indra/newview/skins/default/textures/icons/Person_Star.pngBinary files differ index ad10580ac4..e02935672f 100755 --- a/indra/newview/skins/default/textures/icons/Person_Star.png +++ b/indra/newview/skins/default/textures/icons/Person_Star.png diff --git a/indra/newview/skins/default/textures/icons/SL_Logo.png b/indra/newview/skins/default/textures/icons/SL_Logo.pngBinary files differ index 8342d7cfee..5e376c72f9 100755 --- a/indra/newview/skins/default/textures/icons/SL_Logo.png +++ b/indra/newview/skins/default/textures/icons/SL_Logo.png diff --git a/indra/newview/skins/default/textures/icons/Shop.png b/indra/newview/skins/default/textures/icons/Shop.pngBinary files differ index 81c13eeabd..8977c49195 100755 --- a/indra/newview/skins/default/textures/icons/Shop.png +++ b/indra/newview/skins/default/textures/icons/Shop.png diff --git a/indra/newview/skins/default/textures/icons/Web_Profile_Off.png b/indra/newview/skins/default/textures/icons/Web_Profile_Off.pngBinary files differ index f5fb774a6f..5716dd6d22 100755 --- a/indra/newview/skins/default/textures/icons/Web_Profile_Off.png +++ b/indra/newview/skins/default/textures/icons/Web_Profile_Off.png diff --git a/indra/newview/skins/default/textures/icons/back_arrow_off.png b/indra/newview/skins/default/textures/icons/back_arrow_off.pngBinary files differ index 422f67cf83..e7cea49d73 100755 --- a/indra/newview/skins/default/textures/icons/back_arrow_off.png +++ b/indra/newview/skins/default/textures/icons/back_arrow_off.png diff --git a/indra/newview/skins/default/textures/icons/back_arrow_over.png b/indra/newview/skins/default/textures/icons/back_arrow_over.pngBinary files differ index b4cc170f37..4e5a93a25f 100755 --- a/indra/newview/skins/default/textures/icons/back_arrow_over.png +++ b/indra/newview/skins/default/textures/icons/back_arrow_over.png diff --git a/indra/newview/skins/default/textures/icons/back_arrow_press.png b/indra/newview/skins/default/textures/icons/back_arrow_press.pngBinary files differ index a9e2f326a7..289b8c20e6 100755 --- a/indra/newview/skins/default/textures/icons/back_arrow_press.png +++ b/indra/newview/skins/default/textures/icons/back_arrow_press.png diff --git a/indra/newview/skins/default/textures/icons/check_mark.png b/indra/newview/skins/default/textures/icons/check_mark.pngBinary files differ index 2c05297f4f..4d927cb29e 100755 --- a/indra/newview/skins/default/textures/icons/check_mark.png +++ b/indra/newview/skins/default/textures/icons/check_mark.png diff --git a/indra/newview/skins/default/textures/icons/pop_up_caution.png b/indra/newview/skins/default/textures/icons/pop_up_caution.pngBinary files differ index 78b681cb33..8364bcc328 100755 --- a/indra/newview/skins/default/textures/icons/pop_up_caution.png +++ b/indra/newview/skins/default/textures/icons/pop_up_caution.png diff --git a/indra/newview/skins/default/textures/menu_separator.png b/indra/newview/skins/default/textures/menu_separator.pngBinary files differ index 89dcdcdff5..7bb27c499d 100755 --- a/indra/newview/skins/default/textures/menu_separator.png +++ b/indra/newview/skins/default/textures/menu_separator.png diff --git a/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.pngBinary files differ index d0b213cdc5..7c6920205f 100755 --- a/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png +++ b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png diff --git a/indra/newview/skins/default/textures/model_wizard/progress_light.png b/indra/newview/skins/default/textures/model_wizard/progress_light.pngBinary files differ index 019344f812..c8ab151c44 100755 --- a/indra/newview/skins/default/textures/model_wizard/progress_light.png +++ b/indra/newview/skins/default/textures/model_wizard/progress_light.png diff --git a/indra/newview/skins/default/textures/navbar/Search.png b/indra/newview/skins/default/textures/navbar/Search.pngBinary files differ index 0d0e330bc7..4c29e57f7b 100755 --- a/indra/newview/skins/default/textures/navbar/Search.png +++ b/indra/newview/skins/default/textures/navbar/Search.png diff --git a/indra/newview/skins/default/textures/navbar/separator.png b/indra/newview/skins/default/textures/navbar/separator.pngBinary files differ index b93e5791a7..c1d74e5a64 100755 --- a/indra/newview/skins/default/textures/navbar/separator.png +++ b/indra/newview/skins/default/textures/navbar/separator.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.pngBinary files differ index 50c01062a5..4e59042e33 100755 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Foreground.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.pngBinary files differ index bf2065cd37..be7b298bb8 100755 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Dock_Press.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.pngBinary files differ index 8b48258142..1e234ff09b 100755 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Foreground.png diff --git a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.pngBinary files differ index 09efe779fe..48c78b453d 100755 --- a/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png +++ b/indra/newview/skins/default/textures/taskpanel/Sidebar_Icon_Undock_Press.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/facebook.png b/indra/newview/skins/default/textures/toolbar_icons/facebook.pngBinary files differ index b960b834dc..ae524b643f 100644 --- a/indra/newview/skins/default/textures/toolbar_icons/facebook.png +++ b/indra/newview/skins/default/textures/toolbar_icons/facebook.png diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.pngBinary files differ index 9fcf46794d..9eeb1d4e09 100755 --- a/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png +++ b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png diff --git a/indra/newview/skins/default/textures/up_arrow.png b/indra/newview/skins/default/textures/up_arrow.pngBinary files differ index fe68ad49dc..76f839510e 100755 --- a/indra/newview/skins/default/textures/up_arrow.png +++ b/indra/newview/skins/default/textures/up_arrow.png diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Down.png b/indra/newview/skins/default/textures/widgets/Arrow_Down.pngBinary files differ index e10f6472eb..cb4eea953c 100755 --- a/indra/newview/skins/default/textures/widgets/Arrow_Down.png +++ b/indra/newview/skins/default/textures/widgets/Arrow_Down.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.pngBinary files differ index c7c0eaa96b..3897e16801 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.pngBinary files differ index 4a73c254fc..95a4a36c9d 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.pngBinary files differ index 6fb5c432de..20d1ebf53d 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.pngBinary files differ index fa18517933..63f4b503e2 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.pngBinary files differ index bed1a701bd..d570f77f6d 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.pngBinary files differ index 57ce9af574..28a002b118 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.pngBinary files differ index 2c43022f0e..a195e80b0e 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.pngBinary files differ index 6b8c1baca4..9863ee32cb 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.pngBinary files differ index 51505e80c5..2ffbc4a16f 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.pngBinary files differ index 9f93efbd93..ce47da169b 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.pngBinary files differ index 3a4ec1a315..2225150983 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.pngBinary files differ index 1f1b4c2ed5..2d541d0f70 100755 --- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png +++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png diff --git a/indra/newview/skins/default/textures/widgets/Tooltip.png b/indra/newview/skins/default/textures/widgets/Tooltip.pngBinary files differ index f989ac9083..3c4d6a965d 100755 --- a/indra/newview/skins/default/textures/widgets/Tooltip.png +++ b/indra/newview/skins/default/textures/widgets/Tooltip.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.pngBinary files differ index 2292b79eda..3534b716fd 100755 --- a/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Close_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.pngBinary files differ index 1a514742d3..177c0675bb 100755 --- a/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Help_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Help_Press.png b/indra/newview/skins/default/textures/windows/Icon_Help_Press.pngBinary files differ index 7478644b6a..aa21a1c789 100755 --- a/indra/newview/skins/default/textures/windows/Icon_Help_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Help_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.pngBinary files differ index 9f72a5422b..a98a3a98c2 100755 --- a/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Minimize_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png b/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.pngBinary files differ index 07db8be1b0..5df0e7691c 100755 --- a/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Minimize_Press.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.pngBinary files differ index 1e753aaf1d..b4d4ef01fc 100755 --- a/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png +++ b/indra/newview/skins/default/textures/windows/Icon_Restore_Foreground.png diff --git a/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png b/indra/newview/skins/default/textures/windows/Icon_Restore_Press.pngBinary files differ index be66b05230..0d0238dc32 100755 --- a/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png +++ b/indra/newview/skins/default/textures/windows/Icon_Restore_Press.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_down.png b/indra/newview/skins/default/textures/windows/hint_arrow_down.pngBinary files differ index ddadef0978..0cb5a819ec 100755 --- a/indra/newview/skins/default/textures/windows/hint_arrow_down.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_down.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_left.png b/indra/newview/skins/default/textures/windows/hint_arrow_left.pngBinary files differ index 2794b967e8..45204d9132 100755 --- a/indra/newview/skins/default/textures/windows/hint_arrow_left.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_left.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png b/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.pngBinary files differ index 0dfc99898d..3e3ae9f42d 100755 --- a/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_right.png b/indra/newview/skins/default/textures/windows/hint_arrow_right.pngBinary files differ index 7ac57f805b..3fe7a773c3 100755 --- a/indra/newview/skins/default/textures/windows/hint_arrow_right.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_right.png diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_up.png b/indra/newview/skins/default/textures/windows/hint_arrow_up.pngBinary files differ index bb3e1c07fa..44f003dc63 100755 --- a/indra/newview/skins/default/textures/windows/hint_arrow_up.png +++ b/indra/newview/skins/default/textures/windows/hint_arrow_up.png diff --git a/indra/newview/skins/default/textures/windows/hint_background.png b/indra/newview/skins/default/textures/windows/hint_background.pngBinary files differ index cfac5deacb..e25f354347 100755 --- a/indra/newview/skins/default/textures/windows/hint_background.png +++ b/indra/newview/skins/default/textures/windows/hint_background.png diff --git a/indra/newview/skins/default/textures/windows/yellow_gradient.png b/indra/newview/skins/default/textures/windows/yellow_gradient.pngBinary files differ index 5fd847aaef..5bd21b4297 100755 --- a/indra/newview/skins/default/textures/windows/yellow_gradient.png +++ b/indra/newview/skins/default/textures/windows/yellow_gradient.png diff --git a/indra/newview/skins/default/textures/world/CameraDragDot.png b/indra/newview/skins/default/textures/world/CameraDragDot.pngBinary files differ index 57698e1956..2ccf098e0f 100755 --- a/indra/newview/skins/default/textures/world/CameraDragDot.png +++ b/indra/newview/skins/default/textures/world/CameraDragDot.png diff --git a/indra/newview/skins/default/textures/world/NoEntryLines.png b/indra/newview/skins/default/textures/world/NoEntryLines.pngBinary files differ index 18e270bde5..d7496b8bd0 100755 --- a/indra/newview/skins/default/textures/world/NoEntryLines.png +++ b/indra/newview/skins/default/textures/world/NoEntryLines.png diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index f079f31c81..7544fe1c41 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -798,15 +798,42 @@ class Darwin_i386_Manifest(ViewerManifest):                      for libfile in dylibs:                          symlinkf(os.path.join(os.pardir, os.pardir, os.pardir, libfile),                                   os.path.join(resource_path, libfile)) - -                # plugins +                # SLPlugin.app/Contents/Resources gets those Qt4 libraries it needs. +                if self.prefix(src="", dst="SLPlugin.app/Contents/Resources"): +                    for libfile in ('libQtCore.4.dylib', +                                    'libQtCore.4.7.1.dylib', +                                    'libQtGui.4.dylib', +                                    'libQtGui.4.7.1.dylib', +                                    'libQtNetwork.4.dylib', +                                    'libQtNetwork.4.7.1.dylib', +                                    'libQtOpenGL.4.dylib', +                                    'libQtOpenGL.4.7.1.dylib', +                                    'libQtSvg.4.dylib', +                                    'libQtSvg.4.7.1.dylib', +                                    'libQtWebKit.4.dylib', +                                    'libQtWebKit.4.7.1.dylib', +                                    'libQtXml.4.dylib', +                                    'libQtXml.4.7.1.dylib'): +                        self.path2basename("../packages/lib/release", libfile) +                    self.end_prefix("SLPlugin.app/Contents/Resources") + +                # Qt4 codecs go to llplugin.  Not certain why but this is the first +                # location probed according to dtruss so we'll go with that. +                if self.prefix(src="../packages/plugins/codecs/", dst="llplugin/codecs"): +                    self.path("libq*.dylib") +                    self.end_prefix("llplugin/codecs") + +                # Similarly for imageformats. +                if self.prefix(src="../packages/plugins/imageformats/", dst="llplugin/imageformats"): +                    self.path("libq*.dylib") +                    self.end_prefix("llplugin/imageformats") + +                # SLPlugin plugins proper                  if self.prefix(src="", dst="llplugin"):                      self.path2basename("../media_plugins/quicktime/" + self.args['configuration'],                                         "media_plugin_quicktime.dylib")                      self.path2basename("../media_plugins/webkit/" + self.args['configuration'],                                         "media_plugin_webkit.dylib") -                    self.path2basename("../packages/lib/release", "libllqtwebkit.dylib") -                      self.end_prefix("llplugin")                  self.end_prefix("Resources") @@ -1011,6 +1038,7 @@ class LinuxManifest(ViewerManifest):              self.path("../media_plugins/gstreamer010/libmedia_plugin_gstreamer010.so", "libmedia_plugin_gstreamer.so")              self.end_prefix("bin/llplugin") +        # llcommon          if not self.path("../llcommon/libllcommon.so", "lib/libllcommon.so"):              print "Skipping llcommon.so (assuming llcommon was linked statically)" @@ -1076,20 +1104,9 @@ class Linux_i686_Manifest(LinuxManifest):              self.path("libaprutil-1.so")              self.path("libaprutil-1.so.0")              self.path("libaprutil-1.so.0.4.1") -            self.path("libboost_context-mt.so.*") -            self.path("libboost_filesystem-mt.so.*") -            self.path("libboost_program_options-mt.so.*") -            self.path("libboost_regex-mt.so.*") -            self.path("libboost_signals-mt.so.*") -            self.path("libboost_system-mt.so.*") -            self.path("libboost_thread-mt.so.*") -            self.path("libcollada14dom.so")              self.path("libdb*.so") -            self.path("libcrypto.so.*")              self.path("libexpat.so.*") -            self.path("libssl.so.1.0.0")              self.path("libGLOD.so") -            self.path("libminizip.so")              self.path("libuuid.so*")              self.path("libSDL-1.2.so.*")              self.path("libdirectfb-1.*.so.*") @@ -1121,6 +1138,10 @@ class Linux_i686_Manifest(LinuxManifest):              # previous call did, without having to explicitly state the              # version number.              self.path("libfontconfig.so.*.*") + +            # Include libfreetype.so. but have it work as libfontconfig does. +            self.path("libfreetype.so.*.*") +              try:                  self.path("libtcmalloc.so*") #formerly called google perf tools                  pass @@ -1129,26 +1150,55 @@ class Linux_i686_Manifest(LinuxManifest):                  pass              try: -                    self.path("libfmodex-*.so") -                    self.path("libfmodex.so") -                    pass +                self.path("libfmodex-*.so") +                self.path("libfmodex.so") +                pass              except: -                    print "Skipping libfmodex.so - not found" -                    pass +                print "Skipping libfmodex.so - not found" +                pass              self.end_prefix("lib")              # Vivox runtimes              if self.prefix(src="../packages/lib/release", dst="bin"): -                    self.path("SLVoice") -                    self.end_prefix() +                self.path("SLVoice") +                self.end_prefix() +            if self.prefix(src="../packages/lib/release", dst="lib"): +                self.path("libortp.so") +                self.path("libsndfile.so.1") +                #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib +                self.path("libvivoxsdk.so") +                self.path("libvivoxplatform.so") +                self.end_prefix("lib") + +            # plugin runtime              if self.prefix(src="../packages/lib/release", dst="lib"): -                    self.path("libortp.so") -                    self.path("libsndfile.so.1") -                    #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib -                    self.path("libvivoxsdk.so") -                    self.path("libvivoxplatform.so") -                    self.end_prefix("lib") +                self.path("libQtCore.so*") +                self.path("libQtGui.so*") +                self.path("libQtNetwork.so*") +                self.path("libQtOpenGL.so*") +                self.path("libQtSvg.so*") +                self.path("libQtWebKit.so*") +                self.path("libQtXml.so*") +                self.end_prefix("lib") + +            # For WebKit/Qt plugin runtimes (image format plugins) +            if self.prefix(src="../packages/plugins/imageformats", dst="bin/llplugin/imageformats"): +                self.path("libqgif.so") +                self.path("libqico.so") +                self.path("libqjpeg.so") +                self.path("libqmng.so") +                self.path("libqsvg.so") +                self.path("libqtiff.so") +                self.end_prefix("bin/llplugin/imageformats") + +            # For WebKit/Qt plugin runtimes (codec/character encoding plugins) +            if self.prefix(src="../packages/plugins/codecs", dst="bin/llplugin/codecs"): +                self.path("libqcncodecs.so") +                self.path("libqjpcodecs.so") +                self.path("libqkrcodecs.so") +                self.path("libqtwcodecs.so") +                self.end_prefix("bin/llplugin/codecs")              self.strip_binaries() diff --git a/indra/test_apps/llfbconnecttest/CMakeLists.txt b/indra/test_apps/llfbconnecttest/CMakeLists.txt index f56329a010..512bf202ae 100644 --- a/indra/test_apps/llfbconnecttest/CMakeLists.txt +++ b/indra/test_apps/llfbconnecttest/CMakeLists.txt @@ -122,32 +122,24 @@ add_custom_command(TARGET llfbconnecttest POST_BUILD  ) -if (DARWIN OR WINDOWS) -  get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) -  add_custom_command(TARGET llfbconnecttest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN}  ${PLUGINS_DESTINATION_DIR} -    DEPENDS ${BUILT_WEBKIT_PLUGIN} -  ) -   -  # copy over bookmarks file if llfbconnecttest gets built -  get_target_property(BUILT_LLFBCONNECTTEST llfbconnecttest LOCATION) -  add_custom_command(TARGET llfbconnecttest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ -    DEPENDS ${BUILT_LLFBCONNECTTEST} -  ) -  # also copy it to the same place as SLPlugin, which is what the mac wants... -  add_custom_command(TARGET llfbconnecttest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} -    DEPENDS ${BUILT_LLFBCONNECTTEST} -  ) -endif (DARWIN OR WINDOWS) +get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) +add_custom_command(TARGET llfbconnecttest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN}  ${PLUGINS_DESTINATION_DIR} +  DEPENDS ${BUILT_WEBKIT_PLUGIN} +) -if (DARWIN) -  add_custom_command(TARGET llfbconnecttest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} -    DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib -  ) -endif (DARWIN) +# copy over bookmarks file if llfbconnecttest gets built +get_target_property(BUILT_LLFBCONNECTTEST llfbconnecttest LOCATION) +add_custom_command(TARGET llfbconnecttest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ +  DEPENDS ${BUILT_LLFBCONNECTTEST} +) + +# also copy it to the same place as SLPlugin, which is what the mac wants... +add_custom_command(TARGET llfbconnecttest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} +  DEPENDS ${BUILT_LLFBCONNECTTEST} +)  if(WINDOWS)    #******************** @@ -301,4 +293,80 @@ if(WINDOWS)  endif(WINDOWS) +if (DARWIN) +  set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +  set(fbconnecttest_release_files +    libexception_handler.dylib +    libaprutil-1.0.dylib +    libapr-1.0.dylib +    libexpat.1.5.2.dylib +    libQtCore.4.7.1.dylib +    libQtCore.4.dylib +    libQtGui.4.7.1.dylib +    libQtGui.4.dylib +    libQtNetwork.4.7.1.dylib +    libQtNetwork.4.dylib +    libQtOpenGL.4.7.1.dylib +    libQtOpenGL.4.dylib +    libQtWebKit.4.7.1.dylib +    libQtWebKit.4.dylib +    libQtSvg.4.7.1.dylib +    libQtSvg.4.dylib +    libQtXml.4.7.1.dylib +    libQtXml.4.dylib +    ) +  copy_if_different( +    ${fbconnecttest_release_src_dir} +    "${PLUGINS_DESTINATION_DIR}" +    out_targets +    ${fbconnecttest_release_files} +    ) +  set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) + +  # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt image format plugins) +  set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/imageformats") +  set(fbconnecttest_release_files +    libqgif.dylib +    libqico.dylib +    libqjpeg.dylib +    libqmng.dylib +    libqsvg.dylib +    libqtiff.dylib +    ) +  copy_if_different( +    ${fbconnecttest_release_src_dir} +    "${PLUGINS_DESTINATION_DIR}/imageformats" +    out_targets +    ${fbconnecttest_release_files} +    ) +  set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) + +  # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt codec plugins) +  set(fbconnecttest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/codecs") +  set(fbconnecttest_release_files +    libqcncodecs.dylib +    libqjpcodecs.dylib +    libqkrcodecs.dylib +    libqtwcodecs.dylib +    ) +  copy_if_different( +    ${fbconnecttest_release_src_dir} +    "${PLUGINS_DESTINATION_DIR}/codecs" +    out_targets +    ${fbconnecttest_release_files} +    ) +  set(fbconnect_test_targets ${fbconnect_test_targets} ${out_targets}) + +  add_custom_target(copy_fbconnecttest_libs ALL +    DEPENDS  +    ${fbconnect_test_targets} +    ) + +  add_dependencies(llfbconnecttest copy_fbconnecttest_libs) +endif (DARWIN) + +if (LINUX) + +endif (LINUX) +  ll_deploy_sharedlibs_command(llfbconnecttest)  diff --git a/indra/test_apps/llfbconnecttest/README.Linden b/indra/test_apps/llfbconnecttest/README.Linden new file mode 100644 index 0000000000..7488ce680a --- /dev/null +++ b/indra/test_apps/llfbconnecttest/README.Linden @@ -0,0 +1,20 @@ + +1.  Description + +    Exercises SLPlugin.  Specific functions and goals aren't clear +    from the source. + +2.  Running + +  2.1  Mac + +    Make certain '.' is included in PATH.  E.g.: + +       PATH=.:"$PATH" open build-darwin-i386/test_apps/llfbconnecttest/RelWithDebInfo/llfbconnecttest.app + +    Otherwise the program won't find SLPlugin and will timeout and +    fail after 30 seconds and give you little information as to why. + +    Running 'dtruss' on plugin test applications will give you a great +    deal of insight into why they aren't activating. + diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt index 8179be66f5..9d44563e26 100755 --- a/indra/test_apps/llplugintest/CMakeLists.txt +++ b/indra/test_apps/llplugintest/CMakeLists.txt @@ -346,44 +346,44 @@ add_custom_command(TARGET llmediaplugintest POST_BUILD    DEPENDS ${BUILT_LLCOMMON}  ) +get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) +add_custom_command(TARGET llmediaplugintest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN}  ${PLUGINS_DESTINATION_DIR} +  DEPENDS ${BUILT_WEBKIT_PLUGIN} +)  if (DARWIN OR WINDOWS) -  get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) -  add_custom_command(TARGET llmediaplugintest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_WEBKIT_PLUGIN}  ${PLUGINS_DESTINATION_DIR} -    DEPENDS ${BUILT_WEBKIT_PLUGIN} -  ) -    get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION)    add_custom_command(TARGET llmediaplugintest POST_BUILD      COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_QUICKTIME_PLUGIN}  ${PLUGINS_DESTINATION_DIR}      DEPENDS ${BUILT_QUICKTIME_PLUGIN}    ) -   -  get_target_property(BUILT_EXAMPLE_PLUGIN media_plugin_example LOCATION) -  add_custom_command(TARGET llmediaplugintest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_EXAMPLE_PLUGIN}  ${PLUGINS_DESTINATION_DIR} -    DEPENDS ${BUILT_EXAMPLE_PLUGIN} -  ) -   -  # copy over bookmarks file if llmediaplugintest gets built -  get_target_property(BUILT_LLMEDIAPLUGINTEST llmediaplugintest LOCATION) -  add_custom_command(TARGET llmediaplugintest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ -    DEPENDS ${BUILT_LLMEDIAPLUGINTEST} -  ) -  # also copy it to the same place as SLPlugin, which is what the mac wants... -  add_custom_command(TARGET llmediaplugintest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} -    DEPENDS ${BUILT_LLMEDIAPLUGINTEST} -  )  endif (DARWIN OR WINDOWS) +get_target_property(BUILT_EXAMPLE_PLUGIN media_plugin_example LOCATION) +add_custom_command(TARGET llmediaplugintest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_EXAMPLE_PLUGIN}  ${PLUGINS_DESTINATION_DIR} +  DEPENDS ${BUILT_EXAMPLE_PLUGIN} +) + +# copy over bookmarks file if llmediaplugintest gets built +get_target_property(BUILT_LLMEDIAPLUGINTEST llmediaplugintest LOCATION) +add_custom_command(TARGET llmediaplugintest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${CMAKE_CURRENT_BINARY_DIR}/ +  DEPENDS ${BUILT_LLMEDIAPLUGINTEST} +) + +# also copy it to the same place as SLPlugin, which is what the mac wants... +add_custom_command(TARGET llmediaplugintest POST_BUILD +  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bookmarks.txt ${PLUGINS_DESTINATION_DIR} +  DEPENDS ${BUILT_LLMEDIAPLUGINTEST} +) +  if (DARWIN) -  add_custom_command(TARGET llmediaplugintest POST_BUILD -    COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} -    DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib -  ) +#   add_custom_command(TARGET llmediaplugintest POST_BUILD +#     COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} +#     DEPENDS ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib +#   )  endif (DARWIN)  if(WINDOWS) @@ -538,4 +538,76 @@ if(WINDOWS)  endif(WINDOWS) +if (DARWIN) +  set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") +  set(plugintest_release_files +    libexception_handler.dylib +    libaprutil-1.0.dylib +    libapr-1.0.dylib +    libexpat.1.5.2.dylib +    libQtCore.4.7.1.dylib +    libQtCore.4.dylib +    libQtGui.4.7.1.dylib +    libQtGui.4.dylib +    libQtNetwork.4.7.1.dylib +    libQtNetwork.4.dylib +    libQtOpenGL.4.7.1.dylib +    libQtOpenGL.4.dylib +    libQtWebKit.4.7.1.dylib +    libQtWebKit.4.dylib +    libQtSvg.4.7.1.dylib +    libQtSvg.4.dylib +    libQtXml.4.7.1.dylib +    libQtXml.4.dylib +    ) +  copy_if_different( +    ${plugintest_release_src_dir} +    "${PLUGINS_DESTINATION_DIR}" +    out_targets +    ${plugintest_release_files} +    ) +  set(plugin_test_targets ${plugin_test_targets} ${out_targets}) + +  # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt image format plugins) +  set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/imageformats") +  set(plugintest_release_files +    libqgif.dylib +    libqico.dylib +    libqjpeg.dylib +    libqmng.dylib +    libqsvg.dylib +    libqtiff.dylib +    ) +  copy_if_different( +    ${plugintest_release_src_dir} +    "${PLUGINS_DESTINATION_DIR}/imageformats" +    out_targets +    ${plugintest_release_files} +    ) +  set(plugin_test_targets ${plugin_test_targets} ${out_targets}) + +  # Release & ReleaseDebInfo config runtime files required for the FB connect test (Qt codec plugins) +  set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_PLUGINS}/codecs") +  set(plugintest_release_files +    libqcncodecs.dylib +    libqjpcodecs.dylib +    libqkrcodecs.dylib +    libqtwcodecs.dylib +    ) +  copy_if_different( +    ${plugintest_release_src_dir} +    "${PLUGINS_DESTINATION_DIR}/codecs" +    out_targets +    ${plugintest_release_files} +    ) +  set(plugin_test_targets ${plugin_test_targets} ${out_targets}) + +  add_custom_target(copy_plugintest_libs ALL +    DEPENDS  +    ${plugin_test_targets} +    ) + +  add_dependencies(llmediaplugintest copy_plugintest_libs) +endif (DARWIN) +  ll_deploy_sharedlibs_command(llmediaplugintest)  diff --git a/indra/test_apps/llplugintest/README.Linden b/indra/test_apps/llplugintest/README.Linden new file mode 100644 index 0000000000..4a9f223c21 --- /dev/null +++ b/indra/test_apps/llplugintest/README.Linden @@ -0,0 +1,21 @@ + +1.  Description + +    Exercises SLPlugin.  Demonstrates mediakit plugin reuse and +    switchover as MIME type changes (web, quicktime, flash). + + +2.  Running + +  2.1  Mac + +    Make certain '.' is included in PATH.  E.g.: + +       PATH=.:"$PATH" open build-darwin-i386/test_apps/llmediaplugintest/RelWithDebInfo/llmediaplugintest.app + +    Otherwise the program won't find SLPlugin and will timeout and +    fail after 30 seconds and give you little information as to why. + +    Running 'dtruss' on plugin test applications will give you a great +    deal of insight into why they aren't activating. + diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt index 6f366677c9..ce80d55829 100755 --- a/indra/viewer_components/login/CMakeLists.txt +++ b/indra/viewer_components/login/CMakeLists.txt @@ -46,6 +46,8 @@ target_link_libraries(lllogin      ${LLMATH_LIBRARIES}      ${LLXML_LIBRARIES}      ${BOOST_CONTEXT_LIBRARY} +    ${BOOST_COROUTINE_LIBRARY} +    ${BOOST_SYSTEM_LIBRARY}      )  if(LL_TESTS) @@ -55,7 +57,7 @@ if(LL_TESTS)    set_source_files_properties(      lllogin.cpp      PROPERTIES -    LL_TEST_ADDITIONAL_LIBRARIES "${BOOST_CONTEXT_LIBRARY}" +    LL_TEST_ADDITIONAL_LIBRARIES "${BOOST_CONTEXT_LIBRARY};${BOOST_COROUTINE_LIBRARY};${BOOST_SYSTEM_LIBRARY}"      )    LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}") | 
