diff options
Diffstat (limited to '')
24 files changed, 253 insertions, 123 deletions
diff --git a/linden/indra/cmake/CopyWinLibs.cmake b/linden/indra/cmake/CopyWinLibs.cmake index e80f0c3..458b016 100644 --- a/linden/indra/cmake/CopyWinLibs.cmake +++ b/linden/indra/cmake/CopyWinLibs.cmake | |||
@@ -9,14 +9,14 @@ include(CMakeCopyIfDifferent) | |||
9 | set(gst_plugin_release_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release/lib/gstreamer-plugins") | 9 | set(gst_plugin_release_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release/lib/gstreamer-plugins") |
10 | set(gst_plugin_release_files | 10 | set(gst_plugin_release_files |
11 | libdshowsrcwrapper.dll | 11 | libdshowsrcwrapper.dll |
12 | libfsselector.dll | 12 | libgsta52.dll |
13 | libfsvalve.dll | ||
14 | libgstacmenc.dll | 13 | libgstacmenc.dll |
15 | libgstadder.dll | 14 | libgstadder.dll |
16 | libgstalaw.dll | 15 | libgstalaw.dll |
17 | libgstalpha.dll | 16 | libgstalpha.dll |
18 | libgstalphacolor.dll | 17 | libgstalphacolor.dll |
19 | libgstapp.dll | 18 | libgstapp.dll |
19 | libgstasfdemux.dll | ||
20 | libgstaudiochunk.dll | 20 | libgstaudiochunk.dll |
21 | libgstaudioconvert.dll | 21 | libgstaudioconvert.dll |
22 | libgstaudiofx.dll | 22 | libgstaudiofx.dll |
@@ -27,41 +27,44 @@ set(gst_plugin_release_files | |||
27 | libgstavi.dll | 27 | libgstavi.dll |
28 | libgstcoreelements.dll | 28 | libgstcoreelements.dll |
29 | libgstcutter.dll | 29 | libgstcutter.dll |
30 | libgstdecodebin2.dll | ||
31 | libgstdecodebin.dll | 30 | libgstdecodebin.dll |
31 | libgstdecodebin2.dll | ||
32 | libgstdirectdraw.dll | 32 | libgstdirectdraw.dll |
33 | libgstdirectsound.dll | 33 | libgstdirectsound.dll |
34 | libgstdshowdecwrapper.dll | 34 | libgstdshowdecwrapper.dll |
35 | libgstdshowsrcwrapper.dll | 35 | libgstdshowsrcwrapper.dll |
36 | libgstdshowvideosink.dll | 36 | libgstdshowvideosink.dll |
37 | libgstdtmf.dll | 37 | libgstfaad.dll |
38 | libgstffmpeg.dll | 38 | libgstffmpeg.dll |
39 | libgstffmpegcolorspace.dll | 39 | libgstffmpegcolorspace.dll |
40 | libgstflv.dll | 40 | libgstflv.dll |
41 | libgstgamma.dll | ||
41 | libgstgdp.dll | 42 | libgstgdp.dll |
42 | libgsth264parse.dll | 43 | libgsth264parse.dll |
43 | libgsticydemux.dll | 44 | libgsticydemux.dll |
44 | libgstid3demux.dll | 45 | libgstid3demux.dll |
45 | libgstjpeg.dll | 46 | libgstjpeg.dll |
46 | libgstlevel.dll | 47 | libgstlevel.dll |
47 | libgstmad.dll | ||
48 | libgstmms.dll | 48 | libgstmms.dll |
49 | libgstmpeg2dec.dll | 49 | libgstmpeg2dec.dll |
50 | libgstmpeg4videoparse.dll | ||
50 | libgstmpegaudioparse.dll | 51 | libgstmpegaudioparse.dll |
51 | libgstmpegstream.dll | 52 | libgstmpegstream.dll |
52 | libgstmpegvideoparse.dll | 53 | libgstmpegvideoparse.dll |
53 | libgstmscodecs.dll | ||
54 | libgstmulaw.dll | 54 | libgstmulaw.dll |
55 | libgstmultipart.dll | 55 | libgstmultipart.dll |
56 | libgstneon.dll | 56 | libgstneon.dll |
57 | libgstogg.dll | 57 | libgstogg.dll |
58 | libgstpcapparse.dll | ||
58 | libgstplaybin.dll | 59 | libgstplaybin.dll |
59 | libgstpng.dll | 60 | libgstpng.dll |
60 | libgstqtdemux.dll | 61 | libgstqtdemux.dll |
61 | libgstqueue2.dll | 62 | libgstqueue2.dll |
63 | libgstreal.dll | ||
64 | libgstrealmedia.dll | ||
62 | libgstrtp.dll | 65 | libgstrtp.dll |
63 | libgstrtpmanager.dll | 66 | libgstrtpmanager.dll |
64 | libgstrtpmuxer.dll | 67 | libgstrtpmuxer.dll |
65 | libgstrtsp.dll | 68 | libgstrtsp.dll |
66 | libgstsmpte.dll | 69 | libgstsmpte.dll |
67 | libgsttheora.dll | 70 | libgsttheora.dll |
@@ -74,13 +77,12 @@ set(gst_plugin_release_files | |||
74 | libgstvideorate.dll | 77 | libgstvideorate.dll |
75 | libgstvideoscale.dll | 78 | libgstvideoscale.dll |
76 | libgstvideosignal.dll | 79 | libgstvideosignal.dll |
77 | libgstvideotestsrc.dll | ||
78 | libgstvolume.dll | ||
79 | libgstvolume.dll | 80 | libgstvolume.dll |
80 | libgstvorbis.dll | 81 | libgstvorbis.dll |
81 | libgstwasapi.dll | 82 | libgstwasapi.dll |
82 | libgstwavparse.dll | 83 | libgstwavparse.dll |
83 | libgstwininet.dll | 84 | libgstwininet.dll |
85 | libgstwinks.dll | ||
84 | libgstx264.dll | 86 | libgstx264.dll |
85 | libgstxvid.dll | 87 | libgstxvid.dll |
86 | ) | 88 | ) |
@@ -96,14 +98,14 @@ set(all_targets ${all_targets} ${out_targets}) | |||
96 | set(gst_plugin_debug_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug/lib/gstreamer-plugins") | 98 | set(gst_plugin_debug_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug/lib/gstreamer-plugins") |
97 | set(gst_plugin_debug_files | 99 | set(gst_plugin_debug_files |
98 | libdshowsrcwrapper.dll | 100 | libdshowsrcwrapper.dll |
99 | libfsselector.dll | 101 | libgsta52.dll |
100 | libfsvalve.dll | ||
101 | libgstacmenc.dll | 102 | libgstacmenc.dll |
102 | libgstadder.dll | 103 | libgstadder.dll |
103 | libgstalaw.dll | 104 | libgstalaw.dll |
104 | libgstalpha.dll | 105 | libgstalpha.dll |
105 | libgstalphacolor.dll | 106 | libgstalphacolor.dll |
106 | libgstapp.dll | 107 | libgstapp.dll |
108 | libgstasfdemux.dll | ||
107 | libgstaudiochunk.dll | 109 | libgstaudiochunk.dll |
108 | libgstaudioconvert.dll | 110 | libgstaudioconvert.dll |
109 | libgstaudiofx.dll | 111 | libgstaudiofx.dll |
@@ -114,41 +116,44 @@ set(gst_plugin_debug_files | |||
114 | libgstavi.dll | 116 | libgstavi.dll |
115 | libgstcoreelements.dll | 117 | libgstcoreelements.dll |
116 | libgstcutter.dll | 118 | libgstcutter.dll |
117 | libgstdecodebin2.dll | ||
118 | libgstdecodebin.dll | 119 | libgstdecodebin.dll |
120 | libgstdecodebin2.dll | ||
119 | libgstdirectdraw.dll | 121 | libgstdirectdraw.dll |
120 | libgstdirectsound.dll | 122 | libgstdirectsound.dll |
121 | libgstdshowdecwrapper.dll | 123 | libgstdshowdecwrapper.dll |
122 | libgstdshowsrcwrapper.dll | 124 | libgstdshowsrcwrapper.dll |
123 | libgstdshowvideosink.dll | 125 | libgstdshowvideosink.dll |
124 | libgstdtmf.dll | 126 | libgstfaad.dll |
125 | libgstffmpeg.dll | 127 | libgstffmpeg.dll |
126 | libgstffmpegcolorspace.dll | 128 | libgstffmpegcolorspace.dll |
127 | libgstflv.dll | 129 | libgstflv.dll |
130 | libgstgamma.dll | ||
128 | libgstgdp.dll | 131 | libgstgdp.dll |
129 | libgsth264parse.dll | 132 | libgsth264parse.dll |
130 | libgsticydemux.dll | 133 | libgsticydemux.dll |
131 | libgstid3demux.dll | 134 | libgstid3demux.dll |
132 | libgstjpeg.dll | 135 | libgstjpeg.dll |
133 | libgstlevel.dll | 136 | libgstlevel.dll |
134 | libgstmad.dll | ||
135 | libgstmms.dll | 137 | libgstmms.dll |
136 | libgstmpeg2dec.dll | 138 | libgstmpeg2dec.dll |
139 | libgstmpeg4videoparse.dll | ||
137 | libgstmpegaudioparse.dll | 140 | libgstmpegaudioparse.dll |
138 | libgstmpegstream.dll | 141 | libgstmpegstream.dll |
139 | libgstmpegvideoparse.dll | 142 | libgstmpegvideoparse.dll |
140 | libgstmscodecs.dll | ||
141 | libgstmulaw.dll | 143 | libgstmulaw.dll |
142 | libgstmultipart.dll | 144 | libgstmultipart.dll |
143 | libgstneon.dll | 145 | libgstneon.dll |
144 | libgstogg.dll | 146 | libgstogg.dll |
147 | libgstpcapparse.dll | ||
145 | libgstplaybin.dll | 148 | libgstplaybin.dll |
146 | libgstpng.dll | 149 | libgstpng.dll |
147 | libgstqtdemux.dll | 150 | libgstqtdemux.dll |
148 | libgstqueue2.dll | 151 | libgstqueue2.dll |
152 | libgstreal.dll | ||
153 | libgstrealmedia.dll | ||
149 | libgstrtp.dll | 154 | libgstrtp.dll |
150 | libgstrtpmanager.dll | 155 | libgstrtpmanager.dll |
151 | libgstrtpmuxer.dll | 156 | libgstrtpmuxer.dll |
152 | libgstrtsp.dll | 157 | libgstrtsp.dll |
153 | libgstsmpte.dll | 158 | libgstsmpte.dll |
154 | libgsttheora.dll | 159 | libgsttheora.dll |
@@ -161,13 +166,12 @@ set(gst_plugin_debug_files | |||
161 | libgstvideorate.dll | 166 | libgstvideorate.dll |
162 | libgstvideoscale.dll | 167 | libgstvideoscale.dll |
163 | libgstvideosignal.dll | 168 | libgstvideosignal.dll |
164 | libgstvideotestsrc.dll | ||
165 | libgstvolume.dll | ||
166 | libgstvolume.dll | 169 | libgstvolume.dll |
167 | libgstvorbis.dll | 170 | libgstvorbis.dll |
168 | libgstwasapi.dll | 171 | libgstwasapi.dll |
169 | libgstwavparse.dll | 172 | libgstwavparse.dll |
170 | libgstwininet.dll | 173 | libgstwininet.dll |
174 | libgstwinks.dll | ||
171 | libgstx264.dll | 175 | libgstx264.dll |
172 | libgstxvid.dll | 176 | libgstxvid.dll |
173 | ) | 177 | ) |
@@ -220,6 +224,7 @@ set(debug_files | |||
220 | avformat-52.dll | 224 | avformat-52.dll |
221 | avutil-49.dll | 225 | avutil-49.dll |
222 | intl.dll | 226 | intl.dll |
227 | libfaacdrm.dll | ||
223 | libgstapp-0.10.dll | 228 | libgstapp-0.10.dll |
224 | libgstaudio-0.10.dll | 229 | libgstaudio-0.10.dll |
225 | libgstbase-0.10.dll | 230 | libgstbase-0.10.dll |
@@ -243,10 +248,11 @@ set(debug_files | |||
243 | libmms.dll | 248 | libmms.dll |
244 | liboil-0.3-0.dll | 249 | liboil-0.3-0.dll |
245 | libpng13.dll | 250 | libpng13.dll |
246 | xvidcore.dll | 251 | libspeex.dll |
247 | zlib1.dll | ||
248 | ogg.dll | 252 | ogg.dll |
249 | vorbis.dll | 253 | vorbis.dll |
254 | xvidcore.dll | ||
255 | zlib1.dll | ||
250 | ) | 256 | ) |
251 | 257 | ||
252 | copy_if_different( | 258 | copy_if_different( |
@@ -294,6 +300,7 @@ set(release_files | |||
294 | avformat-52.dll | 300 | avformat-52.dll |
295 | avutil-49.dll | 301 | avutil-49.dll |
296 | intl.dll | 302 | intl.dll |
303 | libfaacdrm.dll | ||
297 | libgstapp-0.10.dll | 304 | libgstapp-0.10.dll |
298 | libgstaudio-0.10.dll | 305 | libgstaudio-0.10.dll |
299 | libgstbase-0.10.dll | 306 | libgstbase-0.10.dll |
@@ -317,10 +324,11 @@ set(release_files | |||
317 | libmms.dll | 324 | libmms.dll |
318 | liboil-0.3-0.dll | 325 | liboil-0.3-0.dll |
319 | libpng13.dll | 326 | libpng13.dll |
320 | xvidcore.dll | 327 | libspeex.dll |
321 | zlib1.dll | ||
322 | ogg.dll | 328 | ogg.dll |
323 | vorbis.dll | 329 | vorbis.dll |
330 | xvidcore.dll | ||
331 | zlib1.dll | ||
324 | ) | 332 | ) |
325 | 333 | ||
326 | copy_if_different( | 334 | copy_if_different( |
diff --git a/linden/indra/llaudio/audioengine.cpp b/linden/indra/llaudio/audioengine.cpp index da9bcba..7bb65e9 100644 --- a/linden/indra/llaudio/audioengine.cpp +++ b/linden/indra/llaudio/audioengine.cpp | |||
@@ -45,6 +45,8 @@ | |||
45 | #include "llassetstorage.h" | 45 | #include "llassetstorage.h" |
46 | 46 | ||
47 | #include "llmediamanager.h" | 47 | #include "llmediamanager.h" |
48 | #include "llmediabase.h" | ||
49 | #include "llmediaimplcommon.h" | ||
48 | 50 | ||
49 | // necessary for grabbing sounds from sim (implemented in viewer) | 51 | // necessary for grabbing sounds from sim (implemented in viewer) |
50 | extern void request_sound(const LLUUID &sound_guid); | 52 | extern void request_sound(const LLUUID &sound_guid); |
@@ -101,6 +103,8 @@ void LLAudioEngine::setDefaults() | |||
101 | 103 | ||
102 | for (U32 i = 0; i < LLAudioEngine::AUDIO_TYPE_COUNT; i++) | 104 | for (U32 i = 0; i < LLAudioEngine::AUDIO_TYPE_COUNT; i++) |
103 | mSecondaryGain[i] = 1.0f; | 105 | mSecondaryGain[i] = 1.0f; |
106 | |||
107 | mStatus = LLMediaBase::STATUS_UNKNOWN; | ||
104 | } | 108 | } |
105 | 109 | ||
106 | 110 | ||
@@ -168,6 +172,14 @@ void LLAudioEngine::shutdown() | |||
168 | } | 172 | } |
169 | 173 | ||
170 | 174 | ||
175 | //////////////////////////////////////////////////////////////////////////////// | ||
176 | // virtual (derives from LLMediaBase) | ||
177 | LLMediaBase::EStatus LLAudioEngine::getStatus() | ||
178 | { | ||
179 | return mStatus; | ||
180 | } | ||
181 | |||
182 | |||
171 | // virtual | 183 | // virtual |
172 | void LLAudioEngine::startInternetStream(const std::string& url) | 184 | void LLAudioEngine::startInternetStream(const std::string& url) |
173 | { | 185 | { |
@@ -179,27 +191,40 @@ void LLAudioEngine::startInternetStream(const std::string& url) | |||
179 | if (mgr) | 191 | if (mgr) |
180 | { | 192 | { |
181 | mInternetStreamMedia = mgr->createSourceFromMimeType(LLURI(url).scheme(), "audio/mpeg"); // assumes that whatever media implementation supports mp3 also supports vorbis. | 193 | mInternetStreamMedia = mgr->createSourceFromMimeType(LLURI(url).scheme(), "audio/mpeg"); // assumes that whatever media implementation supports mp3 also supports vorbis. |
182 | LL_INFOS("AudioEngine") << "mInternetStreamMedia is now " << mInternetStreamMedia << llendl; | 194 | //LL_INFOS("AudioEngine") << "mInternetStreamMedia is now " << mInternetStreamMedia << llendl; |
183 | } | 195 | } |
184 | } | 196 | } |
185 | 197 | ||
186 | if(!mInternetStreamMedia) | 198 | if(!mInternetStreamMedia) |
187 | return; | 199 | return; |
200 | |||
201 | // Check for a dead stream, just in case | ||
202 | if(getStatus() == LLMediaBase::STATUS_DEAD) | ||
203 | { | ||
204 | LL_INFOS("AudioEngine") << "don't play dead stream urls"<< llendl; | ||
205 | mInternetStreamURL.clear(); | ||
206 | mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_STOP); | ||
207 | mInternetStreamMedia->updateMedia(); | ||
208 | stopInternetStream(); | ||
209 | return; | ||
210 | } | ||
188 | 211 | ||
189 | if (!url.empty()) { | 212 | if (!url.empty()) |
213 | { | ||
190 | LL_INFOS("AudioEngine") << "Starting internet stream: " << url << llendl; | 214 | LL_INFOS("AudioEngine") << "Starting internet stream: " << url << llendl; |
191 | mInternetStreamURL = url; | 215 | mInternetStreamURL = url; |
192 | mInternetStreamMedia->navigateTo ( url ); | 216 | mInternetStreamMedia->navigateTo ( url ); |
193 | LL_INFOS("AudioEngine") << "Playing....." << llendl; | 217 | LL_INFOS("AudioEngine") << "Playing....." << llendl; |
194 | mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_START); | 218 | mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_START); |
195 | mInternetStreamMedia->updateMedia(); | 219 | mInternetStreamMedia->updateMedia(); |
196 | } else { | 220 | } |
221 | else | ||
222 | { | ||
197 | LL_INFOS("AudioEngine") << "setting stream to NULL"<< llendl; | 223 | LL_INFOS("AudioEngine") << "setting stream to NULL"<< llendl; |
198 | mInternetStreamURL.clear(); | 224 | mInternetStreamURL.clear(); |
199 | mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_STOP); | 225 | mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_STOP); |
200 | mInternetStreamMedia->updateMedia(); | 226 | mInternetStreamMedia->updateMedia(); |
201 | } | 227 | } |
202 | //#endif | ||
203 | } | 228 | } |
204 | 229 | ||
205 | // virtual | 230 | // virtual |
@@ -207,9 +232,10 @@ void LLAudioEngine::stopInternetStream() | |||
207 | { | 232 | { |
208 | LL_INFOS("AudioEngine") << "entered stopInternetStream()" << llendl; | 233 | LL_INFOS("AudioEngine") << "entered stopInternetStream()" << llendl; |
209 | 234 | ||
210 | if(mInternetStreamMedia) | 235 | if(mInternetStreamMedia) |
211 | { | 236 | { |
212 | if( ! mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_STOP)){ | 237 | if(!mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_STOP)) |
238 | { | ||
213 | LL_INFOS("AudioEngine") << "attempting to stop stream failed!" << llendl; | 239 | LL_INFOS("AudioEngine") << "attempting to stop stream failed!" << llendl; |
214 | } | 240 | } |
215 | mInternetStreamMedia->updateMedia(); | 241 | mInternetStreamMedia->updateMedia(); |
@@ -219,29 +245,6 @@ void LLAudioEngine::stopInternetStream() | |||
219 | } | 245 | } |
220 | 246 | ||
221 | // virtual | 247 | // virtual |
222 | void LLAudioEngine::pauseInternetStream(int pause) | ||
223 | { | ||
224 | LL_INFOS("AudioEngine") << "entered pauseInternetStream()" << llendl; | ||
225 | |||
226 | if(!mInternetStreamMedia) | ||
227 | return; | ||
228 | |||
229 | if(pause) | ||
230 | { | ||
231 | if(! mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_PAUSE)) | ||
232 | { | ||
233 | LL_INFOS("AudioEngine") << "attempting to pause stream failed!" << llendl; | ||
234 | } | ||
235 | } else { | ||
236 | if(! mInternetStreamMedia->addCommand(LLMediaBase::COMMAND_START)) | ||
237 | { | ||
238 | LL_INFOS("AudioEngine") << "attempting to unpause stream failed!" << llendl; | ||
239 | } | ||
240 | } | ||
241 | mInternetStreamMedia->updateMedia(); | ||
242 | } | ||
243 | |||
244 | // virtual | ||
245 | void LLAudioEngine::updateInternetStream() | 248 | void LLAudioEngine::updateInternetStream() |
246 | { | 249 | { |
247 | if (mInternetStreamMedia) | 250 | if (mInternetStreamMedia) |
@@ -259,11 +262,6 @@ int LLAudioEngine::isInternetStreamPlaying() | |||
259 | return 1; // Active and playing | 262 | return 1; // Active and playing |
260 | } | 263 | } |
261 | 264 | ||
262 | if (mInternetStreamMedia->getStatus() == LLMediaBase::STATUS_PAUSED) | ||
263 | { | ||
264 | return 2; // paused | ||
265 | } | ||
266 | |||
267 | return 0; // Stopped | 265 | return 0; // Stopped |
268 | } | 266 | } |
269 | 267 | ||
diff --git a/linden/indra/llaudio/audioengine.h b/linden/indra/llaudio/audioengine.h index 15cb35f..878a96a 100644 --- a/linden/indra/llaudio/audioengine.h +++ b/linden/indra/llaudio/audioengine.h | |||
@@ -45,6 +45,8 @@ | |||
45 | #include "llframetimer.h" | 45 | #include "llframetimer.h" |
46 | #include "llassettype.h" | 46 | #include "llassettype.h" |
47 | 47 | ||
48 | #include "llmediabase.h" | ||
49 | |||
48 | class LLMediaBase; | 50 | class LLMediaBase; |
49 | 51 | ||
50 | const F32 LL_WIND_UPDATE_INTERVAL = 0.1f; | 52 | const F32 LL_WIND_UPDATE_INTERVAL = 0.1f; |
@@ -153,13 +155,13 @@ public: | |||
153 | // Internet stream methods | 155 | // Internet stream methods |
154 | virtual void startInternetStream(const std::string& url); | 156 | virtual void startInternetStream(const std::string& url); |
155 | virtual void stopInternetStream(); | 157 | virtual void stopInternetStream(); |
156 | virtual void pauseInternetStream(int pause); | ||
157 | virtual void updateInternetStream(); | 158 | virtual void updateInternetStream(); |
158 | virtual int isInternetStreamPlaying(); | 159 | virtual int isInternetStreamPlaying(); |
159 | virtual void getInternetStreamInfo(char* artist, char* title); | 160 | virtual void getInternetStreamInfo(char* artist, char* title); |
160 | // use a value from 0.0 to 1.0, inclusive | 161 | // use a value from 0.0 to 1.0, inclusive |
161 | virtual void setInternetStreamGain(F32 vol); | 162 | virtual void setInternetStreamGain(F32 vol); |
162 | virtual const std::string& getInternetStreamURL(); | 163 | virtual const std::string& getInternetStreamURL(); |
164 | virtual LLMediaBase::EStatus getStatus(); | ||
163 | 165 | ||
164 | // For debugging usage | 166 | // For debugging usage |
165 | virtual LLVector3 getListenerPos(); | 167 | virtual LLVector3 getListenerPos(); |
@@ -246,6 +248,8 @@ protected: | |||
246 | 248 | ||
247 | LLFrameTimer mWindUpdateTimer; | 249 | LLFrameTimer mWindUpdateTimer; |
248 | 250 | ||
251 | LLMediaBase::EStatus mStatus; | ||
252 | |||
249 | private: | 253 | private: |
250 | void setDefaults(); | 254 | void setDefaults(); |
251 | LLMediaBase *mInternetStreamMedia; | 255 | LLMediaBase *mInternetStreamMedia; |
diff --git a/linden/indra/llcommon/llsdserialize.cpp b/linden/indra/llcommon/llsdserialize.cpp index d42842d..f21ff68 100644 --- a/linden/indra/llcommon/llsdserialize.cpp +++ b/linden/indra/llcommon/llsdserialize.cpp | |||
@@ -324,7 +324,7 @@ S32 LLSDParser::parse(std::istream& istr, LLSD& data, S32 max_bytes) | |||
324 | S32 LLSDParser::parseLines(std::istream& istr, LLSD& data) | 324 | S32 LLSDParser::parseLines(std::istream& istr, LLSD& data) |
325 | { | 325 | { |
326 | mCheckLimits = false; | 326 | mCheckLimits = false; |
327 | mParseLines = false; // was true, Emergency fix DEV-17785 parsing newline failure | 327 | mParseLines = true; |
328 | return doParse(istr, data); | 328 | return doParse(istr, data); |
329 | } | 329 | } |
330 | 330 | ||
diff --git a/linden/indra/llcommon/llsdserialize_xml.cpp b/linden/indra/llcommon/llsdserialize_xml.cpp index 690ab67..9c3f85e 100644 --- a/linden/indra/llcommon/llsdserialize_xml.cpp +++ b/linden/indra/llcommon/llsdserialize_xml.cpp | |||
@@ -461,11 +461,11 @@ S32 LLSDXMLParser::Impl::parseLines(std::istream& input, LLSD& data) | |||
461 | input.clear(); | 461 | input.clear(); |
462 | } | 462 | } |
463 | 463 | ||
464 | // Don't parse the NULL at the end which might be added if \n was absorbed by getline() | 464 | // Re-insert with the \n that was absorbed by getline() |
465 | char * text = (char *) buffer; | 465 | char * text = (char *) buffer; |
466 | if ( text[num_read - 1] == 0) | 466 | if ( text[num_read - 1] == 0) |
467 | { | 467 | { |
468 | num_read--; | 468 | text[num_read - 1] = '\n'; |
469 | } | 469 | } |
470 | } | 470 | } |
471 | 471 | ||
@@ -808,12 +808,11 @@ void LLSDXMLParser::parsePart(const char *buf, int len) | |||
808 | // virtual | 808 | // virtual |
809 | S32 LLSDXMLParser::doParse(std::istream& input, LLSD& data) const | 809 | S32 LLSDXMLParser::doParse(std::istream& input, LLSD& data) const |
810 | { | 810 | { |
811 | // Remove code - emergency fix DEV-17785 parsing newline failure | 811 | if (mParseLines) |
812 | // if (mParseLines) | 812 | { |
813 | // { | ||
814 | // Use line-based reading (faster code) | 813 | // Use line-based reading (faster code) |
815 | // return impl.parseLines(input, data); | 814 | return impl.parseLines(input, data); |
816 | // } | 815 | } |
817 | 816 | ||
818 | return impl.parse(input, data); | 817 | return impl.parse(input, data); |
819 | } | 818 | } |
diff --git a/linden/indra/llmedia/llmediabase.h b/linden/indra/llmedia/llmediabase.h index dad02ca..b5b9420 100644 --- a/linden/indra/llmedia/llmediabase.h +++ b/linden/indra/llmedia/llmediabase.h | |||
@@ -153,7 +153,8 @@ class LLMediaBase | |||
153 | STATUS_STARTED = 3, | 153 | STATUS_STARTED = 3, |
154 | STATUS_STOPPED = 4, | 154 | STATUS_STOPPED = 4, |
155 | STATUS_PAUSED = 6, | 155 | STATUS_PAUSED = 6, |
156 | STATUS_RESETTING = 7 | 156 | STATUS_RESETTING = 7, |
157 | STATUS_DEAD = 8 | ||
157 | }; | 158 | }; |
158 | virtual bool addCommand( ECommand cmd ) = 0; | 159 | virtual bool addCommand( ECommand cmd ) = 0; |
159 | virtual bool clearCommand() = 0; | 160 | virtual bool clearCommand() = 0; |
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp index bae8ad9..af089bc 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.cpp +++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp | |||
@@ -36,6 +36,7 @@ | |||
36 | 36 | ||
37 | extern "C" { | 37 | extern "C" { |
38 | #include <gst/gst.h> | 38 | #include <gst/gst.h> |
39 | #include <gst/gstelement.h> | ||
39 | } | 40 | } |
40 | 41 | ||
41 | #include "llmediamanager.h" | 42 | #include "llmediamanager.h" |
@@ -72,7 +73,7 @@ LLMediaImplGStreamer () : | |||
72 | mPump ( NULL ), | 73 | mPump ( NULL ), |
73 | mPlaybin ( NULL ), | 74 | mPlaybin ( NULL ), |
74 | mVideoSink ( NULL ), | 75 | mVideoSink ( NULL ), |
75 | mState( GST_STATE_NULL ) | 76 | mState( GST_STATE_NULL ) |
76 | { | 77 | { |
77 | LL_DEBUGS("MediaManager") << "constructing media..." << LL_ENDL; | 78 | LL_DEBUGS("MediaManager") << "constructing media..." << LL_ENDL; |
78 | mVolume = -1.0; // XXX Hack to make the vould change happend first time | 79 | mVolume = -1.0; // XXX Hack to make the vould change happend first time |
@@ -94,12 +95,14 @@ LLMediaImplGStreamer () : | |||
94 | return; // error | 95 | return; // error |
95 | } | 96 | } |
96 | 97 | ||
97 | if (NULL == getenv("LL_GSTREAMER_EXTERNAL")) | 98 | if (NULL == getenv("LL_GSTREAMER_EXTERNAL")) |
98 | { | 99 | { |
99 | // instantiate and connect a custom video sink | 100 | // instantiate and connect a custom video sink |
100 | LL_DEBUGS("MediaManager") << "extrenal video sink..." << LL_ENDL; | 101 | LL_DEBUGS("MediaManager") << "extrenal video sink..." << LL_ENDL; |
102 | |||
103 | // Plays inworld instead of in external player | ||
101 | mVideoSink = | 104 | mVideoSink = |
102 | GST_SLVIDEO(llgst_element_factory_make ("private-slvideo", "slvideo")); | 105 | GST_SLVIDEO(llgst_element_factory_make ("private-slvideo", "slvideo")); |
103 | if (!mVideoSink) | 106 | if (!mVideoSink) |
104 | { | 107 | { |
105 | LL_WARNS("MediaImpl") << "Could not instantiate private-slvideo element." << LL_ENDL; | 108 | LL_WARNS("MediaImpl") << "Could not instantiate private-slvideo element." << LL_ENDL; |
@@ -142,12 +145,14 @@ LLMediaImplGStreamer:: | |||
142 | // virtual | 145 | // virtual |
143 | std::string LLMediaImplGStreamer::getVersion() | 146 | std::string LLMediaImplGStreamer::getVersion() |
144 | { | 147 | { |
145 | std::string rtn; | 148 | guint major, minor, micro, nano; |
146 | rtn = "[" + sLLMediaImplGStreamerReg.getImplName() + "] - GStreamer 0.10.x"; | 149 | llgst_version(&major, &minor, µ, &nano); |
147 | return rtn; | 150 | std::string version = llformat("%d.%d.%d.%d",major,minor,micro,nano); |
151 | return version; | ||
148 | } | 152 | } |
153 | |||
149 | // | 154 | // |
150 | //THIS IS THE METHOD THAT'S BREAKING STUFF | 155 | // STARTUP |
151 | /////////////////////////////////////////////////////////////////////////////// | 156 | /////////////////////////////////////////////////////////////////////////////// |
152 | // (static) super-initialization - called once at application startup | 157 | // (static) super-initialization - called once at application startup |
153 | bool LLMediaImplGStreamer::startup (LLMediaManagerData* init_data) | 158 | bool LLMediaImplGStreamer::startup (LLMediaManagerData* init_data) |
@@ -161,6 +166,10 @@ bool LLMediaImplGStreamer::startup (LLMediaManagerData* init_data) | |||
161 | // Get symbols! | 166 | // Get symbols! |
162 | #if LL_WINDOWS | 167 | #if LL_WINDOWS |
163 | if (! grab_gst_syms("libgstreamer-0.10.dll", "libgstvideo-0.10.dll", "libgstaudio-0.10.dll") ) | 168 | if (! grab_gst_syms("libgstreamer-0.10.dll", "libgstvideo-0.10.dll", "libgstaudio-0.10.dll") ) |
169 | { | ||
170 | LL_WARNS("MediaImpl") << "Couldn't find suitable GStreamer 0.10 support on this system - video playback disabled." << LL_ENDL; | ||
171 | return false; | ||
172 | } | ||
164 | #else | 173 | #else |
165 | if (! grab_gst_syms("libgstreamer-0.10.so.0", "libgstvideo-0.10.so.0", "libgstaudio-0.10.so.0") ) | 174 | if (! grab_gst_syms("libgstreamer-0.10.so.0", "libgstvideo-0.10.so.0", "libgstaudio-0.10.so.0") ) |
166 | { | 175 | { |
@@ -180,7 +189,7 @@ bool LLMediaImplGStreamer::startup (LLMediaManagerData* init_data) | |||
180 | saved_locale = setlocale(LC_ALL, NULL); | 189 | saved_locale = setlocale(LC_ALL, NULL); |
181 | if (0 == llgst_init_check(NULL, NULL, NULL)) | 190 | if (0 == llgst_init_check(NULL, NULL, NULL)) |
182 | { | 191 | { |
183 | LL_WARNS("MediaImpl") << "GST init failed for unspecified reason." << LL_ENDL; | 192 | LL_WARNS("MediaImpl") << "GStreamer library failed to initialize and load standard plugins." << LL_ENDL; |
184 | setlocale(LC_ALL, saved_locale.c_str() ); | 193 | setlocale(LC_ALL, saved_locale.c_str() ); |
185 | return false; | 194 | return false; |
186 | } | 195 | } |
@@ -204,6 +213,7 @@ bool LLMediaImplGStreamer::closedown() | |||
204 | 213 | ||
205 | /////////////////////////////////////////////////////////////////////////////// | 214 | /////////////////////////////////////////////////////////////////////////////// |
206 | // | 215 | // |
216 | // Uncomment the line below to enable spammy debug data. | ||
207 | //#define LL_GST_REPORT_STATE_CHANGES | 217 | //#define LL_GST_REPORT_STATE_CHANGES |
208 | #ifdef LL_GST_REPORT_STATE_CHANGES | 218 | #ifdef LL_GST_REPORT_STATE_CHANGES |
209 | static const char* get_gst_state_name(GstState state) | 219 | static const char* get_gst_state_name(GstState state) |
@@ -269,7 +279,8 @@ gboolean LLMediaImplGStreamer::bus_callback(GstBus *bus, GstMessage *message, gp | |||
269 | LL_DEBUGS("MediaImpl") << "State changed to NULL" << LL_ENDL; | 279 | LL_DEBUGS("MediaImpl") << "State changed to NULL" << LL_ENDL; |
270 | #endif | 280 | #endif |
271 | if (impl->getState() == GST_STATE_PLAYING) | 281 | if (impl->getState() == GST_STATE_PLAYING) |
272 | { // We got stoped by gstremer... | 282 | { |
283 | // Stream was probably dropped, trying to restart | ||
273 | impl->play(); | 284 | impl->play(); |
274 | #ifdef LL_GST_REPORT_STATE_CHANGES | 285 | #ifdef LL_GST_REPORT_STATE_CHANGES |
275 | LL_DEBUGS("MediaImpl") << "Trying to restart." << LL_ENDL; | 286 | LL_DEBUGS("MediaImpl") << "Trying to restart." << LL_ENDL; |
@@ -384,8 +395,7 @@ bool LLMediaImplGStreamer::navigateTo (const std::string urlIn) | |||
384 | LL_DEBUGS("MediaImpl") << "Setting media URI: " << urlIn.c_str() | 395 | LL_DEBUGS("MediaImpl") << "Setting media URI: " << urlIn.c_str() |
385 | << LL_ENDL; | 396 | << LL_ENDL; |
386 | 397 | ||
387 | if (NULL == mPump | 398 | if (mPump == NULL || mPlaybin == NULL) |
388 | || NULL == mPlaybin) | ||
389 | { | 399 | { |
390 | return false; | 400 | return false; |
391 | } | 401 | } |
@@ -394,7 +404,6 @@ bool LLMediaImplGStreamer::navigateTo (const std::string urlIn) | |||
394 | 404 | ||
395 | // set URI | 405 | // set URI |
396 | g_object_set (G_OBJECT (mPlaybin), "uri", urlIn.c_str(), NULL); | 406 | g_object_set (G_OBJECT (mPlaybin), "uri", urlIn.c_str(), NULL); |
397 | //g_object_set (G_OBJECT (mPlaybin), "uri", "file:///tmp/movie", NULL); | ||
398 | 407 | ||
399 | // get playbin's bus - perhaps this can/should be done in ctor | 408 | // get playbin's bus - perhaps this can/should be done in ctor |
400 | GstBus *bus = llgst_pipeline_get_bus (GST_PIPELINE (mPlaybin)); | 409 | GstBus *bus = llgst_pipeline_get_bus (GST_PIPELINE (mPlaybin)); |
@@ -405,6 +414,8 @@ bool LLMediaImplGStreamer::navigateTo (const std::string urlIn) | |||
405 | llgst_bus_add_watch (bus, bus_callback, this); | 414 | llgst_bus_add_watch (bus, bus_callback, this); |
406 | llgst_object_unref (bus); | 415 | llgst_object_unref (bus); |
407 | 416 | ||
417 | mState = GST_STATE_READY; | ||
418 | |||
408 | // navigateTo implicitly plays, too. | 419 | // navigateTo implicitly plays, too. |
409 | play(); | 420 | play(); |
410 | 421 | ||
@@ -437,6 +448,8 @@ bool LLMediaImplGStreamer::unload() | |||
437 | } | 448 | } |
438 | 449 | ||
439 | mVideoSink = NULL; | 450 | mVideoSink = NULL; |
451 | mState = GST_STATE_NULL; | ||
452 | setStatus(LLMediaBase::STATUS_UNKNOWN); | ||
440 | 453 | ||
441 | return true; | 454 | return true; |
442 | } | 455 | } |
@@ -448,15 +461,19 @@ bool LLMediaImplGStreamer::updateMedia() | |||
448 | //LL_DEBUGS("MediaImpl") << "updating media..." << LL_ENDL; | 461 | //LL_DEBUGS("MediaImpl") << "updating media..." << LL_ENDL; |
449 | 462 | ||
450 | // sanity check | 463 | // sanity check |
451 | if (NULL == mPump | 464 | if (mPump == NULL || mPlaybin == NULL) |
452 | || NULL == mPlaybin) | ||
453 | { | 465 | { |
454 | #ifdef LL_GST_REPORT_STATE_CHANGES | 466 | #ifdef LL_GST_REPORT_STATE_CHANGES |
455 | LL_DEBUGS("MediaImpl") << "dead media..." << LL_ENDL; | 467 | LL_DEBUGS("MediaImpl") << "dead media..." << LL_ENDL; |
456 | #endif | 468 | #endif |
469 | mState = GST_STATE_NULL; | ||
470 | setStatus(LLMediaBase::STATUS_DEAD); | ||
457 | return false; | 471 | return false; |
458 | } | 472 | } |
459 | 473 | ||
474 | if (mState == GST_STATE_VOID_PENDING || mState == GST_STATE_NULL) | ||
475 | return false; | ||
476 | |||
460 | // process next outstanding command | 477 | // process next outstanding command |
461 | switch (nextCommand()) | 478 | switch (nextCommand()) |
462 | { | 479 | { |
@@ -567,10 +584,24 @@ bool LLMediaImplGStreamer::updateMedia() | |||
567 | // | 584 | // |
568 | bool LLMediaImplGStreamer::stop() | 585 | bool LLMediaImplGStreamer::stop() |
569 | { | 586 | { |
570 | LL_DEBUGS("MediaImpl") << "stopping media..." << LL_ENDL; | 587 | LL_DEBUGS("MediaImpl") << "attempting to stop..." << LL_ENDL; |
571 | // todo: error-check this? | 588 | |
572 | llgst_element_set_state(mPlaybin, GST_STATE_READY); | 589 | if (!mPlaybin || mState == GST_STATE_NULL) |
573 | mState = GST_STATE_READY; | 590 | return true; |
591 | |||
592 | GstElement *pipeline = (GstElement *)llgst_object_ref(GST_OBJECT(mPlaybin)); | ||
593 | llgst_object_unref(pipeline); | ||
594 | |||
595 | llgst_element_set_state(pipeline, GST_STATE_READY); | ||
596 | |||
597 | if (mState == GST_STATE_PLAYING) | ||
598 | mState = GST_STATE_VOID_PENDING; | ||
599 | else | ||
600 | mState = GST_STATE_READY; | ||
601 | |||
602 | GstStateChangeReturn state_change = llgst_element_get_state(mPlaybin, NULL, NULL, GST_CLOCK_TIME_NONE); | ||
603 | LL_DEBUGS("MediaImpl") << "get_state: " << llgst_element_state_change_return_get_name(state_change) << LL_ENDL; | ||
604 | |||
574 | return true; | 605 | return true; |
575 | } | 606 | } |
576 | 607 | ||
@@ -578,10 +609,29 @@ bool LLMediaImplGStreamer::stop() | |||
578 | // | 609 | // |
579 | bool LLMediaImplGStreamer::play() | 610 | bool LLMediaImplGStreamer::play() |
580 | { | 611 | { |
581 | LL_DEBUGS("MediaImpl") << "playing media..." << LL_ENDL; | 612 | LL_DEBUGS("MediaImpl") << "attempting to play..." << LL_ENDL; |
582 | // todo: error-check this? | 613 | |
583 | llgst_element_set_state(mPlaybin, GST_STATE_PLAYING); | 614 | if (!mPlaybin || mState == GST_STATE_NULL) |
615 | return true; | ||
616 | |||
617 | GstElement *pipeline = (GstElement *)llgst_object_ref(GST_OBJECT(mPlaybin)); | ||
618 | llgst_object_unref(pipeline); | ||
619 | |||
620 | llgst_element_set_state(pipeline, GST_STATE_PLAYING); | ||
584 | mState = GST_STATE_PLAYING; | 621 | mState = GST_STATE_PLAYING; |
622 | /*llgst_element_set_state(mPlaybin, GST_STATE_PLAYING); | ||
623 | mState = GST_STATE_PLAYING;*/ | ||
624 | |||
625 | GstStateChangeReturn state_change = llgst_element_get_state(mPlaybin, NULL, NULL, GST_CLOCK_TIME_NONE); | ||
626 | LL_DEBUGS("MediaImpl") << "get_state: " << llgst_element_state_change_return_get_name(state_change) << LL_ENDL; | ||
627 | |||
628 | // Check to make sure playing was successful. If not, stop. | ||
629 | if (state_change == GST_STATE_CHANGE_FAILURE) | ||
630 | { | ||
631 | setStatus(LLMediaBase::STATUS_STOPPED); | ||
632 | stop(); | ||
633 | } | ||
634 | |||
585 | return true; | 635 | return true; |
586 | } | 636 | } |
587 | 637 | ||
@@ -589,10 +639,17 @@ bool LLMediaImplGStreamer::play() | |||
589 | // | 639 | // |
590 | bool LLMediaImplGStreamer::pause() | 640 | bool LLMediaImplGStreamer::pause() |
591 | { | 641 | { |
592 | LL_DEBUGS("MediaImpl") <<"pausing media..." << LL_ENDL; | 642 | LL_DEBUGS("MediaImpl") << "attempting to pause..." << LL_ENDL; |
593 | // todo: error-check this? | 643 | |
644 | if (!mPlaybin || mState == GST_STATE_NULL) | ||
645 | return true; | ||
646 | |||
594 | llgst_element_set_state(mPlaybin, GST_STATE_PAUSED); | 647 | llgst_element_set_state(mPlaybin, GST_STATE_PAUSED); |
595 | mState = GST_STATE_PAUSED; | 648 | mState = GST_STATE_PAUSED; |
649 | |||
650 | GstStateChangeReturn state_change = llgst_element_get_state(mPlaybin, NULL, NULL, GST_CLOCK_TIME_NONE); | ||
651 | LL_DEBUGS("MediaImpl") << "get_state: " << llgst_element_state_change_return_get_name(state_change) << LL_ENDL; | ||
652 | |||
596 | return true; | 653 | return true; |
597 | }; | 654 | }; |
598 | 655 | ||
@@ -628,12 +685,12 @@ bool LLMediaImplGStreamer::seek(double time) | |||
628 | // virtual | 685 | // virtual |
629 | bool LLMediaImplGStreamer::setVolume(float volume) | 686 | bool LLMediaImplGStreamer::setVolume(float volume) |
630 | { | 687 | { |
631 | // XXX hack to make volume volume changes less othen | 688 | // XXX hack to make volume volume changes less othen |
632 | // bug in gstreamer 0.10.21 | 689 | // bug in gstreamer 0.10.21 |
633 | if(mVolume == volume) | 690 | if(mVolume == volume) |
634 | return true; | 691 | return true; |
635 | 692 | ||
636 | LL_DEBUGS("MediaImpl") << "setVolume(" << volume << ") : " << getpid() << LL_ENDL; | 693 | LL_DEBUGS("MediaImpl") << "setVolume(" << volume << ") : " << getpid() << LL_ENDL; |
637 | mVolume = volume; | 694 | mVolume = volume; |
638 | if (mPlaybin) | 695 | if (mPlaybin) |
639 | { | 696 | { |
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.h b/linden/indra/llmedia/llmediaimplgstreamer.h index 5b493ad..dec970a 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer.h +++ b/linden/indra/llmedia/llmediaimplgstreamer.h | |||
@@ -74,7 +74,7 @@ class LLMediaImplGStreamer: | |||
74 | /* virtual */ int getTextureFormatType() const; | 74 | /* virtual */ int getTextureFormatType() const; |
75 | /* virtual */ int getTextureFormatInternal() const; | 75 | /* virtual */ int getTextureFormatInternal() const; |
76 | /* virtual */ bool seek( double time ); | 76 | /* virtual */ bool seek( double time ); |
77 | /* virtual */ bool setVolume( float volume ); | 77 | /* virtual */ bool setVolume( float volume ); |
78 | 78 | ||
79 | LLMediaEmitter< LLMediaObserver > getEventEmitter() const {return mEventEmitter;}; | 79 | LLMediaEmitter< LLMediaObserver > getEventEmitter() const {return mEventEmitter;}; |
80 | 80 | ||
@@ -84,6 +84,7 @@ class LLMediaImplGStreamer: | |||
84 | bool pause(); | 84 | bool pause(); |
85 | bool stop(); | 85 | bool stop(); |
86 | bool play(); | 86 | bool play(); |
87 | |||
87 | static gboolean bus_callback (GstBus *bus, | 88 | static gboolean bus_callback (GstBus *bus, |
88 | GstMessage *message, | 89 | GstMessage *message, |
89 | gpointer data); | 90 | gpointer data); |
diff --git a/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc b/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc index e17a7a0..0d0d764 100644 --- a/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc +++ b/linden/indra/llmedia/llmediaimplgstreamer_syms_raw.inc | |||
@@ -7,7 +7,9 @@ LL_GST_SYM(true, gst_message_parse_error, void, GstMessage *message, GError **ge | |||
7 | LL_GST_SYM(true, gst_message_parse_warning, void, GstMessage *message, GError **gerror, gchar **debug); | 7 | LL_GST_SYM(true, gst_message_parse_warning, void, GstMessage *message, GError **gerror, gchar **debug); |
8 | LL_GST_SYM(true, gst_message_parse_state_changed, void, GstMessage *message, GstState *oldstate, GstState *newstate, GstState *pending); | 8 | LL_GST_SYM(true, gst_message_parse_state_changed, void, GstMessage *message, GstState *oldstate, GstState *newstate, GstState *pending); |
9 | LL_GST_SYM(true, gst_element_set_state, GstStateChangeReturn, GstElement *element, GstState state); | 9 | LL_GST_SYM(true, gst_element_set_state, GstStateChangeReturn, GstElement *element, GstState state); |
10 | LL_GST_SYM(true, gst_element_get_state, GstStateChangeReturn, GstElement *element, GstState *state, GstState *pending, GstClockTime timeout); | ||
10 | LL_GST_SYM(true, gst_object_unref, void, gpointer object); | 11 | LL_GST_SYM(true, gst_object_unref, void, gpointer object); |
12 | LL_GST_SYM(true, gst_object_ref, gpointer, gpointer object); | ||
11 | LL_GST_SYM(true, gst_object_get_type, GType, void); | 13 | LL_GST_SYM(true, gst_object_get_type, GType, void); |
12 | LL_GST_SYM(true, gst_pipeline_get_type, GType, void); | 14 | LL_GST_SYM(true, gst_pipeline_get_type, GType, void); |
13 | LL_GST_SYM(true, gst_pipeline_get_bus, GstBus*, GstPipeline *pipeline); | 15 | LL_GST_SYM(true, gst_pipeline_get_bus, GstBus*, GstPipeline *pipeline); |
@@ -35,6 +37,8 @@ LL_GST_SYM(true, gst_value_get_fraction_numerator, gint, const GValue *value); | |||
35 | LL_GST_SYM(true, gst_value_get_fraction_denominator, gint, const GValue *value); | 37 | LL_GST_SYM(true, gst_value_get_fraction_denominator, gint, const GValue *value); |
36 | LL_GST_SYM(true, gst_structure_get_name, G_CONST_RETURN gchar *, const GstStructure *structure); | 38 | LL_GST_SYM(true, gst_structure_get_name, G_CONST_RETURN gchar *, const GstStructure *structure); |
37 | LL_GST_SYM(true, gst_element_seek, bool, GstElement *, gdouble, GstFormat, GstSeekFlags, GstSeekType, gint64, GstSeekType, gint64); | 39 | LL_GST_SYM(true, gst_element_seek, bool, GstElement *, gdouble, GstFormat, GstSeekFlags, GstSeekType, gint64, GstSeekType, gint64); |
40 | LL_GST_SYM(true, gst_version, void, guint *major, guint *minor, guint *micro, guint *nano); | ||
41 | LL_GST_SYM(true, gst_element_state_change_return_get_name, const gchar *, GstStateChangeReturn state_ret); | ||
38 | 42 | ||
39 | // optional symbols to grab | 43 | // optional symbols to grab |
40 | LL_GST_SYM(false, gst_segtrap_set_enabled, void, gboolean enabled); | 44 | LL_GST_SYM(false, gst_segtrap_set_enabled, void, gboolean enabled); |
diff --git a/linden/indra/llmessage/llpumpio.cpp b/linden/indra/llmessage/llpumpio.cpp index 9ce0bab..467502b 100644 --- a/linden/indra/llmessage/llpumpio.cpp +++ b/linden/indra/llmessage/llpumpio.cpp | |||
@@ -177,7 +177,8 @@ LLPumpIO::LLPumpIO(apr_pool_t* pool) : | |||
177 | mCurrentPool(NULL), | 177 | mCurrentPool(NULL), |
178 | mCurrentPoolReallocCount(0), | 178 | mCurrentPoolReallocCount(0), |
179 | mChainsMutex(NULL), | 179 | mChainsMutex(NULL), |
180 | mCallbackMutex(NULL) | 180 | mCallbackMutex(NULL), |
181 | mCurrentChain(mRunningChains.end()) | ||
181 | { | 182 | { |
182 | LLMemType m1(LLMemType::MTYPE_IO_PUMP); | 183 | LLMemType m1(LLMemType::MTYPE_IO_PUMP); |
183 | initialize(pool); | 184 | initialize(pool); |
@@ -273,7 +274,10 @@ bool LLPumpIO::setTimeoutSeconds(F32 timeout) | |||
273 | void LLPumpIO::adjustTimeoutSeconds(F32 delta) | 274 | void LLPumpIO::adjustTimeoutSeconds(F32 delta) |
274 | { | 275 | { |
275 | // If no chain is running, bail | 276 | // If no chain is running, bail |
276 | if(current_chain_t() == mCurrentChain) return; | 277 | if(mRunningChains.end() == mCurrentChain) |
278 | { | ||
279 | return; | ||
280 | } | ||
277 | (*mCurrentChain).adjustTimeoutSeconds(delta); | 281 | (*mCurrentChain).adjustTimeoutSeconds(delta); |
278 | } | 282 | } |
279 | 283 | ||
diff --git a/linden/indra/llmessage/message_prehash.cpp b/linden/indra/llmessage/message_prehash.cpp index 2ac1319..fd8953d 100644 --- a/linden/indra/llmessage/message_prehash.cpp +++ b/linden/indra/llmessage/message_prehash.cpp | |||
@@ -598,6 +598,7 @@ char* _PREHASH_FromAgentId = LLMessageStringTable::getInstance()->getString("Fro | |||
598 | char* _PREHASH_Type = LLMessageStringTable::getInstance()->getString("Type"); | 598 | char* _PREHASH_Type = LLMessageStringTable::getInstance()->getString("Type"); |
599 | char* _PREHASH_ChatType = LLMessageStringTable::getInstance()->getString("ChatType"); | 599 | char* _PREHASH_ChatType = LLMessageStringTable::getInstance()->getString("ChatType"); |
600 | char* _PREHASH_ReportData = LLMessageStringTable::getInstance()->getString("ReportData"); | 600 | char* _PREHASH_ReportData = LLMessageStringTable::getInstance()->getString("ReportData"); |
601 | char* _PREHASH_MonoScore = LLMessageStringTable::getInstance()->getString("MonoScore"); | ||
601 | char* _PREHASH_RequestBlock = LLMessageStringTable::getInstance()->getString("RequestBlock"); | 602 | char* _PREHASH_RequestBlock = LLMessageStringTable::getInstance()->getString("RequestBlock"); |
602 | char* _PREHASH_GrantData = LLMessageStringTable::getInstance()->getString("GrantData"); | 603 | char* _PREHASH_GrantData = LLMessageStringTable::getInstance()->getString("GrantData"); |
603 | char* _PREHASH_DetachAttachmentIntoInv = LLMessageStringTable::getInstance()->getString("DetachAttachmentIntoInv"); | 604 | char* _PREHASH_DetachAttachmentIntoInv = LLMessageStringTable::getInstance()->getString("DetachAttachmentIntoInv"); |
diff --git a/linden/indra/llmessage/message_prehash.h b/linden/indra/llmessage/message_prehash.h index 0ee02be..8b8c857 100644 --- a/linden/indra/llmessage/message_prehash.h +++ b/linden/indra/llmessage/message_prehash.h | |||
@@ -598,6 +598,7 @@ extern char * _PREHASH_FromAgentId; | |||
598 | extern char * _PREHASH_Type; | 598 | extern char * _PREHASH_Type; |
599 | extern char * _PREHASH_ChatType; | 599 | extern char * _PREHASH_ChatType; |
600 | extern char * _PREHASH_ReportData; | 600 | extern char * _PREHASH_ReportData; |
601 | extern char * _PREHASH_MonoScore; | ||
601 | extern char * _PREHASH_RequestBlock; | 602 | extern char * _PREHASH_RequestBlock; |
602 | extern char * _PREHASH_GrantData; | 603 | extern char * _PREHASH_GrantData; |
603 | extern char * _PREHASH_DetachAttachmentIntoInv; | 604 | extern char * _PREHASH_DetachAttachmentIntoInv; |
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt index 4024fdd..1e48d28 100644 --- a/linden/indra/newview/CMakeLists.txt +++ b/linden/indra/newview/CMakeLists.txt | |||
@@ -1120,6 +1120,7 @@ set(viewer_XUI_FILES | |||
1120 | skins/default/xui/en-us/menu_login.xml | 1120 | skins/default/xui/en-us/menu_login.xml |
1121 | skins/default/xui/en-us/menu_pie_attachment.xml | 1121 | skins/default/xui/en-us/menu_pie_attachment.xml |
1122 | skins/default/xui/en-us/menu_pie_avatar.xml | 1122 | skins/default/xui/en-us/menu_pie_avatar.xml |
1123 | skins/default/xui/en-us/menu_pie_hud.xml | ||
1123 | skins/default/xui/en-us/menu_pie_land.xml | 1124 | skins/default/xui/en-us/menu_pie_land.xml |
1124 | skins/default/xui/en-us/menu_pie_object.xml | 1125 | skins/default/xui/en-us/menu_pie_object.xml |
1125 | skins/default/xui/en-us/menu_pie_self.xml | 1126 | skins/default/xui/en-us/menu_pie_self.xml |
diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp index 4953410..aeca4b5 100644 --- a/linden/indra/newview/llfloaterabout.cpp +++ b/linden/indra/newview/llfloaterabout.cpp | |||
@@ -42,6 +42,7 @@ | |||
42 | #include "llcurl.h" | 42 | #include "llcurl.h" |
43 | #include "llimagej2c.h" | 43 | #include "llimagej2c.h" |
44 | #include "audioengine.h" | 44 | #include "audioengine.h" |
45 | #include "llmediaimplgstreamer.h" | ||
45 | 46 | ||
46 | #include "llviewertexteditor.h" | 47 | #include "llviewertexteditor.h" |
47 | #include "llviewercontrol.h" | 48 | #include "llviewercontrol.h" |
@@ -208,6 +209,15 @@ LLFloaterAbout::LLFloaterAbout() | |||
208 | LLMediaManager *mgr = LLMediaManager::getInstance(); | 209 | LLMediaManager *mgr = LLMediaManager::getInstance(); |
209 | if (mgr) | 210 | if (mgr) |
210 | { | 211 | { |
212 | LLMediaBase *gstreamer = new LLMediaImplGStreamer(); | ||
213 | if (gstreamer) | ||
214 | { | ||
215 | support.append("GStreamer Version: "); | ||
216 | support.append( gstreamer->getVersion() ); | ||
217 | support.append("\n"); | ||
218 | } | ||
219 | delete gstreamer; | ||
220 | |||
211 | LLMediaBase *media_source = mgr->createSourceFromMimeType("http", "text/html"); | 221 | LLMediaBase *media_source = mgr->createSourceFromMimeType("http", "text/html"); |
212 | if (media_source) | 222 | if (media_source) |
213 | { | 223 | { |
diff --git a/linden/indra/newview/llfloatertopobjects.cpp b/linden/indra/newview/llfloatertopobjects.cpp index ada5c68..e4c90f0 100644 --- a/linden/indra/newview/llfloatertopobjects.cpp +++ b/linden/indra/newview/llfloatertopobjects.cpp | |||
@@ -180,11 +180,11 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) | |||
180 | msg->getF32Fast(_PREHASH_ReportData, _PREHASH_Score, score, block); | 180 | msg->getF32Fast(_PREHASH_ReportData, _PREHASH_Score, score, block); |
181 | msg->getStringFast(_PREHASH_ReportData, _PREHASH_TaskName, name_buf, block); | 181 | msg->getStringFast(_PREHASH_ReportData, _PREHASH_TaskName, name_buf, block); |
182 | msg->getStringFast(_PREHASH_ReportData, _PREHASH_OwnerName, owner_buf, block); | 182 | msg->getStringFast(_PREHASH_ReportData, _PREHASH_OwnerName, owner_buf, block); |
183 | if(msg->getNumberOfBlocks("DataExtended")) | 183 | if(msg->has("DataExtended")) |
184 | { | 184 | { |
185 | have_extended_data = true; | 185 | have_extended_data = true; |
186 | msg->getU32("DataExtended", "TimeStamp", time_stamp, block); | 186 | msg->getU32("DataExtended", "TimeStamp", time_stamp, block); |
187 | msg->getF32(_PREHASH_ReportData, "MonoScore", mono_score, block); | 187 | msg->getF32("DataExtended", "MonoScore", mono_score, block); |
188 | } | 188 | } |
189 | 189 | ||
190 | LLSD element; | 190 | LLSD element; |
@@ -212,7 +212,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) | |||
212 | if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS | 212 | if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS |
213 | && have_extended_data) | 213 | && have_extended_data) |
214 | { | 214 | { |
215 | element["columns"][5]["column"] = "Mono Time"; | 215 | element["columns"][5]["column"] = "mono_time"; |
216 | element["columns"][5]["value"] = llformat("%0.3f", mono_score); | 216 | element["columns"][5]["value"] = llformat("%0.3f", mono_score); |
217 | element["columns"][5]["font"] = "SANSSERIF"; | 217 | element["columns"][5]["font"] = "SANSSERIF"; |
218 | } | 218 | } |
@@ -238,6 +238,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) | |||
238 | { | 238 | { |
239 | setTitle(getString("top_scripts_title")); | 239 | setTitle(getString("top_scripts_title")); |
240 | list->setColumnLabel("score", getString("scripts_score_label")); | 240 | list->setColumnLabel("score", getString("scripts_score_label")); |
241 | list->setColumnLabel("mono_time", getString("scripts_mono_time_label")); | ||
241 | 242 | ||
242 | LLUIString format = getString("top_scripts_text"); | 243 | LLUIString format = getString("top_scripts_text"); |
243 | format.setArg("[COUNT]", llformat("%d", total_count)); | 244 | format.setArg("[COUNT]", llformat("%d", total_count)); |
@@ -248,6 +249,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) | |||
248 | { | 249 | { |
249 | setTitle(getString("top_colliders_title")); | 250 | setTitle(getString("top_colliders_title")); |
250 | list->setColumnLabel("score", getString("colliders_score_label")); | 251 | list->setColumnLabel("score", getString("colliders_score_label")); |
252 | list->setColumnLabel("mono_time", ""); | ||
251 | LLUIString format = getString("top_colliders_text"); | 253 | LLUIString format = getString("top_colliders_text"); |
252 | format.setArg("[COUNT]", llformat("%d", total_count)); | 254 | format.setArg("[COUNT]", llformat("%d", total_count)); |
253 | childSetValue("title_text", LLSD(format)); | 255 | childSetValue("title_text", LLSD(format)); |
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp index 80cac14..a4eedbb 100644 --- a/linden/indra/newview/lloverlaybar.cpp +++ b/linden/indra/newview/lloverlaybar.cpp | |||
@@ -391,14 +391,6 @@ void LLOverlayBar::toggleMusicPlay(void*) | |||
391 | } | 391 | } |
392 | } | 392 | } |
393 | } | 393 | } |
394 | //else | ||
395 | //{ | ||
396 | // gOverlayBar->mMusicState = PAUSED; // desired state | ||
397 | // if (gAudiop) | ||
398 | // { | ||
399 | // gAudiop->pauseInternetStream(1); | ||
400 | // } | ||
401 | //} | ||
402 | else | 394 | else |
403 | { | 395 | { |
404 | gOverlayBar->mMusicState = STOPPED; // desired state | 396 | gOverlayBar->mMusicState = STOPPED; // desired state |
diff --git a/linden/indra/newview/llpreviewlandmark.cpp b/linden/indra/newview/llpreviewlandmark.cpp index 01d77f6..20b0ee5 100644 --- a/linden/indra/newview/llpreviewlandmark.cpp +++ b/linden/indra/newview/llpreviewlandmark.cpp | |||
@@ -90,7 +90,17 @@ 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 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_existing_landmark.xml", &getFactoryMap()); | 93 | if (show_keep_discard) |
94 | { | ||
95 | // Decided against this, a text notification is a better fix for this -- McCabe | ||
96 | //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_new_landmark.xml", &getFactoryMap()); | ||
97 | //childSetAction("Discard btn",onDiscardBtn,this); | ||
98 | } | ||
99 | else | ||
100 | { | ||
101 | LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_existing_landmark.xml", &getFactoryMap()); | ||
102 | } | ||
103 | |||
94 | 104 | ||
95 | /* | 105 | /* |
96 | childSetCommitCallback("desc_editor", LLPreview::onText, this); | 106 | childSetCommitCallback("desc_editor", LLPreview::onText, this); |
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp index 7547dd2..fe1755b 100644 --- a/linden/indra/newview/llselectmgr.cpp +++ b/linden/indra/newview/llselectmgr.cpp | |||
@@ -3444,7 +3444,7 @@ void LLSelectMgr::deselectAllIfTooFar() | |||
3444 | 3444 | ||
3445 | // HACK: Don't deselect when we're navigating to rate an object's | 3445 | // HACK: Don't deselect when we're navigating to rate an object's |
3446 | // owner or creator. JC | 3446 | // owner or creator. JC |
3447 | if (gPieObject->getVisible() || gPieRate->getVisible() ) | 3447 | if (gPieObject->getVisible()) |
3448 | { | 3448 | { |
3449 | return; | 3449 | return; |
3450 | } | 3450 | } |
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp index de10045..63b6e34 100644 --- a/linden/indra/newview/lltoolpie.cpp +++ b/linden/indra/newview/lltoolpie.cpp | |||
@@ -336,10 +336,14 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show) | |||
336 | 336 | ||
337 | gPieAvatar->show(x, y, mPieMouseButtonDown); | 337 | gPieAvatar->show(x, y, mPieMouseButtonDown); |
338 | } | 338 | } |
339 | else if (object->isAttachment()) | 339 | else if (object->isAttachment() && !object->isHUDAttachment()) |
340 | { | 340 | { |
341 | gPieAttachment->show(x, y, mPieMouseButtonDown); | 341 | gPieAttachment->show(x, y, mPieMouseButtonDown); |
342 | } | 342 | } |
343 | else if (object->isHUDAttachment()) | ||
344 | { | ||
345 | gPieHUD->show(x, y, mPieMouseButtonDown); | ||
346 | } | ||
343 | else | 347 | else |
344 | { | 348 | { |
345 | // BUG: What about chatting child objects? | 349 | // BUG: What about chatting child objects? |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index b7f4a40..31fdcc3 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -251,6 +251,7 @@ LLPieMenu *gPieSelf = NULL; | |||
251 | LLPieMenu *gPieAvatar = NULL; | 251 | LLPieMenu *gPieAvatar = NULL; |
252 | LLPieMenu *gPieObject = NULL; | 252 | LLPieMenu *gPieObject = NULL; |
253 | LLPieMenu *gPieAttachment = NULL; | 253 | LLPieMenu *gPieAttachment = NULL; |
254 | LLPieMenu *gPieHUD = NULL; | ||
254 | LLPieMenu *gPieLand = NULL; | 255 | LLPieMenu *gPieLand = NULL; |
255 | 256 | ||
256 | // local constants | 257 | // local constants |
@@ -263,7 +264,6 @@ const std::string SAVE_INTO_TASK_INVENTORY("Save Object Back to Object Contents" | |||
263 | LLMenuGL* gAttachSubMenu = NULL; | 264 | LLMenuGL* gAttachSubMenu = NULL; |
264 | LLMenuGL* gDetachSubMenu = NULL; | 265 | LLMenuGL* gDetachSubMenu = NULL; |
265 | LLMenuGL* gTakeOffClothes = NULL; | 266 | LLMenuGL* gTakeOffClothes = NULL; |
266 | LLPieMenu* gPieRate = NULL; | ||
267 | LLPieMenu* gAttachScreenPieMenu = NULL; | 267 | LLPieMenu* gAttachScreenPieMenu = NULL; |
268 | LLPieMenu* gAttachPieMenu = NULL; | 268 | LLPieMenu* gAttachPieMenu = NULL; |
269 | LLPieMenu* gAttachBodyPartPieMenus[8]; | 269 | LLPieMenu* gAttachBodyPartPieMenus[8]; |
@@ -610,10 +610,11 @@ void init_menus() | |||
610 | 610 | ||
611 | gAttachScreenPieMenu = gMenuHolder->getChild<LLPieMenu>("Object Attach HUD"); | 611 | gAttachScreenPieMenu = gMenuHolder->getChild<LLPieMenu>("Object Attach HUD"); |
612 | gAttachPieMenu = gMenuHolder->getChild<LLPieMenu>("Object Attach"); | 612 | gAttachPieMenu = gMenuHolder->getChild<LLPieMenu>("Object Attach"); |
613 | gPieRate = gMenuHolder->getChild<LLPieMenu>("Rate Menu"); | ||
614 | 613 | ||
615 | gPieAttachment = LLUICtrlFactory::getInstance()->buildPieMenu("menu_pie_attachment.xml", gMenuHolder); | 614 | gPieAttachment = LLUICtrlFactory::getInstance()->buildPieMenu("menu_pie_attachment.xml", gMenuHolder); |
616 | 615 | ||
616 | gPieHUD = LLUICtrlFactory::getInstance()->buildPieMenu("menu_pie_hud.xml", gMenuHolder); | ||
617 | |||
617 | gPieLand = LLUICtrlFactory::getInstance()->buildPieMenu("menu_pie_land.xml", gMenuHolder); | 618 | gPieLand = LLUICtrlFactory::getInstance()->buildPieMenu("menu_pie_land.xml", gMenuHolder); |
618 | 619 | ||
619 | /// | 620 | /// |
@@ -626,6 +627,7 @@ void init_menus() | |||
626 | gPieAvatar->setBackgroundColor( pie_color ); | 627 | gPieAvatar->setBackgroundColor( pie_color ); |
627 | gPieObject->setBackgroundColor( pie_color ); | 628 | gPieObject->setBackgroundColor( pie_color ); |
628 | gPieAttachment->setBackgroundColor( pie_color ); | 629 | gPieAttachment->setBackgroundColor( pie_color ); |
630 | gPieHUD->setBackgroundColor( pie_color ); | ||
629 | gPieLand->setBackgroundColor( pie_color ); | 631 | gPieLand->setBackgroundColor( pie_color ); |
630 | 632 | ||
631 | color = gColors.getColor( "MenuPopupBgColor" ); | 633 | color = gColors.getColor( "MenuPopupBgColor" ); |
@@ -1475,6 +1477,9 @@ void cleanup_menus() | |||
1475 | delete gPieAttachment; | 1477 | delete gPieAttachment; |
1476 | gPieAttachment = NULL; | 1478 | gPieAttachment = NULL; |
1477 | 1479 | ||
1480 | delete gPieHUD; | ||
1481 | gPieHUD = NULL; | ||
1482 | |||
1478 | delete gPieLand; | 1483 | delete gPieLand; |
1479 | gPieLand = NULL; | 1484 | gPieLand = NULL; |
1480 | 1485 | ||
diff --git a/linden/indra/newview/llviewermenu.h b/linden/indra/newview/llviewermenu.h index e003e90..c2f880e 100644 --- a/linden/indra/newview/llviewermenu.h +++ b/linden/indra/newview/llviewermenu.h | |||
@@ -147,14 +147,15 @@ extern LLPieMenu *gPieSelf; | |||
147 | extern LLPieMenu *gPieAvatar; | 147 | extern LLPieMenu *gPieAvatar; |
148 | extern LLPieMenu *gPieObject; | 148 | extern LLPieMenu *gPieObject; |
149 | extern LLPieMenu *gPieAttachment; | 149 | extern LLPieMenu *gPieAttachment; |
150 | extern LLPieMenu *gPieHUD; | ||
150 | extern LLPieMenu *gPieLand; | 151 | extern LLPieMenu *gPieLand; |
151 | extern LLPieMenu* gPieRate; | ||
152 | 152 | ||
153 | // Pie menus | 153 | // Pie menus |
154 | extern LLPieMenu *gPieSelfSimple; | 154 | extern LLPieMenu *gPieSelfSimple; |
155 | extern LLPieMenu *gPieAvatarSimple; | 155 | extern LLPieMenu *gPieAvatarSimple; |
156 | extern LLPieMenu *gPieObjectSimple; | 156 | extern LLPieMenu *gPieObjectSimple; |
157 | extern LLPieMenu *gPieAttachmentSimple; | 157 | extern LLPieMenu *gPieAttachmentSimple; |
158 | extern LLPieMenu *gPieHUDSimple; | ||
158 | extern LLPieMenu *gPieLandSimple; | 159 | extern LLPieMenu *gPieLandSimple; |
159 | 160 | ||
160 | // Needed to build menus when attachment site list available | 161 | // Needed to build menus when attachment site list available |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_top_objects.xml b/linden/indra/newview/skins/default/xui/en-us/floater_top_objects.xml index 96f48eb..1b60510 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_top_objects.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_top_objects.xml | |||
@@ -14,7 +14,8 @@ | |||
14 | <column label="Owner" name="owner" width="105" /> | 14 | <column label="Owner" name="owner" width="105" /> |
15 | <column label="Location" name="location" width="130" /> | 15 | <column label="Location" name="location" width="130" /> |
16 | <column label="Time" name="time" width="100" /> | 16 | <column label="Time" name="time" width="100" /> |
17 | </scroll_list> | 17 | <column label="Mono Time" name="mono_time" width="55" /> |
18 | </scroll_list> | ||
18 | <text bottom_delta="-30" follows="left|bottom" font="SansSerifSmall" height="20" | 19 | <text bottom_delta="-30" follows="left|bottom" font="SansSerifSmall" height="20" |
19 | left="10" name="id_text" width="100"> | 20 | left="10" name="id_text" width="100"> |
20 | Object ID: | 21 | Object ID: |
@@ -61,7 +62,10 @@ | |||
61 | <string name="scripts_score_label"> | 62 | <string name="scripts_score_label"> |
62 | Time | 63 | Time |
63 | </string> | 64 | </string> |
64 | <string name="top_colliders_title"> | 65 | <string name="scripts_mono_time_label"> |
66 | Mono Time | ||
67 | </string> | ||
68 | <string name="top_colliders_title"> | ||
65 | Top Colliders | 69 | Top Colliders |
66 | </string> | 70 | </string> |
67 | <string name="top_colliders_text"> | 71 | <string name="top_colliders_text"> |
@@ -70,7 +74,7 @@ | |||
70 | <string name="colliders_score_label"> | 74 | <string name="colliders_score_label"> |
71 | Score | 75 | Score |
72 | </string> | 76 | </string> |
73 | <string name="none_descriptor"> | 77 | <string name="none_descriptor"> |
74 | None found. | 78 | None found. |
75 | </string> | 79 | </string> |
76 | </floater> | 80 | </floater> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_pie_hud.xml b/linden/indra/newview/skins/default/xui/en-us/menu_pie_hud.xml new file mode 100644 index 0000000..ba6db28 --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/menu_pie_hud.xml | |||
@@ -0,0 +1,23 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | ||
2 | <pie_menu name="Hud Pie"> | ||
3 | <menu_item_call enabled="false" label="Detach" mouse_opaque="true" name="Detach"> | ||
4 | <on_click function="Attachment.Detach" /> | ||
5 | <on_enable function="Attachment.EnableDetach" /> | ||
6 | </menu_item_call> | ||
7 | <menu_item_separator /> | ||
8 | <menu_item_call enabled="false" label="Touch" mouse_opaque="true" name="Attachment Touch"> | ||
9 | <on_click function="Object.Touch" /> | ||
10 | <on_enable function="Attachment.EnableTouch" userdata="Touch" /> | ||
11 | </menu_item_call> | ||
12 | <menu_item_separator /> | ||
13 | <menu_item_separator /> | ||
14 | <menu_item_separator /> | ||
15 | <menu_item_call enabled="false" label="Edit..." mouse_opaque="true" name="Edit..."> | ||
16 | <on_click function="Object.Edit" /> | ||
17 | <on_enable function="EnableEdit" /> | ||
18 | </menu_item_call> | ||
19 | <menu_item_call enabled="false" label="Drop" mouse_opaque="true" name="Drop"> | ||
20 | <on_click function="Attachment.Drop" /> | ||
21 | <on_enable function="Attachment.EnableDrop" /> | ||
22 | </menu_item_call> | ||
23 | </pie_menu> | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 2d5402b..4758116 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 | |||
@@ -1064,42 +1064,42 @@ | |||
1064 | <menu name="Features" drop_shadow="true" | 1064 | <menu name="Features" drop_shadow="true" |
1065 | opaque="true" tear_off="true"> | 1065 | opaque="true" tear_off="true"> |
1066 | <menu_item_check name="UI" label="UI" | 1066 | <menu_item_check name="UI" label="UI" |
1067 | shortcut="control|alt|F1"> | 1067 | shortcut="alt|shift|F1"> |
1068 | <on_click function="Advanced.ToggleFeature" | 1068 | <on_click function="Advanced.ToggleFeature" |
1069 | userdata="ui" /> | 1069 | userdata="ui" /> |
1070 | <on_check function="Advanced.CheckFeature" | 1070 | <on_check function="Advanced.CheckFeature" |
1071 | userdata="ui" /> | 1071 | userdata="ui" /> |
1072 | </menu_item_check> | 1072 | </menu_item_check> |
1073 | <menu_item_check name="Selected" label="Selected" | 1073 | <menu_item_check name="Selected" label="Selected" |
1074 | shortcut="control|alt|F2"> | 1074 | shortcut="alt|shift|F2"> |
1075 | <on_click function="Advanced.ToggleFeature" | 1075 | <on_click function="Advanced.ToggleFeature" |
1076 | userdata="selected" /> | 1076 | userdata="selected" /> |
1077 | <on_check function="Advanced.CheckFeature" | 1077 | <on_check function="Advanced.CheckFeature" |
1078 | userdata="selected" /> | 1078 | userdata="selected" /> |
1079 | </menu_item_check> | 1079 | </menu_item_check> |
1080 | <menu_item_check name="Highlighted" label="Highlighted" | 1080 | <menu_item_check name="Highlighted" label="Highlighted" |
1081 | shortcut="control|alt|F3"> | 1081 | shortcut="alt|shift|F3"> |
1082 | <on_click function="Advanced.ToggleFeature" | 1082 | <on_click function="Advanced.ToggleFeature" |
1083 | userdata="highlighted" /> | 1083 | userdata="highlighted" /> |
1084 | <on_check function="Advanced.CheckFeature" | 1084 | <on_check function="Advanced.CheckFeature" |
1085 | userdata="highlighted" /> | 1085 | userdata="highlighted" /> |
1086 | </menu_item_check> | 1086 | </menu_item_check> |
1087 | <menu_item_check name="Dynamic Textures" label="Dynamic Textures" | 1087 | <menu_item_check name="Dynamic Textures" label="Dynamic Textures" |
1088 | shortcut="control|alt|F4"> | 1088 | shortcut="alt|shift|F4"> |
1089 | <on_click function="Advanced.ToggleFeature" | 1089 | <on_click function="Advanced.ToggleFeature" |
1090 | userdata="dynamic textures" /> | 1090 | userdata="dynamic textures" /> |
1091 | <on_check function="Advanced.CheckFeature" | 1091 | <on_check function="Advanced.CheckFeature" |
1092 | userdata="dynamic textures" /> | 1092 | userdata="dynamic textures" /> |
1093 | </menu_item_check> | 1093 | </menu_item_check> |
1094 | <menu_item_check name="Foot Shadows" label="Foot Shadows" | 1094 | <menu_item_check name="Foot Shadows" label="Foot Shadows" |
1095 | shortcut="control|alt|F5"> | 1095 | shortcut="alt|shift|F5"> |
1096 | <on_click function="Advanced.ToggleFeature" | 1096 | <on_click function="Advanced.ToggleFeature" |
1097 | userdata="foot shadows" /> | 1097 | userdata="foot shadows" /> |
1098 | <on_check function="Advanced.CheckFeature" | 1098 | <on_check function="Advanced.CheckFeature" |
1099 | userdata="foot shadows" /> | 1099 | userdata="foot shadows" /> |
1100 | </menu_item_check> | 1100 | </menu_item_check> |
1101 | <menu_item_check name="Fog" label="Fog" | 1101 | <menu_item_check name="Fog" label="Fog" |
1102 | shortcut="control|alt|F6"> | 1102 | shortcut="alt|shift|F6"> |
1103 | <on_click function="Advanced.ToggleFeature" | 1103 | <on_click function="Advanced.ToggleFeature" |
1104 | userdata="fog" /> | 1104 | userdata="fog" /> |
1105 | <on_check function="Advanced.CheckFeature" | 1105 | <on_check function="Advanced.CheckFeature" |
@@ -1107,14 +1107,14 @@ | |||
1107 | </menu_item_check> | 1107 | </menu_item_check> |
1108 | <menu_item_check name="Palletized Textures" | 1108 | <menu_item_check name="Palletized Textures" |
1109 | label="Palletized Textures" | 1109 | label="Palletized Textures" |
1110 | shortcut="control|alt|F7"> | 1110 | shortcut="alt|shift|F7"> |
1111 | <on_click function="Advanced.ToggleFeature" | 1111 | <on_click function="Advanced.ToggleFeature" |
1112 | userdata="palette" /> | 1112 | userdata="palette" /> |
1113 | <on_check function="Advanced.CheckFeature" | 1113 | <on_check function="Advanced.CheckFeature" |
1114 | userdata="palette" /> | 1114 | userdata="palette" /> |
1115 | </menu_item_check> | 1115 | </menu_item_check> |
1116 | <menu_item_check name="Test FRInfo" label="Test FRInfo" | 1116 | <menu_item_check name="Test FRInfo" label="Test FRInfo" |
1117 | shortcut="control|alt|F8"> | 1117 | shortcut="alt|shift|F8"> |
1118 | <on_click function="Advanced.ToggleFeature" | 1118 | <on_click function="Advanced.ToggleFeature" |
1119 | userdata="fr info" /> | 1119 | userdata="fr info" /> |
1120 | <on_check function="Advanced.CheckFeature" | 1120 | <on_check function="Advanced.CheckFeature" |
@@ -1122,7 +1122,7 @@ | |||
1122 | </menu_item_check> | 1122 | </menu_item_check> |
1123 | <menu_item_check name="Flexible Objects" | 1123 | <menu_item_check name="Flexible Objects" |
1124 | label="Flexible Objects" | 1124 | label="Flexible Objects" |
1125 | shortcut="control|alt|F9"> | 1125 | shortcut="alt|shift|F9"> |
1126 | <on_click function="Advanced.ToggleFeature" | 1126 | <on_click function="Advanced.ToggleFeature" |
1127 | userdata="flexible" /> | 1127 | userdata="flexible" /> |
1128 | <on_check function="Advanced.CheckFeature" | 1128 | <on_check function="Advanced.CheckFeature" |