aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorthickbrick2011-02-03 16:44:28 +0200
committerthickbrick2011-02-03 16:44:28 +0200
commitc5e8ba5aec5e9f8af5255c23184a40fdf497b37c (patch)
treefe776800477a893b522937ac9942ea050cee48d5
parentFix a brain fart in 981e88b925 (diff)
parentPorted keyboard shortcut for align tool from Ascent, by Beeks. Has the follow... (diff)
downloadmeta-impy-c5e8ba5aec5e9f8af5255c23184a40fdf497b37c.zip
meta-impy-c5e8ba5aec5e9f8af5255c23184a40fdf497b37c.tar.gz
meta-impy-c5e8ba5aec5e9f8af5255c23184a40fdf497b37c.tar.bz2
meta-impy-c5e8ba5aec5e9f8af5255c23184a40fdf497b37c.tar.xz
Merge remote branch 'origin/weekly' into weekly
-rw-r--r--linden/doc/contributions.txt4
-rw-r--r--linden/indra/cmake/00-Common.cmake2
-rw-r--r--linden/indra/cmake/APR.cmake20
-rw-r--r--linden/indra/cmake/BerkeleyDB.cmake7
-rw-r--r--linden/indra/cmake/CopyWinLibs.cmake6
-rw-r--r--linden/indra/cmake/LLCommon.cmake21
-rw-r--r--linden/indra/cmake/ViewerMiscLibs.cmake8
-rwxr-xr-xlinden/indra/develop.py8
-rw-r--r--linden/indra/llcharacter/llcharacter.cpp1
-rw-r--r--linden/indra/llcommon/CMakeLists.txt23
-rw-r--r--linden/indra/llcommon/imageids.h48
-rw-r--r--linden/indra/llcommon/indra_constants.h10
-rw-r--r--linden/indra/llcommon/linden_common.h19
-rw-r--r--linden/indra/llcommon/llapp.cpp2
-rw-r--r--linden/indra/llcommon/llapp.h13
-rw-r--r--linden/indra/llcommon/llapr.h21
-rw-r--r--linden/indra/llcommon/llassettype.h2
-rw-r--r--linden/indra/llcommon/llbase32.h2
-rw-r--r--linden/indra/llcommon/llbase64.h2
-rw-r--r--linden/indra/llcommon/llcommon.h2
-rw-r--r--linden/indra/llcommon/llcrc.h2
-rw-r--r--linden/indra/llcommon/llcriticaldamp.h2
-rw-r--r--linden/indra/llcommon/llcursortypes.h2
-rw-r--r--linden/indra/llcommon/lldate.h6
-rw-r--r--linden/indra/llcommon/llerror.cpp2
-rw-r--r--linden/indra/llcommon/llerror.h6
-rw-r--r--linden/indra/llcommon/llerrorcontrol.h46
-rw-r--r--linden/indra/llcommon/llerrorthread.cpp1
-rw-r--r--linden/indra/llcommon/llerrorthread.h2
-rw-r--r--linden/indra/llcommon/llevent.h10
-rw-r--r--linden/indra/llcommon/llfasttimer.cpp1
-rw-r--r--linden/indra/llcommon/llfasttimer.h4
-rw-r--r--linden/indra/llcommon/llfile.h10
-rw-r--r--linden/indra/llcommon/llfindlocale.h4
-rw-r--r--linden/indra/llcommon/llfixedbuffer.h2
-rw-r--r--linden/indra/llcommon/llformat.h2
-rw-r--r--linden/indra/llcommon/llframetimer.h2
-rw-r--r--linden/indra/llcommon/llheartbeat.h2
-rw-r--r--linden/indra/llcommon/llliveappconfig.h2
-rw-r--r--linden/indra/llcommon/lllivefile.h2
-rw-r--r--linden/indra/llcommon/lllog.h2
-rw-r--r--linden/indra/llcommon/llmd5.cpp1
-rw-r--r--linden/indra/llcommon/llmd5.h2
-rw-r--r--linden/indra/llcommon/llmemory.cpp13
-rw-r--r--linden/indra/llcommon/llmemory.h10
-rw-r--r--linden/indra/llcommon/llmemorystream.h4
-rw-r--r--linden/indra/llcommon/llmemtype.h2
-rw-r--r--linden/indra/llcommon/llmetrics.h2
-rw-r--r--linden/indra/llcommon/llmortician.h2
-rw-r--r--linden/indra/llcommon/llpreprocessor.h62
-rw-r--r--linden/indra/llcommon/llprocesslauncher.h2
-rw-r--r--linden/indra/llcommon/llqueuedthread.cpp1
-rw-r--r--linden/indra/llcommon/llqueuedthread.h4
-rw-r--r--linden/indra/llcommon/llrand.h12
-rw-r--r--linden/indra/llcommon/llrun.h6
-rw-r--r--linden/indra/llcommon/llsd.cpp12
-rw-r--r--linden/indra/llcommon/llsd.h4
-rw-r--r--linden/indra/llcommon/llsdserialize.h18
-rw-r--r--linden/indra/llcommon/llsdserialize_xml.cpp2
-rw-r--r--linden/indra/llcommon/llsdutil.h22
-rw-r--r--linden/indra/llcommon/llsecondlifeurls.h8
-rw-r--r--linden/indra/llcommon/llsimplehash.h2
-rw-r--r--linden/indra/llcommon/llstat.h14
-rw-r--r--linden/indra/llcommon/llstreamtools.h36
-rw-r--r--linden/indra/llcommon/llstring.h107
-rw-r--r--linden/indra/llcommon/llstringtable.h8
-rw-r--r--linden/indra/llcommon/llsys.h18
-rw-r--r--linden/indra/llcommon/llthread.h12
-rw-r--r--linden/indra/llcommon/lltimer.cpp4
-rw-r--r--linden/indra/llcommon/lltimer.h29
-rw-r--r--linden/indra/llcommon/lluri.h4
-rw-r--r--linden/indra/llcommon/lluuid.h9
-rw-r--r--linden/indra/llcommon/llworkerthread.h4
-rw-r--r--linden/indra/llcommon/metaclass.h2
-rw-r--r--linden/indra/llcommon/metaproperty.h2
-rw-r--r--linden/indra/llcommon/reflective.h2
-rw-r--r--linden/indra/llcommon/timing.h2
-rw-r--r--linden/indra/llcommon/u64.h10
-rw-r--r--linden/indra/llinventory/llparcel.h2
-rw-r--r--linden/indra/llmath/lloctree.h6
-rw-r--r--linden/indra/llmath/lltreenode.h2
-rw-r--r--linden/indra/llmessage/CMakeLists.txt4
-rw-r--r--linden/indra/llmessage/llassetstorage.cpp12
-rw-r--r--linden/indra/llmessage/llassetstorage.h6
-rw-r--r--linden/indra/llmessage/llcurl.cpp4
-rw-r--r--linden/indra/llmessage/llcurl.h2
-rw-r--r--linden/indra/llmessage/llhttpassetstorage.cpp2
-rw-r--r--linden/indra/llmessage/llhttpassetstorage.h2
-rw-r--r--linden/indra/llmessage/llhttpnode.cpp18
-rw-r--r--linden/indra/llmessage/llhttpnode.h10
-rw-r--r--linden/indra/llmessage/llpumpio.cpp1
-rw-r--r--linden/indra/llmessage/llregionpresenceverifier.cpp1
-rw-r--r--linden/indra/llmessage/llsdappservices.cpp4
-rw-r--r--linden/indra/llmessage/llsdhttpserver.cpp4
-rw-r--r--linden/indra/llplugin/CMakeLists.txt4
-rw-r--r--linden/indra/llrender/llfontgl.cpp1
-rw-r--r--linden/indra/llrender/llgl.cpp2
-rw-r--r--linden/indra/llui/llfunctorregistry.cpp1
-rw-r--r--linden/indra/llui/llscrolllistctrl.cpp38
-rw-r--r--linden/indra/llui/llscrolllistctrl.h4
-rw-r--r--linden/indra/llvfs/lldir.cpp1
-rwxr-xr-xlinden/indra/llvfs/llpidlock.cpp3
-rwxr-xr-xlinden/indra/llvfs/llpidlock.h2
-rw-r--r--linden/indra/llvfs/llvfile.cpp1
-rw-r--r--linden/indra/llvfs/llvfs.cpp1
-rw-r--r--linden/indra/llwindow/CMakeLists.txt16
-rw-r--r--linden/indra/llwindow/lldxhardware.cpp1
-rw-r--r--linden/indra/llwindow/llwindowmacosx.h1
-rw-r--r--linden/indra/llwindow/llwindowsdl.cpp6
-rw-r--r--linden/indra/llwindow/llwindowsdl.h2
-rw-r--r--linden/indra/llwindow/llwindowwin32.cpp2
-rw-r--r--linden/indra/lscript/lscript_execute.h1
-rw-r--r--linden/indra/lscript/lscript_execute/llscriptresource.cpp1
-rw-r--r--linden/indra/media_plugins/base/CMakeLists.txt4
-rw-r--r--linden/indra/media_plugins/example/CMakeLists.txt4
-rw-r--r--linden/indra/media_plugins/gstreamer010/CMakeLists.txt12
-rwxr-xr-xlinden/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h26
-rwxr-xr-xlinden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp2
-rw-r--r--linden/indra/media_plugins/webkit/CMakeLists.txt12
-rw-r--r--linden/indra/newview/CMakeLists.txt15
-rw-r--r--linden/indra/newview/app_settings/default_grids.xml12
-rw-r--r--linden/indra/newview/app_settings/logcontrol.xml1
-rw-r--r--linden/indra/newview/app_settings/settings.xml61
-rw-r--r--linden/indra/newview/app_settings/viewerversion.xml2
-rw-r--r--linden/indra/newview/emeraldboobutils.cpp1
-rw-r--r--linden/indra/newview/jcfloaterareasearch.cpp117
-rw-r--r--linden/indra/newview/jcfloaterareasearch.h17
-rw-r--r--linden/indra/newview/llagent.cpp4
-rw-r--r--linden/indra/newview/llappviewer.h2
-rw-r--r--linden/indra/newview/llfeaturemanager.cpp1
-rw-r--r--linden/indra/newview/llfloaterabout.cpp1
-rw-r--r--linden/indra/newview/llfloaterregioninfo.cpp6
-rw-r--r--linden/indra/newview/llfloaterregioninfo.h2
-rw-r--r--linden/indra/newview/llfloatertools.cpp3
-rw-r--r--linden/indra/newview/llfolderview.h2
-rw-r--r--linden/indra/newview/llhomelocationresponder.cpp5
-rw-r--r--linden/indra/newview/llhomelocationresponder.h2
-rw-r--r--linden/indra/newview/llinventorybridge.h2
-rw-r--r--linden/indra/newview/llpanelinventory.cpp5
-rw-r--r--linden/indra/newview/llspatialpartition.cpp6
-rw-r--r--linden/indra/newview/lltoolcomp.cpp22
-rw-r--r--linden/indra/newview/llviewerassetstorage.h1
-rw-r--r--linden/indra/newview/llviewermenu.cpp13
-rw-r--r--linden/indra/newview/llvoavatar.cpp9
-rw-r--r--linden/indra/newview/llwatchdog.h3
-rw-r--r--linden/indra/newview/qtoolalign.cpp23
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_command_line.xml42
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_telehub.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_teleport_history.xml35
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml28
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_tools.xml288
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_top_objects.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_tos.xml19
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_voice_license.xml18
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_water.xml12
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_windlight_options.xml13
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_world_map.xml26
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_tools.xml7
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_areasearch.xml16
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml187
-rw-r--r--linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml18
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py55
-rwxr-xr-xlinden/install.xml12
168 files changed, 1484 insertions, 675 deletions
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt
index bb1c98b..80c11ce 100644
--- a/linden/doc/contributions.txt
+++ b/linden/doc/contributions.txt
@@ -90,6 +90,7 @@ Aleric Inglewood
90 IMP-667 90 IMP-667
91 IMP-670 91 IMP-670
92 IMP-688 92 IMP-688
93 IMP-692
93Alissa Sabre 94Alissa Sabre
94 VWR-81 95 VWR-81
95 VWR-83 96 VWR-83
@@ -467,6 +468,9 @@ Nicholaz Beresford
467 VWR-2412 468 VWR-2412
468 VWR-2682 469 VWR-2682
469 VWR-2684 470 VWR-2684
471Nicky Perian
472 IMP-680
473 IMP-685
470Nounouch Hapmouche 474Nounouch Hapmouche
471 VWR-238 475 VWR-238
472Patric Mills 476Patric Mills
diff --git a/linden/indra/cmake/00-Common.cmake b/linden/indra/cmake/00-Common.cmake
index 4c04be9..c3aa9ea 100644
--- a/linden/indra/cmake/00-Common.cmake
+++ b/linden/indra/cmake/00-Common.cmake
@@ -210,7 +210,7 @@ if (LINUX OR DARWIN)
210 set(GCC_WARNINGS "${GCC_WARNINGS} -Werror") 210 set(GCC_WARNINGS "${GCC_WARNINGS} -Werror")
211 endif (NOT GCC_DISABLE_FATAL_WARNINGS) 211 endif (NOT GCC_DISABLE_FATAL_WARNINGS)
212 212
213 set(GCC_CXX_WARNINGS "${GCC_WARNINGS} -Wno-reorder -Wno-non-virtual-dtor") 213 set(GCC_CXX_WARNINGS "${GCC_WARNINGS} -Wno-reorder -Wno-non-virtual-dtor -Woverloaded-virtual")
214 214
215 set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}") 215 set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}")
216 set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}") 216 set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}")
diff --git a/linden/indra/cmake/APR.cmake b/linden/indra/cmake/APR.cmake
index e9f6411..d1f0898 100644
--- a/linden/indra/cmake/APR.cmake
+++ b/linden/indra/cmake/APR.cmake
@@ -14,27 +14,27 @@ else (STANDALONE)
14 use_prebuilt_binary(apr_suite) 14 use_prebuilt_binary(apr_suite)
15 if (WINDOWS) 15 if (WINDOWS)
16 set(APR_LIBRARIES 16 set(APR_LIBRARIES
17 debug ${ARCH_PREBUILT_DIRS_DEBUG}/apr-1.lib 17 debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.lib
18 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/apr-1.lib 18 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.lib
19 ) 19 )
20 set(APRICONV_LIBRARIES 20 set(APRICONV_LIBRARIES
21 debug ${ARCH_PREBUILT_DIRS_DEBUG}/apriconv-1.lib 21 debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapriconv-1.lib
22 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/apriconv-1.lib 22 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapriconv-1.lib
23 ) 23 )
24 # Doesn't need to link with iconv.dll 24 # Doesn't need to link with iconv.dll
25 set(APRICONV_LIBRARIES "") 25 set(APRICONV_LIBRARIES "")
26 set(APRUTIL_LIBRARIES 26 set(APRUTIL_LIBRARIES
27 debug ${ARCH_PREBUILT_DIRS_DEBUG}/aprutil-1.lib ${APRICONV_LIBRARIES} 27 debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.lib ${APRICONV_LIBRARIES}
28 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/aprutil-1.lib ${APRICONV_LIBRARIES} 28 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.lib ${APRICONV_LIBRARIES}
29 ) 29 )
30 elseif (DARWIN) 30 elseif (DARWIN)
31 set(APR_LIBRARIES 31 set(APR_LIBRARIES
32 debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.a 32 debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.0.3.7.dylib
33 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.a 33 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.0.3.7.dylib
34 ) 34 )
35 set(APRUTIL_LIBRARIES 35 set(APRUTIL_LIBRARIES
36 debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.a 36 debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.0.3.8.dylib
37 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.a 37 optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.0.3.8.dylib
38 ) 38 )
39 set(APRICONV_LIBRARIES iconv) 39 set(APRICONV_LIBRARIES iconv)
40 else (WINDOWS) 40 else (WINDOWS)
diff --git a/linden/indra/cmake/BerkeleyDB.cmake b/linden/indra/cmake/BerkeleyDB.cmake
index d98e791..de62763 100644
--- a/linden/indra/cmake/BerkeleyDB.cmake
+++ b/linden/indra/cmake/BerkeleyDB.cmake
@@ -6,6 +6,11 @@ set(DB_FIND_REQUIRED ON)
6if (STANDALONE) 6if (STANDALONE)
7 include(FindBerkeleyDB) 7 include(FindBerkeleyDB)
8else (STANDALONE) 8else (STANDALONE)
9 set(DB_LIBRARIES db-4.2) 9 if (LINUX)
10 # Need to add dependency pthread explicitely to support ld.gold.
11 set(DB_LIBRARIES db-4.2 pthread)
12 else (LINUX)
13 set(DB_LIBRARIES db-4.2)
14 endif (LINUX)
10 set(DB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) 15 set(DB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
11endif (STANDALONE) 16endif (STANDALONE)
diff --git a/linden/indra/cmake/CopyWinLibs.cmake b/linden/indra/cmake/CopyWinLibs.cmake
index a091a31..f584689 100644
--- a/linden/indra/cmake/CopyWinLibs.cmake
+++ b/linden/indra/cmake/CopyWinLibs.cmake
@@ -29,6 +29,9 @@ set(debug_files
29 openal32.dll 29 openal32.dll
30 openjpegd.dll 30 openjpegd.dll
31 libhunspell.dll 31 libhunspell.dll
32 libapr-1.dll
33 libaprutil-1.dll
34 libapriconv-1.dll
32 ) 35 )
33 36
34copy_if_different( 37copy_if_different(
@@ -209,6 +212,9 @@ set(release_files
209 openal32.dll 212 openal32.dll
210 openjpeg.dll 213 openjpeg.dll
211 libhunspell.dll 214 libhunspell.dll
215 libapr-1.dll
216 libaprutil-1.dll
217 libapriconv-1.dll
212 ) 218 )
213 219
214copy_if_different( 220copy_if_different(
diff --git a/linden/indra/cmake/LLCommon.cmake b/linden/indra/cmake/LLCommon.cmake
index 9158e98..d87d3c0 100644
--- a/linden/indra/cmake/LLCommon.cmake
+++ b/linden/indra/cmake/LLCommon.cmake
@@ -7,20 +7,15 @@ include(ZLIB)
7 7
8set(LLCOMMON_INCLUDE_DIRS 8set(LLCOMMON_INCLUDE_DIRS
9 ${LIBS_OPEN_DIR}/llcommon 9 ${LIBS_OPEN_DIR}/llcommon
10 ${APRUTIL_INCLUDE_DIR}
11 ${APR_INCLUDE_DIR} 10 ${APR_INCLUDE_DIR}
12 ${Boost_INCLUDE_DIRS} 11 ${Boost_INCLUDE_DIRS}
13 ) 12 )
14 13
15# Files that need PIC code (pluginAPI) need to set REQUIRE_PIC on 64bit systems 14if (LINUX)
16# this will link against a llcommon built with Position Independent Code 15 # In order to support using ld.gold on linux, we need to explicitely
17# this is a requirment to link a static library (.a) to a DSO on 64 bit systems 16 # specify all libraries that llcommon uses.
18 17 # llcommon uses `clock_gettime' which is provided by librt on linux.
19if(REQUIRE_PIC) 18 set(LLCOMMON_LIBRARIES llcommon rt)
20 set(LLCOMMON_LIBRARIES llcommonPIC) 19else (LINUX)
21else(REQUIRE_PIC) 20 set(LLCOMMON_LIBRARIES llcommon)
22 set(LLCOMMON_LIBRARIES llcommon) 21endif (LINUX)
23endif(REQUIRE_PIC)
24
25#force clear the flag, files that need this must explicity set it themselves
26set(REQUIRE_PIC 0) \ No newline at end of file
diff --git a/linden/indra/cmake/ViewerMiscLibs.cmake b/linden/indra/cmake/ViewerMiscLibs.cmake
index 35f4e3a..38d0444 100644
--- a/linden/indra/cmake/ViewerMiscLibs.cmake
+++ b/linden/indra/cmake/ViewerMiscLibs.cmake
@@ -4,10 +4,12 @@ include(Prebuilt)
4if (NOT STANDALONE) 4if (NOT STANDALONE)
5 use_prebuilt_binary(libuuid) 5 use_prebuilt_binary(libuuid)
6 use_prebuilt_binary(vivox) 6 use_prebuilt_binary(vivox)
7 if(LINUX AND ${ARCH} STREQUAL "x86_64") 7 if(LINUX)
8 if (${ARCH} STREQUAL "x86_64")
8 use_prebuilt_binary(32bitcompatibilitylibs) 9 use_prebuilt_binary(32bitcompatibilitylibs)
9 endif(LINUX AND ${ARCH} STREQUAL "x86_64") 10 endif (${ARCH} STREQUAL "x86_64")
10 use_prebuilt_binary(fontconfig) 11 use_prebuilt_binary(fontconfig)
12 endif(LINUX)
11else (NOT STANDALONE) 13else (NOT STANDALONE)
12 # Download there even when using standalone. 14 # Download there even when using standalone.
13 set(STANDALONE OFF) 15 set(STANDALONE OFF)
diff --git a/linden/indra/develop.py b/linden/indra/develop.py
index 2ce9f91..e804374 100755
--- a/linden/indra/develop.py
+++ b/linden/indra/develop.py
@@ -76,6 +76,7 @@ class PlatformSetup(object):
76 build_type = build_types['relwithdebinfo'] 76 build_type = build_types['relwithdebinfo']
77 standalone = 'OFF' 77 standalone = 'OFF'
78 unattended = 'OFF' 78 unattended = 'OFF'
79 universal = 'OFF'
79 project_name = 'Imprudence' 80 project_name = 'Imprudence'
80 distcc = True 81 distcc = True
81 cmake_opts = [] 82 cmake_opts = []
@@ -404,7 +405,7 @@ class DarwinSetup(UnixSetup):
404 return 'darwin' 405 return 'darwin'
405 406
406 def arch(self): 407 def arch(self):
407 if self.unattended == 'ON': 408 if self.universal == 'ON':
408 return 'universal' 409 return 'universal'
409 else: 410 else:
410 return UnixSetup.arch(self) 411 return UnixSetup.arch(self)
@@ -417,10 +418,10 @@ class DarwinSetup(UnixSetup):
417 standalone=self.standalone, 418 standalone=self.standalone,
418 unattended=self.unattended, 419 unattended=self.unattended,
419 project_name=self.project_name, 420 project_name=self.project_name,
420 universal='', 421 universal=self.universal,
421 type=self.build_type.upper() 422 type=self.build_type.upper()
422 ) 423 )
423 if self.unattended == 'ON': 424 if self.universal == 'ON':
424 args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386\'' 425 args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386\''
425 #if simple: 426 #if simple:
426 # return 'cmake %(opts)s %(dir)r' % args 427 # return 'cmake %(opts)s %(dir)r' % args
@@ -696,6 +697,7 @@ Options:
696 --standalone build standalone, without Linden prebuild libraries 697 --standalone build standalone, without Linden prebuild libraries
697 --unattended build unattended, do not invoke any tools requiring 698 --unattended build unattended, do not invoke any tools requiring
698 a human response 699 a human response
700 --universal build a universal binary on Mac OS X (unsupported)
699 -t | --type=NAME build type ("Debug", "Release", or "RelWithDebInfo") 701 -t | --type=NAME build type ("Debug", "Release", or "RelWithDebInfo")
700 -N | --no-distcc disable use of distcc 702 -N | --no-distcc disable use of distcc
701 -G | --generator=NAME generator name 703 -G | --generator=NAME generator name
diff --git a/linden/indra/llcharacter/llcharacter.cpp b/linden/indra/llcharacter/llcharacter.cpp
index dcdfe07..46ac326 100644
--- a/linden/indra/llcharacter/llcharacter.cpp
+++ b/linden/indra/llcharacter/llcharacter.cpp
@@ -38,6 +38,7 @@
38 38
39#include "llcharacter.h" 39#include "llcharacter.h"
40#include "llstring.h" 40#include "llstring.h"
41#include "llfasttimer.h"
41 42
42#define SKEL_HEADER "Linden Skeleton 1.0" 43#define SKEL_HEADER "Linden Skeleton 1.0"
43 44
diff --git a/linden/indra/llcommon/CMakeLists.txt b/linden/indra/llcommon/CMakeLists.txt
index 7d001ae..5d590a9 100644
--- a/linden/indra/llcommon/CMakeLists.txt
+++ b/linden/indra/llcommon/CMakeLists.txt
@@ -4,6 +4,7 @@ project(llcommon)
4 4
5include(00-Common) 5include(00-Common)
6include(LLCommon) 6include(LLCommon)
7include(Linking)
7 8
8include_directories( 9include_directories(
9 ${EXPAT_INCLUDE_DIRS} 10 ${EXPAT_INCLUDE_DIRS}
@@ -192,31 +193,13 @@ set_source_files_properties(${llcommon_HEADER_FILES}
192 193
193list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES}) 194list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})
194 195
195add_library (llcommon ${llcommon_SOURCE_FILES}) 196add_library (llcommon SHARED ${llcommon_SOURCE_FILES})
196target_link_libraries( 197target_link_libraries(
197 llcommon 198 llcommon
198 ${APRUTIL_LIBRARIES} 199 ${APRUTIL_LIBRARIES}
199 ${APR_LIBRARIES} 200 ${APR_LIBRARIES}
200 ${EXPAT_LIBRARIES} 201 ${EXPAT_LIBRARIES}
201 ${ZLIB_LIBRARIES} 202 ${ZLIB_LIBRARIES}
203 ${WINDOWS_LIBRARIES}
202 ) 204 )
203 205
204if(HAVE_64_BIT)
205 add_library (llcommonPIC ${llcommon_SOURCE_FILES})
206 add_dependencies(llcommonPIC prepare)
207
208 if(WINDOWS)
209 add_definitions(/FIXED:NO)
210 else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
211 add_definitions(-fPIC)
212 endif(WINDOWS)
213
214 target_link_libraries(
215 llcommonPIC
216 ${APRUTIL_LIBRARIES}
217 ${APR_LIBRARIES}
218 ${EXPAT_LIBRARIES}
219 ${ZLIB_LIBRARIES}
220 )
221endif(HAVE_64_BIT)
222
diff --git a/linden/indra/llcommon/imageids.h b/linden/indra/llcommon/imageids.h
index 7bae496..dc726dc 100644
--- a/linden/indra/llcommon/imageids.h
+++ b/linden/indra/llcommon/imageids.h
@@ -41,35 +41,35 @@
41 41
42class LLUUID; 42class LLUUID;
43 43
44extern const LLUUID IMG_SMOKE; 44LL_COMMON_API extern const LLUUID IMG_SMOKE;
45 45
46extern const LLUUID IMG_DEFAULT; 46LL_COMMON_API extern const LLUUID IMG_DEFAULT;
47 47
48extern const LLUUID IMG_SUN; 48LL_COMMON_API extern const LLUUID IMG_SUN;
49extern const LLUUID IMG_MOON; 49LL_COMMON_API extern const LLUUID IMG_MOON;
50extern const LLUUID IMG_CLOUD_POOF; 50LL_COMMON_API extern const LLUUID IMG_CLOUD_POOF;
51extern const LLUUID IMG_SHOT; 51LL_COMMON_API extern const LLUUID IMG_SHOT;
52extern const LLUUID IMG_SPARK; 52LL_COMMON_API extern const LLUUID IMG_SPARK;
53extern const LLUUID IMG_FIRE; 53LL_COMMON_API extern const LLUUID IMG_FIRE;
54extern const LLUUID IMG_FACE_SELECT; 54LL_COMMON_API extern const LLUUID IMG_FACE_SELECT;
55extern const LLUUID IMG_DEFAULT_AVATAR; 55LL_COMMON_API extern const LLUUID IMG_DEFAULT_AVATAR;
56extern const LLUUID IMG_INVISIBLE; 56LL_COMMON_API extern const LLUUID IMG_INVISIBLE;
57 57
58extern const LLUUID IMG_EXPLOSION; 58LL_COMMON_API extern const LLUUID IMG_EXPLOSION;
59extern const LLUUID IMG_EXPLOSION_2; 59LL_COMMON_API extern const LLUUID IMG_EXPLOSION_2;
60extern const LLUUID IMG_EXPLOSION_3; 60LL_COMMON_API extern const LLUUID IMG_EXPLOSION_3;
61extern const LLUUID IMG_EXPLOSION_4; 61LL_COMMON_API extern const LLUUID IMG_EXPLOSION_4;
62extern const LLUUID IMG_SMOKE_POOF; 62LL_COMMON_API extern const LLUUID IMG_SMOKE_POOF;
63 63
64extern const LLUUID IMG_BIG_EXPLOSION_1; 64LL_COMMON_API extern const LLUUID IMG_BIG_EXPLOSION_1;
65extern const LLUUID IMG_BIG_EXPLOSION_2; 65LL_COMMON_API extern const LLUUID IMG_BIG_EXPLOSION_2;
66 66
67extern const LLUUID IMG_BLOOM1; 67LL_COMMON_API extern const LLUUID IMG_BLOOM1;
68extern const LLUUID TERRAIN_DIRT_DETAIL; 68LL_COMMON_API extern const LLUUID TERRAIN_DIRT_DETAIL;
69extern const LLUUID TERRAIN_GRASS_DETAIL; 69LL_COMMON_API extern const LLUUID TERRAIN_GRASS_DETAIL;
70extern const LLUUID TERRAIN_MOUNTAIN_DETAIL; 70LL_COMMON_API extern const LLUUID TERRAIN_MOUNTAIN_DETAIL;
71extern const LLUUID TERRAIN_ROCK_DETAIL; 71LL_COMMON_API extern const LLUUID TERRAIN_ROCK_DETAIL;
72 72
73extern const LLUUID DEFAULT_WATER_NORMAL; 73LL_COMMON_API extern const LLUUID DEFAULT_WATER_NORMAL;
74 74
75#endif 75#endif
diff --git a/linden/indra/llcommon/indra_constants.h b/linden/indra/llcommon/indra_constants.h
index 34d1538..279d280 100644
--- a/linden/indra/llcommon/indra_constants.h
+++ b/linden/indra/llcommon/indra_constants.h
@@ -263,15 +263,15 @@ const U8 GOD_LIKE = 1;
263const U8 GOD_NOT = 0; 263const U8 GOD_NOT = 0;
264 264
265// "agent id" for things that should be done to ALL agents 265// "agent id" for things that should be done to ALL agents
266extern const LLUUID LL_UUID_ALL_AGENTS; 266LL_COMMON_API extern const LLUUID LL_UUID_ALL_AGENTS;
267 267
268// inventory library owner 268// inventory library owner
269extern const LLUUID ALEXANDRIA_LINDEN_ID; 269LL_COMMON_API extern const LLUUID ALEXANDRIA_LINDEN_ID;
270 270
271extern const LLUUID GOVERNOR_LINDEN_ID; 271LL_COMMON_API extern const LLUUID GOVERNOR_LINDEN_ID;
272extern const LLUUID REALESTATE_LINDEN_ID; 272LL_COMMON_API extern const LLUUID REALESTATE_LINDEN_ID;
273// Maintenance's group id. 273// Maintenance's group id.
274extern const LLUUID MAINTENANCE_GROUP_ID; 274LL_COMMON_API extern const LLUUID MAINTENANCE_GROUP_ID;
275 275
276// Flags for kick message 276// Flags for kick message
277const U32 KICK_FLAGS_DEFAULT = 0x0; 277const U32 KICK_FLAGS_DEFAULT = 0x0;
diff --git a/linden/indra/llcommon/linden_common.h b/linden/indra/llcommon/linden_common.h
index 25dd629..bf844b9 100644
--- a/linden/indra/llcommon/linden_common.h
+++ b/linden/indra/llcommon/linden_common.h
@@ -51,16 +51,16 @@
51#include <cstdio> 51#include <cstdio>
52#include <cstdlib> 52#include <cstdlib>
53#include <ctime> 53#include <ctime>
54#include <iostream> 54#include <iosfwd>
55#include <fstream>
56 55
57// Work Microsoft compiler warnings 56// Work around Microsoft compiler warnings in STL headers
58#ifdef LL_WINDOWS 57#ifdef LL_WINDOWS
59#pragma warning (disable : 4702) // unreachable code 58#pragma warning (disable : 4702) // unreachable code
60#pragma warning (disable : 4244) // conversion from time_t to S32 59#pragma warning (disable : 4244) // conversion from time_t to S32
61#endif // LL_WINDOWS 60#endif // LL_WINDOWS
62 61
63#include <algorithm> 62// *TODO: Eliminate these, most library .cpp files don't need them.
63// Add them to llviewerprecompiledheaders.h if necessary.
64#include <list> 64#include <list>
65#include <map> 65#include <map>
66#include <vector> 66#include <vector>
@@ -76,18 +76,21 @@
76#pragma warning (disable : 4512) // assignment operator could not be generated 76#pragma warning (disable : 4512) // assignment operator could not be generated
77#pragma warning (disable : 4706) // assignment within conditional (even if((x = y)) ) 77#pragma warning (disable : 4706) // assignment within conditional (even if((x = y)) )
78#pragma warning (disable : 4265) // boost 1.36.0, non-virtual destructor in boost::exception_detail::* 78#pragma warning (disable : 4265) // boost 1.36.0, non-virtual destructor in boost::exception_detail::*
79
80// Reenable warnings we disabled above
81#pragma warning (3 : 4702) // unreachable code, we like level 3, not 4
82// moved msvc warnings to llpreprocessor.h *TODO - delete this comment after merge conflicts are unlikely -brad
79#endif // LL_WINDOWS 83#endif // LL_WINDOWS
80 84
81// Linden only libs in alpha-order other than stdtypes.h 85// Linden only libs in alpha-order other than stdtypes.h
86// *NOTE: Please keep includes here to a minimum, see above.
82#include "stdtypes.h" 87#include "stdtypes.h"
83#include "lldefs.h" 88#include "lldefs.h"
84#include "llerror.h" 89#include "llerror.h"
85#include "llextendedstatus.h" 90#include "llextendedstatus.h"
86#include "llfasttimer.h" 91// Don't do this, adds 15K lines of header code to every library file.
92//#include "llfasttimer.h"
87#include "llfile.h" 93#include "llfile.h"
88#include "llformat.h" 94#include "llformat.h"
89#include "llstring.h"
90#include "llsys.h"
91#include "lltimer.h"
92 95
93#endif 96#endif
diff --git a/linden/indra/llcommon/llapp.cpp b/linden/indra/llcommon/llapp.cpp
index 199315f..e269f59 100644
--- a/linden/indra/llcommon/llapp.cpp
+++ b/linden/indra/llcommon/llapp.cpp
@@ -420,7 +420,7 @@ void LLApp::incSigChildCount()
420int LLApp::getPid() 420int LLApp::getPid()
421{ 421{
422#if LL_WINDOWS 422#if LL_WINDOWS
423 return 0; 423 return GetCurrentProcessId();
424#else 424#else
425 return getpid(); 425 return getpid();
426#endif 426#endif
diff --git a/linden/indra/llcommon/llapp.h b/linden/indra/llcommon/llapp.h
index f8a593c..96112c9 100644
--- a/linden/indra/llcommon/llapp.h
+++ b/linden/indra/llcommon/llapp.h
@@ -34,14 +34,17 @@
34#define LL_LLAPP_H 34#define LL_LLAPP_H
35 35
36#include <map> 36#include <map>
37#include "llapr.h"
38#include "llrun.h" 37#include "llrun.h"
39#include "llsd.h" 38#include "llsd.h"
40 39
41// Forward declarations 40// Forward declarations
41template <typename Type> class LLAtomic32;
42typedef LLAtomic32<U32> LLAtomicU32;
42class LLErrorThread; 43class LLErrorThread;
43class LLApp; 44class LLLiveFile;
44 45#if LL_LINUX
46typedef struct siginfo siginfo_t;
47#endif
45 48
46typedef void (*LLAppErrorHandler)(); 49typedef void (*LLAppErrorHandler)();
47typedef void (*LLAppChildCallback)(int pid, bool exited, int status); 50typedef void (*LLAppChildCallback)(int pid, bool exited, int status);
@@ -62,7 +65,7 @@ public:
62}; 65};
63#endif 66#endif
64 67
65class LLApp 68class LL_COMMON_API LLApp
66{ 69{
67 friend class LLErrorThread; 70 friend class LLErrorThread;
68public: 71public:
@@ -189,8 +192,6 @@ public:
189#if !LL_WINDOWS 192#if !LL_WINDOWS
190 static U32 getSigChildCount(); 193 static U32 getSigChildCount();
191 static void incSigChildCount(); 194 static void incSigChildCount();
192#else
193#define getpid GetCurrentProcessId
194#endif 195#endif
195 static int getPid(); 196 static int getPid();
196 197
diff --git a/linden/indra/llcommon/llapr.h b/linden/indra/llcommon/llapr.h
index 7f770b0..2aed515 100644
--- a/linden/indra/llcommon/llapr.h
+++ b/linden/indra/llcommon/llapr.h
@@ -48,25 +48,24 @@
48#include "apr_atomic.h" 48#include "apr_atomic.h"
49#include "llstring.h" 49#include "llstring.h"
50 50
51extern apr_thread_mutex_t* gLogMutexp; 51extern LL_COMMON_API apr_thread_mutex_t* gLogMutexp;
52extern apr_thread_mutex_t* gCallStacksLogMutexp;
53 52
54/** 53/**
55 * @brief initialize the common apr constructs -- apr itself, the 54 * @brief initialize the common apr constructs -- apr itself, the
56 * global pool, and a mutex. 55 * global pool, and a mutex.
57 */ 56 */
58void ll_init_apr(); 57void LL_COMMON_API ll_init_apr();
59 58
60/** 59/**
61 * @brief Cleanup those common apr constructs. 60 * @brief Cleanup those common apr constructs.
62 */ 61 */
63void ll_cleanup_apr(); 62void LL_COMMON_API ll_cleanup_apr();
64 63
65// 64//
66//LL apr_pool 65//LL apr_pool
67//manage apr_pool_t, destroy allocated apr_pool in the destruction function. 66//manage apr_pool_t, destroy allocated apr_pool in the destruction function.
68// 67//
69class LLAPRPool 68class LL_COMMON_API LLAPRPool
70{ 69{
71public: 70public:
72 LLAPRPool(apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE) ; 71 LLAPRPool(apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE) ;
@@ -92,7 +91,7 @@ protected:
92//which clears memory automatically. 91//which clears memory automatically.
93//so it can not hold static data or data after memory is cleared 92//so it can not hold static data or data after memory is cleared
94// 93//
95class LLVolatileAPRPool : protected LLAPRPool 94class LL_COMMON_API LLVolatileAPRPool : protected LLAPRPool
96{ 95{
97public: 96public:
98 LLVolatileAPRPool(apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE); 97 LLVolatileAPRPool(apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE);
@@ -126,7 +125,7 @@ private:
126 * destructor handles the unlock. Instances of this class are 125 * destructor handles the unlock. Instances of this class are
127 * <b>not</b> thread safe. 126 * <b>not</b> thread safe.
128 */ 127 */
129class LLScopedLock : private boost::noncopyable 128class LL_COMMON_API LLScopedLock : private boost::noncopyable
130{ 129{
131public: 130public:
132 /** 131 /**
@@ -201,7 +200,7 @@ typedef LLAtomic32<S32> LLAtomicS32;
201// 2, a global pool. 200// 2, a global pool.
202// 201//
203 202
204class LLAPRFile : boost::noncopyable 203class LL_COMMON_API LLAPRFile : boost::noncopyable
205{ 204{
206 // make this non copyable since a copy closes the file 205 // make this non copyable since a copy closes the file
207private: 206private:
@@ -257,10 +256,10 @@ public:
257 * APR_SUCCESS. 256 * APR_SUCCESS.
258 * @return Returns <code>true</code> if status is an error condition. 257 * @return Returns <code>true</code> if status is an error condition.
259 */ 258 */
260bool ll_apr_warn_status(apr_status_t status); 259bool LL_COMMON_API ll_apr_warn_status(apr_status_t status);
261 260
262void ll_apr_assert_status(apr_status_t status); 261void LL_COMMON_API ll_apr_assert_status(apr_status_t status);
263 262
264extern "C" apr_pool_t* gAPRPoolp; // Global APR memory pool 263extern "C" LL_COMMON_API apr_pool_t* gAPRPoolp; // Global APR memory pool
265 264
266#endif // LL_LLAPR_H 265#endif // LL_LLAPR_H
diff --git a/linden/indra/llcommon/llassettype.h b/linden/indra/llcommon/llassettype.h
index 4077b8d..9f611ae 100644
--- a/linden/indra/llcommon/llassettype.h
+++ b/linden/indra/llcommon/llassettype.h
@@ -37,7 +37,7 @@
37 37
38#include "stdenums.h" // for EDragAndDropType 38#include "stdenums.h" // for EDragAndDropType
39 39
40class LLAssetType 40class LL_COMMON_API LLAssetType
41{ 41{
42public: 42public:
43 enum EType 43 enum EType
diff --git a/linden/indra/llcommon/llbase32.h b/linden/indra/llcommon/llbase32.h
index 63a93e1..47cd893 100644
--- a/linden/indra/llcommon/llbase32.h
+++ b/linden/indra/llcommon/llbase32.h
@@ -34,7 +34,7 @@
34#ifndef LLBASE32_H 34#ifndef LLBASE32_H
35#define LLBASE32_h 35#define LLBASE32_h
36 36
37class LLBase32 37class LL_COMMON_API LLBase32
38{ 38{
39public: 39public:
40 static std::string encode(const U8* input, size_t input_size); 40 static std::string encode(const U8* input, size_t input_size);
diff --git a/linden/indra/llcommon/llbase64.h b/linden/indra/llcommon/llbase64.h
index 58414bb..15b27a6 100644
--- a/linden/indra/llcommon/llbase64.h
+++ b/linden/indra/llcommon/llbase64.h
@@ -34,7 +34,7 @@
34#ifndef LLBASE64_H 34#ifndef LLBASE64_H
35#define LLBASE64_h 35#define LLBASE64_h
36 36
37class LLBase64 37class LL_COMMON_API LLBase64
38{ 38{
39public: 39public:
40 static std::string encode(const U8* input, size_t input_size); 40 static std::string encode(const U8* input, size_t input_size);
diff --git a/linden/indra/llcommon/llcommon.h b/linden/indra/llcommon/llcommon.h
index 5f77988..851d4ac 100644
--- a/linden/indra/llcommon/llcommon.h
+++ b/linden/indra/llcommon/llcommon.h
@@ -38,7 +38,7 @@
38#include "lltimer.h" 38#include "lltimer.h"
39#include "llfile.h" 39#include "llfile.h"
40 40
41class LLCommon 41class LL_COMMON_API LLCommon
42{ 42{
43public: 43public:
44 static void initClass(); 44 static void initClass();
diff --git a/linden/indra/llcommon/llcrc.h b/linden/indra/llcommon/llcrc.h
index 27fae7d..7436906 100644
--- a/linden/indra/llcommon/llcrc.h
+++ b/linden/indra/llcommon/llcrc.h
@@ -50,7 +50,7 @@
50// llinfos << "File crc: " << crc.getCRC() << llendl; 50// llinfos << "File crc: " << crc.getCRC() << llendl;
51//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52 52
53class LLCRC 53class LL_COMMON_API LLCRC
54{ 54{
55protected: 55protected:
56 U32 mCurrent; 56 U32 mCurrent;
diff --git a/linden/indra/llcommon/llcriticaldamp.h b/linden/indra/llcommon/llcriticaldamp.h
index ad98284..13e37d8 100644
--- a/linden/indra/llcommon/llcriticaldamp.h
+++ b/linden/indra/llcommon/llcriticaldamp.h
@@ -38,7 +38,7 @@
38 38
39#include "llframetimer.h" 39#include "llframetimer.h"
40 40
41class LLCriticalDamp 41class LL_COMMON_API LLCriticalDamp
42{ 42{
43public: 43public:
44 LLCriticalDamp(); 44 LLCriticalDamp();
diff --git a/linden/indra/llcommon/llcursortypes.h b/linden/indra/llcommon/llcursortypes.h
index bea7035..836ecc3 100644
--- a/linden/indra/llcommon/llcursortypes.h
+++ b/linden/indra/llcommon/llcursortypes.h
@@ -77,6 +77,6 @@ enum ECursorType {
77 UI_CURSOR_COUNT // Number of elements in this enum (NOT a cursor) 77 UI_CURSOR_COUNT // Number of elements in this enum (NOT a cursor)
78}; 78};
79 79
80ECursorType getCursorFromString(const std::string& cursor_string); 80LL_COMMON_API ECursorType getCursorFromString(const std::string& cursor_string);
81 81
82#endif // LL_LLCURSORTYPES_H 82#endif // LL_LLCURSORTYPES_H
diff --git a/linden/indra/llcommon/lldate.h b/linden/indra/llcommon/lldate.h
index 5e1a491..d27da79 100644
--- a/linden/indra/llcommon/lldate.h
+++ b/linden/indra/llcommon/lldate.h
@@ -46,7 +46,7 @@
46 * 46 *
47 * The date class represents a point in time after epoch - 1970-01-01. 47 * The date class represents a point in time after epoch - 1970-01-01.
48 */ 48 */
49class LLDate 49class LL_COMMON_API LLDate
50{ 50{
51public: 51public:
52 /** 52 /**
@@ -153,9 +153,9 @@ private:
153}; 153};
154 154
155// Helper function to stream out a date 155// Helper function to stream out a date
156std::ostream& operator<<(std::ostream& s, const LLDate& date); 156LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLDate& date);
157 157
158// Helper function to stream in a date 158// Helper function to stream in a date
159std::istream& operator>>(std::istream& s, LLDate& date); 159LL_COMMON_API std::istream& operator>>(std::istream& s, LLDate& date);
160 160
161#endif // LL_LLDATE_H 161#endif // LL_LLDATE_H
diff --git a/linden/indra/llcommon/llerror.cpp b/linden/indra/llcommon/llerror.cpp
index 30b61a9..edc570f 100644
--- a/linden/indra/llcommon/llerror.cpp
+++ b/linden/indra/llcommon/llerror.cpp
@@ -58,7 +58,9 @@
58#include "llsd.h" 58#include "llsd.h"
59#include "llsdserialize.h" 59#include "llsdserialize.h"
60#include "llstl.h" 60#include "llstl.h"
61#include "lltimer.h"
61 62
63extern apr_thread_mutex_t* gCallStacksLogMutexp;
62 64
63namespace { 65namespace {
64#if !LL_WINDOWS 66#if !LL_WINDOWS
diff --git a/linden/indra/llcommon/llerror.h b/linden/indra/llcommon/llerror.h
index 37e922d..5a4c644 100644
--- a/linden/indra/llcommon/llerror.h
+++ b/linden/indra/llcommon/llerror.h
@@ -131,7 +131,7 @@ namespace LLError
131 131
132 class CallSite; 132 class CallSite;
133 133
134 class Log 134 class LL_COMMON_API Log
135 { 135 {
136 public: 136 public:
137 static bool shouldLog(CallSite&); 137 static bool shouldLog(CallSite&);
@@ -140,7 +140,7 @@ namespace LLError
140 static void flush(std::ostringstream*, const CallSite&); 140 static void flush(std::ostringstream*, const CallSite&);
141 }; 141 };
142 142
143 class CallSite 143 class LL_COMMON_API CallSite
144 { 144 {
145 // Represents a specific place in the code where a message is logged 145 // Represents a specific place in the code where a message is logged
146 // This is public because it is used by the macros below. It is not 146 // This is public because it is used by the macros below. It is not
@@ -189,7 +189,7 @@ namespace LLError
189 //LLCallStacks is designed not to be thread-safe. 189 //LLCallStacks is designed not to be thread-safe.
190 //so try not to use it in multiple parallel threads at same time. 190 //so try not to use it in multiple parallel threads at same time.
191 //Used in a single thread at a time is fine. 191 //Used in a single thread at a time is fine.
192 class LLCallStacks 192 class LL_COMMON_API LLCallStacks
193 { 193 {
194 private: 194 private:
195 static char** sBuffer ; 195 static char** sBuffer ;
diff --git a/linden/indra/llcommon/llerrorcontrol.h b/linden/indra/llcommon/llerrorcontrol.h
index fae7547..54138b2 100644
--- a/linden/indra/llcommon/llerrorcontrol.h
+++ b/linden/indra/llcommon/llerrorcontrol.h
@@ -52,12 +52,12 @@ class LLSD;
52 52
53namespace LLError 53namespace LLError
54{ 54{
55 void initForServer(const std::string& identity); 55 LL_COMMON_API void initForServer(const std::string& identity);
56 // resets all logging settings to defaults needed by server processes 56 // resets all logging settings to defaults needed by server processes
57 // logs to stderr, syslog, and windows debug log 57 // logs to stderr, syslog, and windows debug log
58 // the identity string is used for in the syslog 58 // the identity string is used for in the syslog
59 59
60 void initForApplication(const std::string& dir); 60 LL_COMMON_API void initForApplication(const std::string& dir);
61 // resets all logging settings to defaults needed by applicaitons 61 // resets all logging settings to defaults needed by applicaitons
62 // logs to stderr and windows debug log 62 // logs to stderr and windows debug log
63 // sets up log configuration from the file logcontrol.xml in dir 63 // sets up log configuration from the file logcontrol.xml in dir
@@ -68,14 +68,14 @@ namespace LLError
68 Setting a level means log messages at that level or above. 68 Setting a level means log messages at that level or above.
69 */ 69 */
70 70
71 void setPrintLocation(bool); 71 LL_COMMON_API void setPrintLocation(bool);
72 void setDefaultLevel(LLError::ELevel); 72 LL_COMMON_API void setDefaultLevel(LLError::ELevel);
73 void setFunctionLevel(const std::string& function_name, LLError::ELevel); 73 LL_COMMON_API void setFunctionLevel(const std::string& function_name, LLError::ELevel);
74 void setClassLevel(const std::string& class_name, LLError::ELevel); 74 LL_COMMON_API void setClassLevel(const std::string& class_name, LLError::ELevel);
75 void setFileLevel(const std::string& file_name, LLError::ELevel); 75 LL_COMMON_API void setFileLevel(const std::string& file_name, LLError::ELevel);
76 void setTagLevel(const std::string& file_name, LLError::ELevel); 76 LL_COMMON_API void setTagLevel(const std::string& file_name, LLError::ELevel);
77 77
78 void configure(const LLSD&); 78 LL_COMMON_API void configure(const LLSD&);
79 // the LLSD can configure all of the settings 79 // the LLSD can configure all of the settings
80 // usually read automatically from the live errorlog.xml file 80 // usually read automatically from the live errorlog.xml file
81 81
@@ -85,25 +85,25 @@ namespace LLError
85 */ 85 */
86 86
87 typedef void(*FatalFunction)(const std::string& message); 87 typedef void(*FatalFunction)(const std::string& message);
88 void crashAndLoop(const std::string& message); 88 LL_COMMON_API void crashAndLoop(const std::string& message);
89 // Default fatal funtion: access null pointer and loops forever 89 // Default fatal funtion: access null pointer and loops forever
90 90
91 void setFatalFunction(FatalFunction); 91 LL_COMMON_API void setFatalFunction(FatalFunction);
92 // The fatal function will be called when an message of LEVEL_ERROR 92 // The fatal function will be called when an message of LEVEL_ERROR
93 // is logged. Note: supressing a LEVEL_ERROR message from being logged 93 // is logged. Note: supressing a LEVEL_ERROR message from being logged
94 // (by, for example, setting a class level to LEVEL_NONE), will keep 94 // (by, for example, setting a class level to LEVEL_NONE), will keep
95 // the that message from causing the fatal funciton to be invoked. 95 // the that message from causing the fatal funciton to be invoked.
96 96
97 typedef std::string (*TimeFunction)(); 97 typedef std::string (*TimeFunction)();
98 std::string utcTime(); 98 LL_COMMON_API std::string utcTime();
99 99
100 void setTimeFunction(TimeFunction); 100 LL_COMMON_API void setTimeFunction(TimeFunction);
101 // The function is use to return the current time, formatted for 101 // The function is use to return the current time, formatted for
102 // display by those error recorders that want the time included. 102 // display by those error recorders that want the time included.
103 103
104 104
105 105
106 class Recorder 106 class LL_COMMON_API Recorder
107 { 107 {
108 // An object that handles the actual output or error messages. 108 // An object that handles the actual output or error messages.
109 public: 109 public:
@@ -117,17 +117,17 @@ namespace LLError
117 // included in the text of the message 117 // included in the text of the message
118 }; 118 };
119 119
120 void addRecorder(Recorder*); 120 LL_COMMON_API void addRecorder(Recorder*);
121 void removeRecorder(Recorder*); 121 LL_COMMON_API void removeRecorder(Recorder*);
122 // each error message is passed to each recorder via recordMessage() 122 // each error message is passed to each recorder via recordMessage()
123 123
124 void logToFile(const std::string& filename); 124 LL_COMMON_API void logToFile(const std::string& filename);
125 void logToFixedBuffer(LLFixedBuffer*); 125 LL_COMMON_API void logToFixedBuffer(LLFixedBuffer*);
126 // Utilities to add recorders for logging to a file or a fixed buffer 126 // Utilities to add recorders for logging to a file or a fixed buffer
127 // A second call to the same function will remove the logger added 127 // A second call to the same function will remove the logger added
128 // with the first. 128 // with the first.
129 // Passing the empty string or NULL to just removes any prior. 129 // Passing the empty string or NULL to just removes any prior.
130 std::string logFileName(); 130 LL_COMMON_API std::string logFileName();
131 // returns name of current logging file, empty string if none 131 // returns name of current logging file, empty string if none
132 132
133 133
@@ -136,11 +136,11 @@ namespace LLError
136 */ 136 */
137 137
138 class Settings; 138 class Settings;
139 Settings* saveAndResetSettings(); 139 LL_COMMON_API Settings* saveAndResetSettings();
140 void restoreSettings(Settings *); 140 LL_COMMON_API void restoreSettings(Settings *);
141 141
142 std::string abbreviateFile(const std::string& filePath); 142 LL_COMMON_API std::string abbreviateFile(const std::string& filePath);
143 int shouldLogCallCount(); 143 LL_COMMON_API int shouldLogCallCount();
144 144
145}; 145};
146 146
diff --git a/linden/indra/llcommon/llerrorthread.cpp b/linden/indra/llcommon/llerrorthread.cpp
index 4c779c5..e2b106a 100644
--- a/linden/indra/llcommon/llerrorthread.cpp
+++ b/linden/indra/llcommon/llerrorthread.cpp
@@ -32,6 +32,7 @@
32#include "linden_common.h" 32#include "linden_common.h"
33#include "llerrorthread.h" 33#include "llerrorthread.h"
34#include "llapp.h" 34#include "llapp.h"
35#include "lltimer.h"
35 36
36LLErrorThread::LLErrorThread() 37LLErrorThread::LLErrorThread()
37 : LLThread("Error"), 38 : LLThread("Error"),
diff --git a/linden/indra/llcommon/llerrorthread.h b/linden/indra/llcommon/llerrorthread.h
index f1d6ffc..3121d29 100644
--- a/linden/indra/llcommon/llerrorthread.h
+++ b/linden/indra/llcommon/llerrorthread.h
@@ -35,7 +35,7 @@
35 35
36#include "llthread.h" 36#include "llthread.h"
37 37
38class LLErrorThread : public LLThread 38class LL_COMMON_API LLErrorThread : public LLThread
39{ 39{
40public: 40public:
41 LLErrorThread(); 41 LLErrorThread();
diff --git a/linden/indra/llcommon/llevent.h b/linden/indra/llcommon/llevent.h
index 60887a0..6b223a8 100644
--- a/linden/indra/llcommon/llevent.h
+++ b/linden/indra/llcommon/llevent.h
@@ -44,7 +44,7 @@ class LLEventDispatcher;
44class LLObservable; 44class LLObservable;
45 45
46// Abstract event. All events derive from LLEvent 46// Abstract event. All events derive from LLEvent
47class LLEvent : public LLThreadSafeRefCount 47class LL_COMMON_API LLEvent : public LLThreadSafeRefCount
48{ 48{
49protected: 49protected:
50 virtual ~LLEvent(); 50 virtual ~LLEvent();
@@ -72,7 +72,7 @@ private:
72}; 72};
73 73
74// Abstract listener. All listeners derive from LLEventListener 74// Abstract listener. All listeners derive from LLEventListener
75class LLEventListener : public LLThreadSafeRefCount 75class LL_COMMON_API LLEventListener : public LLThreadSafeRefCount
76{ 76{
77protected: 77protected:
78 virtual ~LLEventListener(); 78 virtual ~LLEventListener();
@@ -89,7 +89,7 @@ public:
89}; 89};
90 90
91// A listener which tracks references to it and cleans up when it's deallocated 91// A listener which tracks references to it and cleans up when it's deallocated
92class LLSimpleListener : public LLEventListener 92class LL_COMMON_API LLSimpleListener : public LLEventListener
93{ 93{
94public: 94public:
95 void clearDispatchers(); 95 void clearDispatchers();
@@ -114,7 +114,7 @@ struct LLListenerEntry
114// Base class for a dispatcher - an object which listens 114// Base class for a dispatcher - an object which listens
115// to events being fired and relays them to their 115// to events being fired and relays them to their
116// appropriate destinations. 116// appropriate destinations.
117class LLEventDispatcher : public LLThreadSafeRefCount 117class LL_COMMON_API LLEventDispatcher : public LLThreadSafeRefCount
118{ 118{
119protected: 119protected:
120 virtual ~LLEventDispatcher(); 120 virtual ~LLEventDispatcher();
@@ -157,7 +157,7 @@ private:
157// In order for this class to work properly, it needs 157// In order for this class to work properly, it needs
158// an instance of an LLEventDispatcher to route events to their 158// an instance of an LLEventDispatcher to route events to their
159// listeners. 159// listeners.
160class LLObservable 160class LL_COMMON_API LLObservable
161{ 161{
162public: 162public:
163 // Initialize with the default Dispatcher 163 // Initialize with the default Dispatcher
diff --git a/linden/indra/llcommon/llfasttimer.cpp b/linden/indra/llcommon/llfasttimer.cpp
index 4aa23bb..5f091d5 100644
--- a/linden/indra/llcommon/llfasttimer.cpp
+++ b/linden/indra/llcommon/llfasttimer.cpp
@@ -42,6 +42,7 @@
42#include <sched.h> 42#include <sched.h>
43#elif LL_DARWIN 43#elif LL_DARWIN
44#include <sys/time.h> 44#include <sys/time.h>
45#include "lltimer.h" // get_clock_count()
45#else 46#else
46#error "architecture not supported" 47#error "architecture not supported"
47#endif 48#endif
diff --git a/linden/indra/llcommon/llfasttimer.h b/linden/indra/llcommon/llfasttimer.h
index 8c1cf47..602a2f7 100644
--- a/linden/indra/llcommon/llfasttimer.h
+++ b/linden/indra/llcommon/llfasttimer.h
@@ -35,9 +35,9 @@
35 35
36#define FAST_TIMER_ON 1 36#define FAST_TIMER_ON 1
37 37
38U64 get_cpu_clock_count(); 38LL_COMMON_API U64 get_cpu_clock_count();
39 39
40class LLFastTimer 40class LL_COMMON_API LLFastTimer
41{ 41{
42public: 42public:
43 enum EFastTimerType 43 enum EFastTimerType
diff --git a/linden/indra/llcommon/llfile.h b/linden/indra/llcommon/llfile.h
index c6092f7..ee37605 100644
--- a/linden/indra/llcommon/llfile.h
+++ b/linden/indra/llcommon/llfile.h
@@ -70,7 +70,7 @@ typedef struct stat llstat;
70 70
71#include "llstring.h" // safe char* -> std::string conversion 71#include "llstring.h" // safe char* -> std::string conversion
72 72
73class LLFile 73class LL_COMMON_API LLFile
74{ 74{
75public: 75public:
76 // All these functions take UTF8 path/filenames. 76 // All these functions take UTF8 path/filenames.
@@ -95,7 +95,7 @@ public:
95 95
96#if USE_LLFILESTREAMS 96#if USE_LLFILESTREAMS
97 97
98class llifstream : public std::basic_istream < char , std::char_traits < char > > 98class LL_COMMON_API llifstream : public std::basic_istream < char , std::char_traits < char > >
99{ 99{
100 // input stream associated with a C stream 100 // input stream associated with a C stream
101public: 101public:
@@ -136,7 +136,7 @@ private:
136}; 136};
137 137
138 138
139class llofstream : public std::basic_ostream< char , std::char_traits < char > > 139class LL_COMMON_API llofstream : public std::basic_ostream< char , std::char_traits < char > >
140{ 140{
141public: 141public:
142 typedef std::basic_ostream< char , std::char_traits < char > > _Myt; 142 typedef std::basic_ostream< char , std::char_traits < char > > _Myt;
@@ -185,7 +185,7 @@ private:
185//#define llifstream std::ifstream 185//#define llifstream std::ifstream
186//#define llofstream std::ofstream 186//#define llofstream std::ofstream
187 187
188class llifstream : public std::ifstream 188class LL_COMMON_API llifstream : public std::ifstream
189{ 189{
190public: 190public:
191 llifstream() : std::ifstream() 191 llifstream() : std::ifstream()
@@ -203,7 +203,7 @@ public:
203}; 203};
204 204
205 205
206class llofstream : public std::ofstream 206class LL_COMMON_API llofstream : public std::ofstream
207{ 207{
208public: 208public:
209 llofstream() : std::ofstream() 209 llofstream() : std::ofstream()
diff --git a/linden/indra/llcommon/llfindlocale.h b/linden/indra/llcommon/llfindlocale.h
index f17c774..b812a06 100644
--- a/linden/indra/llcommon/llfindlocale.h
+++ b/linden/indra/llcommon/llfindlocale.h
@@ -59,8 +59,8 @@ typedef enum {
59/* This allocates/fills in a FL_Locale structure with pointers to 59/* This allocates/fills in a FL_Locale structure with pointers to
60 strings (which should be treated as static), or NULL for inappropriate / 60 strings (which should be treated as static), or NULL for inappropriate /
61 undetected fields. */ 61 undetected fields. */
62FL_Success FL_FindLocale(FL_Locale **locale, FL_Domain domain); 62LL_COMMON_API FL_Success FL_FindLocale(FL_Locale **locale, FL_Domain domain);
63/* This should be used to free the struct written by FL_FindLocale */ 63/* This should be used to free the struct written by FL_FindLocale */
64void FL_FreeLocale(FL_Locale **locale); 64LL_COMMON_API void FL_FreeLocale(FL_Locale **locale);
65 65
66#endif /*__findlocale_h_*/ 66#endif /*__findlocale_h_*/
diff --git a/linden/indra/llcommon/llfixedbuffer.h b/linden/indra/llcommon/llfixedbuffer.h
index 992a024..51d0701 100644
--- a/linden/indra/llcommon/llfixedbuffer.h
+++ b/linden/indra/llcommon/llfixedbuffer.h
@@ -41,7 +41,7 @@
41 41
42// Fixed size buffer for console output and other things. 42// Fixed size buffer for console output and other things.
43 43
44class LLFixedBuffer 44class LL_COMMON_API LLFixedBuffer
45{ 45{
46public: 46public:
47 LLFixedBuffer(const U32 max_lines = 20); 47 LLFixedBuffer(const U32 max_lines = 20);
diff --git a/linden/indra/llcommon/llformat.h b/linden/indra/llcommon/llformat.h
index 44c62d9..ad30d4f 100644
--- a/linden/indra/llcommon/llformat.h
+++ b/linden/indra/llcommon/llformat.h
@@ -40,6 +40,6 @@
40// *NOTE: buffer limited to 1024, (but vsnprintf prevents overrun) 40// *NOTE: buffer limited to 1024, (but vsnprintf prevents overrun)
41// should perhaps be replaced with boost::format. 41// should perhaps be replaced with boost::format.
42 42
43std::string llformat(const char *fmt, ...); 43LL_COMMON_API std::string llformat(const char *fmt, ...);
44 44
45#endif // LL_LLFORMAT_H 45#endif // LL_LLFORMAT_H
diff --git a/linden/indra/llcommon/llframetimer.h b/linden/indra/llcommon/llframetimer.h
index 8f51272..f4775a9 100644
--- a/linden/indra/llcommon/llframetimer.h
+++ b/linden/indra/llcommon/llframetimer.h
@@ -43,7 +43,7 @@
43#include "lltimer.h" 43#include "lltimer.h"
44#include "timing.h" 44#include "timing.h"
45 45
46class LLFrameTimer 46class LL_COMMON_API LLFrameTimer
47{ 47{
48public: 48public:
49 LLFrameTimer() : mStartTime( sFrameTime ), mExpiry(0), mStarted(TRUE) {} 49 LLFrameTimer() : mStartTime( sFrameTime ), mExpiry(0), mStarted(TRUE) {}
diff --git a/linden/indra/llcommon/llheartbeat.h b/linden/indra/llcommon/llheartbeat.h
index fecb5b1..6f70269 100644
--- a/linden/indra/llcommon/llheartbeat.h
+++ b/linden/indra/llcommon/llheartbeat.h
@@ -40,7 +40,7 @@
40// Note: Win32 does not support the heartbeat/smackdown system; 40// Note: Win32 does not support the heartbeat/smackdown system;
41// heartbeat-delivery turns into a no-op there. 41// heartbeat-delivery turns into a no-op there.
42 42
43class LLHeartbeat 43class LL_COMMON_API LLHeartbeat
44{ 44{
45public: 45public:
46 // secs_between_heartbeat: after a heartbeat is successfully delivered, 46 // secs_between_heartbeat: after a heartbeat is successfully delivered,
diff --git a/linden/indra/llcommon/llliveappconfig.h b/linden/indra/llcommon/llliveappconfig.h
index 55d84a4..3251a7c 100644
--- a/linden/indra/llcommon/llliveappconfig.h
+++ b/linden/indra/llcommon/llliveappconfig.h
@@ -37,7 +37,7 @@
37 37
38class LLApp; 38class LLApp;
39 39
40class LLLiveAppConfig : public LLLiveFile 40class LL_COMMON_API LLLiveAppConfig : public LLLiveFile
41{ 41{
42public: 42public:
43 // To use this, instantiate a LLLiveAppConfig object inside your main loop. 43 // To use this, instantiate a LLLiveAppConfig object inside your main loop.
diff --git a/linden/indra/llcommon/lllivefile.h b/linden/indra/llcommon/lllivefile.h
index fddf006..72f16fd 100644
--- a/linden/indra/llcommon/lllivefile.h
+++ b/linden/indra/llcommon/lllivefile.h
@@ -36,7 +36,7 @@
36const F32 configFileRefreshRate = 5.0; // seconds 36const F32 configFileRefreshRate = 5.0; // seconds
37 37
38 38
39class LLLiveFile 39class LL_COMMON_API LLLiveFile
40{ 40{
41public: 41public:
42 LLLiveFile(const std::string &filename, const F32 refresh_period = 5.f); 42 LLLiveFile(const std::string &filename, const F32 refresh_period = 5.f);
diff --git a/linden/indra/llcommon/lllog.h b/linden/indra/llcommon/lllog.h
index 7ac6c8a..4b6777b 100644
--- a/linden/indra/llcommon/lllog.h
+++ b/linden/indra/llcommon/lllog.h
@@ -41,7 +41,7 @@ class LLLogImpl;
41class LLApp; 41class LLApp;
42class LLSD; 42class LLSD;
43 43
44class LLLog 44class LL_COMMON_API LLLog
45{ 45{
46public: 46public:
47 LLLog(LLApp* app); 47 LLLog(LLApp* app);
diff --git a/linden/indra/llcommon/llmd5.cpp b/linden/indra/llcommon/llmd5.cpp
index 14b4f9f..887979b 100644
--- a/linden/indra/llcommon/llmd5.cpp
+++ b/linden/indra/llcommon/llmd5.cpp
@@ -83,6 +83,7 @@ documentation and/or software.
83#include "llmd5.h" 83#include "llmd5.h"
84 84
85#include <cassert> 85#include <cassert>
86#include <iostream>
86 87
87// how many bytes to grab at a time when checking files 88// how many bytes to grab at a time when checking files
88const int LLMD5::BLOCK_LEN = 4096; 89const int LLMD5::BLOCK_LEN = 4096;
diff --git a/linden/indra/llcommon/llmd5.h b/linden/indra/llcommon/llmd5.h
index d8bca03..df9d732 100644
--- a/linden/indra/llcommon/llmd5.h
+++ b/linden/indra/llcommon/llmd5.h
@@ -80,7 +80,7 @@ const int MD5RAW_BYTES = 16;
80const int MD5HEX_STR_SIZE = 33; // char hex[MD5HEX_STR_SIZE]; with null 80const int MD5HEX_STR_SIZE = 33; // char hex[MD5HEX_STR_SIZE]; with null
81const int MD5HEX_STR_BYTES = 32; // message system fixed size 81const int MD5HEX_STR_BYTES = 32; // message system fixed size
82 82
83class LLMD5 { 83class LL_COMMON_API LLMD5 {
84// first, some types: 84// first, some types:
85 typedef unsigned int uint4; // assumes integer is 4 words long 85 typedef unsigned int uint4; // assumes integer is 4 words long
86 typedef unsigned short int uint2; // assumes short integer is 2 words long 86 typedef unsigned short int uint2; // assumes short integer is 2 words long
diff --git a/linden/indra/llcommon/llmemory.cpp b/linden/indra/llcommon/llmemory.cpp
index a6de3d2..74004b0 100644
--- a/linden/indra/llcommon/llmemory.cpp
+++ b/linden/indra/llcommon/llmemory.cpp
@@ -283,6 +283,11 @@ LLRefCount::LLRefCount() :
283{ 283{
284} 284}
285 285
286LLRefCount::LLRefCount(const LLRefCount& other)
287: mRef(0)
288{
289}
290
286LLRefCount::~LLRefCount() 291LLRefCount::~LLRefCount()
287{ 292{
288 if (mRef != 0) 293 if (mRef != 0)
@@ -290,7 +295,13 @@ LLRefCount::~LLRefCount()
290 llerrs << "deleting non-zero reference" << llendl; 295 llerrs << "deleting non-zero reference" << llendl;
291 } 296 }
292} 297}
293 298
299LLRefCount& LLRefCount::operator=(const LLRefCount&)
300{
301 // do nothing, since ref count is specific to *this* reference
302 return *this;
303}
304
294//---------------------------------------------------------------------------- 305//----------------------------------------------------------------------------
295 306
296#if defined(LL_WINDOWS) 307#if defined(LL_WINDOWS)
diff --git a/linden/indra/llcommon/llmemory.h b/linden/indra/llcommon/llmemory.h
index b5c0711..9aa4b85 100644
--- a/linden/indra/llcommon/llmemory.h
+++ b/linden/indra/llcommon/llmemory.h
@@ -45,7 +45,7 @@ const U32 LLREFCOUNT_SENTINEL_VALUE = 0xAAAAAAAA;
45 45
46//---------------------------------------------------------------------------- 46//----------------------------------------------------------------------------
47 47
48class LLMemory 48class LL_COMMON_API LLMemory
49{ 49{
50public: 50public:
51 static void initClass(); 51 static void initClass();
@@ -68,12 +68,12 @@ private:
68 68
69//---------------------------------------------------------------------------- 69//----------------------------------------------------------------------------
70 70
71class LLRefCount 71class LL_COMMON_API LLRefCount
72{ 72{
73protected: 73protected:
74 LLRefCount(const LLRefCount&); // not implemented 74 LLRefCount(const LLRefCount&);
75private: 75private:
76 LLRefCount&operator=(const LLRefCount&); // not implemented 76 LLRefCount&operator=(const LLRefCount&);
77 77
78protected: 78protected:
79 virtual ~LLRefCount(); // use unref() 79 virtual ~LLRefCount(); // use unref()
@@ -467,6 +467,6 @@ private:
467 467
468// Return the resident set size of the current process, in bytes. 468// Return the resident set size of the current process, in bytes.
469// Return value is zero if not known. 469// Return value is zero if not known.
470U64 getCurrentRSS(); 470LL_COMMON_API U64 getCurrentRSS();
471 471
472#endif 472#endif
diff --git a/linden/indra/llcommon/llmemorystream.h b/linden/indra/llcommon/llmemorystream.h
index f348632..fa0f5d2 100644
--- a/linden/indra/llcommon/llmemorystream.h
+++ b/linden/indra/llcommon/llmemorystream.h
@@ -52,7 +52,7 @@
52 * be careful to always pass in a valid memory location that exists 52 * be careful to always pass in a valid memory location that exists
53 * for at least as long as this streambuf. 53 * for at least as long as this streambuf.
54 */ 54 */
55class LLMemoryStreamBuf : public std::streambuf 55class LL_COMMON_API LLMemoryStreamBuf : public std::streambuf
56{ 56{
57public: 57public:
58 LLMemoryStreamBuf(const U8* start, S32 length); 58 LLMemoryStreamBuf(const U8* start, S32 length);
@@ -74,7 +74,7 @@ protected:
74 * be careful to always pass in a valid memory location that exists 74 * be careful to always pass in a valid memory location that exists
75 * for at least as long as this streambuf. 75 * for at least as long as this streambuf.
76 */ 76 */
77class LLMemoryStream : public std::istream 77class LL_COMMON_API LLMemoryStream : public std::istream
78{ 78{
79public: 79public:
80 LLMemoryStream(const U8* start, S32 length); 80 LLMemoryStream(const U8* start, S32 length);
diff --git a/linden/indra/llcommon/llmemtype.h b/linden/indra/llcommon/llmemtype.h
index a9ebc20..d4cc67e 100644
--- a/linden/indra/llcommon/llmemtype.h
+++ b/linden/indra/llcommon/llmemtype.h
@@ -57,7 +57,7 @@ static void operator delete(void* p) { ll_release(p); }
57 57
58//---------------------------------------------------------------------------- 58//----------------------------------------------------------------------------
59 59
60class LLMemType 60class LL_COMMON_API LLMemType
61{ 61{
62public: 62public:
63 // Also update sTypeDesc in llmemory.cpp 63 // Also update sTypeDesc in llmemory.cpp
diff --git a/linden/indra/llcommon/llmetrics.h b/linden/indra/llcommon/llmetrics.h
index 1d91e8c..f6f49eb 100644
--- a/linden/indra/llcommon/llmetrics.h
+++ b/linden/indra/llcommon/llmetrics.h
@@ -38,7 +38,7 @@
38class LLMetricsImpl; 38class LLMetricsImpl;
39class LLSD; 39class LLSD;
40 40
41class LLMetrics 41class LL_COMMON_API LLMetrics
42{ 42{
43public: 43public:
44 LLMetrics(); 44 LLMetrics();
diff --git a/linden/indra/llcommon/llmortician.h b/linden/indra/llcommon/llmortician.h
index 247632f..55a101a 100644
--- a/linden/indra/llcommon/llmortician.h
+++ b/linden/indra/llcommon/llmortician.h
@@ -35,7 +35,7 @@
35 35
36#include "stdtypes.h" 36#include "stdtypes.h"
37 37
38class LLMortician 38class LL_COMMON_API LLMortician
39{ 39{
40public: 40public:
41 LLMortician() { mIsDead = FALSE; } 41 LLMortician() { mIsDead = FALSE; }
diff --git a/linden/indra/llcommon/llpreprocessor.h b/linden/indra/llcommon/llpreprocessor.h
index 2e4fd47..6886e3a 100644
--- a/linden/indra/llcommon/llpreprocessor.h
+++ b/linden/indra/llcommon/llpreprocessor.h
@@ -92,47 +92,63 @@
92 92
93#endif 93#endif
94 94
95
96// Deal with the differeneces on Windows 95// Deal with the differeneces on Windows
97#if LL_MSVC
98namespace snprintf_hack
99{
100 int snprintf(char *str, size_t size, const char *format, ...);
101}
102
103// #define snprintf safe_snprintf /* Flawfinder: ignore */
104using snprintf_hack::snprintf;
105#endif // LL_MSVC
106
107// Static linking with apr on windows needs to be declared.
108#ifdef LL_WINDOWS
109#ifndef APR_DECLARE_STATIC
110#define APR_DECLARE_STATIC // For APR on Windows
111#endif
112#ifndef APU_DECLARE_STATIC
113#define APU_DECLARE_STATIC // For APR util on Windows
114#endif
115#endif
116
117#if defined(LL_WINDOWS) 96#if defined(LL_WINDOWS)
118#define BOOST_REGEX_NO_LIB 1 97#define BOOST_REGEX_NO_LIB 1
119#define CURL_STATICLIB 1 98#define CURL_STATICLIB 1
120#define XML_STATIC 99#define XML_STATIC
121#endif // LL_WINDOWS 100#endif // LL_WINDOWS
122 101
123
124// Deal with VC6 problems 102// Deal with VC6 problems
125#if LL_MSVC 103#if LL_MSVC
126#pragma warning( 3 : 4701 ) // "local variable used without being initialized" Treat this as level 3, not level 4. 104#pragma warning( 3 : 4701 ) // "local variable used without being initialized" Treat this as level 3, not level 4.
127#pragma warning( 3 : 4702 ) // "unreachable code" Treat this as level 3, not level 4. 105#pragma warning( 3 : 4702 ) // "unreachable code" Treat this as level 3, not level 4.
128#pragma warning( 3 : 4189 ) // "local variable initialized but not referenced" Treat this as level 3, not level 4. 106#pragma warning( 3 : 4189 ) // "local variable initialized but not referenced" Treat this as level 3, not level 4.
129//#pragma warning( 3 : 4018 ) // "signed/unsigned mismatch" Treat this as level 3, not level 4. 107//#pragma warning( 3 : 4018 ) // "signed/unsigned mismatch" Treat this as level 3, not level 4.
108#pragma warning( 3 : 4263 ) // 'function' : member function does not override any base class virtual member function
109#pragma warning( 3 : 4264 ) // "'virtual_function' : no override available for virtual member function from base 'class'; function is hidden"
130#pragma warning( 3 : 4265 ) // "class has virtual functions, but destructor is not virtual" 110#pragma warning( 3 : 4265 ) // "class has virtual functions, but destructor is not virtual"
131#pragma warning( disable : 4786 ) // silly MS warning deep inside their <map> include file 111//#pragma warning( disable : 4265 ) // boost 1.36.0, non-virtual destructor in boost::exception_detail::*
112#pragma warning( 3 : 4266 ) // 'function' : no override available for virtual member function from base 'type'; function is hidden
113#pragma warning (disable : 4180) // qualifier applied to function type has no meaning; ignored
132#pragma warning( disable : 4284 ) // silly MS warning deep inside their <map> include file 114#pragma warning( disable : 4284 ) // silly MS warning deep inside their <map> include file
133#pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation. 115#pragma warning( disable : 4503 ) // 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation.
134#pragma warning( disable : 4800 ) // 'BOOL' : forcing value to bool 'true' or 'false' (performance warning) 116#pragma warning( disable : 4800 ) // 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
135#pragma warning( disable : 4996 ) // warning: deprecated 117#pragma warning( disable : 4996 ) // warning: deprecated
118
119// Linker optimization with "extern template" generates these warnings
120#pragma warning( disable : 4231 ) // nonstandard extension used : 'extern' before template explicit instantiation
121#pragma warning( disable : 4506 ) // no definition for inline function
122
123// level 4 warnings that we need to disable:
124#pragma warning (disable : 4100) // unreferenced formal parameter
125#pragma warning (disable : 4127) // conditional expression is constant (e.g. while(1) )
126#pragma warning (disable : 4244) // possible loss of data on conversions
127#pragma warning (disable : 4396) // the inline specifier cannot be used when a friend declaration refers to a specialization of a function template
128#pragma warning (disable : 4512) // assignment operator could not be generated
129#pragma warning (disable : 4706) // assignment within conditional (even if((x = y)) )
130
131#pragma warning (disable : 4251) // member needs to have dll-interface to be used by clients of class
132#pragma warning (disable : 4275) // non dll-interface class used as base for dll-interface class
136#endif // LL_MSVC 133#endif // LL_MSVC
137 134
135#if LL_WINDOWS
136#define LL_DLLEXPORT __declspec(dllexport)
137#define LL_DLLIMPORT __declspec(dllimport)
138#elif LL_LINUX
139#define LL_DLLEXPORT __attribute__ ((visibility("default")))
140#define LL_DLLIMPORT
141#else
142#define LL_DLLEXPORT
143#define LL_DLLIMPORT
144#endif // LL_WINDOWS
145
146#ifdef llcommon_EXPORTS
147// Compiling llcommon (shared)
148#define LL_COMMON_API LL_DLLEXPORT
149#else // llcommon_EXPORTS
150// Using llcommon (shared)
151#define LL_COMMON_API LL_DLLIMPORT
152#endif // llcommon_EXPORTS
153
138#endif // not LL_LINDEN_PREPROCESSOR_H 154#endif // not LL_LINDEN_PREPROCESSOR_H
diff --git a/linden/indra/llcommon/llprocesslauncher.h b/linden/indra/llcommon/llprocesslauncher.h
index 9cdb0f6..b72be27 100644
--- a/linden/indra/llcommon/llprocesslauncher.h
+++ b/linden/indra/llcommon/llprocesslauncher.h
@@ -43,7 +43,7 @@
43 It also keeps track of whether the process is still running, and can kill it if required. 43 It also keeps track of whether the process is still running, and can kill it if required.
44*/ 44*/
45 45
46class LLProcessLauncher 46class LL_COMMON_API LLProcessLauncher
47{ 47{
48 LOG_CLASS(LLProcessLauncher); 48 LOG_CLASS(LLProcessLauncher);
49public: 49public:
diff --git a/linden/indra/llcommon/llqueuedthread.cpp b/linden/indra/llcommon/llqueuedthread.cpp
index caf4c2a..bee95be 100644
--- a/linden/indra/llcommon/llqueuedthread.cpp
+++ b/linden/indra/llcommon/llqueuedthread.cpp
@@ -32,6 +32,7 @@
32#include "linden_common.h" 32#include "linden_common.h"
33#include "llqueuedthread.h" 33#include "llqueuedthread.h"
34#include "llstl.h" 34#include "llstl.h"
35#include "lltimer.h"
35 36
36//============================================================================ 37//============================================================================
37 38
diff --git a/linden/indra/llcommon/llqueuedthread.h b/linden/indra/llcommon/llqueuedthread.h
index aa7c6e4..e0e0f1b 100644
--- a/linden/indra/llcommon/llqueuedthread.h
+++ b/linden/indra/llcommon/llqueuedthread.h
@@ -47,7 +47,7 @@
47// Note: ~LLQueuedThread is O(N) N=# of queued threads, assumed to be small 47// Note: ~LLQueuedThread is O(N) N=# of queued threads, assumed to be small
48// It is assumed that LLQueuedThreads are rarely created/destroyed. 48// It is assumed that LLQueuedThreads are rarely created/destroyed.
49 49
50class LLQueuedThread : public LLThread 50class LL_COMMON_API LLQueuedThread : public LLThread
51{ 51{
52 //------------------------------------------------------------------------ 52 //------------------------------------------------------------------------
53public: 53public:
@@ -80,7 +80,7 @@ public:
80 //------------------------------------------------------------------------ 80 //------------------------------------------------------------------------
81public: 81public:
82 82
83 class QueuedRequest : public LLSimpleHashEntry<handle_t> 83 class LL_COMMON_API QueuedRequest : public LLSimpleHashEntry<handle_t>
84 { 84 {
85 friend class LLQueuedThread; 85 friend class LLQueuedThread;
86 86
diff --git a/linden/indra/llcommon/llrand.h b/linden/indra/llcommon/llrand.h
index d12597b..73ea179 100644
--- a/linden/indra/llcommon/llrand.h
+++ b/linden/indra/llcommon/llrand.h
@@ -65,32 +65,32 @@
65/** 65/**
66 *@brief Generate a float from [0, RAND_MAX). 66 *@brief Generate a float from [0, RAND_MAX).
67 */ 67 */
68S32 ll_rand(); 68LL_COMMON_API S32 ll_rand();
69 69
70/** 70/**
71 *@brief Generate a float from [0, val) or (val, 0]. 71 *@brief Generate a float from [0, val) or (val, 0].
72 */ 72 */
73S32 ll_rand(S32 val); 73LL_COMMON_API S32 ll_rand(S32 val);
74 74
75/** 75/**
76 *@brief Generate a float from [0, 1.0). 76 *@brief Generate a float from [0, 1.0).
77 */ 77 */
78F32 ll_frand(); 78LL_COMMON_API F32 ll_frand();
79 79
80/** 80/**
81 *@brief Generate a float from [0, val) or (val, 0]. 81 *@brief Generate a float from [0, val) or (val, 0].
82 */ 82 */
83F32 ll_frand(F32 val); 83LL_COMMON_API F32 ll_frand(F32 val);
84 84
85/** 85/**
86 *@brief Generate a double from [0, 1.0). 86 *@brief Generate a double from [0, 1.0).
87 */ 87 */
88F64 ll_drand(); 88LL_COMMON_API F64 ll_drand();
89 89
90/** 90/**
91 *@brief Generate a double from [0, val) or (val, 0]. 91 *@brief Generate a double from [0, val) or (val, 0].
92 */ 92 */
93F64 ll_drand(F64 val); 93LL_COMMON_API F64 ll_drand(F64 val);
94 94
95/** 95/**
96 * @brief typedefs for good boost lagged fibonacci. 96 * @brief typedefs for good boost lagged fibonacci.
diff --git a/linden/indra/llcommon/llrun.h b/linden/indra/llcommon/llrun.h
index 77b23d9..0f8d51d 100644
--- a/linden/indra/llcommon/llrun.h
+++ b/linden/indra/llcommon/llrun.h
@@ -38,6 +38,8 @@
38#include <vector> 38#include <vector>
39#include <boost/shared_ptr.hpp> 39#include <boost/shared_ptr.hpp>
40 40
41#include "llpreprocessor.h"
42
41class LLRunnable; 43class LLRunnable;
42 44
43/** 45/**
@@ -48,7 +50,7 @@ class LLRunnable;
48 * which are scheduled to run on a repeating or one time basis. 50 * which are scheduled to run on a repeating or one time basis.
49 * @see LLRunnable 51 * @see LLRunnable
50 */ 52 */
51class LLRunner 53class LL_COMMON_API LLRunner
52{ 54{
53public: 55public:
54 /** 56 /**
@@ -149,7 +151,7 @@ protected:
149 * something useful. 151 * something useful.
150 * @see LLRunner 152 * @see LLRunner
151 */ 153 */
152class LLRunnable 154class LL_COMMON_API LLRunnable
153{ 155{
154public: 156public:
155 LLRunnable(); 157 LLRunnable();
diff --git a/linden/indra/llcommon/llsd.cpp b/linden/indra/llcommon/llsd.cpp
index 2cc94c2..be40bb6 100644
--- a/linden/indra/llcommon/llsd.cpp
+++ b/linden/indra/llcommon/llsd.cpp
@@ -75,7 +75,7 @@ protected:
75 ///< This constructor is used for static objects and causes the 75 ///< This constructor is used for static objects and causes the
76 // suppresses adjusting the debugging counters when they are 76 // suppresses adjusting the debugging counters when they are
77 // finally initialized. 77 // finally initialized.
78 78
79 virtual ~Impl(); 79 virtual ~Impl();
80 80
81 bool shared() const { return mUseCount > 1; } 81 bool shared() const { return mUseCount > 1; }
@@ -162,6 +162,7 @@ namespace
162 162
163 virtual LLSD::Type type() const { return T; } 163 virtual LLSD::Type type() const { return T; }
164 164
165 using LLSD::Impl::assign;
165 virtual void assign(LLSD::Impl*& var, DataRef value) { 166 virtual void assign(LLSD::Impl*& var, DataRef value) {
166 if (shared()) 167 if (shared())
167 { 168 {
@@ -348,6 +349,10 @@ namespace
348 349
349 virtual LLSD::Boolean asBoolean() const { return !mData.empty(); } 350 virtual LLSD::Boolean asBoolean() const { return !mData.empty(); }
350 351
352 using LLSD::Impl::get; // Unhiding get(LLSD::Integer)
353 using LLSD::Impl::erase; // Unhiding erase(LLSD::Integer)
354 using LLSD::Impl::ref; // Unhiding ref(LLSD::Integer)
355
351 virtual bool has(const LLSD::String&) const; 356 virtual bool has(const LLSD::String&) const;
352 virtual LLSD get(const LLSD::String&) const; 357 virtual LLSD get(const LLSD::String&) const;
353 LLSD& insert(const LLSD::String& k, const LLSD& v); 358 LLSD& insert(const LLSD::String& k, const LLSD& v);
@@ -440,6 +445,11 @@ namespace
440 virtual LLSD::Boolean asBoolean() const { return !mData.empty(); } 445 virtual LLSD::Boolean asBoolean() const { return !mData.empty(); }
441 446
442 virtual int size() const; 447 virtual int size() const;
448
449 using LLSD::Impl::get; // Unhiding get(LLSD::Integer)
450 using LLSD::Impl::erase; // Unhiding erase(LLSD::Integer)
451 using LLSD::Impl::ref; // Unhiding ref(LLSD::Integer)
452
443 virtual LLSD get(LLSD::Integer) const; 453 virtual LLSD get(LLSD::Integer) const;
444 void set(LLSD::Integer, const LLSD&); 454 void set(LLSD::Integer, const LLSD&);
445 LLSD& insert(LLSD::Integer, const LLSD&); 455 LLSD& insert(LLSD::Integer, const LLSD&);
diff --git a/linden/indra/llcommon/llsd.h b/linden/indra/llcommon/llsd.h
index d2845a3..552bb57 100644
--- a/linden/indra/llcommon/llsd.h
+++ b/linden/indra/llcommon/llsd.h
@@ -89,7 +89,7 @@
89 @nosubgrouping 89 @nosubgrouping
90*/ 90*/
91 91
92class LLSD 92class LL_COMMON_API LLSD
93{ 93{
94public: 94public:
95 LLSD(); ///< initially Undefined 95 LLSD(); ///< initially Undefined
@@ -387,7 +387,7 @@ struct llsd_select_string : public std::unary_function<LLSD, LLSD::String>
387 } 387 }
388}; 388};
389 389
390std::ostream& operator<<(std::ostream& s, const LLSD& llsd); 390LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLSD& llsd);
391 391
392/** QUESTIONS & TO DOS 392/** QUESTIONS & TO DOS
393 - Would Binary be more convenient as usigned char* buffer semantics? 393 - Would Binary be more convenient as usigned char* buffer semantics?
diff --git a/linden/indra/llcommon/llsdserialize.h b/linden/indra/llcommon/llsdserialize.h
index f7cd91b..a01b6dc 100644
--- a/linden/indra/llcommon/llsdserialize.h
+++ b/linden/indra/llcommon/llsdserialize.h
@@ -43,7 +43,7 @@
43 * @class LLSDParser 43 * @class LLSDParser
44 * @brief Abstract base class for LLSD parsers. 44 * @brief Abstract base class for LLSD parsers.
45 */ 45 */
46class LLSDParser : public LLRefCount 46class LL_COMMON_API LLSDParser : public LLRefCount
47{ 47{
48protected: 48protected:
49 /** 49 /**
@@ -220,7 +220,7 @@ protected:
220 * @class LLSDNotationParser 220 * @class LLSDNotationParser
221 * @brief Parser which handles the original notation format for LLSD. 221 * @brief Parser which handles the original notation format for LLSD.
222 */ 222 */
223class LLSDNotationParser : public LLSDParser 223class LL_COMMON_API LLSDNotationParser : public LLSDParser
224{ 224{
225protected: 225protected:
226 /** 226 /**
@@ -293,7 +293,7 @@ private:
293 * @class LLSDXMLParser 293 * @class LLSDXMLParser
294 * @brief Parser which handles XML format LLSD. 294 * @brief Parser which handles XML format LLSD.
295 */ 295 */
296class LLSDXMLParser : public LLSDParser 296class LL_COMMON_API LLSDXMLParser : public LLSDParser
297{ 297{
298protected: 298protected:
299 /** 299 /**
@@ -341,7 +341,7 @@ private:
341 * @class LLSDBinaryParser 341 * @class LLSDBinaryParser
342 * @brief Parser which handles binary formatted LLSD. 342 * @brief Parser which handles binary formatted LLSD.
343 */ 343 */
344class LLSDBinaryParser : public LLSDParser 344class LL_COMMON_API LLSDBinaryParser : public LLSDParser
345{ 345{
346protected: 346protected:
347 /** 347 /**
@@ -406,7 +406,7 @@ private:
406 * @class LLSDFormatter 406 * @class LLSDFormatter
407 * @brief Abstract base class for formatting LLSD. 407 * @brief Abstract base class for formatting LLSD.
408 */ 408 */
409class LLSDFormatter : public LLRefCount 409class LL_COMMON_API LLSDFormatter : public LLRefCount
410{ 410{
411protected: 411protected:
412 /** 412 /**
@@ -478,7 +478,7 @@ protected:
478 * @class LLSDNotationFormatter 478 * @class LLSDNotationFormatter
479 * @brief Formatter which outputs the original notation format for LLSD. 479 * @brief Formatter which outputs the original notation format for LLSD.
480 */ 480 */
481class LLSDNotationFormatter : public LLSDFormatter 481class LL_COMMON_API LLSDNotationFormatter : public LLSDFormatter
482{ 482{
483protected: 483protected:
484 /** 484 /**
@@ -519,7 +519,7 @@ public:
519 * @class LLSDXMLFormatter 519 * @class LLSDXMLFormatter
520 * @brief Formatter which outputs the LLSD as XML. 520 * @brief Formatter which outputs the LLSD as XML.
521 */ 521 */
522class LLSDXMLFormatter : public LLSDFormatter 522class LL_COMMON_API LLSDXMLFormatter : public LLSDFormatter
523{ 523{
524protected: 524protected:
525 /** 525 /**
@@ -587,7 +587,7 @@ protected:
587 * Map: '{' + 4 byte integer size every(key + value) + '}'<br> 587 * Map: '{' + 4 byte integer size every(key + value) + '}'<br>
588 * map keys are serialized as 'k' + 4 byte integer size + string 588 * map keys are serialized as 'k' + 4 byte integer size + string
589 */ 589 */
590class LLSDBinaryFormatter : public LLSDFormatter 590class LL_COMMON_API LLSDBinaryFormatter : public LLSDFormatter
591{ 591{
592protected: 592protected:
593 /** 593 /**
@@ -676,7 +676,7 @@ typedef LLSDOStreamer<LLSDXMLFormatter> LLSDXMLStreamer;
676 * @class LLSDSerialize 676 * @class LLSDSerialize
677 * @brief Serializer / deserializer for the various LLSD formats 677 * @brief Serializer / deserializer for the various LLSD formats
678 */ 678 */
679class LLSDSerialize 679class LL_COMMON_API LLSDSerialize
680{ 680{
681public: 681public:
682 enum ELLSD_Serialize 682 enum ELLSD_Serialize
diff --git a/linden/indra/llcommon/llsdserialize_xml.cpp b/linden/indra/llcommon/llsdserialize_xml.cpp
index c12ca35..33206b4 100644
--- a/linden/indra/llcommon/llsdserialize_xml.cpp
+++ b/linden/indra/llcommon/llsdserialize_xml.cpp
@@ -562,7 +562,7 @@ void LLSDXMLParser::Impl::parsePart(const char* buf, int len)
562 562
563#ifdef XML_PARSER_PERFORMANCE_TESTS 563#ifdef XML_PARSER_PERFORMANCE_TESTS
564 564
565extern U64 totalTime(); 565extern LL_COMMON_API U64 totalTime();
566U64 readElementTime = 0; 566U64 readElementTime = 0;
567U64 startElementTime = 0; 567U64 startElementTime = 0;
568U64 endElementTime = 0; 568U64 endElementTime = 0;
diff --git a/linden/indra/llcommon/llsdutil.h b/linden/indra/llcommon/llsdutil.h
index b67ad52..4740a30 100644
--- a/linden/indra/llcommon/llsdutil.h
+++ b/linden/indra/llcommon/llsdutil.h
@@ -68,28 +68,28 @@ LLSD ll_sd_from_color4(const LLColor4& c);
68LLColor4 ll_color4_from_sd(const LLSD& sd); 68LLColor4 ll_color4_from_sd(const LLSD& sd);
69 69
70// U32 70// U32
71LLSD ll_sd_from_U32(const U32); 71LL_COMMON_API LLSD ll_sd_from_U32(const U32);
72U32 ll_U32_from_sd(const LLSD& sd); 72LL_COMMON_API U32 ll_U32_from_sd(const LLSD& sd);
73 73
74// U64 74// U64
75LLSD ll_sd_from_U64(const U64); 75LL_COMMON_API LLSD ll_sd_from_U64(const U64);
76U64 ll_U64_from_sd(const LLSD& sd); 76LL_COMMON_API U64 ll_U64_from_sd(const LLSD& sd);
77 77
78// IP Address 78// IP Address
79LLSD ll_sd_from_ipaddr(const U32); 79LL_COMMON_API LLSD ll_sd_from_ipaddr(const U32);
80U32 ll_ipaddr_from_sd(const LLSD& sd); 80LL_COMMON_API U32 ll_ipaddr_from_sd(const LLSD& sd);
81 81
82// Binary to string 82// Binary to string
83LLSD ll_string_from_binary(const LLSD& sd); 83LL_COMMON_API LLSD ll_string_from_binary(const LLSD& sd);
84 84
85//String to binary 85//String to binary
86LLSD ll_binary_from_string(const LLSD& sd); 86LL_COMMON_API LLSD ll_binary_from_string(const LLSD& sd);
87 87
88// Serializes sd to static buffer and returns pointer, useful for gdb debugging. 88// Serializes sd to static buffer and returns pointer, useful for gdb debugging.
89char* ll_print_sd(const LLSD& sd); 89LL_COMMON_API char* ll_print_sd(const LLSD& sd);
90 90
91// Serializes sd to static buffer and returns pointer, using "pretty printing" mode. 91// Serializes sd to static buffer and returns pointer, using "pretty printing" mode.
92char* ll_pretty_print_sd(const LLSD& sd); 92LL_COMMON_API char* ll_pretty_print_sd(const LLSD& sd);
93 93
94//compares the structure of an LLSD to a template LLSD and stores the 94//compares the structure of an LLSD to a template LLSD and stores the
95//"valid" values in a 3rd LLSD. Default values 95//"valid" values in a 3rd LLSD. Default values
@@ -98,7 +98,7 @@ char* ll_pretty_print_sd(const LLSD& sd);
98//Returns false if the test is of same type but values differ in type 98//Returns false if the test is of same type but values differ in type
99//Otherwise, returns true 99//Otherwise, returns true
100 100
101BOOL compare_llsd_with_template( 101LL_COMMON_API BOOL compare_llsd_with_template(
102 const LLSD& llsd_to_test, 102 const LLSD& llsd_to_test,
103 const LLSD& template_llsd, 103 const LLSD& template_llsd,
104 LLSD& resultant_llsd); 104 LLSD& resultant_llsd);
diff --git a/linden/indra/llcommon/llsecondlifeurls.h b/linden/indra/llcommon/llsecondlifeurls.h
index 9c64b57..e3932d0 100644
--- a/linden/indra/llcommon/llsecondlifeurls.h
+++ b/linden/indra/llcommon/llsecondlifeurls.h
@@ -34,14 +34,14 @@
34#define LL_LLSECONDLIFEURLS_H 34#define LL_LLSECONDLIFEURLS_H
35 35
36 36
37extern const std::string AUCTION_URL; 37LL_COMMON_API extern const std::string AUCTION_URL;
38 38
39extern const std::string EVENTS_URL; 39LL_COMMON_API extern const std::string EVENTS_URL;
40 40
41// Currency page 41// Currency page
42extern const std::string BUY_CURRENCY_URL; 42LL_COMMON_API extern const std::string BUY_CURRENCY_URL;
43 43
44// Release Notes Redirect URL for Server and Viewer 44// Release Notes Redirect URL for Server and Viewer
45extern const std::string RELEASE_NOTES_BASE_URL; 45LL_COMMON_API extern const std::string RELEASE_NOTES_BASE_URL;
46 46
47#endif 47#endif
diff --git a/linden/indra/llcommon/llsimplehash.h b/linden/indra/llcommon/llsimplehash.h
index 0ba2a30..5df93b6 100644
--- a/linden/indra/llcommon/llsimplehash.h
+++ b/linden/indra/llcommon/llsimplehash.h
@@ -64,7 +64,7 @@ public:
64}; 64};
65 65
66template <typename HASH_KEY_TYPE, int TABLE_SIZE> 66template <typename HASH_KEY_TYPE, int TABLE_SIZE>
67class LLSimpleHash 67class LL_COMMON_API LLSimpleHash
68{ 68{
69public: 69public:
70 LLSimpleHash() 70 LLSimpleHash()
diff --git a/linden/indra/llcommon/llstat.h b/linden/indra/llcommon/llstat.h
index 66521a3..951091b 100644
--- a/linden/indra/llcommon/llstat.h
+++ b/linden/indra/llcommon/llstat.h
@@ -52,7 +52,7 @@ class LLSD;
52// amounts of time with very low memory cost. 52// amounts of time with very low memory cost.
53// 53//
54 54
55class LLStatAccum 55class LL_COMMON_API LLStatAccum
56{ 56{
57protected: 57protected:
58 LLStatAccum(bool use_frame_timer); 58 LLStatAccum(bool use_frame_timer);
@@ -109,7 +109,7 @@ public:
109 F64 mLastSampleValue; 109 F64 mLastSampleValue;
110}; 110};
111 111
112class LLStatMeasure : public LLStatAccum 112class LL_COMMON_API LLStatMeasure : public LLStatAccum
113 // gathers statistics about things that are measured 113 // gathers statistics about things that are measured
114 // ex.: tempature, time dilation 114 // ex.: tempature, time dilation
115{ 115{
@@ -124,7 +124,7 @@ public:
124}; 124};
125 125
126 126
127class LLStatRate : public LLStatAccum 127class LL_COMMON_API LLStatRate : public LLStatAccum
128 // gathers statistics about things that can be counted over time 128 // gathers statistics about things that can be counted over time
129 // ex.: LSL instructions executed, messages sent, simulator frames completed 129 // ex.: LSL instructions executed, messages sent, simulator frames completed
130 // renders it in terms of rate of thing per second 130 // renders it in terms of rate of thing per second
@@ -140,7 +140,7 @@ public:
140}; 140};
141 141
142 142
143class LLStatTime : public LLStatAccum 143class LL_COMMON_API LLStatTime : public LLStatAccum
144 // gathers statistics about time spent in a block of code 144 // gathers statistics about time spent in a block of code
145 // measure average duration per second in the block 145 // measure average duration per second in the block
146{ 146{
@@ -171,7 +171,7 @@ private:
171 171
172 172
173// Use this class on the stack to record statistics about an area of code 173// Use this class on the stack to record statistics about an area of code
174class LLPerfBlock 174class LL_COMMON_API LLPerfBlock
175{ 175{
176public: 176public:
177 struct StatEntry 177 struct StatEntry
@@ -213,7 +213,7 @@ private:
213 213
214// ---------------------------------------------------------------------------- 214// ----------------------------------------------------------------------------
215 215
216class LLPerfStats 216class LL_COMMON_API LLPerfStats
217{ 217{
218public: 218public:
219 LLPerfStats(const std::string& process_name = "unknown", S32 process_pid = 0); 219 LLPerfStats(const std::string& process_name = "unknown", S32 process_pid = 0);
@@ -249,7 +249,7 @@ private:
249}; 249};
250 250
251// ---------------------------------------------------------------------------- 251// ----------------------------------------------------------------------------
252class LLStat 252class LL_COMMON_API LLStat
253{ 253{
254public: 254public:
255 LLStat(const U32 num_bins = 32, BOOL use_frame_timer = FALSE); 255 LLStat(const U32 num_bins = 32, BOOL use_frame_timer = FALSE);
diff --git a/linden/indra/llcommon/llstreamtools.h b/linden/indra/llcommon/llstreamtools.h
index a6dc4d5..371fac5 100644
--- a/linden/indra/llcommon/llstreamtools.h
+++ b/linden/indra/llcommon/llstreamtools.h
@@ -39,23 +39,23 @@
39// unless specifed otherwise these all return input_stream.good() 39// unless specifed otherwise these all return input_stream.good()
40 40
41// skips spaces and tabs 41// skips spaces and tabs
42bool skip_whitespace(std::istream& input_stream); 42LL_COMMON_API bool skip_whitespace(std::istream& input_stream);
43 43
44// skips whitespace and newlines 44// skips whitespace and newlines
45bool skip_emptyspace(std::istream& input_stream); 45LL_COMMON_API bool skip_emptyspace(std::istream& input_stream);
46 46
47// skips emptyspace and lines that start with a # 47// skips emptyspace and lines that start with a #
48bool skip_comments_and_emptyspace(std::istream& input_stream); 48LL_COMMON_API bool skip_comments_and_emptyspace(std::istream& input_stream);
49 49
50// skips to character after next newline 50// skips to character after next newline
51bool skip_line(std::istream& input_stream); 51LL_COMMON_API bool skip_line(std::istream& input_stream);
52 52
53// skips to beginning of next non-emptyspace 53// skips to beginning of next non-emptyspace
54bool skip_to_next_word(std::istream& input_stream); 54LL_COMMON_API bool skip_to_next_word(std::istream& input_stream);
55 55
56// skips to character after the end of next keyword 56// skips to character after the end of next keyword
57// a 'keyword' is defined as the first word on a line 57// a 'keyword' is defined as the first word on a line
58bool skip_to_end_of_next_keyword(const char* keyword, std::istream& input_stream); 58LL_COMMON_API bool skip_to_end_of_next_keyword(const char* keyword, std::istream& input_stream);
59 59
60// skip_to_start_of_next_keyword() is disabled -- might tickle corruption bug 60// skip_to_start_of_next_keyword() is disabled -- might tickle corruption bug
61// in windows iostream 61// in windows iostream
@@ -65,14 +65,14 @@ bool skip_to_end_of_next_keyword(const char* keyword, std::istream& input_stream
65 65
66// characters are pulled out of input_stream and appended to output_string 66// characters are pulled out of input_stream and appended to output_string
67// returns result of input_stream.good() after characters are pulled 67// returns result of input_stream.good() after characters are pulled
68bool get_word(std::string& output_string, std::istream& input_stream); 68LL_COMMON_API bool get_word(std::string& output_string, std::istream& input_stream);
69bool get_line(std::string& output_string, std::istream& input_stream); 69LL_COMMON_API bool get_line(std::string& output_string, std::istream& input_stream);
70 70
71// characters are pulled out of input_stream (up to a max of 'n') 71// characters are pulled out of input_stream (up to a max of 'n')
72// and appended to output_string 72// and appended to output_string
73// returns result of input_stream.good() after characters are pulled 73// returns result of input_stream.good() after characters are pulled
74bool get_word(std::string& output_string, std::istream& input_stream, int n); 74LL_COMMON_API bool get_word(std::string& output_string, std::istream& input_stream, int n);
75bool get_line(std::string& output_string, std::istream& input_stream, int n); 75LL_COMMON_API bool get_line(std::string& output_string, std::istream& input_stream, int n);
76 76
77// unget_line() is disabled -- might tickle corruption bug in windows iostream 77// unget_line() is disabled -- might tickle corruption bug in windows iostream
78//// backs up the input_stream by line_size + 1 characters 78//// backs up the input_stream by line_size + 1 characters
@@ -82,28 +82,28 @@ bool get_line(std::string& output_string, std::istream& input_stream, int n);
82 82
83// removes the last char in 'line' if it matches 'c' 83// removes the last char in 'line' if it matches 'c'
84// returns true if removed last char 84// returns true if removed last char
85bool remove_last_char(char c, std::string& line); 85LL_COMMON_API bool remove_last_char(char c, std::string& line);
86 86
87// replaces escaped characters with the correct characters from left to right 87// replaces escaped characters with the correct characters from left to right
88// "\\" ---> '\\' 88// "\\" ---> '\\'
89// "\n" ---> '\n' 89// "\n" ---> '\n'
90void unescape_string(std::string& line); 90LL_COMMON_API void unescape_string(std::string& line);
91 91
92// replaces unescaped characters with expanded equivalents from left to right 92// replaces unescaped characters with expanded equivalents from left to right
93// '\\' ---> "\\" 93// '\\' ---> "\\"
94// '\n' ---> "\n" 94// '\n' ---> "\n"
95void escape_string(std::string& line); 95LL_COMMON_API void escape_string(std::string& line);
96 96
97// replaces each '\n' character with ' ' 97// replaces each '\n' character with ' '
98void replace_newlines_with_whitespace(std::string& line); 98LL_COMMON_API void replace_newlines_with_whitespace(std::string& line);
99 99
100// erases any double-quote characters in line 100// erases any double-quote characters in line
101void remove_double_quotes(std::string& line); 101LL_COMMON_API void remove_double_quotes(std::string& line);
102 102
103// the 'keyword' is defined as the first word on a line 103// the 'keyword' is defined as the first word on a line
104// the 'value' is everything after the keyword on the same line 104// the 'value' is everything after the keyword on the same line
105// starting at the first non-whitespace and ending right before the newline 105// starting at the first non-whitespace and ending right before the newline
106void get_keyword_and_value(std::string& keyword, 106LL_COMMON_API void get_keyword_and_value(std::string& keyword,
107 std::string& value, 107 std::string& value,
108 const std::string& line); 108 const std::string& line);
109 109
@@ -111,13 +111,13 @@ void get_keyword_and_value(std::string& keyword,
111// read anymore or until we hit the count. Some istream 111// read anymore or until we hit the count. Some istream
112// implimentations have a max that they will read. 112// implimentations have a max that they will read.
113// Returns the number of bytes read. 113// Returns the number of bytes read.
114std::streamsize fullread( 114LL_COMMON_API std::streamsize fullread(
115 std::istream& istr, 115 std::istream& istr,
116 char* buf, 116 char* buf,
117 std::streamsize requested); 117 std::streamsize requested);
118 118
119 119
120std::istream& operator>>(std::istream& str, const char *tocheck); 120LL_COMMON_API std::istream& operator>>(std::istream& str, const char *tocheck);
121 121
122#endif 122#endif
123 123
diff --git a/linden/indra/llcommon/llstring.h b/linden/indra/llcommon/llstring.h
index bab89b1..61767ac 100644
--- a/linden/indra/llcommon/llstring.h
+++ b/linden/indra/llcommon/llstring.h
@@ -34,12 +34,14 @@
34#define LL_LLSTRING_H 34#define LL_LLSTRING_H
35 35
36#include <string> 36#include <string>
37#include <cstdio>
38#include <algorithm>
39#include <map>
37 40
38#if LL_LINUX || LL_SOLARIS 41#if LL_LINUX || LL_SOLARIS
39#include <wctype.h> 42#include <wctype.h>
40#include <wchar.h> 43#include <wchar.h>
41#endif 44#endif
42#include "linden_common.h"
43 45
44#include <string.h> 46#include <string.h>
45 47
@@ -144,7 +146,7 @@ struct char_traits<U16>
144}; 146};
145#endif 147#endif
146 148
147class LLStringOps 149class LL_COMMON_API LLStringOps
148{ 150{
149public: 151public:
150 static char toUpper(char elem) { return toupper((unsigned char)elem); } 152 static char toUpper(char elem) { return toupper((unsigned char)elem); }
@@ -179,8 +181,8 @@ public:
179 * @brief Return a string constructed from in without crashing if the 181 * @brief Return a string constructed from in without crashing if the
180 * pointer is NULL. 182 * pointer is NULL.
181 */ 183 */
182std::string ll_safe_string(const char* in); 184std::string LL_COMMON_API ll_safe_string(const char* in);
183std::string ll_safe_string(const char* in, S32 maxlen); 185std::string LL_COMMON_API ll_safe_string(const char* in, S32 maxlen);
184 186
185 187
186// Allowing assignments from non-strings into format_map_t is apparently 188// Allowing assignments from non-strings into format_map_t is apparently
@@ -236,7 +238,8 @@ public:
236 static void replaceTabsWithSpaces( std::basic_string<T>& string, size_type spaces_per_tab ); 238 static void replaceTabsWithSpaces( std::basic_string<T>& string, size_type spaces_per_tab );
237 static void replaceNonstandardASCII( std::basic_string<T>& string, T replacement ); 239 static void replaceNonstandardASCII( std::basic_string<T>& string, T replacement );
238 static void replaceChar( std::basic_string<T>& string, T target, T replacement ); 240 static void replaceChar( std::basic_string<T>& string, T target, T replacement );
239 241 static void replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement );
242
240 static BOOL containsNonprintable(const std::basic_string<T>& string); 243 static BOOL containsNonprintable(const std::basic_string<T>& string);
241 static void stripNonprintable(std::basic_string<T>& string); 244 static void stripNonprintable(std::basic_string<T>& string);
242 245
@@ -349,7 +352,7 @@ inline std::string chop_tail_copy(
349 * @brief This translates a nybble stored as a hex value from 0-f back 352 * @brief This translates a nybble stored as a hex value from 0-f back
350 * to a nybble in the low order bits of the return byte. 353 * to a nybble in the low order bits of the return byte.
351 */ 354 */
352U8 hex_as_nybble(char hex); 355LL_COMMON_API U8 hex_as_nybble(char hex);
353 356
354/** 357/**
355 * @brief read the contents of a file into a string. 358 * @brief read the contents of a file into a string.
@@ -360,7 +363,7 @@ U8 hex_as_nybble(char hex);
360 * @param filename The full name of the file to read. 363 * @param filename The full name of the file to read.
361 * @return Returns true on success. If false, str is unmodified. 364 * @return Returns true on success. If false, str is unmodified.
362 */ 365 */
363bool _read_file_into_string(std::string& str, const std::string& filename); 366LL_COMMON_API bool _read_file_into_string(std::string& str, const std::string& filename);
364 367
365/** 368/**
366 * Unicode support 369 * Unicode support
@@ -369,52 +372,52 @@ bool _read_file_into_string(std::string& str, const std::string& filename);
369// Make the incoming string a utf8 string. Replaces any unknown glyph 372// Make the incoming string a utf8 string. Replaces any unknown glyph
370// with the UNKOWN_CHARACTER. Once any unknown glph is found, the rest 373// with the UNKOWN_CHARACTER. Once any unknown glph is found, the rest
371// of the data may not be recovered. 374// of the data may not be recovered.
372std::string rawstr_to_utf8(const std::string& raw); 375LL_COMMON_API std::string rawstr_to_utf8(const std::string& raw);
373 376
374// 377//
375// We should never use UTF16 except when communicating with Win32! 378// We should never use UTF16 except when communicating with Win32!
376// 379//
377typedef std::basic_string<U16> llutf16string; 380typedef std::basic_string<U16> llutf16string;
378 381
379LLWString utf16str_to_wstring(const llutf16string &utf16str, S32 len); 382LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str, S32 len);
380LLWString utf16str_to_wstring(const llutf16string &utf16str); 383LL_COMMON_API LLWString utf16str_to_wstring(const llutf16string &utf16str);
381 384
382llutf16string wstring_to_utf16str(const LLWString &utf32str, S32 len); 385LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str, S32 len);
383llutf16string wstring_to_utf16str(const LLWString &utf32str); 386LL_COMMON_API llutf16string wstring_to_utf16str(const LLWString &utf32str);
384 387
385llutf16string utf8str_to_utf16str ( const std::string& utf8str, S32 len); 388LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str, S32 len);
386llutf16string utf8str_to_utf16str ( const std::string& utf8str ); 389LL_COMMON_API llutf16string utf8str_to_utf16str ( const std::string& utf8str );
387 390
388LLWString utf8str_to_wstring(const std::string &utf8str, S32 len); 391LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str, S32 len);
389LLWString utf8str_to_wstring(const std::string &utf8str); 392LL_COMMON_API LLWString utf8str_to_wstring(const std::string &utf8str);
390// Same function, better name. JC 393// Same function, better name. JC
391inline LLWString utf8string_to_wstring(const std::string& utf8_string) { return utf8str_to_wstring(utf8_string); } 394inline LLWString utf8string_to_wstring(const std::string& utf8_string) { return utf8str_to_wstring(utf8_string); }
392 395
393// 396//
394S32 wchar_to_utf8chars(llwchar inchar, char* outchars); 397LL_COMMON_API S32 wchar_to_utf8chars(llwchar inchar, char* outchars);
395 398
396std::string wstring_to_utf8str(const LLWString &utf32str, S32 len); 399LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str, S32 len);
397std::string wstring_to_utf8str(const LLWString &utf32str); 400LL_COMMON_API std::string wstring_to_utf8str(const LLWString &utf32str);
398 401
399std::string utf16str_to_utf8str(const llutf16string &utf16str, S32 len); 402LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str, S32 len);
400std::string utf16str_to_utf8str(const llutf16string &utf16str); 403LL_COMMON_API std::string utf16str_to_utf8str(const llutf16string &utf16str);
401 404
402// Length of this UTF32 string in bytes when transformed to UTF8 405// Length of this UTF32 string in bytes when transformed to UTF8
403S32 wstring_utf8_length(const LLWString& wstr); 406LL_COMMON_API S32 wstring_utf8_length(const LLWString& wstr);
404 407
405// Length in bytes of this wide char in a UTF8 string 408// Length in bytes of this wide char in a UTF8 string
406S32 wchar_utf8_length(const llwchar wc); 409LL_COMMON_API S32 wchar_utf8_length(const llwchar wc);
407 410
408std::string utf8str_tolower(const std::string& utf8str); 411LL_COMMON_API std::string utf8str_tolower(const std::string& utf8str);
409 412
410// Length in llwchar (UTF-32) of the first len units (16 bits) of the given UTF-16 string. 413// Length in llwchar (UTF-32) of the first len units (16 bits) of the given UTF-16 string.
411S32 utf16str_wstring_length(const llutf16string &utf16str, S32 len); 414LL_COMMON_API S32 utf16str_wstring_length(const llutf16string &utf16str, S32 len);
412 415
413// Length in utf16string (UTF-16) of wlen wchars beginning at woffset. 416// Length in utf16string (UTF-16) of wlen wchars beginning at woffset.
414S32 wstring_utf16_length(const LLWString & wstr, S32 woffset, S32 wlen); 417LL_COMMON_API S32 wstring_utf16_length(const LLWString & wstr, S32 woffset, S32 wlen);
415 418
416// Length in wstring (i.e., llwchar count) of a part of a wstring specified by utf16 length (i.e., utf16 units.) 419// Length in wstring (i.e., llwchar count) of a part of a wstring specified by utf16 length (i.e., utf16 units.)
417S32 wstring_wstring_length_from_utf16_length(const LLWString & wstr, S32 woffset, S32 utf16_length, BOOL *unaligned = NULL); 420LL_COMMON_API S32 wstring_wstring_length_from_utf16_length(const LLWString & wstr, S32 woffset, S32 utf16_length, BOOL *unaligned = NULL);
418 421
419/** 422/**
420 * @brief Properly truncate a utf8 string to a maximum byte count. 423 * @brief Properly truncate a utf8 string to a maximum byte count.
@@ -426,11 +429,11 @@ S32 wstring_wstring_length_from_utf16_length(const LLWString & wstr, S32 woffset
426 * @param max_len The maximum number of bytes in the return value. 429 * @param max_len The maximum number of bytes in the return value.
427 * @return Returns a valid utf8 string with byte count <= max_len. 430 * @return Returns a valid utf8 string with byte count <= max_len.
428 */ 431 */
429std::string utf8str_truncate(const std::string& utf8str, const S32 max_len); 432LL_COMMON_API std::string utf8str_truncate(const std::string& utf8str, const S32 max_len);
430 433
431std::string utf8str_trim(const std::string& utf8str); 434LL_COMMON_API std::string utf8str_trim(const std::string& utf8str);
432 435
433S32 utf8str_compare_insensitive( 436LL_COMMON_API S32 utf8str_compare_insensitive(
434 const std::string& lhs, 437 const std::string& lhs,
435 const std::string& rhs); 438 const std::string& rhs);
436 439
@@ -441,17 +444,17 @@ S32 utf8str_compare_insensitive(
441 * @param target_char The wchar to be replaced 444 * @param target_char The wchar to be replaced
442 * @param replace_char The wchar which is written on replace 445 * @param replace_char The wchar which is written on replace
443 */ 446 */
444std::string utf8str_substChar( 447LL_COMMON_API std::string utf8str_substChar(
445 const std::string& utf8str, 448 const std::string& utf8str,
446 const llwchar target_char, 449 const llwchar target_char,
447 const llwchar replace_char); 450 const llwchar replace_char);
448 451
449std::string utf8str_makeASCII(const std::string& utf8str); 452LL_COMMON_API std::string utf8str_makeASCII(const std::string& utf8str);
450 453
451// Hack - used for evil notecards. 454// Hack - used for evil notecards.
452std::string mbcsstring_makeASCII(const std::string& str); 455LL_COMMON_API std::string mbcsstring_makeASCII(const std::string& str);
453 456
454std::string utf8str_removeCRLF(const std::string& utf8str); 457LL_COMMON_API std::string utf8str_removeCRLF(const std::string& utf8str);
455 458
456 459
457#if LL_WINDOWS 460#if LL_WINDOWS
@@ -476,14 +479,21 @@ std::string utf8str_removeCRLF(const std::string& utf8str);
476 * formatted string. 479 * formatted string.
477 * 480 *
478 */ 481 */
479int safe_snprintf(char* str, size_t size, const char* format, ...); 482
483// Deal with the differeneces on Windows
484namespace snprintf_hack
485{
486 LL_COMMON_API int snprintf(char *str, size_t size, const char *format, ...);
487}
488
489using snprintf_hack::snprintf;
480 490
481/** 491/**
482 * @brief Convert a wide string to std::string 492 * @brief Convert a wide string to std::string
483 * 493 *
484 * This replaces the unsafe W2A macro from ATL. 494 * This replaces the unsafe W2A macro from ATL.
485 */ 495 */
486std::string ll_convert_wide_to_string(const wchar_t* in); 496LL_COMMON_API std::string ll_convert_wide_to_string(const wchar_t* in);
487 497
488//@} 498//@}
489#endif // LL_WINDOWS 499#endif // LL_WINDOWS
@@ -506,7 +516,7 @@ namespace LLStringFn
506 * with zero non-printable characters. 516 * with zero non-printable characters.
507 * @param The replacement character. use LL_UNKNOWN_CHAR if unsure. 517 * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
508 */ 518 */
509 void replace_nonprintable_in_ascii( 519 LL_COMMON_API void replace_nonprintable_in_ascii(
510 std::basic_string<char>& string, 520 std::basic_string<char>& string,
511 char replacement); 521 char replacement);
512 522
@@ -520,7 +530,7 @@ namespace LLStringFn
520 * with zero non-printable characters and zero pipe characters. 530 * with zero non-printable characters and zero pipe characters.
521 * @param The replacement character. use LL_UNKNOWN_CHAR if unsure. 531 * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
522 */ 532 */
523 void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str, 533 LL_COMMON_API void replace_nonprintable_and_pipe_in_ascii(std::basic_string<char>& str,
524 char replacement); 534 char replacement);
525 535
526 536
@@ -529,7 +539,7 @@ namespace LLStringFn
529 * Returns a copy of the string with those characters removed. 539 * Returns a copy of the string with those characters removed.
530 * Works with US ASCII and UTF-8 encoded strings. JC 540 * Works with US ASCII and UTF-8 encoded strings. JC
531 */ 541 */
532 std::string strip_invalid_xml(const std::string& input); 542 LL_COMMON_API std::string strip_invalid_xml(const std::string& input);
533 543
534 544
535 /** 545 /**
@@ -540,7 +550,7 @@ namespace LLStringFn
540 * with zero non-printable characters. 550 * with zero non-printable characters.
541 * @param The replacement character. use LL_UNKNOWN_CHAR if unsure. 551 * @param The replacement character. use LL_UNKNOWN_CHAR if unsure.
542 */ 552 */
543 void replace_ascii_controlchars( 553 LL_COMMON_API void replace_ascii_controlchars(
544 std::basic_string<char>& string, 554 std::basic_string<char>& string,
545 char replacement); 555 char replacement);
546} 556}
@@ -901,11 +911,22 @@ template<class T>
901void LLStringUtilBase<T>::replaceChar( std::basic_string<T>& string, T target, T replacement ) 911void LLStringUtilBase<T>::replaceChar( std::basic_string<T>& string, T target, T replacement )
902{ 912{
903 size_type found_pos = 0; 913 size_type found_pos = 0;
904 for (found_pos = string.find(target, found_pos); 914 while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos )
905 found_pos != std::basic_string<T>::npos;
906 found_pos = string.find(target, found_pos))
907 { 915 {
908 string[found_pos] = replacement; 916 string[found_pos] = replacement;
917 found_pos++; // avoid infinite defeat if target == replacement
918 }
919}
920
921//static
922template<class T>
923void LLStringUtilBase<T>::replaceString( std::basic_string<T>& string, std::basic_string<T> target, std::basic_string<T> replacement )
924{
925 size_type found_pos = 0;
926 while( (found_pos = string.find(target, found_pos)) != std::basic_string<T>::npos )
927 {
928 string.replace( found_pos, target.length(), replacement );
929 found_pos += replacement.length(); // avoid infinite defeat if replacement contains target
909 } 930 }
910} 931}
911 932
diff --git a/linden/indra/llcommon/llstringtable.h b/linden/indra/llcommon/llstringtable.h
index 4492063..b13b016 100644
--- a/linden/indra/llcommon/llstringtable.h
+++ b/linden/indra/llcommon/llstringtable.h
@@ -56,7 +56,7 @@
56 56
57const U32 MAX_STRINGS_LENGTH = 256; 57const U32 MAX_STRINGS_LENGTH = 256;
58 58
59class LLStringTableEntry 59class LL_COMMON_API LLStringTableEntry
60{ 60{
61public: 61public:
62 LLStringTableEntry(const char *str) 62 LLStringTableEntry(const char *str)
@@ -81,7 +81,7 @@ public:
81 S32 mCount; 81 S32 mCount;
82}; 82};
83 83
84class LLStringTable 84class LL_COMMON_API LLStringTable
85{ 85{
86public: 86public:
87 LLStringTable(int tablesize); 87 LLStringTable(int tablesize);
@@ -115,7 +115,7 @@ public:
115#endif 115#endif
116}; 116};
117 117
118extern LLStringTable gStringTable; 118extern LL_COMMON_API LLStringTable gStringTable;
119 119
120//============================================================================ 120//============================================================================
121 121
@@ -125,7 +125,7 @@ extern LLStringTable gStringTable;
125 125
126typedef const std::string* LLStdStringHandle; 126typedef const std::string* LLStdStringHandle;
127 127
128class LLStdStringTable 128class LL_COMMON_API LLStdStringTable
129{ 129{
130public: 130public:
131 LLStdStringTable(S32 tablesize = 0) 131 LLStdStringTable(S32 tablesize = 0)
diff --git a/linden/indra/llcommon/llsys.h b/linden/indra/llcommon/llsys.h
index 03f48ca..d5575b2 100644
--- a/linden/indra/llcommon/llsys.h
+++ b/linden/indra/llcommon/llsys.h
@@ -45,7 +45,7 @@
45#include <iosfwd> 45#include <iosfwd>
46#include <string> 46#include <string>
47 47
48class LLOSInfo 48class LL_COMMON_API LLOSInfo
49{ 49{
50public: 50public:
51 LLOSInfo(); 51 LLOSInfo();
@@ -70,7 +70,7 @@ private:
70}; 70};
71 71
72 72
73class LLCPUInfo 73class LL_COMMON_API LLCPUInfo
74{ 74{
75public: 75public:
76 LLCPUInfo(); 76 LLCPUInfo();
@@ -99,7 +99,7 @@ private:
99// 99//
100// CLASS LLMemoryInfo 100// CLASS LLMemoryInfo
101 101
102class LLMemoryInfo 102class LL_COMMON_API LLMemoryInfo
103 103
104/*! @brief Class to query the memory subsystem 104/*! @brief Class to query the memory subsystem
105 105
@@ -123,15 +123,15 @@ public:
123}; 123};
124 124
125 125
126std::ostream& operator<<(std::ostream& s, const LLOSInfo& info); 126LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLOSInfo& info);
127std::ostream& operator<<(std::ostream& s, const LLCPUInfo& info); 127LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLCPUInfo& info);
128std::ostream& operator<<(std::ostream& s, const LLMemoryInfo& info); 128LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLMemoryInfo& info);
129 129
130// gunzip srcfile into dstfile. Returns FALSE on error. 130// gunzip srcfile into dstfile. Returns FALSE on error.
131BOOL gunzip_file(const std::string& srcfile, const std::string& dstfile); 131LL_COMMON_API BOOL gunzip_file(const std::string& srcfile, const std::string& dstfile);
132// gzip srcfile into dstfile. Returns FALSE on error. 132// gzip srcfile into dstfile. Returns FALSE on error.
133BOOL gzip_file(const std::string& srcfile, const std::string& dstfile); 133LL_COMMON_API BOOL gzip_file(const std::string& srcfile, const std::string& dstfile);
134 134
135extern LLCPUInfo gSysCPU; 135LL_COMMON_API extern LLCPUInfo gSysCPU;
136 136
137#endif // LL_LLSYS_H 137#endif // LL_LLSYS_H
diff --git a/linden/indra/llcommon/llthread.h b/linden/indra/llcommon/llthread.h
index ed76a3b..98d64ef 100644
--- a/linden/indra/llcommon/llthread.h
+++ b/linden/indra/llcommon/llthread.h
@@ -43,7 +43,7 @@ class LLThread;
43class LLMutex; 43class LLMutex;
44class LLCondition; 44class LLCondition;
45 45
46class LLThread 46class LL_COMMON_API LLThread
47{ 47{
48public: 48public:
49 typedef enum e_thread_status 49 typedef enum e_thread_status
@@ -125,7 +125,7 @@ protected:
125 125
126//============================================================================ 126//============================================================================
127 127
128class LLMutex 128class LL_COMMON_API LLMutex
129{ 129{
130public: 130public:
131 LLMutex(apr_pool_t *apr_poolp); // NULL pool constructs a new pool for the mutex 131 LLMutex(apr_pool_t *apr_poolp); // NULL pool constructs a new pool for the mutex
@@ -145,7 +145,7 @@ protected:
145}; 145};
146 146
147// Actually a condition/mutex pair (since each condition needs to be associated with a mutex). 147// Actually a condition/mutex pair (since each condition needs to be associated with a mutex).
148class LLCondition : public LLMutex 148class LL_COMMON_API LLCondition : public LLMutex
149{ 149{
150public: 150public:
151 LLCondition(apr_pool_t *apr_poolp); // Defaults to global pool, could use the thread pool as well. 151 LLCondition(apr_pool_t *apr_poolp); // Defaults to global pool, could use the thread pool as well.
@@ -159,7 +159,7 @@ protected:
159 apr_thread_cond_t *mAPRCondp; 159 apr_thread_cond_t *mAPRCondp;
160}; 160};
161 161
162class LLMutexLock 162class LL_COMMON_API LLMutexLock
163{ 163{
164public: 164public:
165 LLMutexLock(LLMutex* mutex) 165 LLMutexLock(LLMutex* mutex)
@@ -192,7 +192,7 @@ void LLThread::unlockData()
192 192
193// see llmemory.h for LLPointer<> definition 193// see llmemory.h for LLPointer<> definition
194 194
195class LLThreadSafeRefCount 195class LL_COMMON_API LLThreadSafeRefCount
196{ 196{
197public: 197public:
198 static void initThreadSafeRefCount(); // creates sMutex 198 static void initThreadSafeRefCount(); // creates sMutex
@@ -244,7 +244,7 @@ private:
244 244
245// Simple responder for self destructing callbacks 245// Simple responder for self destructing callbacks
246// Pure virtual class 246// Pure virtual class
247class LLResponder : public LLThreadSafeRefCount 247class LL_COMMON_API LLResponder : public LLThreadSafeRefCount
248{ 248{
249protected: 249protected:
250 virtual ~LLResponder(); 250 virtual ~LLResponder();
diff --git a/linden/indra/llcommon/lltimer.cpp b/linden/indra/llcommon/lltimer.cpp
index fb3e1ef..2d283ec 100644
--- a/linden/indra/llcommon/lltimer.cpp
+++ b/linden/indra/llcommon/lltimer.cpp
@@ -33,6 +33,7 @@
33#include "linden_common.h" 33#include "linden_common.h"
34 34
35#include "lltimer.h" 35#include "lltimer.h"
36#include "timing.h" // totalTime prototype.
36 37
37#include "u64.h" 38#include "u64.h"
38 39
@@ -51,9 +52,6 @@
51// 52//
52// Locally used constants 53// Locally used constants
53// 54//
54const U32 SEC_PER_DAY = 86400;
55const F64 SEC_TO_MICROSEC = 1000000.f;
56const U64 SEC_TO_MICROSEC_U64 = 1000000;
57const F64 USEC_TO_SEC_F64 = 0.000001; 55const F64 USEC_TO_SEC_F64 = 0.000001;
58 56
59 57
diff --git a/linden/indra/llcommon/lltimer.h b/linden/indra/llcommon/lltimer.h
index a653233..8590328 100644
--- a/linden/indra/llcommon/lltimer.h
+++ b/linden/indra/llcommon/lltimer.h
@@ -39,6 +39,7 @@
39#include <limits.h> 39#include <limits.h>
40 40
41#include "stdtypes.h" 41#include "stdtypes.h"
42#include "llpreprocessor.h"
42#include "lldate.h" 43#include "lldate.h"
43 44
44#include <string> 45#include <string>
@@ -54,7 +55,7 @@ const U32 USEC_PER_HOUR = USEC_PER_MIN * MIN_PER_HOUR;
54const U32 SEC_PER_HOUR = SEC_PER_MIN * MIN_PER_HOUR; 55const U32 SEC_PER_HOUR = SEC_PER_MIN * MIN_PER_HOUR;
55const F64 SEC_PER_USEC = 1.0 / (F64) USEC_PER_SEC; 56const F64 SEC_PER_USEC = 1.0 / (F64) USEC_PER_SEC;
56 57
57class LLTimer 58class LL_COMMON_API LLTimer
58{ 59{
59public: 60public:
60 static LLTimer *sTimer; // global timer 61 static LLTimer *sTimer; // global timer
@@ -113,17 +114,17 @@ public:
113// 114//
114// Various functions for initializing/accessing clock and timing stuff. Don't use these without REALLY knowing how they work. 115// Various functions for initializing/accessing clock and timing stuff. Don't use these without REALLY knowing how they work.
115// 116//
116U64 get_clock_count(); 117LL_COMMON_API U64 get_clock_count();
117F64 calc_clock_frequency(U32 msecs); 118LL_COMMON_API F64 calc_clock_frequency(U32 msecs);
118void update_clock_frequencies(); 119LL_COMMON_API void update_clock_frequencies();
119 120
120// Sleep for milliseconds 121// Sleep for milliseconds
121void ms_sleep(U32 ms); 122LL_COMMON_API void ms_sleep(U32 ms);
122U32 micro_sleep(U64 us, U32 max_yields = 0xFFFFFFFF); 123LL_COMMON_API U32 micro_sleep(U64 us, U32 max_yields = 0xFFFFFFFF);
123 124
124// Returns the correct UTC time in seconds, like time(NULL). 125// Returns the correct UTC time in seconds, like time(NULL).
125// Useful on the viewer, which may have its local clock set wrong. 126// Useful on the viewer, which may have its local clock set wrong.
126time_t time_corrected(); 127LL_COMMON_API time_t time_corrected();
127 128
128static inline time_t time_min() 129static inline time_t time_min()
129{ 130{
@@ -154,25 +155,25 @@ static inline time_t time_max()
154} 155}
155 156
156// Correction factor used by time_corrected() above. 157// Correction factor used by time_corrected() above.
157extern S32 gUTCOffset; 158LL_COMMON_API extern S32 gUTCOffset;
158 159
159// Is the current computer (in its current time zone) 160// Is the current computer (in its current time zone)
160// observing daylight savings time? 161// observing daylight savings time?
161BOOL is_daylight_savings(); 162LL_COMMON_API BOOL is_daylight_savings();
162 163
163// Converts internal "struct tm" time buffer to Pacific Standard/Daylight Time 164// Converts internal "struct tm" time buffer to Pacific Standard/Daylight Time
164// Usage: 165// Usage:
165// S32 utc_time; 166// S32 utc_time;
166// utc_time = time_corrected(); 167// utc_time = time_corrected();
167// struct tm* internal_time = utc_to_pacific_time(utc_time, gDaylight); 168// struct tm* internal_time = utc_to_pacific_time(utc_time, gDaylight);
168struct tm* utc_to_pacific_time(time_t utc_time, BOOL pacific_daylight_time); 169LL_COMMON_API struct tm* utc_to_pacific_time(time_t utc_time, BOOL pacific_daylight_time);
169struct tm* utc_to_offset_time(time_t utc_time, S32 offset, BOOL DST); 170LL_COMMON_API struct tm* utc_to_offset_time(time_t utc_time, S32 offset, BOOL DST);
170 171
171void microsecondsToTimecodeString(U64 current_time, std::string& tcstring); 172LL_COMMON_API void microsecondsToTimecodeString(U64 current_time, std::string& tcstring);
172void secondsToTimecodeString(F32 current_time, std::string& tcstring); 173LL_COMMON_API void secondsToTimecodeString(F32 current_time, std::string& tcstring);
173 174
174// class for scheduling a function to be called at a given frequency (approximate, inprecise) 175// class for scheduling a function to be called at a given frequency (approximate, inprecise)
175class LLEventTimer 176class LL_COMMON_API LLEventTimer
176{ 177{
177public: 178public:
178 LLEventTimer(F32 period); // period is the amount of time between each call to tick() in seconds 179 LLEventTimer(F32 period); // period is the amount of time between each call to tick() in seconds
diff --git a/linden/indra/llcommon/lluri.h b/linden/indra/llcommon/lluri.h
index 156d80b..57bbedf 100644
--- a/linden/indra/llcommon/lluri.h
+++ b/linden/indra/llcommon/lluri.h
@@ -47,7 +47,7 @@ class LLApp;
47 * See: http://www.ietf.org/rfc/rfc3986.txt 47 * See: http://www.ietf.org/rfc/rfc3986.txt
48 * 48 *
49 */ 49 */
50class LLURI 50class LL_COMMON_API LLURI
51{ 51{
52public: 52public:
53 LLURI(); 53 LLURI();
@@ -189,6 +189,6 @@ private:
189}; 189};
190 190
191// this operator required for tut 191// this operator required for tut
192bool operator!=(const LLURI& first, const LLURI& second); 192LL_COMMON_API bool operator!=(const LLURI& first, const LLURI& second);
193 193
194#endif // LL_LLURI_H 194#endif // LL_LLURI_H
diff --git a/linden/indra/llcommon/lluuid.h b/linden/indra/llcommon/lluuid.h
index 4b32138..c78fb12 100644
--- a/linden/indra/llcommon/lluuid.h
+++ b/linden/indra/llcommon/lluuid.h
@@ -35,6 +35,7 @@
35#include <iostream> 35#include <iostream>
36#include <set> 36#include <set>
37#include "stdtypes.h" 37#include "stdtypes.h"
38#include "llpreprocessor.h"
38 39
39const S32 UUID_BYTES = 16; 40const S32 UUID_BYTES = 16;
40const S32 UUID_WORDS = 4; 41const S32 UUID_WORDS = 4;
@@ -47,7 +48,7 @@ struct uuid_time_t {
47 U32 low; 48 U32 low;
48 }; 49 };
49 50
50class LLUUID 51class LL_COMMON_API LLUUID
51{ 52{
52public: 53public:
53 // 54 //
@@ -106,8 +107,8 @@ public:
106 LLUUID combine(const LLUUID& other) const; 107 LLUUID combine(const LLUUID& other) const;
107 void combine(const LLUUID& other, LLUUID& result) const; 108 void combine(const LLUUID& other, LLUUID& result) const;
108 109
109 friend std::ostream& operator<<(std::ostream& s, const LLUUID &uuid); 110 friend LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLUUID &uuid);
110 friend std::istream& operator>>(std::istream& s, LLUUID &uuid); 111 friend LL_COMMON_API std::istream& operator>>(std::istream& s, LLUUID &uuid);
111 112
112 void toString(char *out) const; // Does not allocate memory, needs 36 characters (including \0) 113 void toString(char *out) const; // Does not allocate memory, needs 36 characters (including \0)
113 void toString(std::string& out) const; 114 void toString(std::string& out) const;
@@ -323,7 +324,7 @@ typedef std::set<LLUUID, lluuid_less> uuid_list_t;
323 */ 324 */
324typedef LLUUID LLAssetID; 325typedef LLUUID LLAssetID;
325 326
326class LLTransactionID : public LLUUID 327class LL_COMMON_API LLTransactionID : public LLUUID
327{ 328{
328public: 329public:
329 LLTransactionID() : LLUUID() { } 330 LLTransactionID() : LLUUID() { }
diff --git a/linden/indra/llcommon/llworkerthread.h b/linden/indra/llcommon/llworkerthread.h
index 708d812..33d4c40 100644
--- a/linden/indra/llcommon/llworkerthread.h
+++ b/linden/indra/llcommon/llworkerthread.h
@@ -50,7 +50,7 @@ class LLWorkerClass;
50// Note: ~LLWorkerThread is O(N) N=# of worker threads, assumed to be small 50// Note: ~LLWorkerThread is O(N) N=# of worker threads, assumed to be small
51// It is assumed that LLWorkerThreads are rarely created/destroyed. 51// It is assumed that LLWorkerThreads are rarely created/destroyed.
52 52
53class LLWorkerThread : public LLQueuedThread 53class LL_COMMON_API LLWorkerThread : public LLQueuedThread
54{ 54{
55 friend class LLWorkerClass; 55 friend class LLWorkerClass;
56public: 56public:
@@ -114,7 +114,7 @@ public:
114// Only one background task can be active at a time (per instance). 114// Only one background task can be active at a time (per instance).
115// i.e. don't call addWork() if haveWork() returns true 115// i.e. don't call addWork() if haveWork() returns true
116 116
117class LLWorkerClass 117class LL_COMMON_API LLWorkerClass
118{ 118{
119 friend class LLWorkerThread; 119 friend class LLWorkerThread;
120 friend class LLWorkerThread::WorkRequest; 120 friend class LLWorkerThread::WorkRequest;
diff --git a/linden/indra/llcommon/metaclass.h b/linden/indra/llcommon/metaclass.h
index cc10f16..f38bcd2 100644
--- a/linden/indra/llcommon/metaclass.h
+++ b/linden/indra/llcommon/metaclass.h
@@ -43,7 +43,7 @@
43class LLReflective; 43class LLReflective;
44class LLMetaProperty; 44class LLMetaProperty;
45class LLMetaMethod; 45class LLMetaMethod;
46class LLMetaClass 46class LL_COMMON_API LLMetaClass
47{ 47{
48public: 48public:
49 49
diff --git a/linden/indra/llcommon/metaproperty.h b/linden/indra/llcommon/metaproperty.h
index e5ac359..6c016c5 100644
--- a/linden/indra/llcommon/metaproperty.h
+++ b/linden/indra/llcommon/metaproperty.h
@@ -41,7 +41,7 @@
41 41
42class LLMetaClass; 42class LLMetaClass;
43class LLReflective; 43class LLReflective;
44class LLMetaProperty 44class LL_COMMON_API LLMetaProperty
45{ 45{
46public: 46public:
47 LLMetaProperty(const std::string& name, const LLMetaClass& object_class); 47 LLMetaProperty(const std::string& name, const LLMetaClass& object_class);
diff --git a/linden/indra/llcommon/reflective.h b/linden/indra/llcommon/reflective.h
index e2c18eb..a135376 100644
--- a/linden/indra/llcommon/reflective.h
+++ b/linden/indra/llcommon/reflective.h
@@ -36,7 +36,7 @@
36#define LL_REFLECTIVE_H 36#define LL_REFLECTIVE_H
37 37
38class LLMetaClass; 38class LLMetaClass;
39class LLReflective 39class LL_COMMON_API LLReflective
40{ 40{
41public: 41public:
42 LLReflective(); 42 LLReflective();
diff --git a/linden/indra/llcommon/timing.h b/linden/indra/llcommon/timing.h
index 2b9f60a..cfc637e 100644
--- a/linden/indra/llcommon/timing.h
+++ b/linden/indra/llcommon/timing.h
@@ -44,6 +44,6 @@ const U64 SEC_TO_MICROSEC_U64 = 1000000;
44const U32 SEC_PER_DAY = 86400; 44const U32 SEC_PER_DAY = 86400;
45 45
46// This is just a stub, implementation in lltimer.cpp. This file will be deprecated in the future. 46// This is just a stub, implementation in lltimer.cpp. This file will be deprecated in the future.
47U64 totalTime(); // Returns current system time in microseconds 47LL_COMMON_API U64 totalTime(); // Returns current system time in microseconds
48 48
49#endif 49#endif
diff --git a/linden/indra/llcommon/u64.h b/linden/indra/llcommon/u64.h
index 09a6b3e..eb51131 100644
--- a/linden/indra/llcommon/u64.h
+++ b/linden/indra/llcommon/u64.h
@@ -39,14 +39,14 @@
39 * @param str The string to parse. 39 * @param str The string to parse.
40 * @return Returns the first U64 value found in the string or 0 on failure. 40 * @return Returns the first U64 value found in the string or 0 on failure.
41 */ 41 */
42U64 str_to_U64(const std::string& str); 42LL_COMMON_API U64 str_to_U64(const std::string& str);
43 43
44/** 44/**
45 * @brief Given a U64 value, return a printable representation. 45 * @brief Given a U64 value, return a printable representation.
46 * @param value The U64 to turn into a printable character array. 46 * @param value The U64 to turn into a printable character array.
47 * @return Returns the result string. 47 * @return Returns the result string.
48 */ 48 */
49std::string U64_to_str(U64 value); 49LL_COMMON_API std::string U64_to_str(U64 value);
50 50
51/** 51/**
52 * @brief Given a U64 value, return a printable representation. 52 * @brief Given a U64 value, return a printable representation.
@@ -65,16 +65,16 @@ std::string U64_to_str(U64 value);
65 * @param result_size The size of the buffer allocated. Use U64_BUF. 65 * @param result_size The size of the buffer allocated. Use U64_BUF.
66 * @return Returns the result pointer. 66 * @return Returns the result pointer.
67 */ 67 */
68char* U64_to_str(U64 value, char* result, S32 result_size); 68LL_COMMON_API char* U64_to_str(U64 value, char* result, S32 result_size);
69 69
70/** 70/**
71 * @brief Convert a U64 to the closest F64 value. 71 * @brief Convert a U64 to the closest F64 value.
72 */ 72 */
73F64 U64_to_F64(const U64 value); 73LL_COMMON_API F64 U64_to_F64(const U64 value);
74 74
75/** 75/**
76 * @brief Helper function to wrap strtoull() which is not available on windows. 76 * @brief Helper function to wrap strtoull() which is not available on windows.
77 */ 77 */
78U64 llstrtou64(const char* str, char** end, S32 base); 78LL_COMMON_API U64 llstrtou64(const char* str, char** end, S32 base);
79 79
80#endif 80#endif
diff --git a/linden/indra/llinventory/llparcel.h b/linden/indra/llinventory/llparcel.h
index 47571d0..8faa673 100644
--- a/linden/indra/llinventory/llparcel.h
+++ b/linden/indra/llinventory/llparcel.h
@@ -39,7 +39,7 @@
39#include "llparcelflags.h" 39#include "llparcelflags.h"
40#include "llpermissions.h" 40#include "llpermissions.h"
41#include "v3math.h" 41#include "v3math.h"
42 42#include "lltimer.h"
43 43
44// Grid out of which parcels taken is stepped every 4 meters. 44// Grid out of which parcels taken is stepped every 4 meters.
45const F32 PARCEL_GRID_STEP_METERS = 4.f; 45const F32 PARCEL_GRID_STEP_METERS = 4.f;
diff --git a/linden/indra/llmath/lloctree.h b/linden/indra/llmath/lloctree.h
index bced84c..2029554 100644
--- a/linden/indra/llmath/lloctree.h
+++ b/linden/indra/llmath/lloctree.h
@@ -68,8 +68,7 @@ template <class T>
68class LLOctreeTraveler : public LLTreeTraveler<T> 68class LLOctreeTraveler : public LLTreeTraveler<T>
69{ 69{
70public: 70public:
71 virtual void traverse(const LLTreeNode<T>* node); 71 virtual void traverse(const LLOctreeNode<T>* node);
72 virtual void visit(const LLTreeNode<T>* state) { }
73 virtual void visit(const LLOctreeNode<T>* branch) = 0; 72 virtual void visit(const LLOctreeNode<T>* branch) = 0;
74}; 73};
75 74
@@ -705,9 +704,8 @@ public:
705// LLOctreeTraveler 704// LLOctreeTraveler
706//======================== 705//========================
707template <class T> 706template <class T>
708void LLOctreeTraveler<T>::traverse(const LLTreeNode<T>* tree_node) 707void LLOctreeTraveler<T>::traverse(const LLOctreeNode<T>* node)
709{ 708{
710 const LLOctreeNode<T>* node = (const LLOctreeNode<T>*) tree_node;
711 node->accept(this); 709 node->accept(this);
712 for (U32 i = 0; i < node->getChildCount(); i++) 710 for (U32 i = 0; i < node->getChildCount(); i++)
713 { 711 {
diff --git a/linden/indra/llmath/lltreenode.h b/linden/indra/llmath/lltreenode.h
index ee98362..ccbeda5 100644
--- a/linden/indra/llmath/lltreenode.h
+++ b/linden/indra/llmath/lltreenode.h
@@ -82,8 +82,6 @@ class LLTreeTraveler
82{ 82{
83public: 83public:
84 virtual ~LLTreeTraveler() { }; 84 virtual ~LLTreeTraveler() { };
85 virtual void traverse(const LLTreeNode<T>* node) = 0;
86 virtual void visit(const LLTreeNode<T>* node) = 0;
87}; 85};
88 86
89template <class T> 87template <class T>
diff --git a/linden/indra/llmessage/CMakeLists.txt b/linden/indra/llmessage/CMakeLists.txt
index 4723281..a5e4249 100644
--- a/linden/indra/llmessage/CMakeLists.txt
+++ b/linden/indra/llmessage/CMakeLists.txt
@@ -218,7 +218,7 @@ IF (NOT LINUX AND VIEWER)
218 # These can not be found when we try to run the tests, so we had to disable them, for the viewer build. 218 # These can not be found when we try to run the tests, so we had to disable them, for the viewer build.
219 # TODO: Can someone with viewer knowledge figure out how to make these find the correct so. 219 # TODO: Can someone with viewer knowledge figure out how to make these find the correct so.
220 #ADD_BUILD_TEST(llhttpclientadapter llmessage) 220 #ADD_BUILD_TEST(llhttpclientadapter llmessage)
221 ADD_BUILD_TEST(lltrustedmessageservice llmessage) 221 #ADD_BUILD_TEST(lltrustedmessageservice llmessage)
222 ADD_BUILD_TEST(lltemplatemessagedispatcher llmessage) 222 #ADD_BUILD_TEST(lltemplatemessagedispatcher llmessage)
223ENDIF (NOT LINUX AND VIEWER) 223ENDIF (NOT LINUX AND VIEWER)
224 224
diff --git a/linden/indra/llmessage/llassetstorage.cpp b/linden/indra/llmessage/llassetstorage.cpp
index 16a96b7..0ab1081 100644
--- a/linden/indra/llmessage/llassetstorage.cpp
+++ b/linden/indra/llmessage/llassetstorage.cpp
@@ -1028,12 +1028,12 @@ LLSD LLAssetStorage::getPendingDetails(LLAssetStorage::ERequestType rt,
1028{ 1028{
1029 const request_list_t* requests = getRequestList(rt); 1029 const request_list_t* requests = getRequestList(rt);
1030 LLSD sd; 1030 LLSD sd;
1031 sd["requests"] = getPendingDetails(requests, asset_type, detail_prefix); 1031 sd["requests"] = getPendingDetailsImpl(requests, asset_type, detail_prefix);
1032 return sd; 1032 return sd;
1033} 1033}
1034 1034
1035// virtual 1035// virtual
1036LLSD LLAssetStorage::getPendingDetails(const LLAssetStorage::request_list_t* requests, 1036LLSD LLAssetStorage::getPendingDetailsImpl(const LLAssetStorage::request_list_t* requests,
1037 LLAssetType::EType asset_type, 1037 LLAssetType::EType asset_type,
1038 const std::string& detail_prefix) const 1038 const std::string& detail_prefix) const
1039{ 1039{
@@ -1116,11 +1116,11 @@ LLSD LLAssetStorage::getPendingRequest(LLAssetStorage::ERequestType rt,
1116 const LLUUID& asset_id) const 1116 const LLUUID& asset_id) const
1117{ 1117{
1118 const request_list_t* requests = getRequestList(rt); 1118 const request_list_t* requests = getRequestList(rt);
1119 return getPendingRequest(requests, asset_type, asset_id); 1119 return getPendingRequestImpl(requests, asset_type, asset_id);
1120} 1120}
1121 1121
1122// virtual 1122// virtual
1123LLSD LLAssetStorage::getPendingRequest(const LLAssetStorage::request_list_t* requests, 1123LLSD LLAssetStorage::getPendingRequestImpl(const LLAssetStorage::request_list_t* requests,
1124 LLAssetType::EType asset_type, 1124 LLAssetType::EType asset_type,
1125 const LLUUID& asset_id) const 1125 const LLUUID& asset_id) const
1126{ 1126{
@@ -1139,7 +1139,7 @@ bool LLAssetStorage::deletePendingRequest(LLAssetStorage::ERequestType rt,
1139 const LLUUID& asset_id) 1139 const LLUUID& asset_id)
1140{ 1140{
1141 request_list_t* requests = getRequestList(rt); 1141 request_list_t* requests = getRequestList(rt);
1142 if (deletePendingRequest(requests, asset_type, asset_id)) 1142 if (deletePendingRequestImpl(requests, asset_type, asset_id))
1143 { 1143 {
1144 llinfos << "Asset " << getRequestName(rt) << " request for " 1144 llinfos << "Asset " << getRequestName(rt) << " request for "
1145 << asset_id << "." << LLAssetType::lookup(asset_type) 1145 << asset_id << "." << LLAssetType::lookup(asset_type)
@@ -1150,7 +1150,7 @@ bool LLAssetStorage::deletePendingRequest(LLAssetStorage::ERequestType rt,
1150} 1150}
1151 1151
1152// virtual 1152// virtual
1153bool LLAssetStorage::deletePendingRequest(LLAssetStorage::request_list_t* requests, 1153bool LLAssetStorage::deletePendingRequestImpl(LLAssetStorage::request_list_t* requests,
1154 LLAssetType::EType asset_type, 1154 LLAssetType::EType asset_type,
1155 const LLUUID& asset_id) 1155 const LLUUID& asset_id)
1156{ 1156{
diff --git a/linden/indra/llmessage/llassetstorage.h b/linden/indra/llmessage/llassetstorage.h
index c094ef4..83cfdf6 100644
--- a/linden/indra/llmessage/llassetstorage.h
+++ b/linden/indra/llmessage/llassetstorage.h
@@ -315,15 +315,15 @@ public:
315 void markAssetToxic( const LLUUID& uuid ); 315 void markAssetToxic( const LLUUID& uuid );
316 316
317protected: 317protected:
318 virtual LLSD getPendingDetails(const request_list_t* requests, 318 virtual LLSD getPendingDetailsImpl(const request_list_t* requests,
319 LLAssetType::EType asset_type, 319 LLAssetType::EType asset_type,
320 const std::string& detail_prefix) const; 320 const std::string& detail_prefix) const;
321 321
322 virtual LLSD getPendingRequest(const request_list_t* requests, 322 virtual LLSD getPendingRequestImpl(const request_list_t* requests,
323 LLAssetType::EType asset_type, 323 LLAssetType::EType asset_type,
324 const LLUUID& asset_id) const; 324 const LLUUID& asset_id) const;
325 325
326 virtual bool deletePendingRequest(request_list_t* requests, 326 virtual bool deletePendingRequestImpl(request_list_t* requests,
327 LLAssetType::EType asset_type, 327 LLAssetType::EType asset_type,
328 const LLUUID& asset_id); 328 const LLUUID& asset_id);
329 329
diff --git a/linden/indra/llmessage/llcurl.cpp b/linden/indra/llmessage/llcurl.cpp
index 12321fe..202332c 100644
--- a/linden/indra/llmessage/llcurl.cpp
+++ b/linden/indra/llmessage/llcurl.cpp
@@ -120,7 +120,7 @@ LLCurl::Responder::~Responder()
120} 120}
121 121
122// virtual 122// virtual
123void LLCurl::Responder::error( 123void LLCurl::Responder::errorWithContent(
124 U32 status, 124 U32 status,
125 const std::string& reason, 125 const std::string& reason,
126 const LLSD&) 126 const LLSD&)
@@ -161,7 +161,7 @@ void LLCurl::Responder::completed(U32 status, const std::string& reason, const L
161 } 161 }
162 else 162 else
163 { 163 {
164 error(status, reason, content); 164 errorWithContent(status, reason, content);
165 } 165 }
166} 166}
167 167
diff --git a/linden/indra/llmessage/llcurl.h b/linden/indra/llmessage/llcurl.h
index 3e9c0d4..32637b2 100644
--- a/linden/indra/llmessage/llcurl.h
+++ b/linden/indra/llmessage/llcurl.h
@@ -85,7 +85,7 @@ public:
85 return((200 <= status) && (status < 300)); 85 return((200 <= status) && (status < 300));
86 } 86 }
87 87
88 virtual void error( 88 virtual void errorWithContent(
89 U32 status, 89 U32 status,
90 const std::string& reason, 90 const std::string& reason,
91 const LLSD& content); 91 const LLSD& content);
diff --git a/linden/indra/llmessage/llhttpassetstorage.cpp b/linden/indra/llmessage/llhttpassetstorage.cpp
index dfdad59..49dbdbd 100644
--- a/linden/indra/llmessage/llhttpassetstorage.cpp
+++ b/linden/indra/llmessage/llhttpassetstorage.cpp
@@ -626,7 +626,7 @@ LLSD LLHTTPAssetStorage::getPendingRequest(LLAssetStorage::ERequestType rt,
626 const request_list_t* running = getRunningList(rt); 626 const request_list_t* running = getRunningList(rt);
627 if (running) 627 if (running)
628 { 628 {
629 LLSD sd = LLAssetStorage::getPendingRequest(running, asset_type, asset_id); 629 LLSD sd = LLAssetStorage::getPendingRequestImpl(running, asset_type, asset_id);
630 if (sd) 630 if (sd)
631 { 631 {
632 sd["is_running"] = true; 632 sd["is_running"] = true;
diff --git a/linden/indra/llmessage/llhttpassetstorage.h b/linden/indra/llmessage/llhttpassetstorage.h
index 5786c5d..231437d 100644
--- a/linden/indra/llmessage/llhttpassetstorage.h
+++ b/linden/indra/llmessage/llhttpassetstorage.h
@@ -62,6 +62,8 @@ public:
62 62
63 virtual ~LLHTTPAssetStorage(); 63 virtual ~LLHTTPAssetStorage();
64 64
65 using LLAssetStorage::storeAssetData; // Unhiding virtuals...
66
65 virtual void storeAssetData( 67 virtual void storeAssetData(
66 const LLUUID& uuid, 68 const LLUUID& uuid,
67 LLAssetType::EType atype, 69 LLAssetType::EType atype,
diff --git a/linden/indra/llmessage/llhttpnode.cpp b/linden/indra/llmessage/llhttpnode.cpp
index 2ba900a..440b91f 100644
--- a/linden/indra/llmessage/llhttpnode.cpp
+++ b/linden/indra/llmessage/llhttpnode.cpp
@@ -98,19 +98,19 @@ namespace {
98} 98}
99 99
100// virtual 100// virtual
101LLSD LLHTTPNode::get() const 101LLSD LLHTTPNode::simpleGet() const
102{ 102{
103 throw NotImplemented(); 103 throw NotImplemented();
104} 104}
105 105
106// virtual 106// virtual
107LLSD LLHTTPNode::put(const LLSD& input) const 107LLSD LLHTTPNode::simplePut(const LLSD& input) const
108{ 108{
109 throw NotImplemented(); 109 throw NotImplemented();
110} 110}
111 111
112// virtual 112// virtual
113LLSD LLHTTPNode::post(const LLSD& input) const 113LLSD LLHTTPNode::simplePost(const LLSD& input) const
114{ 114{
115 throw NotImplemented(); 115 throw NotImplemented();
116} 116}
@@ -121,7 +121,7 @@ void LLHTTPNode::get(LLHTTPNode::ResponsePtr response, const LLSD& context) cons
121{ 121{
122 try 122 try
123 { 123 {
124 response->result(get()); 124 response->result(simpleGet());
125 } 125 }
126 catch (NotImplemented) 126 catch (NotImplemented)
127 { 127 {
@@ -134,7 +134,7 @@ void LLHTTPNode::put(LLHTTPNode::ResponsePtr response, const LLSD& context, cons
134{ 134{
135 try 135 try
136 { 136 {
137 response->result(put(input)); 137 response->result(simplePut(input));
138 } 138 }
139 catch (NotImplemented) 139 catch (NotImplemented)
140 { 140 {
@@ -147,7 +147,7 @@ void LLHTTPNode::post(LLHTTPNode::ResponsePtr response, const LLSD& context, con
147{ 147{
148 try 148 try
149 { 149 {
150 response->result(post(input)); 150 response->result(simplePost(input));
151 } 151 }
152 catch (NotImplemented) 152 catch (NotImplemented)
153 { 153 {
@@ -160,7 +160,7 @@ void LLHTTPNode::del(LLHTTPNode::ResponsePtr response, const LLSD& context) cons
160{ 160{
161 try 161 try
162 { 162 {
163 response->result(del(context)); 163 response->result(simpleDel(context));
164 } 164 }
165 catch (NotImplemented) 165 catch (NotImplemented)
166 { 166 {
@@ -170,7 +170,7 @@ void LLHTTPNode::del(LLHTTPNode::ResponsePtr response, const LLSD& context) cons
170} 170}
171 171
172// virtual 172// virtual
173LLSD LLHTTPNode::del(const LLSD&) const 173LLSD LLHTTPNode::simpleDel(const LLSD&) const
174{ 174{
175 throw NotImplemented(); 175 throw NotImplemented();
176} 176}
@@ -388,7 +388,7 @@ LLHTTPNode::Response::~Response()
388{ 388{
389} 389}
390 390
391void LLHTTPNode::Response::status(S32 code) 391void LLHTTPNode::Response::statusUnknownError(S32 code)
392{ 392{
393 status(code, "Unknown Error"); 393 status(code, "Unknown Error");
394} 394}
diff --git a/linden/indra/llmessage/llhttpnode.h b/linden/indra/llmessage/llhttpnode.h
index 17ffd66..87f0c48 100644
--- a/linden/indra/llmessage/llhttpnode.h
+++ b/linden/indra/llmessage/llhttpnode.h
@@ -83,10 +83,10 @@ public:
83 //@{ 83 //@{
84public: 84public:
85 85
86 virtual LLSD get() const; 86 virtual LLSD simpleGet() const;
87 virtual LLSD put(const LLSD& input) const; 87 virtual LLSD simplePut(const LLSD& input) const;
88 virtual LLSD post(const LLSD& input) const; 88 virtual LLSD simplePost(const LLSD& input) const;
89 virtual LLSD del(const LLSD& context) const; 89 virtual LLSD simpleDel(const LLSD& context) const;
90 90
91 /** 91 /**
92 * @brief Abstract Base Class declaring Response interface. 92 * @brief Abstract Base Class declaring Response interface.
@@ -116,7 +116,7 @@ public:
116 /** 116 /**
117 * @brief Return no body, just status code and 'UNKNOWN ERROR'. 117 * @brief Return no body, just status code and 'UNKNOWN ERROR'.
118 */ 118 */
119 virtual void status(S32 code); 119 virtual void statusUnknownError(S32 code);
120 120
121 virtual void notFound(const std::string& message); 121 virtual void notFound(const std::string& message);
122 virtual void notFound(); 122 virtual void notFound();
diff --git a/linden/indra/llmessage/llpumpio.cpp b/linden/indra/llmessage/llpumpio.cpp
index 3e3f0b3..8ef2b16 100644
--- a/linden/indra/llmessage/llpumpio.cpp
+++ b/linden/indra/llmessage/llpumpio.cpp
@@ -43,6 +43,7 @@
43#include "llmemtype.h" 43#include "llmemtype.h"
44#include "llstl.h" 44#include "llstl.h"
45#include "llstat.h" 45#include "llstat.h"
46#include "llfasttimer.h"
46 47
47// These should not be enabled in production, but they can be 48// These should not be enabled in production, but they can be
48// intensely useful during development for finding certain kinds of 49// intensely useful during development for finding certain kinds of
diff --git a/linden/indra/llmessage/llregionpresenceverifier.cpp b/linden/indra/llmessage/llregionpresenceverifier.cpp
index 24410a7..04eba34 100644
--- a/linden/indra/llmessage/llregionpresenceverifier.cpp
+++ b/linden/indra/llmessage/llregionpresenceverifier.cpp
@@ -30,6 +30,7 @@
30 * $/LicenseInfo$ 30 * $/LicenseInfo$
31 */ 31 */
32 32
33#include "linden_common.h"
33#include "llregionpresenceverifier.h" 34#include "llregionpresenceverifier.h"
34#include "llhttpclientinterface.h" 35#include "llhttpclientinterface.h"
35#include <sstream> 36#include <sstream>
diff --git a/linden/indra/llmessage/llsdappservices.cpp b/linden/indra/llmessage/llsdappservices.cpp
index dc135c5..b87c0cd 100644
--- a/linden/indra/llmessage/llsdappservices.cpp
+++ b/linden/indra/llmessage/llsdappservices.cpp
@@ -56,7 +56,7 @@ public:
56 desc.source(__FILE__, __LINE__); 56 desc.source(__FILE__, __LINE__);
57 } 57 }
58 58
59 virtual LLSD get() const 59 virtual LLSD simpleGet() const
60 { 60 {
61 LLSD result; 61 LLSD result;
62 LLApp* app = LLApp::instance(); 62 LLApp* app = LLApp::instance();
@@ -82,7 +82,7 @@ public:
82 desc.source(__FILE__, __LINE__); 82 desc.source(__FILE__, __LINE__);
83 } 83 }
84 84
85 virtual LLSD get() const 85 virtual LLSD simpleGet() const
86 { 86 {
87 return LLApp::instance()->getOptionData( 87 return LLApp::instance()->getOptionData(
88 LLApp::PRIORITY_RUNTIME_OVERRIDE); 88 LLApp::PRIORITY_RUNTIME_OVERRIDE);
diff --git a/linden/indra/llmessage/llsdhttpserver.cpp b/linden/indra/llmessage/llsdhttpserver.cpp
index 00fc170..7d06c29 100644
--- a/linden/indra/llmessage/llsdhttpserver.cpp
+++ b/linden/indra/llmessage/llsdhttpserver.cpp
@@ -62,7 +62,7 @@ public:
62 desc.source(__FILE__, __LINE__); 62 desc.source(__FILE__, __LINE__);
63 } 63 }
64 64
65 virtual LLSD get() const 65 virtual LLSD simpleGet() const
66 { 66 {
67 LLSD result = "hello"; 67 LLSD result = "hello";
68 return result; 68 return result;
@@ -86,7 +86,7 @@ public:
86 desc.source(__FILE__, __LINE__); 86 desc.source(__FILE__, __LINE__);
87 } 87 }
88 88
89 virtual LLSD post(const LLSD& params) const 89 virtual LLSD simplePost(const LLSD& params) const
90 { 90 {
91 return params; 91 return params;
92 } 92 }
diff --git a/linden/indra/llplugin/CMakeLists.txt b/linden/indra/llplugin/CMakeLists.txt
index 73cd9a3..7a7f4e5 100644
--- a/linden/indra/llplugin/CMakeLists.txt
+++ b/linden/indra/llplugin/CMakeLists.txt
@@ -2,10 +2,6 @@
2 2
3project(llplugin) 3project(llplugin)
4 4
5if(HAVE_64_BIT)
6 set(REQUIRE_PIC)
7endif(HAVE_64_BIT)
8
9include(00-Common) 5include(00-Common)
10include(CURL) 6include(CURL)
11include(LLCommon) 7include(LLCommon)
diff --git a/linden/indra/llrender/llfontgl.cpp b/linden/indra/llrender/llfontgl.cpp
index 5d3d6a7..7baec81 100644
--- a/linden/indra/llrender/llfontgl.cpp
+++ b/linden/indra/llrender/llfontgl.cpp
@@ -42,6 +42,7 @@
42#include "llrender.h" 42#include "llrender.h"
43#include "v4color.h" 43#include "v4color.h"
44#include "llstl.h" 44#include "llstl.h"
45#include "llfasttimer.h"
45 46
46const S32 BOLD_OFFSET = 1; 47const S32 BOLD_OFFSET = 1;
47 48
diff --git a/linden/indra/llrender/llgl.cpp b/linden/indra/llrender/llgl.cpp
index 2e9b2bd..4a4ff1b 100644
--- a/linden/indra/llrender/llgl.cpp
+++ b/linden/indra/llrender/llgl.cpp
@@ -547,8 +547,6 @@ void LLGLManager::shutdownGL()
547// these are used to turn software blending on. They appear in the Debug/Avatar menu 547// these are used to turn software blending on. They appear in the Debug/Avatar menu
548// presence of vertex skinning/blending or vertex programs will set these to FALSE by default. 548// presence of vertex skinning/blending or vertex programs will set these to FALSE by default.
549 549
550extern LLCPUInfo gSysCPU;
551
552void LLGLManager::initExtensions() 550void LLGLManager::initExtensions()
553{ 551{
554#if LL_MESA_HEADLESS 552#if LL_MESA_HEADLESS
diff --git a/linden/indra/llui/llfunctorregistry.cpp b/linden/indra/llui/llfunctorregistry.cpp
index 0c5b165..5f9644f 100644
--- a/linden/indra/llui/llfunctorregistry.cpp
+++ b/linden/indra/llui/llfunctorregistry.cpp
@@ -31,6 +31,7 @@
31 * $/LicenseInfo$ 31 * $/LicenseInfo$
32 **/ 32 **/
33 33
34#include "linden_common.h"
34#include "llfunctorregistry.h" 35#include "llfunctorregistry.h"
35 36
36// This is a default functor always resident in the system. 37// This is a default functor always resident in the system.
diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp
index 9635f99..1248a9a 100644
--- a/linden/indra/llui/llscrolllistctrl.cpp
+++ b/linden/indra/llui/llscrolllistctrl.cpp
@@ -605,6 +605,7 @@ LLScrollListCtrl::LLScrollListCtrl(const std::string& name, const LLRect& rect,
605 mHighlightedColor( LLUI::sColorsGroup->getColor("ScrollHighlightedColor") ), 605 mHighlightedColor( LLUI::sColorsGroup->getColor("ScrollHighlightedColor") ),
606 mBorderThickness( 2 ), 606 mBorderThickness( 2 ),
607 mOnDoubleClickCallback( NULL ), 607 mOnDoubleClickCallback( NULL ),
608 mOnRightMouseDownCallback( NULL ),
608 mOnMaximumSelectCallback( NULL ), 609 mOnMaximumSelectCallback( NULL ),
609 mOnSortChangedCallback( NULL ), 610 mOnSortChangedCallback( NULL ),
610 mHighlightedItem(-1), 611 mHighlightedItem(-1),
@@ -2082,6 +2083,27 @@ BOOL LLScrollListCtrl::handleDoubleClick(S32 x, S32 y, MASK mask)
2082 return TRUE; 2083 return TRUE;
2083} 2084}
2084 2085
2086BOOL LLScrollListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
2087{
2088 //BOOL handled = FALSE;
2089 BOOL handled = handleClick(x, y, mask);
2090
2091 if (!handled)
2092 {
2093 // Offer the click to the children, even if we aren't enabled
2094 // so the scroll bars will work.
2095 if (NULL == LLView::childrenHandleRightMouseDown(x, y, mask))
2096 {
2097 if( mCanSelect && mOnRightMouseDownCallback )
2098 {
2099 mOnRightMouseDownCallback( x, y, mCallbackUserData );
2100 }
2101 }
2102 }
2103
2104 return TRUE;
2105}
2106
2085BOOL LLScrollListCtrl::handleClick(S32 x, S32 y, MASK mask) 2107BOOL LLScrollListCtrl::handleClick(S32 x, S32 y, MASK mask)
2086{ 2108{
2087 // which row was clicked on? 2109 // which row was clicked on?
@@ -3631,6 +3653,22 @@ BOOL LLColumnHeader::handleDoubleClick(S32 x, S32 y, MASK mask)
3631 return TRUE; 3653 return TRUE;
3632} 3654}
3633 3655
3656BOOL LLColumnHeader::handleRightMouseDown(S32 x, S32 y, MASK mask)
3657{
3658 if (canResize() && mResizeBar->getRect().pointInRect(x, y))
3659 {
3660 // reshape column to max content width
3661 LLRect column_rect = getRect();
3662 column_rect.mRight = column_rect.mLeft + mColumn->mMaxContentWidth;
3663 userSetShape(column_rect);
3664 }
3665 else
3666 {
3667 onClick(this);
3668 }
3669 return TRUE;
3670}
3671
3634void LLColumnHeader::setImage(const std::string &image_name) 3672void LLColumnHeader::setImage(const std::string &image_name)
3635{ 3673{
3636 if (mButton) 3674 if (mButton)
diff --git a/linden/indra/llui/llscrolllistctrl.h b/linden/indra/llui/llscrolllistctrl.h
index e875d7a..4be7ff7 100644
--- a/linden/indra/llui/llscrolllistctrl.h
+++ b/linden/indra/llui/llscrolllistctrl.h
@@ -241,6 +241,7 @@ public:
241 241
242 /*virtual*/ void draw(); 242 /*virtual*/ void draw();
243 /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); 243 /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
244 /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
244 245
245 /*virtual*/ void showList(); 246 /*virtual*/ void showList();
246 /*virtual*/ LLView* findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESnapEdge snap_edge, ESnapType snap_type, S32 threshold, S32 padding); 247 /*virtual*/ LLView* findSnapEdge(S32& new_edge_val, const LLCoordGL& mouse_dir, ESnapEdge snap_edge, ESnapType snap_type, S32 threshold, S32 padding);
@@ -431,6 +432,7 @@ public:
431 432
432 void highlightNthItem( S32 index ); 433 void highlightNthItem( S32 index );
433 void setDoubleClickCallback( void (*cb)(void*) ) { mOnDoubleClickCallback = cb; } 434 void setDoubleClickCallback( void (*cb)(void*) ) { mOnDoubleClickCallback = cb; }
435 void setRightMouseDownCallback( void (*cb)(S32 x, S32 y, void*) ) { mOnRightMouseDownCallback = cb; }
434 void setMaximumSelectCallback( void (*cb)(void*) ) { mOnMaximumSelectCallback = cb; } 436 void setMaximumSelectCallback( void (*cb)(void*) ) { mOnMaximumSelectCallback = cb; }
435 void setSortChangedCallback( void (*cb)(void*) ) { mOnSortChangedCallback = cb; } 437 void setSortChangedCallback( void (*cb)(void*) ) { mOnSortChangedCallback = cb; }
436 438
@@ -517,6 +519,7 @@ public:
517 /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); 519 /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
518 /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); 520 /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
519 /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); 521 /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
522 /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
520 /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); 523 /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
521 /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); 524 /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
522 /*virtual*/ BOOL handleUnicodeCharHere(llwchar uni_char); 525 /*virtual*/ BOOL handleUnicodeCharHere(llwchar uni_char);
@@ -660,6 +663,7 @@ private:
660 663
661 S32 mBorderThickness; 664 S32 mBorderThickness;
662 void (*mOnDoubleClickCallback)(void* userdata); 665 void (*mOnDoubleClickCallback)(void* userdata);
666 void (*mOnRightMouseDownCallback)(S32 x, S32 y, void* userdata);
663 void (*mOnMaximumSelectCallback)(void* userdata ); 667 void (*mOnMaximumSelectCallback)(void* userdata );
664 void (*mOnSortChangedCallback)(void* userdata); 668 void (*mOnSortChangedCallback)(void* userdata);
665 669
diff --git a/linden/indra/llvfs/lldir.cpp b/linden/indra/llvfs/lldir.cpp
index b8a4794..0c93cbb 100644
--- a/linden/indra/llvfs/lldir.cpp
+++ b/linden/indra/llvfs/lldir.cpp
@@ -43,6 +43,7 @@
43#include "lldir.h" 43#include "lldir.h"
44#include "llerror.h" 44#include "llerror.h"
45#include "lluuid.h" 45#include "lluuid.h"
46#include "lltimer.h"
46 47
47#if LL_WINDOWS 48#if LL_WINDOWS
48#include "lldir_win32.h" 49#include "lldir_win32.h"
diff --git a/linden/indra/llvfs/llpidlock.cpp b/linden/indra/llvfs/llpidlock.cpp
index 93ac120..cb64428 100755
--- a/linden/indra/llvfs/llpidlock.cpp
+++ b/linden/indra/llvfs/llpidlock.cpp
@@ -39,6 +39,7 @@
39#include "llsdserialize.h" 39#include "llsdserialize.h"
40#include "llnametable.h" 40#include "llnametable.h"
41#include "llframetimer.h" 41#include "llframetimer.h"
42#include "llapp.h"
42 43
43#if LL_WINDOWS //For windows platform. 44#if LL_WINDOWS //For windows platform.
44bool isProcessAlive(U32 pid) 45bool isProcessAlive(U32 pid)
@@ -60,7 +61,7 @@ class LLPidLockFile
60 public: 61 public:
61 LLPidLockFile( ) : 62 LLPidLockFile( ) :
62 mSaving(FALSE), mWaiting(FALSE), 63 mSaving(FALSE), mWaiting(FALSE),
63 mClean(TRUE), mPID(getpid()) 64 mClean(TRUE), mPID(LLApp::getPid())
64 { 65 {
65 mLockName = gDirUtilp->getTempDir() + "/savelock"; 66 mLockName = gDirUtilp->getTempDir() + "/savelock";
66 } 67 }
diff --git a/linden/indra/llvfs/llpidlock.h b/linden/indra/llvfs/llpidlock.h
index 42aee4d..efcfd91 100755
--- a/linden/indra/llvfs/llpidlock.h
+++ b/linden/indra/llvfs/llpidlock.h
@@ -41,8 +41,6 @@ class LLFrameTimer;
41 41
42#include <windows.h> 42#include <windows.h>
43 43
44#define getpid GetCurrentProcessId
45
46#else //Everyone Else 44#else //Everyone Else
47 45
48#include <signal.h> 46#include <signal.h>
diff --git a/linden/indra/llvfs/llvfile.cpp b/linden/indra/llvfs/llvfile.cpp
index 6b1563b..630975a 100644
--- a/linden/indra/llvfs/llvfile.cpp
+++ b/linden/indra/llvfs/llvfile.cpp
@@ -38,6 +38,7 @@
38#include "llthread.h" 38#include "llthread.h"
39#include "llstat.h" 39#include "llstat.h"
40#include "llvfs.h" 40#include "llvfs.h"
41#include "llfasttimer.h"
41 42
42const S32 LLVFile::READ = 0x00000001; 43const S32 LLVFile::READ = 0x00000001;
43const S32 LLVFile::WRITE = 0x00000002; 44const S32 LLVFile::WRITE = 0x00000002;
diff --git a/linden/indra/llvfs/llvfs.cpp b/linden/indra/llvfs/llvfs.cpp
index 9bf5b59..dea8c9c 100644
--- a/linden/indra/llvfs/llvfs.cpp
+++ b/linden/indra/llvfs/llvfs.cpp
@@ -47,6 +47,7 @@
47 47
48#include "llvfs.h" 48#include "llvfs.h"
49#include "llstl.h" 49#include "llstl.h"
50#include "lltimer.h"
50 51
51const S32 FILE_BLOCK_MASK = 0x000003FF; // 1024-byte blocks 52const S32 FILE_BLOCK_MASK = 0x000003FF; // 1024-byte blocks
52const S32 VFS_CLEANUP_SIZE = 5242880; // how much space we free up in a single stroke 53const S32 VFS_CLEANUP_SIZE = 5242880; // how much space we free up in a single stroke
diff --git a/linden/indra/llwindow/CMakeLists.txt b/linden/indra/llwindow/CMakeLists.txt
index 5224163..98da751 100644
--- a/linden/indra/llwindow/CMakeLists.txt
+++ b/linden/indra/llwindow/CMakeLists.txt
@@ -56,10 +56,18 @@ set(viewer_HEADER_FILES
56 56
57# Libraries on which this library depends, needed for Linux builds 57# Libraries on which this library depends, needed for Linux builds
58# Sort by high-level to low-level 58# Sort by high-level to low-level
59set(llwindow_LINK_LIBRARIES 59if (LINUX)
60 ${UI_LIBRARIES} # for GTK 60 set(llwindow_LINK_LIBRARIES
61 ${SDL_LIBRARY} 61 ${UI_LIBRARIES} # for GTK
62 ) 62 ${SDL_LIBRARY}
63 fontconfig # For FCInit and other FC* functions.
64 )
65else (LINUX)
66 set(llwindow_LINK_LIBRARIES
67 ${UI_LIBRARIES} # for GTK
68 ${SDL_LIBRARY}
69 )
70endif (LINUX)
63 71
64if (DARWIN) 72if (DARWIN)
65 list(APPEND llwindow_SOURCE_FILES 73 list(APPEND llwindow_SOURCE_FILES
diff --git a/linden/indra/llwindow/lldxhardware.cpp b/linden/indra/llwindow/lldxhardware.cpp
index e0cb82d..d8058ba 100644
--- a/linden/indra/llwindow/lldxhardware.cpp
+++ b/linden/indra/llwindow/lldxhardware.cpp
@@ -47,6 +47,7 @@
47 47
48#include "llstring.h" 48#include "llstring.h"
49#include "llstl.h" 49#include "llstl.h"
50#include "lltimer.h"
50 51
51void (*gWriteDebug)(const char* msg) = NULL; 52void (*gWriteDebug)(const char* msg) = NULL;
52LLDXHardware gDXHardware; 53LLDXHardware gDXHardware;
diff --git a/linden/indra/llwindow/llwindowmacosx.h b/linden/indra/llwindow/llwindowmacosx.h
index 92c73e8..d4c1b44 100644
--- a/linden/indra/llwindow/llwindowmacosx.h
+++ b/linden/indra/llwindow/llwindowmacosx.h
@@ -34,6 +34,7 @@
34#define LL_LLWINDOWMACOSX_H 34#define LL_LLWINDOWMACOSX_H
35 35
36#include "llwindow.h" 36#include "llwindow.h"
37#include "lltimer.h"
37 38
38#include <Carbon/Carbon.h> 39#include <Carbon/Carbon.h>
39#include <AGL/agl.h> 40#include <AGL/agl.h>
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp
index 16106af..f7d7587 100644
--- a/linden/indra/llwindow/llwindowsdl.cpp
+++ b/linden/indra/llwindow/llwindowsdl.cpp
@@ -42,6 +42,7 @@
42#include "llstring.h" 42#include "llstring.h"
43#include "lldir.h" 43#include "lldir.h"
44#include "llfindlocale.h" 44#include "llfindlocale.h"
45#include "lltimer.h"
45 46
46#include "indra_constants.h" 47#include "indra_constants.h"
47 48
@@ -1940,11 +1941,6 @@ void LLWindowSDL::setCursor(ECursorType cursor)
1940 } 1941 }
1941} 1942}
1942 1943
1943ECursorType LLWindowSDL::getCursor()
1944{
1945 return mCurrentCursor;
1946}
1947
1948void LLWindowSDL::initCursors() 1944void LLWindowSDL::initCursors()
1949{ 1945{
1950 int i; 1946 int i;
diff --git a/linden/indra/llwindow/llwindowsdl.h b/linden/indra/llwindow/llwindowsdl.h
index 37b0835..e632dfe 100644
--- a/linden/indra/llwindow/llwindowsdl.h
+++ b/linden/indra/llwindow/llwindowsdl.h
@@ -36,6 +36,7 @@
36// Simple Directmedia Layer (http://libsdl.org/) implementation of LLWindow class 36// Simple Directmedia Layer (http://libsdl.org/) implementation of LLWindow class
37 37
38#include "llwindow.h" 38#include "llwindow.h"
39#include "lltimer.h"
39 40
40#include "SDL/SDL.h" 41#include "SDL/SDL.h"
41#include "SDL/SDL_endian.h" 42#include "SDL/SDL_endian.h"
@@ -77,7 +78,6 @@ public:
77 /*virtual*/ void hideCursorUntilMouseMove(); 78 /*virtual*/ void hideCursorUntilMouseMove();
78 /*virtual*/ BOOL isCursorHidden(); 79 /*virtual*/ BOOL isCursorHidden();
79 /*virtual*/ void setCursor(ECursorType cursor); 80 /*virtual*/ void setCursor(ECursorType cursor);
80 /*virtual*/ ECursorType getCursor();
81 /*virtual*/ void captureMouse(); 81 /*virtual*/ void captureMouse();
82 /*virtual*/ void releaseMouse(); 82 /*virtual*/ void releaseMouse();
83 /*virtual*/ void setMouseClipping( BOOL b ); 83 /*virtual*/ void setMouseClipping( BOOL b );
diff --git a/linden/indra/llwindow/llwindowwin32.cpp b/linden/indra/llwindow/llwindowwin32.cpp
index 12a488a..7bc9a3b 100644
--- a/linden/indra/llwindow/llwindowwin32.cpp
+++ b/linden/indra/llwindow/llwindowwin32.cpp
@@ -59,6 +59,8 @@
59 59
60#include "llpreeditor.h" 60#include "llpreeditor.h"
61 61
62#include "llfasttimer.h"
63
62// culled from winuser.h 64// culled from winuser.h
63#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */ 65#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */
64const S32 WM_MOUSEWHEEL = 0x020A; 66const S32 WM_MOUSEWHEEL = 0x020A;
diff --git a/linden/indra/lscript/lscript_execute.h b/linden/indra/lscript/lscript_execute.h
index 9a631c4..e2263fd 100644
--- a/linden/indra/lscript/lscript_execute.h
+++ b/linden/indra/lscript/lscript_execute.h
@@ -36,6 +36,7 @@
36#include "lscript_byteconvert.h" 36#include "lscript_byteconvert.h"
37#include "linked_lists.h" 37#include "linked_lists.h"
38#include "lscript_library.h" 38#include "lscript_library.h"
39#include "lltimer.h"
39 40
40// Return values for run() methods 41// Return values for run() methods
41const U32 NO_DELETE_FLAG = 0x0000; 42const U32 NO_DELETE_FLAG = 0x0000;
diff --git a/linden/indra/lscript/lscript_execute/llscriptresource.cpp b/linden/indra/lscript/lscript_execute/llscriptresource.cpp
index 6c4776c..05ab8eb 100644
--- a/linden/indra/lscript/lscript_execute/llscriptresource.cpp
+++ b/linden/indra/lscript/lscript_execute/llscriptresource.cpp
@@ -30,6 +30,7 @@
30 * $/LicenseInfo$ 30 * $/LicenseInfo$
31 */ 31 */
32 32
33#include "linden_common.h"
33#include "llscriptresource.h" 34#include "llscriptresource.h"
34#include "llerror.h" 35#include "llerror.h"
35 36
diff --git a/linden/indra/media_plugins/base/CMakeLists.txt b/linden/indra/media_plugins/base/CMakeLists.txt
index dd0b0a0..8d62043 100644
--- a/linden/indra/media_plugins/base/CMakeLists.txt
+++ b/linden/indra/media_plugins/base/CMakeLists.txt
@@ -2,10 +2,6 @@
2 2
3project(media_plugin_base) 3project(media_plugin_base)
4 4
5if(HAVE_64_BIT)
6 set(REQUIRE_PIC)
7endif(HAVE_64_BIT)
8
9include(00-Common) 5include(00-Common)
10include(LLCommon) 6include(LLCommon)
11include(LLImage) 7include(LLImage)
diff --git a/linden/indra/media_plugins/example/CMakeLists.txt b/linden/indra/media_plugins/example/CMakeLists.txt
index bac5fa2..7822300 100644
--- a/linden/indra/media_plugins/example/CMakeLists.txt
+++ b/linden/indra/media_plugins/example/CMakeLists.txt
@@ -2,10 +2,6 @@
2 2
3project(media_plugin_example) 3project(media_plugin_example)
4 4
5if(HAVE_64_BIT)
6 set(REQUIRE_PIC)
7endif(HAVE_64_BIT)
8
9include(00-Common) 5include(00-Common)
10include(LLCommon) 6include(LLCommon)
11include(LLImage) 7include(LLImage)
diff --git a/linden/indra/media_plugins/gstreamer010/CMakeLists.txt b/linden/indra/media_plugins/gstreamer010/CMakeLists.txt
index a031157..4401e64 100644
--- a/linden/indra/media_plugins/gstreamer010/CMakeLists.txt
+++ b/linden/indra/media_plugins/gstreamer010/CMakeLists.txt
@@ -2,10 +2,6 @@
2 2
3project(media_plugin_gstreamer010) 3project(media_plugin_gstreamer010)
4 4
5if(HAVE_64_BIT)
6 set(REQUIRE_PIC)
7endif(HAVE_64_BIT)
8
9include(00-Common) 5include(00-Common)
10include(LLCommon) 6include(LLCommon)
11include(LLImage) 7include(LLImage)
@@ -34,14 +30,6 @@ include_directories(
34 30
35### media_plugin_gstreamer010 31### media_plugin_gstreamer010
36 32
37if(NOT CMAKE_SIZEOF_VOID_P MATCHES 4)
38 if(WINDOWS)
39 add_definitions(/FIXED:NO)
40 else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
41 add_definitions(-fPIC)
42 endif(WINDOWS)
43endif (NOT CMAKE_SIZEOF_VOID_P MATCHES 4)
44
45set(media_plugin_gstreamer010_SOURCE_FILES 33set(media_plugin_gstreamer010_SOURCE_FILES
46 media_plugin_gstreamer010.cpp 34 media_plugin_gstreamer010.cpp
47 llmediaimplgstreamervidplug.cpp 35 llmediaimplgstreamervidplug.cpp
diff --git a/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h b/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h
index 0ea096a..bb90aa1 100755
--- a/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h
+++ b/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamertriviallogging.h
@@ -38,31 +38,23 @@
38 38
39#include <cstdio> 39#include <cstdio>
40 40
41extern "C" {
42#include <sys/types.h>
43//#include <unistd.h> //fiuxme
44}
45
46#define MSGMODULEFOO "(media plugin)"
47
48#ifdef LL_LINUX
49///////////////////////////////////////////////////////////////////////// 41/////////////////////////////////////////////////////////////////////////
50// Debug/Info/Warning macros. 42// Debug/Info/Warning macros.
51 43#if LL_WINDOWS
52#define STDERRMSG(...) do{\ 44#include <process.h>
53 fprintf(stderr, " pid:%d: ", (int)getpid());\ 45#define LL_GETPID GetCurrentProcessId
54 fprintf(stderr, MSGMODULEFOO " %s:%d: ", __FUNCTION__, __LINE__);\
55 fprintf(stderr, __VA_ARGS__);\
56 fputc('\n',stderr);\
57 }while(0)
58#else 46#else
47#include <sys/types.h>
48#include <unistd.h>
49#define LL_GETPID getpid
50#endif
51#define MSGMODULEFOO "(media plugin)"
59#define STDERRMSG(...) do{\ 52#define STDERRMSG(...) do{\
53 fprintf(stderr, " pid:%d: ", (int)LL_GETPID());\
60 fprintf(stderr, MSGMODULEFOO " %s:%d: ", __FUNCTION__, __LINE__);\ 54 fprintf(stderr, MSGMODULEFOO " %s:%d: ", __FUNCTION__, __LINE__);\
61 fprintf(stderr, __VA_ARGS__);\ 55 fprintf(stderr, __VA_ARGS__);\
62 fputc('\n',stderr);\ 56 fputc('\n',stderr);\
63 }while(0) 57 }while(0)
64#endif
65
66#define NULLMSG(...) do{}while(0) 58#define NULLMSG(...) do{}while(0)
67 59
68#define DEBUGMSG NULLMSG 60#define DEBUGMSG NULLMSG
diff --git a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
index 44bc32e..78e46ca 100755
--- a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
+++ b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
@@ -175,7 +175,7 @@ MediaPluginGStreamer010::MediaPluginGStreamer010(
175 mCommand ( COMMAND_NONE ) 175 mCommand ( COMMAND_NONE )
176{ 176{
177 std::ostringstream str; 177 std::ostringstream str;
178 INFOMSG("MediaPluginGStreamer010 constructor - my PID=%u", U32(getpid())); 178 INFOMSG("MediaPluginGStreamer010 constructor - my PID=%u", U32(LL_GETPID()));
179} 179}
180 180
181/////////////////////////////////////////////////////////////////////////////// 181///////////////////////////////////////////////////////////////////////////////
diff --git a/linden/indra/media_plugins/webkit/CMakeLists.txt b/linden/indra/media_plugins/webkit/CMakeLists.txt
index 2ab4a95..303a774 100644
--- a/linden/indra/media_plugins/webkit/CMakeLists.txt
+++ b/linden/indra/media_plugins/webkit/CMakeLists.txt
@@ -2,10 +2,6 @@
2 2
3project(media_plugin_webkit) 3project(media_plugin_webkit)
4 4
5if(HAVE_64_BIT)
6 set(REQUIRE_PIC)
7endif(HAVE_64_BIT)
8
9include(00-Common) 5include(00-Common)
10include(LLCommon) 6include(LLCommon)
11include(LLImage) 7include(LLImage)
@@ -34,20 +30,12 @@ include_directories(
34 ${LLQTWEBKIT_INCLUDE_DIR} 30 ${LLQTWEBKIT_INCLUDE_DIR}
35) 31)
36 32
37
38### media_plugin_webkit 33### media_plugin_webkit
39 34
40set(media_plugin_webkit_SOURCE_FILES 35set(media_plugin_webkit_SOURCE_FILES
41 media_plugin_webkit.cpp 36 media_plugin_webkit.cpp
42 ) 37 )
43 38
44if(NOT CMAKE_SIZEOF_VOID_P MATCHES 4)
45 if(WINDOWS)
46 add_definitions(/FIXED:NO)
47 else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
48 add_definitions(-fPIC)
49 endif(WINDOWS)
50endif (NOT CMAKE_SIZEOF_VOID_P MATCHES 4)
51set(media_plugin_webkit_HEADER_FILES 39set(media_plugin_webkit_HEADER_FILES
52 volume_catcher.h 40 volume_catcher.h
53 ) 41 )
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index 77de749..e6c1767 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -1186,6 +1186,7 @@ set(viewer_APPSETTINGS_FILES
1186 app_settings/anim.ini 1186 app_settings/anim.ini
1187 app_settings/ao_template.ini 1187 app_settings/ao_template.ini
1188 app_settings/cmd_line.xml 1188 app_settings/cmd_line.xml
1189 app_settings/default_grids.xml
1189 app_settings/grass.xml 1190 app_settings/grass.xml
1190 app_settings/high_graphics.xml 1191 app_settings/high_graphics.xml
1191 app_settings/keys.ini 1192 app_settings/keys.ini
@@ -1541,11 +1542,23 @@ if (INSTALL)
1541 include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake) 1542 include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake)
1542endif (INSTALL) 1543endif (INSTALL)
1543 1544
1544ADD_VIEWER_BUILD_TEST(llagentaccess viewer) 1545#ADD_VIEWER_BUILD_TEST(llagentaccess viewer)
1545 1546
1546# Don't do these for DARWIN or LINUX here -- they're taken care of by viewer_manifest.py 1547# Don't do these for DARWIN or LINUX here -- they're taken care of by viewer_manifest.py
1547if (WINDOWS) 1548if (WINDOWS)
1548 1549
1550 get_target_property(BUILT_LLCOMMON llcommon LOCATION)
1551 add_custom_command(
1552 TARGET ${VIEWER_BINARY_NAME} POST_BUILD
1553 COMMAND ${CMAKE_COMMAND}
1554 ARGS
1555 -E
1556 copy_if_different
1557 ${BUILT_LLCOMMON}
1558 ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
1559 COMMENT "Copying llcommon.dll to the runtime folder."
1560 )
1561
1549 get_target_property(BUILT_SLPLUGIN SLPlugin LOCATION) 1562 get_target_property(BUILT_SLPLUGIN SLPlugin LOCATION)
1550 add_custom_command( 1563 add_custom_command(
1551 TARGET ${VIEWER_BINARY_NAME} POST_BUILD 1564 TARGET ${VIEWER_BINARY_NAME} POST_BUILD
diff --git a/linden/indra/newview/app_settings/default_grids.xml b/linden/indra/newview/app_settings/default_grids.xml
index 2c52fa1..3f44e4b 100644
--- a/linden/indra/newview/app_settings/default_grids.xml
+++ b/linden/indra/newview/app_settings/default_grids.xml
@@ -50,13 +50,13 @@
50 <key>gridnick</key><string>osgrid</string> 50 <key>gridnick</key><string>osgrid</string>
51 <key>gridname</key><string>OSGrid</string> 51 <key>gridname</key><string>OSGrid</string>
52 <key>platform</key><string>OpenSim</string> 52 <key>platform</key><string>OpenSim</string>
53 <key>loginuri</key><string>http://osgrid.org:8002/</string> 53 <key>loginuri</key><string>http://login.osgrid.org/</string>
54 <key>loginpage</key><string>http://osgrid.org/loginscreen.php</string> 54 <key>loginpage</key><string>http://osgrid.org/splash/</string>
55 <key>helperuri</key><string>http://osgrid.org/</string> 55 <key>helperuri</key><string>http://helper.osgrid.org/</string>
56 <key>website</key><string>http://osgrid.org/</string> 56 <key>website</key><string>http://osgrid.org/</string>
57 <key>support</key><string>http://osgrid.org/</string> 57 <key>support</key><string>http://osgrid.org/</string>
58 <key>register</key><string>http://osgrid.org/elgg/account/register.php</string> 58 <key>register</key><string>http://www.osgrid.org/index.php/auth/register</string>
59 <key>password</key><string>http://osgrid.org/elgg/account/forgotten_password.php</string> 59 <key>password</key><string>http://www.osgrid.org/index.php/auth/forgot_password</string>
60 <key>version</key><string>1</string> 60 <key>version</key><string>1</string>
61 </map> 61 </map>
62 62
@@ -219,7 +219,7 @@
219 219
220 <!-- ScienceSim --> 220 <!-- ScienceSim -->
221 <map> 221 <map>
222 <key>gridname</key> <string>ScienceSim</string> 222 <key>gridname</key> <string>IEEE/ACM ScienceSim Virtual World</string>
223 <key>gridnick</key> <string>sciencesim</string> 223 <key>gridnick</key> <string>sciencesim</string>
224 <key>platform</key> <string>OpenSim</string> 224 <key>platform</key> <string>OpenSim</string>
225 <key>loginuri</key> <string>http://grid.sciencesim.com/</string> 225 <key>loginuri</key> <string>http://grid.sciencesim.com/</string>
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml
index 682bf64..c94fc51 100644
--- a/linden/indra/newview/app_settings/logcontrol.xml
+++ b/linden/indra/newview/app_settings/logcontrol.xml
@@ -66,6 +66,7 @@
66 66
67 <!--<string>Messaging</string>--> 67 <!--<string>Messaging</string>-->
68 <!--<string>Notifications</string>--> 68 <!--<string>Notifications</string>-->
69 <!--<string>Plugin</string>-->
69 <!--<string>Radar</string>--> 70 <!--<string>Radar</string>-->
70 <!--<string>ShaderLoading</string>--> 71 <!--<string>ShaderLoading</string>-->
71 72
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 22e4aa5..c946f40 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -1,9 +1,57 @@
1<?xml version="1.0" ?> 1<?xml version="1.0" ?>
2<llsd> 2<llsd>
3<map> 3<map>
4 4
5<!-- for Aurora Sim -->
6
7 <key>TimeOffset</key>
8 <map>
9 <key>Comment</key>
10 <string>difference in hours to UTC time</string>
11 <key>Persist</key>
12 <integer>0</integer>
13 <key>Type</key>
14 <string>S32</string>
15 <key>Value</key>
16 <integer>0</integer>
17 </map>
18 <key>UseTimeOffset</key>
19 <map>
20 <key>Comment</key>
21 <string>Use debug setting TimeOffset</string>
22 <key>Persist</key>
23 <integer>0</integer>
24 <key>Type</key>
25 <string>Boolean</string>
26 <key>Value</key>
27 <integer>0</integer>
28 </map>
29 <key>TimeOffsetDST</key>
30 <map>
31 <key>Comment</key>
32 <string>TimeOffset has Day Light Savings</string>
33 <key>Persist</key>
34 <integer>0</integer>
35 <key>Type</key>
36 <string>Boolean</string>
37 <key>Value</key>
38 <integer>0</integer>
39 </map>
40
5 <!-- Imprudence-specific settings --> 41 <!-- Imprudence-specific settings -->
6 42
43 <key>AllowEditingOfTrees</key>
44 <map>
45 <key>Comment</key>
46 <string>Allow editing of trees and grass</string>
47 <key>Persist</key>
48 <integer>1</integer>
49 <key>Type</key>
50 <string>Boolean</string>
51 <key>Value</key>
52 <integer>1</integer>
53 </map>
54
7 <!-- begin name highlighting --> 55 <!-- begin name highlighting -->
8 56
9 <key>HighlightNickname01</key> 57 <key>HighlightNickname01</key>
@@ -316,6 +364,17 @@
316 <key>Value</key> 364 <key>Value</key>
317 <integer>3</integer> 365 <integer>3</integer>
318 </map> 366 </map>
367 <key>DisableInternalFlyUpAnimation</key>
368 <map>
369 <key>Comment</key>
370 <string>Disables the internal hover up animation (on your local computer only). Enable if you use an AO and wear hand attachments like rings, prim nails etc. that often loose their correct position while flying.</string>
371 <key>Persist</key>
372 <integer>1</integer>
373 <key>Type</key>
374 <string>Boolean</string>
375 <key>Value</key>
376 <integer>0</integer>
377 </map>
319 <key>DisableLoginLogoutScreens</key> 378 <key>DisableLoginLogoutScreens</key>
320 <map> 379 <map>
321 <key>Comment</key> 380 <key>Comment</key>
diff --git a/linden/indra/newview/app_settings/viewerversion.xml b/linden/indra/newview/app_settings/viewerversion.xml
index ab4b720..f9b0ba2 100644
--- a/linden/indra/newview/app_settings/viewerversion.xml
+++ b/linden/indra/newview/app_settings/viewerversion.xml
@@ -20,6 +20,6 @@ need to be changed manually - MC
20 <viewer version_patch="0" /> 20 <viewer version_patch="0" />
21 21
22 <!--string--> 22 <!--string-->
23 <viewer version_test="Experimental 2010.10.23" /> 23 <viewer version_test="Experimental 2010.11.13" />
24 24
25</viewer_version> 25</viewer_version>
diff --git a/linden/indra/newview/emeraldboobutils.cpp b/linden/indra/newview/emeraldboobutils.cpp
index f68d6a7..f440940 100644
--- a/linden/indra/newview/emeraldboobutils.cpp
+++ b/linden/indra/newview/emeraldboobutils.cpp
@@ -1,3 +1,4 @@
1#include "linden_common.h"
1#include "emeraldboobutils.h" 2#include "emeraldboobutils.h"
2 3
3std::ostream &operator<<(std::ostream &os, const EmeraldGlobalBoobConfig &v) 4std::ostream &operator<<(std::ostream &os, const EmeraldGlobalBoobConfig &v)
diff --git a/linden/indra/newview/jcfloaterareasearch.cpp b/linden/indra/newview/jcfloaterareasearch.cpp
index ed00447..0918431 100644
--- a/linden/indra/newview/jcfloaterareasearch.cpp
+++ b/linden/indra/newview/jcfloaterareasearch.cpp
@@ -38,7 +38,14 @@
38#include "llscrolllistctrl.h" 38#include "llscrolllistctrl.h"
39 39
40#include "llagent.h" 40#include "llagent.h"
41
42#include "llfloatertools.h"
43#include "llmenugl.h"
44#include "llselectmgr.h"
45#include "lltoolcomp.h"
46#include "lltoolmgr.h"
41#include "lltracker.h" 47#include "lltracker.h"
48#include "llviewerjoystick.h"
42#include "llviewerobjectlist.h" 49#include "llviewerobjectlist.h"
43#include "llviewercontrol.h" 50#include "llviewercontrol.h"
44#include "jcfloaterareasearch.h" 51#include "jcfloaterareasearch.h"
@@ -63,6 +70,19 @@ mResultList(0)
63 llassert_always(sInstance == NULL); 70 llassert_always(sInstance == NULL);
64 sInstance = this; 71 sInstance = this;
65 mLastUpdateTimer.reset(); 72 mLastUpdateTimer.reset();
73
74
75 // Register event listeners for popup menu
76 mPopupMenuHandler = new PopupMenuHandler(this);
77 mPopupMenuHandler->registerListener(this, "Popup.HandleMenu");
78
79 LLMenuGL* menu = LLUICtrlFactory::getInstance()->buildMenu("menu_areasearch.xml", this);
80 if (!menu)
81 {
82 menu = new LLMenuGL(LLStringUtil::null);
83 }
84 menu->setVisible(FALSE);
85 mPopupMenuHandle = menu->getHandle();
66} 86}
67 87
68JCFloaterAreaSearch::~JCFloaterAreaSearch() 88JCFloaterAreaSearch::~JCFloaterAreaSearch()
@@ -90,6 +110,7 @@ BOOL JCFloaterAreaSearch::postBuild()
90 mResultList = getChild<LLScrollListCtrl>("result_list"); 110 mResultList = getChild<LLScrollListCtrl>("result_list");
91 mResultList->setCallbackUserData(this); 111 mResultList->setCallbackUserData(this);
92 mResultList->setDoubleClickCallback(onDoubleClick); 112 mResultList->setDoubleClickCallback(onDoubleClick);
113 mResultList->setRightMouseDownCallback(onRightMouseDown);
93 mResultList->sortByColumn("Name", TRUE); 114 mResultList->sortByColumn("Name", TRUE);
94 115
95 mCounterText = getChild<LLTextBox>("counter"); 116 mCounterText = getChild<LLTextBox>("counter");
@@ -159,6 +180,102 @@ void JCFloaterAreaSearch::onDoubleClick(void *userdata)
159 } 180 }
160} 181}
161 182
183//static
184void JCFloaterAreaSearch::onRightMouseDown(S32 x, S32 y, void *userdata)
185{
186 JCFloaterAreaSearch* self = (JCFloaterAreaSearch*)userdata;
187
188 self->setFocus( TRUE );
189 LLMenuGL* menu = (LLMenuGL*)self->mPopupMenuHandle.get();
190 if(menu)
191 {
192 if(menu->getVisible())
193 {
194 menu->setVisible(FALSE);
195 }
196 else
197 {
198 LLScrollListItem *item = self->mResultList->getFirstSelected();
199 if (item)
200 {
201 self->mSelectedItem = item;
202 menu->setVisible(TRUE);
203 menu->setFocus(TRUE);
204 menu->arrange();
205 menu->updateParent(LLMenuGL::sMenuContainer);
206 LLMenuGL::showPopup(self, menu, x, y+50);
207 }
208 else
209 {
210 self->mSelectedItem = NULL;
211 }
212 }
213 }
214
215}
216
217JCFloaterAreaSearch::PopupMenuHandler::PopupMenuHandler(const JCFloaterAreaSearch* instance)
218 : mInstance(instance)
219{
220
221}
222
223// static
224bool JCFloaterAreaSearch::PopupMenuHandler::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
225{
226 std::string command = userdata.asString();
227 JCFloaterAreaSearch* self = (JCFloaterAreaSearch*)mInstance;
228
229 if (self && self->mSelectedItem && !command.empty())
230 {
231 LLUUID object_id = self->mSelectedItem->getUUID();
232 LLViewerObject* object = gObjectList.findObject(object_id);
233
234 if (object && !object->isAvatar())
235 {
236
237
238 if ("teleport" == command)
239 {
240 LLVector3d pos = object->getPositionGlobal();
241 gAgent.teleportViaLocation(pos);
242
243 }
244 else
245 {
246 if ("cam" || "edit" == command)
247 {
248
249 gAgent.setFocusOnAvatar(FALSE, FALSE);
250 gAgent.changeCameraToThirdPerson();
251 gAgent.setFocusGlobal(object->getPositionGlobal(), object_id);
252 gAgent.setCameraPosAndFocusGlobal(object->getPositionGlobal()
253 + LLVector3d(3.5,1.35,0.75) * object->getRotation(),
254 object->getPositionGlobal(),
255 object_id );
256 if ("edit" == command)
257 {
258 if(!object->isSelected())
259 {
260 LLSelectMgr::getInstance()->deselectAll();
261 LLSelectMgr::getInstance()->selectObjectAndFamily(object);
262 }
263
264 gFloaterTools->open();
265 LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);
266 gFloaterTools->setEditTool( LLToolCompTranslate::getInstance() );
267
268 LLViewerJoystick::getInstance()->moveObjects(true);
269 LLViewerJoystick::getInstance()->setNeedsReset(true);
270 }
271 }
272 }
273 }
274 }
275
276 return true;
277}
278
162// static 279// static
163void JCFloaterAreaSearch::cancel(void* data) 280void JCFloaterAreaSearch::cancel(void* data)
164{ 281{
diff --git a/linden/indra/newview/jcfloaterareasearch.h b/linden/indra/newview/jcfloaterareasearch.h
index 1512030..5bceb59 100644
--- a/linden/indra/newview/jcfloaterareasearch.h
+++ b/linden/indra/newview/jcfloaterareasearch.h
@@ -35,9 +35,11 @@
35#include "lluuid.h" 35#include "lluuid.h"
36#include "llstring.h" 36#include "llstring.h"
37#include "llframetimer.h" 37#include "llframetimer.h"
38#include "llmemberlistener.h"
38 39
39class LLTextBox; 40class LLTextBox;
40class LLScrollListCtrl; 41class LLScrollListCtrl;
42class LLScrollListItem;
41class LLViewerRegion; 43class LLViewerRegion;
42 44
43struct AObjectDetails 45struct AObjectDetails
@@ -71,6 +73,7 @@ private:
71 static void onCommitLine(LLLineEditor* line, void* user_data); 73 static void onCommitLine(LLLineEditor* line, void* user_data);
72 static void requestIfNeeded(LLViewerObject *objectp); 74 static void requestIfNeeded(LLViewerObject *objectp);
73 static void onDoubleClick(void *userdata); 75 static void onDoubleClick(void *userdata);
76 static void onRightMouseDown(S32 x, S32 y, void *userdata);
74 77
75 enum OBJECT_COLUMN_ORDER 78 enum OBJECT_COLUMN_ORDER
76 { 79 {
@@ -86,6 +89,7 @@ private:
86 89
87 LLTextBox* mCounterText; 90 LLTextBox* mCounterText;
88 LLScrollListCtrl* mResultList; 91 LLScrollListCtrl* mResultList;
92 LLScrollListItem* mSelectedItem;
89 LLFrameTimer mLastUpdateTimer; 93 LLFrameTimer mLastUpdateTimer;
90 94
91 static std::map<LLUUID, AObjectDetails> sObjectDetails; 95 static std::map<LLUUID, AObjectDetails> sObjectDetails;
@@ -96,4 +100,17 @@ private:
96 static std::string sSearchedGroup; 100 static std::string sSearchedGroup;
97 101
98 static LLViewerRegion* sLastRegion; 102 static LLViewerRegion* sLastRegion;
103
104 LLHandle<LLView> mPopupMenuHandle;
105
106 class PopupMenuHandler : public LLMemberListener<JCFloaterAreaSearch>
107 {
108 public: PopupMenuHandler(const JCFloaterAreaSearch* instance);
109
110 /*virtual*/ bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata);
111
112 const JCFloaterAreaSearch* mInstance;
113 };
114
115 class PopupMenuHandler* mPopupMenuHandler;
99}; 116};
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 8109196..5a1700a 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -5573,7 +5573,7 @@ class LLAgentDropGroupViewerNode : public LLHTTPNode
5573 !input.has("body") ) 5573 !input.has("body") )
5574 { 5574 {
5575 //what to do with badly formed message? 5575 //what to do with badly formed message?
5576 response->status(400); 5576 response->statusUnknownError(400);
5577 response->result(LLSD("Invalid message parameters")); 5577 response->result(LLSD("Invalid message parameters"));
5578 } 5578 }
5579 5579
@@ -5646,7 +5646,7 @@ class LLAgentDropGroupViewerNode : public LLHTTPNode
5646 else 5646 else
5647 { 5647 {
5648 //what to do with badly formed message? 5648 //what to do with badly formed message?
5649 response->status(400); 5649 response->statusUnknownError(400);
5650 response->result(LLSD("Invalid message parameters")); 5650 response->result(LLSD("Invalid message parameters"));
5651 } 5651 }
5652 } 5652 }
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h
index 9d72457..7b3230a 100644
--- a/linden/indra/newview/llappviewer.h
+++ b/linden/indra/newview/llappviewer.h
@@ -33,6 +33,8 @@
33#ifndef LL_LLAPPVIEWER_H 33#ifndef LL_LLAPPVIEWER_H
34#define LL_LLAPPVIEWER_H 34#define LL_LLAPPVIEWER_H
35 35
36#include "llsys.h" // LLOSInfo
37
36class LLTextureCache; 38class LLTextureCache;
37class LLImageDecodeThread; 39class LLImageDecodeThread;
38class LLTextureFetch; 40class LLTextureFetch;
diff --git a/linden/indra/newview/llfeaturemanager.cpp b/linden/indra/newview/llfeaturemanager.cpp
index 54da31b..bf43fcf 100644
--- a/linden/indra/newview/llfeaturemanager.cpp
+++ b/linden/indra/newview/llfeaturemanager.cpp
@@ -62,7 +62,6 @@
62// externs 62// externs
63// 63//
64extern LLMemoryInfo gSysMemory; 64extern LLMemoryInfo gSysMemory;
65extern LLCPUInfo gSysCPU;
66 65
67#if LL_DARWIN 66#if LL_DARWIN
68const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt"; 67const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt";
diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp
index 5c037d6..f7163ee 100644
--- a/linden/indra/newview/llfloaterabout.cpp
+++ b/linden/indra/newview/llfloaterabout.cpp
@@ -68,7 +68,6 @@
68#include "lldxhardware.h" 68#include "lldxhardware.h"
69#endif 69#endif
70 70
71extern LLCPUInfo gSysCPU;
72extern LLMemoryInfo gSysMemory; 71extern LLMemoryInfo gSysMemory;
73extern U32 gPacketsIn; 72extern U32 gPacketsIn;
74 73
diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp
index 8ae3fa2..d4ffe22 100644
--- a/linden/indra/newview/llfloaterregioninfo.cpp
+++ b/linden/indra/newview/llfloaterregioninfo.cpp
@@ -908,7 +908,7 @@ BOOL LLPanelRegionOpenSettingsInfo::postBuild()
908 initHelpBtn("show_tags_help", "HelpShowTags"); 908 initHelpBtn("show_tags_help", "HelpShowTags");
909 initHelpBtn("allow_parcel_windlight_help", "HelpAllowParcelWindLight"); 909 initHelpBtn("allow_parcel_windlight_help", "HelpAllowParcelWindLight");
910 910
911 childSetAction("apply_ors_btn", sendUpdate, this); 911 childSetAction("apply_ors_btn", onClickOrs, this);
912 912
913 refreshFromRegion(gAgent.getRegion()); 913 refreshFromRegion(gAgent.getRegion());
914 914
@@ -926,12 +926,12 @@ BOOL LLPanelRegionOpenSettingsInfo::postBuild()
926// strings[7] = restrict pushobject 926// strings[7] = restrict pushobject
927// strings[8] = 'Y' - allow parcel subdivide, 'N' - not 927// strings[8] = 'Y' - allow parcel subdivide, 'N' - not
928// strings[9] = 'Y' - block parcel search, 'N' - allow 928// strings[9] = 'Y' - block parcel search, 'N' - allow
929void LLPanelRegionOpenSettingsInfo::sendUpdate(void* userdata) 929void LLPanelRegionOpenSettingsInfo::onClickOrs(void* userdata)
930{ 930{
931 LLPanelRegionOpenSettingsInfo* self; 931 LLPanelRegionOpenSettingsInfo* self;
932 self = (LLPanelRegionOpenSettingsInfo*)userdata; 932 self = (LLPanelRegionOpenSettingsInfo*)userdata;
933 933
934 llinfos << "LLPanelRegionOpenSettingsInfo::sendUpdate()" << llendl; 934 llinfos << "LLPanelRegionOpenSettingsInfo::onClickOrs()" << llendl;
935 935
936 LLSD body; 936 LLSD body;
937 std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings"); 937 std::string url = gAgent.getRegion()->getCapability("DispatchOpenRegionSettings");
diff --git a/linden/indra/newview/llfloaterregioninfo.h b/linden/indra/newview/llfloaterregioninfo.h
index ee01c7c..ae0c993 100644
--- a/linden/indra/newview/llfloaterregioninfo.h
+++ b/linden/indra/newview/llfloaterregioninfo.h
@@ -188,7 +188,7 @@ public:
188 virtual BOOL postBuild(); 188 virtual BOOL postBuild();
189 189
190protected: 190protected:
191 static void sendUpdate(void* userdata); 191 static void onClickOrs(void* userdata);
192}; 192};
193 193
194///////////////////////////////////////////////////////////////////////////// 194/////////////////////////////////////////////////////////////////////////////
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp
index cc205ee..e22de66 100644
--- a/linden/indra/newview/llfloatertools.cpp
+++ b/linden/indra/newview/llfloatertools.cpp
@@ -393,6 +393,7 @@ BOOL LLFloaterTools::postBuild()
393 mStatusText["rotate"] = getString("status_rotate"); 393 mStatusText["rotate"] = getString("status_rotate");
394 mStatusText["scale"] = getString("status_scale"); 394 mStatusText["scale"] = getString("status_scale");
395 mStatusText["move"] = getString("status_move"); 395 mStatusText["move"] = getString("status_move");
396 mStatusText["align"] = getString("status_align");
396 mStatusText["modifyland"] = getString("status_modifyland"); 397 mStatusText["modifyland"] = getString("status_modifyland");
397 mStatusText["camera"] = getString("status_camera"); 398 mStatusText["camera"] = getString("status_camera");
398 mStatusText["grab"] = getString("status_grab"); 399 mStatusText["grab"] = getString("status_grab");
@@ -425,6 +426,7 @@ LLFloaterTools::LLFloaterTools()
425 mRadioRotate(NULL), 426 mRadioRotate(NULL),
426 mRadioStretch(NULL), 427 mRadioStretch(NULL),
427 mRadioSelectFace(NULL), 428 mRadioSelectFace(NULL),
429 mRadioAlign(NULL),
428 mCheckSelectIndividual(NULL), 430 mCheckSelectIndividual(NULL),
429 431
430 mCheckSnapToGrid(NULL), 432 mCheckSnapToGrid(NULL),
@@ -705,6 +707,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
705 mRadioPosition ->setVisible( edit_visible ); 707 mRadioPosition ->setVisible( edit_visible );
706 mRadioRotate ->setVisible( edit_visible ); 708 mRadioRotate ->setVisible( edit_visible );
707 mRadioStretch ->setVisible( edit_visible ); 709 mRadioStretch ->setVisible( edit_visible );
710 mRadioAlign ->setVisible( edit_visible );
708 if (mRadioSelectFace) 711 if (mRadioSelectFace)
709 { 712 {
710 mRadioSelectFace->setVisible( edit_visible ); 713 mRadioSelectFace->setVisible( edit_visible );
diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h
index 9fad72e..40da669 100644
--- a/linden/indra/newview/llfolderview.h
+++ b/linden/indra/newview/llfolderview.h
@@ -97,7 +97,7 @@ public:
97 virtual void move( LLFolderViewEventListener* parent_listener ) = 0; 97 virtual void move( LLFolderViewEventListener* parent_listener ) = 0;
98 virtual BOOL isItemCopyable() const = 0; 98 virtual BOOL isItemCopyable() const = 0;
99 virtual BOOL copyToClipboard() const = 0; 99 virtual BOOL copyToClipboard() const = 0;
100 virtual void cutToClipboard() = 0; 100 virtual BOOL cutToClipboard() const = 0;
101 virtual BOOL isClipboardPasteable() const = 0; 101 virtual BOOL isClipboardPasteable() const = 0;
102 virtual void pasteFromClipboard() = 0; 102 virtual void pasteFromClipboard() = 0;
103 virtual void buildContextMenu(LLMenuGL& menu, U32 flags) = 0; 103 virtual void buildContextMenu(LLMenuGL& menu, U32 flags) = 0;
diff --git a/linden/indra/newview/llhomelocationresponder.cpp b/linden/indra/newview/llhomelocationresponder.cpp
index e609237..c00d8e7 100644
--- a/linden/indra/newview/llhomelocationresponder.cpp
+++ b/linden/indra/newview/llhomelocationresponder.cpp
@@ -105,7 +105,8 @@ void LLHomeLocationResponder::result( const LLSD& content )
105 } 105 }
106} 106}
107 107
108void LLHomeLocationResponder::error( const LLSD& content ) 108void LLHomeLocationResponder::error( U32 status, const std::string& reason )
109{ 109{
110 llinfos << "received error(" << ll_pretty_print_sd( content ) << ")" << llendl; 110 llinfos << "received error(" << reason << ")" << llendl;
111} 111}
112
diff --git a/linden/indra/newview/llhomelocationresponder.h b/linden/indra/newview/llhomelocationresponder.h
index 1e222cd..3a1d8eb 100644
--- a/linden/indra/newview/llhomelocationresponder.h
+++ b/linden/indra/newview/llhomelocationresponder.h
@@ -42,7 +42,7 @@
42class LLHomeLocationResponder : public LLHTTPClient::Responder 42class LLHomeLocationResponder : public LLHTTPClient::Responder
43{ 43{
44 virtual void result( const LLSD& content ); 44 virtual void result( const LLSD& content );
45 virtual void error( const LLSD& content ); 45 virtual void error( U32 status, const std::string& reason );
46}; 46};
47 47
48#endif 48#endif
diff --git a/linden/indra/newview/llinventorybridge.h b/linden/indra/newview/llinventorybridge.h
index 2004678..5a53aa5 100644
--- a/linden/indra/newview/llinventorybridge.h
+++ b/linden/indra/newview/llinventorybridge.h
@@ -221,7 +221,7 @@ public:
221 virtual void move(LLFolderViewEventListener* new_parent_bridge) {} 221 virtual void move(LLFolderViewEventListener* new_parent_bridge) {}
222 virtual BOOL isItemCopyable() const { return FALSE; } 222 virtual BOOL isItemCopyable() const { return FALSE; }
223 virtual BOOL copyToClipboard() const { return FALSE; } 223 virtual BOOL copyToClipboard() const { return FALSE; }
224 virtual void cutToClipboard() {} 224 virtual BOOL cutToClipboard() const { return FALSE; }
225 virtual BOOL isClipboardPasteable() const; 225 virtual BOOL isClipboardPasteable() const;
226 virtual void pasteFromClipboard() {} 226 virtual void pasteFromClipboard() {}
227 void getClipboardEntries(bool show_asset_id, std::vector<std::string> &items, 227 void getClipboardEntries(bool show_asset_id, std::vector<std::string> &items,
diff --git a/linden/indra/newview/llpanelinventory.cpp b/linden/indra/newview/llpanelinventory.cpp
index 9cd2759..277ab15 100644
--- a/linden/indra/newview/llpanelinventory.cpp
+++ b/linden/indra/newview/llpanelinventory.cpp
@@ -145,7 +145,7 @@ public:
145 virtual void move(LLFolderViewEventListener* parent_listener); 145 virtual void move(LLFolderViewEventListener* parent_listener);
146 virtual BOOL isItemCopyable() const; 146 virtual BOOL isItemCopyable() const;
147 virtual BOOL copyToClipboard() const; 147 virtual BOOL copyToClipboard() const;
148 virtual void cutToClipboard(); 148 virtual BOOL cutToClipboard() const;
149 virtual BOOL isClipboardPasteable() const; 149 virtual BOOL isClipboardPasteable() const;
150 virtual void pasteFromClipboard(); 150 virtual void pasteFromClipboard();
151 virtual void buildContextMenu(LLMenuGL& menu, U32 flags); 151 virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
@@ -594,8 +594,9 @@ BOOL LLTaskInvFVBridge::copyToClipboard() const
594 return FALSE; 594 return FALSE;
595} 595}
596 596
597void LLTaskInvFVBridge::cutToClipboard() 597BOOL LLTaskInvFVBridge::cutToClipboard() const
598{ 598{
599 return FALSE;
599} 600}
600 601
601BOOL LLTaskInvFVBridge::isClipboardPasteable() const 602BOOL LLTaskInvFVBridge::isClipboardPasteable() const
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp
index c1d5ff3..d9fa5b5 100644
--- a/linden/indra/newview/llspatialpartition.cpp
+++ b/linden/indra/newview/llspatialpartition.cpp
@@ -826,7 +826,7 @@ class LLSpatialSetStateDiff : public LLSpatialSetState
826public: 826public:
827 LLSpatialSetStateDiff(U32 state) : LLSpatialSetState(state) { } 827 LLSpatialSetStateDiff(U32 state) : LLSpatialSetState(state) { }
828 828
829 virtual void traverse(const LLSpatialGroup::TreeNode* n) 829 virtual void traverse(const LLSpatialGroup::OctreeNode* n)
830 { 830 {
831 LLSpatialGroup* group = (LLSpatialGroup*) n->getListener(0); 831 LLSpatialGroup* group = (LLSpatialGroup*) n->getListener(0);
832 832
@@ -885,7 +885,7 @@ class LLSpatialClearStateDiff : public LLSpatialClearState
885public: 885public:
886 LLSpatialClearStateDiff(U32 state) : LLSpatialClearState(state) { } 886 LLSpatialClearStateDiff(U32 state) : LLSpatialClearState(state) { }
887 887
888 virtual void traverse(const LLSpatialGroup::TreeNode* n) 888 virtual void traverse(const LLSpatialGroup::OctreeNode* n)
889 { 889 {
890 LLSpatialGroup* group = (LLSpatialGroup*) n->getListener(0); 890 LLSpatialGroup* group = (LLSpatialGroup*) n->getListener(0);
891 891
@@ -1519,7 +1519,7 @@ public:
1519 return false; 1519 return false;
1520 } 1520 }
1521 1521
1522 virtual void traverse(const LLSpatialGroup::TreeNode* n) 1522 virtual void traverse(const LLSpatialGroup::OctreeNode* n)
1523 { 1523 {
1524 LLSpatialGroup* group = (LLSpatialGroup*) n->getListener(0); 1524 LLSpatialGroup* group = (LLSpatialGroup*) n->getListener(0);
1525 1525
diff --git a/linden/indra/newview/lltoolcomp.cpp b/linden/indra/newview/lltoolcomp.cpp
index 16e0136..7bf99f0 100644
--- a/linden/indra/newview/lltoolcomp.cpp
+++ b/linden/indra/newview/lltoolcomp.cpp
@@ -55,6 +55,7 @@
55#include "llagent.h" 55#include "llagent.h"
56#include "llfloatertools.h" 56#include "llfloatertools.h"
57#include "llviewercontrol.h" 57#include "llviewercontrol.h"
58#include "qtoolalign.h"
58 59
59const S32 BUTTON_HEIGHT = 16; 60const S32 BUTTON_HEIGHT = 16;
60const S32 BUTTON_WIDTH_SMALL = 32; 61const S32 BUTTON_WIDTH_SMALL = 32;
@@ -278,7 +279,12 @@ BOOL LLToolCompTranslate::handleMouseUp(S32 x, S32 y, MASK mask)
278 279
279LLTool* LLToolCompTranslate::getOverrideTool(MASK mask) 280LLTool* LLToolCompTranslate::getOverrideTool(MASK mask)
280{ 281{
281 if (mask == MASK_CONTROL) 282 if (gKeyboard->getKeyDown('A') &&
283 ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT))))
284 {
285 return QToolAlign::getInstance();
286 }
287 else if (mask == MASK_CONTROL)
282 { 288 {
283 return LLToolCompRotate::getInstance(); 289 return LLToolCompRotate::getInstance();
284 } 290 }
@@ -397,7 +403,12 @@ BOOL LLToolCompScale::handleMouseUp(S32 x, S32 y, MASK mask)
397 403
398LLTool* LLToolCompScale::getOverrideTool(MASK mask) 404LLTool* LLToolCompScale::getOverrideTool(MASK mask)
399{ 405{
400 if (mask == MASK_CONTROL) 406 if (gKeyboard->getKeyDown('A') &&
407 ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT))))
408 {
409 return QToolAlign::getInstance();
410 }
411 else if (mask == MASK_CONTROL)
401 { 412 {
402 return LLToolCompRotate::getInstance(); 413 return LLToolCompRotate::getInstance();
403 } 414 }
@@ -597,7 +608,12 @@ BOOL LLToolCompRotate::handleMouseUp(S32 x, S32 y, MASK mask)
597 608
598LLTool* LLToolCompRotate::getOverrideTool(MASK mask) 609LLTool* LLToolCompRotate::getOverrideTool(MASK mask)
599{ 610{
600 if (mask == (MASK_CONTROL | MASK_SHIFT)) 611 if (gKeyboard->getKeyDown('A') &&
612 ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT))))
613 {
614 return QToolAlign::getInstance();
615 }
616 else if (mask == (MASK_CONTROL | MASK_SHIFT))
601 { 617 {
602 return LLToolCompScale::getInstance(); 618 return LLToolCompScale::getInstance();
603 } 619 }
diff --git a/linden/indra/newview/llviewerassetstorage.h b/linden/indra/newview/llviewerassetstorage.h
index 15c11c7..512b590 100644
--- a/linden/indra/newview/llviewerassetstorage.h
+++ b/linden/indra/newview/llviewerassetstorage.h
@@ -47,6 +47,7 @@ public:
47 LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, 47 LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
48 LLVFS *vfs); 48 LLVFS *vfs);
49 49
50 using LLAssetStorage::storeAssetData;
50 virtual void storeAssetData( 51 virtual void storeAssetData(
51 const LLTransactionID& tid, 52 const LLTransactionID& tid,
52 LLAssetType::EType atype, 53 LLAssetType::EType atype,
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 95e686d..c540533 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -6093,7 +6093,14 @@ class LLShowFloater : public view_listener_t
6093 } 6093 }
6094 else if (floater_name == "inworld browser") 6094 else if (floater_name == "inworld browser")
6095 { 6095 {
6096 LLWeb::loadURL(gSavedSettings.getString("BrowserHome")); 6096 if (LLFloaterMediaBrowser::instanceVisible())
6097 {
6098 LLFloaterMediaBrowser::getInstance()->close();
6099 }
6100 else
6101 {
6102 LLWeb::loadURLInternal(gSavedSettings.getString("BrowserHome"));
6103 }
6097 } 6104 }
6098 else if (floater_name == "beacons") 6105 else if (floater_name == "beacons")
6099 { 6106 {
@@ -6163,6 +6170,10 @@ class LLFloaterVisible : public view_listener_t
6163 LLInventoryView* iv = LLInventoryView::getActiveInventory(); 6170 LLInventoryView* iv = LLInventoryView::getActiveInventory();
6164 new_value = (NULL != iv && TRUE == iv->getVisible()); 6171 new_value = (NULL != iv && TRUE == iv->getVisible());
6165 } 6172 }
6173 else if (floater_name == "inworld browser")
6174 {
6175 new_value = LLFloaterMediaBrowser::instanceVisible();
6176 }
6166 else if (floater_name == "areasearch") 6177 else if (floater_name == "areasearch")
6167 { 6178 {
6168 JCFloaterAreaSearch* instn = JCFloaterAreaSearch::getInstance(); 6179 JCFloaterAreaSearch* instn = JCFloaterAreaSearch::getInstance();
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 54aed54..6904bb2 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -5490,6 +5490,15 @@ void LLVOAvatar::resetAnimations()
5490//----------------------------------------------------------------------------- 5490//-----------------------------------------------------------------------------
5491BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset) 5491BOOL LLVOAvatar::startMotion(const LLUUID& id, F32 time_offset)
5492{ 5492{
5493 // [Ansariel Hiller]: Disable pesky hover up animation that changes
5494 // hand and finger position and often breaks correct
5495 // fit of prim nails, rings etc. when flying and
5496 // using an AO.
5497 if ("62c5de58-cb33-5743-3d07-9e4cd4352864" == id.getString() && gSavedSettings.getBOOL("DisableInternalFlyUpAnimation"))
5498 {
5499 return TRUE;
5500 }
5501
5493 LLMemType mt(LLMemType::MTYPE_AVATAR); 5502 LLMemType mt(LLMemType::MTYPE_AVATAR);
5494 5503
5495 // start special case female walk for female avatars 5504 // start special case female walk for female avatars
diff --git a/linden/indra/newview/llwatchdog.h b/linden/indra/newview/llwatchdog.h
index ed7d5bd..1a10e33 100644
--- a/linden/indra/newview/llwatchdog.h
+++ b/linden/indra/newview/llwatchdog.h
@@ -64,9 +64,10 @@ public:
64 64
65 /* virtual */ bool isAlive() const; 65 /* virtual */ bool isAlive() const;
66 /* virtual */ void reset(); 66 /* virtual */ void reset();
67 /* virtual */ void start(const std::string& state); 67 /* virtual */ void start() { start(""); };
68 /* virtual */ void stop(); 68 /* virtual */ void stop();
69 69
70 void start(const std::string& state);
70 void setTimeout(F32 d); 71 void setTimeout(F32 d);
71 void ping(const std::string& state); 72 void ping(const std::string& state);
72 const std::string& getState() {return mPingState; } 73 const std::string& getState() {return mPingState; }
diff --git a/linden/indra/newview/qtoolalign.cpp b/linden/indra/newview/qtoolalign.cpp
index d7f7ad0..3fe31f7 100644
--- a/linden/indra/newview/qtoolalign.cpp
+++ b/linden/indra/newview/qtoolalign.cpp
@@ -110,8 +110,9 @@ void QToolAlign::handleSelect()
110{ 110{
111 // no parts, please 111 // no parts, please
112 112
113 llwarns << "in select" << llendl; 113 //llwarns << "in select" << llendl;
114 LLSelectMgr::getInstance()->promoteSelectionToRoot(); 114 LLSelectMgr::getInstance()->promoteSelectionToRoot();
115 gFloaterTools->setStatusText("align");
115} 116}
116 117
117 118
@@ -386,8 +387,24 @@ void QToolAlign::render()
386 LLColor4 default_normal_color( 0.7f, 0.7f, 0.7f, 0.1f ); 387 LLColor4 default_normal_color( 0.7f, 0.7f, 0.7f, 0.1f );
387 gGL.color4fv( default_normal_color.mV ); 388 gGL.color4fv( default_normal_color.mV );
388 389
389 render_bbox(mBBox); 390 LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getEditSelection();
390 renderManipulators(); 391 BOOL can_move = selection->getObjectCount() != 0;
392 if (can_move)
393 {
394 struct f : public LLSelectedObjectFunctor
395 {
396 virtual bool apply(LLViewerObject* objectp)
397 {
398 return objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
399 }
400 } func;
401 can_move = selection->applyToObjects(&func);
402 }
403 if (can_move)
404 {
405 render_bbox(mBBox);
406 renderManipulators();
407 }
391} 408}
392 409
393// only works for our specialized (AABB, position centered) bboxes 410// only works for our specialized (AABB, position centered) bboxes
diff --git a/linden/indra/newview/skins/default/xui/de/floater_command_line.xml b/linden/indra/newview/skins/default/xui/de/floater_command_line.xml
new file mode 100644
index 0000000..e3b2ec3
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/de/floater_command_line.xml
@@ -0,0 +1,42 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="busy" title="Chatleisten-Befehle">
3 <text name="loltxt2"> Innerhalb des Sims teleportieren (Nutzung: cmd x y z)</text>
4 <line_editor tool_tip="" name="CmdLineChatbarPos"/>
5 <text name="loltxt3"> Zum Boden teleportieren (Nutzung: cmd)</text>
6 <line_editor tool_tip="" name="CmdLineChatbarGround"/>
7 <text name="loltxt4"> In Höhe teleportieren (Nutzung: cmd z)</text>
8 <line_editor tool_tip="" name="CmdLineChatbarHeight"/>
9 <text name="loltxt5"> Nach Hause teleportieren (Nutzung: cmd)</text>
10 <line_editor tool_tip="" name="CmdLineChatbarTeleportHome"/>
11 <text name="loltxt6"> Eine Plattform schaffen (Nutzung: cmd 0 - 30)</text>
12 <line_editor tool_tip="" name="CmdLineChatbarRezPlatform"/>
13 <slider name="CmdLineChatbarPlatformSize" label="Breite" tool_tip="Wie groß soll die Plattform sein?"/>
14 <text name="loltxt7"> Zu Sim x teleportieren (Nutzung: cmd simname)</text>
15 <line_editor tool_tip="" name="CmdLineChatbarMapTo"/>
16 <check_box label="Gleiche Position nutzen" name="toggle"/>
17 <text name="loltxt8"> math. Ausdruck rechnen (Nutzung: cmd SIN(2+2))</text>
18 <line_editor tool_tip="" name="CmdLineChatbarCalc"/>
19 <text name="add_autokorrect">Wort zu Autokorrekt zufügen(Nutzung: cmd list|bad|good)</text>
20 <line_editor tool_tip="" name="CmdLineChatbarAutocorrect"/>
21 <text name="loltxt9"> Sichtweite ändern (Nutzung: cmd meters)</text>
22 <line_editor tool_tip="" name="CmdLineChatbarDrawDistance"/>
23 <text name="loltxt10"> Zur Kameraposition teleportieren (Nutzung: cmd)</text>
24 <line_editor tool_tip="" name="CmdLineChatbarTeleportToCam"/>
25 <text name="loltxt11"> Avatarname von Schlüssel beziehen (Nutzung: cmd key)</text>
26 <line_editor tool_tip="" name="CmdLineChatbarKeyToName"/>
27 <text name="loltxt12"> Avatar Teleport anbieten (Nutzung: cmd key)</text>
28 <line_editor tool_tip="" name="CmdLineChatbarOfferTp"/>
29 <text name="loltxt13"> Zu Avatar teleportieren (Nutzung: cmd name)</text>
30 <line_editor tool_tip="Die syntax dieses Befehls erlaubt partielle Namen (ohne Groß-/Kleinschreibung). Bessere Resultate bei Nutzung mit offenem Radar."
31 name="CmdLineChatbarTP2"/>
32 <text name="loltxt14"> AO an/aus (Nutzung: cmd on/off)</text>
33 <line_editor tool_tip="" name="CmdLineChatbarAO"/>
34 <text name="loltxt15"> Chat-Historie löschen (Nutzung: cmd)</text>
35 <line_editor tool_tip="Löscht die Chat-Historie, um Lag-Effekte von Chat-Spammern zu verhindern." name="CmdLineChatbarClearChat"/>
36 <text name="loltxt15"> Medien-URL bestimmen (Nutzung: cmd url type)</text>
37 <line_editor tool_tip="Bestimmt und spielt Ihren Medienstrom auf die eingegebene URL" name="CmdLineChatbarMedia"/>
38 <text name="loltxt15"> Musik-URL bestimmen (Nutzung: cmd url)</text>
39 <line_editor tool_tip="Bestimmt und spielt Ihren Musikstrom auf die eingegebene URL" name="CmdLineChatbarMusic"/>
40 <button label="?" name="Help_CmdLine"
41tool_tip="Hier für Hilfe betreffend der Einstellungen dieser Seite klicken."/>
42</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/de/floater_telehub.xml b/linden/indra/newview/skins/default/xui/de/floater_telehub.xml
index 264411c..fef4fcd 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_telehub.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_telehub.xml
@@ -23,10 +23,10 @@
23 <text name="spawn_point_help"> 23 <text name="spawn_point_help">
24 Wählen Sie ein Objekt und klicken zur 24 Wählen Sie ein Objekt und klicken zur
25Positionsangabe auf „Hinzufügen“. Anschließend 25Positionsangabe auf „Hinzufügen“. Anschließend
26können sie das Objekt verschieben oder löschen. 26können Sie das Objekt verschieben oder löschen.
27Positionsangaben sind relativ zum 27Positionsangaben sind relativ zum
28Telehub-Mittelpunkt. 28Telehub-Mittelpunkt.
29Wählen Sie ein Objekt aus, um seine Position in 29Wählen Sie ein Objekt der Liste aus, um seine
30der Welt anzuzeigen. 30Position in der Welt anzuzeigen.
31 </text> 31 </text>
32</floater> 32</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_teleport_history.xml b/linden/indra/newview/skins/default/xui/de/floater_teleport_history.xml
new file mode 100644
index 0000000..7980f1e
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/de/floater_teleport_history.xml
@@ -0,0 +1,35 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="teleporthistory" title="Teleportier-Historie">
3 <tab_container label="TP-Listenregister" name="tplisttabs">
4 <panel label="Teleportiert nach" name="TP-in">
5 <scroll_list name="places_list_in">
6 <column label="Region" name="region" />
7 <column label="Position" name="position" />
8 <column label="Besucht" name="visited" />
9 <!--Hidden fields, used as storage for prebuilt strings, please keep at width 0-->
10 <column label="SLURL" name="slurl" />
11 <column label="Sim String" name="simstring" />
12 </scroll_list>
13 </panel>
14 <panel label="Teleportiert von" name="TP-out">
15 <scroll_list name="places_list_out">
16 <column label="Region" name="region" />
17 <column label="Position" name="position" />
18 <column label="Besucht" name="visited" />
19 <!--Hidden fields, used as storage for prebuilt strings, please keep at width 0-->
20 <column label="SLURL" name="slurl" />
21 <column label="Sim String" name="simstring" />
22 </scroll_list>
23 </panel>
24 </tab_container>
25 <button label="Teleportieren" label_selected="Teleportieren"
26 name="teleport" tool_tip="Teleportiert zum ausgewählten Ort" />
27 <button label="Auf Karte zeigen" label_selected="Auf Karte zeigen"
28 name="show_on_map"
29 tool_tip="Zentriert die Karte auf diesen Ort" />
30 <button label="Historie löschen"
31 name="clear_history"
32 tool_tip="Gesicherte Teleportier-Historie löschen" />
33 <button label="SLURL auf Zwischenablage kopieren" name="copy_slurl"
34 tool_tip="Kopiert den aktuellen Ort als SLURL, um ihn im Internet zu nutzen." />
35</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/linden/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
index 4aa7db4..efa21fd 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
@@ -9,16 +9,38 @@
9 <text type="string" length="1" name="unknown"> 9 <text type="string" length="1" name="unknown">
10 Maße: [DIMENSIONS] 10 Maße: [DIMENSIONS]
11 </text> 11 </text>
12
12 <button label="Standard" label_selected="Standard" name="Default" /> 13 <button label="Standard" label_selected="Standard" name="Default" />
13 <button label="Keine" label_selected="Keine" name="None" /> 14 <button label="Keine" label_selected="Keine" name="None" />
14 <button label="Leer" label_selected="Leer" name="Blank" /> 15 <button label="Leer" label_selected="Leer" name="Blank" />
16 <button label="Unsichtbar" label_selected="Unsichtbar" name="Invisible" />
15 <check_box label="Ordner anzeigen" name="show_folders_check" /> 17 <check_box label="Ordner anzeigen" name="show_folders_check" />
16 <search_editor label="Suchanfrage hier eintippen" name="inventory search editor" />
17 <check_box label="Sofort übernehmen" name="apply_immediate_check" /> 18 <check_box label="Sofort übernehmen" name="apply_immediate_check" />
18 <button label="" label_selected="" name="Pipette" /> 19 <button label="" label_selected="" name="Pipette" />
19 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> 20 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" />
20 <button label="Auswählen" label_selected="Auswählen" name="Select" /> 21 <button label="Auswählen" label_selected="Auswählen" name="Select" />
21 <text name="pick title"> 22 <string name="pick title">
22 Auswählen: 23 Auswählen:
23 </text> 24 </string>
25
26 <tab_container name="actions_tab_container">
27 <panel label="Inventar" name="server_tab">
28 <search_editor label="Suchanfrage hier eintippen" name="inventory search editor" />
29 <inventory_panel name="inventory panel" />
30 </panel>
31 <panel label="Computer" name="local_tab">
32 <!-- tag: vaa emerald local_asset_browser [begin] -->
33 <text name="select_local">
34 Textur auf Ihrem Computer für Vorschau in-welt auswählen
35 </text>
36 <button label="Hinzufügen" name="Add" width="70" />
37 <button label="Entfernen" name="Remove" />
38 <button label="Eigenschaften..." name="Browser" />
39 <scroll_list name="local_name_list" >
40 <column name="unit_name" label="Name" />
41 <column name="unit_id_HIDDEN" label="ID" />
42 </scroll_list>
43 <!-- tag: vaa emerald local_asset_browser [end] -->
44 </panel>
45 </tab_container>
24</floater> 46</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_tools.xml b/linden/indra/newview/skins/default/xui/de/floater_tools.xml
index 165d0a7..aa8170b 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -1,21 +1,38 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater name="toolbox floater" title="" short_title="Bauen"> 2<floater name="toolbox floater" title="" short_title="Bauen" width="282">
3
4<!-- Main floater tabs -->
5
3 <button label="" label_selected="" name="button focus" tool_tip="Fokus"/> 6 <button label="" label_selected="" name="button focus" tool_tip="Fokus"/>
4 <button label="" label_selected="" name="button move" tool_tip="Verschieben"/> 7 <button label="" label_selected="" name="button move" tool_tip="Verschieben"/>
5 <button label="" label_selected="" name="button edit" tool_tip="Bearbeiten"/> 8 <button label="" label_selected="" name="button edit" tool_tip="Bearbeiten"/>
6 <button label="" label_selected="" name="button create" tool_tip="Erstellen"/> 9 <button label="" label_selected="" name="button create" tool_tip="Erstellen"/>
7 <button label="" label_selected="" name="button land" tool_tip="Land"/> 10 <button label="" label_selected="" name="button land" tool_tip="Land"/>
8 <check_box label="Zoom" name="radio zoom"/> 11
12<!-- Focus panel -->
13
14 <check_box label="Zoom:" name="radio zoom"/>
9 <check_box label="Orbit (Strg)" name="radio orbit"/> 15 <check_box label="Orbit (Strg)" name="radio orbit"/>
10 <check_box label="Schwenken (Strg-Umschalt)" name="radio pan"/> 16 <check_box label="Schwenken (Strg-Umschalt)" name="radio pan"/>
17
18<!-- Move panel -->
19
11 <check_box label="Verschieben" name="radio move"/> 20 <check_box label="Verschieben" name="radio move"/>
12 <check_box label="Heben (Strg)" name="radio lift"/> 21 <check_box label="Heben (Strg)" name="radio lift"/>
13 <check_box label="Rotieren (Strg-Umschalt)" name="radio spin"/> 22 <check_box label="Rotieren (Strg-Umschalt)" name="radio spin"/>
23
24<!-- Edit panel -->
25
14 <check_box label="Position" name="radio position"/> 26 <check_box label="Position" name="radio position"/>
15 <check_box label="Drehen (Strg)" name="radio rotate"/> 27 <check_box label="Drehen (Strg)" name="radio rotate"/>
16 <check_box label="Dehnen (Strg-Umschalt)" name="radio stretch"/> 28 <check_box label="Dehnen (Strg-Umschalt)" name="radio stretch"/>
17 <check_box label="Textur auswählen" name="radio select face"/> 29 <check_box label="Textur auswählen" name="radio select face"/>
18 <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/> 30 <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/>
31 <button label="Verknüpfen" label_selected="Verknüpfen"
32 left="10" name="link_btn" width="68" />
33 <button label="Trennen" label_selected="Trennen"
34 name="unlink_btn" width="68" />
35
19 <text name="text ruler mode"> 36 <text name="text ruler mode">
20 Lineal: 37 Lineal:
21 </text> 38 </text>
@@ -33,10 +50,16 @@
33 <check_box label="Beide Seiten dehnen" name="checkbox uniform"/> 50 <check_box label="Beide Seiten dehnen" name="checkbox uniform"/>
34 <check_box label="Texturen dehnen" name="checkbox stretch textures"/> 51 <check_box label="Texturen dehnen" name="checkbox stretch textures"/>
35 <check_box label="Raster verwenden" name="checkbox snap to grid"/> 52 <check_box label="Raster verwenden" name="checkbox snap to grid"/>
36 <button label="Optionen..." label_selected="Optionen..." name="Options..."/> 53 <button label="Bauoptionen..." label_selected="Bauoptionen..." name="Options..."/>
54
55<!-- Help text -->
56
37 <text name="text status"> 57 <text name="text status">
38 Zum Verschieben ziehen, zum Kopieren Umschalttaste-Ziehen 58 Zum Verschieben ziehen, zum Kopieren Umschalttaste-Ziehen
39 </text> 59 </text>
60
61<!-- Create panel -->
62
40 <button label="" label_selected="" name="ToolCube" tool_tip="Würfel"/> 63 <button label="" label_selected="" name="ToolCube" tool_tip="Würfel"/>
41 <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> 64 <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
42 <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> 65 <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/>
@@ -52,10 +75,15 @@
52 <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/> 75 <button label="" label_selected="" name="ToolRing" tool_tip="Ring"/>
53 <button label="" label_selected="" name="ToolTree" tool_tip="Baum"/> 76 <button label="" label_selected="" name="ToolTree" tool_tip="Baum"/>
54 <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/> 77 <button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/>
78 <text name="tree_grass_label" />
79 <combo_box name="trees_grass" />
55 <check_box label="Auswahl behalten" name="checkbox sticky"/> 80 <check_box label="Auswahl behalten" name="checkbox sticky"/>
56 <check_box label="Auswahl kopieren" name="checkbox copy selection"/> 81 <check_box label="Auswahl kopieren" name="checkbox copy selection"/>
57 <check_box label="Zentrieren" name="checkbox copy centers"/> 82 <check_box label="Zentrieren" name="checkbox copy centers"/>
58 <check_box label="Drehen" name="checkbox copy rotates"/> 83 <check_box label="Drehen" name="checkbox copy rotates"/>
84
85<!-- Land panel -->
86
59 <check_box label="Land auswählen" name="radio select land"/> 87 <check_box label="Land auswählen" name="radio select land"/>
60 <check_box label="Einebnen" name="radio flatten"/> 88 <check_box label="Einebnen" name="radio flatten"/>
61 <check_box label="Anheben" name="radio raise"/> 89 <check_box label="Anheben" name="radio raise"/>
@@ -68,10 +96,10 @@
68 Planierraupe: 96 Planierraupe:
69 </text> 97 </text>
70 <text name="Dozer Size:"> 98 <text name="Dozer Size:">
71 Größe 99 Größe:
72 </text> 100 </text>
73 <text name="Strength:"> 101 <text name="Strength:">
74 Stärke 102 Stärke:
75 </text> 103 </text>
76 <text name="obj_count"> 104 <text name="obj_count">
77 Ausgewählte Objekte: [COUNT] 105 Ausgewählte Objekte: [COUNT]
@@ -79,7 +107,13 @@
79 <text name="prim_count"> 107 <text name="prim_count">
80 Primitive: [COUNT] 108 Primitive: [COUNT]
81 </text> 109 </text>
82 <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30"> 110 <text name="link_num">
111 Linknummer: [NUMBER]
112 </text>
113
114<!-- Sub-tabs -->
115
116 <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30" width="280">
83 <panel label="Allgemein" name="General"> 117 <panel label="Allgemein" name="General">
84 <text name="Name:"> 118 <text name="Name:">
85 Name: 119 Name:
@@ -91,16 +125,20 @@
91 Ersteller: 125 Ersteller:
92 </text> 126 </text>
93 <text name="Creator Name"> 127 <text name="Creator Name">
94 Thrax Linden 128 Imprudent Linden
95 </text> 129 </text>
96 <button label="Profil..." label_selected="Profil..." name="button creator profile"/>
97 <text name="Owner:"> 130 <text name="Owner:">
98 Eigentümer: 131 Eigentümer:
99 </text> 132 </text>
100 <text name="Owner Name"> 133 <text name="Owner Name">
101 Thrax Linden 134 Imprudent Linden
102 </text> 135 </text>
103 <button label="Profil..." label_selected="Profil..." name="button owner profile"/> 136 <text name="Last Owner:">
137 Last Owner:
138 </text>
139 <text name="Last Owner Name">
140 Imprudent Linden
141 </text>
104 <text name="Group:"> 142 <text name="Group:">
105 Gruppe: 143 Gruppe:
106 </text> 144 </text>
@@ -116,33 +154,35 @@
116 </text> 154 </text>
117 <check_box label="Mit Gruppe teilen" left="6" name="checkbox share with group" tool_tip="Allen Mitgliedern der zugeordneten Gruppe die Erlaubnis erteilen, Ihre Berechtigungen für dieses Objekt zu teilen und zu verwenden. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> 155 <check_box label="Mit Gruppe teilen" left="6" name="checkbox share with group" tool_tip="Allen Mitgliedern der zugeordneten Gruppe die Erlaubnis erteilen, Ihre Berechtigungen für dieses Objekt zu teilen und zu verwenden. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/>
118 <string name="text deed continued"> 156 <string name="text deed continued">
119 Ãœbertragung... 157 Ãœbereignung...
120 </string> 158 </string>
121 <string name="text deed"> 159 <string name="text deed">
122 Ãœbertragung 160 Ãœbereignung
123 </string> 161 </string>
124 <button label="Übertragung..." label_selected="Übertragung..." name="button deed" tool_tip="In der Gruppe gemeinsam verwendete Objekte können von einem Gruppenfunktionär übertragen werden."/> 162 <button label="Übereignung..." label_selected="Übereignung..." name="button deed" tool_tip="In der Gruppe gemeinsam verwendete Objekte können von einem Gruppenoffizier übereignet werden."/>
125 <text name="Anyone can:">
126 Jeder:
127 </text>
128 <check_box label="Bewegen" name="checkbox allow everyone move"/>
129 <check_box label="Kopieren" name="checkbox allow everyone copy"/>
130 <check_box label="In Suche anzeigen" left="6" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> 163 <check_box label="In Suche anzeigen" left="6" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/>
131 <check_box label="Zu verkaufen" left="6" name="checkbox for sale"/> 164 <check_box label="Zu verkaufen:" left="6" name="checkbox for sale"/>
132 <text name="Cost"> 165 <text name="Cost">
133 Preis:L$ 166 Preis: [CURRENCY]
134 </text> 167 </text>
135 <radio_group name="sale type"> 168 <radio_group name="sale type">
136 <radio_item name="Original"> 169 <radio_item name="Original">
137 Original 170 Original
138 </radio_item> 171 </radio_item>
139 <radio_item name="Copy"> 172 <radio_item name="Copy">
140 Kopieren 173 Kopie
141 </radio_item> 174 </radio_item>
142 <radio_item name="Contents"> 175 <radio_item name="Contents">
143 Inhalt 176 Inhalt
144 </radio_item> 177 </radio_item>
145 </radio_group> 178 </radio_group>
179 <button label="Schlüssel kopieren" label_selected="Schlüsselkopie" name="button copy key" width="78"
180 tool_tip="Den/die Schlüssel eines Objekts in die Zwischenablage kopieren" />
181 <text name="Anyone can:">
182 Jeder:
183 </text>
184 <check_box label="Bewegen" name="checkbox allow everyone move"/>
185 <check_box label="Kopieren" name="checkbox allow everyone copy"/>
146 <text name="Next owner can:"> 186 <text name="Next owner can:">
147 Nächster Eigentümer kann: 187 Nächster Eigentümer kann:
148 </text> 188 </text>
@@ -152,6 +192,8 @@
152 <text name="label click action"> 192 <text name="label click action">
153 Bei Linksklicken: 193 Bei Linksklicken:
154 </text> 194 </text>
195 <!-- Do not reorder these items, the index numbers are
196 used internally. JC -->
155 <combo_box name="clickaction" width="178"> 197 <combo_box name="clickaction" width="178">
156 <combo_item name="Touch/grab(default)"> 198 <combo_item name="Touch/grab(default)">
157 Berühren/Greifen (Standard) 199 Berühren/Greifen (Standard)
@@ -209,13 +251,13 @@
209 Gesamtes Objekt muss gewählt werden, um Berechtigungen festzulegen. 251 Gesamtes Objekt muss gewählt werden, um Berechtigungen festzulegen.
210 </string> 252 </string>
211 <string name="Cost Default"> 253 <string name="Cost Default">
212 Preis:L$ 254 Preis: [CURRENCY]
213 </string> 255 </string>
214 <string name="Cost Total"> 256 <string name="Cost Total">
215 Summe:L$ 257 Summe: [CURRENCY]
216 </string> 258 </string>
217 <string name="Cost Per Unit"> 259 <string name="Cost Per Unit">
218 Stückpreis:L$ 260 Stückpreis: [CURRENCY]
219 </string> 261 </string>
220 <string name="Cost Mixed"> 262 <string name="Cost Mixed">
221 Mischpreis 263 Mischpreis
@@ -224,31 +266,43 @@
224 Mischverkauf 266 Mischverkauf
225 </string> 267 </string>
226 </panel> 268 </panel>
227 <panel label="Objekt" name="Object"> 269
270<!-- Object sub-tab -->
271
272 <panel label="Objekt" name="Object" width="272">
228 <text name="select_single"> 273 <text name="select_single">
229 Wählen Sie nur ein Primitivum aus, um Parameter zu bearbeiten. 274 Nur einzelne Primitiva bearbeiten.
230 </text> 275 </text>
231 <text name="edit_object"> 276 <text name="edit_object">
232 Objektparameter bearbeiten: 277 Objektparameter bearbeiten:
233 </text> 278 </text>
234 <check_box label="Gesperrt" name="checkbox locked" tool_tip="Verhindert, dass Objekt verschoben oder gelöscht wird. Oft beim Bauen nützlich, um unbeabsichtigte Bearbeitungen zu vermeiden."/> 279 <check_box label="Gesperrt" name="checkbox locked" tool_tip="Verhindert, dass das Objekt verschoben oder gelöscht wird. Oft beim Bauen nützlich, um unbeabsichtigte Bearbeitungen zu vermeiden."/>
235 <check_box label="Physisch" name="Physical Checkbox Ctrl" tool_tip="Gestattet, das Objekt geschoben und von Schwerkraft beeinflusst wird"/> 280 <check_box label="Physisch" name="Physical Checkbox Ctrl" tool_tip="Gestattet, dass das Objekt geschoben und von Schwerkraft beeinflusst wird"/>
236 <check_box label="Temporär" name="Temporary Checkbox Ctrl" tool_tip="Verursacht, dass Objekt 1 Minute nach Erstellung gelöscht wird."/> 281 <check_box label="Temporär" name="Temporary Checkbox Ctrl" tool_tip="Verursacht, dass das Objekt 1 Minute nach Erstellung gelöscht wird."/>
237 <check_box label="Phantom" name="Phantom Checkbox Ctrl" tool_tip="Verursacht, dass Objekt nicht mit anderen Objekten oder Avataren kollidiert"/> 282 <check_box label="Phantom" name="Phantom Checkbox Ctrl" tool_tip="Verursacht, dass Objekt nicht mit anderen Objekten oder Avataren kollidiert"/>
283
238 <text name="label position"> 284 <text name="label position">
239 Position (Meter) 285 Position (Meter):
240 </text> 286 </text>
241 <spinner label="X" name="Pos X"/> 287 <spinner label="X" name="Pos X"/>
242 <spinner label="Y" name="Pos Y"/> 288 <spinner label="Y" name="Pos Y"/>
243 <spinner label="Z" name="Pos Z"/> 289 <spinner label="Z" name="Pos Z"/>
290 <button label="C" name="copypos" tool_tip="Position kopieren" />
291 <button label="P" name="pastepos" tool_tip="Position einfügen" />
292 <button label="p" name="pasteposclip" tool_tip="Position von Zwischenablage einfügen" />
293
244 <text name="label size"> 294 <text name="label size">
245 Größe (Meter) 295 Größe (Meter):
246 </text> 296 </text>
247 <spinner label="X" name="Scale X"/> 297 <spinner label="X" name="Scale X"/>
248 <spinner label="Y" name="Scale Y"/> 298 <spinner label="Y" name="Scale Y"/>
249 <spinner label="Z" name="Scale Z"/> 299 <spinner label="Z" name="Scale Z"/>
300 <button label="C" name="copysize" tool_tip="Größe kopieren" />
301 <button label="P" name="pastesize" tool_tip="Größe einfügen" />
302 <button label="p" name="pastesizeclip" tool_tip="Größe von Zwischenablage einfügen" />
303
250 <text name="label rotation"> 304 <text name="label rotation">
251 Rotation (Grad) 305 Rotation (Grad):
252 </text> 306 </text>
253 <spinner label="X" name="Rot X"/> 307 <spinner label="X" name="Rot X"/>
254 <spinner label="Y" name="Rot Y"/> 308 <spinner label="Y" name="Rot Y"/>
@@ -256,6 +310,14 @@
256 <text name="label material"> 310 <text name="label material">
257 Material 311 Material
258 </text> 312 </text>
313 <button label="C" name="copyrot"
314tool_tip="Rotation kopieren" />
315 <button label="P" name="pasterot" tool_tip="Rotation einfügen" />
316 <button label="p" name="pasterotclip" tool_tip="Rotation von Zwischenablage einfügen" />
317
318 <text name="label material">
319 Material:
320 </text>
259 <combo_box name="material"> 321 <combo_box name="material">
260 <combo_item name="Stone"> 322 <combo_item name="Stone">
261 Stein 323 Stein
@@ -279,10 +341,11 @@
279 Gummi 341 Gummi
280 </combo_item> 342 </combo_item>
281 </combo_box> 343 </combo_box>
282 <text left="115" name="label basetype"> 344 <button label="Bau-Mathe" label_selected="Bau-Mathe" tool_tip="mathem. Konstanten des Objekts" name="build_math_constants" />
345 <text left="130" name="label basetype">
283 Bausteintyp 346 Bausteintyp
284 </text> 347 </text>
285 <combo_box left="115" name="comboBaseType"> 348 <combo_box left="130" name="comboBaseType">
286 <combo_item name="Box"> 349 <combo_item name="Box">
287 Quader 350 Quader
288 </combo_item> 351 </combo_item>
@@ -308,23 +371,23 @@
308 Geformt 371 Geformt
309 </combo_item> 372 </combo_item>
310 </combo_box> 373 </combo_box>
311 <text left="115" name="text cut" width="146"> 374 <text left="130" name="text cut" width="146">
312 Pfadschnitt Beginn und Ende 375 Pfadschnitt Beginn und Ende:
313 </text> 376 </text>
314 <spinner label="B" left="115" name="cut begin"/> 377 <spinner label="B" left="130" name="cut begin"/>
315 <spinner label="E" left="115" name="cut end"/> 378 <spinner label="E" left="130" name="cut end"/>
316 <text left="115" name="text hollow"> 379 <text left="130" name="text hollow">
317 Hohl 380 Hohl:
318 </text> 381 </text>
319 <text left="115" name="text skew"> 382 <text left="130" name="text skew">
320 Versatz 383 Versatz:
321 </text> 384 </text>
322 <spinner left="115" name="Scale 1"/> 385 <spinner left="130" name="Scale 1"/>
323 <spinner left="115" name="Skew"/> 386 <spinner left="130" name="Skew"/>
324 <text left="115" name="Hollow Shape"> 387 <text left="130" name="Hollow Shape">
325 Hohlform 388 Hohlform:
326 </text> 389 </text>
327 <combo_box left="115" name="hole"> 390 <combo_box left="130" name="hole">
328 <combo_item name="Default"> 391 <combo_item name="Default">
329 Standard 392 Standard
330 </combo_item> 393 </combo_item>
@@ -338,57 +401,59 @@
338 Dreieck 401 Dreieck
339 </combo_item> 402 </combo_item>
340 </combo_box> 403 </combo_box>
341 <text left="115" name="text twist"> 404 <text left="130" name="text twist">
342 Torsion 405 Torsion Beginn und Ende:
343 </text> 406 </text>
344 <spinner label="B" left="115" name="Twist Begin"/> 407 <spinner label="B" left="130" name="Twist Begin"/>
345 <spinner label="E" left="115" name="Twist End"/> 408 <spinner label="E" left="130" name="Twist End"/>
346 <text left="115" name="scale_taper"> 409 <text left="130" name="scale_taper">
347 Verjüngung 410 Verjüngung:
348 </text> 411 </text>
349 <text left="115" name="scale_hole"> 412 <text left="130" name="scale_hole">
350 Lochgröße 413 Lochgröße:
351 </text> 414 </text>
352 <spinner label="X" left="115" name="Taper Scale X"/> 415 <spinner label="X" left="130" name="Taper Scale X"/>
353 <spinner label="Y" left="115" name="Taper Scale Y"/> 416 <spinner label="Y" left="130" name="Taper Scale Y"/>
354 <text left="115" name="text topshear"> 417 <text left="130" name="text topshear">
355 Verscherung 418 Verscherung:
356 </text> 419 </text>
357 <spinner label="X" left="115" name="Shear X"/> 420 <spinner label="X" left="130" name="Shear X"/>
358 <spinner label="Y" left="115" name="Shear Y"/> 421 <spinner label="Y" left="130" name="Shear Y"/>
359 <text left="115" name="advanced_cut" width="153"> 422 <text left="130" name="advanced_cut" width="153">
360 Profilschnitt-Beginn und Ende 423 Profilschnitt-Beginn und Ende:
361 </text> 424 </text>
362 <text left="115" name="advanced_dimple"> 425 <text left="130" name="advanced_dimple">
363 Vertiefung-Beginn und Ende 426 Vertiefung-Beginn und Ende:
364 </text> 427 </text>
365 <text name="advanced_slice"> 428 <text left="130" name="advanced_slice">
366 Anfang/Ende abschneiden 429 Anfang/Ende abschneiden:
367 </text> 430 </text>
368 <spinner label="B" left="115" name="Path Limit Begin"/> 431 <spinner label="B" left="130" name="Path Limit Begin"/>
369 <spinner label="E" name="Path Limit End"/> 432 <spinner label="E" name="Path Limit End"/>
370 <text left="115" name="text taper2"> 433 <text left="130" name="text taper2">
371 Verjüngung 434 Verjüngung:
372 </text> 435 </text>
373 <spinner label="X" left="115" name="Taper X"/> 436 <spinner label="X" left="130" name="Taper X"/>
374 <spinner label="Y" name="Taper Y"/> 437 <spinner label="Y" name="Taper Y"/>
375 <text left="115" name="text radius delta"> 438 <text left="130" name="text radius delta">
376 Radius 439 Radius:
377 </text> 440 </text>
378 <text name="text revolutions" width="74"> 441 <text name="text revolutions" width="74">
379 Umdrehungen 442 Umdrehungen:
380 </text> 443 </text>
381 <spinner left="115" name="Radius Offset"/> 444 <spinner left="130" name="Radius Offset"/>
445 <spinner name="Revolutions" />
446
382 <texture_picker label="Textur für gestaltetes 447 <texture_picker label="Textur für gestaltetes
383Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> 448Primitiv:" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
384 <check_box bottom_delta="-34" label="Spiegeln" name="sculpt mirror control" tool_tip="Geformtes Primitiv entlang der X-Achse spiegeln."/> 449 <check_box bottom_delta="-34" label="Spiegeln" name="sculpt mirror control" tool_tip="Geformtes Primitiv entlang der X-Achse spiegeln."/>
385 <check_box label="Wenden" name="sculpt invert control" tool_tip="Dreht die Normalen des geformten Primitivs von innen nach außen."/> 450 <check_box label="Wenden" name="sculpt invert control" tool_tip="Dreht die Normalen des geformten Primitivs von innen nach außen."/>
386 <text name="label sculpt type"> 451 <text name="label sculpt type">
387 Naht 452 Naht:
388 </text> 453 </text>
389 <combo_box name="sculpt type control"> 454 <combo_box name="sculpt type control">
390 <combo_item name="None"> 455 <combo_item name="None">
391 (keiner) 456 (keine)
392 </combo_item> 457 </combo_item>
393 <combo_item name="Sphere"> 458 <combo_item name="Sphere">
394 Kugel 459 Kugel
@@ -404,31 +469,38 @@ Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild
404 </combo_item> 469 </combo_item>
405 </combo_box> 470 </combo_box>
406 </panel> 471 </panel>
407 <panel label="Eigenschaften" name="Features"> 472
473<!-- Features sub-tab -->
474
475 <panel label="Eigenschaften" name="Features" height="25" >
408 <text name="select_single"> 476 <text name="select_single">
409 Wählen Sie nur einen einzelnen Baustein aus, um Eigenschaften zu bearbeiten. 477 Wählen Sie nur einen einzelnen Baustein aus,
478um Eigenschaften zu bearbeiten.
410 </text> 479 </text>
411 <text name="edit_object"> 480 <text name="edit_object" bottom_delta="-10" >
412 Objekteigenschaften bearbeiten: 481 Objekteigenschaften bearbeiten:
413 </text> 482 </text>
414 <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Gestattet, dass Objekt um die Z-Achse gebogen wird. (nur Client-Seite)"/> 483 <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Gestattet, dass Objekt um die Z-Achse gebogen wird. (nur Client-Seite)"/>
415 <spinner label="Weichheit" name="FlexNumSections"/> 484 <spinner label="Weichheit:" name="FlexNumSections"/>
416 <spinner label="Schwerkraft" name="FlexGravity"/> 485 <spinner label="Schwerkraft:" name="FlexGravity"/>
417 <spinner label="Ziehen" name="FlexFriction"/> 486 <spinner label="Ziehen:" name="FlexFriction"/>
418 <spinner label="Wind" name="FlexWind"/> 487 <spinner label="Wind:" name="FlexWind"/>
419 <spinner label="Spannung" name="FlexTension"/> 488 <spinner label="Spannung:" name="FlexTension"/>
420 <spinner label="Erzwingen X" name="FlexForceX"/> 489 <spinner label="Erzwingen X:" name="FlexForceX"/>
421 <spinner label="Erzwingen Y" name="FlexForceY"/> 490 <spinner label="Erzwingen Y:" name="FlexForceY"/>
422 <spinner label="Erzwingen Z" name="FlexForceZ"/> 491 <spinner label="Erzwingen Z:" name="FlexForceZ"/>
423 <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass Objekt Licht emittiert"/> 492 <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass das Objekt Licht ausstrahlt"/>
424 <text name="label color"> 493 <text name="label color">
425 Farbe 494 Farbe:
426 </text> 495 </text>
427 <color_swatch label="" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/> 496 <color_swatch label="" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/>
428 <spinner label="Intensität" name="Light Intensity"/> 497 <spinner label="Intensität:" name="Light Intensity"/>
429 <spinner label="Radius" name="Light Radius"/> 498 <spinner label="Radius:" name="Light Radius"/>
430 <spinner label="Abnehmend" name="Light Falloff"/> 499 <spinner label="Abnehmend:" name="Light Falloff"/>
431 </panel> 500 </panel>
501
502<!-- Texture sub-tab -->
503
432 <panel label="Textur" name="Texture"> 504 <panel label="Textur" name="Texture">
433 <texture_picker label="Textur" name="texture control" tool_tip="Klicken, um ein Bild zu wählen"/> 505 <texture_picker label="Textur" name="texture control" tool_tip="Klicken, um ein Bild zu wählen"/>
434 <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/> 506 <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/>
@@ -520,12 +592,14 @@ Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild
520 Stuck 592 Stuck
521 </combo_item> 593 </combo_item>
522 <combo_item name="suction"> 594 <combo_item name="suction">
523 Saugen 595 Sog
524 </combo_item> 596 </combo_item>
525 <combo_item name="weave"> 597 <combo_item name="weave">
526 gewoben 598 Gewebe
527 </combo_item> 599 </combo_item>
528 </combo_box> 600 </combo_box>
601 <check_box label="Ebene Texturen ausrichten"
602 name="checkbox planar align" tool_tip="Richtet Texturen auf allen ausgewählten Flächen nach der letzten Fläche aus. Benötigt ebene Texturzuordnung." />
529 <text name="tex scale"> 603 <text name="tex scale">
530 Wiederholungen 604 Wiederholungen
531 </text> 605 </text>
@@ -556,32 +630,40 @@ Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild
556(zuerst laden) 630(zuerst laden)
557 </text> 631 </text>
558 <button label="Ausrichten" label_selected="Ausrichten" name="button align"/> 632 <button label="Ausrichten" label_selected="Ausrichten" name="button align"/>
633 <button label="Textur Mathe" label_selected="Textur Mathe" tool_tip="Texture math constants" name="texture_math_constants" />
559 </panel> 634 </panel>
560 <panel label="Inhalt" name="Contents"> 635 <panel label="Inhalt" name="Contents">
561 <button label="Neues Skript" label_selected="Neues Skript..." name="button new script"/> 636 <button label="Neues Skript" label_selected="Neues Skript..." name="button new script"/>
562 <button label="Berechtigungen..." name="button permissions" width="118"/> 637 <button label="Berechtigungen..." name="button permissions" width="118"/>
638 <panel name="ContentsInventory" />
563 </panel> 639 </panel>
564 </tab_container> 640 </tab_container>
641
642<!-- Land Info sub-tab -->
643
565 <panel name="land info panel"> 644 <panel name="land info panel">
645 <!-- Parcel Information -->
566 <text name="label_parcel_info"> 646 <text name="label_parcel_info">
567 Parzelleninformation 647 Parzelleninformation:
568 </text> 648 </text>
569 <text name="label_area_price"> 649 <text name="label_area_price">
570 Preis: L$ [PRICE] für [AREA] m2. 650 Preis: [CURRENCY][PRICE] für [AREA] m2.
571 </text> 651 </text>
572 <text name="label_area"> 652 <text name="label_area">
573 Fläche: [AREA] m2 653 Fläche: [AREA] m2
574 </text> 654 </text>
575 <button label="Info zu Land..." label_selected="Info zu Land..." name="button about land" width="110"/> 655 <button label="Landinfo..." label_selected="Landinfo..." name="button about land" width="110" />
576 <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Parzellen nach Eigentümer farbig kennzeichnen"/> 656 <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Parzellen nach Eigentümer farbig kennzeichnen"/>
577 <button label="?" label_selected="?" name="button show owners help" left_delta="130"/> 657 <button label="?" label_selected="?" name="button show owners help" left_delta="130"/>
658 <!-- Modify Parcel -->
578 <text name="label_parcel_modify"> 659 <text name="label_parcel_modify">
579 Parzelle ändern 660 Parzelle ändern:
580 </text> 661 </text>
581 <button label="Unterteilen..." label_selected="Unterteilen..." name="button subdivide land" width="110"/> 662 <button label="Unterteilen..." label_selected="Unterteilen..." name="button subdivide land" width="110"/>
582 <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land" width="110"/> 663 <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land" width="110"/>
664 <!-- Land Transactions -->
583 <text name="label_parcel_trans"> 665 <text name="label_parcel_trans">
584 Land-Transaktionen 666 Land-Transaktionen:
585 </text> 667 </text>
586 <button label="Land kaufen..." label_selected="Land kaufen..." name="button buy land" width="110"/> 668 <button label="Land kaufen..." label_selected="Land kaufen..." name="button buy land" width="110"/>
587 <button label="Land aufgeben..." label_selected="Land aufgeben..." name="button abandon land" width="110"/> 669 <button label="Land aufgeben..." label_selected="Land aufgeben..." name="button abandon land" width="110"/>
@@ -605,7 +687,7 @@ Primitiv" name="sculpt texture control" tool_tip="Klicken Sie hier, um ein Bild
605 Ziehen, um Objekte zu verschieben, Strg zum Heben, Strg-Umschalt zum Drehen 687 Ziehen, um Objekte zu verschieben, Strg zum Heben, Strg-Umschalt zum Drehen
606 </string> 688 </string>
607 <string name="status_place"> 689 <string name="status_place">
608 Inworld klicken, um zu bauen. 690 In-Welt klicken, um zu bauen
609 </string> 691 </string>
610 <string name="status_selectland"> 692 <string name="status_selectland">
611 Klicken und ziehen, um Land auszuwählen 693 Klicken und ziehen, um Land auszuwählen
diff --git a/linden/indra/newview/skins/default/xui/de/floater_top_objects.xml b/linden/indra/newview/skins/default/xui/de/floater_top_objects.xml
index f9e7bec..8a196b1 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_top_objects.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_top_objects.xml
@@ -41,7 +41,7 @@
41 Zeit 41 Zeit
42 </string> 42 </string>
43 <string name="scripts_mono_time_label"> 43 <string name="scripts_mono_time_label">
44 Mono-Uhrzeit: 44 Mono-Uhrzeit
45 </string> 45 </string>
46 <string name="top_colliders_title"> 46 <string name="top_colliders_title">
47 Top-Kollisionsobjekte 47 Top-Kollisionsobjekte
diff --git a/linden/indra/newview/skins/default/xui/de/floater_tos.xml b/linden/indra/newview/skins/default/xui/de/floater_tos.xml
index 42f48fa..b3fa2a4 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_tos.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_tos.xml
@@ -2,18 +2,8 @@
2<floater name="modal container" title=" "> 2<floater name="modal container" title=" ">
3 <button label="Weiter" label_selected="Weiter" name="Continue" /> 3 <button label="Weiter" label_selected="Weiter" name="Continue" />
4 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> 4 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" />
5 <radio_group name="tos_agreement"> 5 <check_box label="Ich stimme den Nutzungsbedingungen zu"
6 <radio_item name="radio_disagree"> 6 name="agree_chk" />
7 Ich stimme den Nutzungsbedingungen nicht zu
8 </radio_item>
9 <radio_item name="radio_agree">
10 Ich stimme den Nutzungsbedingungen zu
11 </radio_item>
12 </radio_group>
13 <text name="tos_title">
14 Nutzungsvereinbarung
15 </text>
16 <check_box label="Ich stimme den Nutzungsbedingungen zu" name="agree_chk" />
17 <text name="tos_heading"> 7 <text name="tos_heading">
18 Lesen Sie die folgenden Nutzungsbedingungen sorgfältig durch. Sie müssen dieser Vereinbarung 8 Lesen Sie die folgenden Nutzungsbedingungen sorgfältig durch. Sie müssen dieser Vereinbarung
19zustimmen, um Second Life benutzen zu können. 9zustimmen, um Second Life benutzen zu können.
@@ -21,7 +11,8 @@ zustimmen, um Second Life benutzen zu können.
21 <text_editor name="tos_text"> 11 <text_editor name="tos_text">
22 TOS_TEXT 12 TOS_TEXT
23 </text_editor> 13 </text_editor>
24 <text name="real_url"> 14
15 <string name="real_url">
25 http://secondlife.com/app/tos/ 16 http://secondlife.com/app/tos/
26 </text> 17 </string>
27</floater> 18</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_voice_license.xml b/linden/indra/newview/skins/default/xui/de/floater_voice_license.xml
new file mode 100644
index 0000000..a79224b
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/de/floater_voice_license.xml
@@ -0,0 +1,18 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="modal container" title="">
3 <button label="Weiter" label_selected="Weiter" name="Continue" />
4 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" />
5 <check_box label="Ich stimme den Bedingungen der Vivox-Richtlinie zur akzeptieren Nutzung zu"
6name="agree_chk" />
7 <text name="license_heading">
8Bitte lesen Sie das folgende Dokument sorgfältig durch.
9Um Vivox Sprach-Chat nutzen zu können, müssen Sie den Bedingungen zustimmen.
10 </text>
11 <text_editor name="license_text">
12 LICENSE_TEXT
13 </text_editor>
14
15 <string name="real_url">
16 http://www.vivox.com/vivox_aup.html
17 </string>
18</floater>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_water.xml b/linden/indra/newview/skins/default/xui/de/floater_water.xml
index 95b4694..b768a12 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_water.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_water.xml
@@ -4,7 +4,15 @@
4 Voreinstellungen: 4 Voreinstellungen:
5 </text> 5 </text>
6 <button label="Neu" label_selected="Neu" name="WaterNewPreset" /> 6 <button label="Neu" label_selected="Neu" name="WaterNewPreset" />
7 <button label="Speichern" label_selected="Speichern" name="WaterSavePreset" /> 7 <flyout_button label="Auf Platte speichern"
8 name="WaterSavePreset">
9 <flyout_button_item name="save_inventory_item">
10 In Inventar speichern
11 </flyout_button_item>
12 <flyout_button_item name="save_disk_item">
13 Auf Platte speichern
14 </flyout_button_item>
15 </flyout_button>
8 <button label="Löschen" label_selected="Löschen" name="WaterDeletePreset" /> 16 <button label="Löschen" label_selected="Löschen" name="WaterDeletePreset" />
9 <tab_container name="Water Tabs"> 17 <tab_container name="Water Tabs">
10 <panel label="Einstellungen" name="Settings"> 18 <panel label="Einstellungen" name="Settings">
@@ -12,7 +20,7 @@
12 Wassertrübungsfarbe 20 Wassertrübungsfarbe
13 </text> 21 </text>
14 <button label=" ?" name="WaterFogColorHelp" left="175" /> 22 <button label=" ?" name="WaterFogColorHelp" left="175" />
15 <color_swatch name="WaterFogColor" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> 23 <color_swatch name="WaterFogColor" tool_tip="Hier klicken, um die Farbauswahl zu öffnen" />
16 <text name="WaterFogDensText"> 24 <text name="WaterFogDensText">
17 Wassertrübungsdichte 25 Wassertrübungsdichte
18 </text> 26 </text>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml b/linden/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml
index 89e351e..5ca57e4 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="modal container" title=" "> 2<floater name="modal container" title="">
3 <button label="Speichern" label_selected="Speichern" name="Save" /> 3 <button label="Speichern" label_selected="Speichern" name="Save" />
4 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> 4 <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" />
5 <text type="string" length="1" name="Save item as:"> 5 <text type="string" length="1" name="Save item as:">
diff --git a/linden/indra/newview/skins/default/xui/de/floater_windlight_options.xml b/linden/indra/newview/skins/default/xui/de/floater_windlight_options.xml
index 8df412d..09ffcd2 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_windlight_options.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_windlight_options.xml
@@ -4,10 +4,15 @@
4 Voreinstellungen: 4 Voreinstellungen:
5 </text> 5 </text>
6 <button label="Neu" label_selected="Neu" name="WLNewPreset" /> 6 <button label="Neu" label_selected="Neu" name="WLNewPreset" />
7 <button label="Speichern" label_selected="Speichern" name="WLSavePreset" /> 7 <flyout_button label="Auf Platte speichern" name="WLSavePreset">
8 <flyout_button_item name="save_inventory_item">
9 In Inventar speichern
10 </flyout_button_item>
11 <flyout_button_item name="save_disk_item">
12 Auf Platte speichern
13 </flyout_button_item>
14 </flyout_button>
8 <button label="Löschen" label_selected="Löschen" name="WLDeletePreset" /> 15 <button label="Löschen" label_selected="Löschen" name="WLDeletePreset" />
9 <button label="Tageszyklus-Editor" label_selected="Tageszyklus-Editor"
10 name="WLDayCycleMenuButton" />
11 <tab_container name="WindLight Tabs"> 16 <tab_container name="WindLight Tabs">
12 <panel label="Atmosphäre" name="Atmosphere"> 17 <panel label="Atmosphäre" name="Atmosphere">
13 <text name="BHText"> 18 <text name="BHText">
@@ -184,6 +189,8 @@
184 <button label=" ?" name="WLClassicCloudsHelp" /> 189 <button label=" ?" name="WLClassicCloudsHelp" />
185 </panel> 190 </panel>
186 </tab_container> 191 </tab_container>
192 <button label="Tageszyklus-Editor" label_selected="Tageszyklus-Editor"
193 name="WLDayCycleMenuButton" />
187 <string name="WLDefaultSkyNames"> 194 <string name="WLDefaultSkyNames">
188 A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality 195 A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
189 </string> 196 </string>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_world_map.xml b/linden/indra/newview/skins/default/xui/de/floater_world_map.xml
index d28b55e..e0d95e6 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_world_map.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_world_map.xml
@@ -14,19 +14,19 @@
14 Auktion 14 Auktion
15 </text> 15 </text>
16 <text font="SansSerifSmall" name="land_for_sale_label"> 16 <text font="SansSerifSmall" name="land_for_sale_label">
17 Land erhaeltlich 17 Land zum Verkauf
18 </text> 18 </text>
19 <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/> 19 <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Zu Ihrem Zuhause teleportieren"/>
20 <check_box label="Einwohner" name="people_chk"/> 20 <check_box label="Einwohner" name="people_chk"/>
21 <check_box label="Infohub" name="infohub_chk"/> 21 <check_box label="Infohub" name="infohub_chk"/>
22 <check_box label="Telehub" name="telehubchk"/> 22 <check_box label="Telehub" name="telehubchk"/>
23 <check_box label="Land zu verkaufen" name="land_for_sale_chk"/> 23 <check_box label="Land zum Verkauf" name="land_for_sale_chk"/>
24 <text name="events_label"> 24 <text name="events_label">
25 Events: 25 Events:
26 </text> 26 </text>
27 <check_box label="PG" name="event_chk"/> 27 <check_box label="PG" name="event_chk"/>
28 <check_box label="Mature" name="event_mature_chk"/> 28 <check_box label="Reif" name="event_mature_chk"/>
29 <check_box label="Adult" name="event_adult_chk"/> 29 <check_box label="Erwachsen" name="event_adult_chk"/>
30 <combo_box label="Online-Freunde" name="friend combo" tool_tip="Freund, der auf Karte angezeigt werden soll"> 30 <combo_box label="Online-Freunde" name="friend combo" tool_tip="Freund, der auf Karte angezeigt werden soll">
31 <combo_item name="none_selected"> 31 <combo_item name="none_selected">
32 Online-Freunde 32 Online-Freunde
@@ -47,15 +47,15 @@
47 <column label="" name="sim_name"/> 47 <column label="" name="sim_name"/>
48 </scroll_list> 48 </scroll_list>
49 <text name="location_label"> 49 <text name="location_label">
50 Standort: 50 Ort:
51 </text> 51 </text>
52 <spinner name="spin x" tool_tip="X-Koordinate der Position auf der Karte"/> 52 <spinner name="spin x" tool_tip="X-Koordinate des Ortes auf der Karte"/>
53 <spinner name="spin y" tool_tip="Y-Koordinate der Position auf der Karte"/> 53 <spinner name="spin y" tool_tip="Y-Koordinate des Ortes auf der Karte"/>
54 <spinner name="spin z" tool_tip="Z-Koordinate der Position auf der Karte"/> 54 <spinner name="spin z" tool_tip="Z-Koordinate des Ortes auf der Karte"/>
55 <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/> 55 <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewähltem Ort teleportieren"/>
56 <button label="Gesuchte Position" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/> 56 <button label="Ziel anzeigen" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählten Ort zentrieren"/>
57 <button label="Löschen" label_selected="Löschen" name="Clear" tool_tip="Verfolgung abschalten"/> 57 <button label="Löschen" label_selected="Löschen" name="Clear" tool_tip="Verfolgung abschalten"/>
58 <button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position Ihres Avatars zentrieren"/> 58 <button label="Meine Position" label_selected="Meine Position" name="Show My Location" tool_tip="Karte auf Position Ihres Avatars zentrieren"/>
59 <button font="SansSerifSmall" label="SLURL in die Zwischenablage kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLURL zur Verwendung im Web."/> 59 <button font="SansSerifSmall" label="SLURL in Zwischenablage kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLURL zur Verwendung im Internet."/>
60 <slider label="Zoom" name="zoom slider"/> 60 <slider label="Zoom" name="zoom slider"/>
61</floater> 61</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml b/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml
index 35f47b5..13b334b 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml
@@ -47,7 +47,7 @@
47 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top" 47 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top"
48 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true" 48 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true"
49 tool_tip="" name="CmdLineChatbarCalc" control_name="CmdLineChatbarCalc" width="200"/> 49 tool_tip="" name="CmdLineChatbarCalc" control_name="CmdLineChatbarCalc" width="200"/>
50 <text bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" left_delta="0" 50 <text bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" left_delta="0" name="add_autokorrect"
51 width="512">Add autocorrect word(cmd list|bad|good)</text> 51 width="512">Add autocorrect word(cmd list|bad|good)</text>
52 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top" 52 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top"
53 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true" 53 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true"
@@ -105,4 +105,4 @@
105 <button bottom="-40" follows="left|top" font="SansSerifSmall" height="18" label="?" 105 <button bottom="-40" follows="left|top" font="SansSerifSmall" height="18" label="?"
106 name="Help_CmdLine" tool_tip="Click here for help regarding the settings in this page." 106 name="Help_CmdLine" tool_tip="Click here for help regarding the settings in this page."
107 right="-10" width="18"/> 107 right="-10" width="18"/>
108</floater> \ No newline at end of file 108</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml
index db4d1e1..3b039de 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml
@@ -136,10 +136,10 @@
136 </combo_box> 136 </combo_box>
137 137
138 <spinner bottom_delta="-25" decimal_digits="0" follows="left|top" height="20" 138 <spinner bottom_delta="-25" decimal_digits="0" follows="left|top" height="20"
139 increment="32" label="Width" label_width="30" left="10" max_val="4096" 139 increment="32" label="Width" label_width="30" left="10" max_val="6016"
140 min_val="32" name="snapshot_width" width="95" allow_text_entry="false"/> 140 min_val="32" name="snapshot_width" width="95" allow_text_entry="false"/>
141 <spinner bottom_delta="0" decimal_digits="0" follows="left|top" height="20" 141 <spinner bottom_delta="0" decimal_digits="0" follows="left|top" height="20"
142 increment="32" label="Height" label_width="35" left="110" max_val="4096" 142 increment="32" label="Height" label_width="35" left="110" max_val="6016"
143 min_val="32" name="snapshot_height" width="95" allow_text_entry="false"/> 143 min_val="32" name="snapshot_height" width="95" allow_text_entry="false"/>
144 <check_box bottom_delta="-20" follows="left|top" label="Constrain Proportions" left="10" 144 <check_box bottom_delta="-20" follows="left|top" label="Constrain Proportions" left="10"
145 name="keep_aspect_check" /> 145 name="keep_aspect_check" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
index d7a2013..c665563 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater bottom="-374" can_close="true" can_drag_on_left="false" can_minimize="true" 2<floater bottom="-374" can_close="true" can_drag_on_left="false" can_minimize="true"
3 can_resize="false" follows="left|top" height="565" 3 can_resize="false" follows="left|top" height="575"
4 left="308" min_height="100" min_width="100" mouse_opaque="true" 4 left="308" min_height="100" min_width="100" mouse_opaque="true"
5 name="toolbox floater" rect_control="ToolboxRect" sound_flags="0" title="" 5 name="toolbox floater" rect_control="ToolboxRect" sound_flags="0" title=""
6 short_title="Build" width="272"> 6 short_title="Build" width="272">
@@ -334,7 +334,7 @@
334 334
335<!-- Sub-tabs --> 335<!-- Sub-tabs -->
336 336
337 <tab_container bottom="-565" follows="left|top" height="384" left="0" mouse_opaque="false" 337 <tab_container bottom="-575" follows="left|top" height="384" left="0" mouse_opaque="false"
338 name="Object Info Tabs" tab_max_width="52" tab_min_width="40" 338 name="Object Info Tabs" tab_max_width="52" tab_min_width="40"
339 tab_position="top" width="272"> 339 tab_position="top" width="272">
340 <panel border="true" bottom="-383" follows="left|top|right|bottom" height="367" 340 <panel border="true" bottom="-383" follows="left|top|right|bottom" height="367"
@@ -1363,6 +1363,9 @@
1363 <string name="status_move"> 1363 <string name="status_move">
1364 Drag to Move, Shift-Drag to Copy 1364 Drag to Move, Shift-Drag to Copy
1365 </string> 1365 </string>
1366 <string name="status_align">
1367 CTRL-A to align on an axis, CTRL-Shift-A to Pack
1368 </string>
1366 <string name="status_modifyland"> 1369 <string name="status_modifyland">
1367 Click and Hold to Modify Land 1370 Click and Hold to Modify Land
1368 </string> 1371 </string>
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_areasearch.xml b/linden/indra/newview/skins/default/xui/en-us/menu_areasearch.xml
new file mode 100644
index 0000000..c55d1b3
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_areasearch.xml
@@ -0,0 +1,16 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<menu bottom="100" color="MenuDefaultBgColor" drop_shadow="true" height="101" left="100"
3 mouse_opaque="false" name="popup" opaque="true" width="128">
4 <menu_item_call bottom_delta="-18" height="18" label="Teleport to" left="0"
5 mouse_opaque="true" name="teleport" width="128">
6 <on_click function="Popup.HandleMenu" userdata="teleport" />
7 </menu_item_call>
8 <menu_item_call bottom_delta="-18" height="18" label="Cam to" left="0"
9 mouse_opaque="true" name="cam" width="128">
10 <on_click function="Popup.HandleMenu" userdata="cam" />
11 </menu_item_call>
12 <menu_item_call bottom_delta="-18" height="18" label="Edit" left="0"
13 mouse_opaque="true" name="edit" width="128">
14 <on_click function="Popup.HandleMenu" userdata="edit" />
15 </menu_item_call>
16</menu>
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
index 534ca83..e3b2636 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
@@ -311,10 +311,11 @@
311 <on_enable function="View.EnableLastChatter" /> 311 <on_enable function="View.EnableLastChatter" />
312 </menu_item_call> 312 </menu_item_call>
313 <menu_item_separator /> 313 <menu_item_separator />
314 <menu_item_call name="Web Browser" label="Web Browser" 314 <menu_item_check name="Web Browser" label="Web Browser"
315 shortcut="control|B"> 315 shortcut="control|B">
316 <on_click function="ShowFloater" userdata="inworld browser" /> 316 <on_click function="ShowFloater" userdata="inworld browser" />
317 </menu_item_call> 317 <on_check function="FloaterVisible" userdata="inworld browser" />
318 </menu_item_check>
318 <menu_item_separator /> 319 <menu_item_separator />
319 <menu_item_check name="Toolbar" label="Toolbar"> 320 <menu_item_check name="Toolbar" label="Toolbar">
320 <on_click function="ShowFloater" userdata="toolbar" /> 321 <on_click function="ShowFloater" userdata="toolbar" />
@@ -995,7 +996,8 @@
995 <on_click function="ShowFloater" userdata="animation list" /> 996 <on_click function="ShowFloater" userdata="animation list" />
996 <on_check function="FloaterVisible" userdata="animation list" /> 997 <on_check function="FloaterVisible" userdata="animation list" />
997 </menu_item_check> 998 </menu_item_check>
998 <menu_item_check label="Area Object Search" name="Area Object Search" shortcut="control|shift|A"> 999 <menu_item_check label="Area Object Search" name="Area Object Search"
1000 shortcut="alt|A">
999 <on_click function="ShowFloater" userdata="areasearch" /> 1001 <on_click function="ShowFloater" userdata="areasearch" />
1000 <on_check function="FloaterVisible" userdata="areasearch" /> 1002 <on_check function="FloaterVisible" userdata="areasearch" />
1001 </menu_item_check> 1003 </menu_item_check>
diff --git a/linden/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/linden/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
index 0c30199..4f33ae4 100644
--- a/linden/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
+++ b/linden/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
@@ -1,4 +1,183 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel name="advanced_panel"> 2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 <check_box label="Partager la langue avec les objets" name="language_is_public" tool_tip="Cette option permet de faire connaître aux objets du Monde votre langue favorite."/> 3 height="408" label="Avancé" left="102" mouse_opaque="true"
4</panel> 4 name="advanced_panel" width="517">
5 <!-- Start organizing these when we get enough of 'em - MC -->
6 <tab_container label="Page 2" bottom="0" height="450" left="0" mouse_opaque="false"
7 name="tab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0">
8
9 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
10 height="408" label="Main" left="102" mouse_opaque="true"
11 name="main_panel" width="517">
12 <check_box label="Désactiver l'écrant de Connexion/Déconnexion" name="disable_log_screen_check" />
13 <check_box label="Désactiver l'écrant de téléportation" name="disable_tp_screen_check" />
14 <check_box label="Afficher les noms de clients dans les titres" name="client_name_tag_check"/>
15 <check_box label="Afficher les noms de clients avec la couleur" name="client_name_color_check"/>
16 <check_box label="Afficher les noms de clients dans les infos-bulles" name="client_name_hover_check" />
17 <check_box label="Afficher le nom de votre clien pour les residents" name="client_name_tag_broadcast_check" radio_style="false" width="217" />
18 <check_box label="Activer les Ombres (ATTENTION: instable et les graphiques Ultra sont requis)" name="shadows_check"/>
19 <text bottom_delta="-25" left="16" height="15" width="300"
20 follows="top|left">
21 Laisser la région gèrer le WindLight (LightShare):
22 </text>
23 <combo_box name="lightshare_combo"
24 bottom_delta="-2" left_delta="250" height="18" width="135"
25 allow_text_entry="false" follows="left|top">
26 <combo_item type="string" name="never" value="0">
27 Jamais
28 </combo_item>
29 <combo_item type="string" name="ask" value="1">
30 Toujours me le demander
31 </combo_item>
32 <combo_item type="string" name="always" value="2">
33 Toujours
34 </combo_item>
35 </combo_box>
36 <check_box label="Utiliser le raffraichissement de texture HTTP (experimental)" name="http_texture_check" />
37 <check_box label="Augmenter la vitesse de rez par une vue moins progressive" name="speed_rez_check"/>
38 <spinner label="Intervalle de chaque étapes:" name="speed_rez_interval_spinner" />
39 <text bottom_delta="0" follows="top|left" height="15" left_delta="150"
40 name="speed_rez_seconds_text" width="115">
41 secondes
42 </text>
43 <check_box label="Animer votre avatar quand vous êtes en mode apparence" name="appearance_anim_check"/>
44 <check_box label="Utiliser l'ancien menu de sélection" name="legacy_pie_menu_checkbox"/>
45 <check_box label="Partager la langue de votre client avec l'objet" name="language_is_public"/>
46 <check_box bottom_delta="-25" enabled="true"
47 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
48 initial_value="false" label="Use MU* pose style chat and IM" left="12"
49 mouse_opaque="true" name="allow_mupose"
50 radio_style="false" tool_tip="Use MU* pose style in chat and IM (with ':' as a synonymous to '/me ')."
51 width="256" />
52 <check_box bottom_delta="0" enabled="true"
53 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
54 initial_value="false" label="Auto-close OOC (( )) chat" left_delta="250"
55 mouse_opaque="true" name="auto_close_ooc"
56 radio_style="false" tool_tip="Auto-close OOC chat (i.e. add )) if not found and (( was used)."
57 width="256" />
58 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
59 initial_value="false" label="Use the chatbar as a command line" left="12"
60 mouse_opaque="true" name="command_line_check" radio_style="false" width="270"/>
61 <button bottom_delta="-20" follows="left|top" font="SansSerif" height="20" width="150"
62 label="Chatbar Commands" name="command_line_btn" left="12"
63 tool_tip="Set specific chatbar command line commands here" />
64
65 <!-- Uncomment when we start using the crash logger - MC -->
66 <!--<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
67 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top"
68 font="SansSerifSmall" h_pad="0" halign="left" height="18" left="12"
69 mouse_opaque="true" name="crash_report_textbox" v_pad="0" width="394">
70 Crash reports:
71 </text>
72 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" follows="left|top"
73 height="18" left="153" max_chars="20" mouse_opaque="true"
74 name="crash_behavior_combobox" width="146">
75 <combo_item type="string" length="1" enabled="true" name="Askbeforesending" value="Ask before sending">
76 Ask before sending
77 </combo_item>
78 <combo_item type="string" length="1" enabled="true" name="Alwayssend" value="Always send">
79 Always send
80 </combo_item>
81 <combo_item type="string" length="1" enabled="true" name="Neversend" value="Never send">
82 Never send
83 </combo_item>
84 </combo_box>-->
85
86 <button bottom="10" follows="left|bottom" font="SansSerif" height="20" width="250"
87 label="Reset All Preferences To Default" name="reset_btn" left="12"
88 tool_tip="Reset all preferences to their default values (requires a restart)" />
89 </panel>
90
91 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="SpellCheck"
92 left="1" mouse_opaque="true" name="SpellCheck" width="418">
93 <button bottom="-25" follows="left|top" font="SansSerifSmall" height="18" label="?"
94 name="EmeraldHelp_SpellCheck" tool_tip="Click here for help regarding the settings in this page."
95 right="490" width="18"/>
96 <check_box bottom="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
97 label="Show misspelled words in red" left="12" mouse_opaque="true" name="EmeraldSpellDisplay"
98 control_name="EmeraldSpellDisplay" width="126"/>
99 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
100 name="EmSpell_txt1" width="512">
101 Current language (dictionary):
102 </text>
103 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
104 max_chars="200" mouse_opaque="true" name="EmeraldSpellBase" width="250"
105 control_name="EmeraldSpellBase" tool_tip=""/>
106 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
107 name="EmSpell_txt3" width="512">
108 Downloaded languages (dictionaries):
109 </text>
110 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
111 max_chars="200" mouse_opaque="true" name="EmSpell_Avail" width="250"
112 control_name="EmSpell_Avail" tool_tip=""/>
113 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Install"
114 name="EmSpell_Add" tool_tip="" left_delta="255" width="80"/>
115 <button bottom_delta="-22" follows="left|top" font="SansSerifSmall" height="20" label="Download More..."
116 name="EmSpell_GetMore" tool_tip="Get more dictionaries availabe online" left="12" width="250"/>
117 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
118 name="EmSpell_txt2" width="512">
119 Additional custom languages (dictionaries):
120 </text>
121 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
122 max_chars="200" mouse_opaque="true" name="EmSpell_Installed" width="250"
123 control_name="EmSpell_Installed" tool_tip=""/>
124 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Remove"
125 name="EmSpell_Remove" tool_tip="" left_delta="255" width="80"/>
126 <!--<button bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="18" label="Edit Custom dictionary"
127 name="EmSpell_EditCustom" tool_tip="" left_delta="20" width="130"/>-->
128 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
129 name="EmSpell_txt4" width="512">
130To use spellcheck, right-click a misspelled word
131(red or otherwise) and select its replacement
132 </text>
133 <button name="ac_button" label="AutoCorrect Options..." halign="center"
134 tool_tip="Modify the AutoCorrect word list and settings" left="12"
135 bottom_delta="-50" width="180" height="20" font="SansSerifSmall" follows="left|top"/>
136 </panel>
137
138 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Extra"
139 left="1" mouse_opaque="true" name="Extra" width="418">
140
141 <check_box bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
142 initial_value="true" label="Show chat messages from friends in a different color" left="12"
143 mouse_opaque="true" name="HighlightFriendsChat" radio_style="false" width="270"/>
144
145 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-100"
146 can_apply_immediately="true" color="1 1 1 1" control_name="FriendsChatColor"
147 enabled="true" follows="left|top" height="67" label="Friends" left_delta="68"
148 mouse_opaque="true" name="FriendsChatColor" width="65" />
149
150 <check_box bottom_delta="-30" enabled="true" follows="left|top"
151 font="SansSerifSmall" height="16" initial_value="true"
152 label="Show chat messages containing your name in a different color" left="12" mouse_opaque="true"
153 name="HighlightOwnNameInChat" radio_style="false" width="217" />
154
155 <check_box bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
156 initial_value="true" label="Show GroupIM messages containing your name in a different color" left="12"
157 mouse_opaque="true" name="HighlightOwnNameInIM" radio_style="false" width="270"/>
158
159 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-230"
160 can_apply_immediately="true" color="1 1 1 1" control_name="OwnNameChatColor"
161 enabled="true" follows="left|top" height="67" label="Own Name" left_delta="68"
162 mouse_opaque="true" name="OwnNameChatColor" width="65" />
163
164 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-50"
165 enabled="true" follows="left|top" font="SansSerif"
166 handle_edit_keys_directly="true" height="20" left_delta="0"
167 max_length="50" mouse_opaque="true" name="nick01"
168 select_all_on_focus_received="true" width="400" word_wrap="false" />
169
170 <text bottom_delta="-3" follows="left|top" font="SansSerifSmall" height="20" left="20" name="nick01_text" width="70">Nick 1</text>
171
172 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-30"
173 enabled="true" follows="left|top" font="SansSerif"
174 handle_edit_keys_directly="true" height="20" left_delta="60"
175 max_length="50" mouse_opaque="true" name="nick02"
176 select_all_on_focus_received="true" width="400" word_wrap="false" />
177
178 <text bottom_delta="-3" follows="left|top" font="SansSerifSmall" height="20" left="20" name="nick02_text" width="70">Nick 2</text>
179
180 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-30"
181 enabled="true" follows="left|top" font="SansSerif"
182 handle_edit_keys_directly="true" height="20" left_delta="60"
183 max_length="50" mouse_opaque="true" name="nick03"
diff --git a/linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml
index 78475bd..d4574d1 100644
--- a/linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml
+++ b/linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml
@@ -15,6 +15,7 @@
15 <check_box label="Couper le son lorsque la fenêtre est minimisée" name="mute_when_minimized"/> 15 <check_box label="Couper le son lorsque la fenêtre est minimisée" name="mute_when_minimized"/>
16 <check_box bottom="-200" height="32" label="Jouer la musique disponible &#10; 16 <check_box bottom="-200" height="32" label="Jouer la musique disponible &#10;
17(consommateur en bande passante)" name="streaming_music"/> 17(consommateur en bande passante)" name="streaming_music"/>
18 <check_box bottom_delta="-30" label="Afficher le titre de la chanson" name="show_stream_title"/>
18 <check_box bottom_delta="-32" height="32" label="Jouer le média disponible &#10; 19 <check_box bottom_delta="-32" height="32" label="Jouer le média disponible &#10;
19(consommateur en bande passante)" name="streaming_video"/> 20(consommateur en bande passante)" name="streaming_video"/>
20 <check_box bottom_delta="-32" label="Lire automatiquement le média" name="auto_streaming_video"/> 21 <check_box bottom_delta="-32" label="Lire automatiquement le média" name="auto_streaming_video"/>
@@ -22,5 +23,6 @@
22 <slider label="Facteur d&apos;éloignement" label_width="115" name="Distance Factor"/> 23 <slider label="Facteur d&apos;éloignement" label_width="115" name="Distance Factor"/>
23 <slider label="Facteur d&apos;atténuation" label_width="115" name="Rolloff Factor"/> 24 <slider label="Facteur d&apos;atténuation" label_width="115" name="Rolloff Factor"/>
24 <spinner label="Alerte L$" name="L$ Change Threshold"/> 25 <spinner label="Alerte L$" name="L$ Change Threshold"/>
25 <spinner label="Alerte santé" name="Health Change Threshold"/> 26 <spinner label="Alerte santé" name="Health change threshold"/>
27 <check_box label="Desactiver le bruit du vent" name="mute_wind_check"/>
26</panel> 28</panel>
diff --git a/linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml
index 2e7efd3..af5f846 100644
--- a/linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml
@@ -8,9 +8,17 @@
8 se connecter pour changer 8 se connecter pour changer
9 </text> 9 </text>
10 <check_box label="Envoyer les IM à mon adresse e-mail ([EMAIL])" name="send_im_to_email"/> 10 <check_box label="Envoyer les IM à mon adresse e-mail ([EMAIL])" name="send_im_to_email"/>
11 <check_box label="Afficher les IM dans la console du chat" name="include_im_in_chat_console"/> 11 <check_box bottom="-90" label="La console chat" name="include_im_in_chat_console" left="160"/>
12 <check_box label="Afficher l&apos;heure dans les IM" name="show_timestamps_check"/> 12 <check_box bottom="-90" label="La fenêtre communiquer" name="include_im_in_chat_history" left="260" />
13 <check_box label="Me prévenir quand des amis se connectent" name="friends_online_notify_checkbox"/> 13 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
14 bottom="-60" drop_shadow_visible="true" enabled="true" follows="left|top"
15 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="160"
16 mouse_opaque="false" name="show_ims_label" v_pad="0" width="100">
17 Afficher les IMs dans:
18 </text>
19 <check_box bottom="-120" label="Afficher l&apos;heure dans les IM" name="show_timestamps_check"/>
20 <check_box bottom="-140" label="Me prévenir quand des amis se connectent" name="friends_online_notify_checkbox"/>
21 <check_box label="Afficher les IMs verticalement (redémarrage requis)" name="vertical-imtabs-toggle"/>
14 <text name="text_box3"> 22 <text name="text_box3">
15 Réponse si occupé(e) : 23 Réponse si occupé(e) :
16 </text> 24 </text>
@@ -24,8 +32,8 @@
24 <check_box label="Inclure les heures" name="log_chat_timestamp"/> 32 <check_box label="Inclure les heures" name="log_chat_timestamp"/>
25 <check_box label="Inclure les IM reçus" name="log_chat_IM"/> 33 <check_box label="Inclure les IM reçus" name="log_chat_IM"/>
26 <check_box label="Inclure la date avec les heures" name="log_date_timestamp"/> 34 <check_box label="Inclure la date avec les heures" name="log_date_timestamp"/>
27 <button label="Changer d&apos;emplacement" label_selected="Changer d&apos;emplacement" name="log_path_button" width="150"/> 35 <button label="Changer d&apos;emplacement" label_selected="Changer d&apos;emplacement" name="log_path_button" left="145" width="170"/>
28 <line_editor left="308" name="log_path_string" right="-20"/> 36 <line_editor left="320" name="log_path_string" right="-20"/>
29 <text length="1" name="text_box2" type="string"> 37 <text length="1" name="text_box2" type="string">
30 IM : 38 IM :
31 </text> 39 </text>
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index cc22748..f9c34d6 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -230,7 +230,7 @@ class WindowsManifest(ViewerManifest):
230 self.path("LICENSE-libraries.txt") 230 self.path("LICENSE-libraries.txt")
231 self.end_prefix("../..") 231 self.end_prefix("../..")
232 232
233 233
234 self.path("imprudence.url") 234 self.path("imprudence.url")
235 235
236 # Plugin host application 236 # Plugin host application
@@ -252,6 +252,14 @@ class WindowsManifest(ViewerManifest):
252 self.path("libhunspell.dll") 252 self.path("libhunspell.dll")
253 self.end_prefix() 253 self.end_prefix()
254 254
255 # Get llcommon and deps.
256 if self.prefix(src=self.args['configuration'], dst=""):
257 self.path('libapr-1.dll')
258 self.path('libaprutil-1.dll')
259 self.path('libapriconv-1.dll')
260 self.path('llcommon.dll')
261 self.end_prefix()
262
255 # For textures 263 # For textures
256 if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): 264 if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""):
257 self.path("openjpeg.dll") 265 self.path("openjpeg.dll")
@@ -731,14 +739,51 @@ class DarwinManifest(ViewerManifest):
731 self.path("vivox-runtime/universal-darwin/SLVoice", "SLVoice") 739 self.path("vivox-runtime/universal-darwin/SLVoice", "SLVoice")
732 #self.path("vivox-runtime/universal-darwin/SLVoiceAgent.app", "SLVoiceAgent.app") 740 #self.path("vivox-runtime/universal-darwin/SLVoiceAgent.app", "SLVoiceAgent.app")
733 741
742 libdir = "../../libraries/universal-darwin/lib_release"
743 dylibs = {}
744
745 #for lib in "llkdu", "llcommon":
746 for lib in "llcommon":
747 libfile = "lib%s.dylib" % lib
748 try:
749 self.path(self.find_existing_file(os.path.join(os.pardir,
750 lib,
751 self.args['configuration'],
752 libfile),
753 os.path.join(libdir, libfile)),
754 dst=libfile)
755 except RuntimeError:
756 print "Skipping %s" % libfile
757 dylibs[lib] = False
758 else:
759 dylibs[lib] = True
760
761 for libfile in ("libapr-1.0.3.7.dylib",
762 "libaprutil-1.0.3.8.dylib",
763 "libexpat.0.5.0.dylib"):
764 self.path(os.path.join(libdir, libfile), libfile)
765
734 #libfmodwrapper.dylib 766 #libfmodwrapper.dylib
735 #self.path(self.args['configuration'] + "/libfmodwrapper.dylib", "libfmodwrapper.dylib") 767 #self.path(self.args['configuration'] + "/libfmodwrapper.dylib", "libfmodwrapper.dylib")
736 768
737 # our apps 769 # our apps
738# self.path("../mac_crash_logger/" + self.args['configuration'] + "/mac-crash-logger.app", "mac-crash-logger.app") 770# self.path("../mac_crash_logger/" + self.args['configuration'] + "/mac-crash-logger.app", "mac-crash-logger.app")
739 self.path("../mac_updater/" + self.args['configuration'] + "/mac-updater.app", "mac-updater.app") 771 self.path("../mac_updater/" + self.args['configuration'] + "/mac-updater.app", "mac-updater.app")
740 772
741 # plugin launcher 773 # our apps dependencies on shared libs
774 mac_crash_logger_res_path = self.dst_path_of("mac-crash-logger.app/Contents/Resources")
775 mac_updater_res_path = self.dst_path_of("mac-updater.app/Contents/Resources")
776 for libfile in ("libllcommon.dylib",
777 "libapr-1.0.3.7.dylib",
778 "libaprutil-1.0.3.8.dylib",
779 "libexpat.0.5.0.dylib"):
780 target_lib = os.path.join('../../..', libfile)
781 self.run_command("ln -sf %(target)r %(link)r" %
782 {'target': target_lib,
783 'link' : os.path.join(mac_crash_logger_res_path, libfile)}
784 )
785
786 # plugin launcher
742 self.path("../llplugin/slplugin/" + self.args['configuration'] + "/SLPlugin", "SLPlugin") 787 self.path("../llplugin/slplugin/" + self.args['configuration'] + "/SLPlugin", "SLPlugin")
743 788
744 # plugins 789 # plugins
@@ -952,6 +997,8 @@ class Linux_i686Manifest(LinuxManifest):
952 else: 997 else:
953 self.path("imprudence-stripped","bin/do-not-directly-run-imprudence-bin") 998 self.path("imprudence-stripped","bin/do-not-directly-run-imprudence-bin")
954 999
1000 self.path("../llcommon/libllcommon.so", "lib/libllcommon.so")
1001
955 if (not self.standalone()) and self.prefix("../../libraries/i686-linux/lib_release_client", dst="lib"): 1002 if (not self.standalone()) and self.prefix("../../libraries/i686-linux/lib_release_client", dst="lib"):
956 self.path("libapr-1.so.0") 1003 self.path("libapr-1.so.0")
957 self.path("libaprutil-1.so.0") 1004 self.path("libaprutil-1.so.0")
@@ -1072,6 +1119,8 @@ class Linux_x86_64Manifest(LinuxManifest):
1072 self.path("imprudence-stripped","bin/do-not-directly-run-imprudence-bin") 1119 self.path("imprudence-stripped","bin/do-not-directly-run-imprudence-bin")
1073# self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin") 1120# self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin")
1074 1121
1122 self.path("../llcommon/libllcommon.so", "lib64/libllcommon.so")
1123
1075 self.path("linux_tools/launch_url.sh","launch_url.sh") 1124 self.path("linux_tools/launch_url.sh","launch_url.sh")
1076 if self.prefix("res-sdl"): 1125 if self.prefix("res-sdl"):
1077 self.path("*") 1126 self.path("*")
diff --git a/linden/install.xml b/linden/install.xml
index 88b6ef3..1df31e2 100755
--- a/linden/install.xml
+++ b/linden/install.xml
@@ -99,9 +99,9 @@
99 <key>darwin</key> 99 <key>darwin</key>
100 <map> 100 <map>
101 <key>md5sum</key> 101 <key>md5sum</key>
102 <string>abd07d760cdc7d23da3b861f34b09c92</string> 102 <string>115d8ac44a91efdb173e9b3e478c46b6</string>
103 <key>url</key> 103 <key>url</key>
104 <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.2.8-darwin-20080812.tar.bz2</uri> 104 <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.3.7-darwin-20090805.tar.bz2</uri>
105 </map> 105 </map>
106 <key>linux</key> 106 <key>linux</key>
107 <map> 107 <map>
@@ -120,9 +120,9 @@
120 <key>windows</key> 120 <key>windows</key>
121 <map> 121 <map>
122 <key>md5sum</key> 122 <key>md5sum</key>
123 <string>b9d23a69a25fdeed96dcc3bf696b6514</string> 123 <string>a02619c1e30a3db02d3883bf1ad7a1e6</string>
124 <key>url</key> 124 <key>url</key>
125 <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.2.12-windows-20080806.tar.bz2</uri> 125 <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.3.8-windows-20090911.tar.bz2</uri>
126 </map> 126 </map>
127 </map> 127 </map>
128 </map> 128 </map>
@@ -354,9 +354,9 @@
354 <key>darwin</key> 354 <key>darwin</key>
355 <map> 355 <map>
356 <key>md5sum</key> 356 <key>md5sum</key>
357 <string>9c5603e328e9f543e0a599d6b25be973</string> 357 <string>c457a0a041ac4946265889a503d26c3d</string>
358 <key>url</key> 358 <key>url</key>
359 <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/expat-1.95.8-darwin-20080812.tar.bz2</uri> 359 <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/expat-1.95.8-darwin-20090805.tar.bz2</uri>
360 </map> 360 </map>
361 <key>linux</key> 361 <key>linux</key>
362 <map> 362 <map>