aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJacek Antonelli2009-02-15 19:58:57 -0600
committerJacek Antonelli2009-02-15 20:06:17 -0600
commit7552080406d6c54e981d2e26f3826e7457cdd5fb (patch)
treee613b774b600367635484fd71770c7984e720576
parentUpdated release notes for 1.1.0 RC1. (diff)
parentMerge branch '1.1.0-RC1-fixes' into next (diff)
downloadmeta-impy-7552080406d6c54e981d2e26f3826e7457cdd5fb.zip
meta-impy-7552080406d6c54e981d2e26f3826e7457cdd5fb.tar.gz
meta-impy-7552080406d6c54e981d2e26f3826e7457cdd5fb.tar.bz2
meta-impy-7552080406d6c54e981d2e26f3826e7457cdd5fb.tar.xz
Merge commit 'mccabe/next' into next
-rw-r--r--ChangeLog.txt90
-rw-r--r--linden/indra/cmake/CopyWinLibs.cmake113
-rw-r--r--linden/indra/cmake/GStreamer.cmake2
-rw-r--r--linden/indra/cmake/OPENAL.cmake24
-rw-r--r--linden/indra/llmedia/llmediaimplgstreamer.cpp37
-rw-r--r--linden/indra/llmedia/llmediaimplgstreamer.h15
-rw-r--r--linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc4
-rw-r--r--linden/indra/llmedia/llmediaimplgstreamervidplug.cpp6
-rw-r--r--linden/indra/llui/lltexteditor.cpp111
-rw-r--r--linden/indra/newview/app_settings/settings.xml6
-rw-r--r--linden/indra/newview/llmediaremotectrl.cpp20
-rw-r--r--linden/indra/newview/lloverlaybar.cpp7
-rw-r--r--linden/indra/newview/lloverlaybar.h3
-rw-r--r--linden/indra/newview/llpreviewlandmark.cpp10
-rw-r--r--linden/indra/newview/llviewergesture.cpp3
-rw-r--r--linden/indra/newview/llviewermenu.cpp26
-rw-r--r--linden/indra/newview/llviewermessage.cpp4
-rw-r--r--linden/indra/newview/llviewerobject.cpp6
-rw-r--r--linden/indra/newview/llviewerparcelmedia.cpp8
-rw-r--r--linden/indra/newview/llviewerparcelmgr.cpp22
-rw-r--r--linden/indra/newview/llvoavatar.cpp13
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/alerts.xml36
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_media_controls.xml188
-rw-r--r--linden/install.xml14
25 files changed, 491 insertions, 281 deletions
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 37c47eb..0afef3a 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,93 @@
12009-02-14 McCabe Maxsted <hakushakukun@gmail.com>
2
3 * linden/indra/newview/app_settings/settings.xml:
4 Fixed missing music prompt (streaming now enabled by default).
5 * linden/indra/newview/llviewerparcelmedia.cpp:
6 Ditto.
7 * linden/indra/newview/llviewerparcelmgr.cpp:
8 Ditto.
9 * linden/indra/newview/skins/default/xui/en-us/alerts.xml:
10 Ditto.
11
12 * linden/indra/newview/lloverlaybar.cpp:
13 Fixed music button not toggling on first run.
14 * linden/indra/newview/lloverlaybar.h:
15 Ditto.
16 * linden/indra/newview/llviewerparcelmgr.cpp:
17 Ditto.
18
19 * linden/indra/newview/llmediaremotectrl.cpp:
20 Removed useless music pause button.
21 * linden/indra/newview/skins/default/xui/en-us/panel_media_controls.xml:
22 Ditto.
23
24 * linden/indra/newview/llviewergesture.cpp:
25 Gestures now muted with sounds.
26
27
282009-02-13 McCabe Maxsted <hakushakukun@gmail.com>
29
30 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
31 Removed junk code from GStreamer.
32 * linden/indra/llmedia/llmediaimplgstreamer.h:
33 Ditto.
34 * linden/indra/llmedia/llmediaimplgstreamervidplug.cpp:
35 Ditto.
36
37 * linden/indra/newview/app_settings/settings.xml:
38 Fixed sound settings not being correctly muted.
39 * linden/indra/newview/llviewermessage.cpp:
40 Ditto.
41 * linden/indra/newview/llviewerobject.cpp:
42 Ditto.
43 * linden/indra/newview/llvoavatar.cpp:
44 Ditto.
45
46
47 Armin Weatherwax <email@unknown.com>
48
49 * linden/indra/newview/llpreviewlandmark.cpp:
50 Removed search for non-existant floater_preview_new_landmark.xml.
51
52
53 Anders Arnholm <anders@arnholm.se>
54 * linden/indra/llui/lltexteditor.cpp:
55 Fixed crash in LLTextEditor::findHTML
56
57 * linden/indra/llmedia/llmediaimplgstreamer.cpp:
58 Added artist/title tag info support.
59 * linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc:
60 Ditto.
61
62
632009-02-04 McCabe Maxsted <hakushakukun@gmail.com>
64
65 * linden/indra/cmake/CopyWinLibs.cmake:
66 develop.py should now work again under windows.
67 * linden/indra/cmake/GStreamer.cmake:
68 Ditto.
69 * linden/indra/cmake/OPENAL.cmake:
70 Ditto.
71 * linden/install.xml:
72 Ditto.
73
74
752009-02-03 McCabe Maxsted <hakushakukun@gmail.com>
76
77 * linden/indra/newview/llviewermenu.cpp:
78 Fixed llSetTouchText().
79 * linden/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml:
80 Ditto.
81
82 * linden/indra/cmake/CopyWinLibs.cmake:
83 Updated CMake to RC1.
84 * linden/indra/cmake/OPENAL.cmake:
85 Ditto.
86 * linden/install.xml:
87 Ditto.
88
89
90
1=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 91=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
2=- 1.1.0 RC1 -= 92=- 1.1.0 RC1 -=
3=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 93=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
diff --git a/linden/indra/cmake/CopyWinLibs.cmake b/linden/indra/cmake/CopyWinLibs.cmake
index fdfcb3f..e80f0c3 100644
--- a/linden/indra/cmake/CopyWinLibs.cmake
+++ b/linden/indra/cmake/CopyWinLibs.cmake
@@ -6,101 +6,177 @@
6 6
7include(CMakeCopyIfDifferent) 7include(CMakeCopyIfDifferent)
8 8
9set(gst_plugin_debug_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug/gstreamer-plugins") 9set(gst_plugin_release_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release/lib/gstreamer-plugins")
10set(gst_plugin_debug_files 10set(gst_plugin_release_files
11 libdshowsrcwrapper.dll
12 libfsselector.dll
13 libfsvalve.dll
14 libgstacmenc.dll
11 libgstadder.dll 15 libgstadder.dll
12 libgstalaw.dll 16 libgstalaw.dll
17 libgstalpha.dll
18 libgstalphacolor.dll
19 libgstapp.dll
20 libgstaudiochunk.dll
13 libgstaudioconvert.dll 21 libgstaudioconvert.dll
22 libgstaudiofx.dll
14 libgstaudiorate.dll 23 libgstaudiorate.dll
15 libgstaudioresample.dll 24 libgstaudioresample.dll
16 libgstaudiotestsrc.dll 25 libgstaudiotestsrc.dll
17 libgstautodetect.dll 26 libgstautodetect.dll
18 libgstavi.dll 27 libgstavi.dll
28 libgstcoreelements.dll
19 libgstcutter.dll 29 libgstcutter.dll
20 libgstdecodebin2.dll 30 libgstdecodebin2.dll
21 libgstdecodebin.dll 31 libgstdecodebin.dll
22 libgstdirectdraw.dll 32 libgstdirectdraw.dll
23 libgstdirectsound.dll 33 libgstdirectsound.dll
24 libgsteffectv.dll 34 libgstdshowdecwrapper.dll
35 libgstdshowsrcwrapper.dll
36 libgstdshowvideosink.dll
37 libgstdtmf.dll
25 libgstffmpeg.dll 38 libgstffmpeg.dll
26 libgstffmpegcolorspace.dll 39 libgstffmpegcolorspace.dll
40 libgstflv.dll
27 libgstgdp.dll 41 libgstgdp.dll
42 libgsth264parse.dll
43 libgsticydemux.dll
44 libgstid3demux.dll
28 libgstjpeg.dll 45 libgstjpeg.dll
46 libgstlevel.dll
47 libgstmad.dll
48 libgstmms.dll
49 libgstmpeg2dec.dll
50 libgstmpegaudioparse.dll
51 libgstmpegstream.dll
52 libgstmpegvideoparse.dll
53 libgstmscodecs.dll
29 libgstmulaw.dll 54 libgstmulaw.dll
55 libgstmultipart.dll
56 libgstneon.dll
30 libgstogg.dll 57 libgstogg.dll
31 libgstplaybin.dll 58 libgstplaybin.dll
59 libgstpng.dll
32 libgstqtdemux.dll 60 libgstqtdemux.dll
33 libgstrtp.dll 61 libgstqueue2.dll
62 libgstrtp.dll
63 libgstrtpmanager.dll
64 libgstrtpmuxer.dll
34 libgstrtsp.dll 65 libgstrtsp.dll
66 libgstsmpte.dll
35 libgsttheora.dll 67 libgsttheora.dll
36 libgsttypefindfunctions.dll 68 libgsttypefindfunctions.dll
37 libgstudp.dll 69 libgstudp.dll
38 libgstvideobalance.dll 70 libgstvideobalance.dll
39 libgstvideobox.dll 71 libgstvideobox.dll
40 libgstvideocrop.dll 72 libgstvideocrop.dll
41 libgstvideoflip.dll
42 libgstvideomixer.dll 73 libgstvideomixer.dll
43 libgstvideorate.dll 74 libgstvideorate.dll
44 libgstvideoscale.dll 75 libgstvideoscale.dll
76 libgstvideosignal.dll
45 libgstvideotestsrc.dll 77 libgstvideotestsrc.dll
46 libgstvolume.dll 78 libgstvolume.dll
79 libgstvolume.dll
47 libgstvorbis.dll 80 libgstvorbis.dll
81 libgstwasapi.dll
82 libgstwavparse.dll
83 libgstwininet.dll
84 libgstx264.dll
85 libgstxvid.dll
48 ) 86 )
49 87
50copy_if_different( 88copy_if_different(
51 ${gst_plugin_debug_dir} 89 ${gst_plugin_release_dir}
52 "${CMAKE_CURRENT_BINARY_DIR}/Debug/lib/gstreamer-plugins" 90 "${CMAKE_CURRENT_BINARY_DIR}/Release/lib/gstreamer-plugins"
53 out_targets 91 out_targets
54 ${gst_plugin_debug_files} 92 ${gst_plugin_release_files}
55 ) 93 )
56set(all_targets ${all_targets} ${out_targets}) 94set(all_targets ${all_targets} ${out_targets})
57 95
58set(gst_plugin_release_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release/gstreamer-plugins") 96set(gst_plugin_debug_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug/lib/gstreamer-plugins")
59set(gst_plugin_release_files 97set(gst_plugin_debug_files
98 libdshowsrcwrapper.dll
99 libfsselector.dll
100 libfsvalve.dll
101 libgstacmenc.dll
60 libgstadder.dll 102 libgstadder.dll
61 libgstalaw.dll 103 libgstalaw.dll
104 libgstalpha.dll
105 libgstalphacolor.dll
106 libgstapp.dll
107 libgstaudiochunk.dll
62 libgstaudioconvert.dll 108 libgstaudioconvert.dll
109 libgstaudiofx.dll
63 libgstaudiorate.dll 110 libgstaudiorate.dll
64 libgstaudioresample.dll 111 libgstaudioresample.dll
65 libgstaudiotestsrc.dll 112 libgstaudiotestsrc.dll
66 libgstautodetect.dll 113 libgstautodetect.dll
67 libgstavi.dll 114 libgstavi.dll
115 libgstcoreelements.dll
68 libgstcutter.dll 116 libgstcutter.dll
69 libgstdecodebin2.dll 117 libgstdecodebin2.dll
70 libgstdecodebin.dll 118 libgstdecodebin.dll
71 libgstdirectdraw.dll 119 libgstdirectdraw.dll
72 libgstdirectsound.dll 120 libgstdirectsound.dll
73 libgsteffectv.dll 121 libgstdshowdecwrapper.dll
122 libgstdshowsrcwrapper.dll
123 libgstdshowvideosink.dll
124 libgstdtmf.dll
74 libgstffmpeg.dll 125 libgstffmpeg.dll
75 libgstffmpegcolorspace.dll 126 libgstffmpegcolorspace.dll
127 libgstflv.dll
76 libgstgdp.dll 128 libgstgdp.dll
129 libgsth264parse.dll
130 libgsticydemux.dll
131 libgstid3demux.dll
77 libgstjpeg.dll 132 libgstjpeg.dll
133 libgstlevel.dll
134 libgstmad.dll
135 libgstmms.dll
136 libgstmpeg2dec.dll
137 libgstmpegaudioparse.dll
138 libgstmpegstream.dll
139 libgstmpegvideoparse.dll
140 libgstmscodecs.dll
78 libgstmulaw.dll 141 libgstmulaw.dll
142 libgstmultipart.dll
143 libgstneon.dll
79 libgstogg.dll 144 libgstogg.dll
80 libgstplaybin.dll 145 libgstplaybin.dll
146 libgstpng.dll
81 libgstqtdemux.dll 147 libgstqtdemux.dll
82 libgstrtp.dll 148 libgstqueue2.dll
149 libgstrtp.dll
150 libgstrtpmanager.dll
151 libgstrtpmuxer.dll
83 libgstrtsp.dll 152 libgstrtsp.dll
153 libgstsmpte.dll
84 libgsttheora.dll 154 libgsttheora.dll
85 libgsttypefindfunctions.dll 155 libgsttypefindfunctions.dll
86 libgstudp.dll 156 libgstudp.dll
87 libgstvideobalance.dll 157 libgstvideobalance.dll
88 libgstvideobox.dll 158 libgstvideobox.dll
89 libgstvideocrop.dll 159 libgstvideocrop.dll
90 libgstvideoflip.dll
91 libgstvideomixer.dll 160 libgstvideomixer.dll
92 libgstvideorate.dll 161 libgstvideorate.dll
93 libgstvideoscale.dll 162 libgstvideoscale.dll
163 libgstvideosignal.dll
94 libgstvideotestsrc.dll 164 libgstvideotestsrc.dll
95 libgstvolume.dll 165 libgstvolume.dll
166 libgstvolume.dll
96 libgstvorbis.dll 167 libgstvorbis.dll
168 libgstwasapi.dll
169 libgstwavparse.dll
170 libgstwininet.dll
171 libgstx264.dll
172 libgstxvid.dll
97 ) 173 )
98 174
99copy_if_different( 175copy_if_different(
100 ${gst_plugin_release_dir} 176 ${gst_plugin_debug_dir}
101 "${CMAKE_CURRENT_BINARY_DIR}/Release/lib/gstreamer-plugins" 177 "${CMAKE_CURRENT_BINARY_DIR}/Debug/lib/gstreamer-plugins"
102 out_targets 178 out_targets
103 ${gst_plugin_release_files} 179 ${gst_plugin_debug_files}
104 ) 180 )
105set(all_targets ${all_targets} ${out_targets}) 181set(all_targets ${all_targets} ${out_targets})
106 182
@@ -108,11 +184,8 @@ set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-win32")
108set(vivox_files 184set(vivox_files
109 tntk.dll 185 tntk.dll
110 libeay32.dll 186 libeay32.dll
111 SLVoice.exe
112 ssleay32.dll 187 ssleay32.dll
113 SLVoiceAgent.exe
114 srtp.dll 188 srtp.dll
115 vivoxsdk.dll
116 ortp.dll 189 ortp.dll
117 wrap_oal.dll 190 wrap_oal.dll
118 ) 191 )
@@ -338,4 +411,4 @@ if (MSVC80)
338 endif (EXISTS ${release_msvc8_redist_path}) 411 endif (EXISTS ${release_msvc8_redist_path})
339endif (MSVC80) 412endif (MSVC80)
340 413
341add_custom_target(copy_win_libs ALL DEPENDS ${all_targets}) 414add_custom_target(copy_win_libs ALL DEPENDS ${all_targets}) \ No newline at end of file
diff --git a/linden/indra/cmake/GStreamer.cmake b/linden/indra/cmake/GStreamer.cmake
index fc256a8..b4b984d 100644
--- a/linden/indra/cmake/GStreamer.cmake
+++ b/linden/indra/cmake/GStreamer.cmake
@@ -10,6 +10,8 @@ include(Prebuilt)
10if (WINDOWS) 10if (WINDOWS)
11 11
12 use_prebuilt_binary(libxml) 12 use_prebuilt_binary(libxml)
13 use_prebuilt_binary(iconv)
14 use_prebuilt_binary(gstreamer-plugins)
13 set(GSTREAMER_FOUND ON FORCE BOOL) 15 set(GSTREAMER_FOUND ON FORCE BOOL)
14 set(GSTREAMER_INCLUDE_DIRS 16 set(GSTREAMER_INCLUDE_DIRS
15 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib 17 ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib
diff --git a/linden/indra/cmake/OPENAL.cmake b/linden/indra/cmake/OPENAL.cmake
index a2bae5d..5e71f66 100644
--- a/linden/indra/cmake/OPENAL.cmake
+++ b/linden/indra/cmake/OPENAL.cmake
@@ -9,11 +9,19 @@ if (OPENAL)
9 9
10 # OPENAL_LIB 10 # OPENAL_LIB
11 11
12 if (WINDOWS)
12 find_library(OPENAL_LIB 13 find_library(OPENAL_LIB
13 NAMES openal OpenAL OpenAL32 wrap_oal 14 NAMES openal openal32 OpenAL OpenAL32 wrap_oal
14 PATHS ${ARCH_PREBUILT_DIRS_RELEASE} 15 PATHS ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release
15 ) 16 )
16 17
18 else (WINDOWS)
19 find_library(OPENAL_LIB
20 NAMES openal openal32 OpenAL OpenAL32 wrap_oal
21 PATHS ${ARCH_PREBUILT_DIRS_RELEASE}
22 )
23 endif (WINDOWS)
24
17 if (NOT OPENAL_LIB) 25 if (NOT OPENAL_LIB)
18 message(FATAL_ERROR "OpenAL not found!") 26 message(FATAL_ERROR "OpenAL not found!")
19 else (NOT OPENAL_LIB) 27 else (NOT OPENAL_LIB)
@@ -26,7 +34,7 @@ if (OPENAL)
26 34
27 find_path(OPENAL_INCLUDE_DIR 35 find_path(OPENAL_INCLUDE_DIR
28 NAMES al.h 36 NAMES al.h
29 PATHS ${LIBS_PREBUILT_DIR}/include /usr/include/AL 37 PATHS ${LIBS_PREBUILT_DIR}/include/AL /usr/include/AL
30 ) 38 )
31 39
32 if (NOT OPENAL_INCLUDE_DIR) 40 if (NOT OPENAL_INCLUDE_DIR)
@@ -39,10 +47,18 @@ if (OPENAL)
39 47
40 # ALUT_LIB 48 # ALUT_LIB
41 49
50 if (WINDOWS)
51 find_library(ALUT_LIB
52 NAMES alut freealut
53 PATHS ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release
54 )
55
56 else (WINDOWS)
42 find_library(ALUT_LIB 57 find_library(ALUT_LIB
43 NAMES alut freealut 58 NAMES alut freealut
44 PATHS ${ARCH_PREBUILT_DIRS_RELEASE} 59 PATHS ${ARCH_PREBUILT_DIRS_RELEASE}
45 ) 60 )
61 endif (WINDOWS)
46 62
47 if (NOT ALUT_LIB) 63 if (NOT ALUT_LIB)
48 message(FATAL_ERROR "ALUT not found!") 64 message(FATAL_ERROR "ALUT not found!")
@@ -56,7 +72,7 @@ if (OPENAL)
56 72
57 find_path(ALUT_INCLUDE_DIR 73 find_path(ALUT_INCLUDE_DIR
58 NAMES alut.h 74 NAMES alut.h
59 PATHS ${LIBS_PREBUILT_DIR}/include /usr/include/AL 75 PATHS ${LIBS_PREBUILT_DIR}/include/AL /usr/include/AL
60 ) 76 )
61 77
62 if (NOT ALUT_INCLUDE_DIR) 78 if (NOT ALUT_INCLUDE_DIR)
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp
index 18afc45..bae8ad9 100644
--- a/linden/indra/llmedia/llmediaimplgstreamer.cpp
+++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp
@@ -43,10 +43,6 @@ extern "C" {
43 43
44#include "llmediaimplgstreamervidplug.h" 44#include "llmediaimplgstreamervidplug.h"
45 45
46#ifdef LL_GST_SOUNDSINK
47#include "llmediaimplgstreamersndplug.h"
48#endif // LL_GST_SOUNDSINK
49
50#include "llmediaimplgstreamer_syms.h" 46#include "llmediaimplgstreamer_syms.h"
51 47
52#include "llerror.h" 48#include "llerror.h"
@@ -77,9 +73,6 @@ LLMediaImplGStreamer () :
77 mPlaybin ( NULL ), 73 mPlaybin ( NULL ),
78 mVideoSink ( NULL ), 74 mVideoSink ( NULL ),
79 mState( GST_STATE_NULL ) 75 mState( GST_STATE_NULL )
80#ifdef LL_GST_SOUNDSINK
81 ,mAudioSink ( NULL )
82#endif // LL_GST_SOUNDSINK
83{ 76{
84 LL_DEBUGS("MediaManager") << "constructing media..." << LL_ENDL; 77 LL_DEBUGS("MediaManager") << "constructing media..." << LL_ENDL;
85 mVolume = -1.0; // XXX Hack to make the vould change happend first time 78 mVolume = -1.0; // XXX Hack to make the vould change happend first time
@@ -115,21 +108,6 @@ LLMediaImplGStreamer () :
115 } 108 }
116 109
117 g_object_set(mPlaybin, "video-sink", mVideoSink, NULL); 110 g_object_set(mPlaybin, "video-sink", mVideoSink, NULL);
118
119#ifdef LL_GST_SOUNDSINK
120 LL_DEBUGS("MediaManager") << "extrenal audio sink..." << LL_ENDL;
121 // instantiate and connect a custom audio sink
122 mAudioSink =
123 GST_SLSOUND(llgst_element_factory_make ("private-slsound", "slsound"));
124 if (!mAudioSink)
125 {
126 LL_WARN("MediaImpl") << "Could not instantiate private-slsound element." << LL_ENDL;
127 // todo: cleanup.
128 return; // error
129 }
130
131 g_object_set(mPlaybin, "audio-sink", mAudioSink, NULL);
132#endif
133 } 111 }
134} 112}
135 113
@@ -210,9 +188,6 @@ bool LLMediaImplGStreamer::startup (LLMediaManagerData* init_data)
210 188
211 // Init our custom plugins - only really need do this once. 189 // Init our custom plugins - only really need do this once.
212 gst_slvideo_init_class(); 190 gst_slvideo_init_class();
213#if 0
214 gst_slsound_init_class();
215#endif
216 191
217 done_init = true; 192 done_init = true;
218 } 193 }
@@ -360,7 +335,6 @@ gboolean LLMediaImplGStreamer::bus_callback(GstBus *bus, GstMessage *message, gp
360 } 335 }
361 case GST_MESSAGE_TAG: 336 case GST_MESSAGE_TAG:
362 { 337 {
363#if 0
364 GstTagList *tag_list; 338 GstTagList *tag_list;
365 gchar *title; 339 gchar *title;
366 gchar *artist; 340 gchar *artist;
@@ -370,10 +344,9 @@ gboolean LLMediaImplGStreamer::bus_callback(GstBus *bus, GstMessage *message, gp
370 gboolean hazArtist = llgst_tag_list_get_string(tag_list, 344 gboolean hazArtist = llgst_tag_list_get_string(tag_list,
371 GST_TAG_ARTIST, &artist); 345 GST_TAG_ARTIST, &artist);
372 if(hazTitle) 346 if(hazTitle)
373 LL_INFOS("MediaInfo") << "Title is " << title << LL_ENDL; 347 LL_INFOS("MediaInfo") << "Title: " << title << LL_ENDL;
374 if(hazArtist) 348 if(hazArtist)
375 LL_INFOS("MediaInfo") << "Artist is " << artist << LL_ENDL; 349 LL_INFOS("MediaInfo") << "Artist: " << artist << LL_ENDL;
376#endif
377 break; 350 break;
378 } 351 }
379 case GST_MESSAGE_EOS: 352 case GST_MESSAGE_EOS:
@@ -412,9 +385,6 @@ bool LLMediaImplGStreamer::navigateTo (const std::string urlIn)
412 << LL_ENDL; 385 << LL_ENDL;
413 386
414 if (NULL == mPump 387 if (NULL == mPump
415#ifdef LL_GST_SOUNDSINK
416 || NULL == mAudioSink
417#endif
418 || NULL == mPlaybin) 388 || NULL == mPlaybin)
419 { 389 {
420 return false; 390 return false;
@@ -479,9 +449,6 @@ bool LLMediaImplGStreamer::updateMedia()
479 449
480 // sanity check 450 // sanity check
481 if (NULL == mPump 451 if (NULL == mPump
482#ifdef LL_GST_SOUNDSINK
483 || NULL == mAudioSink
484#endif
485 || NULL == mPlaybin) 452 || NULL == mPlaybin)
486 { 453 {
487#ifdef LL_GST_REPORT_STATE_CHANGES 454#ifdef LL_GST_REPORT_STATE_CHANGES
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.h b/linden/indra/llmedia/llmediaimplgstreamer.h
index 4b9353b..5b493ad 100644
--- a/linden/indra/llmedia/llmediaimplgstreamer.h
+++ b/linden/indra/llmedia/llmediaimplgstreamer.h
@@ -31,7 +31,7 @@
31 */ 31 */
32 32
33// header guard 33// header guard
34///#ifndef llmediaimplgstreamer_h 34#ifndef llmediaimplgstreamer_h
35#define llmediaimplgstreamer_h 35#define llmediaimplgstreamer_h
36 36
37#include "llmediaimplcommon.h" 37#include "llmediaimplcommon.h"
@@ -42,14 +42,12 @@
42extern "C" { 42extern "C" {
43#include <stdio.h> 43#include <stdio.h>
44#include <gst/gst.h> 44#include <gst/gst.h>
45#include <apr_pools.h> 45
46#include <apr_dso.h> 46#include "apr_pools.h"
47#include "apr_dso.h"
47} 48}
48 49
49#include "llmediaimplgstreamervidplug.h" 50#include "llmediaimplgstreamervidplug.h"
50#ifdef LL_GST_SOUNDSINK
51#include "llmediaimplgstreamersndplug.h"
52#endif // LL_GST_SOUNDSINK
53 51
54class LLMediaManagerData; 52class LLMediaManagerData;
55class LLMediaImplMaker; 53class LLMediaImplMaker;
@@ -100,9 +98,6 @@ class LLMediaImplGStreamer:
100 GstElement *mPlaybin; 98 GstElement *mPlaybin;
101 GstSLVideo *mVideoSink; 99 GstSLVideo *mVideoSink;
102 GstState mState; 100 GstState mState;
103#ifdef LL_GST_SOUNDSINK
104 GstSLSound *mAudioSink;
105#endif // LL_GST_SOUNDSINK
106 GstState getState() const { return mState; } 101 GstState getState() const { return mState; }
107}; 102};
108 103
@@ -132,4 +127,4 @@ public:
132 127
133///#endif // LL_GSTREAMER_ENABLED 128///#endif // LL_GSTREAMER_ENABLED
134 129
135///#endif // llmediaimplgstreamer_h 130#endif // llmediaimplgstreamer_h
diff --git a/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc b/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc
index 08ba6df..e17a7a0 100644
--- a/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc
+++ b/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc
@@ -40,3 +40,7 @@ LL_GST_SYM(true, gst_element_seek, bool, GstElement *, gdouble, GstFormat, GstSe
40LL_GST_SYM(false, gst_segtrap_set_enabled, void, gboolean enabled); 40LL_GST_SYM(false, gst_segtrap_set_enabled, void, gboolean enabled);
41LL_GST_SYM(false, gst_message_parse_buffering, void, GstMessage *message, gint *percent); 41LL_GST_SYM(false, gst_message_parse_buffering, void, GstMessage *message, gint *percent);
42LL_GST_SYM(false, gst_message_parse_info, void, GstMessage *message, GError **gerror, gchar **debug); 42LL_GST_SYM(false, gst_message_parse_info, void, GstMessage *message, GError **gerror, gchar **debug);
43
44//aw tag infos (Artist, Title, ...tbc...)
45LL_GST_SYM(true, gst_message_parse_tag, void, GstMessage *message, GstTagList **tag_list);
46LL_GST_SYM(true, gst_tag_list_get_string, gboolean, const GstTagList *list, const gchar *tag, gchar **value);
diff --git a/linden/indra/llmedia/llmediaimplgstreamervidplug.cpp b/linden/indra/llmedia/llmediaimplgstreamervidplug.cpp
index 892c50d..c95ef36 100644
--- a/linden/indra/llmedia/llmediaimplgstreamervidplug.cpp
+++ b/linden/indra/llmedia/llmediaimplgstreamervidplug.cpp
@@ -68,10 +68,8 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE (
68 GST_STATIC_CAPS (SLV_ALLCAPS) 68 GST_STATIC_CAPS (SLV_ALLCAPS)
69 ); 69 );
70 70
71GST_BOILERPLATE (GstSLVideo, 71GST_BOILERPLATE (GstSLVideo, gst_slvideo, GstVideoSink,
72 gst_slvideo, 72 GST_TYPE_VIDEO_SINK);
73 GstVideoSink,
74 GST_TYPE_VIDEO_SINK);
75 73
76static void gst_slvideo_set_property (GObject * object, guint prop_id, 74static void gst_slvideo_set_property (GObject * object, guint prop_id,
77 const GValue * value, 75 const GValue * value,
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp
index 72d8f17..714ee7c 100644
--- a/linden/indra/llui/lltexteditor.cpp
+++ b/linden/indra/llui/lltexteditor.cpp
@@ -35,6 +35,7 @@
35 35
36#include "lltexteditor.h" 36#include "lltexteditor.h"
37 37
38#include "llerror.h"
38#include "llfontgl.h" 39#include "llfontgl.h"
39#include "llrender.h" 40#include "llrender.h"
40#include "llui.h" 41#include "llui.h"
@@ -57,6 +58,7 @@
57#include "llimagegl.h" 58#include "llimagegl.h"
58#include "llwindow.h" 59#include "llwindow.h"
59#include <queue> 60#include <queue>
61#include <stdexcept>
60 62
61// 63//
62// Globals 64// Globals
@@ -3537,6 +3539,7 @@ void LLTextEditor::appendStyledText(const std::string &new_text,
3537 std::string text = new_text; 3539 std::string text = new_text;
3538 while ( findHTML(text, &start, &end) ) 3540 while ( findHTML(text, &start, &end) )
3539 { 3541 {
3542
3540 LLStyleSP html(new LLStyle); 3543 LLStyleSP html(new LLStyle);
3541 html->setVisible(true); 3544 html->setVisible(true);
3542 html->setColor(mLinkColor); 3545 html->setColor(mLinkColor);
@@ -3624,10 +3627,6 @@ void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool
3624 { 3627 {
3625 mSelectionStart = selection_start; 3628 mSelectionStart = selection_start;
3626 mSelectionEnd = selection_end; 3629 mSelectionEnd = selection_end;
3627
3628
3629
3630
3631 mIsSelecting = was_selecting; 3630 mIsSelecting = was_selecting;
3632 setCursorPos(cursor_pos); 3631 setCursorPos(cursor_pos);
3633 } 3632 }
@@ -4272,6 +4271,7 @@ S32 LLTextEditor::findHTMLToken(const std::string &line, S32 pos, BOOL reverse)
4272 return index+1; 4271 return index+1;
4273 } 4272 }
4274 } 4273 }
4274 index = 0; // Can't be before first charater
4275 } 4275 }
4276 else 4276 else
4277 { 4277 {
@@ -4322,21 +4322,34 @@ BOOL LLTextEditor::findHTML(const std::string &line, S32 *begin, S32 *end) const
4322 { 4322 {
4323 *begin = findHTMLToken(line, m1, TRUE); 4323 *begin = findHTMLToken(line, m1, TRUE);
4324 *end = findHTMLToken(line, m1, FALSE); 4324 *end = findHTMLToken(line, m1, FALSE);
4325
4326 // Can't start before the first char
4327 if(*begin < 0)
4328 {
4329 //*begin = 0;
4330 }
4325 4331
4326 //Load_url only handles http and https so don't hilite ftp, smb, etc. 4332 //Load_url only handles http and https so don't hilite ftp, smb, etc.
4327 m2 = line.substr(*begin,(m1 - *begin)).find("http"); 4333 try
4328 m3 = line.substr(*begin,(m1 - *begin)).find("secondlife");
4329
4330 std::string badneighbors=".,<>?';\"][}{=-+_)(*&^%$#@!~`\t\r\n\\";
4331
4332 if (m2 >= 0 || m3>=0)
4333 { 4334 {
4334 S32 bn = badneighbors.find(line.substr(m1+3,1)); 4335 m2 = line.substr(*begin,(m1 - *begin)).find("http");
4335 4336 m3 = line.substr(*begin,(m1 - *begin)).find("secondlife");
4336 if (bn < 0) 4337
4337 { 4338 std::string badneighbors=".,<>?';\"][}{=-+_)(*&^%$#@!~`\t\r\n\\";
4338 matched = TRUE; 4339
4340 if (m2 >= 0 || m3>=0)
4341 {
4342 S32 bn = badneighbors.find(line.substr(m1+3,1));
4343
4344 if (bn < 0)
4345 {
4346 matched = TRUE;
4347 }
4339 } 4348 }
4349 }
4350 catch ( std::out_of_range outOfRange )
4351 {
4352 LL_WARNS("TextEditor") << "got std::out_of_range exception \"" << line << "\"" << LL_ENDL;
4340 } 4353 }
4341 } 4354 }
4342/* matches things like secondlife.com (no http://) needs a whitelist to really be effective. 4355/* matches things like secondlife.com (no http://) needs a whitelist to really be effective.
@@ -4369,41 +4382,49 @@ BOOL LLTextEditor::findHTML(const std::string &line, S32 *begin, S32 *end) const
4369 { 4382 {
4370 S32 strpos, strpos2; 4383 S32 strpos, strpos2;
4371 4384
4372 std::string url = line.substr(*begin,*end - *begin); 4385 try
4373 std::string slurlID = "slurl.com/secondlife/";
4374 strpos = url.find(slurlID);
4375
4376 if (strpos < 0)
4377 { 4386 {
4378 slurlID="secondlife://"; 4387 std::string url = line.substr(*begin,*end - *begin);
4379 strpos = url.find(slurlID); 4388 std::string slurlID = "slurl.com/secondlife/";
4380 } 4389 strpos = url.find(slurlID);
4381 4390
4382 if (strpos < 0) 4391 if (strpos < 0)
4383 { 4392 {
4384 slurlID="sl://"; 4393 slurlID="secondlife://";
4385 strpos = url.find(slurlID); 4394 strpos = url.find(slurlID);
4386 } 4395 }
4387 4396
4388 if (strpos >= 0) 4397 if (strpos < 0)
4389 { 4398 {
4390 strpos+=slurlID.length(); 4399 slurlID="sl://";
4391 4400 strpos = url.find(slurlID);
4392 while ( ( strpos2=url.find("/",strpos) ) == -1 ) 4401 }
4393 { 4402
4394 if ((*end+2) >= (S32)line.length() || line.substr(*end,1) != " " ) 4403 if (strpos >= 0)
4404 {
4405 strpos+=slurlID.length();
4406
4407 while ( ( strpos2=url.find("/",strpos) ) == -1 )
4395 { 4408 {
4396 matched=FALSE; 4409 if ((*end+2) >= (S32)line.length() || line.substr(*end,1) != " " )
4397 break; 4410 {
4411 matched=FALSE;
4412 break;
4413 }
4414
4415 strpos = (*end + 1) - *begin;
4416
4417 *end = findHTMLToken(line,(*begin + strpos),FALSE);
4418 url = line.substr(*begin,*end - *begin);
4398 } 4419 }
4399 4420 }
4400 strpos = (*end + 1) - *begin; 4421
4401
4402 *end = findHTMLToken(line,(*begin + strpos),FALSE);
4403 url = line.substr(*begin,*end - *begin);
4404 }
4405 } 4422 }
4406 4423
4424 catch ( std::out_of_range outOfRange )
4425 {
4426 LL_WARNS("TextEditor") << "got std::out_of_range exception \"" << line << "\"" << LL_ENDL;
4427 }
4407 } 4428 }
4408 4429
4409 if (!matched) 4430 if (!matched)
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 779b668..7405aad 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -284,7 +284,7 @@
284 <key>Type</key> 284 <key>Type</key>
285 <string>F32</string> 285 <string>F32</string>
286 <key>Value</key> 286 <key>Value</key>
287 <real>1.0</real> 287 <real>0.5</real>
288 </map> 288 </map>
289 <key>AudioLevelUI</key> 289 <key>AudioLevelUI</key>
290 <map> 290 <map>
@@ -317,7 +317,7 @@
317 <key>Type</key> 317 <key>Type</key>
318 <string>Boolean</string> 318 <string>Boolean</string>
319 <key>Value</key> 319 <key>Value</key>
320 <integer>0</integer> 320 <integer>1</integer>
321 </map> 321 </map>
322 <key>AudioStreamingVideo</key> 322 <key>AudioStreamingVideo</key>
323 <map> 323 <map>
@@ -328,7 +328,7 @@
328 <key>Type</key> 328 <key>Type</key>
329 <string>Boolean</string> 329 <string>Boolean</string>
330 <key>Value</key> 330 <key>Value</key>
331 <integer>0</integer> 331 <integer>1</integer>
332 </map> 332 </map>
333 <key>AutoAcceptNewInventory</key> 333 <key>AutoAcceptNewInventory</key>
334 <map> 334 <map>
diff --git a/linden/indra/newview/llmediaremotectrl.cpp b/linden/indra/newview/llmediaremotectrl.cpp
index 1b337ab..06978d7 100644
--- a/linden/indra/newview/llmediaremotectrl.cpp
+++ b/linden/indra/newview/llmediaremotectrl.cpp
@@ -85,7 +85,6 @@ BOOL LLMediaRemoteCtrl::postBuild()
85 childSetAction("media_stop",LLOverlayBar::mediaStop,this); 85 childSetAction("media_stop",LLOverlayBar::mediaStop,this);
86 childSetAction("music_stop",LLOverlayBar::toggleMusicPlay,this); 86 childSetAction("music_stop",LLOverlayBar::toggleMusicPlay,this);
87 childSetAction("media_pause",LLOverlayBar::toggleMediaPlay,this); 87 childSetAction("media_pause",LLOverlayBar::toggleMediaPlay,this);
88 childSetAction("music_pause",LLOverlayBar::toggleMusicPlay,this);
89 88
90 childSetAction("expand", onClickExpandBtn, this); 89 childSetAction("expand", onClickExpandBtn, this);
91 return TRUE; 90 return TRUE;
@@ -150,7 +149,6 @@ void LLMediaRemoteCtrl::enableMediaButtons()
150 bool stop_media_enabled = false; 149 bool stop_media_enabled = false;
151 bool play_music_enabled = false; 150 bool play_music_enabled = false;
152 bool stop_music_enabled = false; 151 bool stop_music_enabled = false;
153 bool music_show_pause = false;
154 bool media_show_pause = false; 152 bool media_show_pause = false;
155 LLColor4 music_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" ); 153 LLColor4 music_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" );
156 LLColor4 media_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" ); 154 LLColor4 media_icon_color = LLUI::sColorsGroup->getColor( "IconDisabledColor" );
@@ -203,17 +201,16 @@ void LLMediaRemoteCtrl::enableMediaButtons()
203 201
204 if ( parcel && parcel->getMusicURL()[0]) 202 if ( parcel && parcel->getMusicURL()[0])
205 { 203 {
206 play_music_enabled = true;
207 music_icon_color = LLUI::sColorsGroup->getColor( "IconEnabledColor" ); 204 music_icon_color = LLUI::sColorsGroup->getColor( "IconEnabledColor" );
208 205
209 if (gOverlayBar->musicPlaying()) 206 if (gOverlayBar->musicPlaying())
210 { 207 {
211 music_show_pause = true; 208 play_music_enabled = false;
212 stop_music_enabled = true; 209 stop_music_enabled = true;
213 } 210 }
214 else 211 else
215 { 212 {
216 music_show_pause = false; 213 play_music_enabled = true;
217 stop_music_enabled = false; 214 stop_music_enabled = false;
218 } 215 }
219 } 216 }
@@ -226,20 +223,19 @@ void LLMediaRemoteCtrl::enableMediaButtons()
226 } 223 }
227 } 224 }
228 const std::string media_icon_name = LLMIMETypes::findIcon(media_type); 225 const std::string media_icon_name = LLMIMETypes::findIcon(media_type);
226
229 LLButton* music_play_btn = getChild<LLButton>("music_play"); 227 LLButton* music_play_btn = getChild<LLButton>("music_play");
230 LLButton* music_stop_btn = getChild<LLButton>("music_stop"); 228 LLButton* music_stop_btn = getChild<LLButton>("music_stop");
231 LLButton* music_pause_btn = getChild<LLButton>("music_pause"); 229
230 music_play_btn->setEnabled(play_music_enabled);
231 music_stop_btn->setEnabled(stop_music_enabled);
232 childSetColor("music_icon", music_icon_color);
233
232 LLButton* media_play_btn = getChild<LLButton>("media_play"); 234 LLButton* media_play_btn = getChild<LLButton>("media_play");
233 LLButton* media_stop_btn = getChild<LLButton>("media_stop"); 235 LLButton* media_stop_btn = getChild<LLButton>("media_stop");
234 LLButton* media_pause_btn = getChild<LLButton>("media_pause"); 236 LLButton* media_pause_btn = getChild<LLButton>("media_pause");
235 LLIconCtrl* media_icon = getChild<LLIconCtrl>("media_icon"); 237 LLIconCtrl* media_icon = getChild<LLIconCtrl>("media_icon");
236 238
237 music_play_btn->setEnabled(play_music_enabled);
238 music_stop_btn->setEnabled(stop_music_enabled);
239 music_pause_btn->setEnabled(music_show_pause);
240 music_pause_btn->setVisible(music_show_pause);
241 music_play_btn->setVisible(! music_show_pause);
242 childSetColor("music_icon", music_icon_color);
243 if(!media_icon_name.empty()) 239 if(!media_icon_name.empty())
244 { 240 {
245 media_icon->setImage(media_icon_name); 241 media_icon->setImage(media_icon_name);
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp
index 1087fd8..80cac14 100644
--- a/linden/indra/newview/lloverlaybar.cpp
+++ b/linden/indra/newview/lloverlaybar.cpp
@@ -275,6 +275,7 @@ void LLOverlayBar::refresh()
275 { 275 {
276 layoutButtons(); 276 layoutButtons();
277 } 277 }
278
278} 279}
279 280
280//----------------------------------------------------------------------- 281//-----------------------------------------------------------------------
@@ -360,6 +361,12 @@ void LLOverlayBar::toggleMediaPlay(void*)
360} 361}
361 362
362//static 363//static
364void LLOverlayBar::musicFirstRun()
365{
366 gOverlayBar->mMusicState = PLAYING;
367}
368
369//static
363void LLOverlayBar::toggleMusicPlay(void*) 370void LLOverlayBar::toggleMusicPlay(void*)
364{ 371{
365 if (!gOverlayBar) 372 if (!gOverlayBar)
diff --git a/linden/indra/newview/lloverlaybar.h b/linden/indra/newview/lloverlaybar.h
index 5880ff0..73d0a43 100644
--- a/linden/indra/newview/lloverlaybar.h
+++ b/linden/indra/newview/lloverlaybar.h
@@ -80,6 +80,9 @@ public:
80 static void musicStop(void*); 80 static void musicStop(void*);
81 static void mediaStop(void*); 81 static void mediaStop(void*);
82 82
83 // hack to make sure the music button plays.
84 static void musicFirstRun();
85
83 static void toggleAudioVolumeFloater(void*); 86 static void toggleAudioVolumeFloater(void*);
84 87
85protected: 88protected:
diff --git a/linden/indra/newview/llpreviewlandmark.cpp b/linden/indra/newview/llpreviewlandmark.cpp
index dba603b..01d77f6 100644
--- a/linden/indra/newview/llpreviewlandmark.cpp
+++ b/linden/indra/newview/llpreviewlandmark.cpp
@@ -90,15 +90,7 @@ LLPreviewLandmark::LLPreviewLandmark(const std::string& name,
90{ 90{
91 91
92 mFactoryMap["place_details_panel"] = LLCallbackMap(LLPreviewLandmark::createPlaceDetail, this); 92 mFactoryMap["place_details_panel"] = LLCallbackMap(LLPreviewLandmark::createPlaceDetail, this);
93 if (show_keep_discard) 93 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_existing_landmark.xml", &getFactoryMap());
94 {
95 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_new_landmark.xml", &getFactoryMap());
96 childSetAction("Discard btn",onDiscardBtn,this);
97 }
98 else
99 {
100 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_existing_landmark.xml", &getFactoryMap());
101 }
102 94
103 /* 95 /*
104 childSetCommitCallback("desc_editor", LLPreview::onText, this); 96 childSetCommitCallback("desc_editor", LLPreview::onText, this);
diff --git a/linden/indra/newview/llviewergesture.cpp b/linden/indra/newview/llviewergesture.cpp
index a080663..d99a3a8 100644
--- a/linden/indra/newview/llviewergesture.cpp
+++ b/linden/indra/newview/llviewergesture.cpp
@@ -43,6 +43,7 @@
43#include "llinventorymodel.h" 43#include "llinventorymodel.h"
44#include "llvoavatar.h" 44#include "llvoavatar.h"
45#include "llxfermanager.h" 45#include "llxfermanager.h"
46#include "llviewercontrol.h"
46#include "llviewermessage.h" // send_guid_sound_trigger 47#include "llviewermessage.h" // send_guid_sound_trigger
47#include "llviewernetwork.h" 48#include "llviewernetwork.h"
48#include "llagent.h" 49#include "llagent.h"
@@ -50,7 +51,7 @@
50// Globals 51// Globals
51LLViewerGestureList gGestureList; 52LLViewerGestureList gGestureList;
52 53
53const F32 LLViewerGesture::SOUND_VOLUME = 1.f; 54const F32 LLViewerGesture::SOUND_VOLUME = gSavedSettings.getBOOL("MuteSounds") ? 0.f : 1.f;
54 55
55LLViewerGesture::LLViewerGesture() 56LLViewerGesture::LLViewerGesture()
56: LLGesture() 57: LLGesture()
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index c4cbf84..b7f4a40 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -1605,6 +1605,31 @@ void label_touch(std::string& label, void*)
1605 } 1605 }
1606} 1606}
1607 1607
1608class LLAttachmentEnableTouch : public view_listener_t
1609{
1610 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
1611 {
1612 LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
1613
1614 if (!obj) return false;
1615 if (!obj->isAttachment()) return false;
1616
1617 bool new_value = obj && obj->flagHandleTouch();
1618 gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
1619 LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode();
1620
1621 if (node && node->mValid && !node->mTouchName.empty())
1622 {
1623 gMenuHolder->childSetText("Attachment Touch", node->mTouchName);
1624 }
1625 else
1626 {
1627 gMenuHolder->childSetText("Attachment Touch", userdata["data"].asString());
1628 }
1629 return true;
1630 }
1631};
1632
1608bool handle_object_open() 1633bool handle_object_open()
1609{ 1634{
1610 LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); 1635 LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
@@ -9822,6 +9847,7 @@ void initialize_menus()
9822 9847
9823 addMenu(new LLAttachmentEnableDrop(), "Attachment.EnableDrop"); 9848 addMenu(new LLAttachmentEnableDrop(), "Attachment.EnableDrop");
9824 addMenu(new LLAttachmentEnableDetach(), "Attachment.EnableDetach"); 9849 addMenu(new LLAttachmentEnableDetach(), "Attachment.EnableDetach");
9850 addMenu(new LLAttachmentEnableTouch(), "Attachment.EnableTouch");
9825 9851
9826 // Land pie menu 9852 // Land pie menu
9827 addMenu(new LLLandBuild(), "Land.Build"); 9853 addMenu(new LLLandBuild(), "Land.Build");
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index 4543ae4..b947f95 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -111,6 +111,7 @@
111#include "llui.h" // for make_ui_sound 111#include "llui.h" // for make_ui_sound
112#include "lluploaddialog.h" 112#include "lluploaddialog.h"
113#include "llviewercamera.h" 113#include "llviewercamera.h"
114#include "llviewercontrol.h"
114#include "llviewergenericmessage.h" 115#include "llviewergenericmessage.h"
115#include "llviewerinventory.h" 116#include "llviewerinventory.h"
116#include "llviewermenu.h" 117#include "llviewermenu.h"
@@ -3291,6 +3292,9 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
3291 pos_global.mdV[VY] += pos_local.mV[VY]; 3292 pos_global.mdV[VY] += pos_local.mV[VY];
3292 pos_global.mdV[VZ] += pos_local.mV[VZ]; 3293 pos_global.mdV[VZ] += pos_local.mV[VZ];
3293 3294
3295 // Don't play sounds if sound settings are muted.
3296 if (gSavedSettings.getBOOL("MuteSounds")) return;
3297
3294 // Don't play a trigger sound if you can't hear it due 3298 // Don't play a trigger sound if you can't hear it due
3295 // to parcel "local audio only" settings. 3299 // to parcel "local audio only" settings.
3296 if (!LLViewerParcelMgr::getInstance()->canHearSound(pos_global)) return; 3300 if (!LLViewerParcelMgr::getInstance()->canHearSound(pos_global)) return;
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp
index c560ced..cb3afc5 100644
--- a/linden/indra/newview/llviewerobject.cpp
+++ b/linden/indra/newview/llviewerobject.cpp
@@ -2766,7 +2766,7 @@ BOOL LLViewerObject::updateLOD()
2766 // Update volume of looping sounds 2766 // Update volume of looping sounds
2767 if (mAudioSourcep && mAudioSourcep->isLoop()) 2767 if (mAudioSourcep && mAudioSourcep->isLoop())
2768 { 2768 {
2769 F32 volume = gSavedSettings.getBOOL("MuteSounds") ? 0.f : (mAudioGain * gSavedSettings.getF32("AudioLevelSFX")); 2769 F32 volume = mAudioGain * gSavedSettings.getF32("AudioLevelSFX");
2770 mAudioSourcep->setGain(volume); 2770 mAudioSourcep->setGain(volume);
2771 } 2771 }
2772 return FALSE; 2772 return FALSE;
@@ -4331,7 +4331,7 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow
4331 { 4331 {
4332 BOOL queue = flags & LL_SOUND_FLAG_QUEUE; 4332 BOOL queue = flags & LL_SOUND_FLAG_QUEUE;
4333 mAudioGain = gain; 4333 mAudioGain = gain;
4334 F32 volume = gSavedSettings.getBOOL("MuteSounds") ? 0.f : gain * gSavedSettings.getF32("AudioLevelSFX"); 4334 F32 volume = gain * gSavedSettings.getF32("AudioLevelSFX");
4335 mAudioSourcep->setGain(volume); 4335 mAudioSourcep->setGain(volume);
4336 mAudioSourcep->setLoop(flags & LL_SOUND_FLAG_LOOP); 4336 mAudioSourcep->setLoop(flags & LL_SOUND_FLAG_LOOP);
4337 mAudioSourcep->setSyncMaster(flags & LL_SOUND_FLAG_SYNC_MASTER); 4337 mAudioSourcep->setSyncMaster(flags & LL_SOUND_FLAG_SYNC_MASTER);
@@ -4370,7 +4370,7 @@ void LLViewerObject::adjustAudioGain(const F32 gain)
4370 if (mAudioSourcep) 4370 if (mAudioSourcep)
4371 { 4371 {
4372 mAudioGain = gain; 4372 mAudioGain = gain;
4373 F32 volume = gSavedSettings.getBOOL("MuteSounds") ? 0.f : mAudioGain * gSavedSettings.getF32("AudioLevelSFX"); 4373 F32 volume = mAudioGain * gSavedSettings.getF32("AudioLevelSFX");
4374 mAudioSourcep->setGain(volume); 4374 mAudioSourcep->setGain(volume);
4375 } 4375 }
4376} 4376}
diff --git a/linden/indra/newview/llviewerparcelmedia.cpp b/linden/indra/newview/llviewerparcelmedia.cpp
index 956ed03..94f6d84 100644
--- a/linden/indra/newview/llviewerparcelmedia.cpp
+++ b/linden/indra/newview/llviewerparcelmedia.cpp
@@ -384,17 +384,11 @@ void LLViewerParcelMedia::processParcelMediaUpdate( LLMessageSystem *msg, void *
384 384
385void callback_play_media(S32 option, void* data) 385void callback_play_media(S32 option, void* data)
386{ 386{
387 LLParcel* parcel = (LLParcel*)data;
388 if (option == 0) 387 if (option == 0)
389 { 388 {
390 gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); 389 LLParcel* parcel = (LLParcel*)data;
391 LLViewerParcelMedia::play(parcel); 390 LLViewerParcelMedia::play(parcel);
392 } 391 }
393 else
394 {
395 gSavedSettings.setBOOL("AudioStreamingVideo", FALSE);
396 }
397 gSavedSettings.setWarning("FirstStreamingVideo", FALSE); 392 gSavedSettings.setWarning("FirstStreamingVideo", FALSE);
398
399} 393}
400 394
diff --git a/linden/indra/newview/llviewerparcelmgr.cpp b/linden/indra/newview/llviewerparcelmgr.cpp
index 5ef6f83..2dee2bf 100644
--- a/linden/indra/newview/llviewerparcelmgr.cpp
+++ b/linden/indra/newview/llviewerparcelmgr.cpp
@@ -1692,7 +1692,12 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
1692 1692
1693void optionally_start_music(const std::string& music_url) 1693void optionally_start_music(const std::string& music_url)
1694{ 1694{
1695 if (gSavedSettings.getBOOL("AudioStreamingMusic")) 1695 // Check to see if this your first time on a music-enabled parcel.
1696 if (gSavedSettings.getWarning("FirstStreamingMusic"))
1697 {
1698 gViewerWindow->alertXml("ParcelCanPlayMusic", callback_start_music, (void*)&music_url);
1699 }
1700 else if (gSavedSettings.getBOOL("AudioStreamingMusic"))
1696 { 1701 {
1697 // Make the user click the start button on the overlay bar. JC 1702 // Make the user click the start button on the overlay bar. JC
1698 // llinfos << "Starting parcel music " << music_url << llendl; 1703 // llinfos << "Starting parcel music " << music_url << llendl;
@@ -1706,6 +1711,21 @@ void optionally_start_music(const std::string& music_url)
1706 } 1711 }
1707} 1712}
1708 1713
1714
1715void callback_start_music(S32 option, void* data)
1716{
1717 if (option == 0)
1718 {
1719 // Before the callback, we verified the url was good.
1720 // We fetch again to avoid lag while loading.
1721 LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
1722 gAudiop->startInternetStream(parcel->getMusicURL());
1723
1724 LLOverlayBar::musicFirstRun();
1725 }
1726 gSavedSettings.setWarning("FirstStreamingMusic", FALSE);
1727}
1728
1709// static 1729// static
1710void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void **user) 1730void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void **user)
1711{ 1731{
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index d41f72e..fd2487b 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -3797,7 +3797,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
3797 const LLUUID AGENT_FOOTSTEP_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_LAND}; 3797 const LLUUID AGENT_FOOTSTEP_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_LAND};
3798 const S32 NUM_AGENT_FOOTSTEP_ANIMS = sizeof(AGENT_FOOTSTEP_ANIMS) / sizeof(LLUUID); 3798 const S32 NUM_AGENT_FOOTSTEP_ANIMS = sizeof(AGENT_FOOTSTEP_ANIMS) / sizeof(LLUUID);
3799 3799
3800 if ( gAudiop && isAnyAnimationSignaled(AGENT_FOOTSTEP_ANIMS, NUM_AGENT_FOOTSTEP_ANIMS) ) 3800 if ( gAudiop && !gSavedSettings.getBOOL("MuteAmbient") && isAnyAnimationSignaled(AGENT_FOOTSTEP_ANIMS, NUM_AGENT_FOOTSTEP_ANIMS) )
3801 { 3801 {
3802 BOOL playSound = FALSE; 3802 BOOL playSound = FALSE;
3803 LLVector3 foot_pos_agent; 3803 LLVector3 foot_pos_agent;
@@ -3828,7 +3828,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
3828// AUDIO_STEP_LO_SPEED, AUDIO_STEP_HI_SPEED, 3828// AUDIO_STEP_LO_SPEED, AUDIO_STEP_HI_SPEED,
3829// AUDIO_STEP_LO_GAIN, AUDIO_STEP_HI_GAIN ); 3829// AUDIO_STEP_LO_GAIN, AUDIO_STEP_HI_GAIN );
3830 3830
3831 const F32 STEP_VOLUME = 0.5f; 3831 const F32 STEP_VOLUME = 0.2f;
3832 LLUUID& step_sound_id = getStepSound(); 3832 LLUUID& step_sound_id = getStepSound();
3833 3833
3834 LLVector3d foot_pos_global = gAgent.getPosGlobalFromAgent(foot_pos_agent); 3834 LLVector3d foot_pos_global = gAgent.getPosGlobalFromAgent(foot_pos_agent);
@@ -4800,7 +4800,7 @@ BOOL LLVOAvatar::processSingleAnimationStateChange( const LLUUID& anim_id, BOOL
4800 { 4800 {
4801 if (anim_id == ANIM_AGENT_TYPE) 4801 if (anim_id == ANIM_AGENT_TYPE)
4802 { 4802 {
4803 if (gAudiop) 4803 if (gAudiop && !gSavedSettings.getBOOL("MuteAmbient"))
4804 { 4804 {
4805 LLVector3d char_pos_global = gAgent.getPosGlobalFromAgent(getCharacterPosition()); 4805 LLVector3d char_pos_global = gAgent.getPosGlobalFromAgent(getCharacterPosition());
4806 if (LLViewerParcelMgr::getInstance()->canHearSound(char_pos_global) 4806 if (LLViewerParcelMgr::getInstance()->canHearSound(char_pos_global)
@@ -4814,11 +4814,8 @@ BOOL LLVOAvatar::processSingleAnimationStateChange( const LLUUID& anim_id, BOOL
4814 // gAudiop->triggerSound(LLUUID(gSavedSettings.getString("UISndTyping")), volume); 4814 // gAudiop->triggerSound(LLUUID(gSavedSettings.getString("UISndTyping")), volume);
4815 //} 4815 //}
4816 //else 4816 //else
4817 { 4817 LLUUID sound_id = LLUUID(gSavedSettings.getString("UISndTyping"));
4818 LLUUID sound_id = LLUUID(gSavedSettings.getString("UISndTyping")); 4818 gAudiop->triggerSound(sound_id, getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_SFX, char_pos_global);
4819 gAudiop->triggerSound(sound_id, getID(), 1.0f, LLAudioEngine::AUDIO_TYPE_SFX, char_pos_global);
4820
4821 }
4822 } 4819 }
4823 } 4820 }
4824 } 4821 }
diff --git a/linden/indra/newview/skins/default/xui/en-us/alerts.xml b/linden/indra/newview/skins/default/xui/en-us/alerts.xml
index 0be529f..92e2014 100644
--- a/linden/indra/newview/skins/default/xui/en-us/alerts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/alerts.xml
@@ -1893,20 +1893,32 @@ Try selecting a single parcel.
1893 Region Not Found 1893 Region Not Found
1894 </message> 1894 </message>
1895 </alert> 1895 </alert>
1896 <alert modal="true" name="ParcelCanPlayMedia"> 1896 <alert modal="true" name="ParcelCanPlayMusic">
1897 <message name="message"> 1897 <message name="message">
1898 This location can play streaming media. 1898 This location wants to play streaming music.
1899Streaming media requires a fast Internet connection. 1899 (Requires a fast Internet connection.)
1900 1900
1901Play streaming media when available? 1901 Play streaming music now?
1902(You can change this option later under 1902 </message>
1903Preferences &gt; Audio &amp; Video.) 1903 <option name="PlayMusic">
1904 </message> 1904 Yes
1905 </option>
1906 <option name="No">
1907 No
1908 </option>
1909 </alert>
1910 <alert modal="true" name="ParcelCanPlayMedia">
1911 <message name="message">
1912 This location wants to play streaming media.
1913 (Requires a fast Internet connection.)
1914
1915 Play streaming media now?
1916 </message>
1905 <option name="PlayMedia"> 1917 <option name="PlayMedia">
1906 Play Media 1918 Yes
1907 </option> 1919 </option>
1908 <option name="Disable"> 1920 <option name="No">
1909 Disable 1921 No
1910 </option> 1922 </option>
1911 </alert> 1923 </alert>
1912 <alert modal="true" name="CannotDeedLandWaitingForServer"> 1924 <alert modal="true" name="CannotDeedLandWaitingForServer">
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml b/linden/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml
index d16c22c..a3e2bba 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml
@@ -6,9 +6,9 @@
6 <menu_item_call enabled="true" label="Groups..." name="Groups..."> 6 <menu_item_call enabled="true" label="Groups..." name="Groups...">
7 <on_click function="ShowAgentGroups" userdata="agent" /> 7 <on_click function="ShowAgentGroups" userdata="agent" />
8 </menu_item_call> 8 </menu_item_call>
9 <menu_item_call enabled="false" label="Touch" mouse_opaque="true" name="Object Touch"> 9 <menu_item_call enabled="false" label="Touch" mouse_opaque="true" name="Attachment Touch">
10 <on_click function="Object.Touch" /> 10 <on_click function="Object.Touch" />
11 <on_enable function="Object.EnableTouch" userdata="Touch" /> 11 <on_enable function="Attachment.EnableTouch" userdata="Touch" />
12 </menu_item_call> 12 </menu_item_call>
13 <menu_item_call enabled="true" label="Stand Up" name="Stand Up"> 13 <menu_item_call enabled="true" label="Stand Up" name="Stand Up">
14 <on_click function="Self.StandUp" userdata="" /> 14 <on_click function="Self.StandUp" userdata="" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_media_controls.xml b/linden/indra/newview/skins/default/xui/en-us/panel_media_controls.xml
index 1fead04..7e4f12a 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_media_controls.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_media_controls.xml
@@ -1,98 +1,90 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel bg_visible="false" border="false" border_visible="false" bottom="1" 2<panel bg_visible="false" border="false" border_visible="false" bottom="1"
3 enabled="true" follows="right|bottom" height="20" left="0" 3 enabled="true" follows="right|bottom" height="20" left="0"
4 name="media_controls" width="262"> 4 name="media_controls" width="262">
5 <icon bottom="-22" enabled="true" follows="left|top" height="22" 5 <icon bottom="-22" enabled="true" follows="left|top" height="22"
6 image_name="icn_label_music.tga" label="" left_delta="2" mouse_opaque="true" 6 image_name="icn_label_music.tga" label="" left_delta="2" mouse_opaque="true"
7 name="music_icon" scale_image="true" tool_tip="Play/pause streaming music" 7 name="music_icon" scale_image="true" tool_tip="Play streaming music"
8 width="20" /> 8 width="20" />
9 <button bottom="-21" enabled="true" follows="left|top" height="20" 9 <button bottom="-21" enabled="true" follows="left|top" height="20"
10 image_overlay="icn_play.tga" 10 image_overlay="icn_play.tga"
11 image_unselected="flyout_btn_left.tga" 11 image_unselected="flyout_btn_left.tga"
12 image_selected="flyout_btn_left_selected.tga" 12 image_selected="flyout_btn_left_selected.tga"
13 image_disabled="flyout_btn_left_disabled.tga" 13 image_disabled="flyout_btn_left_disabled.tga"
14 label="" left_delta="20" 14 label="" left_delta="20"
15 mouse_opaque="true" name="music_play" scale_image="true" toggle="false" 15 mouse_opaque="true" name="music_play" scale_image="true" toggle="false"
16 tool_tip="Play/pause streaming music" width="20" /> 16 tool_tip="Play streaming music" width="20" />
17 <button bottom="-21" enabled="false" follows="left|top" height="20" 17 <button bottom="-21" enabled="true" follows="left|top" height="20"
18 image_overlay="icn_pause.tga" 18 image_overlay="icn_stop.tga"
19 image_unselected="flyout_btn_left.tga" 19 image_unselected="flyout_btn_right.tga"
20 image_selected="flyout_btn_left_selected.tga" 20 image_selected="flyout_btn_right_selected.tga"
21 image_disabled="flyout_btn_left_disabled.tga" 21 image_disabled="flyout_btn_right_disabled.tga"
22 label="" left_delta="0" 22 label="" left_delta="20"
23 mouse_opaque="true" name="music_pause" scale_image="true" toggle="false" 23 mouse_opaque="true" name="music_stop" scale_image="true" toggle="false"
24 tool_tip="Pause streaming music" width="20" /> 24 tool_tip="Stop streaming music" width="20" />
25 <button bottom="-21" enabled="true" follows="left|top" height="20" 25 <icon bottom="-22" enabled="true" follows="left|top" height="22"
26 image_overlay="icn_stop.tga" 26 image_name="icn_label_media.tga"
27 image_unselected="flyout_btn_right.tga" 27 label="" left_delta="23" mouse_opaque="true"
28 image_selected="flyout_btn_right_selected.tga" 28 name="media_icon" scale_image="true" tool_tip="Play/pause streaming media"
29 image_disabled="flyout_btn_right_disabled.tga" 29 width="20" />
30 label="" left_delta="20" 30 <button bottom="-21" enabled="true" follows="left|top" height="20"
31 mouse_opaque="true" name="music_stop" scale_image="true" toggle="false" 31 image_overlay="icn_play.tga"
32 tool_tip="Stop streaming music" width="20" /> 32 image_unselected="flyout_btn_left.tga"
33 <icon bottom="-22" enabled="true" follows="left|top" height="22" 33 image_selected="flyout_btn_left_selected.tga"
34 image_name="icn_label_media.tga" 34 image_disabled="flyout_btn_left_disabled.tga"
35 label="" left_delta="23" mouse_opaque="true" 35 label="" left_delta="21"
36 name="media_icon" scale_image="true" tool_tip="Play/pause streaming music" 36 mouse_opaque="true" name="media_play" scale_image="true" toggle="false"
37 width="20" /> 37 tool_tip="Play/pause streaming music" width="20" />
38 <button bottom="-21" enabled="true" follows="left|top" height="20" 38 <button bottom="-21" enabled="false" follows="left|top" height="20"
39 image_overlay="icn_play.tga" 39 image_overlay="icn_pause.tga"
40 image_unselected="flyout_btn_left.tga" 40 image_unselected="flyout_btn_left.tga"
41 image_selected="flyout_btn_left_selected.tga" 41 image_selected="flyout_btn_left_selected.tga"
42 image_disabled="flyout_btn_left_disabled.tga" 42 image_disabled="flyout_btn_left_disabled.tga"
43 label="" left_delta="21" 43 label="" left_delta="0"
44 mouse_opaque="true" name="media_play" scale_image="true" toggle="false" 44 mouse_opaque="true" name="media_pause" scale_image="true" toggle="false"
45 tool_tip="Play/pause streaming music" width="20" /> 45 tool_tip="Pause streaming media" width="20" />
46 <button bottom="-21" enabled="false" follows="left|top" height="20" 46 <button bottom="-21" enabled="true" follows="left|top" height="20"
47 image_overlay="icn_pause.tga" 47 image_overlay="icn_stop.tga"
48 image_unselected="flyout_btn_left.tga" 48 image_unselected="flyout_btn_right.tga"
49 image_selected="flyout_btn_left_selected.tga" 49 image_selected="flyout_btn_right_selected.tga"
50 image_disabled="flyout_btn_left_disabled.tga" 50 image_disabled="flyout_btn_right_disabled.tga"
51 label="" left_delta="0" 51 label="" left_delta="20"
52 mouse_opaque="true" name="media_pause" scale_image="true" toggle="false" 52 mouse_opaque="true" name="media_stop" scale_image="true" toggle="false"
53 tool_tip="Pause streaming media" width="20" /> 53 tool_tip="Stop streaming media" width="20" />
54 <button bottom="-21" enabled="true" follows="left|top" height="20" 54 <volume_slider bottom="-23" control_name="AudioLevelMaster" height="22" increment="0.05"
55 image_overlay="icn_stop.tga" 55 initial_val="0.5" left_delta="15" max_val="1" min_val="0"
56 image_unselected="flyout_btn_right.tga" 56 mouse_opaque="true" name="volume_slider" tool_tip="Master Volume"
57 image_selected="flyout_btn_right_selected.tga" 57 width="56" />
58 image_disabled="flyout_btn_right_disabled.tga" 58 <button bottom="-19" control_name="MuteAudio" height="20"
59 label="" left_delta="20" 59 image_selected="icn_speaker-muted_dark.tga"
60 mouse_opaque="true" name="media_stop" scale_image="true" toggle="false" 60 image_unselected="icn_speaker_dark.tga" label="" left_delta="56"
61 tool_tip="Stop streaming media" width="20" /> 61 name="mute_master" toggle="true" tool_tip="Master Mute" width="24" />
62 <volume_slider bottom="-23" control_name="AudioLevelMaster" height="22" increment="0.05" 62 <button bottom="-22" control_name="ShowVolumeSettingsPopup" height="22" label=""
63 initial_val="0.5" left_delta="15" max_val="1" min_val="0" 63 left_delta="19" name="expand" scale_image="true" toggle="true"
64 mouse_opaque="true" name="volume_slider" tool_tip="Master Volume" 64 tool_tip="Adjust individual volume levels" width="22" />
65 width="56" /> 65
66 <button bottom="-19" control_name="MuteAudio" height="20" 66 <string name="play_label">
67 image_selected="icn_speaker-muted_dark.tga" 67 Play
68 image_unselected="icn_speaker_dark.tga" label="" left_delta="56" 68 </string>
69 name="mute_master" toggle="true" tool_tip="Master Mute" width="24" /> 69 <string name="stop_label">
70 <button bottom="-22" control_name="ShowVolumeSettingsPopup" height="22" label="" 70 Stop
71 left_delta="19" name="expand" scale_image="true" toggle="true" 71 </string>
72 tool_tip="Adjust individual volume levels" width="22" /> 72 <string name="pause_label">
73 73 Pause
74 <string name="play_label"> 74 </string>
75 Play 75 <string name="default_tooltip_label">
76 </string> 76 No Media Specified
77 <string name="stop_label"> 77 </string>
78 Stop 78 <string name="media_hidden_label">
79 </string> 79 (URL hidden by parcel owner)
80 <string name="pause_label"> 80 </string>
81 Pause 81 <string name="media_icon_tooltip_web">
82 </string> 82 This location displays content from the World Wide Web. Click the Play button to display Web content.
83 <string name="default_tooltip_label"> 83 </string>
84 No Media Specified 84 <string name="media_icon_tooltip_movie">
85 </string> 85 This location displays Video content. Click the Play button to play the video.
86 <string name="media_hidden_label"> 86 </string>
87 (URL hidden by parcel owner) 87 <string name="media_play_tooltip">
88 </string> 88 Display Web content at this location.
89 <string name="media_icon_tooltip_web"> 89 </string>
90 This location displays content from the World Wide Web. Click the Play button to display Web content. 90</panel>
91 </string>
92 <string name="media_icon_tooltip_movie">
93 This location displays Video content. Click the Play button to play the video.
94 </string>
95 <string name="media_play_tooltip">
96 Display Web content at this location.
97 </string>
98</panel>
diff --git a/linden/install.xml b/linden/install.xml
index 4e66880..7527eec 100644
--- a/linden/install.xml
+++ b/linden/install.xml
@@ -393,7 +393,7 @@
393 <key>windows</key> 393 <key>windows</key>
394 <map> 394 <map>
395 <key>md5sum</key> 395 <key>md5sum</key>
396 <string>B6B8B7A2CEB038C31BAD0EE4A1FBDF41</string> 396 <string>d5bfaa397dfbfc893603ad047c57604d</string>
397 <key>url</key> 397 <key>url</key>
398 <uri>http://imprudence.s3.amazonaws.com/extras/glib-2.18.3.1-windows-01262009.tar.bz2</uri> 398 <uri>http://imprudence.s3.amazonaws.com/extras/glib-2.18.3.1-windows-01262009.tar.bz2</uri>
399 </map> 399 </map>
@@ -430,7 +430,7 @@
430 <key>windows</key> 430 <key>windows</key>
431 <map> 431 <map>
432 <key>md5sum</key> 432 <key>md5sum</key>
433 <string>F4005971943595712212C4E0B9418DB5</string> 433 <string>0fd4d4a96efaf8b47d6cc74e7a927800</string>
434 <key>url</key> 434 <key>url</key>
435 <uri>http://imprudence.s3.amazonaws.com/extras/gstreamer-0.10.21-windows-01262009.tar.bz2</uri> 435 <uri>http://imprudence.s3.amazonaws.com/extras/gstreamer-0.10.21-windows-01262009.tar.bz2</uri>
436 </map> 436 </map>
@@ -445,9 +445,9 @@
445 <key>windows</key> 445 <key>windows</key>
446 <map> 446 <map>
447 <key>md5sum</key> 447 <key>md5sum</key>
448 <string>51C077A953620D9E55AFCAB0FEAE56FC</string> 448 <string>d69f66f4698c5608c86d1a108e3a2d1f</string>
449 <key>url</key> 449 <key>url</key>
450 <uri>http://imprudence.s3.amazonaws.com/extras/gstreamer-plugins-windows-01262009.tar.bz2</uri> 450 <uri>http://imprudence.s3.amazonaws.com/extras/gstreamer-plugins-windows-01312009.tar.bz2</uri>
451 </map> 451 </map>
452 </map> 452 </map>
453 </map> 453 </map>
@@ -519,7 +519,7 @@
519 <key>windows</key> 519 <key>windows</key>
520 <map> 520 <map>
521 <key>md5sum</key> 521 <key>md5sum</key>
522 <string>F20BDA1058BFD3AF7AC2C23EB3FD7F12</string> 522 <string>055ff15814c5f5cc09b0a9891ca7c90a</string>
523 <key>url</key> 523 <key>url</key>
524 <uri>http://imprudence.s3.amazonaws.com/extras/iconv-1.9.2-windows-01262009.tar.bz2</uri> 524 <uri>http://imprudence.s3.amazonaws.com/extras/iconv-1.9.2-windows-01262009.tar.bz2</uri>
525 </map> 525 </map>
@@ -679,7 +679,7 @@ anguage Infrstructure (CLI) international standard</string>
679 <key>windows</key> 679 <key>windows</key>
680 <map> 680 <map>
681 <key>md5sum</key> 681 <key>md5sum</key>
682 <string>E8DACED68B2165918B82C771D3480AA2</string> 682 <string>d96f950a877836b644f5bd047eb52151</string>
683 <key>url</key> 683 <key>url</key>
684 <uri>http://imprudence.s3.amazonaws.com/extras/libxml2-2.7.2-windows-01262009.tar.bz2</uri> 684 <uri>http://imprudence.s3.amazonaws.com/extras/libxml2-2.7.2-windows-01262009.tar.bz2</uri>
685 </map> 685 </map>
@@ -855,7 +855,7 @@ anguage Infrstructure (CLI) international standard</string>
855 <key>windows</key> 855 <key>windows</key>
856 <map> 856 <map>
857 <key>md5sum</key> 857 <key>md5sum</key>
858 <string>80C8AA77BDE113635FEABCD0E342F3C0</string> 858 <string>7c33758dc0a047c244de03133dd76c2a</string>
859 <key>url</key> 859 <key>url</key>
860 <uri>http://imprudence.s3.amazonaws.com/extras/openal-soft-1.6.372-windows-01262009.tar.bz2</uri> 860 <uri>http://imprudence.s3.amazonaws.com/extras/openal-soft-1.6.372-windows-01262009.tar.bz2</uri>
861 </map> 861 </map>