diff options
author | David Seikel | 2011-02-20 20:31:57 +1000 |
---|---|---|
committer | David Seikel | 2011-02-20 20:31:57 +1000 |
commit | d6666d0776985bada40f19c623b86d82a4113f92 (patch) | |
tree | eb4d234a313c51b40f6d53d4a59bdc831a7cd0fc /linden/indra/newview | |
parent | Remove catering to LL's probably illegal attempt to block copying of open sou... (diff) | |
parent | Reduce the logging spam to warnings. Debug was too much. (diff) | |
download | meta-impy-d6666d0776985bada40f19c623b86d82a4113f92.zip meta-impy-d6666d0776985bada40f19c623b86d82a4113f92.tar.gz meta-impy-d6666d0776985bada40f19c623b86d82a4113f92.tar.bz2 meta-impy-d6666d0776985bada40f19c623b86d82a4113f92.tar.xz |
Merge branch 'weekly' into branding
Conflicts (solved):
linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
linden/indra/newview/llappviewer.cpp
linden/indra/newview/llappviewerwin32.cpp
Diffstat (limited to 'linden/indra/newview')
94 files changed, 2200 insertions, 829 deletions
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt index c7d46c2..ff11a7f 100644 --- a/linden/indra/newview/CMakeLists.txt +++ b/linden/indra/newview/CMakeLists.txt | |||
@@ -87,6 +87,7 @@ set(viewer_SOURCE_FILES | |||
87 | impprefsfonts.cpp | 87 | impprefsfonts.cpp |
88 | jcfloater_animation_list.cpp | 88 | jcfloater_animation_list.cpp |
89 | jcfloaterareasearch.cpp | 89 | jcfloaterareasearch.cpp |
90 | kokuastreamingaudio.cpp | ||
90 | kowopenregionsettings.cpp | 91 | kowopenregionsettings.cpp |
91 | lightshare.cpp | 92 | lightshare.cpp |
92 | llagent.cpp | 93 | llagent.cpp |
@@ -171,6 +172,7 @@ set(viewer_SOURCE_FILES | |||
171 | llfloatercustomize.cpp | 172 | llfloatercustomize.cpp |
172 | llfloaterdaycycle.cpp | 173 | llfloaterdaycycle.cpp |
173 | llfloaterdirectory.cpp | 174 | llfloaterdirectory.cpp |
175 | llfloaterdisplayname.cpp | ||
174 | llfloatereditui.cpp | 176 | llfloatereditui.cpp |
175 | llfloaterenvsettings.cpp | 177 | llfloaterenvsettings.cpp |
176 | llfloaterevent.cpp | 178 | llfloaterevent.cpp |
@@ -408,6 +410,7 @@ set(viewer_SOURCE_FILES | |||
408 | llviewercamera.cpp | 410 | llviewercamera.cpp |
409 | llviewercontrol.cpp | 411 | llviewercontrol.cpp |
410 | llviewerdisplay.cpp | 412 | llviewerdisplay.cpp |
413 | llviewerdisplayname.cpp | ||
411 | llviewergenericmessage.cpp | 414 | llviewergenericmessage.cpp |
412 | llviewergesture.cpp | 415 | llviewergesture.cpp |
413 | llviewerimage.cpp | 416 | llviewerimage.cpp |
@@ -540,6 +543,7 @@ set(viewer_HEADER_FILES | |||
540 | impprefsfonts.h | 543 | impprefsfonts.h |
541 | jcfloater_animation_list.h | 544 | jcfloater_animation_list.h |
542 | jcfloaterareasearch.h | 545 | jcfloaterareasearch.h |
546 | kokuastreamingaudio.h | ||
543 | lightshare.h | 547 | lightshare.h |
544 | lggautocorrectfloater.h | 548 | lggautocorrectfloater.h |
545 | lggautocorrect.h | 549 | lggautocorrect.h |
@@ -629,6 +633,7 @@ set(viewer_HEADER_FILES | |||
629 | llfloatercustomize.h | 633 | llfloatercustomize.h |
630 | llfloaterdaycycle.h | 634 | llfloaterdaycycle.h |
631 | llfloaterdirectory.h | 635 | llfloaterdirectory.h |
636 | llfloaterdisplayname.h | ||
632 | llfloatereditui.h | 637 | llfloatereditui.h |
633 | llfloaterenvsettings.h | 638 | llfloaterenvsettings.h |
634 | llfloaterevent.h | 639 | llfloaterevent.h |
@@ -870,6 +875,7 @@ set(viewer_HEADER_FILES | |||
870 | llviewercamera.h | 875 | llviewercamera.h |
871 | llviewercontrol.h | 876 | llviewercontrol.h |
872 | llviewerdisplay.h | 877 | llviewerdisplay.h |
878 | llviewerdisplayname.h | ||
873 | llviewergenericmessage.h | 879 | llviewergenericmessage.h |
874 | llviewergesture.h | 880 | llviewergesture.h |
875 | llviewerimage.h | 881 | llviewerimage.h |
@@ -1366,7 +1372,7 @@ if (WINDOWS) | |||
1366 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py | 1372 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py |
1367 | ) | 1373 | ) |
1368 | 1374 | ||
1369 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit) # Removed media_plugin_gstreamer010 | 1375 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010) |
1370 | 1376 | ||
1371 | if (PACKAGE) | 1377 | if (PACKAGE) |
1372 | add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) | 1378 | add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) |
@@ -1582,17 +1588,17 @@ if (WINDOWS) | |||
1582 | COMMENT "Copying WebKit Plugin to the runtime folder." | 1588 | COMMENT "Copying WebKit Plugin to the runtime folder." |
1583 | ) | 1589 | ) |
1584 | 1590 | ||
1585 | #get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) | 1591 | get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) |
1586 | # add_custom_command( | 1592 | add_custom_command( |
1587 | # TARGET ${VIEWER_BINARY_NAME} POST_BUILD | 1593 | TARGET ${VIEWER_BINARY_NAME} POST_BUILD |
1588 | # COMMAND ${CMAKE_COMMAND} | 1594 | COMMAND ${CMAKE_COMMAND} |
1589 | # ARGS | 1595 | ARGS |
1590 | # -E | 1596 | -E |
1591 | # copy_if_different | 1597 | copy_if_different |
1592 | # ${BUILT_GSTREAMER_PLUGIN} | 1598 | ${BUILT_GSTREAMER_PLUGIN} |
1593 | # ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1599 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin |
1594 | # COMMENT "Copying Gstreamer Plugin to the runtime folder." | 1600 | COMMENT "Copying Gstreamer Plugin to the runtime folder." |
1595 | # ) | 1601 | ) |
1596 | 1602 | ||
1597 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) | 1603 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) |
1598 | add_custom_command( | 1604 | add_custom_command( |
diff --git a/linden/indra/newview/app_settings/cloud.xml b/linden/indra/newview/app_settings/cloud.xml new file mode 100644 index 0000000..ff9492b --- /dev/null +++ b/linden/indra/newview/app_settings/cloud.xml | |||
@@ -0,0 +1,88 @@ | |||
1 | <llsd> | ||
2 | <map> | ||
3 | <key>AngularVelocity</key> | ||
4 | <array> | ||
5 | <real>0</real> | ||
6 | <real>0</real> | ||
7 | <real>0</real> | ||
8 | </array> | ||
9 | <key>BurstPartCount</key> | ||
10 | <integer>1</integer> | ||
11 | <key>BurstRadius</key> | ||
12 | <real>0.3</real> | ||
13 | <key>BurstRate</key> | ||
14 | <real>0.02</real> | ||
15 | <key>BurstSpeedMax</key> | ||
16 | <real>1</real> | ||
17 | <key>Endcolor</key> | ||
18 | <array> | ||
19 | <real>0.75</real> | ||
20 | <real>0.47</real> | ||
21 | <real>0.81</real> | ||
22 | <real>0</real> | ||
23 | </array> | ||
24 | <key>Endscale</key> | ||
25 | <array> | ||
26 | <real>0.02</real> | ||
27 | <real>0.02</real> | ||
28 | </array> | ||
29 | <key>InnerAngle</key> | ||
30 | <real>3.1415927410125732421875</real> | ||
31 | <key>LL_PART_BEAM_MASK</key> | ||
32 | <integer>0</integer> | ||
33 | <key>LL_PART_BOUNCE_MASK</key> | ||
34 | <integer>0</integer> | ||
35 | <key>LL_PART_EMISSIVE_MASK</key> | ||
36 | <integer>1</integer> | ||
37 | <key>LL_PART_FOLLOW_SRC_MASK</key> | ||
38 | <integer>0</integer> | ||
39 | <key>LL_PART_FOLLOW_VELOCITY_MASK</key> | ||
40 | <integer>0</integer> | ||
41 | <key>LL_PART_INTERP_COLOR_MASK</key> | ||
42 | <integer>1</integer> | ||
43 | <key>LL_PART_INTERP_SCALE_MASK</key> | ||
44 | <integer>1</integer> | ||
45 | <key>LL_PART_SRC_PATTERN_ANGLE</key> | ||
46 | <integer>0</integer> | ||
47 | <key>LL_PART_SRC_PATTERN_ANGLE_CONE</key> | ||
48 | <integer>1</integer> | ||
49 | <key>LL_PART_SRC_PATTERN_ANGLE_CONE_EMPTY</key> | ||
50 | <integer>0</integer> | ||
51 | <key>LL_PART_SRC_PATTERN_DROP</key> | ||
52 | <integer>0</integer> | ||
53 | <key>LL_PART_SRC_PATTERN_EXPLODE</key> | ||
54 | <integer>0</integer> | ||
55 | <key>LL_PART_TARGET_LINEAR_MASK</key> | ||
56 | <integer>0</integer> | ||
57 | <key>LL_PART_TARGET_POS_MASK</key> | ||
58 | <integer>1</integer> | ||
59 | <key>LL_PART_WIND_MASK</key> | ||
60 | <integer>0</integer> | ||
61 | <key>OuterAngle</key> | ||
62 | <real>0</real> | ||
63 | <key>PartImageID</key> | ||
64 | <string>0000000000000-0000-0000-000000000000</string> | ||
65 | <key>ParticleMaxAge</key> | ||
66 | <real>0</real> | ||
67 | <key>ParticleStartAge</key> | ||
68 | <real>0</real> | ||
69 | <key>SourceMaxage</key> | ||
70 | <real>4</real> | ||
71 | <key>Startcolor</key> | ||
72 | <array> | ||
73 | <real>0.9</real> | ||
74 | <real>0.0</real> | ||
75 | <real>0.8</real> | ||
76 | <real>0.7</real> | ||
77 | </array> | ||
78 | <key>Startscale</key> | ||
79 | <array> | ||
80 | <real>0.8</real> | ||
81 | <real>0.8</real> | ||
82 | </array> | ||
83 | <key>TargetId</key> | ||
84 | <string>00000000-0000-0000-0000-000000000000</string> | ||
85 | <key>BurstSpeedMin</key> | ||
86 | <real>0.1</real> | ||
87 | </map> | ||
88 | </llsd> | ||
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml index c94fc51..353ae72 100644 --- a/linden/indra/newview/app_settings/logcontrol.xml +++ b/linden/indra/newview/app_settings/logcontrol.xml | |||
@@ -1,7 +1,7 @@ | |||
1 | <llsd> | 1 | <llsd> |
2 | <map> | 2 | <map> |
3 | <!-- default-level can be ALL, DEBUG, INFO, WARN, ERROR, or NONE --> | 3 | <!-- default-level can be ALL, DEBUG, INFO, WARN, ERROR, or NONE --> |
4 | <key>default-level</key> <string>INFO</string> | 4 | <key>default-level</key> <string>WARN</string> |
5 | <key>print-location</key> <boolean>false</boolean> | 5 | <key>print-location</key> <boolean>false</boolean> |
6 | <key>settings</key> | 6 | <key>settings</key> |
7 | <array> | 7 | <array> |
@@ -29,7 +29,7 @@ | |||
29 | </array> | 29 | </array> |
30 | </map> | 30 | </map> |
31 | <map> | 31 | <map> |
32 | <key>level</key><string>DEBUG</string> | 32 | <key>level</key><string>WARN</string> |
33 | <key>functions</key> | 33 | <key>functions</key> |
34 | <array> | 34 | <array> |
35 | </array> | 35 | </array> |
@@ -66,7 +66,15 @@ | |||
66 | 66 | ||
67 | <!--<string>Messaging</string>--> | 67 | <!--<string>Messaging</string>--> |
68 | <!--<string>Notifications</string>--> | 68 | <!--<string>Notifications</string>--> |
69 | <!--<string>Plugin</string>--> | 69 | <string>Plugin</string> |
70 | <string>PluginClassMedia</string> | ||
71 | <string>PluginInstance</string> | ||
72 | <string>PluginPipe</string> | ||
73 | <string>PluginChild</string> | ||
74 | <!--<string>PluginSpam</string>--> | ||
75 | <string>PluginParent</string> | ||
76 | <string>PluginViewerMedia</string> | ||
77 | |||
70 | <!--<string>Radar</string>--> | 78 | <!--<string>Radar</string>--> |
71 | <!--<string>ShaderLoading</string>--> | 79 | <!--<string>ShaderLoading</string>--> |
72 | 80 | ||
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 24f4d9a..85574e6 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -419,6 +419,42 @@ | |||
419 | <key>Value</key> | 419 | <key>Value</key> |
420 | <integer>0</integer> | 420 | <integer>0</integer> |
421 | </map> | 421 | </map> |
422 | |||
423 | <!-- Display Names --> | ||
424 | <key>DisplayNamesUsage</key> | ||
425 | <map> | ||
426 | <key>Comment</key> | ||
427 | <string>Usage type for display names: 0 = Legacy name only, 1 = display name only (legacy name when absent), 2 = Display name with legacy name</string> | ||
428 | <key>Persist</key> | ||
429 | <integer>1</integer> | ||
430 | <key>Type</key> | ||
431 | <string>U32</string> | ||
432 | <key>Value</key> | ||
433 | <integer>2</integer> | ||
434 | </map> | ||
435 | <key>OmitResidentAsLastName</key> | ||
436 | <map> | ||
437 | <key>Comment</key> | ||
438 | <string>Do not display "Resident" as the last name for new residents in their legacy name</string> | ||
439 | <key>Persist</key> | ||
440 | <integer>1</integer> | ||
441 | <key>Type</key> | ||
442 | <string>Boolean</string> | ||
443 | <key>Value</key> | ||
444 | <integer>1</integer> | ||
445 | </map> | ||
446 | <key>LegacyNamesForFriends</key> | ||
447 | <map> | ||
448 | <key>Comment</key> | ||
449 | <string>When TRUE, forces the use of the legacy names for the friends list and online notifications</string> | ||
450 | <key>Persist</key> | ||
451 | <integer>1</integer> | ||
452 | <key>Type</key> | ||
453 | <string>Boolean</string> | ||
454 | <key>Value</key> | ||
455 | <integer>1</integer> | ||
456 | </map> | ||
457 | |||
422 | <key>EmeraldTemporaryUpload</key> | 458 | <key>EmeraldTemporaryUpload</key> |
423 | <map> | 459 | <map> |
424 | <key>Comment</key> | 460 | <key>Comment</key> |
@@ -1330,6 +1366,17 @@ | |||
1330 | <key>Value</key> | 1366 | <key>Value</key> |
1331 | <integer>1</integer> | 1367 | <integer>1</integer> |
1332 | </map> | 1368 | </map> |
1369 | <key>WarnFirstPrivacy</key> | ||
1370 | <map> | ||
1371 | <key>Comment</key> | ||
1372 | <string>Enables FirstPrivacy warning on login</string> | ||
1373 | <key>Persist</key> | ||
1374 | <integer>1</integer> | ||
1375 | <key>Type</key> | ||
1376 | <string>Boolean</string> | ||
1377 | <key>Value</key> | ||
1378 | <integer>1</integer> | ||
1379 | </map> | ||
1333 | <key>WarnFirstVoiceLicense</key> | 1380 | <key>WarnFirstVoiceLicense</key> |
1334 | <map> | 1381 | <map> |
1335 | <key>Comment</key> | 1382 | <key>Comment</key> |
diff --git a/linden/indra/newview/chatbar_as_cmdline.cpp b/linden/indra/newview/chatbar_as_cmdline.cpp index 0593091..b5a7e8c 100644 --- a/linden/indra/newview/chatbar_as_cmdline.cpp +++ b/linden/indra/newview/chatbar_as_cmdline.cpp | |||
@@ -69,7 +69,7 @@ | |||
69 | #include "llviewerparcelmgr.h" | 69 | #include "llviewerparcelmgr.h" |
70 | #include "llviewerparcelmedia.h" | 70 | #include "llviewerparcelmedia.h" |
71 | #include "llparcel.h" | 71 | #include "llparcel.h" |
72 | #include "llaudioengine.h" | 72 | #include "kokuastreamingaudio.h" |
73 | #include "llviewerparcelmediaautoplay.h" | 73 | #include "llviewerparcelmediaautoplay.h" |
74 | #include "lloverlaybar.h" | 74 | #include "lloverlaybar.h" |
75 | #include "lggautocorrectfloater.h" | 75 | #include "lggautocorrectfloater.h" |
@@ -367,7 +367,7 @@ bool cmd_line_chat(std::string revised_text, EChatType type) | |||
367 | { | 367 | { |
368 | gOverlayBar->toggleMusicPlay(gOverlayBar); | 368 | gOverlayBar->toggleMusicPlay(gOverlayBar); |
369 | } | 369 | } |
370 | gAudiop->startInternetStream(status); | 370 | gAudioStream->startInternetStream(status); |
371 | return false; | 371 | return false; |
372 | } | 372 | } |
373 | } | 373 | } |
diff --git a/linden/indra/newview/kokuastreamingaudio.cpp b/linden/indra/newview/kokuastreamingaudio.cpp new file mode 100644 index 0000000..ed606db --- /dev/null +++ b/linden/indra/newview/kokuastreamingaudio.cpp | |||
@@ -0,0 +1,129 @@ | |||
1 | /** | ||
2 | * @file kokuastreamingaudio.cpp | ||
3 | * @brief Definition of KOKUAStreamingAudio base class for streaming audio support | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2011&license=viewergpl$ | ||
6 | * Kokua Viewer Source Code | ||
7 | * Copyright (C) 2011, Armin.Weatherwax (at) googlemail.com | ||
8 | * for the Kokua Viewer Team, in special for our Imprudence Viewer. | ||
9 | * | ||
10 | * The source code in this file ("Source Code") is provided by the author | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in this | ||
13 | * distribution, or online at | ||
14 | * http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
15 | * | ||
16 | * There are special exceptions to the terms and conditions of the GPL as | ||
17 | * it is applied to this Source Code. View the full text of the exception | ||
18 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
19 | * online at | ||
20 | * http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * THIS SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * | ||
30 | * $/LicenseInfo$ | ||
31 | */ | ||
32 | |||
33 | #include "kokuastreamingaudio.h" | ||
34 | #include "llstreamingaudio.h" | ||
35 | |||
36 | |||
37 | KOKUAStreamingAudio* gAudioStream = NULL; | ||
38 | |||
39 | KOKUAStreamingAudio::KOKUAStreamingAudio(LLStreamingAudioInterface *impl) : | ||
40 | mStreamingAudioImpl (impl) | ||
41 | { | ||
42 | |||
43 | } | ||
44 | |||
45 | KOKUAStreamingAudio::~KOKUAStreamingAudio() | ||
46 | { | ||
47 | if (mStreamingAudioImpl) | ||
48 | { | ||
49 | delete mStreamingAudioImpl; | ||
50 | mStreamingAudioImpl = NULL; | ||
51 | } | ||
52 | } | ||
53 | |||
54 | LLStreamingAudioInterface* KOKUAStreamingAudio::getStreamingAudioImpl() | ||
55 | { | ||
56 | return mStreamingAudioImpl; | ||
57 | } | ||
58 | |||
59 | // void KOKUAStreamingAudio::setStreamingAudioImpl(LLStreamingAudioInterface *impl) | ||
60 | // { | ||
61 | // mStreamingAudioImpl = impl; | ||
62 | // } | ||
63 | |||
64 | // virtual | ||
65 | void KOKUAStreamingAudio::startInternetStream(const std::string& url) | ||
66 | { | ||
67 | if (mStreamingAudioImpl) | ||
68 | mStreamingAudioImpl->start(url); | ||
69 | } | ||
70 | |||
71 | // virtual | ||
72 | void KOKUAStreamingAudio::stopInternetStream() | ||
73 | { | ||
74 | if (mStreamingAudioImpl) | ||
75 | mStreamingAudioImpl->stop(); | ||
76 | } | ||
77 | |||
78 | // virtual | ||
79 | void KOKUAStreamingAudio::pauseInternetStream(int pause) | ||
80 | { | ||
81 | if (mStreamingAudioImpl) | ||
82 | mStreamingAudioImpl->pause(pause); | ||
83 | } | ||
84 | |||
85 | // virtual | ||
86 | void KOKUAStreamingAudio::updateInternetStream() | ||
87 | { | ||
88 | if (mStreamingAudioImpl) | ||
89 | mStreamingAudioImpl->update(); | ||
90 | } | ||
91 | |||
92 | // virtual | ||
93 | KOKUAStreamingAudio::KOKUAAudioPlayState KOKUAStreamingAudio::isInternetStreamPlaying() | ||
94 | { | ||
95 | if (mStreamingAudioImpl) | ||
96 | return (KOKUAStreamingAudio::KOKUAAudioPlayState) mStreamingAudioImpl->isPlaying(); | ||
97 | |||
98 | return KOKUAStreamingAudio::AUDIO_STOPPED; // Stopped | ||
99 | } | ||
100 | |||
101 | // virtual | ||
102 | void KOKUAStreamingAudio::setInternetStreamGain(F32 vol) | ||
103 | { | ||
104 | if (mStreamingAudioImpl) | ||
105 | mStreamingAudioImpl->setGain(vol); | ||
106 | } | ||
107 | |||
108 | F32 KOKUAStreamingAudio::getInternetStreamGain() | ||
109 | { | ||
110 | if (mStreamingAudioImpl) | ||
111 | return mStreamingAudioImpl->getGain(); | ||
112 | else | ||
113 | return 1.0f; | ||
114 | } | ||
115 | |||
116 | // virtual | ||
117 | std::string KOKUAStreamingAudio::getInternetStreamURL() | ||
118 | { | ||
119 | if (mStreamingAudioImpl) | ||
120 | return mStreamingAudioImpl->getURL(); | ||
121 | else return std::string(); | ||
122 | } | ||
123 | |||
124 | std::string KOKUAStreamingAudio::getVersion() | ||
125 | { | ||
126 | if (mStreamingAudioImpl) | ||
127 | return mStreamingAudioImpl->getVersion(); | ||
128 | else return std::string(); | ||
129 | } \ No newline at end of file | ||
diff --git a/linden/indra/newview/kokuastreamingaudio.h b/linden/indra/newview/kokuastreamingaudio.h new file mode 100644 index 0000000..eb49f25 --- /dev/null +++ b/linden/indra/newview/kokuastreamingaudio.h | |||
@@ -0,0 +1,71 @@ | |||
1 | /** | ||
2 | * @file kokuastreamingaudio.h | ||
3 | * @brief Definition of KOKUAStreamingAudio base class for streaming audio support | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2011&license=viewergpl$ | ||
6 | * Kokua Viewer Source Code | ||
7 | * Copyright (C) 2011, Armin.Weatherwax (at) googlemail.com | ||
8 | * for the Kokua Viewer Team. | ||
9 | * | ||
10 | * The source code in this file ("Source Code") is provided by the author | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in this | ||
13 | * distribution, or online at | ||
14 | * http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
15 | * | ||
16 | * There are special exceptions to the terms and conditions of the GPL as | ||
17 | * it is applied to this Source Code. View the full text of the exception | ||
18 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
19 | * online at | ||
20 | * http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * THIS SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * | ||
30 | * $/LicenseInfo$ | ||
31 | */ | ||
32 | #ifndef KOKUA_STREAMINGAUDIO_H | ||
33 | #define KOKUA_STREAMINGAUDIO_H | ||
34 | |||
35 | #include "linden_common.h" | ||
36 | |||
37 | class LLStreamingAudioInterface; | ||
38 | |||
39 | class KOKUAStreamingAudio | ||
40 | { | ||
41 | public: | ||
42 | enum KOKUAAudioPlayState | ||
43 | { | ||
44 | // isInternetStreamPlaying() returns an *int*, with | ||
45 | // 0 = stopped, 1 = playing, 2 = paused. | ||
46 | AUDIO_STOPPED = 0, | ||
47 | AUDIO_PLAYING = 1, | ||
48 | AUDIO_PAUSED = 2 | ||
49 | }; | ||
50 | |||
51 | KOKUAStreamingAudio(LLStreamingAudioInterface *impl); | ||
52 | virtual ~KOKUAStreamingAudio(); | ||
53 | |||
54 | LLStreamingAudioInterface *getStreamingAudioImpl(); | ||
55 | // void setStreamingAudioImpl(LLStreamingAudioInterface *impl); | ||
56 | void startInternetStream(const std::string& url); | ||
57 | void stopInternetStream(); | ||
58 | void pauseInternetStream(int pause); | ||
59 | void updateInternetStream(); | ||
60 | KOKUAAudioPlayState isInternetStreamPlaying(); | ||
61 | void setInternetStreamGain(F32 vol); | ||
62 | F32 getInternetStreamGain(); | ||
63 | std::string getInternetStreamURL(); | ||
64 | std::string getVersion(); | ||
65 | private: | ||
66 | LLStreamingAudioInterface *mStreamingAudioImpl; | ||
67 | }; | ||
68 | |||
69 | extern KOKUAStreamingAudio* gAudioStream; | ||
70 | |||
71 | #endif | ||
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 5a1700a..515d588 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp | |||
@@ -7488,7 +7488,7 @@ void LLAgent::sendAgentSetAppearance() | |||
7488 | param; | 7488 | param; |
7489 | param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) | 7489 | param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) |
7490 | { | 7490 | { |
7491 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 7491 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) // do not transmit params of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT |
7492 | { | 7492 | { |
7493 | msg->nextBlockFast(_PREHASH_VisualParam ); | 7493 | msg->nextBlockFast(_PREHASH_VisualParam ); |
7494 | 7494 | ||
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index d7b6814..5826041 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp | |||
@@ -104,6 +104,7 @@ | |||
104 | #include "llassetstorage.h" | 104 | #include "llassetstorage.h" |
105 | #include "llpolymesh.h" | 105 | #include "llpolymesh.h" |
106 | #include "llcachename.h" | 106 | #include "llcachename.h" |
107 | #include "kokuastreamingaudio.h" | ||
107 | #include "llaudioengine.h" | 108 | #include "llaudioengine.h" |
108 | #include "llstreamingaudio.h" | 109 | #include "llstreamingaudio.h" |
109 | #include "llviewermenu.h" | 110 | #include "llviewermenu.h" |
@@ -920,7 +921,7 @@ bool LLAppViewer::mainLoop() | |||
920 | //------------------------------------------- | 921 | //------------------------------------------- |
921 | 922 | ||
922 | // Create IO Pump to use for HTTP Requests. | 923 | // Create IO Pump to use for HTTP Requests. |
923 | gServicePump = new LLPumpIO(gAPRPoolp); | 924 | gServicePump = new LLPumpIO; |
924 | LLHTTPClient::setPump(*gServicePump); | 925 | LLHTTPClient::setPump(*gServicePump); |
925 | LLCurl::setCAFile(gDirUtilp->getCAFile()); | 926 | LLCurl::setCAFile(gDirUtilp->getCAFile()); |
926 | 927 | ||
@@ -1258,6 +1259,7 @@ bool LLAppViewer::cleanup() | |||
1258 | 1259 | ||
1259 | LLPolyMesh::freeAllMeshes(); | 1260 | LLPolyMesh::freeAllMeshes(); |
1260 | 1261 | ||
1262 | LLAvatarNameCache::cleanupClass(); | ||
1261 | delete gCacheName; | 1263 | delete gCacheName; |
1262 | gCacheName = NULL; | 1264 | gCacheName = NULL; |
1263 | 1265 | ||
@@ -1278,14 +1280,16 @@ bool LLAppViewer::cleanup() | |||
1278 | 1280 | ||
1279 | llinfos << "Global stuff deleted" << llendflush; | 1281 | llinfos << "Global stuff deleted" << llendflush; |
1280 | 1282 | ||
1281 | if (gAudiop) | 1283 | if (gAudioStream) |
1282 | { | 1284 | { |
1283 | // shut down the streaming audio sub-subsystem first, in case it relies on not outliving the general audio subsystem. | 1285 | // shut down the streaming audio sub-subsystem first, in case it relies on not outliving the general audio subsystem. |
1284 | 1286 | ||
1285 | LLStreamingAudioInterface *sai = gAudiop->getStreamingAudioImpl(); | 1287 | delete gAudioStream; |
1286 | delete sai; | 1288 | gAudioStream = NULL; |
1287 | gAudiop->setStreamingAudioImpl(NULL); | 1289 | } |
1288 | 1290 | ||
1291 | if (gAudiop) | ||
1292 | { | ||
1289 | // shut down the audio subsystem | 1293 | // shut down the audio subsystem |
1290 | 1294 | ||
1291 | bool want_longname = false; | 1295 | bool want_longname = false; |
@@ -1642,19 +1646,37 @@ bool LLAppViewer::initLogging() | |||
1642 | LLError::initForApplication( | 1646 | LLError::initForApplication( |
1643 | gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "")); | 1647 | gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "")); |
1644 | LLError::setFatalFunction(errorCallback); | 1648 | LLError::setFatalFunction(errorCallback); |
1645 | 1649 | std::string log_name = "meta-impy.log"; | |
1646 | // Remove the last ".old" log file. | ||
1647 | std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | ||
1648 | "meta-impy.old"); | ||
1649 | LLFile::remove(old_log_file); | ||
1650 | 1650 | ||
1651 | // Rename current log file to ".old" | 1651 | const int MAX_ROTATION = 5; |
1652 | std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | 1652 | for(int i = MAX_ROTATION; 0 < i; i--) |
1653 | "meta-impy.log"); | 1653 | { |
1654 | LLFile::rename(log_file, old_log_file); | 1654 | std::ostringstream current; |
1655 | current << "."; | ||
1656 | current << i; | ||
1655 | 1657 | ||
1656 | // Set the log file to Imprudence.log | 1658 | std::ostringstream previous; |
1659 | if( 1 < i ) | ||
1660 | { | ||
1661 | previous << "."; | ||
1662 | previous << i-1; | ||
1663 | } | ||
1664 | |||
1665 | std::string current_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | ||
1666 | log_name + current.str()); | ||
1667 | std::string previous_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | ||
1668 | log_name + previous.str()); | ||
1669 | |||
1670 | if (MAX_ROTATION == i) | ||
1671 | { | ||
1672 | LLFile::remove(current_log_file); | ||
1673 | } | ||
1674 | |||
1675 | LLFile::rename(previous_log_file, current_log_file); | ||
1676 | } | ||
1657 | 1677 | ||
1678 | // Set the log file to Imprudence.log | ||
1679 | std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, log_name); | ||
1658 | LLError::logToFile(log_file); | 1680 | LLError::logToFile(log_file); |
1659 | 1681 | ||
1660 | // *FIX:Mani no error handling here! | 1682 | // *FIX:Mani no error handling here! |
@@ -1861,6 +1883,7 @@ bool LLAppViewer::initConfiguration() | |||
1861 | LLFirstUse::addConfigVariable("FirstVoice"); | 1883 | LLFirstUse::addConfigVariable("FirstVoice"); |
1862 | LLFirstUse::addConfigVariable("FirstMedia"); | 1884 | LLFirstUse::addConfigVariable("FirstMedia"); |
1863 | LLFirstUse::addConfigVariable("FirstLoginScreen"); | 1885 | LLFirstUse::addConfigVariable("FirstLoginScreen"); |
1886 | LLFirstUse::addConfigVariable("FirstPrivacy"); | ||
1864 | 1887 | ||
1865 | // [RLVa:KB] - Checked: RLVa-1.0.3a (2009-09-10) | Added: RLVa-1.0.3a | 1888 | // [RLVa:KB] - Checked: RLVa-1.0.3a (2009-09-10) | Added: RLVa-1.0.3a |
1866 | //LLFirstUse::addConfigVariable(RLV_SETTING_FIRSTUSE_DETACH); | 1889 | //LLFirstUse::addConfigVariable(RLV_SETTING_FIRSTUSE_DETACH); |
@@ -3296,6 +3319,14 @@ void LLAppViewer::saveFinalSnapshot() | |||
3296 | 3319 | ||
3297 | void LLAppViewer::loadNameCache() | 3320 | void LLAppViewer::loadNameCache() |
3298 | { | 3321 | { |
3322 | // display names cache | ||
3323 | std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "avatar_name_cache.xml"); | ||
3324 | llifstream name_cache_stream(filename); | ||
3325 | if (name_cache_stream.is_open()) | ||
3326 | { | ||
3327 | LLAvatarNameCache::importFile(name_cache_stream); | ||
3328 | } | ||
3329 | |||
3299 | if (!gCacheName) return; | 3330 | if (!gCacheName) return; |
3300 | 3331 | ||
3301 | std::string name_cache; | 3332 | std::string name_cache; |
@@ -3318,6 +3349,14 @@ void LLAppViewer::loadNameCache() | |||
3318 | 3349 | ||
3319 | void LLAppViewer::saveNameCache() | 3350 | void LLAppViewer::saveNameCache() |
3320 | { | 3351 | { |
3352 | // display names cache | ||
3353 | std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "avatar_name_cache.xml"); | ||
3354 | llofstream name_cache_stream(filename); | ||
3355 | if (name_cache_stream.is_open()) | ||
3356 | { | ||
3357 | LLAvatarNameCache::exportFile(name_cache_stream); | ||
3358 | } | ||
3359 | |||
3321 | if (!gCacheName) return; | 3360 | if (!gCacheName) return; |
3322 | 3361 | ||
3323 | std::string name_cache; | 3362 | std::string name_cache; |
@@ -3469,18 +3508,22 @@ void LLAppViewer::idle() | |||
3469 | // Initialize the viewer_stats_timer with an already elapsed time | 3508 | // Initialize the viewer_stats_timer with an already elapsed time |
3470 | // of SEND_STATS_PERIOD so that the initial stats report will | 3509 | // of SEND_STATS_PERIOD so that the initial stats report will |
3471 | // be sent immediately. | 3510 | // be sent immediately. |
3472 | static LLFrameStatsTimer viewer_stats_timer(SEND_STATS_PERIOD); | 3511 | if(!gDisconnected && gHippoGridManager->getConnectedGrid()->isSecondLife()) |
3473 | reset_statistics(); | ||
3474 | |||
3475 | // Update session stats every large chunk of time | ||
3476 | // *FIX: (???) SAMANTHA | ||
3477 | /* or don't! part of a larger effort to waste less CPU cycles. -Patrick Sapinski (Sunday, November 29, 2009) | ||
3478 | if (viewer_stats_timer.getElapsedTimeF32() >= SEND_STATS_PERIOD && !gDisconnected) | ||
3479 | { | 3512 | { |
3480 | llinfos << "Transmitting sessions stats" << llendl; | 3513 | static LLFrameStatsTimer viewer_stats_timer(SEND_STATS_PERIOD); |
3481 | send_stats(); | 3514 | reset_statistics(); |
3482 | viewer_stats_timer.reset(); | 3515 | |
3483 | } */ | 3516 | // Update session stats every large chunk of time |
3517 | // *FIX: (???) SAMANTHA | ||
3518 | |||
3519 | /* or don't! part of a larger effort to waste less CPU cycles. -Patrick Sapinski (Sunday, November 29, 2009)*/ | ||
3520 | if (viewer_stats_timer.getElapsedTimeF32() >= SEND_STATS_PERIOD ) | ||
3521 | { | ||
3522 | llinfos << "Transmitting sessions stats" << llendl; | ||
3523 | send_stats(); | ||
3524 | viewer_stats_timer.reset(); | ||
3525 | } | ||
3526 | } | ||
3484 | 3527 | ||
3485 | // Print the object debugging stats | 3528 | // Print the object debugging stats |
3486 | static LLFrameTimer object_debug_timer; | 3529 | static LLFrameTimer object_debug_timer; |
@@ -3518,6 +3561,8 @@ void LLAppViewer::idle() | |||
3518 | // floating throughout the various object lists. | 3561 | // floating throughout the various object lists. |
3519 | // | 3562 | // |
3520 | 3563 | ||
3564 | idleNameCache(); | ||
3565 | |||
3521 | gFrameStats.start(LLFrameStats::IDLE_NETWORK); | 3566 | gFrameStats.start(LLFrameStats::IDLE_NETWORK); |
3522 | stop_glerror(); | 3567 | stop_glerror(); |
3523 | idleNetwork(); | 3568 | idleNetwork(); |
@@ -3732,6 +3777,10 @@ void LLAppViewer::idle() | |||
3732 | const F32 max_audio_decode_time = 0.002f; // 2 ms decode time | 3777 | const F32 max_audio_decode_time = 0.002f; // 2 ms decode time |
3733 | gAudiop->idle(max_audio_decode_time); | 3778 | gAudiop->idle(max_audio_decode_time); |
3734 | } | 3779 | } |
3780 | |||
3781 | // update streaming audio | ||
3782 | if (gAudioStream) | ||
3783 | gAudioStream->updateInternetStream(); | ||
3735 | } | 3784 | } |
3736 | 3785 | ||
3737 | 3786 | ||
@@ -3895,6 +3944,60 @@ void LLAppViewer::sendLogoutRequest() | |||
3895 | } | 3944 | } |
3896 | } | 3945 | } |
3897 | 3946 | ||
3947 | void LLAppViewer::idleNameCache() | ||
3948 | { | ||
3949 | // Neither old nor new name cache can function before agent has a region | ||
3950 | LLViewerRegion* region = gAgent.getRegion(); | ||
3951 | if (!region) return; | ||
3952 | |||
3953 | // deal with any queued name requests and replies. | ||
3954 | gCacheName->processPending(); | ||
3955 | |||
3956 | // Can't run the new cache until we have the list of capabilities | ||
3957 | // for the agent region, and can therefore decide whether to use | ||
3958 | // display names or fall back to the old name system. | ||
3959 | if (!region->capabilitiesReceived()) return; | ||
3960 | |||
3961 | // Agent may have moved to a different region, so need to update cap URL | ||
3962 | // for name lookups. Can't do this in the cap grant code, as caps are | ||
3963 | // granted to neighbor regions before the main agent gets there. Can't | ||
3964 | // do it in the move-into-region code because cap not guaranteed to be | ||
3965 | // granted yet, for example on teleport. | ||
3966 | bool had_capability = LLAvatarNameCache::hasNameLookupURL(); | ||
3967 | std::string name_lookup_url; | ||
3968 | name_lookup_url.reserve(128); // avoid a memory allocation below | ||
3969 | name_lookup_url = region->getCapability("GetDisplayNames"); | ||
3970 | bool have_capability = !name_lookup_url.empty(); | ||
3971 | if (have_capability) | ||
3972 | { | ||
3973 | // we have support for display names, use it | ||
3974 | U32 url_size = name_lookup_url.size(); | ||
3975 | // capabilities require URLs with slashes before query params: | ||
3976 | // https://<host>:<port>/cap/<uuid>/?ids=<blah> | ||
3977 | // but the caps are granted like: | ||
3978 | // https://<host>:<port>/cap/<uuid> | ||
3979 | if (url_size > 0 && name_lookup_url[url_size-1] != '/') | ||
3980 | { | ||
3981 | name_lookup_url += '/'; | ||
3982 | } | ||
3983 | LLAvatarNameCache::setNameLookupURL(name_lookup_url); | ||
3984 | } | ||
3985 | else | ||
3986 | { | ||
3987 | // Display names not available on this region | ||
3988 | LLAvatarNameCache::setNameLookupURL( std::string() ); | ||
3989 | } | ||
3990 | |||
3991 | // Error recovery - did we change state? | ||
3992 | if (had_capability != have_capability) | ||
3993 | { | ||
3994 | // name tags are persistant on screen, so make sure they refresh | ||
3995 | LLVOAvatar::invalidateNameTags(); | ||
3996 | } | ||
3997 | |||
3998 | LLAvatarNameCache::idle(); | ||
3999 | } | ||
4000 | |||
3898 | // | 4001 | // |
3899 | // Handle messages, and all message related stuff | 4002 | // Handle messages, and all message related stuff |
3900 | // | 4003 | // |
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h index 7c9fe89..522050a 100644 --- a/linden/indra/newview/llappviewer.h +++ b/linden/indra/newview/llappviewer.h | |||
@@ -192,6 +192,7 @@ private: | |||
192 | 192 | ||
193 | void idle(); | 193 | void idle(); |
194 | void idleShutdown(); | 194 | void idleShutdown(); |
195 | void idleNameCache(); | ||
195 | void idleNetwork(); | 196 | void idleNetwork(); |
196 | 197 | ||
197 | void sendLogoutRequest(); | 198 | void sendLogoutRequest(); |
diff --git a/linden/indra/newview/llappviewerlinux.cpp b/linden/indra/newview/llappviewerlinux.cpp index 307f925..88ddf7e 100644 --- a/linden/indra/newview/llappviewerlinux.cpp +++ b/linden/indra/newview/llappviewerlinux.cpp | |||
@@ -129,6 +129,7 @@ int main( int argc, char **argv ) | |||
129 | } | 129 | } |
130 | delete viewer_app_ptr; | 130 | delete viewer_app_ptr; |
131 | viewer_app_ptr = NULL; | 131 | viewer_app_ptr = NULL; |
132 | |||
132 | return 0; | 133 | return 0; |
133 | } | 134 | } |
134 | 135 | ||
diff --git a/linden/indra/newview/llappviewermacosx.cpp b/linden/indra/newview/llappviewermacosx.cpp index 91de066..d81b6e3 100644 --- a/linden/indra/newview/llappviewermacosx.cpp +++ b/linden/indra/newview/llappviewermacosx.cpp | |||
@@ -119,6 +119,7 @@ int main( int argc, char **argv ) | |||
119 | } | 119 | } |
120 | delete viewer_app_ptr; | 120 | delete viewer_app_ptr; |
121 | viewer_app_ptr = NULL; | 121 | viewer_app_ptr = NULL; |
122 | |||
122 | return 0; | 123 | return 0; |
123 | } | 124 | } |
124 | 125 | ||
diff --git a/linden/indra/newview/llappviewerwin32.cpp b/linden/indra/newview/llappviewerwin32.cpp index 0fc273e..6f67c3f 100644 --- a/linden/indra/newview/llappviewerwin32.cpp +++ b/linden/indra/newview/llappviewerwin32.cpp | |||
@@ -78,31 +78,6 @@ extern "C" { | |||
78 | #endif | 78 | #endif |
79 | #endif | 79 | #endif |
80 | 80 | ||
81 | // Force Imprudence to link against the correct boost libraries -- McCabe | ||
82 | #if defined(_MSC_VER) | ||
83 | #if _MSC_VER >= 1500 | ||
84 | #ifdef LL_DEBUG | ||
85 | #pragma comment( lib, "libboost_signals-vc90-mt-gd-1_36.lib" ) | ||
86 | #pragma comment( lib, "libboost_regex-vc90-mt-gd-1_36.lib" ) | ||
87 | #pragma comment( lib, "libboost_program_options-vc90-mt-gd-1_36.lib" ) | ||
88 | #else | ||
89 | #pragma comment( lib, "libboost_signals-vc90-mt-1_36.lib" ) | ||
90 | #pragma comment( lib, "libboost_regex-vc90-mt-1_36.lib" ) | ||
91 | #pragma comment( lib, "libboost_program_options-vc90-mt-1_36.lib" ) | ||
92 | #endif | ||
93 | #elif _MSC_VER >= 1400 | ||
94 | #ifdef LL_DEBUG | ||
95 | #pragma comment( lib, "libboost_signals-vc80-mt-gd-1_36.lib" ) | ||
96 | #pragma comment( lib, "libboost_regex-vc80-mt-gd-1_36.lib" ) | ||
97 | #pragma comment( lib, "libboost_program_options-vc80-mt-gd-1_36.lib" ) | ||
98 | #else | ||
99 | #pragma comment( lib, "libboost_signals-vc80-mt-1_36.lib" ) | ||
100 | #pragma comment( lib, "libboost_regex-vc80-mt-1_36.lib" ) | ||
101 | #pragma comment( lib, "libboost_program_options-vc80-mt-1_36.lib" ) | ||
102 | #endif | ||
103 | #endif | ||
104 | #endif | ||
105 | |||
106 | const std::string LLAppViewerWin32::sWindowClass = "meta-impy"; | 81 | const std::string LLAppViewerWin32::sWindowClass = "meta-impy"; |
107 | 82 | ||
108 | LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop) | 83 | LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop) |
diff --git a/linden/indra/newview/llcallingcard.cpp b/linden/indra/newview/llcallingcard.cpp index 15be0eb..f1328be 100644 --- a/linden/indra/newview/llcallingcard.cpp +++ b/linden/indra/newview/llcallingcard.cpp | |||
@@ -613,6 +613,25 @@ void LLAvatarTracker::processChange(LLMessageSystem* msg) | |||
613 | LLSD args; | 613 | LLSD args; |
614 | if(gCacheName->getName(agent_id, first, last)) | 614 | if(gCacheName->getName(agent_id, first, last)) |
615 | { | 615 | { |
616 | if (LLAvatarNameCache::useDisplayNames() && !gSavedSettings.getBOOL("LegacyNamesForFriends")) | ||
617 | { | ||
618 | LLAvatarName avatar_name; | ||
619 | if (LLAvatarNameCache::get(agent_id, &avatar_name)) | ||
620 | { | ||
621 | // Always show "Display Name [Legacy Name]" for security reasons | ||
622 | first = avatar_name.getNames(); | ||
623 | size_t i = first.find(" "); | ||
624 | if (i != std::string::npos) | ||
625 | { | ||
626 | last = first.substr(i + 1); | ||
627 | first = first.substr(0, i); | ||
628 | } | ||
629 | else | ||
630 | { | ||
631 | last = ""; | ||
632 | } | ||
633 | } | ||
634 | } | ||
616 | args["FIRST_NAME"] = first; | 635 | args["FIRST_NAME"] = first; |
617 | args["LAST_NAME"] = last; | 636 | args["LAST_NAME"] = last; |
618 | } | 637 | } |
@@ -669,6 +688,31 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online) | |||
669 | std::string first, last; | 688 | std::string first, last; |
670 | if(gCacheName->getName(agent_id, first, last)) | 689 | if(gCacheName->getName(agent_id, first, last)) |
671 | { | 690 | { |
691 | if (LLAvatarNameCache::useDisplayNames() && !gSavedSettings.getBOOL("LegacyNamesForFriends")) | ||
692 | { | ||
693 | LLAvatarName avatar_name; | ||
694 | if (LLAvatarNameCache::get(agent_id, &avatar_name)) | ||
695 | { | ||
696 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
697 | { | ||
698 | first = avatar_name.mDisplayName; | ||
699 | } | ||
700 | else | ||
701 | { | ||
702 | first = avatar_name.getNames(); | ||
703 | } | ||
704 | size_t i = first.find(" "); | ||
705 | if (i != std::string::npos) | ||
706 | { | ||
707 | last = first.substr(i + 1); | ||
708 | first = first.substr(0, i); | ||
709 | } | ||
710 | else | ||
711 | { | ||
712 | last = ""; | ||
713 | } | ||
714 | } | ||
715 | } | ||
672 | notify = TRUE; | 716 | notify = TRUE; |
673 | args["FIRST"] = first; | 717 | args["FIRST"] = first; |
674 | args["LAST"] = last; | 718 | args["LAST"] = last; |
@@ -745,6 +789,12 @@ void LLAvatarTracker::processTerminateFriendship(LLMessageSystem* msg, void**) | |||
745 | } | 789 | } |
746 | } | 790 | } |
747 | 791 | ||
792 | void LLAvatarTracker::dirtyBuddies() | ||
793 | { | ||
794 | mModifyMask |= LLFriendObserver::REMOVE | LLFriendObserver::ADD; | ||
795 | notifyObservers(); | ||
796 | } | ||
797 | |||
748 | ///---------------------------------------------------------------------------- | 798 | ///---------------------------------------------------------------------------- |
749 | /// Tracking Data | 799 | /// Tracking Data |
750 | ///---------------------------------------------------------------------------- | 800 | ///---------------------------------------------------------------------------- |
diff --git a/linden/indra/newview/llcallingcard.h b/linden/indra/newview/llcallingcard.h index d3f53c6..d5496ae 100644 --- a/linden/indra/newview/llcallingcard.h +++ b/linden/indra/newview/llcallingcard.h | |||
@@ -122,6 +122,9 @@ public: | |||
122 | // deal with termination of friendhsip | 122 | // deal with termination of friendhsip |
123 | void terminateBuddy(const LLUUID& id); | 123 | void terminateBuddy(const LLUUID& id); |
124 | 124 | ||
125 | // flag the buddy list dirty to force an update | ||
126 | void dirtyBuddies(); | ||
127 | |||
125 | // get full info | 128 | // get full info |
126 | const LLRelationship* getBuddyInfo(const LLUUID& id) const; | 129 | const LLRelationship* getBuddyInfo(const LLUUID& id) const; |
127 | 130 | ||
diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp index a59fa06..ec4e294 100644 --- a/linden/indra/newview/llfilepicker.cpp +++ b/linden/indra/newview/llfilepicker.cpp | |||
@@ -1181,7 +1181,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename | |||
1181 | break; | 1181 | break; |
1182 | case FFSAVE_RAW: | 1182 | case FFSAVE_RAW: |
1183 | caption += add_simple_pattern_filter_to_gtkchooser | 1183 | caption += add_simple_pattern_filter_to_gtkchooser |
1184 | (picker, "*.raw", LLTrans::getString("dot_raw_file") + " (*.raw)"); | 1184 | (picker, "*.raw", LLTrans::getString("raw_file") + " (*.raw)"); |
1185 | suggest_ext = ".raw"; | 1185 | suggest_ext = ".raw"; |
1186 | break; | 1186 | break; |
1187 | case FFSAVE_J2C: | 1187 | case FFSAVE_J2C: |
diff --git a/linden/indra/newview/llfirstuse.cpp b/linden/indra/newview/llfirstuse.cpp index 18efa9e..f482d1c 100644 --- a/linden/indra/newview/llfirstuse.cpp +++ b/linden/indra/newview/llfirstuse.cpp | |||
@@ -390,3 +390,31 @@ void LLFirstUse::voiceLicenseAgreement() | |||
390 | LLStartUp::setStartupState(STATE_LOGIN_AUTH_INIT); | 390 | LLStartUp::setStartupState(STATE_LOGIN_AUTH_INIT); |
391 | } | 391 | } |
392 | } | 392 | } |
393 | |||
394 | void LLFirstUse::callbackPrivacy(const LLSD& notification, const LLSD& response) | ||
395 | { | ||
396 | |||
397 | S32 option = LLNotification::getSelectedOption(notification, response); | ||
398 | if ( 0 == option ) | ||
399 | { | ||
400 | gSavedSettings.setWarning("FirstPrivacy", FALSE); | ||
401 | LLStartUp::setStartupState(STATE_PRIVACY_LECTURED); | ||
402 | } | ||
403 | if ( 1 == option ) | ||
404 | { | ||
405 | LLStartUp::resetLogin(); | ||
406 | } | ||
407 | } | ||
408 | |||
409 | // static | ||
410 | void LLFirstUse::Privacy() | ||
411 | { | ||
412 | if (gSavedSettings.getWarning("FirstPrivacy")) | ||
413 | { | ||
414 | LLNotifications::instance().add("FirstPrivacy", LLSD(), LLSD(), callbackPrivacy); | ||
415 | } | ||
416 | else | ||
417 | { | ||
418 | LLStartUp::setStartupState(STATE_PRIVACY_LECTURED); | ||
419 | } | ||
420 | } \ No newline at end of file | ||
diff --git a/linden/indra/newview/llfirstuse.h b/linden/indra/newview/llfirstuse.h index 42443ff..8c2ca35 100644 --- a/linden/indra/newview/llfirstuse.h +++ b/linden/indra/newview/llfirstuse.h | |||
@@ -116,7 +116,8 @@ public: | |||
116 | static void callbackClientTags(const LLSD& notification, const LLSD& response); | 116 | static void callbackClientTags(const LLSD& notification, const LLSD& response); |
117 | static void ClientTags(); | 117 | static void ClientTags(); |
118 | static void voiceLicenseAgreement(); | 118 | static void voiceLicenseAgreement(); |
119 | 119 | static void callbackPrivacy(const LLSD& notification, const LLSD& response); | |
120 | static void Privacy(); | ||
120 | protected: | 121 | protected: |
121 | static std::set<std::string> sConfigVariables; | 122 | static std::set<std::string> sConfigVariables; |
122 | 123 | ||
diff --git a/linden/indra/newview/llfloateractivespeakers.cpp b/linden/indra/newview/llfloateractivespeakers.cpp index 59de717..75cf176 100644 --- a/linden/indra/newview/llfloateractivespeakers.cpp +++ b/linden/indra/newview/llfloateractivespeakers.cpp | |||
@@ -92,18 +92,19 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy | |||
92 | 92 | ||
93 | void LLSpeaker::lookupName() | 93 | void LLSpeaker::lookupName() |
94 | { | 94 | { |
95 | gCacheName->getName(mID, onAvatarNameLookup, new LLHandle<LLSpeaker>(getHandle())); | 95 | LLAvatarNameCache::get(mID, boost::bind(&LLSpeaker::onAvatarNameLookup, _1, _2, new LLHandle<LLSpeaker>(getHandle()))); |
96 | } | 96 | } |
97 | 97 | ||
98 | //static | 98 | //static |
99 | void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* user_data) | 99 | void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data) |
100 | { | 100 | { |
101 | LLSpeaker* speaker_ptr = ((LLHandle<LLSpeaker>*)user_data)->get(); | 101 | LLSpeaker* speaker_ptr = ((LLHandle<LLSpeaker>*)user_data)->get(); |
102 | delete (LLHandle<LLSpeaker>*)user_data; | 102 | delete (LLHandle<LLSpeaker>*)user_data; |
103 | 103 | ||
104 | if (speaker_ptr) | 104 | if (speaker_ptr) |
105 | { | 105 | { |
106 | speaker_ptr->mDisplayName = first + " " + last; | 106 | // Always show "Display Name [Legacy Name]" for security reasons |
107 | speaker_ptr->mDisplayName = avatar_name.getNames(); | ||
107 | // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | Added: RLVa-1.0.0g | 108 | // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | Added: RLVa-1.0.0g |
108 | // TODO-RLVa: this seems to get called per frame which is very likely an LL bug that will eventuall get fixed | 109 | // TODO-RLVa: this seems to get called per frame which is very likely an LL bug that will eventuall get fixed |
109 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) | 110 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) |
diff --git a/linden/indra/newview/llfloateractivespeakers.h b/linden/indra/newview/llfloateractivespeakers.h index b2c44e2..dc3dd73 100644 --- a/linden/indra/newview/llfloateractivespeakers.h +++ b/linden/indra/newview/llfloateractivespeakers.h | |||
@@ -33,6 +33,7 @@ | |||
33 | #ifndef LL_LLFLOATERACTIVESPEAKERS_H | 33 | #ifndef LL_LLFLOATERACTIVESPEAKERS_H |
34 | #define LL_LLFLOATERACTIVESPEAKERS_H | 34 | #define LL_LLFLOATERACTIVESPEAKERS_H |
35 | 35 | ||
36 | #include "llavatarnamecache.h" | ||
36 | #include "llfloater.h" | 37 | #include "llfloater.h" |
37 | #include "llmemory.h" | 38 | #include "llmemory.h" |
38 | #include "llvoiceclient.h" | 39 | #include "llvoiceclient.h" |
@@ -73,7 +74,7 @@ public: | |||
73 | ~LLSpeaker() {}; | 74 | ~LLSpeaker() {}; |
74 | void lookupName(); | 75 | void lookupName(); |
75 | 76 | ||
76 | static void onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* user_data); | 77 | static void onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data); |
77 | 78 | ||
78 | ESpeakerStatus mStatus; // current activity status in speech group | 79 | ESpeakerStatus mStatus; // current activity status in speech group |
79 | F32 mLastSpokeTime; // timestamp when this speaker last spoke | 80 | F32 mLastSpokeTime; // timestamp when this speaker last spoke |
diff --git a/linden/indra/newview/llfloateravatarinfo.cpp b/linden/indra/newview/llfloateravatarinfo.cpp index 0618875..13805fb 100644 --- a/linden/indra/newview/llfloateravatarinfo.cpp +++ b/linden/indra/newview/llfloateravatarinfo.cpp | |||
@@ -122,7 +122,7 @@ LLFloaterAvatarInfo::LLFloaterAvatarInfo(const std::string& name, const LLRect & | |||
122 | } | 122 | } |
123 | 123 | ||
124 | gAvatarInfoInstances.addData(avatar_id, this); // must be done before callback below is called. | 124 | gAvatarInfoInstances.addData(avatar_id, this); // must be done before callback below is called. |
125 | gCacheName->get(avatar_id, FALSE, callbackLoadAvatarName); | 125 | LLAvatarNameCache::get(avatar_id, boost::bind(&LLFloaterAvatarInfo::callbackLoadAvatarName, _1, _2)); |
126 | } | 126 | } |
127 | 127 | ||
128 | // virtual | 128 | // virtual |
@@ -242,18 +242,16 @@ void LLFloaterAvatarInfo::showProfileCallback(S32 option, void *userdata) | |||
242 | 242 | ||
243 | // static | 243 | // static |
244 | void LLFloaterAvatarInfo::callbackLoadAvatarName(const LLUUID& id, | 244 | void LLFloaterAvatarInfo::callbackLoadAvatarName(const LLUUID& id, |
245 | const std::string& first, | 245 | const LLAvatarName& avatar_name) |
246 | const std::string& last, | ||
247 | BOOL is_group, | ||
248 | void* data) | ||
249 | { | 246 | { |
250 | LLFloaterAvatarInfo *floater = gAvatarInfoInstances.getIfThere(id); | 247 | LLFloaterAvatarInfo *floater = gAvatarInfoInstances.getIfThere(id); |
251 | 248 | ||
252 | if (floater) | 249 | if (floater) |
253 | { | 250 | { |
254 | // Build a new title including the avatar name. | 251 | // Build a new title including the avatar name. |
252 | // Always show "Display Name [Legacy Name]" for security reasons | ||
255 | std::ostringstream title; | 253 | std::ostringstream title; |
256 | title << first << " " << last << " - " << floater->getTitle(); | 254 | title << avatar_name.getNames() << " - " << floater->getTitle(); |
257 | floater->setTitle(title.str()); | 255 | floater->setTitle(title.str()); |
258 | } | 256 | } |
259 | } | 257 | } |
diff --git a/linden/indra/newview/llfloateravatarinfo.h b/linden/indra/newview/llfloateravatarinfo.h index 1cc17d1..f65e1f4 100644 --- a/linden/indra/newview/llfloateravatarinfo.h +++ b/linden/indra/newview/llfloateravatarinfo.h | |||
@@ -39,6 +39,7 @@ | |||
39 | #ifndef LL_LLFLOATERAVATARINFO_H | 39 | #ifndef LL_LLFLOATERAVATARINFO_H |
40 | #define LL_LLFLOATERAVATARINFO_H | 40 | #define LL_LLFLOATERAVATARINFO_H |
41 | 41 | ||
42 | #include "llavatarnamecache.h" | ||
42 | #include "llfloater.h" | 43 | #include "llfloater.h" |
43 | #include "llpreview.h" | 44 | #include "llpreview.h" |
44 | #include "lluuid.h" | 45 | #include "lluuid.h" |
@@ -91,8 +92,7 @@ public: | |||
91 | 92 | ||
92 | static LLFloaterAvatarInfo* getInstance(const LLUUID &id); | 93 | static LLFloaterAvatarInfo* getInstance(const LLUUID &id); |
93 | static void showProfileCallback(S32 option, void *userdata); | 94 | static void showProfileCallback(S32 option, void *userdata); |
94 | static void callbackLoadAvatarName(const LLUUID& id, | 95 | static void callbackLoadAvatarName(const LLUUID& agent_id, const LLAvatarName& avatar_name); |
95 | const std::string& first, const std::string& last, BOOL is_group, void* data); | ||
96 | void resetGroupList(); | 96 | void resetGroupList(); |
97 | 97 | ||
98 | private: | 98 | private: |
diff --git a/linden/indra/newview/llfloaterchatterbox.cpp b/linden/indra/newview/llfloaterchatterbox.cpp index 1ef75d1..ba1c83c 100644 --- a/linden/indra/newview/llfloaterchatterbox.cpp +++ b/linden/indra/newview/llfloaterchatterbox.cpp | |||
@@ -43,6 +43,7 @@ | |||
43 | #include "llviewercontrol.h" | 43 | #include "llviewercontrol.h" |
44 | #include "llimview.h" | 44 | #include "llimview.h" |
45 | #include "llimpanel.h" | 45 | #include "llimpanel.h" |
46 | #include "llcallingcard.h" | ||
46 | 47 | ||
47 | // | 48 | // |
48 | // LLFloaterMyFriends | 49 | // LLFloaterMyFriends |
@@ -218,6 +219,8 @@ void LLFloaterChatterBox::draw() | |||
218 | void LLFloaterChatterBox::onOpen() | 219 | void LLFloaterChatterBox::onOpen() |
219 | { | 220 | { |
220 | gSavedSettings.setBOOL("ShowCommunicate", TRUE); | 221 | gSavedSettings.setBOOL("ShowCommunicate", TRUE); |
222 | // Force a refresh to get latest display names in the new IM panel. | ||
223 | LLAvatarTracker::instance().dirtyBuddies(); | ||
221 | } | 224 | } |
222 | 225 | ||
223 | void LLFloaterChatterBox::onClose(bool app_quitting) | 226 | void LLFloaterChatterBox::onClose(bool app_quitting) |
diff --git a/linden/indra/newview/llfloatercustomize.cpp b/linden/indra/newview/llfloatercustomize.cpp index db51556..21dfc36 100644 --- a/linden/indra/newview/llfloatercustomize.cpp +++ b/linden/indra/newview/llfloatercustomize.cpp | |||
@@ -448,9 +448,7 @@ LLPanelEditWearable::LLPanelEditWearable( EWearableType type ) | |||
448 | BOOL LLPanelEditWearable::postBuild() | 448 | BOOL LLPanelEditWearable::postBuild() |
449 | { | 449 | { |
450 | LLAssetType::EType asset_type = LLWearable::typeToAssetType( mType ); | 450 | LLAssetType::EType asset_type = LLWearable::typeToAssetType( mType ); |
451 | std::string icon_name = (asset_type == LLAssetType::AT_CLOTHING ? | 451 | std::string icon_name = get_item_icon_name(asset_type, LLInventoryType::IT_WEARABLE, mType, FALSE); |
452 | "inv_item_clothing.tga" : | ||
453 | "inv_item_skin.tga" ); | ||
454 | childSetValue("icon", icon_name); | 452 | childSetValue("icon", icon_name); |
455 | 453 | ||
456 | childSetAction("Create New", LLPanelEditWearable::onBtnCreateNew, this ); | 454 | childSetAction("Create New", LLPanelEditWearable::onBtnCreateNew, this ); |
@@ -553,7 +551,7 @@ void LLPanelEditWearable::setSubpart( ESubpart subpart ) | |||
553 | param = (LLViewerVisualParam *)avatar->getNextVisualParam()) | 551 | param = (LLViewerVisualParam *)avatar->getNextVisualParam()) |
554 | { | 552 | { |
555 | if (param->getID() == -1 | 553 | if (param->getID() == -1 |
556 | || param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE | 554 | || !param->isTweakable() |
557 | || param->getEditGroup() != part->mEditGroup | 555 | || param->getEditGroup() != part->mEditGroup |
558 | || !(param->getSex() & avatar_sex)) | 556 | || !(param->getSex() & avatar_sex)) |
559 | { | 557 | { |
@@ -763,7 +761,6 @@ void LLPanelEditWearable::onColorCommit( LLUICtrl* ctrl, void* userdata ) | |||
763 | } | 761 | } |
764 | } | 762 | } |
765 | 763 | ||
766 | |||
767 | void LLPanelEditWearable::initPreviousTextureList() | 764 | void LLPanelEditWearable::initPreviousTextureList() |
768 | { | 765 | { |
769 | initPreviousTextureListEntry(TEX_LOWER_ALPHA); | 766 | initPreviousTextureListEntry(TEX_LOWER_ALPHA); |
@@ -2338,6 +2335,7 @@ void LLFloaterCustomize::initWearablePanels() | |||
2338 | panel->addTextureDropTarget(TEX_HEAD_TATTOO, "Head Tattoo", | 2335 | panel->addTextureDropTarget(TEX_HEAD_TATTOO, "Head Tattoo", |
2339 | LLUUID::null, | 2336 | LLUUID::null, |
2340 | TRUE); | 2337 | TRUE); |
2338 | panel->addColorSwatch(TEX_LOWER_TATTOO, "Color/Tint"); | ||
2341 | } | 2339 | } |
2342 | } | 2340 | } |
2343 | 2341 | ||
diff --git a/linden/indra/newview/llfloaterdirectory.cpp b/linden/indra/newview/llfloaterdirectory.cpp index 8018c31..7c8ddf1 100644 --- a/linden/indra/newview/llfloaterdirectory.cpp +++ b/linden/indra/newview/llfloaterdirectory.cpp | |||
@@ -466,7 +466,9 @@ void LLFloaterDirectory::setVisible(BOOL visible) | |||
466 | 466 | ||
467 | void LLFloaterDirectory::onClose(bool app_quitting) | 467 | void LLFloaterDirectory::onClose(bool app_quitting) |
468 | { | 468 | { |
469 | setVisible(FALSE); | 469 | LLFloater::onClose(app_quitting); |
470 | |||
471 | //setVisible(FALSE); //meaning you hide 3 web browsers - one SLPlugin each | ||
470 | } | 472 | } |
471 | 473 | ||
472 | // static | 474 | // static |
diff --git a/linden/indra/newview/llfloaterdisplayname.cpp b/linden/indra/newview/llfloaterdisplayname.cpp new file mode 100644 index 0000000..31ceda9 --- /dev/null +++ b/linden/indra/newview/llfloaterdisplayname.cpp | |||
@@ -0,0 +1,224 @@ | |||
1 | /** | ||
2 | * @file llfloaterdisplayname.cpp | ||
3 | * @author Leyla Farazha | ||
4 | * @brief Implementation of the LLFloaterDisplayName class. | ||
5 | * | ||
6 | * $LicenseInfo:firstyear=2002&license=viewerlgpl$ | ||
7 | * Second Life Viewer Source Code | ||
8 | * Copyright (C) 2010, Linden Research, Inc. | ||
9 | * | ||
10 | * This library is free software; you can redistribute it and/or | ||
11 | * modify it under the terms of the GNU Lesser General Public | ||
12 | * License as published by the Free Software Foundation; | ||
13 | * version 2.1 of the License only. | ||
14 | * | ||
15 | * This library is distributed in the hope that it will be useful, | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
18 | * Lesser General Public License for more details. | ||
19 | * | ||
20 | * You should have received a copy of the GNU Lesser General Public | ||
21 | * License along with this library; if not, write to the Free Software | ||
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
23 | * | ||
24 | * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA | ||
25 | * $/LicenseInfo$ | ||
26 | */ | ||
27 | |||
28 | |||
29 | #include "llviewerprecompiledheaders.h" | ||
30 | #include "llfloater.h" | ||
31 | |||
32 | #include "llnotifications.h" | ||
33 | #include "llviewerdisplayname.h" | ||
34 | |||
35 | #include "llnotify.h" | ||
36 | #include "llfloaterdisplayname.h" | ||
37 | #include "llavatarnamecache.h" | ||
38 | #include "lluictrlfactory.h" | ||
39 | #include "llviewercontrol.h" | ||
40 | |||
41 | #include "llagent.h" | ||
42 | |||
43 | |||
44 | LLFloaterDisplayName* LLFloaterDisplayName::sInstance = NULL; | ||
45 | |||
46 | LLFloaterDisplayName::LLFloaterDisplayName() : LLFloater(std::string("Display Name")) | ||
47 | { | ||
48 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_display_name.xml"); | ||
49 | LLFloaterDisplayName::sInstance = this; | ||
50 | } | ||
51 | |||
52 | LLFloaterDisplayName::~LLFloaterDisplayName() | ||
53 | { | ||
54 | LLFloaterDisplayName::sInstance = NULL; | ||
55 | } | ||
56 | |||
57 | void LLFloaterDisplayName::show() | ||
58 | { | ||
59 | if (!LLFloaterDisplayName::sInstance) | ||
60 | { | ||
61 | LLFloaterDisplayName::sInstance = new LLFloaterDisplayName(); | ||
62 | } | ||
63 | LLFloaterDisplayName::sInstance->open(); | ||
64 | } | ||
65 | |||
66 | void LLFloaterDisplayName::onOpen() | ||
67 | { | ||
68 | getChild<LLUICtrl>("display_name_editor")->clear(); | ||
69 | getChild<LLUICtrl>("display_name_confirm")->clear(); | ||
70 | |||
71 | LLAvatarName av_name; | ||
72 | LLAvatarNameCache::get(gAgent.getID(), &av_name); | ||
73 | |||
74 | F64 now_secs = LLDate::now().secondsSinceEpoch(); | ||
75 | |||
76 | if (now_secs < av_name.mNextUpdate) | ||
77 | { | ||
78 | // ...can't update until some time in the future | ||
79 | F64 next_update_local_secs = av_name.mNextUpdate; | ||
80 | std::string next_update_string; | ||
81 | #ifdef LOCALIZED_TIME | ||
82 | timeToFormattedString((time_t)next_update_local_secs, | ||
83 | gSavedSettings.getString("LongDateFormat"), | ||
84 | next_update_string); | ||
85 | #else | ||
86 | LLDate next_update_local(next_update_local_secs); | ||
87 | next_update_string = next_update_local.asString(); | ||
88 | #endif | ||
89 | getChild<LLUICtrl>("lockout_text")->setTextArg("[TIME]", next_update_string); | ||
90 | getChild<LLUICtrl>("lockout_text")->setVisible(true); | ||
91 | getChild<LLUICtrl>("now_ok_text")->setVisible(false); | ||
92 | getChild<LLUICtrl>("save_btn")->setEnabled(false); | ||
93 | getChild<LLUICtrl>("display_name_editor")->setEnabled(false); | ||
94 | getChild<LLUICtrl>("display_name_confirm")->setEnabled(false); | ||
95 | getChild<LLUICtrl>("cancel_btn")->setFocus(TRUE); | ||
96 | |||
97 | } | ||
98 | else | ||
99 | { | ||
100 | getChild<LLUICtrl>("lockout_text")->setVisible(false); | ||
101 | getChild<LLUICtrl>("now_ok_text")->setVisible(true); | ||
102 | getChild<LLUICtrl>("save_btn")->setEnabled(true); | ||
103 | getChild<LLUICtrl>("display_name_editor")->setEnabled(true); | ||
104 | getChild<LLUICtrl>("display_name_confirm")->setEnabled(true); | ||
105 | |||
106 | } | ||
107 | } | ||
108 | |||
109 | BOOL LLFloaterDisplayName::postBuild() | ||
110 | { | ||
111 | childSetAction("reset_btn", onReset, this); | ||
112 | childSetAction("cancel_btn", onCancel, this); | ||
113 | childSetAction("save_btn", onSave, this); | ||
114 | |||
115 | center(); | ||
116 | |||
117 | return TRUE; | ||
118 | } | ||
119 | |||
120 | void LLFloaterDisplayName::onCacheSetName(bool success, | ||
121 | const std::string& reason, | ||
122 | const LLSD& content) | ||
123 | { | ||
124 | if (success) | ||
125 | { | ||
126 | // Inform the user that the change took place, but will take a while | ||
127 | // to percolate. | ||
128 | LLSD args; | ||
129 | args["DISPLAY_NAME"] = content["display_name"]; | ||
130 | LLNotifications::instance().add("SetDisplayNameSuccess", args); | ||
131 | |||
132 | // Re-fetch my name, as it may have been sanitized by the service | ||
133 | //LLAvatarNameCache::get(getAvatarId(), | ||
134 | // boost::bind(&LLPanelMyProfileEdit::onNameCache, this, _1, _2)); | ||
135 | return; | ||
136 | } | ||
137 | |||
138 | // Request failed, notify the user | ||
139 | std::string error_tag = content["error_tag"].asString(); | ||
140 | llinfos << "set name failure error_tag " << error_tag << llendl; | ||
141 | |||
142 | // We might have a localized string for this message | ||
143 | // error_args will usually be empty from the server. | ||
144 | if (!error_tag.empty() | ||
145 | && LLNotifications::getInstance()->templateExists(error_tag)) | ||
146 | { | ||
147 | LLNotifications::instance().add(error_tag); | ||
148 | return; | ||
149 | } | ||
150 | |||
151 | // The server error might have a localized message for us | ||
152 | std::string lang_code = LLUI::getLanguage(); | ||
153 | LLSD error_desc = content["error_description"]; | ||
154 | if (error_desc.has( lang_code )) | ||
155 | { | ||
156 | LLSD args; | ||
157 | args["MESSAGE"] = error_desc[lang_code].asString(); | ||
158 | LLNotifications::instance().add("GenericAlert", args); | ||
159 | return; | ||
160 | } | ||
161 | |||
162 | // No specific error, throw a generic one | ||
163 | LLNotifications::instance().add("SetDisplayNameFailedGeneric"); | ||
164 | } | ||
165 | |||
166 | void LLFloaterDisplayName::onCancel(void* data) | ||
167 | { | ||
168 | LLFloaterDisplayName* self = (LLFloaterDisplayName*)data; | ||
169 | self->setVisible(false); | ||
170 | } | ||
171 | |||
172 | void LLFloaterDisplayName::onReset(void* data) | ||
173 | { | ||
174 | LLFloaterDisplayName* self = (LLFloaterDisplayName*)data; | ||
175 | |||
176 | if (LLAvatarNameCache::useDisplayNames()) | ||
177 | { | ||
178 | LLViewerDisplayName::set("", | ||
179 | boost::bind(&LLFloaterDisplayName::onCacheSetName, self, _1, _2, _3)); | ||
180 | } | ||
181 | else | ||
182 | { | ||
183 | LLNotifications::instance().add("SetDisplayNameFailedGeneric"); | ||
184 | } | ||
185 | |||
186 | self->setVisible(false); | ||
187 | } | ||
188 | |||
189 | |||
190 | void LLFloaterDisplayName::onSave(void* data) | ||
191 | { | ||
192 | LLFloaterDisplayName* self = (LLFloaterDisplayName*)data; | ||
193 | |||
194 | std::string display_name_utf8 = self->getChild<LLUICtrl>("display_name_editor")->getValue().asString(); | ||
195 | std::string display_name_confirm = self->getChild<LLUICtrl>("display_name_confirm")->getValue().asString(); | ||
196 | |||
197 | if (display_name_utf8.compare(display_name_confirm)) | ||
198 | { | ||
199 | LLNotifications::instance().add("SetDisplayNameMismatch"); | ||
200 | return; | ||
201 | } | ||
202 | |||
203 | const U32 DISPLAY_NAME_MAX_LENGTH = 31; // characters, not bytes | ||
204 | LLWString display_name_wstr = utf8string_to_wstring(display_name_utf8); | ||
205 | if (display_name_wstr.size() > DISPLAY_NAME_MAX_LENGTH) | ||
206 | { | ||
207 | LLSD args; | ||
208 | args["LENGTH"] = llformat("%d", DISPLAY_NAME_MAX_LENGTH); | ||
209 | LLNotifications::instance().add("SetDisplayNameFailedLength", args); | ||
210 | return; | ||
211 | } | ||
212 | |||
213 | if (LLAvatarNameCache::useDisplayNames()) | ||
214 | { | ||
215 | LLViewerDisplayName::set(display_name_utf8, | ||
216 | boost::bind(&LLFloaterDisplayName::onCacheSetName, self, _1, _2, _3)); | ||
217 | } | ||
218 | else | ||
219 | { | ||
220 | LLNotifications::instance().add("SetDisplayNameFailedGeneric"); | ||
221 | } | ||
222 | |||
223 | self->setVisible(false); | ||
224 | } | ||
diff --git a/linden/indra/newview/llfloaterdisplayname.h b/linden/indra/newview/llfloaterdisplayname.h new file mode 100644 index 0000000..4b25670 --- /dev/null +++ b/linden/indra/newview/llfloaterdisplayname.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /** | ||
2 | * @file llfloaterdisplayname.h | ||
3 | * | ||
4 | * $LicenseInfo:firstyear=2009&license=viewerlgpl$ | ||
5 | * Second Life Viewer Source Code | ||
6 | * Copyright (C) 2010, Linden Research, Inc. | ||
7 | * | ||
8 | * This library is free software; you can redistribute it and/or | ||
9 | * modify it under the terms of the GNU Lesser General Public | ||
10 | * License as published by the Free Software Foundation; | ||
11 | * version 2.1 of the License only. | ||
12 | * | ||
13 | * This library is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
16 | * Lesser General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU Lesser General Public | ||
19 | * License along with this library; if not, write to the Free Software | ||
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
21 | * | ||
22 | * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA | ||
23 | * $/LicenseInfo$ | ||
24 | */ | ||
25 | |||
26 | #ifndef LLFLOATERDISPLAYNAME_H | ||
27 | #define LLFLOATERDISPLAYNAME_H | ||
28 | |||
29 | |||
30 | class LLFloaterDisplayName : public LLFloater | ||
31 | { | ||
32 | public: | ||
33 | LLFloaterDisplayName(); | ||
34 | virtual ~LLFloaterDisplayName(); | ||
35 | /* virtual */ BOOL postBuild(); | ||
36 | /* virtual */ void onOpen(); | ||
37 | static void show(); | ||
38 | static void onSave(void* data); | ||
39 | static void onReset(void* data); | ||
40 | static void onCancel(void* data); | ||
41 | |||
42 | private: | ||
43 | static LLFloaterDisplayName* sInstance; | ||
44 | void onCacheSetName(bool success, const std::string& reason, const LLSD& content); | ||
45 | }; | ||
46 | |||
47 | |||
48 | #endif | ||
diff --git a/linden/indra/newview/llfloaterfriends.cpp b/linden/indra/newview/llfloaterfriends.cpp index 0b4610c..cf25e8e 100644 --- a/linden/indra/newview/llfloaterfriends.cpp +++ b/linden/indra/newview/llfloaterfriends.cpp | |||
@@ -39,6 +39,7 @@ | |||
39 | 39 | ||
40 | #include <sstream> | 40 | #include <sstream> |
41 | 41 | ||
42 | #include "llavatarnamecache.h" | ||
42 | #include "lldir.h" | 43 | #include "lldir.h" |
43 | 44 | ||
44 | #include "llagent.h" | 45 | #include "llagent.h" |
@@ -254,6 +255,24 @@ BOOL LLPanelFriends::addFriend(const LLUUID& agent_id) | |||
254 | 255 | ||
255 | std::string fullname; | 256 | std::string fullname; |
256 | BOOL have_name = gCacheName->getFullName(agent_id, fullname); | 257 | BOOL have_name = gCacheName->getFullName(agent_id, fullname); |
258 | if (have_name) | ||
259 | { | ||
260 | if (LLAvatarNameCache::useDisplayNames() && !gSavedSettings.getBOOL("LegacyNamesForFriends")) | ||
261 | { | ||
262 | LLAvatarName avatar_name; | ||
263 | if (LLAvatarNameCache::get(agent_id, &avatar_name)) | ||
264 | { | ||
265 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
266 | { | ||
267 | fullname = avatar_name.mDisplayName; | ||
268 | } | ||
269 | else | ||
270 | { | ||
271 | fullname = avatar_name.getNames(); | ||
272 | } | ||
273 | } | ||
274 | } | ||
275 | } | ||
257 | 276 | ||
258 | LLSD element; | 277 | LLSD element; |
259 | element["id"] = agent_id; | 278 | element["id"] = agent_id; |
@@ -332,6 +351,24 @@ BOOL LLPanelFriends::updateFriendItem(const LLUUID& agent_id, const LLRelationsh | |||
332 | 351 | ||
333 | std::string fullname; | 352 | std::string fullname; |
334 | BOOL have_name = gCacheName->getFullName(agent_id, fullname); | 353 | BOOL have_name = gCacheName->getFullName(agent_id, fullname); |
354 | if (have_name) | ||
355 | { | ||
356 | if (LLAvatarNameCache::useDisplayNames() && !gSavedSettings.getBOOL("LegacyNamesForFriends")) | ||
357 | { | ||
358 | LLAvatarName avatar_name; | ||
359 | if (LLAvatarNameCache::get(agent_id, &avatar_name)) | ||
360 | { | ||
361 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
362 | { | ||
363 | fullname = avatar_name.mDisplayName; | ||
364 | } | ||
365 | else | ||
366 | { | ||
367 | fullname = avatar_name.getNames(); | ||
368 | } | ||
369 | } | ||
370 | } | ||
371 | } | ||
335 | 372 | ||
336 | // Name of the status icon to use | 373 | // Name of the status icon to use |
337 | std::string statusIcon; | 374 | std::string statusIcon; |
@@ -790,6 +827,25 @@ void LLPanelFriends::onClickRemove(void* user_data) | |||
790 | std::string first, last; | 827 | std::string first, last; |
791 | if(gCacheName->getName(agent_id, first, last)) | 828 | if(gCacheName->getName(agent_id, first, last)) |
792 | { | 829 | { |
830 | if (LLAvatarNameCache::useDisplayNames() && !gSavedSettings.getBOOL("LegacyNamesForFriends")) | ||
831 | { | ||
832 | LLAvatarName avatar_name; | ||
833 | if (LLAvatarNameCache::get(agent_id, &avatar_name)) | ||
834 | { | ||
835 | // Always show "Display Name [Legacy Name]" for security reasons | ||
836 | first = avatar_name.getNames(); | ||
837 | size_t i = first.find(" "); | ||
838 | if (i != std::string::npos) | ||
839 | { | ||
840 | last = first.substr(i + 1); | ||
841 | first = first.substr(0, i); | ||
842 | } | ||
843 | else | ||
844 | { | ||
845 | last = ""; | ||
846 | } | ||
847 | } | ||
848 | } | ||
793 | args["FIRST_NAME"] = first; | 849 | args["FIRST_NAME"] = first; |
794 | args["LAST_NAME"] = last; | 850 | args["LAST_NAME"] = last; |
795 | } | 851 | } |
@@ -854,6 +910,25 @@ void LLPanelFriends::confirmModifyRights(rights_map_t& ids, EGrantRevoke command | |||
854 | std::string first, last; | 910 | std::string first, last; |
855 | if(gCacheName->getName(agent_id, first, last)) | 911 | if(gCacheName->getName(agent_id, first, last)) |
856 | { | 912 | { |
913 | if (LLAvatarNameCache::useDisplayNames() && !gSavedSettings.getBOOL("LegacyNamesForFriends")) | ||
914 | { | ||
915 | LLAvatarName avatar_name; | ||
916 | if (LLAvatarNameCache::get(agent_id, &avatar_name)) | ||
917 | { | ||
918 | // Always show "Display Name [Legacy Name]" for security reasons | ||
919 | first = avatar_name.getNames(); | ||
920 | size_t i = first.find(" "); | ||
921 | if (i != std::string::npos) | ||
922 | { | ||
923 | last = first.substr(i + 1); | ||
924 | first = first.substr(0, i); | ||
925 | } | ||
926 | else | ||
927 | { | ||
928 | last = ""; | ||
929 | } | ||
930 | } | ||
931 | } | ||
857 | args["FIRST_NAME"] = first; | 932 | args["FIRST_NAME"] = first; |
858 | args["LAST_NAME"] = last; | 933 | args["LAST_NAME"] = last; |
859 | } | 934 | } |
diff --git a/linden/indra/newview/llfloaternewim.cpp b/linden/indra/newview/llfloaternewim.cpp index 48920c1..272cb53 100644 --- a/linden/indra/newview/llfloaternewim.cpp +++ b/linden/indra/newview/llfloaternewim.cpp | |||
@@ -38,10 +38,9 @@ | |||
38 | #include "lltabcontainer.h" | 38 | #include "lltabcontainer.h" |
39 | #include "llimview.h" | 39 | #include "llimview.h" |
40 | 40 | ||
41 | S32 COL_1_WIDTH = 200; | 41 | S32 COL_1_WIDTH = 400; |
42 | 42 | ||
43 | static std::string sOnlineDescriptor = "*"; | 43 | static std::string sOnlineDescriptor = "*"; |
44 | static std::string sNameFormat = "[FIRST] [LAST]"; | ||
45 | 44 | ||
46 | LLFloaterNewIM::LLFloaterNewIM() | 45 | LLFloaterNewIM::LLFloaterNewIM() |
47 | { | 46 | { |
@@ -69,7 +68,6 @@ BOOL LLFloaterNewIM::postBuild() | |||
69 | llwarns << "LLUICtrlFactory::getNameListByName() returned NULL for 'user_list'" << llendl; | 68 | llwarns << "LLUICtrlFactory::getNameListByName() returned NULL for 'user_list'" << llendl; |
70 | } | 69 | } |
71 | sOnlineDescriptor = getString("online_descriptor"); | 70 | sOnlineDescriptor = getString("online_descriptor"); |
72 | sNameFormat = getString("name_format"); | ||
73 | setDefaultBtn("start_btn"); | 71 | setDefaultBtn("start_btn"); |
74 | return TRUE; | 72 | return TRUE; |
75 | } | 73 | } |
@@ -135,11 +133,8 @@ void LLFloaterNewIM::addGroup(const LLUUID& uuid, void* data, BOOL bold, BOOL on | |||
135 | 133 | ||
136 | void LLFloaterNewIM::addAgent(const LLUUID& uuid, void* data, BOOL online) | 134 | void LLFloaterNewIM::addAgent(const LLUUID& uuid, void* data, BOOL online) |
137 | { | 135 | { |
138 | std::string first, last; | 136 | std::string fullname; |
139 | gCacheName->getName(uuid, first, last); | 137 | gCacheName->getFullName(uuid, fullname); |
140 | LLUIString fullname = sNameFormat; | ||
141 | fullname.setArg("[FIRST]", first); | ||
142 | fullname.setArg("[LAST]", last); | ||
143 | 138 | ||
144 | LLSD row; | 139 | LLSD row; |
145 | row["id"] = uuid; | 140 | row["id"] = uuid; |
@@ -184,13 +179,20 @@ void LLFloaterNewIM::onStart(void* userdata) | |||
184 | const LLScrollListCell* cell = item->getColumn(0); | 179 | const LLScrollListCell* cell = item->getColumn(0); |
185 | std::string name(cell->getValue()); | 180 | std::string name(cell->getValue()); |
186 | 181 | ||
187 | // *NOTE: Do a live detrmination of what type of session it | 182 | // *NOTE: Do a live determination of what type of session it |
188 | // should be. If we restrict the new im panel to online users, | 183 | // should be. If we restrict the new im panel to online users, |
189 | // then we can remove some of this code. | 184 | // then we can remove some of this code. |
190 | EInstantMessage type; | 185 | EInstantMessage type; |
191 | EInstantMessage* t = (EInstantMessage*)item->getUserdata(); | 186 | EInstantMessage* t = (EInstantMessage*)item->getUserdata(); |
192 | if(t) type = (*t); | 187 | if(t) type = (*t); |
193 | else type = LLIMMgr::defaultIMTypeForAgent(item->getUUID()); | 188 | else type = LLIMMgr::defaultIMTypeForAgent(item->getUUID()); |
189 | if (type != IM_SESSION_GROUP_START) | ||
190 | { | ||
191 | // Needed to avoid catching a display name, which would | ||
192 | // make us use a wrong IM log file... | ||
193 | gCacheName->getFullName(item->getUUID(), name); | ||
194 | } | ||
195 | |||
194 | gIMMgr->addSession(name, type, item->getUUID()); | 196 | gIMMgr->addSession(name, type, item->getUUID()); |
195 | 197 | ||
196 | make_ui_sound("UISndStartIM"); | 198 | make_ui_sound("UISndStartIM"); |
diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp index d4ffe22..163c1ec 100644 --- a/linden/indra/newview/llfloaterregioninfo.cpp +++ b/linden/indra/newview/llfloaterregioninfo.cpp | |||
@@ -362,13 +362,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg) | |||
362 | panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) ); | 362 | panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) ); |
363 | panel->childSetValue("access_combo", LLSD(sim_access) ); | 363 | panel->childSetValue("access_combo", LLSD(sim_access) ); |
364 | 364 | ||
365 | 365 | panel->childSetEnabled("access_combo", gAgent.isGodlike() || (region && region->canManageEstate() )); | |
366 | // detect teen grid for maturity | ||
367 | |||
368 | U32 parent_estate_id; | ||
369 | msg->getU32("RegionInfo", "ParentEstateID", parent_estate_id); | ||
370 | BOOL teen_grid = (parent_estate_id == 5); // *TODO add field to estate table and test that | ||
371 | panel->childSetEnabled("access_combo", gAgent.isGodlike() || (region && region->canManageEstate() && !teen_grid)); | ||
372 | panel->setCtrlsEnabled(allow_modify); | 366 | panel->setCtrlsEnabled(allow_modify); |
373 | 367 | ||
374 | // RegionSettings PANEL | 368 | // RegionSettings PANEL |
@@ -1650,16 +1644,9 @@ void LLPanelEstateInfo::onClickAddAllowedGroup(void* user_data) | |||
1650 | return; | 1644 | return; |
1651 | } | 1645 | } |
1652 | 1646 | ||
1653 | LLNotification::Params params("ChangeLindenAccess"); | 1647 | LLNotification::Params params("PfftLindenCrap"); |
1654 | params.functor(boost::bind(&LLPanelEstateInfo::addAllowedGroup, self, _1, _2)); | 1648 | params.functor(boost::bind(&LLPanelEstateInfo::addAllowedGroup, self, _1, _2)); |
1655 | if (isLindenEstate()) | 1649 | LLNotifications::instance().forceResponse(params, 0); |
1656 | { | ||
1657 | LLNotifications::instance().add(params); | ||
1658 | } | ||
1659 | else | ||
1660 | { | ||
1661 | LLNotifications::instance().forceResponse(params, 0); | ||
1662 | } | ||
1663 | } | 1650 | } |
1664 | 1651 | ||
1665 | bool LLPanelEstateInfo::addAllowedGroup(const LLSD& notification, const LLSD& response) | 1652 | bool LLPanelEstateInfo::addAllowedGroup(const LLSD& notification, const LLSD& response) |
@@ -1837,16 +1824,6 @@ std::string all_estates_text() | |||
1837 | } | 1824 | } |
1838 | } | 1825 | } |
1839 | 1826 | ||
1840 | // static | ||
1841 | bool LLPanelEstateInfo::isLindenEstate() | ||
1842 | { | ||
1843 | LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate(); | ||
1844 | if (!panel) return false; | ||
1845 | |||
1846 | U32 estate_id = panel->getEstateID(); | ||
1847 | return (estate_id <= ESTATE_LAST_LINDEN); | ||
1848 | } | ||
1849 | |||
1850 | typedef std::vector<LLUUID> AgentOrGroupIDsVector; | 1827 | typedef std::vector<LLUUID> AgentOrGroupIDsVector; |
1851 | struct LLEstateAccessChangeInfo | 1828 | struct LLEstateAccessChangeInfo |
1852 | { | 1829 | { |
@@ -1898,14 +1875,7 @@ void LLPanelEstateInfo::addAllowedGroup2(LLUUID id, void* user_data) | |||
1898 | params.payload(payload) | 1875 | params.payload(payload) |
1899 | .substitutions(args) | 1876 | .substitutions(args) |
1900 | .functor(accessCoreConfirm); | 1877 | .functor(accessCoreConfirm); |
1901 | if (isLindenEstate()) | 1878 | LLNotifications::instance().add(params); |
1902 | { | ||
1903 | LLNotifications::instance().forceResponse(params, 0); | ||
1904 | } | ||
1905 | else | ||
1906 | { | ||
1907 | LLNotifications::instance().add(params); | ||
1908 | } | ||
1909 | } | 1879 | } |
1910 | 1880 | ||
1911 | // static | 1881 | // static |
@@ -1916,19 +1886,12 @@ void LLPanelEstateInfo::accessAddCore(U32 operation_flag, const std::string& dia | |||
1916 | payload["dialog_name"] = dialog_name; | 1886 | payload["dialog_name"] = dialog_name; |
1917 | // agent id filled in after avatar picker | 1887 | // agent id filled in after avatar picker |
1918 | 1888 | ||
1919 | LLNotification::Params params("ChangeLindenAccess"); | 1889 | LLNotification::Params params("PfftLindenCrap"); |
1920 | params.payload(payload) | 1890 | params.payload(payload) |
1921 | .functor(accessAddCore2); | 1891 | .functor(accessAddCore2); |
1922 | 1892 | ||
1923 | if (isLindenEstate()) | 1893 | // same as clicking "OK" |
1924 | { | 1894 | LLNotifications::instance().forceResponse(params, 0); |
1925 | LLNotifications::instance().add(params); | ||
1926 | } | ||
1927 | else | ||
1928 | { | ||
1929 | // same as clicking "OK" | ||
1930 | LLNotifications::instance().forceResponse(params, 0); | ||
1931 | } | ||
1932 | } | 1895 | } |
1933 | 1896 | ||
1934 | // static | 1897 | // static |
@@ -2008,16 +1971,8 @@ void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, co | |||
2008 | .payload(change_info->asLLSD()) | 1971 | .payload(change_info->asLLSD()) |
2009 | .functor(accessCoreConfirm); | 1972 | .functor(accessCoreConfirm); |
2010 | 1973 | ||
2011 | if (isLindenEstate()) | 1974 | // ask if this estate or all estates with this owner |
2012 | { | 1975 | LLNotifications::instance().add(params); |
2013 | // just apply to this estate | ||
2014 | LLNotifications::instance().forceResponse(params, 0); | ||
2015 | } | ||
2016 | else | ||
2017 | { | ||
2018 | // ask if this estate or all estates with this owner | ||
2019 | LLNotifications::instance().add(params); | ||
2020 | } | ||
2021 | } | 1976 | } |
2022 | 1977 | ||
2023 | // static | 1978 | // static |
@@ -2044,20 +1999,12 @@ void LLPanelEstateInfo::accessRemoveCore(U32 operation_flag, const std::string& | |||
2044 | payload["allowed_ids"].append(item->getUUID()); | 1999 | payload["allowed_ids"].append(item->getUUID()); |
2045 | } | 2000 | } |
2046 | 2001 | ||
2047 | LLNotification::Params params("ChangeLindenAccess"); | 2002 | LLNotification::Params params("PfftLindenCrap"); |
2048 | params.payload(payload) | 2003 | params.payload(payload) |
2049 | .functor(accessRemoveCore2); | 2004 | .functor(accessRemoveCore2); |
2050 | 2005 | ||
2051 | if (isLindenEstate()) | 2006 | // just proceed, as if clicking OK |
2052 | { | 2007 | LLNotifications::instance().forceResponse(params, 0); |
2053 | // warn on change linden estate | ||
2054 | LLNotifications::instance().add(params); | ||
2055 | } | ||
2056 | else | ||
2057 | { | ||
2058 | // just proceed, as if clicking OK | ||
2059 | LLNotifications::instance().forceResponse(params, 0); | ||
2060 | } | ||
2061 | } | 2008 | } |
2062 | 2009 | ||
2063 | // static | 2010 | // static |
@@ -2070,21 +2017,12 @@ bool LLPanelEstateInfo::accessRemoveCore2(const LLSD& notification, const LLSD& | |||
2070 | return false; | 2017 | return false; |
2071 | } | 2018 | } |
2072 | 2019 | ||
2073 | // If Linden estate, can only apply to "this" estate, not all estates | 2020 | LLSD args; |
2074 | // owned by NULL. | 2021 | args["ALL_ESTATES"] = all_estates_text(); |
2075 | if (isLindenEstate()) | 2022 | LLNotifications::instance().add(notification["payload"]["dialog_name"], |
2076 | { | 2023 | args, |
2077 | accessCoreConfirm(notification, response); | 2024 | notification["payload"], |
2078 | } | 2025 | accessCoreConfirm); |
2079 | else | ||
2080 | { | ||
2081 | LLSD args; | ||
2082 | args["ALL_ESTATES"] = all_estates_text(); | ||
2083 | LLNotifications::instance().add(notification["payload"]["dialog_name"], | ||
2084 | args, | ||
2085 | notification["payload"], | ||
2086 | accessCoreConfirm); | ||
2087 | } | ||
2088 | return false; | 2026 | return false; |
2089 | } | 2027 | } |
2090 | 2028 | ||
@@ -2366,52 +2304,23 @@ BOOL LLPanelEstateInfo::sendUpdate() | |||
2366 | { | 2304 | { |
2367 | llinfos << "LLPanelEsateInfo::sendUpdate()" << llendl; | 2305 | llinfos << "LLPanelEsateInfo::sendUpdate()" << llendl; |
2368 | 2306 | ||
2369 | LLNotification::Params params("ChangeLindenEstate"); | 2307 | // send the update |
2370 | params.functor(boost::bind(&LLPanelEstateInfo::callbackChangeLindenEstate, this, _1, _2)); | 2308 | if (!commitEstateInfoCaps()) |
2371 | |||
2372 | if (getEstateID() <= ESTATE_LAST_LINDEN) | ||
2373 | { | ||
2374 | // trying to change reserved estate, warn | ||
2375 | LLNotifications::instance().add(params); | ||
2376 | } | ||
2377 | else | ||
2378 | { | 2309 | { |
2379 | // for normal estates, just make the change | 2310 | // the caps method failed, try the old way |
2380 | LLNotifications::instance().forceResponse(params, 0); | 2311 | LLFloaterRegionInfo::nextInvoice(); |
2312 | commitEstateInfoDataserver(); | ||
2381 | } | 2313 | } |
2314 | // we don't want to do this because we'll get it automatically from the sim | ||
2315 | // after the spaceserver processes it | ||
2316 | // else | ||
2317 | // { | ||
2318 | // // caps method does not automatically send this info | ||
2319 | // LLFloaterRegionInfo::requestRegionInfo(); | ||
2320 | // } | ||
2382 | return TRUE; | 2321 | return TRUE; |
2383 | } | 2322 | } |
2384 | 2323 | ||
2385 | bool LLPanelEstateInfo::callbackChangeLindenEstate(const LLSD& notification, const LLSD& response) | ||
2386 | { | ||
2387 | S32 option = LLNotification::getSelectedOption(notification, response); | ||
2388 | switch(option) | ||
2389 | { | ||
2390 | case 0: | ||
2391 | // send the update | ||
2392 | if (!commitEstateInfoCaps()) | ||
2393 | { | ||
2394 | // the caps method failed, try the old way | ||
2395 | LLFloaterRegionInfo::nextInvoice(); | ||
2396 | commitEstateInfoDataserver(); | ||
2397 | } | ||
2398 | // we don't want to do this because we'll get it automatically from the sim | ||
2399 | // after the spaceserver processes it | ||
2400 | // else | ||
2401 | // { | ||
2402 | // // caps method does not automatically send this info | ||
2403 | // LLFloaterRegionInfo::requestRegionInfo(); | ||
2404 | // } | ||
2405 | break; | ||
2406 | case 1: | ||
2407 | default: | ||
2408 | // do nothing | ||
2409 | break; | ||
2410 | } | ||
2411 | return false; | ||
2412 | } | ||
2413 | |||
2414 | |||
2415 | /* | 2324 | /* |
2416 | // Request = "getowner" | 2325 | // Request = "getowner" |
2417 | // SParam[0] = "" (empty string) | 2326 | // SParam[0] = "" (empty string) |
@@ -2664,47 +2573,6 @@ void LLPanelEstateInfo::setAbuseEmailAddress(const std::string& address) | |||
2664 | childSetValue("abuse_email_address", LLSD(address)); | 2573 | childSetValue("abuse_email_address", LLSD(address)); |
2665 | } | 2574 | } |
2666 | 2575 | ||
2667 | void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent, | ||
2668 | bool enable_group, | ||
2669 | bool enable_ban) | ||
2670 | { | ||
2671 | childSetEnabled("allow_resident_label", enable_agent); | ||
2672 | childSetEnabled("allowed_avatar_name_list", enable_agent); | ||
2673 | childSetVisible("allowed_avatar_name_list", enable_agent); | ||
2674 | childSetEnabled("add_allowed_avatar_btn", enable_agent); | ||
2675 | childSetEnabled("remove_allowed_avatar_btn", enable_agent); | ||
2676 | |||
2677 | // Groups | ||
2678 | childSetEnabled("allow_group_label", enable_group); | ||
2679 | childSetEnabled("allowed_group_name_list", enable_group); | ||
2680 | childSetVisible("allowed_group_name_list", enable_group); | ||
2681 | childSetEnabled("add_allowed_group_btn", enable_group); | ||
2682 | childSetEnabled("remove_allowed_group_btn", enable_group); | ||
2683 | |||
2684 | // Ban | ||
2685 | childSetEnabled("ban_resident_label", enable_ban); | ||
2686 | childSetEnabled("banned_avatar_name_list", enable_ban); | ||
2687 | childSetVisible("banned_avatar_name_list", enable_ban); | ||
2688 | childSetEnabled("add_banned_avatar_btn", enable_ban); | ||
2689 | childSetEnabled("remove_banned_avatar_btn", enable_ban); | ||
2690 | |||
2691 | // Update removal buttons if needed | ||
2692 | if (enable_agent) | ||
2693 | { | ||
2694 | checkRemovalButton("allowed_avatar_name_list"); | ||
2695 | } | ||
2696 | |||
2697 | if (enable_group) | ||
2698 | { | ||
2699 | checkRemovalButton("allowed_group_name_list"); | ||
2700 | } | ||
2701 | |||
2702 | if (enable_ban) | ||
2703 | { | ||
2704 | checkRemovalButton("banned_avatar_name_list"); | ||
2705 | } | ||
2706 | } | ||
2707 | |||
2708 | // static | 2576 | // static |
2709 | void LLPanelEstateInfo::callbackCacheName( | 2577 | void LLPanelEstateInfo::callbackCacheName( |
2710 | const LLUUID& id, | 2578 | const LLUUID& id, |
@@ -3241,20 +3109,6 @@ bool LLDispatchEstateUpdateInfo::operator()( | |||
3241 | panel->setSunHour(sun_hour); | 3109 | panel->setSunHour(sun_hour); |
3242 | } | 3110 | } |
3243 | 3111 | ||
3244 | bool visible_from_mainland = (bool)(flags & REGION_FLAGS_EXTERNALLY_VISIBLE); | ||
3245 | bool god = gAgent.isGodlike(); | ||
3246 | bool linden_estate = (estate_id <= ESTATE_LAST_LINDEN); | ||
3247 | |||
3248 | // If visible from mainland, disable the access allowed | ||
3249 | // UI, as anyone can teleport there. | ||
3250 | // However, gods need to be able to edit the access list for | ||
3251 | // linden estates, regardless of visibility, to allow object | ||
3252 | // and L$ transfers. | ||
3253 | bool enable_agent = (!visible_from_mainland || (god && linden_estate)); | ||
3254 | bool enable_group = enable_agent; | ||
3255 | bool enable_ban = !linden_estate; | ||
3256 | panel->setAccessAllowedEnabled(enable_agent, enable_group, enable_ban); | ||
3257 | |||
3258 | return true; | 3112 | return true; |
3259 | } | 3113 | } |
3260 | 3114 | ||
diff --git a/linden/indra/newview/llfloaterregioninfo.h b/linden/indra/newview/llfloaterregioninfo.h index ae0c993..f5e3d03 100644 --- a/linden/indra/newview/llfloaterregioninfo.h +++ b/linden/indra/newview/llfloaterregioninfo.h | |||
@@ -344,7 +344,6 @@ public: | |||
344 | 344 | ||
345 | U32 getEstateID() const { return mEstateID; } | 345 | U32 getEstateID() const { return mEstateID; } |
346 | void setEstateID(U32 estate_id) { mEstateID = estate_id; } | 346 | void setEstateID(U32 estate_id) { mEstateID = estate_id; } |
347 | static bool isLindenEstate(); | ||
348 | 347 | ||
349 | const std::string getOwnerName() const; | 348 | const std::string getOwnerName() const; |
350 | void setOwnerName(const std::string& name); | 349 | void setOwnerName(const std::string& name); |
@@ -352,10 +351,6 @@ public: | |||
352 | const std::string getAbuseEmailAddress() const; | 351 | const std::string getAbuseEmailAddress() const; |
353 | void setAbuseEmailAddress(const std::string& address); | 352 | void setAbuseEmailAddress(const std::string& address); |
354 | 353 | ||
355 | // If visible from mainland, allowed agent and allowed groups | ||
356 | // are ignored, so must disable UI. | ||
357 | void setAccessAllowedEnabled(bool enable_agent, bool enable_group, bool enable_ban); | ||
358 | |||
359 | // this must have the same function signature as | 354 | // this must have the same function signature as |
360 | // llmessage/llcachename.h:LLCacheNameCallback | 355 | // llmessage/llcachename.h:LLCacheNameCallback |
361 | static void callbackCacheName( | 356 | static void callbackCacheName( |
@@ -367,8 +362,6 @@ public: | |||
367 | 362 | ||
368 | protected: | 363 | protected: |
369 | virtual BOOL sendUpdate(); | 364 | virtual BOOL sendUpdate(); |
370 | // confirmation dialog callback | ||
371 | bool callbackChangeLindenEstate(const LLSD& notification, const LLSD& response); | ||
372 | 365 | ||
373 | void commitEstateInfoDataserver(); | 366 | void commitEstateInfoDataserver(); |
374 | bool commitEstateInfoCaps(); | 367 | bool commitEstateInfoCaps(); |
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp index 0cb35e3..2aed361 100644 --- a/linden/indra/newview/llfloatertools.cpp +++ b/linden/indra/newview/llfloatertools.cpp | |||
@@ -1259,7 +1259,9 @@ void LLFloaterTools::onClickLink(void* data) | |||
1259 | } | 1259 | } |
1260 | 1260 | ||
1261 | S32 max_linked_prims = 0; | 1261 | S32 max_linked_prims = 0; |
1262 | if(LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()->usePhysics()) | 1262 | |
1263 | LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstRootObject(); | ||
1264 | if(object && object->usePhysics()) | ||
1263 | { | 1265 | { |
1264 | //Physical - use phys prim limit | 1266 | //Physical - use phys prim limit |
1265 | max_linked_prims = gHippoLimits->getMaxPhysLinkedPrims(); | 1267 | max_linked_prims = gHippoLimits->getMaxPhysLinkedPrims(); |
diff --git a/linden/indra/newview/llhoverview.cpp b/linden/indra/newview/llhoverview.cpp index 5397f89..b2f4c22 100644 --- a/linden/indra/newview/llhoverview.cpp +++ b/linden/indra/newview/llhoverview.cpp | |||
@@ -253,10 +253,29 @@ void LLHoverView::updateText() | |||
253 | LLNameValue* lastname = hit_object->getNVPair("LastName"); | 253 | LLNameValue* lastname = hit_object->getNVPair("LastName"); |
254 | if (firstname && lastname) | 254 | if (firstname && lastname) |
255 | { | 255 | { |
256 | std::string complete_name = firstname->getString(); | ||
257 | complete_name += " "; | ||
258 | complete_name += lastname->getString(); | ||
259 | |||
260 | if (LLAvatarNameCache::useDisplayNames()) | ||
261 | { | ||
262 | LLAvatarName avatar_name; | ||
263 | if (LLAvatarNameCache::get(hit_object->getID(), &avatar_name)) | ||
264 | { | ||
265 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
266 | { | ||
267 | complete_name = avatar_name.mDisplayName; | ||
268 | } | ||
269 | else | ||
270 | { | ||
271 | complete_name = avatar_name.getNames(); | ||
272 | } | ||
273 | } | ||
274 | } | ||
256 | // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | 275 | // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) |
257 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) | 276 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) |
258 | { | 277 | { |
259 | line = RlvStrings::getAnonym(line.append(firstname->getString()).append(1, ' ').append(lastname->getString())); | 278 | line = RlvStrings::getAnonym(complete_name); |
260 | } | 279 | } |
261 | else | 280 | else |
262 | { | 281 | { |
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp index d1e6139..cfe3996 100644 --- a/linden/indra/newview/llimpanel.cpp +++ b/linden/indra/newview/llimpanel.cpp | |||
@@ -106,6 +106,8 @@ LLVoiceChannel* LLVoiceChannel::sSuspendedVoiceChannel = NULL; | |||
106 | 106 | ||
107 | BOOL LLVoiceChannel::sSuspended = FALSE; | 107 | BOOL LLVoiceChannel::sSuspended = FALSE; |
108 | 108 | ||
109 | std::set<LLFloaterIMPanel*> LLFloaterIMPanel::sFloaterIMPanels; | ||
110 | |||
109 | void session_starter_helper( | 111 | void session_starter_helper( |
110 | const LLUUID& temp_session_id, | 112 | const LLUUID& temp_session_id, |
111 | const LLUUID& other_participant_id, | 113 | const LLUUID& other_participant_id, |
@@ -1108,6 +1110,7 @@ LLFloaterIMPanel::LLFloaterIMPanel( | |||
1108 | mFirstKeystrokeTimer(), | 1110 | mFirstKeystrokeTimer(), |
1109 | mLastKeystrokeTimer() | 1111 | mLastKeystrokeTimer() |
1110 | { | 1112 | { |
1113 | sFloaterIMPanels.insert(this); | ||
1111 | init(session_label); | 1114 | init(session_label); |
1112 | } | 1115 | } |
1113 | 1116 | ||
@@ -1149,6 +1152,7 @@ LLFloaterIMPanel::LLFloaterIMPanel( | |||
1149 | void LLFloaterIMPanel::init(const std::string& session_label) | 1152 | void LLFloaterIMPanel::init(const std::string& session_label) |
1150 | { | 1153 | { |
1151 | mSessionLabel = session_label; | 1154 | mSessionLabel = session_label; |
1155 | mProfileButtonEnabled = FALSE; | ||
1152 | 1156 | ||
1153 | std::string xml_filename; | 1157 | std::string xml_filename; |
1154 | switch(mDialog) | 1158 | switch(mDialog) |
@@ -1211,6 +1215,10 @@ void LLFloaterIMPanel::init(const std::string& session_label) | |||
1211 | FALSE); | 1215 | FALSE); |
1212 | 1216 | ||
1213 | setTitle(mSessionLabel); | 1217 | setTitle(mSessionLabel); |
1218 | if (mProfileButtonEnabled) | ||
1219 | { | ||
1220 | lookupName(); | ||
1221 | } | ||
1214 | 1222 | ||
1215 | mInputEditor->setMaxTextLength(DB_IM_MSG_STR_LEN); | 1223 | mInputEditor->setMaxTextLength(DB_IM_MSG_STR_LEN); |
1216 | // enable line history support for instant message bar | 1224 | // enable line history support for instant message bar |
@@ -1253,9 +1261,32 @@ void LLFloaterIMPanel::init(const std::string& session_label) | |||
1253 | } | 1261 | } |
1254 | } | 1262 | } |
1255 | 1263 | ||
1264 | void LLFloaterIMPanel::lookupName() | ||
1265 | { | ||
1266 | LLAvatarNameCache::get(mOtherParticipantUUID, boost::bind(&LLFloaterIMPanel::onAvatarNameLookup, _1, _2, this)); | ||
1267 | } | ||
1268 | |||
1269 | //static | ||
1270 | void LLFloaterIMPanel::onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data) | ||
1271 | { | ||
1272 | LLFloaterIMPanel* self = (LLFloaterIMPanel*)user_data; | ||
1273 | |||
1274 | if (self && sFloaterIMPanels.count(self) != 0) | ||
1275 | { | ||
1276 | // Always show "Display Name [Legacy Name]" for security reasons | ||
1277 | std::string title = avatar_name.getNames(); | ||
1278 | if (!title.empty()) | ||
1279 | { | ||
1280 | self->setTitle(title); | ||
1281 | } | ||
1282 | } | ||
1283 | } | ||
1284 | |||
1256 | 1285 | ||
1257 | LLFloaterIMPanel::~LLFloaterIMPanel() | 1286 | LLFloaterIMPanel::~LLFloaterIMPanel() |
1258 | { | 1287 | { |
1288 | sFloaterIMPanels.erase(this); | ||
1289 | |||
1259 | delete mSpeakers; | 1290 | delete mSpeakers; |
1260 | mSpeakers = NULL; | 1291 | mSpeakers = NULL; |
1261 | 1292 | ||
@@ -1550,8 +1581,9 @@ BOOL LLFloaterIMPanel::inviteToSession(const LLDynamicArray<LLUUID>& ids) | |||
1550 | return TRUE; | 1581 | return TRUE; |
1551 | } | 1582 | } |
1552 | 1583 | ||
1553 | void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4& color, bool log_to_file, const LLUUID& source, const std::string& name) | 1584 | void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4& color, bool log_to_file, const LLUUID& source, const std::string& const_name) |
1554 | { | 1585 | { |
1586 | std::string name = const_name; | ||
1555 | // start tab flashing when receiving im for background session from user | 1587 | // start tab flashing when receiving im for background session from user |
1556 | if (source != LLUUID::null) | 1588 | if (source != LLUUID::null) |
1557 | { | 1589 | { |
@@ -1602,6 +1634,21 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4 | |||
1602 | } | 1634 | } |
1603 | else | 1635 | else |
1604 | { | 1636 | { |
1637 | if (LLAvatarNameCache::useDisplayNames() && source != LLUUID::null) | ||
1638 | { | ||
1639 | LLAvatarName avatar_name; | ||
1640 | if (LLAvatarNameCache::get(source, &avatar_name)) | ||
1641 | { | ||
1642 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
1643 | { | ||
1644 | name = avatar_name.mDisplayName; | ||
1645 | } | ||
1646 | else | ||
1647 | { | ||
1648 | name = avatar_name.getNames(); | ||
1649 | } | ||
1650 | } | ||
1651 | } | ||
1605 | // Convert the name to a hotlink and add to message. | 1652 | // Convert the name to a hotlink and add to message. |
1606 | const LLStyleSP &source_style = LLStyleMap::instance().lookupAgent(source); | 1653 | const LLStyleSP &source_style = LLStyleMap::instance().lookupAgent(source); |
1607 | mHistoryEditor->appendStyledText(name,false,prepend_newline,source_style); | 1654 | mHistoryEditor->appendStyledText(name,false,prepend_newline,source_style); |
@@ -1619,7 +1666,7 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4 | |||
1619 | else | 1666 | else |
1620 | histstr = name + utf8msg; | 1667 | histstr = name + utf8msg; |
1621 | 1668 | ||
1622 | LLLogChat::saveHistory(getTitle(),histstr); | 1669 | LLLogChat::saveHistory(mSessionLabel, histstr); |
1623 | } | 1670 | } |
1624 | 1671 | ||
1625 | if (!isInVisibleChain()) | 1672 | if (!isInVisibleChain()) |
@@ -2168,6 +2215,21 @@ void LLFloaterIMPanel::sendMsg() | |||
2168 | { | 2215 | { |
2169 | std::string history_echo; | 2216 | std::string history_echo; |
2170 | gAgent.buildFullname(history_echo); | 2217 | gAgent.buildFullname(history_echo); |
2218 | if (LLAvatarNameCache::useDisplayNames()) | ||
2219 | { | ||
2220 | LLAvatarName avatar_name; | ||
2221 | if (LLAvatarNameCache::get(gAgent.getID(), &avatar_name)) | ||
2222 | { | ||
2223 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
2224 | { | ||
2225 | history_echo = avatar_name.mDisplayName; | ||
2226 | } | ||
2227 | else | ||
2228 | { | ||
2229 | history_echo = avatar_name.getNames(); | ||
2230 | } | ||
2231 | } | ||
2232 | } | ||
2171 | 2233 | ||
2172 | // Look for IRC-style emotes here. | 2234 | // Look for IRC-style emotes here. |
2173 | std::string prefix = utf8_text.substr(0, 4); | 2235 | std::string prefix = utf8_text.substr(0, 4); |
diff --git a/linden/indra/newview/llimpanel.h b/linden/indra/newview/llimpanel.h index ddcbdc7..b5a0165 100644 --- a/linden/indra/newview/llimpanel.h +++ b/linden/indra/newview/llimpanel.h | |||
@@ -33,6 +33,7 @@ | |||
33 | #ifndef LL_IMPANEL_H | 33 | #ifndef LL_IMPANEL_H |
34 | #define LL_IMPANEL_H | 34 | #define LL_IMPANEL_H |
35 | 35 | ||
36 | #include "llavatarnamecache.h" | ||
36 | #include "llfloater.h" | 37 | #include "llfloater.h" |
37 | #include "lllogchat.h" | 38 | #include "lllogchat.h" |
38 | #include "lluuid.h" | 39 | #include "lluuid.h" |
@@ -194,6 +195,9 @@ public: | |||
194 | EInstantMessage dialog); | 195 | EInstantMessage dialog); |
195 | virtual ~LLFloaterIMPanel(); | 196 | virtual ~LLFloaterIMPanel(); |
196 | 197 | ||
198 | void lookupName(); | ||
199 | static void onAvatarNameLookup(const LLUUID& id, const LLAvatarName& avatar_name, void* user_data); | ||
200 | |||
197 | /*virtual*/ BOOL postBuild(); | 201 | /*virtual*/ BOOL postBuild(); |
198 | 202 | ||
199 | // Check typing timeout timer. | 203 | // Check typing timeout timer. |
@@ -365,6 +369,8 @@ private: | |||
365 | typedef std::map<LLUUID, LLStyleSP> styleMap; | 369 | typedef std::map<LLUUID, LLStyleSP> styleMap; |
366 | static styleMap mStyleMap; | 370 | static styleMap mStyleMap; |
367 | 371 | ||
372 | static std::set<LLFloaterIMPanel*> sFloaterIMPanels; | ||
373 | |||
368 | typedef enum e_im_format | 374 | typedef enum e_im_format |
369 | { | 375 | { |
370 | IM_PANEL_PLAIN, | 376 | IM_PANEL_PLAIN, |
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp index 268e431..b38abe4 100644 --- a/linden/indra/newview/llmanipscale.cpp +++ b/linden/indra/newview/llmanipscale.cpp | |||
@@ -1523,7 +1523,7 @@ void LLManipScale::renderSnapGuides(const LLBBox& bbox) | |||
1523 | F32 max_subdivisions = sGridMaxSubdivisionLevel; | 1523 | F32 max_subdivisions = sGridMaxSubdivisionLevel; |
1524 | F32 grid_alpha = gSavedSettings.getF32("GridOpacity"); | 1524 | F32 grid_alpha = gSavedSettings.getF32("GridOpacity"); |
1525 | 1525 | ||
1526 | F32 max_point_on_scale_line = partToMaxScale(mManipPart, bbox); | 1526 | F32 max_point_on_scale_line = llmin(partToMaxScale(mManipPart, bbox), LLWorld::getInstance()->getRegionWidthInMeters()); |
1527 | LLVector3 drag_point = gAgent.getPosAgentFromGlobal(mDragPointGlobal); | 1527 | LLVector3 drag_point = gAgent.getPosAgentFromGlobal(mDragPointGlobal); |
1528 | 1528 | ||
1529 | updateGridSettings(); | 1529 | updateGridSettings(); |
diff --git a/linden/indra/newview/llnamelistctrl.cpp b/linden/indra/newview/llnamelistctrl.cpp index e445df5..e30c129 100644 --- a/linden/indra/newview/llnamelistctrl.cpp +++ b/linden/indra/newview/llnamelistctrl.cpp | |||
@@ -39,6 +39,7 @@ | |||
39 | #include "llcachename.h" | 39 | #include "llcachename.h" |
40 | #include "llagent.h" | 40 | #include "llagent.h" |
41 | #include "llinventory.h" | 41 | #include "llinventory.h" |
42 | #include "llviewercontrol.h" | ||
42 | 43 | ||
43 | static LLRegisterWidget<LLNameListCtrl> r("name_list"); | 44 | static LLRegisterWidget<LLNameListCtrl> r("name_list"); |
44 | 45 | ||
@@ -56,7 +57,8 @@ LLNameListCtrl::LLNameListCtrl(const std::string& name, | |||
56 | : LLScrollListCtrl(name, rect, cb, userdata, allow_multiple_selection, | 57 | : LLScrollListCtrl(name, rect, cb, userdata, allow_multiple_selection, |
57 | draw_border), | 58 | draw_border), |
58 | mNameColumnIndex(name_column_index), | 59 | mNameColumnIndex(name_column_index), |
59 | mAllowCallingCardDrop(FALSE) | 60 | mAllowCallingCardDrop(FALSE), |
61 | mUseDisplayNames(FALSE) | ||
60 | { | 62 | { |
61 | setToolTip(tooltip); | 63 | setToolTip(tooltip); |
62 | LLNameListCtrl::sInstances.insert(this); | 64 | LLNameListCtrl::sInstances.insert(this); |
@@ -77,7 +79,7 @@ BOOL LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos, | |||
77 | //llinfos << "LLNameListCtrl::addNameItem " << agent_id << llendl; | 79 | //llinfos << "LLNameListCtrl::addNameItem " << agent_id << llendl; |
78 | 80 | ||
79 | std::string fullname; | 81 | std::string fullname; |
80 | BOOL result = gCacheName->getFullName(agent_id, fullname); | 82 | BOOL result = getResidentName(agent_id, fullname); |
81 | 83 | ||
82 | fullname.append(suffix); | 84 | fullname.append(suffix); |
83 | 85 | ||
@@ -164,7 +166,7 @@ BOOL LLNameListCtrl::addNameItem(LLScrollListItem* item, EAddPosition pos) | |||
164 | //llinfos << "LLNameListCtrl::addNameItem " << item->getUUID() << llendl; | 166 | //llinfos << "LLNameListCtrl::addNameItem " << item->getUUID() << llendl; |
165 | 167 | ||
166 | std::string fullname; | 168 | std::string fullname; |
167 | BOOL result = gCacheName->getFullName(item->getUUID(), fullname); | 169 | BOOL result = getResidentName(item->getUUID(), fullname); |
168 | 170 | ||
169 | LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(mNameColumnIndex); | 171 | LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(mNameColumnIndex); |
170 | ((LLScrollListText*)cell)->setText( fullname ); | 172 | ((LLScrollListText*)cell)->setText( fullname ); |
@@ -199,7 +201,7 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& value, EAddPosition pos | |||
199 | else // normal resident | 201 | else // normal resident |
200 | { | 202 | { |
201 | std::string name; | 203 | std::string name; |
202 | if (gCacheName->getFullName(item->getUUID(), name)) | 204 | if (getResidentName(item->getUUID(), name)) |
203 | { | 205 | { |
204 | fullname = name; | 206 | fullname = name; |
205 | } | 207 | } |
@@ -346,6 +348,12 @@ LLView* LLNameListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFacto | |||
346 | name_list->setAllowCallingCardDrop(allow_calling_card_drop); | 348 | name_list->setAllowCallingCardDrop(allow_calling_card_drop); |
347 | } | 349 | } |
348 | 350 | ||
351 | BOOL use_display_names; | ||
352 | if (node->getAttributeBOOL("use_display_names", use_display_names)) | ||
353 | { | ||
354 | name_list->setUseDisplayNames(use_display_names); | ||
355 | } | ||
356 | |||
349 | name_list->setScrollListParameters(node); | 357 | name_list->setScrollListParameters(node); |
350 | 358 | ||
351 | name_list->initFromXML(node, parent); | 359 | name_list->initFromXML(node, parent); |
@@ -456,5 +464,31 @@ LLView* LLNameListCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFacto | |||
456 | return name_list; | 464 | return name_list; |
457 | } | 465 | } |
458 | 466 | ||
459 | 467 | bool LLNameListCtrl::getResidentName(const LLUUID& agent_id, std::string& fullname) | |
460 | 468 | { | |
469 | std::string name; | ||
470 | if (gCacheName->getFullName(agent_id, name)) | ||
471 | { | ||
472 | fullname = name; | ||
473 | if (mUseDisplayNames && LLAvatarNameCache::useDisplayNames() && !gSavedSettings.getBOOL("LegacyNamesForFriends")) | ||
474 | { | ||
475 | LLAvatarName avatar_name; | ||
476 | if (LLAvatarNameCache::get(agent_id, &avatar_name)) | ||
477 | { | ||
478 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
479 | { | ||
480 | fullname = avatar_name.mDisplayName; | ||
481 | } | ||
482 | else | ||
483 | { | ||
484 | fullname = avatar_name.getNames(); | ||
485 | } | ||
486 | } | ||
487 | } | ||
488 | return true; | ||
489 | } | ||
490 | else | ||
491 | { | ||
492 | return false; | ||
493 | } | ||
494 | } | ||
diff --git a/linden/indra/newview/llnamelistctrl.h b/linden/indra/newview/llnamelistctrl.h index beb4ede..d6cf578 100644 --- a/linden/indra/newview/llnamelistctrl.h +++ b/linden/indra/newview/llnamelistctrl.h | |||
@@ -84,7 +84,12 @@ public: | |||
84 | 84 | ||
85 | void setAllowCallingCardDrop(BOOL b) { mAllowCallingCardDrop = b; } | 85 | void setAllowCallingCardDrop(BOOL b) { mAllowCallingCardDrop = b; } |
86 | 86 | ||
87 | void setUseDisplayNames(BOOL b) { mUseDisplayNames = b; } | ||
88 | |||
87 | private: | 89 | private: |
90 | bool getResidentName(const LLUUID& agent_id, std::string& fullname); | ||
91 | BOOL mUseDisplayNames; | ||
92 | |||
88 | static std::set<LLNameListCtrl*> sInstances; | 93 | static std::set<LLNameListCtrl*> sInstances; |
89 | S32 mNameColumnIndex; | 94 | S32 mNameColumnIndex; |
90 | BOOL mAllowCallingCardDrop; | 95 | BOOL mAllowCallingCardDrop; |
diff --git a/linden/indra/newview/llnetmap.cpp b/linden/indra/newview/llnetmap.cpp index b9dc482..06257f0 100644 --- a/linden/indra/newview/llnetmap.cpp +++ b/linden/indra/newview/llnetmap.cpp | |||
@@ -36,6 +36,7 @@ | |||
36 | #include "llnetmap.h" | 36 | #include "llnetmap.h" |
37 | 37 | ||
38 | #include "indra_constants.h" | 38 | #include "indra_constants.h" |
39 | #include "llavatarnamecache.h" | ||
39 | #include "llui.h" | 40 | #include "llui.h" |
40 | #include "llmath.h" // clampf() | 41 | #include "llmath.h" // clampf() |
41 | #include "llfocusmgr.h" | 42 | #include "llfocusmgr.h" |
@@ -640,7 +641,29 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, std::string& msg, LLRect* sticky_rec | |||
640 | { | 641 | { |
641 | msg.assign(""); | 642 | msg.assign(""); |
642 | std::string fullname; | 643 | std::string fullname; |
643 | if(mClosestAgentToCursor.notNull() && gCacheName->getFullName(mClosestAgentToCursor, fullname)) | 644 | BOOL result = FALSE; |
645 | if (!LLAvatarNameCache::useDisplayNames()) | ||
646 | { | ||
647 | result = gCacheName->getFullName(mClosestAgentToCursor, fullname); | ||
648 | } | ||
649 | else | ||
650 | { | ||
651 | LLAvatarName avatar_name; | ||
652 | if (LLAvatarNameCache::get(mClosestAgentToCursor, &avatar_name)) | ||
653 | { | ||
654 | result = TRUE; | ||
655 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
656 | { | ||
657 | fullname = avatar_name.mDisplayName; | ||
658 | } | ||
659 | else | ||
660 | { | ||
661 | fullname = avatar_name.getNames(true); | ||
662 | } | ||
663 | } | ||
664 | } | ||
665 | |||
666 | if(mClosestAgentToCursor.notNull() && result) | ||
644 | { | 667 | { |
645 | // msg.append(fullname); | 668 | // msg.append(fullname); |
646 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b | 669 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b |
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp index ed406e8..4e1d03e 100644 --- a/linden/indra/newview/lloverlaybar.cpp +++ b/linden/indra/newview/lloverlaybar.cpp | |||
@@ -38,7 +38,7 @@ | |||
38 | #include "lloverlaybar.h" | 38 | #include "lloverlaybar.h" |
39 | 39 | ||
40 | #include "aoremotectrl.h" | 40 | #include "aoremotectrl.h" |
41 | #include "llaudioengine.h" | 41 | #include "kokuastreamingaudio.h" |
42 | #include "llrender.h" | 42 | #include "llrender.h" |
43 | #include "llagent.h" | 43 | #include "llagent.h" |
44 | #include "llbutton.h" | 44 | #include "llbutton.h" |
@@ -438,17 +438,16 @@ void LLOverlayBar::toggleMusicPlay(void*) | |||
438 | if (gOverlayBar->mMusicState != PLAYING) | 438 | if (gOverlayBar->mMusicState != PLAYING) |
439 | { | 439 | { |
440 | gOverlayBar->mMusicState = PLAYING; // desired state | 440 | gOverlayBar->mMusicState = PLAYING; // desired state |
441 | if (gAudiop) | 441 | if (gAudioStream) |
442 | { | 442 | { |
443 | LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); | 443 | LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); |
444 | if ( parcel ) | 444 | if ( parcel ) |
445 | { | 445 | { |
446 | // this doesn't work properly when crossing parcel boundaries - even when the | 446 | // this doesn't work properly when crossing parcel boundaries - even when the |
447 | // stream is stopped, it doesn't return the right thing - commenting out for now. | 447 | // stream is stopped, it doesn't return the right thing - commenting out for now. |
448 | // if ( gAudiop->isInternetStreamPlaying() == 0 ) | 448 | // if ( gAudioStream->isInternetStreamPlaying() == 0 ) |
449 | { | 449 | { |
450 | gAudiop->startInternetStream(parcel->getMusicURL()); | 450 | gAudioStream->startInternetStream(parcel->getMusicURL()); |
451 | //awfixme sTitleObserver.init(parcel->getMusicURL()); | ||
452 | } | 451 | } |
453 | } | 452 | } |
454 | } | 453 | } |
@@ -456,9 +455,9 @@ void LLOverlayBar::toggleMusicPlay(void*) | |||
456 | else | 455 | else |
457 | { | 456 | { |
458 | gOverlayBar->mMusicState = STOPPED; // desired state | 457 | gOverlayBar->mMusicState = STOPPED; // desired state |
459 | if (gAudiop) | 458 | if (gAudioStream) |
460 | { | 459 | { |
461 | gAudiop->stopInternetStream(); | 460 | gAudioStream->stopInternetStream(); |
462 | } | 461 | } |
463 | } | 462 | } |
464 | } | 463 | } |
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp index e47ae2a..6b3be29 100644 --- a/linden/indra/newview/llpanelavatar.cpp +++ b/linden/indra/newview/llpanelavatar.cpp | |||
@@ -416,6 +416,7 @@ BOOL LLPanelAvatarWeb::postBuild(void) | |||
416 | childSetControlName("auto_load","AutoLoadWebProfiles"); | 416 | childSetControlName("auto_load","AutoLoadWebProfiles"); |
417 | 417 | ||
418 | mWebBrowser = getChild<LLMediaCtrl>("profile_html"); | 418 | mWebBrowser = getChild<LLMediaCtrl>("profile_html"); |
419 | |||
419 | mWebBrowser->addObserver(this); | 420 | mWebBrowser->addObserver(this); |
420 | 421 | ||
421 | // links open in internally | 422 | // links open in internally |
@@ -490,7 +491,17 @@ void LLPanelAvatarWeb::refresh() | |||
490 | mNavigateTo = ""; | 491 | mNavigateTo = ""; |
491 | } | 492 | } |
492 | } | 493 | } |
494 | void LLPanelAvatarWeb::onVisibilityChange(BOOL new_visibility) | ||
495 | { | ||
496 | LLPluginClassMedia::EPriority new_priority; | ||
493 | 497 | ||
498 | if (new_visibility) | ||
499 | new_priority = LLPluginClassMedia::PRIORITY_NORMAL; | ||
500 | else | ||
501 | new_priority = LLPluginClassMedia::PRIORITY_HIDDEN; | ||
502 | |||
503 | mWebBrowser->getMediaPlugin()->setPriority(new_priority); | ||
504 | } | ||
494 | 505 | ||
495 | void LLPanelAvatarWeb::enableControls(BOOL self) | 506 | void LLPanelAvatarWeb::enableControls(BOOL self) |
496 | { | 507 | { |
@@ -1346,7 +1357,33 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1346 | { | 1357 | { |
1347 | name_edit->setText(name); | 1358 | name_edit->setText(name); |
1348 | } | 1359 | } |
1360 | childSetVisible("name", TRUE); | ||
1361 | } | ||
1362 | LLNameEditor* complete_name_edit = getChild<LLNameEditor>("complete_name"); | ||
1363 | if (complete_name_edit) | ||
1364 | { | ||
1365 | if (LLAvatarNameCache::useDisplayNames()) | ||
1366 | { | ||
1367 | LLAvatarName avatar_name; | ||
1368 | if (LLAvatarNameCache::get(avatar_id, &avatar_name)) | ||
1369 | { | ||
1370 | // Always show "Display Name [Legacy Name]" for security reasons | ||
1371 | complete_name_edit->setText(avatar_name.getNames()); | ||
1372 | } | ||
1373 | else | ||
1374 | { | ||
1375 | complete_name_edit->setText(name_edit->getText()); | ||
1376 | LLAvatarNameCache::get(avatar_id, boost::bind(&LLPanelAvatar::completeNameCallback, _1, _2, this)); | ||
1377 | } | ||
1378 | childSetVisible("name", FALSE); | ||
1379 | childSetVisible("complete_name", TRUE); | ||
1380 | } | ||
1381 | else | ||
1382 | { | ||
1383 | childSetVisible("complete_name", FALSE); | ||
1384 | } | ||
1349 | } | 1385 | } |
1386 | |||
1350 | // if (avatar_changed) | 1387 | // if (avatar_changed) |
1351 | { | 1388 | { |
1352 | // While we're waiting for data off the network, clear out the | 1389 | // While we're waiting for data off the network, clear out the |
@@ -1469,6 +1506,22 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1469 | } | 1506 | } |
1470 | } | 1507 | } |
1471 | 1508 | ||
1509 | void LLPanelAvatar::completeNameCallback(const LLUUID& agent_id, | ||
1510 | const LLAvatarName& avatar_name, | ||
1511 | void *userdata) | ||
1512 | { | ||
1513 | LLPanelAvatar* self = (LLPanelAvatar*)userdata; | ||
1514 | if (!LLAvatarNameCache::useDisplayNames() || agent_id != self->mAvatarID) | ||
1515 | { | ||
1516 | return; | ||
1517 | } | ||
1518 | LLLineEditor* complete_name_edit = self->getChild<LLLineEditor>("complete_name"); | ||
1519 | if (complete_name_edit) | ||
1520 | { | ||
1521 | // Always show "Display Name [Legacy Name]" for security reasons | ||
1522 | complete_name_edit->setText(avatar_name.getNames()); | ||
1523 | } | ||
1524 | } | ||
1472 | 1525 | ||
1473 | void LLPanelAvatar::resetGroupList() | 1526 | void LLPanelAvatar::resetGroupList() |
1474 | { | 1527 | { |
diff --git a/linden/indra/newview/llpanelavatar.h b/linden/indra/newview/llpanelavatar.h index b687cd8..3a90196 100644 --- a/linden/indra/newview/llpanelavatar.h +++ b/linden/indra/newview/llpanelavatar.h | |||
@@ -33,6 +33,7 @@ | |||
33 | #ifndef LL_LLPANELAVATAR_H | 33 | #ifndef LL_LLPANELAVATAR_H |
34 | #define LL_LLPANELAVATAR_H | 34 | #define LL_LLPANELAVATAR_H |
35 | 35 | ||
36 | #include "llavatarnamecache.h" | ||
36 | #include "llpanel.h" | 37 | #include "llpanel.h" |
37 | #include "v3dmath.h" | 38 | #include "v3dmath.h" |
38 | #include "lluuid.h" | 39 | #include "lluuid.h" |
@@ -76,7 +77,6 @@ public: | |||
76 | /*virtual*/ void draw(); | 77 | /*virtual*/ void draw(); |
77 | 78 | ||
78 | LLPanelAvatar* getPanelAvatar() const { return mPanelAvatar; } | 79 | LLPanelAvatar* getPanelAvatar() const { return mPanelAvatar; } |
79 | |||
80 | void setDataRequested(bool requested) { mDataRequested = requested; } | 80 | void setDataRequested(bool requested) { mDataRequested = requested; } |
81 | bool isDataRequested() const { return mDataRequested; } | 81 | bool isDataRequested() const { return mDataRequested; } |
82 | 82 | ||
@@ -143,14 +143,15 @@ public: | |||
143 | LLPanelAvatarWeb(const std::string& name, const LLRect& rect, LLPanelAvatar* panel_avatar); | 143 | LLPanelAvatarWeb(const std::string& name, const LLRect& rect, LLPanelAvatar* panel_avatar); |
144 | /*virtual*/ ~LLPanelAvatarWeb(); | 144 | /*virtual*/ ~LLPanelAvatarWeb(); |
145 | /*virtual*/ BOOL postBuild(void); | 145 | /*virtual*/ BOOL postBuild(void); |
146 | |||
147 | /*virtual*/ void refresh(); | 146 | /*virtual*/ void refresh(); |
147 | /*virtual*/ void onVisibilityChange(BOOL new_visibility); | ||
148 | 148 | ||
149 | void enableControls(BOOL own_avatar); | 149 | void enableControls(BOOL own_avatar); |
150 | 150 | ||
151 | void setWebURL(std::string url); | 151 | void setWebURL(std::string url); |
152 | 152 | ||
153 | void load(std::string url); | 153 | void load(std::string url); |
154 | |||
154 | static void onURLKeystroke(LLLineEditor* editor, void* data); | 155 | static void onURLKeystroke(LLLineEditor* editor, void* data); |
155 | static void onCommitLoad(LLUICtrl* ctrl, void* data); | 156 | static void onCommitLoad(LLUICtrl* ctrl, void* data); |
156 | static void onCommitURL(LLUICtrl* ctrl, void* data); | 157 | static void onCommitURL(LLUICtrl* ctrl, void* data); |
@@ -335,6 +336,9 @@ private: | |||
335 | static bool finishUnfreeze(const LLSD& notification, const LLSD& response); | 336 | static bool finishUnfreeze(const LLSD& notification, const LLSD& response); |
336 | 337 | ||
337 | static void showProfileCallback(S32 option, void *userdata); | 338 | static void showProfileCallback(S32 option, void *userdata); |
339 | static void completeNameCallback(const LLUUID& agent_id, | ||
340 | const LLAvatarName& avatar_name, | ||
341 | void *userdata); | ||
338 | 342 | ||
339 | static void* createPanelAvatar(void* data); | 343 | static void* createPanelAvatar(void* data); |
340 | static void* createFloaterAvatarInfo(void* data); | 344 | static void* createFloaterAvatarInfo(void* data); |
diff --git a/linden/indra/newview/llpaneldirfind.cpp b/linden/indra/newview/llpaneldirfind.cpp index 342ffec..719a7a0 100644 --- a/linden/indra/newview/llpaneldirfind.cpp +++ b/linden/indra/newview/llpaneldirfind.cpp | |||
@@ -62,6 +62,7 @@ | |||
62 | #include "lluictrlfactory.h" | 62 | #include "lluictrlfactory.h" |
63 | #include "llfloaterdirectory.h" | 63 | #include "llfloaterdirectory.h" |
64 | #include "llpaneldirbrowser.h" | 64 | #include "llpaneldirbrowser.h" |
65 | #include "llpluginclassmedia.h" | ||
65 | 66 | ||
66 | #include <boost/tokenizer.hpp> | 67 | #include <boost/tokenizer.hpp> |
67 | #if LL_WINDOWS | 68 | #if LL_WINDOWS |
@@ -196,10 +197,17 @@ void LLPanelDirFind::draw() | |||
196 | // virtual | 197 | // virtual |
197 | void LLPanelDirFind::onVisibilityChange(BOOL new_visibility) | 198 | void LLPanelDirFind::onVisibilityChange(BOOL new_visibility) |
198 | { | 199 | { |
200 | LLPluginClassMedia::EPriority new_priority; | ||
199 | if (new_visibility) | 201 | if (new_visibility) |
200 | { | 202 | { |
201 | mFloaterDirectory->hideAllDetailPanels(); | 203 | mFloaterDirectory->hideAllDetailPanels(); |
204 | new_priority = LLPluginClassMedia::PRIORITY_NORMAL; | ||
202 | } | 205 | } |
206 | else | ||
207 | new_priority = LLPluginClassMedia::PRIORITY_HIDDEN; | ||
208 | |||
209 | mWebBrowser->getMediaPlugin()->setPriority(new_priority); | ||
210 | |||
203 | LLPanel::onVisibilityChange(new_visibility); | 211 | LLPanel::onVisibilityChange(new_visibility); |
204 | } | 212 | } |
205 | 213 | ||
diff --git a/linden/indra/newview/llpanelgeneral.cpp b/linden/indra/newview/llpanelgeneral.cpp index fc6073a..70146ce 100644 --- a/linden/indra/newview/llpanelgeneral.cpp +++ b/linden/indra/newview/llpanelgeneral.cpp | |||
@@ -98,6 +98,9 @@ BOOL LLPanelGeneral::postBuild() | |||
98 | childSetValue("mini_map_notify_chat", gSavedSettings.getBOOL("MiniMapNotifyChatRange")); | 98 | childSetValue("mini_map_notify_chat", gSavedSettings.getBOOL("MiniMapNotifyChatRange")); |
99 | childSetValue("mini_map_notify_sim", gSavedSettings.getBOOL("MiniMapNotifySimRange")); | 99 | childSetValue("mini_map_notify_sim", gSavedSettings.getBOOL("MiniMapNotifySimRange")); |
100 | 100 | ||
101 | // mDisplayNamesUsage = gSavedSettings.getU32("DisplayNamesUsage"); | ||
102 | // mLegacyNamesForFriends = gSavedSettings.getBOOL("LegacyNamesForFriends"); | ||
103 | |||
101 | getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor")); | 104 | getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor")); |
102 | 105 | ||
103 | childSetValue("ui_scale_slider", gSavedSettings.getF32("UIScaleFactor")); | 106 | childSetValue("ui_scale_slider", gSavedSettings.getF32("UIScaleFactor")); |
@@ -210,6 +213,8 @@ void LLPanelGeneral::apply() | |||
210 | 213 | ||
211 | void LLPanelGeneral::cancel() | 214 | void LLPanelGeneral::cancel() |
212 | { | 215 | { |
216 | // gSavedSettings.setU32("DisplayNamesUsage", mDisplayNamesUsage); | ||
217 | // gSavedSettings.setBOOL("LegacyNamesForFriends", mDisplayNamesUsage); | ||
213 | } | 218 | } |
214 | 219 | ||
215 | // static | 220 | // static |
diff --git a/linden/indra/newview/llpanelgeneral.h b/linden/indra/newview/llpanelgeneral.h index e85fdf8..56cc3de 100644 --- a/linden/indra/newview/llpanelgeneral.h +++ b/linden/indra/newview/llpanelgeneral.h | |||
@@ -51,6 +51,9 @@ private: | |||
51 | static void onClickResetUISize(void*); | 51 | static void onClickResetUISize(void*); |
52 | static void onClickGrid(void*); | 52 | static void onClickGrid(void*); |
53 | static void onLocationChanged(LLUICtrl* ctrl, void* data); | 53 | static void onLocationChanged(LLUICtrl* ctrl, void* data); |
54 | |||
55 | U32 mDisplayNamesUsage; | ||
56 | bool mLegacyNamesForFriends; | ||
54 | }; | 57 | }; |
55 | 58 | ||
56 | #endif | 59 | #endif |
diff --git a/linden/indra/newview/llpanelgroupgeneral.cpp b/linden/indra/newview/llpanelgroupgeneral.cpp index 6878f84..7ff25a7 100644 --- a/linden/indra/newview/llpanelgroupgeneral.cpp +++ b/linden/indra/newview/llpanelgroupgeneral.cpp | |||
@@ -561,9 +561,13 @@ bool LLPanelGroupGeneral::apply(std::string& mesg) | |||
561 | gIMMgr->saveIgnoreGroup(); | 561 | gIMMgr->saveIgnoreGroup(); |
562 | } | 562 | } |
563 | 563 | ||
564 | mCtrlReceiveNotices->resetDirty(); //resetDirty() here instead of in update because this is where the settings | 564 | // Make sure we update the group list in our contacts list and our IMs -- MC |
565 | mCtrlListGroup->resetDirty(); //are actually being applied. onCommitUserOnly doesn't call updateChanged directly. | 565 | if (gIMMgr) |
566 | mCtrlReceiveChat->resetDirty(); | 566 | { |
567 | // update the talk view | ||
568 | gIMMgr->refresh(); | ||
569 | } | ||
570 | gAgent.fireEvent(new LLEvent(&gAgent, "new group"), ""); | ||
567 | 571 | ||
568 | mChanged = FALSE; | 572 | mChanged = FALSE; |
569 | 573 | ||
@@ -778,21 +782,14 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) | |||
778 | { | 782 | { |
779 | mCtrlReceiveNotices->setEnabled(mAllowEdit); | 783 | mCtrlReceiveNotices->setEnabled(mAllowEdit); |
780 | } | 784 | } |
785 | mCtrlReceiveNotices->resetDirty(); | ||
781 | } | 786 | } |
782 | 787 | ||
783 | if (mCtrlReceiveChat) | 788 | if (mCtrlReceiveChat) |
784 | { | 789 | { |
785 | mCtrlReceiveChat->setVisible(is_member); | 790 | mCtrlReceiveChat->setVisible(is_member); |
786 | mCtrlReceiveChat->setEnabled(TRUE); | 791 | mCtrlReceiveChat->setEnabled(TRUE); |
787 | } | 792 | mCtrlReceiveChat->resetDirty(); |
788 | |||
789 | if (mCtrlListGroup) | ||
790 | { | ||
791 | mCtrlListGroup->setVisible(is_member); | ||
792 | if (is_member) | ||
793 | { | ||
794 | mCtrlListGroup->setEnabled(mAllowEdit); | ||
795 | } | ||
796 | } | 793 | } |
797 | 794 | ||
798 | 795 | ||
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 31647e9..9734a18 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp | |||
@@ -41,6 +41,7 @@ | |||
41 | #endif | 41 | #endif |
42 | #include "llpluginclassmediaowner.h" | 42 | #include "llpluginclassmediaowner.h" |
43 | #include "llviewermedia_streamingaudio.h" | 43 | #include "llviewermedia_streamingaudio.h" |
44 | #include "kokuastreamingaudio.h" | ||
44 | #include "llaudioengine.h" | 45 | #include "llaudioengine.h" |
45 | 46 | ||
46 | #ifdef LL_FMOD | 47 | #ifdef LL_FMOD |
@@ -681,19 +682,13 @@ bool idle_startup() | |||
681 | delete gAudiop; | 682 | delete gAudiop; |
682 | gAudiop = NULL; | 683 | gAudiop = NULL; |
683 | } | 684 | } |
684 | |||
685 | if (gAudiop) | ||
686 | { | ||
687 | // if the audio engine hasn't set up its own preferred handler for streaming audio then set up the generic streaming audio implementation which uses media plugins | ||
688 | if (NULL == gAudiop->getStreamingAudioImpl()) | ||
689 | { | ||
690 | LL_INFOS("AppInit") << "Using media plugins to render streaming audio" << LL_ENDL; | ||
691 | gAudiop->setStreamingAudioImpl(new LLStreamingAudio_MediaPlugins()); | ||
692 | } | 685 | } |
693 | } | 686 | } |
694 | } | 687 | |
695 | } | 688 | |
696 | 689 | if (!gAudioStream) | |
690 | gAudioStream = new KOKUAStreamingAudio(new LLStreamingAudio_MediaPlugins()); | ||
691 | |||
697 | LL_INFOS("AppInit") << "Audio Engine Initialized." << LL_ENDL; | 692 | LL_INFOS("AppInit") << "Audio Engine Initialized." << LL_ENDL; |
698 | 693 | ||
699 | 694 | ||
@@ -877,7 +872,47 @@ bool idle_startup() | |||
877 | 872 | ||
878 | if (STATE_LOGIN_CLEANUP == LLStartUp::getStartupState()) | 873 | if (STATE_LOGIN_CLEANUP == LLStartUp::getStartupState()) |
879 | { | 874 | { |
875 | |||
880 | LL_DEBUGS("AppInitStartupState") << "STATE_LOGIN_CLEANUP" << LL_ENDL; | 876 | LL_DEBUGS("AppInitStartupState") << "STATE_LOGIN_CLEANUP" << LL_ENDL; |
877 | |||
878 | gDisconnected = TRUE; | ||
879 | |||
880 | std::string cmd_line_grid_choice = gSavedSettings.getString("CmdLineGridChoice"); | ||
881 | std::string cmd_line_login_uri = gSavedSettings.getLLSD("CmdLineLoginURI").asString(); | ||
882 | if(!cmd_line_grid_choice.empty() && cmd_line_login_uri.empty()) | ||
883 | { | ||
884 | gHippoGridManager->setCurrentGrid(cmd_line_grid_choice); | ||
885 | } | ||
886 | |||
887 | gHippoGridManager->setCurrentGridAsConnected(); | ||
888 | gHippoLimits->setLimits(); | ||
889 | |||
890 | if (gHippoGridManager->getConnectedGrid()->isSecondLife()) | ||
891 | { | ||
892 | LLStartUp::setStartupState( STATE_LECTURE_PRIVACY ); | ||
893 | LLFirstUse::Privacy(); | ||
894 | } | ||
895 | else | ||
896 | { | ||
897 | LLStartUp::setStartupState( STATE_PRIVACY_LECTURED ); | ||
898 | } | ||
899 | |||
900 | return FALSE; | ||
901 | |||
902 | } | ||
903 | |||
904 | if (STATE_LECTURE_PRIVACY == LLStartUp::getStartupState()) | ||
905 | { | ||
906 | LL_DEBUGS("AppInitStartupState") << "STATE_LECTURE_PRIVACY" << LL_ENDL; | ||
907 | |||
908 | //wait for the user to decide | ||
909 | ms_sleep(1); | ||
910 | return FALSE; | ||
911 | } | ||
912 | |||
913 | if (STATE_PRIVACY_LECTURED == LLStartUp::getStartupState()) | ||
914 | { | ||
915 | LL_DEBUGS("AppInitStartupState") << "STATE_PRIVACY_LECTURED" << LL_ENDL; | ||
881 | //reset the values that could have come in from a slurl | 916 | //reset the values that could have come in from a slurl |
882 | if (!gLoginHandler.getWebLoginKey().isNull()) | 917 | if (!gLoginHandler.getWebLoginKey().isNull()) |
883 | { | 918 | { |
@@ -919,15 +954,9 @@ bool idle_startup() | |||
919 | gDebugInfo["LoginName"] = firstname + " " + lastname; | 954 | gDebugInfo["LoginName"] = firstname + " " + lastname; |
920 | } | 955 | } |
921 | 956 | ||
922 | std::string cmd_line_grid_choice = gSavedSettings.getString("CmdLineGridChoice"); | ||
923 | std::string cmd_line_login_uri = gSavedSettings.getLLSD("CmdLineLoginURI").asString(); | ||
924 | if(!cmd_line_grid_choice.empty() && cmd_line_login_uri.empty()) | ||
925 | { | ||
926 | gHippoGridManager->setCurrentGrid(cmd_line_grid_choice); | ||
927 | } | ||
928 | 957 | ||
929 | gHippoGridManager->setCurrentGridAsConnected(); | 958 | |
930 | gHippoLimits->setLimits(); | 959 | |
931 | // create necessary directories | 960 | // create necessary directories |
932 | // *FIX: these mkdir's should error check | 961 | // *FIX: these mkdir's should error check |
933 | gDirUtilp->setLindenUserDir(gHippoGridManager->getCurrentGridNick(), firstname, lastname); | 962 | gDirUtilp->setLindenUserDir(gHippoGridManager->getCurrentGridNick(), firstname, lastname); |
@@ -2005,6 +2034,12 @@ bool idle_startup() | |||
2005 | 2034 | ||
2006 | // Load stored cache if possible | 2035 | // Load stored cache if possible |
2007 | LLAppViewer::instance()->loadNameCache(); | 2036 | LLAppViewer::instance()->loadNameCache(); |
2037 | |||
2038 | // Start cache in not-running state until we figure out if we have | ||
2039 | // capabilities for display name lookup | ||
2040 | LLAvatarNameCache::initClass(false); | ||
2041 | LLAvatarNameCache::setUseDisplayNames(gSavedSettings.getU32("DisplayNamesUsage")); | ||
2042 | LLAvatarName::sOmitResidentAsLastName = (bool)gSavedSettings.getBOOL("OmitResidentAsLastName"); | ||
2008 | } | 2043 | } |
2009 | 2044 | ||
2010 | // *Note: this is where gWorldMap used to be initialized. | 2045 | // *Note: this is where gWorldMap used to be initialized. |
@@ -3772,6 +3807,8 @@ std::string LLStartUp::startupStateToString(EStartupState state) | |||
3772 | RTNENUM( STATE_LOGIN_SHOW ); | 3807 | RTNENUM( STATE_LOGIN_SHOW ); |
3773 | RTNENUM( STATE_LOGIN_WAIT ); | 3808 | RTNENUM( STATE_LOGIN_WAIT ); |
3774 | RTNENUM( STATE_LOGIN_CLEANUP ); | 3809 | RTNENUM( STATE_LOGIN_CLEANUP ); |
3810 | RTNENUM( STATE_LECTURE_PRIVACY ); | ||
3811 | RTNENUM( STATE_PRIVACY_LECTURED ); | ||
3775 | RTNENUM( STATE_LOGIN_VOICE_LICENSE ); | 3812 | RTNENUM( STATE_LOGIN_VOICE_LICENSE ); |
3776 | RTNENUM( STATE_UPDATE_CHECK ); | 3813 | RTNENUM( STATE_UPDATE_CHECK ); |
3777 | RTNENUM( STATE_LOGIN_AUTH_INIT ); | 3814 | RTNENUM( STATE_LOGIN_AUTH_INIT ); |
diff --git a/linden/indra/newview/llstartup.h b/linden/indra/newview/llstartup.h index 08862e6..3fe8daa 100644 --- a/linden/indra/newview/llstartup.h +++ b/linden/indra/newview/llstartup.h | |||
@@ -49,7 +49,9 @@ typedef enum { | |||
49 | STATE_BROWSER_INIT, // Initialize web browser for login screen | 49 | STATE_BROWSER_INIT, // Initialize web browser for login screen |
50 | STATE_LOGIN_SHOW, // Show login screen | 50 | STATE_LOGIN_SHOW, // Show login screen |
51 | STATE_LOGIN_WAIT, // Wait for user input at login screen | 51 | STATE_LOGIN_WAIT, // Wait for user input at login screen |
52 | STATE_LOGIN_CLEANUP, // Get rid of login screen and start login | 52 | STATE_LOGIN_CLEANUP, // lecture about privacy |
53 | STATE_LECTURE_PRIVACY, // wait until the lecture was read | ||
54 | STATE_PRIVACY_LECTURED, // Get rid of login screen and start login | ||
53 | STATE_LOGIN_VOICE_LICENSE, // Show license agreement for using voice | 55 | STATE_LOGIN_VOICE_LICENSE, // Show license agreement for using voice |
54 | STATE_UPDATE_CHECK, // Wait for user at a dialog box (updates, term-of-service, etc) | 56 | STATE_UPDATE_CHECK, // Wait for user at a dialog box (updates, term-of-service, etc) |
55 | STATE_LOGIN_AUTH_INIT, // Start login to SL servers | 57 | STATE_LOGIN_AUTH_INIT, // Start login to SL servers |
diff --git a/linden/indra/newview/lltexlayer.cpp b/linden/indra/newview/lltexlayer.cpp index c8e1298..ceef28b 100644 --- a/linden/indra/newview/lltexlayer.cpp +++ b/linden/indra/newview/lltexlayer.cpp | |||
@@ -213,6 +213,7 @@ BOOL LLTexLayerSetBuffer::needsRender() | |||
213 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); | 213 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); |
214 | BOOL upload_now = needsUploadNow(); | 214 | BOOL upload_now = needsUploadNow(); |
215 | BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; | 215 | BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; |
216 | |||
216 | if (needs_update) | 217 | if (needs_update) |
217 | { | 218 | { |
218 | BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT); | 219 | BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT); |
@@ -275,16 +276,16 @@ BOOL LLTexLayerSetBuffer::render() | |||
275 | } | 276 | } |
276 | else | 277 | else |
277 | { | 278 | { |
278 | // mUploadPending = FALSE;//see... | 279 | //mUploadPending = FALSE;//see... |
279 | // mNeedsUpload = FALSE;// ...below... | 280 | //mNeedsUpload = FALSE;// ...below... |
280 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); | 281 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); |
281 | if (avatar) | 282 | if (avatar) |
282 | { | 283 | { |
283 | avatar->setNewBakedTexture(avatar->getBakedTE(mTexLayerSet), IMG_INVISIBLE); | 284 | avatar->setNewBakedTexture(avatar->getBakedTE(mTexLayerSet), IMG_INVISIBLE); |
284 | llinfos << "Invisible baked texture set for " << mTexLayerSet->getBodyRegion() << llendl; | 285 | llinfos << "Invisible baked texture set for " << mTexLayerSet->getBodyRegion() << llendl; |
285 | } | 286 | } |
286 | readBackAndUpload(); //... here: Opensim is not happy if we don't | 287 | readBackAndUpload(); //... here: Opensim is not happy if we don't |
287 | //TODO: find out if SL is happy if we do | 288 | //TODO: find out if SL is happy if we do |
288 | } | 289 | } |
289 | } | 290 | } |
290 | } | 291 | } |
@@ -350,12 +351,11 @@ void LLTexLayerSetBuffer::readBackAndUpload() | |||
350 | // writes into baked_color_data | 351 | // writes into baked_color_data |
351 | const char* comment_text = NULL; | 352 | const char* comment_text = NULL; |
352 | 353 | ||
353 | S32 baked_image_components = 5; // red green blue bump clothing | 354 | S32 baked_image_components = 5; // red green blue bump clothing |
354 | LLPointer<LLImageRaw> baked_image = new LLImageRaw( mWidth, mHeight, baked_image_components ); | 355 | LLPointer<LLImageRaw> baked_image = new LLImageRaw( mWidth, mHeight, baked_image_components ); |
355 | U8* baked_image_data = baked_image->getData(); | 356 | U8* baked_image_data = baked_image->getData(); |
356 | 357 | ||
357 | comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // 5 channels: rgb, heightfield/alpha, mask | 358 | comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // 5 channels: rgb, heightfield/alpha, mask |
358 | |||
359 | S32 i = 0; | 359 | S32 i = 0; |
360 | for (S32 u = 0; u < mWidth; u++) | 360 | for (S32 u = 0; u < mWidth; u++) |
361 | { | 361 | { |
@@ -492,7 +492,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid, void* user | |||
492 | avatar->setNewBakedTexture(baked_te, uuid); | 492 | avatar->setNewBakedTexture(baked_te, uuid); |
493 | } | 493 | } |
494 | else | 494 | else |
495 | { | 495 | { |
496 | ++failures; | 496 | ++failures; |
497 | llinfos << "Baked upload failed (attempt " << failures << "/" << MAX_BAKE_UPLOAD_ATTEMPTS << "), "; | 497 | llinfos << "Baked upload failed (attempt " << failures << "/" << MAX_BAKE_UPLOAD_ATTEMPTS << "), "; |
498 | if (failures >= MAX_BAKE_UPLOAD_ATTEMPTS) | 498 | if (failures >= MAX_BAKE_UPLOAD_ATTEMPTS) |
@@ -1412,7 +1412,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) | |||
1412 | 1412 | ||
1413 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); | 1413 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); |
1414 | 1414 | ||
1415 | gGL.getTexUnit(0)->bind(image_gl); | 1415 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1416 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); | 1416 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); |
1417 | 1417 | ||
1418 | gl_rect_2d_simple_tex( width, height ); | 1418 | gl_rect_2d_simple_tex( width, height ); |
@@ -1430,7 +1430,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) | |||
1430 | LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); | 1430 | LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); |
1431 | if( image_gl ) | 1431 | if( image_gl ) |
1432 | { | 1432 | { |
1433 | gGL.getTexUnit(0)->bind(image_gl); | 1433 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1434 | gl_rect_2d_simple_tex( width, height ); | 1434 | gl_rect_2d_simple_tex( width, height ); |
1435 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); | 1435 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
1436 | } | 1436 | } |
@@ -1656,7 +1656,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 | |||
1656 | 1656 | ||
1657 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); | 1657 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); |
1658 | 1658 | ||
1659 | gGL.getTexUnit(0)->bind(image_gl); | 1659 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1660 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); | 1660 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); |
1661 | 1661 | ||
1662 | gl_rect_2d_simple_tex( width, height ); | 1662 | gl_rect_2d_simple_tex( width, height ); |
@@ -1678,7 +1678,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 | |||
1678 | ( (image_gl->getComponents() == 1) && getInfo()->mStaticImageIsMask ) ) | 1678 | ( (image_gl->getComponents() == 1) && getInfo()->mStaticImageIsMask ) ) |
1679 | { | 1679 | { |
1680 | LLGLSNoAlphaTest gls_no_alpha_test; | 1680 | LLGLSNoAlphaTest gls_no_alpha_test; |
1681 | gGL.getTexUnit(0)->bind(image_gl); | 1681 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1682 | gl_rect_2d_simple_tex( width, height ); | 1682 | gl_rect_2d_simple_tex( width, height ); |
1683 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); | 1683 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
1684 | } | 1684 | } |
@@ -2146,7 +2146,7 @@ BOOL LLTexLayerParamAlpha::render( S32 x, S32 y, S32 width, S32 height ) | |||
2146 | } | 2146 | } |
2147 | 2147 | ||
2148 | LLGLSNoAlphaTest gls_no_alpha_test; | 2148 | LLGLSNoAlphaTest gls_no_alpha_test; |
2149 | gGL.getTexUnit(0)->bind(mCachedProcessedImageGL); | 2149 | gGL.getTexUnit(0)->bind(mCachedProcessedImageGL, TRUE); |
2150 | gl_rect_2d_simple_tex( width, height ); | 2150 | gl_rect_2d_simple_tex( width, height ); |
2151 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); | 2151 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
2152 | stop_glerror(); | 2152 | stop_glerror(); |
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp index 4679137..2e7d585 100644 --- a/linden/indra/newview/lltexturecache.cpp +++ b/linden/indra/newview/lltexturecache.cpp | |||
@@ -736,9 +736,6 @@ void LLTextureCacheWorker::endWork(S32 param, bool aborted) | |||
736 | 736 | ||
737 | LLTextureCache::LLTextureCache(bool threaded) | 737 | LLTextureCache::LLTextureCache(bool threaded) |
738 | : LLWorkerThread("TextureCache", threaded), | 738 | : LLWorkerThread("TextureCache", threaded), |
739 | mWorkersMutex(NULL), | ||
740 | mHeaderMutex(NULL), | ||
741 | mListMutex(NULL), | ||
742 | mHeaderAPRFile(NULL), | 739 | mHeaderAPRFile(NULL), |
743 | mReadOnly(FALSE), | 740 | mReadOnly(FALSE), |
744 | mTexturesSizeTotal(0), | 741 | mTexturesSizeTotal(0), |
@@ -1543,7 +1540,7 @@ bool LLTextureCache::readComplete(handle_t handle, bool abort) | |||
1543 | } | 1540 | } |
1544 | } | 1541 | } |
1545 | 1542 | ||
1546 | unlockWorkers(); | 1543 | unlockWorkers(); |
1547 | 1544 | ||
1548 | if (delete_worker) worker->scheduleDelete(); | 1545 | if (delete_worker) worker->scheduleDelete(); |
1549 | 1546 | ||
diff --git a/linden/indra/newview/lltexturecache.h b/linden/indra/newview/lltexturecache.h index c859b9a..56b4c4f 100644 --- a/linden/indra/newview/lltexturecache.h +++ b/linden/indra/newview/lltexturecache.h | |||
@@ -139,9 +139,6 @@ protected: | |||
139 | std::string getTextureFileName(const LLUUID& id); | 139 | std::string getTextureFileName(const LLUUID& id); |
140 | void addCompleted(Responder* responder, bool success); | 140 | void addCompleted(Responder* responder, bool success); |
141 | 141 | ||
142 | protected: | ||
143 | //void setFileAPRPool(apr_pool_t* pool) { mFileAPRPool = pool ; } | ||
144 | |||
145 | private: | 142 | private: |
146 | void setDirNames(ELLPath location); | 143 | void setDirNames(ELLPath location); |
147 | void readHeaderCache(); | 144 | void readHeaderCache(); |
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp index f93a574..072af25 100644 --- a/linden/indra/newview/lltexturefetch.cpp +++ b/linden/indra/newview/lltexturefetch.cpp | |||
@@ -428,7 +428,6 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher, | |||
428 | mRetryAttempt(0), | 428 | mRetryAttempt(0), |
429 | mActiveCount(0), | 429 | mActiveCount(0), |
430 | mGetStatus(0), | 430 | mGetStatus(0), |
431 | mWorkMutex(NULL), | ||
432 | mFirstPacket(0), | 431 | mFirstPacket(0), |
433 | mLastPacket(-1), | 432 | mLastPacket(-1), |
434 | mTotalPackets(0), | 433 | mTotalPackets(0), |
@@ -1540,8 +1539,6 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image | |||
1540 | mDebugPause(FALSE), | 1539 | mDebugPause(FALSE), |
1541 | mPacketCount(0), | 1540 | mPacketCount(0), |
1542 | mBadPacketCount(0), | 1541 | mBadPacketCount(0), |
1543 | mQueueMutex(getAPRPool()), | ||
1544 | mNetworkQueueMutex(getAPRPool()), | ||
1545 | mTextureCache(cache), | 1542 | mTextureCache(cache), |
1546 | mImageDecodeThread(imagedecodethread), | 1543 | mImageDecodeThread(imagedecodethread), |
1547 | mTextureBandwidth(0), | 1544 | mTextureBandwidth(0), |
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp index 296d1bb..34735a3 100644 --- a/linden/indra/newview/lltoolpie.cpp +++ b/linden/indra/newview/lltoolpie.cpp | |||
@@ -645,8 +645,6 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask) | |||
645 | } | 645 | } |
646 | */ | 646 | */ |
647 | 647 | ||
648 | |||
649 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); | ||
650 | 648 | ||
651 | LLViewerObject *object = NULL; | 649 | LLViewerObject *object = NULL; |
652 | LLViewerObject *parent = NULL; | 650 | LLViewerObject *parent = NULL; |
@@ -697,9 +695,14 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask) | |||
697 | { | 695 | { |
698 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_HAND); | 696 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_HAND); |
699 | } | 697 | } |
698 | else | ||
699 | { | ||
700 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); | ||
701 | } | ||
700 | } | 702 | } |
701 | else | 703 | else |
702 | { | 704 | { |
705 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); | ||
703 | // We need to clear media hover flag | 706 | // We need to clear media hover flag |
704 | if (LLViewerMediaFocus::getInstance()->getMouseOverFlag()) | 707 | if (LLViewerMediaFocus::getInstance()->getMouseOverFlag()) |
705 | { | 708 | { |
diff --git a/linden/indra/newview/llvieweraudio.cpp b/linden/indra/newview/llvieweraudio.cpp index 91e7ce5..d465177 100644 --- a/linden/indra/newview/llvieweraudio.cpp +++ b/linden/indra/newview/llvieweraudio.cpp | |||
@@ -33,6 +33,7 @@ | |||
33 | #include "llviewerprecompiledheaders.h" | 33 | #include "llviewerprecompiledheaders.h" |
34 | 34 | ||
35 | #include "llaudioengine.h" | 35 | #include "llaudioengine.h" |
36 | #include "kokuastreamingaudio.h" | ||
36 | #include "llagent.h" | 37 | #include "llagent.h" |
37 | #include "llappviewer.h" | 38 | #include "llappviewer.h" |
38 | #include "llvieweraudio.h" | 39 | #include "llvieweraudio.h" |
@@ -46,69 +47,71 @@ | |||
46 | 47 | ||
47 | void init_audio() | 48 | void init_audio() |
48 | { | 49 | { |
49 | if (!gAudiop) | 50 | if (gAudiop) |
50 | { | 51 | { |
51 | llwarns << "Failed to create an appropriate Audio Engine" << llendl; | 52 | LLVector3d lpos_global = gAgent.getCameraPositionGlobal(); |
52 | return; | 53 | LLVector3 lpos_global_f; |
54 | |||
55 | lpos_global_f.setVec(lpos_global); | ||
56 | |||
57 | gAudiop->setListener(lpos_global_f, | ||
58 | LLVector3::zero, // LLViewerCamera::getInstance()->getVelocity(), // !!! BUG need to replace this with smoothed velocity! | ||
59 | LLViewerCamera::getInstance()->getUpAxis(), | ||
60 | LLViewerCamera::getInstance()->getAtAxis()); | ||
61 | |||
62 | // load up our initial set of sounds we'll want so they're in memory and ready to be played | ||
63 | |||
64 | bool mute_audio = gSavedSettings.getBOOL("MuteAudio"); | ||
65 | |||
66 | if (!mute_audio && FALSE == gSavedSettings.getBOOL("NoPreload")) | ||
67 | { | ||
68 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndAlert"))); | ||
69 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndBadKeystroke"))); | ||
70 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndChatFromObject"))); | ||
71 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndClick"))); | ||
72 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndClickRelease"))); | ||
73 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndHealthReductionF"))); | ||
74 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndHealthReductionM"))); | ||
75 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndIncomingChat"))); | ||
76 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndIncomingIM"))); | ||
77 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndInvApplyToObject"))); | ||
78 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndInvalidOp"))); | ||
79 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndInventoryCopyToInv"))); | ||
80 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndMoneyChangeDown"))); | ||
81 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndMoneyChangeUp"))); | ||
82 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectCopyToInv"))); | ||
83 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectCreate"))); | ||
84 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectDelete"))); | ||
85 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectRezIn"))); | ||
86 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectRezOut"))); | ||
87 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuAppear"))); | ||
88 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuHide"))); | ||
89 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight0"))); | ||
90 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight1"))); | ||
91 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight2"))); | ||
92 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight3"))); | ||
93 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight4"))); | ||
94 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight5"))); | ||
95 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight6"))); | ||
96 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight7"))); | ||
97 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndSnapshot"))); | ||
98 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStartAutopilot"))); | ||
99 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStartFollowpilot"))); | ||
100 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStartIM"))); | ||
101 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStopAutopilot"))); | ||
102 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTeleportOut"))); | ||
103 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTextureApplyToObject"))); | ||
104 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTextureCopyToInv"))); | ||
105 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTyping"))); | ||
106 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowClose"))); | ||
107 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowOpen"))); | ||
108 | } | ||
53 | } | 109 | } |
54 | LLVector3d lpos_global = gAgent.getCameraPositionGlobal(); | 110 | else |
55 | LLVector3 lpos_global_f; | ||
56 | |||
57 | lpos_global_f.setVec(lpos_global); | ||
58 | |||
59 | gAudiop->setListener(lpos_global_f, | ||
60 | LLVector3::zero, // LLViewerCamera::getInstance()->getVelocity(), // !!! BUG need to replace this with smoothed velocity! | ||
61 | LLViewerCamera::getInstance()->getUpAxis(), | ||
62 | LLViewerCamera::getInstance()->getAtAxis()); | ||
63 | |||
64 | // load up our initial set of sounds we'll want so they're in memory and ready to be played | ||
65 | |||
66 | bool mute_audio = gSavedSettings.getBOOL("MuteAudio"); | ||
67 | |||
68 | if (!mute_audio && FALSE == gSavedSettings.getBOOL("NoPreload")) | ||
69 | { | 111 | { |
70 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndAlert"))); | 112 | llwarns << "Failed to create an appropriate Audio Engine" << llendl; |
71 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndBadKeystroke"))); | 113 | return; |
72 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndChatFromObject"))); | ||
73 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndClick"))); | ||
74 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndClickRelease"))); | ||
75 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndHealthReductionF"))); | ||
76 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndHealthReductionM"))); | ||
77 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndIncomingChat"))); | ||
78 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndIncomingIM"))); | ||
79 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndInvApplyToObject"))); | ||
80 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndInvalidOp"))); | ||
81 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndInventoryCopyToInv"))); | ||
82 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndMoneyChangeDown"))); | ||
83 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndMoneyChangeUp"))); | ||
84 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectCopyToInv"))); | ||
85 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectCreate"))); | ||
86 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectDelete"))); | ||
87 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectRezIn"))); | ||
88 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndObjectRezOut"))); | ||
89 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuAppear"))); | ||
90 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuHide"))); | ||
91 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight0"))); | ||
92 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight1"))); | ||
93 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight2"))); | ||
94 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight3"))); | ||
95 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight4"))); | ||
96 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight5"))); | ||
97 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight6"))); | ||
98 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndPieMenuSliceHighlight7"))); | ||
99 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndSnapshot"))); | ||
100 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStartAutopilot"))); | ||
101 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStartFollowpilot"))); | ||
102 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStartIM"))); | ||
103 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndStopAutopilot"))); | ||
104 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTeleportOut"))); | ||
105 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTextureApplyToObject"))); | ||
106 | //gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTextureCopyToInv"))); | ||
107 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndTyping"))); | ||
108 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowClose"))); | ||
109 | gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowOpen"))); | ||
110 | } | 114 | } |
111 | |||
112 | audio_update_volume(true); | 115 | audio_update_volume(true); |
113 | } | 116 | } |
114 | 117 | ||
@@ -158,12 +161,12 @@ void audio_update_volume(bool force_update) | |||
158 | } | 161 | } |
159 | 162 | ||
160 | // Streaming Music | 163 | // Streaming Music |
161 | if (gAudiop) | 164 | if (gAudioStream) |
162 | { | 165 | { |
163 | F32 music_volume = gSavedSettings.getF32("AudioLevelMusic"); | 166 | F32 music_volume = gSavedSettings.getF32("AudioLevelMusic"); |
164 | BOOL music_muted = gSavedSettings.getBOOL("MuteMusic"); | 167 | BOOL music_muted = gSavedSettings.getBOOL("MuteMusic"); |
165 | music_volume = mute_volume * master_volume * (music_volume*music_volume); | 168 | music_volume = mute_volume * master_volume * (music_volume*music_volume); |
166 | gAudiop->setInternetStreamGain ( music_muted ? 0.f : music_volume ); | 169 | gAudioStream->setInternetStreamGain ( music_muted ? 0.f : music_volume ); |
167 | 170 | ||
168 | } | 171 | } |
169 | 172 | ||
diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp index 3675072..572f64a 100644 --- a/linden/indra/newview/llviewercontrol.cpp +++ b/linden/indra/newview/llviewercontrol.cpp | |||
@@ -38,8 +38,11 @@ | |||
38 | #include "indra_constants.h" | 38 | #include "indra_constants.h" |
39 | 39 | ||
40 | // For Listeners | 40 | // For Listeners |
41 | #include "llaudioengine.h" | 41 | // #include "llaudioengine.h" |
42 | #include "kokuastreamingaudio.h" | ||
42 | #include "llagent.h" | 43 | #include "llagent.h" |
44 | #include "llavatarnamecache.h" | ||
45 | #include "llcallingcard.h" | ||
43 | #include "llconsole.h" | 46 | #include "llconsole.h" |
44 | #include "lldrawpoolterrain.h" | 47 | #include "lldrawpoolterrain.h" |
45 | #include "llflexibleobject.h" | 48 | #include "llflexibleobject.h" |
@@ -310,7 +313,7 @@ static bool handleJoystickChanged(const LLSD& newvalue) | |||
310 | 313 | ||
311 | static bool handleAudioStreamMusicChanged(const LLSD& newvalue) | 314 | static bool handleAudioStreamMusicChanged(const LLSD& newvalue) |
312 | { | 315 | { |
313 | if (gAudiop) | 316 | if (gAudioStream) |
314 | { | 317 | { |
315 | if ( newvalue.asBoolean() ) | 318 | if ( newvalue.asBoolean() ) |
316 | { | 319 | { |
@@ -319,15 +322,15 @@ static bool handleAudioStreamMusicChanged(const LLSD& newvalue) | |||
319 | { | 322 | { |
320 | // if stream is already playing, don't call this | 323 | // if stream is already playing, don't call this |
321 | // otherwise music will briefly stop | 324 | // otherwise music will briefly stop |
322 | if ( !gAudiop->isInternetStreamPlaying() ) | 325 | if ( !gAudioStream->isInternetStreamPlaying() ) |
323 | { | 326 | { |
324 | gAudiop->startInternetStream(LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL()); | 327 | gAudioStream->startInternetStream(LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL()); |
325 | } | 328 | } |
326 | } | 329 | } |
327 | } | 330 | } |
328 | else | 331 | else |
329 | { | 332 | { |
330 | gAudiop->stopInternetStream(); | 333 | gAudioStream->stopInternetStream(); |
331 | } | 334 | } |
332 | } | 335 | } |
333 | return true; | 336 | return true; |
@@ -425,6 +428,28 @@ static bool handleAuditTextureChanged(const LLSD& newvalue) | |||
425 | return true; | 428 | return true; |
426 | } | 429 | } |
427 | 430 | ||
431 | static bool handleDisplayNamesUsageChanged(const LLSD& newvalue) | ||
432 | { | ||
433 | LLAvatarNameCache::setUseDisplayNames((U32)newvalue.asInteger()); | ||
434 | LLVOAvatar::invalidateNameTags(); | ||
435 | LLAvatarTracker::instance().dirtyBuddies(); | ||
436 | return true; | ||
437 | } | ||
438 | |||
439 | static bool handleOmitResidentAsLastNameChanged(const LLSD& newvalue) | ||
440 | { | ||
441 | LLAvatarName::sOmitResidentAsLastName =(bool)newvalue.asBoolean(); | ||
442 | LLVOAvatar::invalidateNameTags(); | ||
443 | LLAvatarTracker::instance().dirtyBuddies(); | ||
444 | return true; | ||
445 | } | ||
446 | |||
447 | static bool handleLegacyNamesForFriendsChanged(const LLSD& newvalue) | ||
448 | { | ||
449 | LLAvatarTracker::instance().dirtyBuddies(); | ||
450 | return true; | ||
451 | } | ||
452 | |||
428 | static bool handleRenderDebugGLChanged(const LLSD& newvalue) | 453 | static bool handleRenderDebugGLChanged(const LLSD& newvalue) |
429 | { | 454 | { |
430 | gDebugGL = newvalue.asBoolean(); | 455 | gDebugGL = newvalue.asBoolean(); |
@@ -572,6 +597,9 @@ void settings_setup_listeners() | |||
572 | gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); | 597 | gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); |
573 | gSavedSettings.getControl("AudioStreamingMusic")->getSignal()->connect(boost::bind(&handleAudioStreamMusicChanged, _1)); | 598 | gSavedSettings.getControl("AudioStreamingMusic")->getSignal()->connect(boost::bind(&handleAudioStreamMusicChanged, _1)); |
574 | gSavedSettings.getControl("AuditTexture")->getSignal()->connect(boost::bind(&handleAuditTextureChanged, _1)); | 599 | gSavedSettings.getControl("AuditTexture")->getSignal()->connect(boost::bind(&handleAuditTextureChanged, _1)); |
600 | gSavedSettings.getControl("DisplayNamesUsage")->getSignal()->connect(boost::bind(&handleDisplayNamesUsageChanged, _1)); | ||
601 | gSavedSettings.getControl("OmitResidentAsLastName")->getSignal()->connect(boost::bind(&handleOmitResidentAsLastNameChanged, _1)); | ||
602 | gSavedSettings.getControl("LegacyNamesForFriends")->getSignal()->connect(boost::bind(&handleLegacyNamesForFriendsChanged, _1)); | ||
575 | gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); | 603 | gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); |
576 | gSavedSettings.getControl("MuteMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); | 604 | gSavedSettings.getControl("MuteMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); |
577 | gSavedSettings.getControl("MuteMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); | 605 | gSavedSettings.getControl("MuteMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); |
diff --git a/linden/indra/newview/llviewerdisplayname.cpp b/linden/indra/newview/llviewerdisplayname.cpp new file mode 100644 index 0000000..6a7cab3 --- /dev/null +++ b/linden/indra/newview/llviewerdisplayname.cpp | |||
@@ -0,0 +1,208 @@ | |||
1 | /** | ||
2 | * @file llviewerdisplayname.cpp | ||
3 | * @brief Wrapper for display name functionality | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2010&license=viewerlgpl$ | ||
6 | * Second Life Viewer Source Code | ||
7 | * Copyright (C) 2010, Linden Research, Inc. | ||
8 | * | ||
9 | * This library is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU Lesser General Public | ||
11 | * License as published by the Free Software Foundation; | ||
12 | * version 2.1 of the License only. | ||
13 | * | ||
14 | * This library is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
17 | * Lesser General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU Lesser General Public | ||
20 | * License along with this library; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
22 | * | ||
23 | * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA | ||
24 | * $/LicenseInfo$ | ||
25 | */ | ||
26 | |||
27 | #include "llviewerprecompiledheaders.h" | ||
28 | |||
29 | #include "llviewerdisplayname.h" | ||
30 | |||
31 | // viewer includes | ||
32 | #include "llagent.h" | ||
33 | #include "llviewerregion.h" | ||
34 | #include "llvoavatar.h" | ||
35 | |||
36 | // library includes | ||
37 | #include "llavatarnamecache.h" | ||
38 | #include "llhttpclient.h" | ||
39 | #include "llhttpnode.h" | ||
40 | #include "llnotifications.h" | ||
41 | #include "llui.h" // getLanguage() | ||
42 | |||
43 | namespace LLViewerDisplayName | ||
44 | { | ||
45 | // Fired when viewer receives server response to display name change | ||
46 | set_name_signal_t sSetDisplayNameSignal; | ||
47 | |||
48 | // Fired when there is a change in the agent's name | ||
49 | name_changed_signal_t sNameChangedSignal; | ||
50 | |||
51 | void addNameChangedCallback(const name_changed_signal_t::slot_type& cb) | ||
52 | { | ||
53 | sNameChangedSignal.connect(cb); | ||
54 | } | ||
55 | |||
56 | } | ||
57 | |||
58 | class LLSetDisplayNameResponder : public LLHTTPClient::Responder | ||
59 | { | ||
60 | public: | ||
61 | // only care about errors | ||
62 | /*virtual*/ void error(U32 status, const std::string& reason) | ||
63 | { | ||
64 | LLViewerDisplayName::sSetDisplayNameSignal(false, "", LLSD()); | ||
65 | LLViewerDisplayName::sSetDisplayNameSignal.disconnect_all_slots(); | ||
66 | } | ||
67 | }; | ||
68 | |||
69 | void LLViewerDisplayName::set(const std::string& display_name, const set_name_slot_t& slot) | ||
70 | { | ||
71 | // TODO: simple validation here | ||
72 | |||
73 | LLViewerRegion* region = gAgent.getRegion(); | ||
74 | llassert(region); | ||
75 | std::string cap_url = region->getCapability("SetDisplayName"); | ||
76 | if (cap_url.empty()) | ||
77 | { | ||
78 | // this server does not support display names, report error | ||
79 | slot(false, "unsupported", LLSD()); | ||
80 | return; | ||
81 | } | ||
82 | |||
83 | // People API can return localized error messages. Indicate our | ||
84 | // language preference via header. | ||
85 | LLSD headers; | ||
86 | headers["Accept-Language"] = LLUI::getLanguage(); | ||
87 | |||
88 | // People API requires both the old and new value to change a variable. | ||
89 | // Our display name will be in cache before the viewer's UI is available | ||
90 | // to request a change, so we can use direct lookup without callback. | ||
91 | LLAvatarName av_name; | ||
92 | if (!LLAvatarNameCache::get( gAgent.getID(), &av_name)) | ||
93 | { | ||
94 | slot(false, "name unavailable", LLSD()); | ||
95 | return; | ||
96 | } | ||
97 | |||
98 | // People API expects array of [ "old value", "new value" ] | ||
99 | LLSD change_array = LLSD::emptyArray(); | ||
100 | change_array.append(av_name.mDisplayName); | ||
101 | change_array.append(display_name); | ||
102 | |||
103 | llinfos << "Set name POST to " << cap_url << llendl; | ||
104 | |||
105 | // Record our caller for when the server sends back a reply | ||
106 | sSetDisplayNameSignal.connect(slot); | ||
107 | |||
108 | // POST the requested change. The sim will not send a response back to | ||
109 | // this request directly, rather it will send a separate message after it | ||
110 | // communicates with the back-end. | ||
111 | LLSD body; | ||
112 | body["display_name"] = change_array; | ||
113 | LLHTTPClient::post(cap_url, body, new LLSetDisplayNameResponder, headers); | ||
114 | } | ||
115 | |||
116 | class LLSetDisplayNameReply : public LLHTTPNode | ||
117 | { | ||
118 | LOG_CLASS(LLSetDisplayNameReply); | ||
119 | public: | ||
120 | /*virtual*/ void post( | ||
121 | LLHTTPNode::ResponsePtr response, | ||
122 | const LLSD& context, | ||
123 | const LLSD& input) const | ||
124 | { | ||
125 | LLSD body = input["body"]; | ||
126 | |||
127 | S32 status = body["status"].asInteger(); | ||
128 | bool success = (status == 200); | ||
129 | std::string reason = body["reason"].asString(); | ||
130 | LLSD content = body["content"]; | ||
131 | |||
132 | llinfos << "status " << status << " reason " << reason << llendl; | ||
133 | |||
134 | // If viewer's concept of display name is out-of-date, the set request | ||
135 | // will fail with 409 Conflict. If that happens, fetch up-to-date | ||
136 | // name information. | ||
137 | if (status == 409) | ||
138 | { | ||
139 | LLUUID agent_id = gAgent.getID(); | ||
140 | // Flush stale data | ||
141 | LLAvatarNameCache::erase( agent_id ); | ||
142 | // Queue request for new data | ||
143 | LLAvatarName ignored; | ||
144 | LLAvatarNameCache::get( agent_id, &ignored ); | ||
145 | // Kill name tag, as it is wrong | ||
146 | LLVOAvatar::invalidateNameTag( agent_id ); | ||
147 | } | ||
148 | |||
149 | // inform caller of result | ||
150 | LLViewerDisplayName::sSetDisplayNameSignal(success, reason, content); | ||
151 | LLViewerDisplayName::sSetDisplayNameSignal.disconnect_all_slots(); | ||
152 | } | ||
153 | }; | ||
154 | |||
155 | |||
156 | class LLDisplayNameUpdate : public LLHTTPNode | ||
157 | { | ||
158 | /*virtual*/ void post( | ||
159 | LLHTTPNode::ResponsePtr response, | ||
160 | const LLSD& context, | ||
161 | const LLSD& input) const | ||
162 | { | ||
163 | LLSD body = input["body"]; | ||
164 | LLUUID agent_id = body["agent_id"]; | ||
165 | std::string old_display_name = body["old_display_name"]; | ||
166 | // By convention this record is called "agent" in the People API | ||
167 | LLSD name_data = body["agent"]; | ||
168 | |||
169 | // Inject the new name data into cache | ||
170 | LLAvatarName av_name; | ||
171 | av_name.fromLLSD( name_data ); | ||
172 | |||
173 | llinfos << "name-update now " << LLDate::now() | ||
174 | << " next_update " << LLDate(av_name.mNextUpdate) | ||
175 | << llendl; | ||
176 | |||
177 | // Name expiration time may be provided in headers, or we may use a | ||
178 | // default value | ||
179 | // *TODO: get actual headers out of ResponsePtr | ||
180 | //LLSD headers = response->mHeaders; | ||
181 | LLSD headers; | ||
182 | av_name.mExpires = | ||
183 | LLAvatarNameCache::nameExpirationFromHeaders(headers); | ||
184 | |||
185 | LLAvatarNameCache::insert(agent_id, av_name); | ||
186 | |||
187 | // force name tag to update | ||
188 | LLVOAvatar::invalidateNameTag(agent_id); | ||
189 | |||
190 | LLSD args; | ||
191 | args["OLD_NAME"] = old_display_name; | ||
192 | args["SLID"] = av_name.mUsername; | ||
193 | args["NEW_NAME"] = av_name.mDisplayName; | ||
194 | LLNotifications::instance().add("DisplayNameUpdate", args); | ||
195 | if (agent_id == gAgent.getID()) | ||
196 | { | ||
197 | LLViewerDisplayName::sNameChangedSignal(); | ||
198 | } | ||
199 | } | ||
200 | }; | ||
201 | |||
202 | LLHTTPRegistration<LLSetDisplayNameReply> | ||
203 | gHTTPRegistrationMessageSetDisplayNameReply( | ||
204 | "/message/SetDisplayNameReply"); | ||
205 | |||
206 | LLHTTPRegistration<LLDisplayNameUpdate> | ||
207 | gHTTPRegistrationMessageDisplayNameUpdate( | ||
208 | "/message/DisplayNameUpdate"); | ||
diff --git a/linden/indra/newview/llviewerdisplayname.h b/linden/indra/newview/llviewerdisplayname.h new file mode 100644 index 0000000..16d59ae --- /dev/null +++ b/linden/indra/newview/llviewerdisplayname.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /** | ||
2 | * @file llviewerdisplayname.h | ||
3 | * @brief Wrapper for display name functionality | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2010&license=viewerlgpl$ | ||
6 | * Second Life Viewer Source Code | ||
7 | * Copyright (C) 2010, Linden Research, Inc. | ||
8 | * | ||
9 | * This library is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU Lesser General Public | ||
11 | * License as published by the Free Software Foundation; | ||
12 | * version 2.1 of the License only. | ||
13 | * | ||
14 | * This library is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
17 | * Lesser General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU Lesser General Public | ||
20 | * License along with this library; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
22 | * | ||
23 | * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA | ||
24 | * $/LicenseInfo$ | ||
25 | */ | ||
26 | |||
27 | #ifndef LLVIEWERDISPLAYNAME_H | ||
28 | #define LLVIEWERDISPLAYNAME_H | ||
29 | |||
30 | #include <boost/signals2.hpp> | ||
31 | |||
32 | class LLSD; | ||
33 | class LLUUID; | ||
34 | |||
35 | namespace LLViewerDisplayName | ||
36 | { | ||
37 | typedef boost::signals2::signal< | ||
38 | void (bool success, const std::string& reason, const LLSD& content)> | ||
39 | set_name_signal_t; | ||
40 | typedef set_name_signal_t::slot_type set_name_slot_t; | ||
41 | |||
42 | typedef boost::signals2::signal<void (void)> name_changed_signal_t; | ||
43 | typedef name_changed_signal_t::slot_type name_changed_slot_t; | ||
44 | |||
45 | // Sends an update to the server to change a display name | ||
46 | // and call back when done. May not succeed due to service | ||
47 | // unavailable or name not available. | ||
48 | void set(const std::string& display_name, const set_name_slot_t& slot); | ||
49 | |||
50 | void addNameChangedCallback(const name_changed_signal_t::slot_type& cb); | ||
51 | } | ||
52 | |||
53 | #endif // LLVIEWERDISPLAYNAME_H | ||
diff --git a/linden/indra/newview/llviewermedia.cpp b/linden/indra/newview/llviewermedia.cpp index 5c01b25..f0faedf 100644 --- a/linden/indra/newview/llviewermedia.cpp +++ b/linden/indra/newview/llviewermedia.cpp | |||
@@ -402,7 +402,7 @@ bool LLViewerMediaImpl::initializeMedia(const std::string& mime_type) | |||
402 | { | 402 | { |
403 | if(! initializePlugin(mime_type)) | 403 | if(! initializePlugin(mime_type)) |
404 | { | 404 | { |
405 | LL_WARNS("Plugin") << "plugin intialization failed for mime type: " << mime_type << LL_ENDL; | 405 | LL_WARNS("PluginViewerMedia") << "plugin intialization failed for mime type: " << mime_type << LL_ENDL; |
406 | LLSD args; | 406 | LLSD args; |
407 | args["MIME_TYPE"] = mime_type; | 407 | args["MIME_TYPE"] = mime_type; |
408 | LLNotifications::instance().add("NoPlugin", args); | 408 | LLNotifications::instance().add("NoPlugin", args); |
@@ -520,7 +520,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ | |||
520 | } | 520 | } |
521 | } | 521 | } |
522 | 522 | ||
523 | LL_WARNS("Plugin") << "plugin intialization failed for mime type: " << media_type << LL_ENDL; | 523 | LL_WARNS("PluginViewerMedia") << "plugin intialization failed for mime type: " << media_type << LL_ENDL; |
524 | LLSD args; | 524 | LLSD args; |
525 | args["MIME_TYPE"] = media_type; | 525 | args["MIME_TYPE"] = media_type; |
526 | LLNotifications::instance().add("NoPlugin", args); | 526 | LLNotifications::instance().add("NoPlugin", args); |
diff --git a/linden/indra/newview/llviewermedia_streamingaudio.cpp b/linden/indra/newview/llviewermedia_streamingaudio.cpp index 575dbc8..6a4dd0f 100644 --- a/linden/indra/newview/llviewermedia_streamingaudio.cpp +++ b/linden/indra/newview/llviewermedia_streamingaudio.cpp | |||
@@ -69,8 +69,13 @@ void LLStreamingAudio_MediaPlugins::start(const std::string& url) | |||
69 | llinfos << "mMediaPlugin is now " << mMediaPlugin << llendl; | 69 | llinfos << "mMediaPlugin is now " << mMediaPlugin << llendl; |
70 | } | 70 | } |
71 | 71 | ||
72 | mVersion = mMediaPlugin ? mMediaPlugin->getPluginVersion() : std::string(); | ||
73 | |||
72 | if(!mMediaPlugin) | 74 | if(!mMediaPlugin) |
75 | { | ||
76 | llinfos << "mMediaPlugin failed to initialize!" << llendl; | ||
73 | return; | 77 | return; |
78 | } | ||
74 | 79 | ||
75 | if (!url.empty()) { | 80 | if (!url.empty()) { |
76 | llinfos << "Starting internet stream: " << url << llendl; | 81 | llinfos << "Starting internet stream: " << url << llendl; |
@@ -156,6 +161,11 @@ std::string LLStreamingAudio_MediaPlugins::getURL() | |||
156 | return mURL; | 161 | return mURL; |
157 | } | 162 | } |
158 | 163 | ||
164 | std::string LLStreamingAudio_MediaPlugins::getVersion() | ||
165 | { | ||
166 | return mVersion; | ||
167 | } | ||
168 | |||
159 | void LLStreamingAudio_MediaPlugins::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) | 169 | void LLStreamingAudio_MediaPlugins::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) |
160 | { | 170 | { |
161 | if (event == MEDIA_EVENT_NAME_CHANGED) | 171 | if (event == MEDIA_EVENT_NAME_CHANGED) |
diff --git a/linden/indra/newview/llviewermedia_streamingaudio.h b/linden/indra/newview/llviewermedia_streamingaudio.h index 816e213..5802a31 100644 --- a/linden/indra/newview/llviewermedia_streamingaudio.h +++ b/linden/indra/newview/llviewermedia_streamingaudio.h | |||
@@ -56,6 +56,7 @@ class LLStreamingAudio_MediaPlugins : | |||
56 | /*virtual*/ void setGain(F32 vol); | 56 | /*virtual*/ void setGain(F32 vol); |
57 | /*virtual*/ F32 getGain(); | 57 | /*virtual*/ F32 getGain(); |
58 | /*virtual*/ std::string getURL(); | 58 | /*virtual*/ std::string getURL(); |
59 | /*virtual*/ std::string getVersion(); | ||
59 | 60 | ||
60 | // inherited from LLPluginClassMediaOwner | 61 | // inherited from LLPluginClassMediaOwner |
61 | /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); | 62 | /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); |
@@ -66,6 +67,7 @@ private: | |||
66 | LLPluginClassMedia *mMediaPlugin; | 67 | LLPluginClassMedia *mMediaPlugin; |
67 | std::string mURL; | 68 | std::string mURL; |
68 | F32 mGain; | 69 | F32 mGain; |
70 | std::string mVersion; | ||
69 | }; | 71 | }; |
70 | 72 | ||
71 | 73 | ||
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 7f00382..777a871 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -41,6 +41,7 @@ | |||
41 | 41 | ||
42 | // linden library includes | 42 | // linden library includes |
43 | #include "llaudioengine.h" | 43 | #include "llaudioengine.h" |
44 | #include "llavatarnamecache.h" | ||
44 | #include "indra_constants.h" | 45 | #include "indra_constants.h" |
45 | #include "llassetstorage.h" | 46 | #include "llassetstorage.h" |
46 | #include "llchat.h" | 47 | #include "llchat.h" |
@@ -102,6 +103,7 @@ | |||
102 | #include "llfloatercustomize.h" | 103 | #include "llfloatercustomize.h" |
103 | #include "llfloaterdaycycle.h" | 104 | #include "llfloaterdaycycle.h" |
104 | #include "llfloaterdirectory.h" | 105 | #include "llfloaterdirectory.h" |
106 | #include "llfloaterdisplayname.h" | ||
105 | #include "llfloatereditui.h" | 107 | #include "llfloatereditui.h" |
106 | #include "llfloaterchatterbox.h" | 108 | #include "llfloaterchatterbox.h" |
107 | #include "llfloaterfriends.h" | 109 | #include "llfloaterfriends.h" |
@@ -3434,6 +3436,16 @@ class LLEditEnableCustomizeAvatar : public view_listener_t | |||
3434 | } | 3436 | } |
3435 | }; | 3437 | }; |
3436 | 3438 | ||
3439 | class LLEditEnableDisplayName : public view_listener_t | ||
3440 | { | ||
3441 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
3442 | { | ||
3443 | bool new_value = (LLAvatarNameCache::useDisplayNames() != 0); | ||
3444 | gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value); | ||
3445 | return true; | ||
3446 | } | ||
3447 | }; | ||
3448 | |||
3437 | // only works on pie menu | 3449 | // only works on pie menu |
3438 | bool handle_sit_or_stand() | 3450 | bool handle_sit_or_stand() |
3439 | { | 3451 | { |
@@ -5959,6 +5971,10 @@ class LLShowFloater : public view_listener_t | |||
5959 | { | 5971 | { |
5960 | LLToolBar::toggle(NULL); | 5972 | LLToolBar::toggle(NULL); |
5961 | } | 5973 | } |
5974 | else if (floater_name == "displayname") | ||
5975 | { | ||
5976 | LLFloaterDisplayName::show(); | ||
5977 | } | ||
5962 | else if (floater_name == "chat history") | 5978 | else if (floater_name == "chat history") |
5963 | { | 5979 | { |
5964 | LLFloaterChat::toggleInstance(LLSD()); | 5980 | LLFloaterChat::toggleInstance(LLSD()); |
@@ -10666,6 +10682,20 @@ class LLAdvancedDumpAvatarLocalTextures : public view_listener_t | |||
10666 | } | 10682 | } |
10667 | }; | 10683 | }; |
10668 | 10684 | ||
10685 | /////////////////////////////////// | ||
10686 | // Reload Avatar Cloud Particles // | ||
10687 | /////////////////////////////////// | ||
10688 | |||
10689 | |||
10690 | class LLAdvancedReloadAvatarCloudParticle : public view_listener_t | ||
10691 | { | ||
10692 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
10693 | { | ||
10694 | LLVOAvatar::initCloud(); | ||
10695 | return true; | ||
10696 | } | ||
10697 | }; | ||
10698 | |||
10669 | /////////// | 10699 | /////////// |
10670 | // Crash // | 10700 | // Crash // |
10671 | /////////// | 10701 | /////////// |
@@ -11118,6 +11148,7 @@ void initialize_menus() | |||
11118 | addMenu(new LLEditEnableDuplicate(), "Edit.EnableDuplicate"); | 11148 | addMenu(new LLEditEnableDuplicate(), "Edit.EnableDuplicate"); |
11119 | addMenu(new LLEditEnableTakeOff(), "Edit.EnableTakeOff"); | 11149 | addMenu(new LLEditEnableTakeOff(), "Edit.EnableTakeOff"); |
11120 | addMenu(new LLEditEnableCustomizeAvatar(), "Edit.EnableCustomizeAvatar"); | 11150 | addMenu(new LLEditEnableCustomizeAvatar(), "Edit.EnableCustomizeAvatar"); |
11151 | addMenu(new LLEditEnableDisplayName(), "Edit.EnableDisplayName"); | ||
11121 | addMenu(new LLAdvancedRebakeTextures(), "Advanced.RebakeTextures"); | 11152 | addMenu(new LLAdvancedRebakeTextures(), "Advanced.RebakeTextures"); |
11122 | 11153 | ||
11123 | // View menu | 11154 | // View menu |
@@ -11453,6 +11484,7 @@ void initialize_menus() | |||
11453 | addMenu(new LLAdvancedDumpAttachments(), "Advanced.DumpAttachments"); | 11484 | addMenu(new LLAdvancedDumpAttachments(), "Advanced.DumpAttachments"); |
11454 | addMenu(new LLAdvancedDebugAvatarTextures(), "Advanced.DebugAvatarTextures"); | 11485 | addMenu(new LLAdvancedDebugAvatarTextures(), "Advanced.DebugAvatarTextures"); |
11455 | addMenu(new LLAdvancedDumpAvatarLocalTextures(), "Advanced.DumpAvatarLocalTextures"); | 11486 | addMenu(new LLAdvancedDumpAvatarLocalTextures(), "Advanced.DumpAvatarLocalTextures"); |
11487 | addMenu(new LLAdvancedReloadAvatarCloudParticle(), "Advanced.ReloadAvatarCloudParticle"); | ||
11456 | 11488 | ||
11457 | // Advanced > Crash | 11489 | // Advanced > Crash |
11458 | addMenu(new LLAdvancedCrash(), "Advanced.Crash"); | 11490 | addMenu(new LLAdvancedCrash(), "Advanced.Crash"); |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 5f333e9..9ebfd04 100755 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -2998,6 +2998,33 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
2998 | 2998 | ||
2999 | if (is_audible) | 2999 | if (is_audible) |
3000 | { | 3000 | { |
3001 | if (chatter && chatter->isAvatar()) | ||
3002 | { | ||
3003 | #ifdef LL_RRINTERFACE_H //MK | ||
3004 | if (!gRRenabled || !gAgent.mRRInterface.mContainsShownames) | ||
3005 | { | ||
3006 | #endif //mk | ||
3007 | if (LLAvatarNameCache::useDisplayNames()) | ||
3008 | { | ||
3009 | LLAvatarName avatar_name; | ||
3010 | if (LLAvatarNameCache::get(from_id, &avatar_name)) | ||
3011 | { | ||
3012 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
3013 | { | ||
3014 | from_name = avatar_name.mDisplayName; | ||
3015 | } | ||
3016 | else | ||
3017 | { | ||
3018 | from_name = avatar_name.getNames(); | ||
3019 | } | ||
3020 | } | ||
3021 | chat.mFromName = from_name; | ||
3022 | } | ||
3023 | #ifdef LL_RRINTERFACE_H //MK | ||
3024 | } | ||
3025 | #endif //mk | ||
3026 | } | ||
3027 | |||
3001 | BOOL visible_in_chat_bubble = FALSE; | 3028 | BOOL visible_in_chat_bubble = FALSE; |
3002 | std::string verb; | 3029 | std::string verb; |
3003 | 3030 | ||
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp index a2be26a..65c1d11 100644 --- a/linden/indra/newview/llviewerobject.cpp +++ b/linden/indra/newview/llviewerobject.cpp | |||
@@ -4206,7 +4206,7 @@ void LLViewerObject::setParticleSource(const LLPartSysData& particle_parameters, | |||
4206 | LLViewerImage* image; | 4206 | LLViewerImage* image; |
4207 | if (mPartSourcep->mPartSysData.mPartImageID == LLUUID::null) | 4207 | if (mPartSourcep->mPartSysData.mPartImageID == LLUUID::null) |
4208 | { | 4208 | { |
4209 | image = gImageList.getImageFromFile("pixiesmall.tga"); | 4209 | image = gImageList.getImageFromFile("pixiesmall.j2c"); |
4210 | } | 4210 | } |
4211 | else | 4211 | else |
4212 | { | 4212 | { |
diff --git a/linden/indra/newview/llviewerparcelmgr.cpp b/linden/indra/newview/llviewerparcelmgr.cpp index b589f2e..630da54 100644 --- a/linden/indra/newview/llviewerparcelmgr.cpp +++ b/linden/indra/newview/llviewerparcelmgr.cpp | |||
@@ -35,7 +35,7 @@ | |||
35 | #include "llviewerparcelmgr.h" | 35 | #include "llviewerparcelmgr.h" |
36 | 36 | ||
37 | // Library includes | 37 | // Library includes |
38 | #include "llaudioengine.h" | 38 | #include "kokuastreamingaudio.h" |
39 | #include "indra_constants.h" | 39 | #include "indra_constants.h" |
40 | #include "llcachename.h" | 40 | #include "llcachename.h" |
41 | #include "llgl.h" | 41 | #include "llgl.h" |
@@ -1672,7 +1672,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use | |||
1672 | else | 1672 | else |
1673 | { | 1673 | { |
1674 | // look for music. | 1674 | // look for music. |
1675 | if (gAudiop) | 1675 | if (gAudioStream) |
1676 | { | 1676 | { |
1677 | if (parcel) | 1677 | if (parcel) |
1678 | { | 1678 | { |
@@ -1685,12 +1685,12 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use | |||
1685 | // On entering a new parcel, stop the last stream if the | 1685 | // On entering a new parcel, stop the last stream if the |
1686 | // new parcel has a different music url. (Empty URL counts | 1686 | // new parcel has a different music url. (Empty URL counts |
1687 | // as different.) | 1687 | // as different.) |
1688 | const std::string& stream_url = gAudiop->getInternetStreamURL(); | 1688 | const std::string& stream_url = gAudioStream->getInternetStreamURL(); |
1689 | 1689 | ||
1690 | if (music_url.empty() || music_url != stream_url) | 1690 | if (music_url.empty() || music_url != stream_url) |
1691 | { | 1691 | { |
1692 | // URL is different from one currently playing. | 1692 | // URL is different from one currently playing. |
1693 | gAudiop->stopInternetStream(); | 1693 | gAudioStream->stopInternetStream(); |
1694 | 1694 | ||
1695 | // If there is a new music URL and it's valid, play it. | 1695 | // If there is a new music URL and it's valid, play it. |
1696 | if (music_url.size() > 12) | 1696 | if (music_url.size() > 12) |
@@ -1700,19 +1700,19 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use | |||
1700 | optionally_start_music(music_url); | 1700 | optionally_start_music(music_url); |
1701 | } | 1701 | } |
1702 | } | 1702 | } |
1703 | else if (!gAudiop->getInternetStreamURL().empty()) | 1703 | else if (!gAudioStream->getInternetStreamURL().empty()) |
1704 | { | 1704 | { |
1705 | llinfos << "Stopping parcel music" << llendl; | 1705 | llinfos << "Stopping parcel music" << llendl; |
1706 | gAudiop->startInternetStream(LLStringUtil::null); | 1706 | gAudioStream->startInternetStream(LLStringUtil::null); |
1707 | } | 1707 | } |
1708 | } | 1708 | } |
1709 | } | 1709 | } |
1710 | else | 1710 | else |
1711 | { | 1711 | { |
1712 | // Public land has no music | 1712 | // Public land has no music |
1713 | gAudiop->stopInternetStream(); | 1713 | gAudioStream->stopInternetStream(); |
1714 | } | 1714 | } |
1715 | }//if gAudiop | 1715 | }//if gAudioStream |
1716 | 1716 | ||
1717 | // now check for video | 1717 | // now check for video |
1718 | LLViewerParcelMedia::update( parcel ); | 1718 | LLViewerParcelMedia::update( parcel ); |
@@ -1730,7 +1730,7 @@ void optionally_start_music(const std::string& music_url) | |||
1730 | // changed as part of SL-4878 | 1730 | // changed as part of SL-4878 |
1731 | if ( gOverlayBar && gOverlayBar->musicPlaying()) | 1731 | if ( gOverlayBar && gOverlayBar->musicPlaying()) |
1732 | { | 1732 | { |
1733 | gAudiop->startInternetStream(music_url); | 1733 | gAudioStream->startInternetStream(music_url); |
1734 | } | 1734 | } |
1735 | } | 1735 | } |
1736 | } | 1736 | } |
diff --git a/linden/indra/newview/llviewerprecompiledheaders.h b/linden/indra/newview/llviewerprecompiledheaders.h index 9bc6574..a0b99bf 100644 --- a/linden/indra/newview/llviewerprecompiledheaders.h +++ b/linden/indra/newview/llviewerprecompiledheaders.h | |||
@@ -165,7 +165,7 @@ | |||
165 | #include "llinstantmessage.h" | 165 | #include "llinstantmessage.h" |
166 | #include "llinvite.h" | 166 | #include "llinvite.h" |
167 | //#include "llloginflags.h" | 167 | //#include "llloginflags.h" |
168 | #include "llmail.h" | 168 | //#include "llmail.h" |
169 | #include "llmessagethrottle.h" | 169 | #include "llmessagethrottle.h" |
170 | #include "llnamevalue.h" | 170 | #include "llnamevalue.h" |
171 | #include "llpacketack.h" | 171 | #include "llpacketack.h" |
diff --git a/linden/indra/newview/llviewerregion.cpp b/linden/indra/newview/llviewerregion.cpp index d93c425..a8047b8 100644 --- a/linden/indra/newview/llviewerregion.cpp +++ b/linden/indra/newview/llviewerregion.cpp | |||
@@ -127,6 +127,8 @@ public: | |||
127 | } | 127 | } |
128 | } | 128 | } |
129 | 129 | ||
130 | mRegion->setCapabilitiesReceived(true); | ||
131 | |||
130 | if (STATE_SEED_GRANTED_WAIT == LLStartUp::getStartupState()) | 132 | if (STATE_SEED_GRANTED_WAIT == LLStartUp::getStartupState()) |
131 | { | 133 | { |
132 | LLStartUp::setStartupState( STATE_SEED_CAP_GRANTED ); | 134 | LLStartUp::setStartupState( STATE_SEED_CAP_GRANTED ); |
@@ -172,7 +174,8 @@ LLViewerRegion::LLViewerRegion(const U64 &handle, | |||
172 | mCacheEntriesCount(0), | 174 | mCacheEntriesCount(0), |
173 | mCacheID(), | 175 | mCacheID(), |
174 | mEventPoll(NULL), | 176 | mEventPoll(NULL), |
175 | mReleaseNotesRequested(FALSE) | 177 | mReleaseNotesRequested(FALSE), |
178 | mCapabilitiesReceived(false) | ||
176 | { | 179 | { |
177 | mWidth = region_width_meters; | 180 | mWidth = region_width_meters; |
178 | mOriginGlobal = from_region_handle(handle); | 181 | mOriginGlobal = from_region_handle(handle); |
@@ -1431,6 +1434,8 @@ void LLViewerRegion::setSeedCapability(const std::string& url) | |||
1431 | capabilityNames.append("FetchInventory"); | 1434 | capabilityNames.append("FetchInventory"); |
1432 | capabilityNames.append("FetchLib"); | 1435 | capabilityNames.append("FetchLib"); |
1433 | capabilityNames.append("FetchLibDescendents"); | 1436 | capabilityNames.append("FetchLibDescendents"); |
1437 | capabilityNames.append("GetDisplayNames"); | ||
1438 | capabilityNames.append("SetDisplayName"); | ||
1434 | capabilityNames.append("GetTexture"); | 1439 | capabilityNames.append("GetTexture"); |
1435 | capabilityNames.append("GroupProposalBallot"); | 1440 | capabilityNames.append("GroupProposalBallot"); |
1436 | capabilityNames.append("HomeLocation"); | 1441 | capabilityNames.append("HomeLocation"); |
@@ -1509,6 +1514,16 @@ std::string LLViewerRegion::getCapability(const std::string& name) const | |||
1509 | return iter->second; | 1514 | return iter->second; |
1510 | } | 1515 | } |
1511 | 1516 | ||
1517 | bool LLViewerRegion::capabilitiesReceived() const | ||
1518 | { | ||
1519 | return mCapabilitiesReceived; | ||
1520 | } | ||
1521 | |||
1522 | void LLViewerRegion::setCapabilitiesReceived(bool received) | ||
1523 | { | ||
1524 | mCapabilitiesReceived = received; | ||
1525 | } | ||
1526 | |||
1512 | void LLViewerRegion::logActiveCapabilities() const | 1527 | void LLViewerRegion::logActiveCapabilities() const |
1513 | { | 1528 | { |
1514 | int count = 0; | 1529 | int count = 0; |
diff --git a/linden/indra/newview/llviewerregion.h b/linden/indra/newview/llviewerregion.h index 8cc80e3..5ce8b2e 100644 --- a/linden/indra/newview/llviewerregion.h +++ b/linden/indra/newview/llviewerregion.h | |||
@@ -229,6 +229,11 @@ public: | |||
229 | void setSeedCapability(const std::string& url); | 229 | void setSeedCapability(const std::string& url); |
230 | void setCapability(const std::string& name, const std::string& url); | 230 | void setCapability(const std::string& name, const std::string& url); |
231 | std::string getCapability(const std::string& name) const; | 231 | std::string getCapability(const std::string& name) const; |
232 | |||
233 | // has region received its final (not seed) capability list? | ||
234 | bool capabilitiesReceived() const; | ||
235 | void setCapabilitiesReceived(bool received); | ||
236 | |||
232 | static bool isSpecialCapabilityName(const std::string &name); | 237 | static bool isSpecialCapabilityName(const std::string &name); |
233 | void logActiveCapabilities() const; | 238 | void logActiveCapabilities() const; |
234 | 239 | ||
@@ -399,6 +404,7 @@ private: | |||
399 | 404 | ||
400 | private: | 405 | private: |
401 | bool mAlive; // can become false if circuit disconnects | 406 | bool mAlive; // can become false if circuit disconnects |
407 | bool mCapabilitiesReceived; | ||
402 | 408 | ||
403 | //spatial partitions for objects in this region | 409 | //spatial partitions for objects in this region |
404 | std::vector<LLSpatialPartition*> mObjectPartition; | 410 | std::vector<LLSpatialPartition*> mObjectPartition; |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index de6b22d..e1fa61f 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <ctype.h> | 38 | #include <ctype.h> |
39 | 39 | ||
40 | #include "llaudioengine.h" | 40 | #include "llaudioengine.h" |
41 | #include "llavatarnamecache.h" | ||
41 | #include "noise.h" | 42 | #include "noise.h" |
42 | 43 | ||
43 | #include "llagent.h" // Get state values from here | 44 | #include "llagent.h" // Get state values from here |
@@ -748,6 +749,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, | |||
748 | mAppearanceAnimating(FALSE), | 749 | mAppearanceAnimating(FALSE), |
749 | mNameString(), | 750 | mNameString(), |
750 | mTitle(), | 751 | mTitle(), |
752 | mCompleteName(), | ||
751 | mNameAway(FALSE), | 753 | mNameAway(FALSE), |
752 | mNameBusy(FALSE), | 754 | mNameBusy(FALSE), |
753 | mNameMute(FALSE), | 755 | mNameMute(FALSE), |
@@ -1474,6 +1476,7 @@ void LLVOAvatar::initClass() | |||
1474 | { | 1476 | { |
1475 | loadClientTags(); | 1477 | loadClientTags(); |
1476 | } | 1478 | } |
1479 | initCloud(); | ||
1477 | } | 1480 | } |
1478 | 1481 | ||
1479 | 1482 | ||
@@ -1489,6 +1492,21 @@ void LLVOAvatar::cleanupClass() | |||
1489 | sXMLTree.cleanup(); | 1492 | sXMLTree.cleanup(); |
1490 | } | 1493 | } |
1491 | 1494 | ||
1495 | LLPartSysData LLVOAvatar::sCloud; | ||
1496 | void LLVOAvatar::initCloud() | ||
1497 | { | ||
1498 | // fancy particle cloud designed by Brent | ||
1499 | |||
1500 | std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "cloud.xml"); | ||
1501 | LLSD cloud; | ||
1502 | llifstream in_file(filename); | ||
1503 | LLSDSerialize::fromXMLDocument(cloud, in_file); | ||
1504 | sCloud.fromLLSD(cloud); | ||
1505 | LLViewerImage* cloud_image = gImageList.getImageFromFile("cloud-particle.j2c"); | ||
1506 | sCloud.mPartImageID = cloud_image->getID(); | ||
1507 | |||
1508 | } | ||
1509 | |||
1492 | const LLVector3 LLVOAvatar::getRenderPosition() const | 1510 | const LLVector3 LLVOAvatar::getRenderPosition() const |
1493 | { | 1511 | { |
1494 | if (mDrawable.isNull() || mDrawable->getGeneration() < 0) | 1512 | if (mDrawable.isNull() || mDrawable->getGeneration() < 0) |
@@ -2872,7 +2890,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() | |||
2872 | param; | 2890 | param; |
2873 | param = getNextVisualParam()) | 2891 | param = getNextVisualParam()) |
2874 | { | 2892 | { |
2875 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 2893 | if (param->isTweakable()) |
2876 | { | 2894 | { |
2877 | param->stopAnimating(mAppearanceAnimSetByUser); | 2895 | param->stopAnimating(mAppearanceAnimSetByUser); |
2878 | } | 2896 | } |
@@ -2904,7 +2922,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() | |||
2904 | param; | 2922 | param; |
2905 | param = getNextVisualParam()) | 2923 | param = getNextVisualParam()) |
2906 | { | 2924 | { |
2907 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 2925 | if (param->isTweakable()) |
2908 | { | 2926 | { |
2909 | // so boobs don't go spastic when a shape's changed, but still seems buggy | 2927 | // so boobs don't go spastic when a shape's changed, but still seems buggy |
2910 | //if(param->getID() != 507) | 2928 | //if(param->getID() != 507) |
@@ -3070,34 +3088,7 @@ void LLVOAvatar::idleUpdateLoadingEffect() | |||
3070 | } | 3088 | } |
3071 | else | 3089 | else |
3072 | { | 3090 | { |
3073 | LLPartSysData particle_parameters; | 3091 | setParticleSource(sCloud, getID()); |
3074 | |||
3075 | // fancy particle cloud designed by Brent | ||
3076 | particle_parameters.mPartData.mMaxAge = 4.f; | ||
3077 | particle_parameters.mPartData.mStartScale.mV[VX] = 0.8f; | ||
3078 | particle_parameters.mPartData.mStartScale.mV[VX] = 0.8f; | ||
3079 | particle_parameters.mPartData.mStartScale.mV[VY] = 1.0f; | ||
3080 | particle_parameters.mPartData.mEndScale.mV[VX] = 0.02f; | ||
3081 | particle_parameters.mPartData.mEndScale.mV[VY] = 0.02f; | ||
3082 | particle_parameters.mPartData.mStartColor = LLColor4(1, 1, 1, 0.5f); | ||
3083 | particle_parameters.mPartData.mEndColor = LLColor4(1, 1, 1, 0.0f); | ||
3084 | particle_parameters.mPartData.mStartScale.mV[VX] = 0.8f; | ||
3085 | LLViewerImage* cloud = gImageList.getImageFromFile("cloud-particle.j2c"); | ||
3086 | particle_parameters.mPartImageID = cloud->getID(); | ||
3087 | particle_parameters.mMaxAge = 0.f; | ||
3088 | particle_parameters.mPattern = LLPartSysData::LL_PART_SRC_PATTERN_ANGLE_CONE; | ||
3089 | particle_parameters.mInnerAngle = 3.14159f; | ||
3090 | particle_parameters.mOuterAngle = 0.f; | ||
3091 | particle_parameters.mBurstRate = 0.02f; | ||
3092 | particle_parameters.mBurstRadius = 0.0f; | ||
3093 | particle_parameters.mBurstPartCount = 1; | ||
3094 | particle_parameters.mBurstSpeedMin = 0.1f; | ||
3095 | particle_parameters.mBurstSpeedMax = 1.f; | ||
3096 | particle_parameters.mPartData.mFlags = ( LLPartData::LL_PART_INTERP_COLOR_MASK | LLPartData::LL_PART_INTERP_SCALE_MASK | | ||
3097 | LLPartData::LL_PART_EMISSIVE_MASK | // LLPartData::LL_PART_FOLLOW_SRC_MASK | | ||
3098 | LLPartData::LL_PART_TARGET_POS_MASK ); | ||
3099 | |||
3100 | setParticleSource(particle_parameters, getID()); | ||
3101 | } | 3092 | } |
3102 | } | 3093 | } |
3103 | } | 3094 | } |
@@ -3633,6 +3624,35 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3633 | 3624 | ||
3634 | if (mNameText.notNull() && firstname && lastname) | 3625 | if (mNameText.notNull() && firstname && lastname) |
3635 | { | 3626 | { |
3627 | std::string complete_name = firstname->getString(); | ||
3628 | if (sRenderGroupTitles) | ||
3629 | { | ||
3630 | complete_name += " "; | ||
3631 | } | ||
3632 | else | ||
3633 | { | ||
3634 | // If all group titles are turned off, stack first name | ||
3635 | // on a line above last name | ||
3636 | complete_name += "\n"; | ||
3637 | } | ||
3638 | complete_name += lastname->getString(); | ||
3639 | |||
3640 | if (LLAvatarNameCache::useDisplayNames()) | ||
3641 | { | ||
3642 | LLAvatarName avatar_name; | ||
3643 | if (LLAvatarNameCache::get(getID(), &avatar_name)) | ||
3644 | { | ||
3645 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
3646 | { | ||
3647 | complete_name = avatar_name.mDisplayName; | ||
3648 | } | ||
3649 | else | ||
3650 | { | ||
3651 | complete_name = avatar_name.getNames(true); | ||
3652 | } | ||
3653 | } | ||
3654 | } | ||
3655 | |||
3636 | BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY) != mSignaledAnimations.end(); | 3656 | BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY) != mSignaledAnimations.end(); |
3637 | BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end(); | 3657 | BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end(); |
3638 | BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end(); | 3658 | BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end(); |
@@ -3647,7 +3667,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3647 | } | 3667 | } |
3648 | 3668 | ||
3649 | if (mNameString.empty() || | 3669 | if (mNameString.empty() || |
3650 | new_name || | 3670 | new_name || complete_name != mCompleteName || |
3651 | (!title && !mTitle.empty()) || | 3671 | (!title && !mTitle.empty()) || |
3652 | (title && mTitle != title->getString()) || | 3672 | (title && mTitle != title->getString()) || |
3653 | (is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute) | 3673 | (is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute) |
@@ -3663,20 +3683,19 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3663 | line += title->getString(); | 3683 | line += title->getString(); |
3664 | //LLStringFn::replace_ascii_controlchars(line,LL_UNKNOWN_CHAR); IMP-136 -- McCabe | 3684 | //LLStringFn::replace_ascii_controlchars(line,LL_UNKNOWN_CHAR); IMP-136 -- McCabe |
3665 | line += "\n"; | 3685 | line += "\n"; |
3666 | line += firstname->getString(); | 3686 | line += complete_name; |
3667 | } | 3687 | } |
3668 | else | 3688 | else |
3669 | { | 3689 | { |
3670 | line += firstname->getString(); | 3690 | line += complete_name; |
3671 | } | 3691 | } |
3672 | 3692 | ||
3673 | line += " "; | 3693 | |
3674 | line += lastname->getString(); | ||
3675 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.0b | 3694 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.0b |
3676 | } | 3695 | } |
3677 | else | 3696 | else |
3678 | { | 3697 | { |
3679 | line = RlvStrings::getAnonym(line.assign(firstname->getString()).append(" ").append(lastname->getString())); | 3698 | line = RlvStrings::getAnonym(complete_name); |
3680 | } | 3699 | } |
3681 | // [/RLVa:KB] | 3700 | // [/RLVa:KB] |
3682 | 3701 | ||
@@ -3686,7 +3705,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3686 | bool show_client = client.length() != 0 && (*sShowClientNameTag); | 3705 | bool show_client = client.length() != 0 && (*sShowClientNameTag); |
3687 | if (is_away || is_muted || is_busy || show_client) | 3706 | if (is_away || is_muted || is_busy || show_client) |
3688 | { | 3707 | { |
3689 | line += " ("; | 3708 | line += "\n("; |
3690 | if (is_away) | 3709 | if (is_away) |
3691 | { | 3710 | { |
3692 | line += "Away"; | 3711 | line += "Away"; |
@@ -3731,6 +3750,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3731 | mNameMute = is_muted; | 3750 | mNameMute = is_muted; |
3732 | mNameAppearance = is_appearance; | 3751 | mNameAppearance = is_appearance; |
3733 | mTitle = title ? title->getString() : ""; | 3752 | mTitle = title ? title->getString() : ""; |
3753 | mCompleteName = complete_name; | ||
3734 | //LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR); IMP-136 -- McCabe | 3754 | //LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR); IMP-136 -- McCabe |
3735 | mNameString = utf8str_to_wstring(line); | 3755 | mNameString = utf8str_to_wstring(line); |
3736 | new_name = TRUE; | 3756 | new_name = TRUE; |
@@ -3847,6 +3867,41 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3847 | } | 3867 | } |
3848 | } | 3868 | } |
3849 | 3869 | ||
3870 | void LLVOAvatar::clearNameTag() | ||
3871 | { | ||
3872 | mNameString.clear(); | ||
3873 | if (mNameText) | ||
3874 | { | ||
3875 | mNameText->setLabel(""); | ||
3876 | mNameText->setString(mNameString); | ||
3877 | } | ||
3878 | } | ||
3879 | |||
3880 | //static | ||
3881 | void LLVOAvatar::invalidateNameTag(const LLUUID& agent_id) | ||
3882 | { | ||
3883 | LLViewerObject* obj = gObjectList.findObject(agent_id); | ||
3884 | if (!obj) return; | ||
3885 | |||
3886 | LLVOAvatar* avatar = dynamic_cast<LLVOAvatar*>(obj); | ||
3887 | if (!avatar) return; | ||
3888 | |||
3889 | avatar->clearNameTag(); | ||
3890 | } | ||
3891 | |||
3892 | //static | ||
3893 | void LLVOAvatar::invalidateNameTags() | ||
3894 | { | ||
3895 | std::vector<LLCharacter*>::iterator it; | ||
3896 | for (it = LLCharacter::sInstances.begin(); it != LLCharacter::sInstances.end(); ++it) | ||
3897 | { | ||
3898 | LLVOAvatar* avatar = dynamic_cast<LLVOAvatar*>(*it); | ||
3899 | if (!avatar) continue; | ||
3900 | if (avatar->isDead()) continue; | ||
3901 | |||
3902 | avatar->clearNameTag(); | ||
3903 | } | ||
3904 | } | ||
3850 | 3905 | ||
3851 | void LLVOAvatar::idleUpdateTractorBeam() | 3906 | void LLVOAvatar::idleUpdateTractorBeam() |
3852 | { | 3907 | { |
@@ -4833,6 +4888,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) | |||
4833 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked | 4888 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked |
4834 | && !LLDrawPoolAvatar::sSkipTransparent; | 4889 | && !LLDrawPoolAvatar::sSkipTransparent; |
4835 | 4890 | ||
4891 | |||
4836 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); | 4892 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); |
4837 | 4893 | ||
4838 | if (should_alpha_mask) | 4894 | if (should_alpha_mask) |
@@ -4948,7 +5004,6 @@ U32 LLVOAvatar::renderRigid() | |||
4948 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked | 5004 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked |
4949 | && !LLDrawPoolAvatar::sSkipTransparent; | 5005 | && !LLDrawPoolAvatar::sSkipTransparent; |
4950 | 5006 | ||
4951 | |||
4952 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); | 5007 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); |
4953 | 5008 | ||
4954 | if (should_alpha_mask) | 5009 | if (should_alpha_mask) |
@@ -5931,6 +5986,7 @@ BOOL LLVOAvatar::loadAvatar() | |||
5931 | if (sAvatarXmlInfo->mLayerInfoList.empty()) | 5986 | if (sAvatarXmlInfo->mLayerInfoList.empty()) |
5932 | { | 5987 | { |
5933 | llwarns << "avatar file: missing <layer_set> node" << llendl; | 5988 | llwarns << "avatar file: missing <layer_set> node" << llendl; |
5989 | return FALSE; | ||
5934 | } | 5990 | } |
5935 | else | 5991 | else |
5936 | { | 5992 | { |
@@ -5971,23 +6027,22 @@ BOOL LLVOAvatar::loadAvatar() | |||
5971 | } | 6027 | } |
5972 | 6028 | ||
5973 | // avatar_lad.xml : <driver_parameters> | 6029 | // avatar_lad.xml : <driver_parameters> |
6030 | LLVOAvatarXmlInfo::driver_info_list_t::iterator iter; | ||
6031 | for (iter = sAvatarXmlInfo->mDriverInfoList.begin(); | ||
6032 | iter != sAvatarXmlInfo->mDriverInfoList.end(); iter++) | ||
5974 | { | 6033 | { |
5975 | LLVOAvatarXmlInfo::driver_info_list_t::iterator iter; | 6034 | LLDriverParamInfo *info = *iter; |
5976 | for (iter = sAvatarXmlInfo->mDriverInfoList.begin(); | 6035 | LLDriverParam* driver_param = new LLDriverParam( this ); |
5977 | iter != sAvatarXmlInfo->mDriverInfoList.end(); iter++) | 6036 | if (driver_param->setInfo(info)) |
5978 | { | 6037 | { |
5979 | LLDriverParamInfo *info = *iter; | 6038 | addVisualParam( driver_param ); |
5980 | LLDriverParam* driver_param = new LLDriverParam( this ); | 6039 | } |
5981 | if (driver_param->setInfo(info)) | 6040 | else |
5982 | { | 6041 | { |
5983 | addVisualParam( driver_param ); | 6042 | delete driver_param; |
5984 | } | 6043 | llwarns << "avatar file: driver_param->parseData() failed" << llendl; |
5985 | else | 6044 | return FALSE; |
5986 | { | 6045 | |
5987 | delete driver_param; | ||
5988 | llwarns << "avatar file: driver_param->parseData() failed" << llendl; | ||
5989 | return FALSE; | ||
5990 | } | ||
5991 | } | 6046 | } |
5992 | } | 6047 | } |
5993 | 6048 | ||
@@ -8160,6 +8215,14 @@ BOOL LLVOAvatar::teToColorParams( ETextureIndex te, const char* param_name[3] ) | |||
8160 | param_name[2] = "skirt_blue"; | 8215 | param_name[2] = "skirt_blue"; |
8161 | break; | 8216 | break; |
8162 | 8217 | ||
8218 | case TEX_HEAD_TATTOO: | ||
8219 | case TEX_LOWER_TATTOO: | ||
8220 | case TEX_UPPER_TATTOO: | ||
8221 | param_name[0] = "tattoo_red"; | ||
8222 | param_name[1] = "tattoo_green"; | ||
8223 | param_name[2] = "tattoo_blue"; | ||
8224 | break; | ||
8225 | |||
8163 | default: | 8226 | default: |
8164 | llassert(0); | 8227 | llassert(0); |
8165 | return FALSE; | 8228 | return FALSE; |
@@ -8619,7 +8682,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8619 | { | 8682 | { |
8620 | for( S32 i = 0; i < num_blocks; i++ ) | 8683 | for( S32 i = 0; i < num_blocks; i++ ) |
8621 | { | 8684 | { |
8622 | while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) | 8685 | while( param && (!param->isTweakable()) ) |
8623 | { | 8686 | { |
8624 | param = getNextVisualParam(); | 8687 | param = getNextVisualParam(); |
8625 | } | 8688 | } |
@@ -8627,7 +8690,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8627 | if( !param ) | 8690 | if( !param ) |
8628 | { | 8691 | { |
8629 | llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; | 8692 | llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; |
8630 | return; | 8693 | break; |
8631 | } | 8694 | } |
8632 | 8695 | ||
8633 | U8 value; | 8696 | U8 value; |
@@ -8668,14 +8731,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8668 | } | 8731 | } |
8669 | } | 8732 | } |
8670 | 8733 | ||
8671 | while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) | 8734 | S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT |
8735 | if (num_blocks != expected_tweakable_count) | ||
8672 | { | 8736 | { |
8673 | param = getNextVisualParam(); | 8737 | llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. Object: " << getID() << llendl; |
8674 | } | ||
8675 | if( param ) | ||
8676 | { | ||
8677 | llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; | ||
8678 | return; | ||
8679 | } | 8738 | } |
8680 | 8739 | ||
8681 | if (params_changed) | 8740 | if (params_changed) |
@@ -8946,8 +9005,7 @@ void LLVOAvatar::dumpArchetypeXML( void* ) | |||
8946 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 9005 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
8947 | { | 9006 | { |
8948 | LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; | 9007 | LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; |
8949 | if( (viewer_param->getWearableType() == type) && | 9008 | if (viewer_param->getWearableType() == type && viewer_param->isTweakable()) |
8950 | (viewer_param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) ) | ||
8951 | { | 9009 | { |
8952 | apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", | 9010 | apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", |
8953 | viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight() ); | 9011 | viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight() ); |
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h index 548818d..e585a6a 100644 --- a/linden/indra/newview/llvoavatar.h +++ b/linden/indra/newview/llvoavatar.h | |||
@@ -97,6 +97,7 @@ public: | |||
97 | static void initClass(); // Initialize data that's only init'd once per class. | 97 | static void initClass(); // Initialize data that's only init'd once per class. |
98 | static void cleanupClass(); // Cleanup data that's only init'd once per class. | 98 | static void cleanupClass(); // Cleanup data that's only init'd once per class. |
99 | static BOOL parseSkeletonFile(const std::string& filename); | 99 | static BOOL parseSkeletonFile(const std::string& filename); |
100 | static void initCloud(); | ||
100 | virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, | 101 | virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, |
101 | void **user_data, | 102 | void **user_data, |
102 | U32 block_num, | 103 | U32 block_num, |
@@ -111,6 +112,10 @@ public: | |||
111 | void idleUpdateWindEffect(); | 112 | void idleUpdateWindEffect(); |
112 | void idleUpdateBoobEffect(); | 113 | void idleUpdateBoobEffect(); |
113 | void idleUpdateNameTag(const LLVector3& root_pos_last); | 114 | void idleUpdateNameTag(const LLVector3& root_pos_last); |
115 | void clearNameTag(); | ||
116 | static void invalidateNameTag(const LLUUID& agent_id); | ||
117 | // force all name tags to rebuild, useful when display names turned on/off | ||
118 | static void invalidateNameTags(); | ||
114 | void idleUpdateRenderCost(); | 119 | void idleUpdateRenderCost(); |
115 | void idleUpdateTractorBeam(); | 120 | void idleUpdateTractorBeam(); |
116 | void idleUpdateBelowWater(); | 121 | void idleUpdateBelowWater(); |
@@ -582,6 +587,7 @@ public: | |||
582 | static F32 sLODFactor; // user-settable LOD factor | 587 | static F32 sLODFactor; // user-settable LOD factor |
583 | static BOOL sJointDebug; // output total number of joints being touched for each avatar | 588 | static BOOL sJointDebug; // output total number of joints being touched for each avatar |
584 | static BOOL sDebugAvatarRotation; | 589 | static BOOL sDebugAvatarRotation; |
590 | static LLPartSysData sCloud; | ||
585 | 591 | ||
586 | static S32 sNumVisibleAvatars; // Number of instances of this class | 592 | static S32 sNumVisibleAvatars; // Number of instances of this class |
587 | 593 | ||
@@ -675,6 +681,7 @@ protected: | |||
675 | 681 | ||
676 | LLWString mNameString; | 682 | LLWString mNameString; |
677 | std::string mTitle; | 683 | std::string mTitle; |
684 | std::string mCompleteName; | ||
678 | BOOL mNameAway; | 685 | BOOL mNameAway; |
679 | BOOL mNameBusy; | 686 | BOOL mNameBusy; |
680 | BOOL mNameMute; | 687 | BOOL mNameMute; |
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp index d67b9e3..7b1ed95 100644 --- a/linden/indra/newview/llvoiceclient.cpp +++ b/linden/indra/newview/llvoiceclient.cpp | |||
@@ -1795,7 +1795,7 @@ void LLVoiceClient::stateMachine() | |||
1795 | 1795 | ||
1796 | if(!mSocket) | 1796 | if(!mSocket) |
1797 | { | 1797 | { |
1798 | mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP); | 1798 | mSocket = LLSocket::create(LLSocket::STREAM_TCP); |
1799 | } | 1799 | } |
1800 | 1800 | ||
1801 | mConnected = mSocket->blockingConnect(mDaemonHost); | 1801 | mConnected = mSocket->blockingConnect(mDaemonHost); |
diff --git a/linden/indra/newview/llwatchdog.cpp b/linden/indra/newview/llwatchdog.cpp index 330bc8a..9af050c 100644 --- a/linden/indra/newview/llwatchdog.cpp +++ b/linden/indra/newview/llwatchdog.cpp | |||
@@ -184,8 +184,8 @@ void LLWatchdog::init(killer_event_callback func) | |||
184 | mKillerCallback = func; | 184 | mKillerCallback = func; |
185 | if(!mSuspectsAccessMutex && !mTimer) | 185 | if(!mSuspectsAccessMutex && !mTimer) |
186 | { | 186 | { |
187 | mSuspectsAccessMutex = new LLMutex(NULL); | 187 | mSuspectsAccessMutex = new LLMutex; |
188 | mTimer = new LLWatchdogTimerThread(); | 188 | mTimer = new LLWatchdogTimerThread; |
189 | mTimer->setSleepTime(WATCHDOG_SLEEP_TIME_USEC / 1000); | 189 | mTimer->setSleepTime(WATCHDOG_SLEEP_TIME_USEC / 1000); |
190 | mLastClockCount = LLTimer::getTotalTime(); | 190 | mLastClockCount = LLTimer::getTotalTime(); |
191 | 191 | ||
diff --git a/linden/indra/newview/llwearable.cpp b/linden/indra/newview/llwearable.cpp index b74ef02..f8123bb 100644 --- a/linden/indra/newview/llwearable.cpp +++ b/linden/indra/newview/llwearable.cpp | |||
@@ -535,7 +535,7 @@ BOOL LLWearable::isOldVersion() | |||
535 | param; | 535 | param; |
536 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) | 536 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) |
537 | { | 537 | { |
538 | if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 538 | if (param->getWearableType() == mType && param->isTweakable()) |
539 | { | 539 | { |
540 | param_count++; | 540 | param_count++; |
541 | if( !is_in_map(mVisualParamMap, param->getID() ) ) | 541 | if( !is_in_map(mVisualParamMap, param->getID() ) ) |
@@ -591,7 +591,7 @@ BOOL LLWearable::isDirty() | |||
591 | param; | 591 | param; |
592 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) | 592 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) |
593 | { | 593 | { |
594 | if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 594 | if (param->getWearableType() == mType && param->isTweakable()) |
595 | { | 595 | { |
596 | F32 weight = get_if_there(mVisualParamMap, param->getID(), param->getDefaultWeight()); | 596 | F32 weight = get_if_there(mVisualParamMap, param->getID(), param->getDefaultWeight()); |
597 | weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() ); | 597 | weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() ); |
@@ -690,7 +690,7 @@ void LLWearable::setParamsToDefaults() | |||
690 | mVisualParamMap.clear(); | 690 | mVisualParamMap.clear(); |
691 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 691 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
692 | { | 692 | { |
693 | if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 693 | if (((LLViewerVisualParam*)param)->getWearableType() == mType && param->isTweakable()) |
694 | { | 694 | { |
695 | mVisualParamMap[param->getID()] = param->getDefaultWeight(); | 695 | mVisualParamMap[param->getID()] = param->getDefaultWeight(); |
696 | } | 696 | } |
@@ -724,7 +724,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user ) | |||
724 | // Pull params | 724 | // Pull params |
725 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 725 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
726 | { | 726 | { |
727 | if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 727 | if (((LLViewerVisualParam*)param)->getWearableType() == mType && param->isTweakable()) |
728 | { | 728 | { |
729 | S32 param_id = param->getID(); | 729 | S32 param_id = param->getID(); |
730 | F32 weight = get_if_there(mVisualParamMap, param_id, param->getDefaultWeight()); | 730 | F32 weight = get_if_there(mVisualParamMap, param_id, param->getDefaultWeight()); |
@@ -825,7 +825,7 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL set_by_user ) | |||
825 | // Pull params | 825 | // Pull params |
826 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 826 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
827 | { | 827 | { |
828 | if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 828 | if (((LLViewerVisualParam*)param)->getWearableType() == type && param->isTweakable()) |
829 | { | 829 | { |
830 | S32 param_id = param->getID(); | 830 | S32 param_id = param->getID(); |
831 | avatar->setVisualParamWeight( param_id, param->getDefaultWeight(), set_by_user ); | 831 | avatar->setVisualParamWeight( param_id, param->getDefaultWeight(), set_by_user ); |
@@ -873,7 +873,7 @@ void LLWearable::readFromAvatar() | |||
873 | mVisualParamMap.clear(); | 873 | mVisualParamMap.clear(); |
874 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 874 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
875 | { | 875 | { |
876 | if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 876 | if (((LLViewerVisualParam*)param)->getWearableType() == mType && param->isTweakable()) |
877 | { | 877 | { |
878 | 878 | ||
879 | //pretty sure is right | 879 | //pretty sure is right |
@@ -938,7 +938,7 @@ void LLWearable::copyDataFrom( LLWearable* src ) | |||
938 | param; | 938 | param; |
939 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) | 939 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) |
940 | { | 940 | { |
941 | if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 941 | if (param->getWearableType() == mType && param->isTweakable()) |
942 | { | 942 | { |
943 | S32 id = param->getID(); | 943 | S32 id = param->getID(); |
944 | F32 weight = get_if_there(src->mVisualParamMap, id, param->getDefaultWeight() ); | 944 | F32 weight = get_if_there(src->mVisualParamMap, id, param->getDefaultWeight() ); |
diff --git a/linden/indra/newview/skins/default/xui/de/notifications.xml b/linden/indra/newview/skins/default/xui/de/notifications.xml index b2975df..3e08d33 100644 --- a/linden/indra/newview/skins/default/xui/de/notifications.xml +++ b/linden/indra/newview/skins/default/xui/de/notifications.xml | |||
@@ -1442,21 +1442,6 @@ Die Option zum Austritt aus einer Gruppe finden Sie unter „Bearbeiten“ > | |||
1442 | <button name="Cancel" text="Abbrechen"/> | 1442 | <button name="Cancel" text="Abbrechen"/> |
1443 | </form> | 1443 | </form> |
1444 | </notification> | 1444 | </notification> |
1445 | <notification label="Linden-Grundstück ändern" name="ChangeLindenEstate"> | ||
1446 | Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern. | ||
1447 | |||
1448 | Dies ist ÄUSSERST GEFÄHRLICH, da es grundlegende Auswirkungen auf das Benutzererlebnis hat. Auf dem Mainland werden tausende Regionen geändert, was den Spaceserver stark belastet. | ||
1449 | |||
1450 | Fortfahren? | ||
1451 | <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> | ||
1452 | </notification> | ||
1453 | <notification label="Zugang zu Linden-Grundstück ändern" name="ChangeLindenAccess"> | ||
1454 | Sie sind im Begriff, die Zugangsliste für ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern. | ||
1455 | |||
1456 | Dies ist GEFÄHRLICH und sollte nur erfolgen, um Objekte/L$ per Hack in und aus dem Raster zu entfernen. | ||
1457 | Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belastet. | ||
1458 | <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> | ||
1459 | </notification> | ||
1460 | <notification label="Grundstück wählen" name="EstateAllowedAgentAdd"> | 1445 | <notification label="Grundstück wählen" name="EstateAllowedAgentAdd"> |
1461 | Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen? | 1446 | Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen? |
1462 | <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> | 1447 | <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml b/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml index a0dd938..d5b61a7 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml | |||
@@ -1172,11 +1172,15 @@ scratch and wear it. | |||
1172 | <texture_picker name="Lower Tattoo" label="Lower Tattoo" tool_tip="Click to choose a picture" | 1172 | <texture_picker name="Lower Tattoo" label="Lower Tattoo" tool_tip="Click to choose a picture" |
1173 | can_apply_immediately="true" default_image_name="Default" allow_no_texture="true" | 1173 | can_apply_immediately="true" default_image_name="Default" allow_no_texture="true" |
1174 | follows="left|top" width="70" height="80" left="14" bottom="-325"/> | 1174 | follows="left|top" width="70" height="80" left="14" bottom="-325"/> |
1175 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-415" | ||
1176 | can_apply_immediately="true" color="1 1 1 1" follows="left|top" height="80" | ||
1177 | label="Color/Tint" left="14" mouse_opaque="true" name="Color/Tint" | ||
1178 | tool_tip="Click to open Color Picker" width="70" /> | ||
1175 | <button name="Create New" label="Create New Tattoo" label_selected="Create New Tattoo" | 1179 | <button name="Create New" label="Create New Tattoo" label_selected="Create New Tattoo" |
1176 | follows="left|top" halign="center" width="170" height="24" left="8" bottom="-128" | 1180 | follows="left|top" halign="center" width="170" height="24" left="8" bottom="-128" |
1177 | mouse_opaque="true" scale_image="true"/> | 1181 | mouse_opaque="true" scale_image="true"/> |
1178 | <button name="Take Off" label="Take Off" label_selected="Take Off" | 1182 | <button name="Take Off" label="Take Off" label_selected="Take Off" |
1179 | follows="left|top" width="82" height="20" left="8" bottom="-365"/> | 1183 | follows="left|top" width="82" height="20" left="8" bottom="-440"/> |
1180 | <button name="Save" label="Save" label_selected="Save" | 1184 | <button name="Save" label="Save" label_selected="Save" |
1181 | follows="right|bottom" width="82" height="20" left="123" bottom="-478"/> | 1185 | follows="right|bottom" width="82" height="20" left="123" bottom="-478"/> |
1182 | <button name="Save As" label="Save As..." label_selected="Save As..." | 1186 | <button name="Save As" label="Save As..." label_selected="Save As..." |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_display_name.xml b/linden/indra/newview/skins/default/xui/en-us/floater_display_name.xml new file mode 100644 index 0000000..5875efb --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/floater_display_name.xml | |||
@@ -0,0 +1,42 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | ||
2 | <floater name="Display Name" title="CHANGE DISPLAY NAME" | ||
3 | can_minimize="true" can_close="true" can_resize="false" | ||
4 | enabled="true" mouse_opaque="true" | ||
5 | height="235" width="440"> | ||
6 | <text name="info_text1" font="SansSerif" wrap="true" | ||
7 | height="18" width="380" left="42" bottom_delta="-48" follows="left|top"> | ||
8 | The name you give to your avatar is called your Display Name. | ||
9 | </text> | ||
10 | <text name="info_text2" font="SansSerif" wrap="true" | ||
11 | height="18" width="300" left="120" bottom_delta="-18" follows="left|top"> | ||
12 | You can change it once a week. | ||
13 | </text> | ||
14 | <text name="now_ok_text" font="SansSerif" | ||
15 | height="18" width="320" left="105" bottom_delta="-25" follows="left|top"> | ||
16 | You can change it now if you so wish. | ||
17 | </text> | ||
18 | <text name="lockout_text" font="SansSerif" visible="false" | ||
19 | height="18" width="380" left="20" bottom_delta="0" follows="left|top"> | ||
20 | You cannot change it before: [TIME]. | ||
21 | </text> | ||
22 | <text name="set_name_label" font="SansSerif" | ||
23 | height="20" width="380" left="20" bottom_delta="-25" follows="left|top"> | ||
24 | New Display Name: | ||
25 | </text> | ||
26 | <line_editor name="display_name_editor" max_length="31" | ||
27 | height="20" width="360" left="40" bottom_delta="-20" follows="left|top" /> | ||
28 | <text name="name_confirm_label" font="SansSerif" | ||
29 | height="20" width="380" left="20" bottom_delta="-32" follows="left|top"> | ||
30 | Type your new name again to confirm: | ||
31 | </text> | ||
32 | <line_editor name="display_name_confirm" max_length="31" | ||
33 | height="20" width="360" left="40" bottom_delta="-20" follows="left|top" /> | ||
34 | <button name="save_btn" label="Save" font="SansSerif" | ||
35 | tool_tip="Save your new Display Name" | ||
36 | height="20" width="120" left="30" bottom_delta="-32"/> | ||
37 | <button name="reset_btn" label="Reset" font="SansSerif" | ||
38 | tool_tip="Make Display Name the same as Username" | ||
39 | height="20" width="120" left_delta="130" bottom_delta="0"/> | ||
40 | <button name="cancel_btn" label="Cancel" font="SansSerif" | ||
41 | height="20" width="120" left_delta="130" bottom_delta="0"/> | ||
42 | </floater> | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_new_im.xml b/linden/indra/newview/skins/default/xui/en-us/floater_new_im.xml index c93b890..5d766be 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_new_im.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_new_im.xml | |||
@@ -8,7 +8,7 @@ | |||
8 | column_padding="5" draw_border="true" draw_heading="false" | 8 | column_padding="5" draw_border="true" draw_heading="false" |
9 | draw_stripes="true" enabled="true" follows="left|top|right|bottom" | 9 | draw_stripes="true" enabled="true" follows="left|top|right|bottom" |
10 | height="290" left="6" mouse_opaque="true" multi_select="false" | 10 | height="290" left="6" mouse_opaque="true" multi_select="false" |
11 | name="user_list" width="421" /> | 11 | name="user_list" use_display_names="true" width="421" /> |
12 | <button bottom="-271" enabled="true" follows="right|bottom" font="SansSerif" | 12 | <button bottom="-271" enabled="true" follows="right|bottom" font="SansSerif" |
13 | halign="center" height="20" label="Start" label_selected="Start" left="435" | 13 | halign="center" height="20" label="Start" label_selected="Start" left="435" |
14 | mouse_opaque="true" name="start_btn" scale_image="true" sound_flags="0" | 14 | mouse_opaque="true" name="start_btn" scale_image="true" sound_flags="0" |
@@ -17,9 +17,6 @@ | |||
17 | halign="center" height="20" label="Close" label_selected="Close" left="435" | 17 | halign="center" height="20" label="Close" label_selected="Close" left="435" |
18 | mouse_opaque="true" name="close_btn" scale_image="true" sound_flags="0" | 18 | mouse_opaque="true" name="close_btn" scale_image="true" sound_flags="0" |
19 | width="60" /> | 19 | width="60" /> |
20 | <string name="name_format"> | ||
21 | [FIRST] [LAST] | ||
22 | </string> | ||
23 | <string name="online_descriptor"> | 20 | <string name="online_descriptor"> |
24 | (online) | 21 | (online) |
25 | </string> | 22 | </string> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml b/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml index 81dd05a..69e62f8 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml | |||
@@ -21,7 +21,7 @@ | |||
21 | <check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall" | 21 | <check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall" |
22 | height="16" initial_value="false" label="Eyes" left="13" | 22 | height="16" initial_value="false" label="Eyes" left="13" |
23 | mouse_opaque="true" name="checkbox_Eyes" radio_style="false" width="100" /> | 23 | mouse_opaque="true" name="checkbox_Eyes" radio_style="false" width="100" /> |
24 | <check_box bottom="-456" enabled="true" follows="left|top" font="SansSerifSmall" | 24 | <check_box bottom="-434" enabled="true" follows="left|top" font="SansSerifSmall" |
25 | height="16" initial_value="false" label="Rename Clothing To Folder Name" | 25 | height="16" initial_value="false" label="Rename Clothing To Folder Name" |
26 | left="13" mouse_opaque="true" name="rename" radio_style="false" width="210" /> | 26 | left="13" mouse_opaque="true" name="rename" radio_style="false" width="210" /> |
27 | <check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall" | 27 | <check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall" |
@@ -256,7 +256,7 @@ now wearing into it. | |||
256 | Attachments: | 256 | Attachments: |
257 | </text> | 257 | </text> |
258 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 258 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
259 | bottom="-436" drop_shadow_visible="true" enabled="true" follows="left|top" | 259 | bottom="-414" drop_shadow_visible="true" enabled="true" follows="left|top" |
260 | font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13" | 260 | font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13" |
261 | mouse_opaque="true" name="Options:" v_pad="0" width="100"> | 261 | mouse_opaque="true" name="Options:" v_pad="0" width="100"> |
262 | Options: | 262 | Options: |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml b/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml index daf217e..314ad20 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml | |||
@@ -154,7 +154,7 @@ | |||
154 | mouse_opaque="true" name="spin y" | 154 | mouse_opaque="true" name="spin y" |
155 | tool_tip="Y coordinate of location to show on map" width="48" /> | 155 | tool_tip="Y coordinate of location to show on map" width="48" /> |
156 | <spinner bottom_delta="0" decimal_digits="0" follows="bottom|right" height="16" | 156 | <spinner bottom_delta="0" decimal_digits="0" follows="bottom|right" height="16" |
157 | increment="1" initial_val="0" left_delta="50" max_val="4096" min_val="0" | 157 | increment="1" initial_val="0" left_delta="50" max_val="16383" min_val="0" |
158 | mouse_opaque="true" name="spin z" | 158 | mouse_opaque="true" name="spin z" |
159 | tool_tip="Z coordinate of location to show on map" width="48" /> | 159 | tool_tip="Z coordinate of location to show on map" width="48" /> |
160 | <button bottom="-625" follows="right|bottom" font="SansSerif" halign="center" | 160 | <button bottom="-625" follows="right|bottom" font="SansSerif" halign="center" |
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 31e730a..c2424d7 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 | |||
@@ -259,6 +259,11 @@ | |||
259 | userdata="appearance" /> | 259 | userdata="appearance" /> |
260 | <on_enable function="Edit.EnableCustomizeAvatar" /> | 260 | <on_enable function="Edit.EnableCustomizeAvatar" /> |
261 | </menu_item_call> | 261 | </menu_item_call> |
262 | <menu_item_call bottom="-362" enabled="true" height="19" label="Display Name..." left="0" | ||
263 | mouse_opaque="true" name="Display Name..." width="153"> | ||
264 | <on_click function="ShowFloater" userdata="displayname" /> | ||
265 | <on_enable function="Edit.EnableDisplayName" /> | ||
266 | </menu_item_call> | ||
262 | <menu_item_separator /> | 267 | <menu_item_separator /> |
263 | <menu_item_check name="Friends" label="Friends" | 268 | <menu_item_check name="Friends" label="Friends" |
264 | shortcut="control|shift|F"> | 269 | shortcut="control|shift|F"> |
@@ -267,7 +272,8 @@ | |||
267 | <on_check function="FloaterVisible" | 272 | <on_check function="FloaterVisible" |
268 | userdata="friends" /> | 273 | userdata="friends" /> |
269 | </menu_item_check> | 274 | </menu_item_check> |
270 | <menu_item_call name="Groups" label="Groups"> | 275 | <menu_item_call name="Groups" label="Groups" |
276 | shortcut="control|shift|G"> | ||
271 | <on_click function="ShowAgentGroups" | 277 | <on_click function="ShowAgentGroups" |
272 | userdata="agent" /> | 278 | userdata="agent" /> |
273 | </menu_item_call> | 279 | </menu_item_call> |
@@ -1965,6 +1971,13 @@ | |||
1965 | <on_click function="Advanced.DumpAttachments" | 1971 | <on_click function="Advanced.DumpAttachments" |
1966 | userdata="" /> | 1972 | userdata="" /> |
1967 | </menu_item_call> | 1973 | </menu_item_call> |
1974 | <menu_item_call | ||
1975 | label="Reload Avatar Cloud Particle" | ||
1976 | name="Reload Avatar Cloud Particle"> | ||
1977 | <on_click | ||
1978 | function="Advanced.ReloadAvatarCloudParticle" | ||
1979 | userdata="" /> | ||
1980 | </menu_item_call> | ||
1968 | </menu> | 1981 | </menu> |
1969 | 1982 | ||
1970 | <!-- CRASH --> | 1983 | <!-- CRASH --> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml b/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml index 61067da..5ee4ed0 100644 --- a/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml +++ b/linden/indra/newview/skins/default/xui/en-us/mime_types_windows.xml | |||
@@ -142,7 +142,7 @@ | |||
142 | audio | 142 | audio |
143 | </widgettype> | 143 | </widgettype> |
144 | <impl> | 144 | <impl> |
145 | media_plugin_quicktime | 145 | media_plugin_gstreamer010 |
146 | </impl> | 146 | </impl> |
147 | </mimetype> | 147 | </mimetype> |
148 | <mimetype name="video/*"> | 148 | <mimetype name="video/*"> |
@@ -197,8 +197,8 @@ | |||
197 | audio | 197 | audio |
198 | </widgettype> | 198 | </widgettype> |
199 | <impl> | 199 | <impl> |
200 | media_plugin_quicktime | 200 | media_plugin_gstreamer010 |
201 | </impl> | 201 | </impl> |
202 | </mimetype> | 202 | </mimetype> |
203 | <mimetype name="application/pdf"> | 203 | <mimetype name="application/pdf"> |
204 | <label name="application/pdf_label"> | 204 | <label name="application/pdf_label"> |
@@ -274,8 +274,8 @@ | |||
274 | audio | 274 | audio |
275 | </widgettype> | 275 | </widgettype> |
276 | <impl> | 276 | <impl> |
277 | media_plugin_quicktime | 277 | media_plugin_gstreamer010 |
278 | </impl> | 278 | </impl> |
279 | </mimetype> | 279 | </mimetype> |
280 | <mimetype name="audio/mpeg"> | 280 | <mimetype name="audio/mpeg"> |
281 | <label name="audio/mpeg_label"> | 281 | <label name="audio/mpeg_label"> |
@@ -285,8 +285,8 @@ | |||
285 | audio | 285 | audio |
286 | </widgettype> | 286 | </widgettype> |
287 | <impl> | 287 | <impl> |
288 | media_plugin_quicktime | 288 | media_plugin_gstreamer010 |
289 | </impl> | 289 | </impl> |
290 | </mimetype> | 290 | </mimetype> |
291 | <mimetype name="audio/x-aiff"> | 291 | <mimetype name="audio/x-aiff"> |
292 | <label name="audio/x-aiff_label"> | 292 | <label name="audio/x-aiff_label"> |
@@ -296,8 +296,8 @@ | |||
296 | audio | 296 | audio |
297 | </widgettype> | 297 | </widgettype> |
298 | <impl> | 298 | <impl> |
299 | media_plugin_quicktime | 299 | media_plugin_gstreamer010 |
300 | </impl> | 300 | </impl> |
301 | </mimetype> | 301 | </mimetype> |
302 | <mimetype name="audio/x-wav"> | 302 | <mimetype name="audio/x-wav"> |
303 | <label name="audio/x-wav_label"> | 303 | <label name="audio/x-wav_label"> |
@@ -307,8 +307,8 @@ | |||
307 | audio | 307 | audio |
308 | </widgettype> | 308 | </widgettype> |
309 | <impl> | 309 | <impl> |
310 | media_plugin_quicktime | 310 | media_plugin_gstreamer010 |
311 | </impl> | 311 | </impl> |
312 | </mimetype> | 312 | </mimetype> |
313 | <mimetype menu="1" name="image/bmp"> | 313 | <mimetype menu="1" name="image/bmp"> |
314 | <label name="image/bmp_label"> | 314 | <label name="image/bmp_label"> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml index be29df8..358dbbf 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml | |||
@@ -3194,30 +3194,11 @@ Type a short announcement which will be sent to everyone currently in your estat | |||
3194 | 3194 | ||
3195 | <notification | 3195 | <notification |
3196 | icon="alert.tga" | 3196 | icon="alert.tga" |
3197 | label="Change Linden Estate" | 3197 | label="Pfft some old linden crap" |
3198 | name="ChangeLindenEstate" | 3198 | name="PfftLindenCrap" |
3199 | type="alert"> | 3199 | type="alert"> |
3200 | You are about to change a Linden owned estate (mainland, teen grid, orientation, etc.). | 3200 | This used to be some Linden inspired crap, but should never be seen now. |
3201 | 3201 | Still unravelling the code before I make this go away. | |
3202 | This is EXTREMELY DANGEROUS because it can fundamentally affect the user experience. On the mainland, it will change thousands of regions and make the spaceserver hiccup. | ||
3203 | |||
3204 | Proceed? | ||
3205 | <usetemplate | ||
3206 | name="okcancelbuttons" | ||
3207 | notext="Cancel" | ||
3208 | yestext="OK"/> | ||
3209 | </notification> | ||
3210 | |||
3211 | <notification | ||
3212 | icon="alert.tga" | ||
3213 | label="Change Linden Estate Access" | ||
3214 | name="ChangeLindenAccess" | ||
3215 | type="alert"> | ||
3216 | You are about to change the access list for a Linden owned estate (mainland, teen grid, orientation, etc.). | ||
3217 | |||
3218 | This is DANGEROUS and should only be done to invoke the hack allowing objects/[CURRENCY] to be transfered in/out of a grid. | ||
3219 | |||
3220 | It will change thousands of regions and make the spaceserver hiccup. | ||
3221 | <usetemplate | 3202 | <usetemplate |
3222 | name="okcancelbuttons" | 3203 | name="okcancelbuttons" |
3223 | notext="Cancel" | 3204 | notext="Cancel" |
@@ -5237,6 +5218,88 @@ The string [STRING_NAME] is missing from strings.xml | |||
5237 | </notification> | 5218 | </notification> |
5238 | 5219 | ||
5239 | <notification | 5220 | <notification |
5221 | icon="alertmodal.tga" | ||
5222 | name="SetDisplayNameSuccess" | ||
5223 | type="alert"> | ||
5224 | Hi [DISPLAY_NAME]! | ||
5225 | |||
5226 | Just like in real life, it takes a while for everyone to learn about a new name. Please allow several days for your name to update in objects, scripts, search, etc. | ||
5227 | </notification> | ||
5228 | |||
5229 | <notification | ||
5230 | icon="alertmodal.tga" | ||
5231 | name="SetDisplayNameBlocked" | ||
5232 | type="alert"> | ||
5233 | Sorry, you cannot change your display name. If you feel this is in error, please contact support. | ||
5234 | </notification> | ||
5235 | |||
5236 | <notification | ||
5237 | icon="alertmodal.tga" | ||
5238 | name="SetDisplayNameFailedLength" | ||
5239 | type="alertmodal"> | ||
5240 | Sorry, that name is too long. Display names can have a maximum of [LENGTH] characters. | ||
5241 | |||
5242 | Please try a shorter name. | ||
5243 | </notification> | ||
5244 | |||
5245 | <notification | ||
5246 | icon="alertmodal.tga" | ||
5247 | name="SetDisplayNameFailedGeneric" | ||
5248 | type="alertmodal"> | ||
5249 | Sorry, we could not set your display name. Please try again later. | ||
5250 | </notification> | ||
5251 | |||
5252 | <notification | ||
5253 | icon="alertmodal.tga" | ||
5254 | name="SetDisplayNameMismatch" | ||
5255 | type="alertmodal"> | ||
5256 | The display names you entered do not match. Please re-enter. | ||
5257 | </notification> | ||
5258 | |||
5259 | <!-- *NOTE: This should never happen --> | ||
5260 | <notification | ||
5261 | icon="alertmodal.tga" | ||
5262 | name="AgentDisplayNameUpdateThresholdExceeded" | ||
5263 | type="alertmodal"> | ||
5264 | Sorry, you have to wait longer before you can change your display name. | ||
5265 | |||
5266 | See http://wiki.secondlife.com/wiki/Setting_your_display_name | ||
5267 | |||
5268 | Please try again later. | ||
5269 | </notification> | ||
5270 | |||
5271 | <notification | ||
5272 | icon="alertmodal.tga" | ||
5273 | name="AgentDisplayNameSetBlocked" | ||
5274 | type="alertmodal"> | ||
5275 | Sorry, we could not set your requested name because it contains a banned word. | ||
5276 | |||
5277 | Please try a different name. | ||
5278 | </notification> | ||
5279 | |||
5280 | <notification | ||
5281 | icon="alertmodal.tga" | ||
5282 | name="AgentDisplayNameSetInvalidUnicode" | ||
5283 | type="alertmodal"> | ||
5284 | The display name you wish to set contains invalid characters. | ||
5285 | </notification> | ||
5286 | |||
5287 | <notification | ||
5288 | icon="alertmodal.tga" | ||
5289 | name="AgentDisplayNameSetOnlyPunctuation" | ||
5290 | type="alertmodal"> | ||
5291 | Your display name must contain letters other than punctuation. | ||
5292 | </notification> | ||
5293 | |||
5294 | |||
5295 | <notification | ||
5296 | icon="notifytip.tga" | ||
5297 | name="DisplayNameUpdate" | ||
5298 | type="notifytip"> | ||
5299 | [OLD_NAME] ([SLID]) is now known as [NEW_NAME]. | ||
5300 | </notification> | ||
5301 | |||
5302 | <notification | ||
5240 | icon="notifytip.tga" | 5303 | icon="notifytip.tga" |
5241 | name="Cancelled" | 5304 | name="Cancelled" |
5242 | type="notifytip"> | 5305 | type="notifytip"> |
@@ -5657,9 +5720,9 @@ If you want to view streaming media on parcels that support it you should go to | |||
5657 | No Media Plugin was found to handle the "[MIME_TYPE]" mime type. Media of this type will be unavailable. | 5720 | No Media Plugin was found to handle the "[MIME_TYPE]" mime type. Media of this type will be unavailable. |
5658 | </notification> | 5721 | </notification> |
5659 | <notification | 5722 | <notification |
5660 | icon="alertmodal.tga" | 5723 | icon="alert.tga" |
5661 | name="MediaPluginFailed" | 5724 | name="MediaPluginFailed" |
5662 | type="alertmodal"> | 5725 | type="alert"> |
5663 | The following Media Plugin has failed: | 5726 | The following Media Plugin has failed: |
5664 | [PLUGIN] | 5727 | [PLUGIN] |
5665 | 5728 | ||
@@ -6874,7 +6937,7 @@ GRAVITY -- -9.8 | |||
6874 | 6937 | ||
6875 | * -- Multiplication | 6938 | * -- Multiplication |
6876 | \ -- Division | 6939 | \ -- Division |
6877 | + -- Addition | 6940 | -- Addition |
6878 | - -- Subtraction | 6941 | - -- Subtraction |
6879 | 6942 | ||
6880 | For information about this feature, click "More Info". | 6943 | For information about this feature, click "More Info". |
@@ -6903,7 +6966,7 @@ GLOW -- Glow | |||
6903 | 6966 | ||
6904 | * -- Multiplication | 6967 | * -- Multiplication |
6905 | \ -- Division | 6968 | \ -- Division |
6906 | + -- Addition | 6969 | -- Addition |
6907 | - -- Subtraction | 6970 | - -- Subtraction |
6908 | 6971 | ||
6909 | For information about this feature, click "More Info". | 6972 | For information about this feature, click "More Info". |
@@ -7221,6 +7284,24 @@ Apply this region's settings? ("Ignore" will ignore all region setting | |||
7221 | The new font will appear after you restart [VIEWER_NAME]. | 7284 | The new font will appear after you restart [VIEWER_NAME]. |
7222 | </notification> | 7285 | </notification> |
7223 | 7286 | ||
7287 | <notification | ||
7288 | icon="alertmodal.tga" | ||
7289 | name="FirstPrivacy" | ||
7290 | type="alertmodal"> | ||
7291 | Terms of service of the grid you are connecting to require sending a "statistics packet" every 5 minutes. | ||
7292 | That is for example: Data about your hardware (CPU, RAM), number of avatars around, number of sims visited. | ||
7293 | Please check *the grids* privacy policy about usage of that data. | ||
7294 | <form name="form"> | ||
7295 | <button | ||
7296 | index="0" | ||
7297 | name="ok" | ||
7298 | text="Login anyway"/> | ||
7299 | <button | ||
7300 | index="1" | ||
7301 | name="notok" | ||
7302 | text="Do not log in"/> | ||
7303 | </form> | ||
7304 | </notification> | ||
7224 | 7305 | ||
7225 | <!--End Imprudence notifications--> | 7306 | <!--End Imprudence notifications--> |
7226 | <!-- [KITTY VIEWER] --> | 7307 | <!-- [KITTY VIEWER] --> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml index 38c5a98..2db2595 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml | |||
@@ -127,6 +127,11 @@ | |||
127 | font="SansSerifSmall" height="16" is_unicode="false" left="12" | 127 | font="SansSerifSmall" height="16" is_unicode="false" left="12" |
128 | max_length="254" mouse_opaque="false" name="name" | 128 | max_length="254" mouse_opaque="false" name="name" |
129 | width="155" /> | 129 | width="155" /> |
130 | <name_editor bevel_style="in" border_style="line" visible="false" | ||
131 | border_thickness="1" bottom="-24" enabled="false" follows="left|top" | ||
132 | font="SansSerifSmall" height="16" is_unicode="false" left_delta="0" | ||
133 | max_length="254" mouse_opaque="false" name="complete_name" | ||
134 | width="155" /> | ||
130 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" | 135 | <button bottom_delta="0" font="SansSerif" halign="center" height="20" |
131 | label="Copy Key" label_selected="Copy Key" | 136 | label="Copy Key" label_selected="Copy Key" |
132 | left_delta="157" mouse_opaque="true" name="btn_copy_uuid" width="80" /> | 137 | left_delta="157" mouse_opaque="true" name="btn_copy_uuid" width="80" /> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml index 4b0b292..6ced7d6 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml | |||
@@ -2,6 +2,15 @@ | |||
2 | <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" | 2 | <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" |
3 | height="408" label="General" left="102" mouse_opaque="true" | 3 | height="408" label="General" left="102" mouse_opaque="true" |
4 | name="general_panel" width="517"> | 4 | name="general_panel" width="517"> |
5 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
6 | bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
7 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | ||
8 | mouse_opaque="true" name="start_location_textbox" v_pad="0" width="394"> | ||
9 | Start Location: | ||
10 | </text> | ||
11 | <string name="region_name_prompt"> | ||
12 | <Type region name> | ||
13 | </string> | ||
5 | <combo_box name="default_location_combo" | 14 | <combo_box name="default_location_combo" |
6 | bottom="-22" left="155" height="16" width="150" | 15 | bottom="-22" left="155" height="16" width="150" |
7 | follows="left|top" font="SansSerifSmall" | 16 | follows="left|top" font="SansSerifSmall" |
@@ -24,7 +33,13 @@ | |||
24 | font="SansSerifSmall" height="16" initial_value="true" | 33 | font="SansSerifSmall" height="16" initial_value="true" |
25 | label="Show start location at login screen" left="151" mouse_opaque="true" | 34 | label="Show start location at login screen" left="151" mouse_opaque="true" |
26 | name="show_location_checkbox" radio_style="false" width="256" /> | 35 | name="show_location_checkbox" radio_style="false" width="256" /> |
27 | <combo_box bottom_delta="-25" follows="left|top" height="18" left="155" | 36 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
37 | bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
38 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | ||
39 | mouse_opaque="true" name="show_names_textbox" v_pad="0" width="394"> | ||
40 | Nametags: | ||
41 | </text> | ||
42 | <combo_box bottom_delta="0" follows="left|top" height="18" left="155" | ||
28 | mouse_opaque="true" name="fade_out_combobox" width="146"> | 43 | mouse_opaque="true" name="fade_out_combobox" width="146"> |
29 | <combo_item name="Never" value="Never"> | 44 | <combo_item name="Never" value="Never"> |
30 | Never show | 45 | Never show |
@@ -44,11 +59,35 @@ | |||
44 | font="SansSerifSmall" height="16" initial_value="false" | 59 | font="SansSerifSmall" height="16" initial_value="false" |
45 | label="Hide my name on my screen" left="151" name="show_my_name_checkbox" | 60 | label="Hide my name on my screen" left="151" name="show_my_name_checkbox" |
46 | width="200" /> | 61 | width="200" /> |
62 | |||
47 | <check_box bottom_delta="-20" follows="left|top" | 63 | <check_box bottom_delta="-20" follows="left|top" |
48 | font="SansSerifSmall" height="16" initial_value="false" | 64 | font="SansSerifSmall" height="16" initial_value="false" |
49 | label="Highlight friends tags" left="151" name="highlight_friends_checkbox" | 65 | label="Highlight friends tags" left="151" name="highlight_friends_checkbox" |
50 | width="200" /> | 66 | width="200" /> |
51 | <text type="string" length="1" bottom_delta="-24" follows="left|top" font="SansSerifSmall" h_pad="0" | 67 | <text type="string" length="1" bottom_delta="-24" follows="left|top" font="SansSerifSmall" h_pad="0" |
68 | halign="left" height="16" left="10" name="Display_Names_textbox" v_pad="0" | ||
69 | width="394"> | ||
70 | Display Names: | ||
71 | </text> | ||
72 | <radio_group name="displaynames" draw_border="false" | ||
73 | bottom_delta="0" left_delta="60" height="18" | ||
74 | follows="top|left" | ||
75 | control_name="DisplayNamesUsage"> | ||
76 | <radio_item name="0" bottom_delta="-8" left_delta="40" height="18"> | ||
77 | Legacy Names | ||
78 | </radio_item> | ||
79 | <radio_item name="1" bottom_delta="0" left_delta="50" height="18"> | ||
80 | Display Names | ||
81 | </radio_item> | ||
82 | <radio_item name="2" bottom_delta="0" left_delta="50" height="18"> | ||
83 | Show Both | ||
84 | </radio_item> | ||
85 | </radio_group> | ||
86 | <check_box bottom_delta="-20" follows="left|top" control_name="LegacyNamesForFriends" | ||
87 | font="SansSerifSmall" height="16" initial_value="false" | ||
88 | label="Show legacy names for friends" left="151" name="legacy_friends_checkbox" | ||
89 | width="200" /> | ||
90 | <text type="string" length="1" bottom_delta="-24" follows="left|top" font="SansSerifSmall" h_pad="0" | ||
52 | halign="left" height="16" left="10" name="group_titles_textbox" v_pad="0" | 91 | halign="left" height="16" left="10" name="group_titles_textbox" v_pad="0" |
53 | width="394"> | 92 | width="394"> |
54 | Group Titles: | 93 | Group Titles: |
@@ -61,37 +100,49 @@ | |||
61 | font="SansSerifSmall" height="16" initial_value="false" | 100 | font="SansSerifSmall" height="16" initial_value="false" |
62 | label="Hide my group title" left="330" name="show_my_title_checkbox" | 101 | label="Hide my group title" left="330" name="show_my_title_checkbox" |
63 | radio_style="false" width="256" /> | 102 | radio_style="false" width="256" /> |
64 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-210" | 103 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
104 | bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
105 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | ||
106 | mouse_opaque="true" name="effects_color_textbox" v_pad="0" width="394"> | ||
107 | Selection Beam Color: | ||
108 | </text> | ||
109 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-44" | ||
65 | can_apply_immediately="false" color="1 1 1 1" | 110 | can_apply_immediately="false" color="1 1 1 1" |
66 | enabled="true" follows="left|top" height="65" label="" left="153" | 111 | enabled="true" follows="left|top" height="55" label="" left="153" |
67 | mouse_opaque="true" name="effect_color_swatch" | 112 | mouse_opaque="true" name="effect_color_swatch" |
68 | tool_tip="Click to open Color Picker" width="55" /> | 113 | tool_tip="Click to open Color Picker" width="45" /> |
69 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 114 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
70 | bottom="-215" drop_shadow_visible="true" enabled="true" follows="left|top" | 115 | bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" |
71 | font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" | 116 | font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" |
72 | mouse_opaque="true" name="UI Size:" v_pad="0" width="128"> | 117 | mouse_opaque="true" name="UI Size:" v_pad="0" width="128"> |
73 | UI Size: | 118 | UI Size: |
74 | </text> | 119 | </text> |
75 | <slider bottom="-217" can_edit_text="true" | 120 | <slider bottom_delta="42" can_edit_text="true" |
76 | decimal_digits="3" enabled="true" height="16" increment="0.001" | 121 | decimal_digits="3" enabled="true" height="16" increment="0.001" |
77 | initial_val="1" left="148" max_val="1.4" min_val="0.75" mouse_opaque="true" | 122 | initial_val="1" left="148" max_val="1.4" min_val="0.75" mouse_opaque="true" |
78 | name="ui_scale_slider" show_text="true" value="1" width="220" /> | 123 | name="ui_scale_slider" show_text="true" value="1" width="220" /> |
79 | <button bottom="-221" enabled="true" follows="left|top" | 124 | <button bottom_delta="-48" enabled="true" follows="left|top" |
80 | font="SansSerif" halign="center" height="22" label="Reset" | 125 | font="SansSerif" halign="center" height="22" label="Reset" |
81 | label_selected="Reset" left_delta="226" mouse_opaque="true" | 126 | label_selected="Reset" left_delta="226" mouse_opaque="true" |
82 | name="reset_ui_size" scale_image="true" width="80" /> | 127 | name="reset_ui_size" scale_image="true" width="80" /> |
83 | <check_box bottom="-236" enabled="true" follows="left|top" | 128 | <check_box bottom_delta="-14" enabled="true" follows="left|top" |
84 | font="SansSerifSmall" height="16" initial_value="false" | 129 | font="SansSerifSmall" height="16" initial_value="false" |
85 | label="Use resolution independent scale" left="151" mouse_opaque="true" | 130 | label="Use resolution independent scale" left="151" mouse_opaque="true" |
86 | name="ui_auto_scale" radio_style="false" width="256" /> | 131 | name="ui_auto_scale" radio_style="false" width="256" /> |
87 | <check_box bottom="-260" enabled="true" follows="left|top" | 132 | <spinner bottom_delta="-24" decimal_digits="0" enabled="true" |
88 | font="SansSerifSmall" height="16" initial_value="false" | ||
89 | label="Go Away/AFK when idle" left="330" mouse_opaque="true" | ||
90 | name="afk_timeout_checkbox" radio_style="false" width="256" /> | ||
91 | <spinner bottom="-260" decimal_digits="0" enabled="true" | ||
92 | follows="left|top" height="16" increment="1" initial_val="300" | 133 | follows="left|top" height="16" increment="1" initial_val="300" |
93 | label="Away Timeout:" label_width="141" left="10" max_val="600" | 134 | label="Away Timeout:" label_width="141" left="10" max_val="600" |
94 | min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" /> | 135 | min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" /> |
136 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
137 | bottom_delta="6" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
138 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="220" | ||
139 | mouse_opaque="true" name="seconds_textbox" v_pad="0" width="128"> | ||
140 | seconds | ||
141 | </text> | ||
142 | <check_box bottom_delta="-5" enabled="true" follows="left|top" | ||
143 | font="SansSerifSmall" height="16" initial_value="false" | ||
144 | label="Go Away/AFK when idle" left="330" mouse_opaque="true" | ||
145 | name="afk_timeout_checkbox" radio_style="false" width="256" /> | ||
95 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 146 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
96 | bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top" | 147 | bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top" |
97 | font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" | 148 | font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" |
@@ -109,18 +160,18 @@ | |||
109 | mouse_opaque="true" name="mini_map_notify_sim" radio_style="false" | 160 | mouse_opaque="true" name="mini_map_notify_sim" radio_style="false" |
110 | width="256" /> | 161 | width="256" /> |
111 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 162 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
112 | bottom="-312" drop_shadow_visible="true" enabled="true" follows="left|top" | 163 | bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" |
113 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | 164 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" |
114 | mouse_opaque="true" name="maturity_desired_label" v_pad="0" width="394"> | 165 | mouse_opaque="true" name="maturity_desired_label" v_pad="0" width="394"> |
115 | Rating: | 166 | Rating: |
116 | </text> | 167 | </text> |
117 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 168 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
118 | bottom="-312" drop_shadow_visible="true" enabled="true" follows="left|top" | 169 | bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" |
119 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="151" | 170 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="151" |
120 | mouse_opaque="true" name="maturity_desired_prompt" v_pad="0" width="394"> | 171 | mouse_opaque="true" name="maturity_desired_prompt" v_pad="0" width="394"> |
121 | I want to access content rated: | 172 | I want to access content rated: |
122 | </text> | 173 | </text> |
123 | <combo_box bottom="-318" follows="left|top" height="18" left="315" | 174 | <combo_box bottom_delta="-6" follows="left|top" height="18" left="315" |
124 | mouse_opaque="true" name="maturity_desired_combobox" width="150"> | 175 | mouse_opaque="true" name="maturity_desired_combobox" width="150"> |
125 | <combo_item name="Desired_Adult" value="42"> | 176 | <combo_item name="Desired_Adult" value="42"> |
126 | PG, Mature and Adult | 177 | PG, Mature and Adult |
@@ -133,58 +184,20 @@ | |||
133 | </combo_item> | 184 | </combo_item> |
134 | </combo_box> | 185 | </combo_box> |
135 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 186 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
136 | bottom="-312" drop_shadow_visible="true" enabled="true" follows="left|top" | 187 | bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" |
137 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="315" | 188 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="315" |
138 | mouse_opaque="true" name="maturity_desired_textbox" v_pad="0" width="150"> | 189 | mouse_opaque="true" name="maturity_desired_textbox" v_pad="0" width="150"> |
139 | PG only | 190 | PG only |
140 | </text> | 191 | </text> |
192 | |||
193 | |||
141 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 194 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
142 | bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" | 195 | bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" |
143 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | ||
144 | mouse_opaque="true" name="start_location_textbox" v_pad="0" width="394"> | ||
145 | Start Location: | ||
146 | </text> | ||
147 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
148 | bottom="-64" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
149 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | ||
150 | mouse_opaque="true" name="show_names_textbox" v_pad="0" width="394"> | ||
151 | Nametags: | ||
152 | </text> | ||
153 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
154 | bottom="-155" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
155 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | ||
156 | mouse_opaque="true" name="effects_color_textbox" v_pad="0" width="394"> | ||
157 | Selection Beam Color: | ||
158 | </text> | ||
159 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
160 | bottom="-254" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
161 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="220" | ||
162 | mouse_opaque="true" name="seconds_textbox" v_pad="0" width="128"> | ||
163 | seconds | ||
164 | </text> | ||
165 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
166 | bottom="-352" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
167 | font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10" | 196 | font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10" |
168 | mouse_opaque="true" name="time_textbox" v_pad="0" width="394"> | 197 | mouse_opaque="true" name="time_textbox" v_pad="0" width="394"> |
169 | Clock: | 198 | Clock: |
170 | </text> | 199 | </text> |
171 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 200 | <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" follows="left|top" |
172 | bottom="-384" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
173 | font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10" | ||
174 | mouse_opaque="true" name="language_textbox" v_pad="0" width="394"> | ||
175 | Language: | ||
176 | </text> | ||
177 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
178 | bottom_delta="-1" drop_shadow_visible="true" enabled="true" | ||
179 | follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" | ||
180 | height="18" left_delta="293" mouse_opaque="true" name="language_textbox2" | ||
181 | v_pad="0" width="400"> | ||
182 | (requires restart for full effect) | ||
183 | </text> | ||
184 | <string name="region_name_prompt"> | ||
185 | <Type region name> | ||
186 | </string> | ||
187 | <combo_box allow_text_entry="false" bottom="-352" enabled="true" follows="left|top" | ||
188 | height="18" left="153" max_chars="20" mouse_opaque="true" | 201 | height="18" left="153" max_chars="20" mouse_opaque="true" |
189 | name="time_combobox" width="146"> | 202 | name="time_combobox" width="146"> |
190 | <combo_item type="string" name="12HourTime" value="PST 12"> | 203 | <combo_item type="string" name="12HourTime" value="PST 12"> |
@@ -197,7 +210,13 @@ | |||
197 | UTC | 210 | UTC |
198 | </combo_item> | 211 | </combo_item> |
199 | </combo_box> | 212 | </combo_box> |
200 | <combo_box allow_text_entry="true" bottom="-382" enabled="true" | 213 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
214 | bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
215 | font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10" | ||
216 | mouse_opaque="true" name="language_textbox" v_pad="0" width="394"> | ||
217 | Language: | ||
218 | </text> | ||
219 | <combo_box allow_text_entry="true" bottom_delta="0" enabled="true" | ||
201 | follows="left|top" height="16" left="153" max_chars="135" | 220 | follows="left|top" height="16" left="153" max_chars="135" |
202 | mouse_opaque="true" name="language_combobox" width="146"> | 221 | mouse_opaque="true" name="language_combobox" width="146"> |
203 | <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default"> | 222 | <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default"> |
@@ -255,5 +274,11 @@ | |||
255 | 한국어 (Korean) - Beta | 274 | 한국어 (Korean) - Beta |
256 | </combo_item> | 275 | </combo_item> |
257 | </combo_box> | 276 | </combo_box> |
258 | 277 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | |
278 | bottom_delta="0" drop_shadow_visible="true" enabled="true" | ||
279 | follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" | ||
280 | height="18" left_delta="150" mouse_opaque="true" name="language_textbox2" | ||
281 | v_pad="0" width="400"> | ||
282 | (requires restart for full effect) | ||
283 | </text> | ||
259 | </panel> | 284 | </panel> |
diff --git a/linden/indra/newview/skins/default/xui/es/notifications.xml b/linden/indra/newview/skins/default/xui/es/notifications.xml index f39dfc9..f3a862d 100644 --- a/linden/indra/newview/skins/default/xui/es/notifications.xml +++ b/linden/indra/newview/skins/default/xui/es/notifications.xml | |||
@@ -1454,21 +1454,6 @@ Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos re | |||
1454 | <button name="Cancel" text="Cancelar"/> | 1454 | <button name="Cancel" text="Cancelar"/> |
1455 | </form> | 1455 | </form> |
1456 | </notification> | 1456 | </notification> |
1457 | <notification label="Cambiar un estado Linden" name="ChangeLindenEstate"> | ||
1458 | Va a hacer cambios en un estado propiedad de Linden (mainland, grid teen, orientación, etc.). | ||
1459 | |||
1460 | Esto es EXTREMADAMENTE PELIGROSO, porque puede afectar radicalmente al funcionamiento de los usuarios. En mainland, se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor. | ||
1461 | |||
1462 | ¿Proceder? | ||
1463 | <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> | ||
1464 | </notification> | ||
1465 | <notification label="Cambiar el acceso a un estado Linden" name="ChangeLindenAccess"> | ||
1466 | Va a cambiar la lista de acceso de un estado propiedad de Linden (mainland, grid teen, orientación, etc.). | ||
1467 | |||
1468 | Esto es PELIGROSO, y sólo debe hacerse para deshacerse de ataques que permitan sacar o meter en el grid objetos o L$. | ||
1469 | Se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor. | ||
1470 | <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> | ||
1471 | </notification> | ||
1472 | <notification label="Seleccionar el estado" name="EstateAllowedAgentAdd"> | 1457 | <notification label="Seleccionar el estado" name="EstateAllowedAgentAdd"> |
1473 | ¿Añadir a la lista de permitidos sólo para este estado o para [ALL_ESTATES]? | 1458 | ¿Añadir a la lista de permitidos sólo para este estado o para [ALL_ESTATES]? |
1474 | <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> | 1459 | <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> |
diff --git a/linden/indra/newview/skins/default/xui/fr/notifications.xml b/linden/indra/newview/skins/default/xui/fr/notifications.xml index 6911f8b..dc7e61f 100644 --- a/linden/indra/newview/skins/default/xui/fr/notifications.xml +++ b/linden/indra/newview/skins/default/xui/fr/notifications.xml | |||
@@ -1425,21 +1425,6 @@ Pour quitter un groupe, sélectionnez l'option Groupe dans le menu Éditer. | |||
1425 | <button name="Cancel" text="Annuler"/> | 1425 | <button name="Cancel" text="Annuler"/> |
1426 | </form> | 1426 | </form> |
1427 | </notification> | 1427 | </notification> |
1428 | <notification label="Modifier un domaine Linden" name="ChangeLindenEstate"> | ||
1429 | Vous vous apprêtez à modifier un domaine appartenant aux Lindens (continent, zone réservée aux ados, orientation etc.). | ||
1430 | |||
1431 | Cela est extrêmement délicat car l'expérience des résidents est en jeu. Sur le continent, cela modifiera des milliers de régions et sera difficile à digérer pour le serveur. | ||
1432 | |||
1433 | Continuer ? | ||
1434 | <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> | ||
1435 | </notification> | ||
1436 | <notification label="Modifier l'accès à un domaine Linden" name="ChangeLindenAccess"> | ||
1437 | Vous vous apprêtez à modifier la liste d'accès à un domaine appartenant aux Linden (continent, zone réservée aux ados, orientation etc.). | ||
1438 | |||
1439 | Cette action est délicate et ne doit être effectuée que pour appeler le hack autorisant des objets/L$ à être transférés à l'intérieur/extérieur de la grille. | ||
1440 | Cette action modifiera des milliers de régions et sera difficile à digérer pour le serveur. | ||
1441 | <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> | ||
1442 | </notification> | ||
1443 | <notification label="Choisir le domaine" name="EstateAllowedAgentAdd"> | 1428 | <notification label="Choisir le domaine" name="EstateAllowedAgentAdd"> |
1444 | Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? | 1429 | Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? |
1445 | <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> | 1430 | <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> |
diff --git a/linden/indra/newview/skins/default/xui/hu/notifications.xml b/linden/indra/newview/skins/default/xui/hu/notifications.xml index bf41284..6bc188d 100644 --- a/linden/indra/newview/skins/default/xui/hu/notifications.xml +++ b/linden/indra/newview/skins/default/xui/hu/notifications.xml | |||
@@ -1317,19 +1317,6 @@ A csoportból való kilépéshez válaszd a 'Csoportok...' részt a &a | |||
1317 | <notification label="Üzenetküldés mindenki számára a telkeden" name="MessageEstate"> | 1317 | <notification label="Üzenetküldés mindenki számára a telkeden" name="MessageEstate"> |
1318 | Rövid bejelentés írása, amely elküldésre mindenki részére, aki az ingatlanodon tartózkodik. | 1318 | Rövid bejelentés írása, amely elküldésre mindenki részére, aki az ingatlanodon tartózkodik. |
1319 | </notification> | 1319 | </notification> |
1320 | <notification label="Linden telek változtatása" name="ChangeLindenEstate"> | ||
1321 | Linden tulajdonú telek változtatása folyamatban (mainland, teen grid, orientation, stb.). | ||
1322 | |||
1323 | Ez NAGYON VESZÉLYES, mivel kihatással van a felhasználók megszokásaira. A mainland-en ez régiók ezreit befolyásolja, amely a 'spaceserver' működésében akadályokat okoz. | ||
1324 | |||
1325 | Folytatod? | ||
1326 | </notification> | ||
1327 | <notification label="Linden telek belépésének változtatása" name="ChangeLindenAccess"> | ||
1328 | Linden tulajdonú telek változtatása folyamatban (mainland, teen grid, orientation, stb.). | ||
1329 | |||
1330 | This is DANGEROUS and should only be done to invoke the hack allowing objects/L$ to be transfered in/out of a grid. | ||
1331 | A mainland-en ez régiók ezreit befolyásolja, amely a 'spaceserver' működésében akadályokat okoz. | ||
1332 | </notification> | ||
1333 | <notification label="Ingatlan kiválasztása" name="EstateAllowedAgentAdd"> | 1320 | <notification label="Ingatlan kiválasztása" name="EstateAllowedAgentAdd"> |
1334 | Engedélyezettek listájához való hozzáadása csak ennek az ingatlan vagy [ALL_ESTATES] esetén? | 1321 | Engedélyezettek listájához való hozzáadása csak ennek az ingatlan vagy [ALL_ESTATES] esetén? |
1335 | </notification> | 1322 | </notification> |
diff --git a/linden/indra/newview/skins/default/xui/it/notifications.xml b/linden/indra/newview/skins/default/xui/it/notifications.xml index 61aafae..039a6d1 100644 --- a/linden/indra/newview/skins/default/xui/it/notifications.xml +++ b/linden/indra/newview/skins/default/xui/it/notifications.xml | |||
@@ -1452,21 +1452,6 @@ Per abbandonare un gruppo seleziona l'opzione 'Gruppi..' dal menu | |||
1452 | <button name="Cancel" text="Annulla"/> | 1452 | <button name="Cancel" text="Annulla"/> |
1453 | </form> | 1453 | </form> |
1454 | </notification> | 1454 | </notification> |
1455 | <notification label="Cambia la tipologia della proprietà Linden" name="ChangeLindenEstate"> | ||
1456 | Stai per cambiare la tipologia della proprietà Linden (mainland, griglia minorenni, orientamento, ecc.). | ||
1457 | |||
1458 | Questo è ESTREMAMENTE PERICOLOSO perchè può cambiare radicalmente l'esperienza degli utenti. Sulla mainland cambierà migliaia di regioni e produrrà seri problemi ai vari server. | ||
1459 | |||
1460 | Confermi? | ||
1461 | <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> | ||
1462 | </notification> | ||
1463 | <notification label="Cambia la tipologia Linden di accesso alla proprietà" name="ChangeLindenAccess"> | ||
1464 | Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.). | ||
1465 | |||
1466 | Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse. | ||
1467 | Cambierà migliaia di regioni e produrrà seri problemi ai vari server. | ||
1468 | <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> | ||
1469 | </notification> | ||
1470 | <notification label="Seleziona la proprietà" name="EstateAllowedAgentAdd"> | 1455 | <notification label="Seleziona la proprietà" name="EstateAllowedAgentAdd"> |
1471 | Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]? | 1456 | Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]? |
1472 | <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/> | 1457 | <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/> |
diff --git a/linden/indra/newview/skins/default/xui/ja/notifications.xml b/linden/indra/newview/skins/default/xui/ja/notifications.xml index 6da6ccc..fa63cf0 100644 --- a/linden/indra/newview/skins/default/xui/ja/notifications.xml +++ b/linden/indra/newview/skins/default/xui/ja/notifications.xml | |||
@@ -1526,21 +1526,6 @@ F1キーを押してください。 | |||
1526 | <button name="Cancel" text="取り消し"/> | 1526 | <button name="Cancel" text="取り消し"/> |
1527 | </form> | 1527 | </form> |
1528 | </notification> | 1528 | </notification> |
1529 | <notification label="Lindenの不動産を変更" name="ChangeLindenEstate"> | ||
1530 | あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。 | ||
1531 | |||
1532 | これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数の地域が変更され、スペースサーバーに悪影響が生じます。 | ||
1533 | |||
1534 | 操作を続行しますか? | ||
1535 | <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> | ||
1536 | </notification> | ||
1537 | <notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess"> | ||
1538 | あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。 | ||
1539 | |||
1540 | この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。 | ||
1541 | これにより多数の地域が変更され、スペースサーバーに悪影響が生じます。 | ||
1542 | <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> | ||
1543 | </notification> | ||
1544 | <notification label="不動産を選択" name="EstateAllowedAgentAdd"> | 1529 | <notification label="不動産を選択" name="EstateAllowedAgentAdd"> |
1545 | この不動産の許可リストだけに追加しますか? それとも[ALL_ESTATES]のすべての許可リストに追加しますか? | 1530 | この不動産の許可リストだけに追加しますか? それとも[ALL_ESTATES]のすべての許可リストに追加しますか? |
1546 | <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> | 1531 | <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> |
diff --git a/linden/indra/newview/skins/default/xui/ko/notifications.xml b/linden/indra/newview/skins/default/xui/ko/notifications.xml index cb720ed..20c57a1 100644 --- a/linden/indra/newview/skins/default/xui/ko/notifications.xml +++ b/linden/indra/newview/skins/default/xui/ko/notifications.xml | |||
@@ -2941,43 +2941,7 @@ Applications 폴더에 다운로드하시겠습니까? | |||
2941 | </form> | 2941 | </form> |
2942 | </notification> | 2942 | </notification> |
2943 | 2943 | ||
2944 | <notification | ||
2945 | |||
2946 | label="린든 사유지 변경" | ||
2947 | name="ChangeLindenEstate" | ||
2948 | > | ||
2949 | 귀하께서는 린든 소유의 사유지(메인랜드, 틴 그리드, 오리엔테이션 등)를 | ||
2950 | 변경하려고 합니다. | ||
2951 | |||
2952 | 이렇게 하면 기본적으로 사용자가 게임을 즐기는 데 영향을 | ||
2953 | 줄 수 있으므로 매우 위험합니다. 또한 메인랜드에서 수천가지의 지역이 변경되고 | ||
2954 | 공간 서버가 일시적으로 중단될 수도 있습니다. | ||
2955 | |||
2956 | 계속하시겠습니까? | ||
2957 | <usetemplate | ||
2958 | name="okcancelbuttons" | ||
2959 | notext="취소" | ||
2960 | yestext="사유지 변경"/> | ||
2961 | </notification> | ||
2962 | 2944 | ||
2963 | <notification | ||
2964 | |||
2965 | label="린든 사유지 액세스 변경" | ||
2966 | name="ChangeLindenAccess" | ||
2967 | > | ||
2968 | 귀하께서는 린든 소유의 사유지(메인랜드, 틴 그리드, 오리엔테이션 등)에 대한 | ||
2969 | 접근 목록을 변경하려고 합니다. | ||
2970 | |||
2971 | 이는 위험한 작업이며 오브젝트/금액을 그리드에서 송수신할 수 있도록 | ||
2972 | 핵을 불러내는 경우에만 수행할 수 | ||
2973 | 있습니다. | ||
2974 | 이렇게 하면 수천가지의 지역이 변경되고 | ||
2975 | 공간 서버가 일시적으로 중단될 수도 있습니다. | ||
2976 | <usetemplate | ||
2977 | name="okcancelbuttons" | ||
2978 | notext="취소" | ||
2979 | yestext="사유지 변경"/> | ||
2980 | </notification> | ||
2981 | 2945 | ||
2982 | <notification | 2946 | <notification |
2983 | 2947 | ||
diff --git a/linden/indra/newview/skins/default/xui/pl/notifications.xml b/linden/indra/newview/skins/default/xui/pl/notifications.xml index 38a4b56..4c8ee5c 100644 --- a/linden/indra/newview/skins/default/xui/pl/notifications.xml +++ b/linden/indra/newview/skins/default/xui/pl/notifications.xml | |||
@@ -1434,23 +1434,6 @@ Musisz opuścić przynajmniej jedną grupę żeby przyjąć członkostwo w tej g | |||
1434 | <button name="Cancel" text="Anuluj"/> | 1434 | <button name="Cancel" text="Anuluj"/> |
1435 | </form> | 1435 | </form> |
1436 | </notification> | 1436 | </notification> |
1437 | <notification label="Zmiana Majątku Lindenów" name="ChangeLindenEstate"> | ||
1438 | Dokonujesz zmiany w Regionie Głównym należącym do Lindenów (Regiony Główne, Teen Grid, Orientacja). | ||
1439 | |||
1440 | Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie. Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów. | ||
1441 | |||
1442 | Kontynuować? | ||
1443 | <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> | ||
1444 | </notification> | ||
1445 | <notification label="Zmiana Dostępu do Majątku Lindenów" name="ChangeLindenAccess"> | ||
1446 | Dokonujesz zmiany w liście dostępu Regionu Głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja). | ||
1447 | |||
1448 | Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/z sieci. | ||
1449 | Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów. | ||
1450 | |||
1451 | Kontynuować? | ||
1452 | <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/> | ||
1453 | </notification> | ||
1454 | <notification label="Wybierz Majątek" name="EstateAllowedAgentAdd"> | 1437 | <notification label="Wybierz Majątek" name="EstateAllowedAgentAdd"> |
1455 | Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]? | 1438 | Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]? |
1456 | <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/> | 1439 | <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majątki" yestext="Ten majątek"/> |
diff --git a/linden/indra/newview/skins/default/xui/pt/notifications.xml b/linden/indra/newview/skins/default/xui/pt/notifications.xml index 71903c1..a026c59 100644 --- a/linden/indra/newview/skins/default/xui/pt/notifications.xml +++ b/linden/indra/newview/skins/default/xui/pt/notifications.xml | |||
@@ -1434,21 +1434,6 @@ Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas i | |||
1434 | <button name="Cancel" text="Cancelar"/> | 1434 | <button name="Cancel" text="Cancelar"/> |
1435 | </form> | 1435 | </form> |
1436 | </notification> | 1436 | </notification> |
1437 | <notification label="Mudar propriedade Linden" name="ChangeLindenEstate"> | ||
1438 | Você está prestes a mudar uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.) | ||
1439 | |||
1440 | Isto é EXTREMAMENTE PERIGOSO porque pode fundamentalmente afetar a experiência do usuário. No continente, vai mudar milhares de regiões e fazer o spaceserver soluçar. | ||
1441 | |||
1442 | Proceder? | ||
1443 | <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Mudar Propriedade"/> | ||
1444 | </notification> | ||
1445 | <notification label="Mudar o acesso à propriedade Linden" name="ChangeLindenAccess"> | ||
1446 | Você está prestes a mudar a lista de acessos de uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.). | ||
1447 | |||
1448 | Isto é PERIGOSO e deveria ser feito apenas para utilizar uma brecha que permita que objetos/L$ sejam transferidos para dentro/fora da grade. | ||
1449 | Isto mudará milhares de regiões e fará o spaceserver soluçar. | ||
1450 | <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> | ||
1451 | </notification> | ||
1452 | <notification label="Selecione a propriedade" name="EstateAllowedAgentAdd"> | 1437 | <notification label="Selecione a propriedade" name="EstateAllowedAgentAdd"> |
1453 | Adicionar à lista de permitidos somente para esta propriedade ou para [ALL_ESTATES]? | 1438 | Adicionar à lista de permitidos somente para esta propriedade ou para [ALL_ESTATES]? |
1454 | <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> | 1439 | <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> |
diff --git a/linden/indra/newview/skins/default/xui/ru/notifications.xml b/linden/indra/newview/skins/default/xui/ru/notifications.xml index 0d36371..e0f7740 100644 --- a/linden/indra/newview/skins/default/xui/ru/notifications.xml +++ b/linden/indra/newview/skins/default/xui/ru/notifications.xml | |||
@@ -1452,21 +1452,6 @@ www.secondlife.com/support | |||
1452 | <button name="Cancel" text="Отмена"/> | 1452 | <button name="Cancel" text="Отмена"/> |
1453 | </form> | 1453 | </form> |
1454 | </notification> | 1454 | </notification> |
1455 | <notification label="Изменить участок Линденов" name="ChangeLindenEstate"> | ||
1456 | Вы хотите сменить поместья, принадлежащие Линденам (материк, детский Grid, остров ориентации и т.д.). | ||
1457 | |||
1458 | Это ЧРЕЗВЫЧАЙНО ОПАСНО, потому что это может существенно повлиять на положение вещей. На материке это может изменить тысячи регионов, и испортить работу серверов. | ||
1459 | |||
1460 | Продолжить? | ||
1461 | <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> | ||
1462 | </notification> | ||
1463 | <notification label="Изменить доступ к участку Линденов" name="ChangeLindenAccess"> | ||
1464 | Вы хотите сменить поместья, принадлежащие Линденам (материк, детский Grid, остров ориентации и т.д.). | ||
1465 | |||
1466 | Это ЧРЕЗВЫЧАЙНО ОПАСНО и может использоватся только для того, чтобы вызвать методы, позволяющие перемещать объекты/L$ в/из Grid. | ||
1467 | Это может изменить тысячи регионов, и испортить работу серверов. | ||
1468 | <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> | ||
1469 | </notification> | ||
1470 | <notification label="Выбрать поместье" name="EstateAllowedAgentAdd"> | 1455 | <notification label="Выбрать поместье" name="EstateAllowedAgentAdd"> |
1471 | Добавить в список разрешенных этого поместья или [ALL_ESTATES]? | 1456 | Добавить в список разрешенных этого поместья или [ALL_ESTATES]? |
1472 | <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Все поместья" yestext="Это поместье"/> | 1457 | <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Все поместья" yestext="Это поместье"/> |
diff --git a/linden/indra/newview/skins/default/xui/uk/notifications.xml b/linden/indra/newview/skins/default/xui/uk/notifications.xml index c7457b3..d207d02 100644 --- a/linden/indra/newview/skins/default/xui/uk/notifications.xml +++ b/linden/indra/newview/skins/default/xui/uk/notifications.xml | |||
@@ -1436,21 +1436,6 @@ www.secondlife.com/support | |||
1436 | <button name="Cancel" text="Відміна"/> | 1436 | <button name="Cancel" text="Відміна"/> |
1437 | </form> | 1437 | </form> |
1438 | </notification> | 1438 | </notification> |
1439 | <notification label="Змінити ділянку Лінденів" name="ChangeLindenEstate"> | ||
1440 | Ви хочете змінити маєтки, що належать Лінденам (материк, дитячий Grid, остров орієнтації і т.д.). | ||
1441 | |||
1442 | Це НАДЗВИЧАЙНО НЕБЕЗПЕЧНО, тому що це може суттєво вплинути на стан речей. На материку це може змінити тисячі регіонів, і зіпсувати роботу серверів. | ||
1443 | |||
1444 | Продовжити? | ||
1445 | <usetemplate name="okcancelbuttons" notext="Відміна" yestext="OK"/> | ||
1446 | </notification> | ||
1447 | <notification label="Змінити доступ до ділянки Лінденів" name="ChangeLindenAccess"> | ||
1448 | Ви хочете змінити маєтки, що належать Лінденам (материк, дитячий Grid, остров орієнтації і т.д.). | ||
1449 | |||
1450 | Це НАДЗВИЧАЙНО НЕБЕЗПЕЧНО і може використовуватися тільки для того, щоб викликати методи, що дозволять переміщати об'єкти/L$ в/з Grid. | ||
1451 | Це може змінити тисячі регіонів, і зіпсувати роботу серверів. | ||
1452 | <usetemplate name="okcancelbuttons" notext="Відміна" yestext="OK"/> | ||
1453 | </notification> | ||
1454 | <notification label="Обрати маєток" name="EstateAllowedAgentAdd"> | 1439 | <notification label="Обрати маєток" name="EstateAllowedAgentAdd"> |
1455 | Додати в список дозволених цього маєтку або [ALL_ESTATES]? | 1440 | Додати в список дозволених цього маєтку або [ALL_ESTATES]? |
1456 | <usetemplate canceltext="Відміна" name="yesnocancelbuttons" notext="Всі маєтки" yestext="Цей маєток"/> | 1441 | <usetemplate canceltext="Відміна" name="yesnocancelbuttons" notext="Всі маєтки" yestext="Цей маєток"/> |
diff --git a/linden/indra/newview/skins/default/xui/zh/notifications.xml b/linden/indra/newview/skins/default/xui/zh/notifications.xml index acbb18b..415e5e7 100644 --- a/linden/indra/newview/skins/default/xui/zh/notifications.xml +++ b/linden/indra/newview/skins/default/xui/zh/notifications.xml | |||
@@ -1538,29 +1538,6 @@ www.secondlife.com/support | |||
1538 | <button name="OK" text="确定"/> | 1538 | <button name="OK" text="确定"/> |
1539 | </form> | 1539 | </form> |
1540 | </notification> | 1540 | </notification> |
1541 | <notification label="更改林登地产" name="ChangeLindenEstate"> | ||
1542 | 你将要更改林登所有的地产(大陆、 | ||
1543 | 少年网格、方位岛,等等)。 | ||
1544 | |||
1545 | 这个动作极度危险,因为它可能会在基础的层次上 | ||
1546 | 影响到用户体验。在大陆上, 它将改变 | ||
1547 | 上千的区域,并会使空间服务器噎着。 | ||
1548 | |||
1549 | 是否继续? | ||
1550 | <usetemplate name="okcancelbuttons" notext="取消" yestext="更改不动产"/> | ||
1551 | </notification> | ||
1552 | <notification label="更改林登地产准入列表" name="ChangeLindenAccess"> | ||
1553 | 你将要更改林登所有的地产的准入列表(大陆、 | ||
1554 | 少年网格、方位岛,等等)。 | ||
1555 | |||
1556 | 该操作非常危险, 应该仅在利用把物体/金钱 | ||
1557 | 转移进或出某个网格的对付活儿 (hack) 时候 | ||
1558 | 才应该被执行。 它将改变上千的区域,并会 | ||
1559 | 使空间服务器噎着。 | ||
1560 | |||
1561 | 是否继续? | ||
1562 | <usetemplate name="okcancelbuttons" notext="取消" yestext="更改不动产"/> | ||
1563 | </notification> | ||
1564 | <notification label="选择地产" name="EstateAllowedAgentAdd"> | 1541 | <notification label="选择地产" name="EstateAllowedAgentAdd"> |
1565 | 仅列入此地产还是[ALL_ESTATES]的允许名单? | 1542 | 仅列入此地产还是[ALL_ESTATES]的允许名单? |
1566 | <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="所有地产" yestext="该地产"/> | 1543 | <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="所有地产" yestext="该地产"/> |