diff options
Diffstat (limited to 'linden/indra/newview')
79 files changed, 2162 insertions, 409 deletions
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt index e6c1767..dedced0 100644 --- a/linden/indra/newview/CMakeLists.txt +++ b/linden/indra/newview/CMakeLists.txt | |||
@@ -88,6 +88,7 @@ set(viewer_SOURCE_FILES | |||
88 | impprefsfonts.cpp | 88 | impprefsfonts.cpp |
89 | jcfloater_animation_list.cpp | 89 | jcfloater_animation_list.cpp |
90 | jcfloaterareasearch.cpp | 90 | jcfloaterareasearch.cpp |
91 | kokuastreamingaudio.cpp | ||
91 | kowopenregionsettings.cpp | 92 | kowopenregionsettings.cpp |
92 | lightshare.cpp | 93 | lightshare.cpp |
93 | llagent.cpp | 94 | llagent.cpp |
@@ -172,6 +173,7 @@ set(viewer_SOURCE_FILES | |||
172 | llfloatercustomize.cpp | 173 | llfloatercustomize.cpp |
173 | llfloaterdaycycle.cpp | 174 | llfloaterdaycycle.cpp |
174 | llfloaterdirectory.cpp | 175 | llfloaterdirectory.cpp |
176 | llfloaterdisplayname.cpp | ||
175 | llfloatereditui.cpp | 177 | llfloatereditui.cpp |
176 | llfloaterenvsettings.cpp | 178 | llfloaterenvsettings.cpp |
177 | llfloaterevent.cpp | 179 | llfloaterevent.cpp |
@@ -409,6 +411,7 @@ set(viewer_SOURCE_FILES | |||
409 | llviewercamera.cpp | 411 | llviewercamera.cpp |
410 | llviewercontrol.cpp | 412 | llviewercontrol.cpp |
411 | llviewerdisplay.cpp | 413 | llviewerdisplay.cpp |
414 | llviewerdisplayname.cpp | ||
412 | llviewergenericmessage.cpp | 415 | llviewergenericmessage.cpp |
413 | llviewergesture.cpp | 416 | llviewergesture.cpp |
414 | llviewerimage.cpp | 417 | llviewerimage.cpp |
@@ -541,6 +544,7 @@ set(viewer_HEADER_FILES | |||
541 | impprefsfonts.h | 544 | impprefsfonts.h |
542 | jcfloater_animation_list.h | 545 | jcfloater_animation_list.h |
543 | jcfloaterareasearch.h | 546 | jcfloaterareasearch.h |
547 | kokuastreamingaudio.h | ||
544 | lightshare.h | 548 | lightshare.h |
545 | lggautocorrectfloater.h | 549 | lggautocorrectfloater.h |
546 | lggautocorrect.h | 550 | lggautocorrect.h |
@@ -630,6 +634,7 @@ set(viewer_HEADER_FILES | |||
630 | llfloatercustomize.h | 634 | llfloatercustomize.h |
631 | llfloaterdaycycle.h | 635 | llfloaterdaycycle.h |
632 | llfloaterdirectory.h | 636 | llfloaterdirectory.h |
637 | llfloaterdisplayname.h | ||
633 | llfloatereditui.h | 638 | llfloatereditui.h |
634 | llfloaterenvsettings.h | 639 | llfloaterenvsettings.h |
635 | llfloaterevent.h | 640 | llfloaterevent.h |
@@ -871,6 +876,7 @@ set(viewer_HEADER_FILES | |||
871 | llviewercamera.h | 876 | llviewercamera.h |
872 | llviewercontrol.h | 877 | llviewercontrol.h |
873 | llviewerdisplay.h | 878 | llviewerdisplay.h |
879 | llviewerdisplayname.h | ||
874 | llviewergenericmessage.h | 880 | llviewergenericmessage.h |
875 | llviewergesture.h | 881 | llviewergesture.h |
876 | llviewerimage.h | 882 | llviewerimage.h |
@@ -1367,7 +1373,7 @@ if (WINDOWS) | |||
1367 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py | 1373 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py |
1368 | ) | 1374 | ) |
1369 | 1375 | ||
1370 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit) # Removed media_plugin_gstreamer010 | 1376 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010) |
1371 | 1377 | ||
1372 | if (PACKAGE) | 1378 | if (PACKAGE) |
1373 | add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) | 1379 | add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) |
@@ -1583,17 +1589,17 @@ if (WINDOWS) | |||
1583 | COMMENT "Copying WebKit Plugin to the runtime folder." | 1589 | COMMENT "Copying WebKit Plugin to the runtime folder." |
1584 | ) | 1590 | ) |
1585 | 1591 | ||
1586 | #get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) | 1592 | get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) |
1587 | # add_custom_command( | 1593 | add_custom_command( |
1588 | # TARGET ${VIEWER_BINARY_NAME} POST_BUILD | 1594 | TARGET ${VIEWER_BINARY_NAME} POST_BUILD |
1589 | # COMMAND ${CMAKE_COMMAND} | 1595 | COMMAND ${CMAKE_COMMAND} |
1590 | # ARGS | 1596 | ARGS |
1591 | # -E | 1597 | -E |
1592 | # copy_if_different | 1598 | copy_if_different |
1593 | # ${BUILT_GSTREAMER_PLUGIN} | 1599 | ${BUILT_GSTREAMER_PLUGIN} |
1594 | # ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1600 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin |
1595 | # COMMENT "Copying Gstreamer Plugin to the runtime folder." | 1601 | COMMENT "Copying Gstreamer Plugin to the runtime folder." |
1596 | # ) | 1602 | ) |
1597 | 1603 | ||
1598 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) | 1604 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) |
1599 | add_custom_command( | 1605 | 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..cdc837d 100644 --- a/linden/indra/newview/app_settings/logcontrol.xml +++ b/linden/indra/newview/app_settings/logcontrol.xml | |||
@@ -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 4c822bf..2d9d810 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 8aea221..6b98c8e 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,38 @@ 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 | |||
1646 | // Remove the last ".old" log file. | ||
1647 | std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | ||
1648 | "Imprudence.old"); | ||
1649 | LLFile::remove(old_log_file); | ||
1650 | 1649 | ||
1651 | // Rename current log file to ".old" | 1650 | std::string log_name = "Imprudence.log"; |
1652 | std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | ||
1653 | "Imprudence.log"); | ||
1654 | LLFile::rename(log_file, old_log_file); | ||
1655 | 1651 | ||
1656 | // Set the log file to Imprudence.log | 1652 | const int MAX_ROTATION = 5; |
1653 | for(int i = MAX_ROTATION; 0 < i; i--) | ||
1654 | { | ||
1655 | std::ostringstream current; | ||
1656 | current << "."; | ||
1657 | current << i; | ||
1658 | |||
1659 | std::ostringstream previous; | ||
1660 | if( 1 < i ) | ||
1661 | { | ||
1662 | previous << "."; | ||
1663 | previous << i-1; | ||
1664 | } | ||
1665 | |||
1666 | std::string current_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | ||
1667 | log_name + current.str()); | ||
1668 | std::string previous_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, | ||
1669 | log_name + previous.str()); | ||
1657 | 1670 | ||
1671 | if (MAX_ROTATION == i) | ||
1672 | { | ||
1673 | LLFile::remove(current_log_file); | ||
1674 | } | ||
1675 | |||
1676 | LLFile::rename(previous_log_file, current_log_file); | ||
1677 | } | ||
1678 | |||
1679 | // Set the log file to Imprudence.log | ||
1680 | std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, log_name); | ||
1658 | LLError::logToFile(log_file); | 1681 | LLError::logToFile(log_file); |
1659 | 1682 | ||
1660 | // *FIX:Mani no error handling here! | 1683 | // *FIX:Mani no error handling here! |
@@ -1861,6 +1884,7 @@ bool LLAppViewer::initConfiguration() | |||
1861 | LLFirstUse::addConfigVariable("FirstVoice"); | 1884 | LLFirstUse::addConfigVariable("FirstVoice"); |
1862 | LLFirstUse::addConfigVariable("FirstMedia"); | 1885 | LLFirstUse::addConfigVariable("FirstMedia"); |
1863 | LLFirstUse::addConfigVariable("FirstLoginScreen"); | 1886 | LLFirstUse::addConfigVariable("FirstLoginScreen"); |
1887 | LLFirstUse::addConfigVariable("FirstPrivacy"); | ||
1864 | 1888 | ||
1865 | // [RLVa:KB] - Checked: RLVa-1.0.3a (2009-09-10) | Added: RLVa-1.0.3a | 1889 | // [RLVa:KB] - Checked: RLVa-1.0.3a (2009-09-10) | Added: RLVa-1.0.3a |
1866 | //LLFirstUse::addConfigVariable(RLV_SETTING_FIRSTUSE_DETACH); | 1890 | //LLFirstUse::addConfigVariable(RLV_SETTING_FIRSTUSE_DETACH); |
@@ -3296,6 +3320,14 @@ void LLAppViewer::saveFinalSnapshot() | |||
3296 | 3320 | ||
3297 | void LLAppViewer::loadNameCache() | 3321 | void LLAppViewer::loadNameCache() |
3298 | { | 3322 | { |
3323 | // display names cache | ||
3324 | std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "avatar_name_cache.xml"); | ||
3325 | llifstream name_cache_stream(filename); | ||
3326 | if (name_cache_stream.is_open()) | ||
3327 | { | ||
3328 | LLAvatarNameCache::importFile(name_cache_stream); | ||
3329 | } | ||
3330 | |||
3299 | if (!gCacheName) return; | 3331 | if (!gCacheName) return; |
3300 | 3332 | ||
3301 | std::string name_cache; | 3333 | std::string name_cache; |
@@ -3318,6 +3350,14 @@ void LLAppViewer::loadNameCache() | |||
3318 | 3350 | ||
3319 | void LLAppViewer::saveNameCache() | 3351 | void LLAppViewer::saveNameCache() |
3320 | { | 3352 | { |
3353 | // display names cache | ||
3354 | std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "avatar_name_cache.xml"); | ||
3355 | llofstream name_cache_stream(filename); | ||
3356 | if (name_cache_stream.is_open()) | ||
3357 | { | ||
3358 | LLAvatarNameCache::exportFile(name_cache_stream); | ||
3359 | } | ||
3360 | |||
3321 | if (!gCacheName) return; | 3361 | if (!gCacheName) return; |
3322 | 3362 | ||
3323 | std::string name_cache; | 3363 | std::string name_cache; |
@@ -3469,18 +3509,22 @@ void LLAppViewer::idle() | |||
3469 | // Initialize the viewer_stats_timer with an already elapsed time | 3509 | // Initialize the viewer_stats_timer with an already elapsed time |
3470 | // of SEND_STATS_PERIOD so that the initial stats report will | 3510 | // of SEND_STATS_PERIOD so that the initial stats report will |
3471 | // be sent immediately. | 3511 | // be sent immediately. |
3472 | static LLFrameStatsTimer viewer_stats_timer(SEND_STATS_PERIOD); | 3512 | 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 | { | 3513 | { |
3480 | llinfos << "Transmitting sessions stats" << llendl; | 3514 | static LLFrameStatsTimer viewer_stats_timer(SEND_STATS_PERIOD); |
3481 | send_stats(); | 3515 | reset_statistics(); |
3482 | viewer_stats_timer.reset(); | 3516 | |
3483 | } */ | 3517 | // Update session stats every large chunk of time |
3518 | // *FIX: (???) SAMANTHA | ||
3519 | |||
3520 | /* or don't! part of a larger effort to waste less CPU cycles. -Patrick Sapinski (Sunday, November 29, 2009)*/ | ||
3521 | if (viewer_stats_timer.getElapsedTimeF32() >= SEND_STATS_PERIOD ) | ||
3522 | { | ||
3523 | llinfos << "Transmitting sessions stats" << llendl; | ||
3524 | send_stats(); | ||
3525 | viewer_stats_timer.reset(); | ||
3526 | } | ||
3527 | } | ||
3484 | 3528 | ||
3485 | // Print the object debugging stats | 3529 | // Print the object debugging stats |
3486 | static LLFrameTimer object_debug_timer; | 3530 | static LLFrameTimer object_debug_timer; |
@@ -3518,6 +3562,8 @@ void LLAppViewer::idle() | |||
3518 | // floating throughout the various object lists. | 3562 | // floating throughout the various object lists. |
3519 | // | 3563 | // |
3520 | 3564 | ||
3565 | idleNameCache(); | ||
3566 | |||
3521 | gFrameStats.start(LLFrameStats::IDLE_NETWORK); | 3567 | gFrameStats.start(LLFrameStats::IDLE_NETWORK); |
3522 | stop_glerror(); | 3568 | stop_glerror(); |
3523 | idleNetwork(); | 3569 | idleNetwork(); |
@@ -3732,6 +3778,10 @@ void LLAppViewer::idle() | |||
3732 | const F32 max_audio_decode_time = 0.002f; // 2 ms decode time | 3778 | const F32 max_audio_decode_time = 0.002f; // 2 ms decode time |
3733 | gAudiop->idle(max_audio_decode_time); | 3779 | gAudiop->idle(max_audio_decode_time); |
3734 | } | 3780 | } |
3781 | |||
3782 | // update streaming audio | ||
3783 | if (gAudioStream) | ||
3784 | gAudioStream->updateInternetStream(); | ||
3735 | } | 3785 | } |
3736 | 3786 | ||
3737 | 3787 | ||
@@ -3895,6 +3945,60 @@ void LLAppViewer::sendLogoutRequest() | |||
3895 | } | 3945 | } |
3896 | } | 3946 | } |
3897 | 3947 | ||
3948 | void LLAppViewer::idleNameCache() | ||
3949 | { | ||
3950 | // Neither old nor new name cache can function before agent has a region | ||
3951 | LLViewerRegion* region = gAgent.getRegion(); | ||
3952 | if (!region) return; | ||
3953 | |||
3954 | // deal with any queued name requests and replies. | ||
3955 | gCacheName->processPending(); | ||
3956 | |||
3957 | // Can't run the new cache until we have the list of capabilities | ||
3958 | // for the agent region, and can therefore decide whether to use | ||
3959 | // display names or fall back to the old name system. | ||
3960 | if (!region->capabilitiesReceived()) return; | ||
3961 | |||
3962 | // Agent may have moved to a different region, so need to update cap URL | ||
3963 | // for name lookups. Can't do this in the cap grant code, as caps are | ||
3964 | // granted to neighbor regions before the main agent gets there. Can't | ||
3965 | // do it in the move-into-region code because cap not guaranteed to be | ||
3966 | // granted yet, for example on teleport. | ||
3967 | bool had_capability = LLAvatarNameCache::hasNameLookupURL(); | ||
3968 | std::string name_lookup_url; | ||
3969 | name_lookup_url.reserve(128); // avoid a memory allocation below | ||
3970 | name_lookup_url = region->getCapability("GetDisplayNames"); | ||
3971 | bool have_capability = !name_lookup_url.empty(); | ||
3972 | if (have_capability) | ||
3973 | { | ||
3974 | // we have support for display names, use it | ||
3975 | U32 url_size = name_lookup_url.size(); | ||
3976 | // capabilities require URLs with slashes before query params: | ||
3977 | // https://<host>:<port>/cap/<uuid>/?ids=<blah> | ||
3978 | // but the caps are granted like: | ||
3979 | // https://<host>:<port>/cap/<uuid> | ||
3980 | if (url_size > 0 && name_lookup_url[url_size-1] != '/') | ||
3981 | { | ||
3982 | name_lookup_url += '/'; | ||
3983 | } | ||
3984 | LLAvatarNameCache::setNameLookupURL(name_lookup_url); | ||
3985 | } | ||
3986 | else | ||
3987 | { | ||
3988 | // Display names not available on this region | ||
3989 | LLAvatarNameCache::setNameLookupURL( std::string() ); | ||
3990 | } | ||
3991 | |||
3992 | // Error recovery - did we change state? | ||
3993 | if (had_capability != have_capability) | ||
3994 | { | ||
3995 | // name tags are persistant on screen, so make sure they refresh | ||
3996 | LLVOAvatar::invalidateNameTags(); | ||
3997 | } | ||
3998 | |||
3999 | LLAvatarNameCache::idle(); | ||
4000 | } | ||
4001 | |||
3898 | // | 4002 | // |
3899 | // Handle messages, and all message related stuff | 4003 | // Handle messages, and all message related stuff |
3900 | // | 4004 | // |
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h index 7b3230a..42c49de 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 0d5b884..1f042bd 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 = "Imprudence"; | 81 | const std::string LLAppViewerWin32::sWindowClass = "Imprudence"; |
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 c33deae..84ba81e 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/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 10d27cd..4f248e4 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 41727f2..a3e917f 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 b744961..4bfcf52 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 6904bb2..27a848f 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 | } |
@@ -3620,6 +3611,35 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3620 | 3611 | ||
3621 | if (mNameText.notNull() && firstname && lastname) | 3612 | if (mNameText.notNull() && firstname && lastname) |
3622 | { | 3613 | { |
3614 | std::string complete_name = firstname->getString(); | ||
3615 | if (sRenderGroupTitles) | ||
3616 | { | ||
3617 | complete_name += " "; | ||
3618 | } | ||
3619 | else | ||
3620 | { | ||
3621 | // If all group titles are turned off, stack first name | ||
3622 | // on a line above last name | ||
3623 | complete_name += "\n"; | ||
3624 | } | ||
3625 | complete_name += lastname->getString(); | ||
3626 | |||
3627 | if (LLAvatarNameCache::useDisplayNames()) | ||
3628 | { | ||
3629 | LLAvatarName avatar_name; | ||
3630 | if (LLAvatarNameCache::get(getID(), &avatar_name)) | ||
3631 | { | ||
3632 | if (LLAvatarNameCache::useDisplayNames() == 1) | ||
3633 | { | ||
3634 | complete_name = avatar_name.mDisplayName; | ||
3635 | } | ||
3636 | else | ||
3637 | { | ||
3638 | complete_name = avatar_name.getNames(true); | ||
3639 | } | ||
3640 | } | ||
3641 | } | ||
3642 | |||
3623 | BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY) != mSignaledAnimations.end(); | 3643 | BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY) != mSignaledAnimations.end(); |
3624 | BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end(); | 3644 | BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end(); |
3625 | BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end(); | 3645 | BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end(); |
@@ -3634,7 +3654,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3634 | } | 3654 | } |
3635 | 3655 | ||
3636 | if (mNameString.empty() || | 3656 | if (mNameString.empty() || |
3637 | new_name || | 3657 | new_name || complete_name != mCompleteName || |
3638 | (!title && !mTitle.empty()) || | 3658 | (!title && !mTitle.empty()) || |
3639 | (title && mTitle != title->getString()) || | 3659 | (title && mTitle != title->getString()) || |
3640 | (is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute) | 3660 | (is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute) |
@@ -3650,20 +3670,19 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3650 | line += title->getString(); | 3670 | line += title->getString(); |
3651 | //LLStringFn::replace_ascii_controlchars(line,LL_UNKNOWN_CHAR); IMP-136 -- McCabe | 3671 | //LLStringFn::replace_ascii_controlchars(line,LL_UNKNOWN_CHAR); IMP-136 -- McCabe |
3652 | line += "\n"; | 3672 | line += "\n"; |
3653 | line += firstname->getString(); | 3673 | line += complete_name; |
3654 | } | 3674 | } |
3655 | else | 3675 | else |
3656 | { | 3676 | { |
3657 | line += firstname->getString(); | 3677 | line += complete_name; |
3658 | } | 3678 | } |
3659 | 3679 | ||
3660 | line += " "; | 3680 | |
3661 | line += lastname->getString(); | ||
3662 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.0b | 3681 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Added: RLVa-0.2.0b |
3663 | } | 3682 | } |
3664 | else | 3683 | else |
3665 | { | 3684 | { |
3666 | line = RlvStrings::getAnonym(line.assign(firstname->getString()).append(" ").append(lastname->getString())); | 3685 | line = RlvStrings::getAnonym(complete_name); |
3667 | } | 3686 | } |
3668 | // [/RLVa:KB] | 3687 | // [/RLVa:KB] |
3669 | 3688 | ||
@@ -3673,7 +3692,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3673 | bool show_client = client.length() != 0 && (*sShowClientNameTag); | 3692 | bool show_client = client.length() != 0 && (*sShowClientNameTag); |
3674 | if (is_away || is_muted || is_busy || show_client) | 3693 | if (is_away || is_muted || is_busy || show_client) |
3675 | { | 3694 | { |
3676 | line += " ("; | 3695 | line += "\n("; |
3677 | if (is_away) | 3696 | if (is_away) |
3678 | { | 3697 | { |
3679 | line += "Away"; | 3698 | line += "Away"; |
@@ -3718,6 +3737,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3718 | mNameMute = is_muted; | 3737 | mNameMute = is_muted; |
3719 | mNameAppearance = is_appearance; | 3738 | mNameAppearance = is_appearance; |
3720 | mTitle = title ? title->getString() : ""; | 3739 | mTitle = title ? title->getString() : ""; |
3740 | mCompleteName = complete_name; | ||
3721 | //LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR); IMP-136 -- McCabe | 3741 | //LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR); IMP-136 -- McCabe |
3722 | mNameString = utf8str_to_wstring(line); | 3742 | mNameString = utf8str_to_wstring(line); |
3723 | new_name = TRUE; | 3743 | new_name = TRUE; |
@@ -3834,6 +3854,41 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3834 | } | 3854 | } |
3835 | } | 3855 | } |
3836 | 3856 | ||
3857 | void LLVOAvatar::clearNameTag() | ||
3858 | { | ||
3859 | mNameString.clear(); | ||
3860 | if (mNameText) | ||
3861 | { | ||
3862 | mNameText->setLabel(""); | ||
3863 | mNameText->setString(mNameString); | ||
3864 | } | ||
3865 | } | ||
3866 | |||
3867 | //static | ||
3868 | void LLVOAvatar::invalidateNameTag(const LLUUID& agent_id) | ||
3869 | { | ||
3870 | LLViewerObject* obj = gObjectList.findObject(agent_id); | ||
3871 | if (!obj) return; | ||
3872 | |||
3873 | LLVOAvatar* avatar = dynamic_cast<LLVOAvatar*>(obj); | ||
3874 | if (!avatar) return; | ||
3875 | |||
3876 | avatar->clearNameTag(); | ||
3877 | } | ||
3878 | |||
3879 | //static | ||
3880 | void LLVOAvatar::invalidateNameTags() | ||
3881 | { | ||
3882 | std::vector<LLCharacter*>::iterator it; | ||
3883 | for (it = LLCharacter::sInstances.begin(); it != LLCharacter::sInstances.end(); ++it) | ||
3884 | { | ||
3885 | LLVOAvatar* avatar = dynamic_cast<LLVOAvatar*>(*it); | ||
3886 | if (!avatar) continue; | ||
3887 | if (avatar->isDead()) continue; | ||
3888 | |||
3889 | avatar->clearNameTag(); | ||
3890 | } | ||
3891 | } | ||
3837 | 3892 | ||
3838 | void LLVOAvatar::idleUpdateTractorBeam() | 3893 | void LLVOAvatar::idleUpdateTractorBeam() |
3839 | { | 3894 | { |
@@ -4820,6 +4875,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) | |||
4820 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked | 4875 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked |
4821 | && !LLDrawPoolAvatar::sSkipTransparent; | 4876 | && !LLDrawPoolAvatar::sSkipTransparent; |
4822 | 4877 | ||
4878 | |||
4823 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); | 4879 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); |
4824 | 4880 | ||
4825 | if (should_alpha_mask) | 4881 | if (should_alpha_mask) |
@@ -4935,7 +4991,6 @@ U32 LLVOAvatar::renderRigid() | |||
4935 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked | 4991 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked |
4936 | && !LLDrawPoolAvatar::sSkipTransparent; | 4992 | && !LLDrawPoolAvatar::sSkipTransparent; |
4937 | 4993 | ||
4938 | |||
4939 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); | 4994 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); |
4940 | 4995 | ||
4941 | if (should_alpha_mask) | 4996 | if (should_alpha_mask) |
@@ -5918,6 +5973,7 @@ BOOL LLVOAvatar::loadAvatar() | |||
5918 | if (sAvatarXmlInfo->mLayerInfoList.empty()) | 5973 | if (sAvatarXmlInfo->mLayerInfoList.empty()) |
5919 | { | 5974 | { |
5920 | llwarns << "avatar file: missing <layer_set> node" << llendl; | 5975 | llwarns << "avatar file: missing <layer_set> node" << llendl; |
5976 | return FALSE; | ||
5921 | } | 5977 | } |
5922 | else | 5978 | else |
5923 | { | 5979 | { |
@@ -5958,23 +6014,22 @@ BOOL LLVOAvatar::loadAvatar() | |||
5958 | } | 6014 | } |
5959 | 6015 | ||
5960 | // avatar_lad.xml : <driver_parameters> | 6016 | // avatar_lad.xml : <driver_parameters> |
6017 | LLVOAvatarXmlInfo::driver_info_list_t::iterator iter; | ||
6018 | for (iter = sAvatarXmlInfo->mDriverInfoList.begin(); | ||
6019 | iter != sAvatarXmlInfo->mDriverInfoList.end(); iter++) | ||
5961 | { | 6020 | { |
5962 | LLVOAvatarXmlInfo::driver_info_list_t::iterator iter; | 6021 | LLDriverParamInfo *info = *iter; |
5963 | for (iter = sAvatarXmlInfo->mDriverInfoList.begin(); | 6022 | LLDriverParam* driver_param = new LLDriverParam( this ); |
5964 | iter != sAvatarXmlInfo->mDriverInfoList.end(); iter++) | 6023 | if (driver_param->setInfo(info)) |
5965 | { | 6024 | { |
5966 | LLDriverParamInfo *info = *iter; | 6025 | addVisualParam( driver_param ); |
5967 | LLDriverParam* driver_param = new LLDriverParam( this ); | 6026 | } |
5968 | if (driver_param->setInfo(info)) | 6027 | else |
5969 | { | 6028 | { |
5970 | addVisualParam( driver_param ); | 6029 | delete driver_param; |
5971 | } | 6030 | llwarns << "avatar file: driver_param->parseData() failed" << llendl; |
5972 | else | 6031 | return FALSE; |
5973 | { | 6032 | |
5974 | delete driver_param; | ||
5975 | llwarns << "avatar file: driver_param->parseData() failed" << llendl; | ||
5976 | return FALSE; | ||
5977 | } | ||
5978 | } | 6033 | } |
5979 | } | 6034 | } |
5980 | 6035 | ||
@@ -8147,6 +8202,14 @@ BOOL LLVOAvatar::teToColorParams( ETextureIndex te, const char* param_name[3] ) | |||
8147 | param_name[2] = "skirt_blue"; | 8202 | param_name[2] = "skirt_blue"; |
8148 | break; | 8203 | break; |
8149 | 8204 | ||
8205 | case TEX_HEAD_TATTOO: | ||
8206 | case TEX_LOWER_TATTOO: | ||
8207 | case TEX_UPPER_TATTOO: | ||
8208 | param_name[0] = "tattoo_red"; | ||
8209 | param_name[1] = "tattoo_green"; | ||
8210 | param_name[2] = "tattoo_blue"; | ||
8211 | break; | ||
8212 | |||
8150 | default: | 8213 | default: |
8151 | llassert(0); | 8214 | llassert(0); |
8152 | return FALSE; | 8215 | return FALSE; |
@@ -8606,7 +8669,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8606 | { | 8669 | { |
8607 | for( S32 i = 0; i < num_blocks; i++ ) | 8670 | for( S32 i = 0; i < num_blocks; i++ ) |
8608 | { | 8671 | { |
8609 | while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) | 8672 | while( param && (!param->isTweakable()) ) |
8610 | { | 8673 | { |
8611 | param = getNextVisualParam(); | 8674 | param = getNextVisualParam(); |
8612 | } | 8675 | } |
@@ -8614,7 +8677,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8614 | if( !param ) | 8677 | if( !param ) |
8615 | { | 8678 | { |
8616 | llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; | 8679 | llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; |
8617 | return; | 8680 | break; |
8618 | } | 8681 | } |
8619 | 8682 | ||
8620 | U8 value; | 8683 | U8 value; |
@@ -8655,14 +8718,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8655 | } | 8718 | } |
8656 | } | 8719 | } |
8657 | 8720 | ||
8658 | while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) | 8721 | S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT |
8722 | if (num_blocks != expected_tweakable_count) | ||
8659 | { | 8723 | { |
8660 | param = getNextVisualParam(); | 8724 | 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; |
8661 | } | ||
8662 | if( param ) | ||
8663 | { | ||
8664 | llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; | ||
8665 | return; | ||
8666 | } | 8725 | } |
8667 | 8726 | ||
8668 | if (params_changed) | 8727 | if (params_changed) |
@@ -8933,8 +8992,7 @@ void LLVOAvatar::dumpArchetypeXML( void* ) | |||
8933 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 8992 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
8934 | { | 8993 | { |
8935 | LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; | 8994 | LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; |
8936 | if( (viewer_param->getWearableType() == type) && | 8995 | if (viewer_param->getWearableType() == type && viewer_param->isTweakable()) |
8937 | (viewer_param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) ) | ||
8938 | { | 8996 | { |
8939 | apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", | 8997 | apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", |
8940 | viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight() ); | 8998 | 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/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/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 6e361fa..d4d86c0 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml | |||
@@ -5218,6 +5218,88 @@ The string [STRING_NAME] is missing from strings.xml | |||
5218 | </notification> | 5218 | </notification> |
5219 | 5219 | ||
5220 | <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 | ||
5221 | icon="notifytip.tga" | 5303 | icon="notifytip.tga" |
5222 | name="Cancelled" | 5304 | name="Cancelled" |
5223 | type="notifytip"> | 5305 | type="notifytip"> |
@@ -6855,7 +6937,7 @@ GRAVITY -- -9.8 | |||
6855 | 6937 | ||
6856 | * -- Multiplication | 6938 | * -- Multiplication |
6857 | \ -- Division | 6939 | \ -- Division |
6858 | + -- Addition | 6940 | -- Addition |
6859 | - -- Subtraction | 6941 | - -- Subtraction |
6860 | 6942 | ||
6861 | For information about this feature, click "More Info". | 6943 | For information about this feature, click "More Info". |
@@ -6884,7 +6966,7 @@ GLOW -- Glow | |||
6884 | 6966 | ||
6885 | * -- Multiplication | 6967 | * -- Multiplication |
6886 | \ -- Division | 6968 | \ -- Division |
6887 | + -- Addition | 6969 | -- Addition |
6888 | - -- Subtraction | 6970 | - -- Subtraction |
6889 | 6971 | ||
6890 | For information about this feature, click "More Info". | 6972 | For information about this feature, click "More Info". |
@@ -7202,6 +7284,24 @@ Apply this region's settings? ("Ignore" will ignore all region setting | |||
7202 | The new font will appear after you restart [VIEWER_NAME]. | 7284 | The new font will appear after you restart [VIEWER_NAME]. |
7203 | </notification> | 7285 | </notification> |
7204 | 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> | ||
7205 | 7305 | ||
7206 | <!--End Imprudence notifications--> | 7306 | <!--End Imprudence notifications--> |
7207 | <!-- [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 0df65e7..f459e6a 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> |