aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra
diff options
context:
space:
mode:
authorMcCabe Maxsted2011-03-04 21:35:09 -0700
committerMcCabe Maxsted2011-03-04 21:35:09 -0700
commit8e616edb3d12024518994e3d64d6b5dd009f6568 (patch)
tree9025b676911e17ccafe2341cc2958df032eb3a71 /linden/indra
parentMerge remote branch 'thickbrick/weekly' into weekly (diff)
parentupdate openal and pulse headers to pulseaudio 0.9.21 on linux* (diff)
downloadmeta-impy-8e616edb3d12024518994e3d64d6b5dd009f6568.zip
meta-impy-8e616edb3d12024518994e3d64d6b5dd009f6568.tar.gz
meta-impy-8e616edb3d12024518994e3d64d6b5dd009f6568.tar.bz2
meta-impy-8e616edb3d12024518994e3d64d6b5dd009f6568.tar.xz
Merge remote branch 'armin/weekly' into weekly
Diffstat (limited to 'linden/indra')
-rw-r--r--linden/indra/llcommon/llerror.cpp2
-rw-r--r--linden/indra/llplugin/CMakeLists.txt1
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmedia.cpp7
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmediaowner.h2
-rw-r--r--linden/indra/llplugin/llplugincookiestore.cpp2
-rwxr-xr-xlinden/indra/llplugin/llplugininstance.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginmessage.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginmessagepipe.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginprocesschild.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginprocessparent.cpp2
-rwxr-xr-xlinden/indra/llplugin/llpluginsharedmemory.cpp3
-rwxr-xr-xlinden/indra/llplugin/slplugin/slplugin.cpp40
-rwxr-xr-xlinden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp106
-rw-r--r--linden/indra/newview/app_settings/logcontrol.xml4
-rw-r--r--linden/indra/newview/app_settings/settings.xml12
-rw-r--r--linden/indra/newview/hippolimits.cpp5
-rw-r--r--linden/indra/newview/hippolimits.h3
-rw-r--r--linden/indra/newview/kowopenregionsettings.cpp7
-rw-r--r--linden/indra/newview/llfloaterchat.cpp1
-rw-r--r--linden/indra/newview/llfloaterhtml.cpp253
-rw-r--r--linden/indra/newview/llfloaterhtml.h77
-rw-r--r--linden/indra/newview/llfloatermediabrowser.cpp5
-rw-r--r--linden/indra/newview/llmediactrl.cpp8
-rw-r--r--linden/indra/newview/llpanellogin.cpp15
-rw-r--r--linden/indra/newview/llvoiceclient.cpp23
-rw-r--r--linden/indra/newview/llvoiceclient.h3
-rw-r--r--linden/indra/newview/skins/default/html/en-us/loading-error/index.html54
-rw-r--r--linden/indra/newview/skins/default/html/en-us/loading/loading.html9
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py14
29 files changed, 219 insertions, 447 deletions
diff --git a/linden/indra/llcommon/llerror.cpp b/linden/indra/llcommon/llerror.cpp
index a9587c6..532a453 100644
--- a/linden/indra/llcommon/llerror.cpp
+++ b/linden/indra/llcommon/llerror.cpp
@@ -563,7 +563,7 @@ namespace
563#if LL_WINDOWS 563#if LL_WINDOWS
564 LLError::addRecorder(new RecordToWinDebug); 564 LLError::addRecorder(new RecordToWinDebug);
565#endif 565#endif
566 566 llwarns << "Load LogControlFile from Directory:"<< dir << llendl;
567 LogControlFile& e = LogControlFile::fromDirectory(dir); 567 LogControlFile& e = LogControlFile::fromDirectory(dir);
568 568
569 // NOTE: We want to explicitly load the file before we add it to the event timer 569 // NOTE: We want to explicitly load the file before we add it to the event timer
diff --git a/linden/indra/llplugin/CMakeLists.txt b/linden/indra/llplugin/CMakeLists.txt
index 7a7f4e5..5dbe07c 100644
--- a/linden/indra/llplugin/CMakeLists.txt
+++ b/linden/indra/llplugin/CMakeLists.txt
@@ -20,7 +20,6 @@ include_directories(
20 ${LLRENDER_INCLUDE_DIRS} 20 ${LLRENDER_INCLUDE_DIRS}
21 ${LLXML_INCLUDE_DIRS} 21 ${LLXML_INCLUDE_DIRS}
22 ${LLWINDOW_INCLUDE_DIRS} 22 ${LLWINDOW_INCLUDE_DIRS}
23 ${LLQTWEBKIT_INCLUDE_DIR}
24 ) 23 )
25 24
26set(llplugin_SOURCE_FILES 25set(llplugin_SOURCE_FILES
diff --git a/linden/indra/llplugin/llpluginclassmedia.cpp b/linden/indra/llplugin/llpluginclassmedia.cpp
index 5a81c46..f0a44f7 100755
--- a/linden/indra/llplugin/llpluginclassmedia.cpp
+++ b/linden/indra/llplugin/llpluginclassmedia.cpp
@@ -33,14 +33,14 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer
37
36#include "linden_common.h" 38#include "linden_common.h"
37#include "indra_constants.h" 39#include "indra_constants.h"
38 40
39#include "llpluginclassmedia.h" 41#include "llpluginclassmedia.h"
40#include "llpluginmessageclasses.h" 42#include "llpluginmessageclasses.h"
41 43
42#include "llqtwebkit.h"
43
44static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256; 44static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256;
45 45
46static int nextPowerOf2( int value ) 46static int nextPowerOf2( int value )
@@ -777,7 +777,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
777 mDirtyRect.unionWith(newDirtyRect); 777 mDirtyRect.unionWith(newDirtyRect);
778 } 778 }
779 779
780 LL_DEBUGS("PluginClassMedia") << "adjusted incoming rect is: (" 780 LL_DEBUGS("PluginClassMediaRect") << "adjusted incoming rect is: ("
781 << newDirtyRect.mLeft << ", " 781 << newDirtyRect.mLeft << ", "
782 << newDirtyRect.mTop << ", " 782 << newDirtyRect.mTop << ", "
783 << newDirtyRect.mRight << ", " 783 << newDirtyRect.mRight << ", "
@@ -973,6 +973,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
973 { 973 {
974 mClickURL = message.getValue("uri"); 974 mClickURL = message.getValue("uri");
975 mClickTarget = message.getValue("target"); 975 mClickTarget = message.getValue("target");
976 LL_DEBUGS("PluginClassMedia") << "Click target \"" << mClickTarget << "\"" << LL_ENDL;
976 mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF); 977 mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF);
977 } 978 }
978 else if(message_name == "click_nofollow") 979 else if(message_name == "click_nofollow")
diff --git a/linden/indra/llplugin/llpluginclassmediaowner.h b/linden/indra/llplugin/llpluginclassmediaowner.h
index 9d1f352..0e54f7f 100755
--- a/linden/indra/llplugin/llpluginclassmediaowner.h
+++ b/linden/indra/llplugin/llpluginclassmediaowner.h
@@ -41,7 +41,7 @@
41#include <queue> 41#include <queue>
42 42
43class LLPluginClassMedia; 43class LLPluginClassMedia;
44class LLPluginCookieStore; 44//class LLPluginCookieStore; // IMPRUDENCE: this is currently not used
45 45
46class LLPluginClassMediaOwner 46class LLPluginClassMediaOwner
47{ 47{
diff --git a/linden/indra/llplugin/llplugincookiestore.cpp b/linden/indra/llplugin/llplugincookiestore.cpp
index 283ba35..6b193de 100644
--- a/linden/indra/llplugin/llplugincookiestore.cpp
+++ b/linden/indra/llplugin/llplugincookiestore.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is currently not used
37
36#include "linden_common.h" 38#include "linden_common.h"
37#include "indra_constants.h" 39#include "indra_constants.h"
38 40
diff --git a/linden/indra/llplugin/llplugininstance.cpp b/linden/indra/llplugin/llplugininstance.cpp
index 67457f2..399f157 100755
--- a/linden/indra/llplugin/llplugininstance.cpp
+++ b/linden/indra/llplugin/llplugininstance.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llplugininstance.h" 40#include "llplugininstance.h"
diff --git a/linden/indra/llplugin/llpluginmessage.cpp b/linden/indra/llplugin/llpluginmessage.cpp
index 6452f4a..0810a04 100755
--- a/linden/indra/llplugin/llpluginmessage.cpp
+++ b/linden/indra/llplugin/llpluginmessage.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer and the SLPlugin and the libmedia_plugin_* libraries
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginmessage.h" 40#include "llpluginmessage.h"
diff --git a/linden/indra/llplugin/llpluginmessagepipe.cpp b/linden/indra/llplugin/llpluginmessagepipe.cpp
index ac3a902..2cad188 100755
--- a/linden/indra/llplugin/llpluginmessagepipe.cpp
+++ b/linden/indra/llplugin/llpluginmessagepipe.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer and the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginmessagepipe.h" 40#include "llpluginmessagepipe.h"
diff --git a/linden/indra/llplugin/llpluginprocesschild.cpp b/linden/indra/llplugin/llpluginprocesschild.cpp
index a1291c0..0d95cac 100755
--- a/linden/indra/llplugin/llpluginprocesschild.cpp
+++ b/linden/indra/llplugin/llpluginprocesschild.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginprocesschild.h" 40#include "llpluginprocesschild.h"
diff --git a/linden/indra/llplugin/llpluginprocessparent.cpp b/linden/indra/llplugin/llpluginprocessparent.cpp
index 5a66279..26572a0 100755
--- a/linden/indra/llplugin/llpluginprocessparent.cpp
+++ b/linden/indra/llplugin/llpluginprocessparent.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginprocessparent.h" 40#include "llpluginprocessparent.h"
diff --git a/linden/indra/llplugin/llpluginsharedmemory.cpp b/linden/indra/llplugin/llpluginsharedmemory.cpp
index 6becb8d..882a2a1 100755
--- a/linden/indra/llplugin/llpluginsharedmemory.cpp
+++ b/linden/indra/llplugin/llpluginsharedmemory.cpp
@@ -33,6 +33,8 @@
33 * @endcond 33 * @endcond
34 */ 34 */
35 35
36/// IMPRUDENCE: this is part of the viewer and the SLPlugin
37
36#include "linden_common.h" 38#include "linden_common.h"
37 39
38#include "llpluginsharedmemory.h" 40#include "llpluginsharedmemory.h"
@@ -89,7 +91,6 @@
89#include <windows.h> 91#include <windows.h>
90#endif // USE_APR_SHARED_MEMORY 92#endif // USE_APR_SHARED_MEMORY
91 93
92
93int LLPluginSharedMemory::sSegmentNumber = 0; 94int LLPluginSharedMemory::sSegmentNumber = 0;
94 95
95std::string LLPluginSharedMemory::createName(void) 96std::string LLPluginSharedMemory::createName(void)
diff --git a/linden/indra/llplugin/slplugin/slplugin.cpp b/linden/indra/llplugin/slplugin/slplugin.cpp
index 878577b..347f1de 100755
--- a/linden/indra/llplugin/slplugin/slplugin.cpp
+++ b/linden/indra/llplugin/slplugin/slplugin.cpp
@@ -35,6 +35,7 @@
35 * @endcond 35 * @endcond
36 */ 36 */
37 37
38/// IMPRUDENCE: this is part of the SLPlugin
38 39
39#include "linden_common.h" 40#include "linden_common.h"
40 41
@@ -53,6 +54,20 @@
53 #include <signal.h> 54 #include <signal.h>
54#endif 55#endif
55 56
57//imprudence: or we include lldir, or use apache runtime
58//though the one is probably bloat and the other we rather want to avoid
59#include <stdio.h> // FILENAME_MAX
60#ifdef WINDOWS
61 #include <direct.h>
62 #define getImpruDir _getcwd
63 #define DIR_DELIMITER "\\"
64#else
65 #include <unistd.h>
66 #define getImpruDir getcwd
67 #define DIR_DELIMITER "/"
68#endif
69
70
56/* 71/*
57 On Mac OS, since we call WaitNextEvent, this process will show up in the dock unless we set the LSBackgroundOnly or LSUIElement flag in the Info.plist. 72 On Mac OS, since we call WaitNextEvent, this process will show up in the dock unless we set the LSBackgroundOnly or LSUIElement flag in the Info.plist.
58 73
@@ -187,9 +202,28 @@ int main(int argc, char **argv)
187{ 202{
188 // Set up llerror logging 203 // Set up llerror logging
189 { 204 {
190 LLError::initForApplication("."); 205 std::string path;
191 LLError::setDefaultLevel(LLError::LEVEL_INFO); 206 char impruPath[FILENAME_MAX];
192// LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG); 207
208 if (!getImpruDir(impruPath, sizeof(impruPath)))
209 {
210 path = "."; //FIXME: root directory of the system - bad idea
211 }
212 else
213 {
214 path = std::string(impruPath);
215
216 path.append(DIR_DELIMITER);
217 path.append("app_settings");
218 }
219 LLError::initForApplication(path);
220// LLError::setDefaultLevel(LLError::LEVEL_INFO);
221// LLError::setPrintLocation(true);
222// LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG);
223// LLError::setTagLevel("PluginPipe", LLError::LEVEL_DEBUG);
224// LLError::setTagLevel("PluginChild", LLError::LEVEL_DEBUG);
225// LLError::setTagLevel("PluginInstance", LLError::LEVEL_DEBUG);
226
193// LLError::logToFile("slplugin.log"); 227// LLError::logToFile("slplugin.log");
194 } 228 }
195 229
diff --git a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
index 7e2833a..553cdd5 100755
--- a/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
+++ b/linden/indra/media_plugins/gstreamer010/media_plugin_gstreamer010.cpp
@@ -181,7 +181,7 @@ MediaPluginGStreamer010::MediaPluginGStreamer010(
181 mVideoSink ( NULL ), 181 mVideoSink ( NULL ),
182 mCommand ( COMMAND_NONE ) 182 mCommand ( COMMAND_NONE )
183{ 183{
184 writeToLog("MediaPluginGStreamer010 PID=%u", U32(LL_GETPID())); 184 writeToLog((char*)"MediaPluginGStreamer010 PID=%u", U32(LL_GETPID()));
185} 185}
186 186
187/////////////////////////////////////////////////////////////////////////////// 187///////////////////////////////////////////////////////////////////////////////
@@ -236,7 +236,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
236 GST_MESSAGE_TYPE(message) != GST_MESSAGE_BUFFERING && 236 GST_MESSAGE_TYPE(message) != GST_MESSAGE_BUFFERING &&
237 GST_MESSAGE_TYPE(message) != GST_MESSAGE_TAG) 237 GST_MESSAGE_TYPE(message) != GST_MESSAGE_TAG)
238 { 238 {
239 writeToLog("Got GST message type: %s", GST_MESSAGE_TYPE_NAME (message)); 239 writeToLog((char*)"Got GST message type: %s", GST_MESSAGE_TYPE_NAME (message));
240 } 240 }
241 241
242 switch (GST_MESSAGE_TYPE (message)) 242 switch (GST_MESSAGE_TYPE (message))
@@ -246,7 +246,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
246 // NEEDS GST 0.10.11+ and America discovered by C.Columbus 246 // NEEDS GST 0.10.11+ and America discovered by C.Columbus
247 gint percent = 0; 247 gint percent = 0;
248 gst_message_parse_buffering(message, &percent); 248 gst_message_parse_buffering(message, &percent);
249 writeToLog("GST buffering: %d%%", percent); 249 writeToLog((char*)"GST buffering: %d%%", percent);
250 250
251 break; 251 break;
252 } 252 }
@@ -260,7 +260,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
260 &pending_state); 260 &pending_state);
261 #ifdef LL_GST_REPORT_STATE_CHANGES 261 #ifdef LL_GST_REPORT_STATE_CHANGES
262 // not generally very useful, and rather spammy. 262 // not generally very useful, and rather spammy.
263 writeToLog("state change (old,<new>,pending): %s,<%s>,%s", 263 writeToLog((char*)"state change (old,<new>,pending): %s,<%s>,%s",
264 get_gst_state_name(old_state), 264 get_gst_state_name(old_state),
265 get_gst_state_name(new_state), 265 get_gst_state_name(new_state),
266 get_gst_state_name(pending_state)); 266 get_gst_state_name(pending_state));
@@ -290,7 +290,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
290 gchar *debug = NULL; 290 gchar *debug = NULL;
291 291
292 gst_message_parse_error (message, &err, &debug); 292 gst_message_parse_error (message, &err, &debug);
293 writeToLog("GST error: %s", err?err->message:"(unknown)"); 293 writeToLog((char*)"GST error: %s", err?err->message:"(unknown)");
294 if (err) 294 if (err)
295 g_error_free (err); 295 g_error_free (err);
296 g_free (debug); 296 g_free (debug);
@@ -307,7 +307,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
307 gchar *debug = NULL; 307 gchar *debug = NULL;
308 308
309 gst_message_parse_info (message, &err, &debug); 309 gst_message_parse_info (message, &err, &debug);
310 writeToLog("GST info: %s", err?err->message:"(unknown)"); 310 writeToLog((char*)"GST info: %s", err?err->message:"(unknown)");
311 if (err) 311 if (err)
312 g_error_free (err); 312 g_error_free (err);
313 g_free (debug); 313 g_free (debug);
@@ -320,7 +320,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
320 gchar *debug = NULL; 320 gchar *debug = NULL;
321 321
322 gst_message_parse_warning (message, &err, &debug); 322 gst_message_parse_warning (message, &err, &debug);
323 writeToLog("GST warning: %s", err?err->message:"(unknown)"); 323 writeToLog((char*)"GST warning: %s", err?err->message:"(unknown)");
324 if (err) 324 if (err)
325 g_error_free (err); 325 g_error_free (err);
326 g_free (debug); 326 g_free (debug);
@@ -337,7 +337,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
337 337
338 if ( gst_tag_list_get_string(new_tags, GST_TAG_TITLE, &title) ) 338 if ( gst_tag_list_get_string(new_tags, GST_TAG_TITLE, &title) )
339 { 339 {
340 //writeToLog("Title: %s", title); 340 //writeToLog((char*)"Title: %s", title);
341 std::string newtitle(title); 341 std::string newtitle(title);
342 gst_tag_list_free(new_tags); 342 gst_tag_list_free(new_tags);
343 343
@@ -356,10 +356,10 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
356 case GST_MESSAGE_EOS: 356 case GST_MESSAGE_EOS:
357 { 357 {
358 /* end-of-stream */ 358 /* end-of-stream */
359 writeToLog("GST end-of-stream."); 359 writeToLog((char*)"GST end-of-stream.");
360 if (mIsLooping) 360 if (mIsLooping)
361 { 361 {
362 //writeToLog("looping media..."); 362 //writeToLog((char*)"looping media...");
363 double eos_pos_sec = 0.0F; 363 double eos_pos_sec = 0.0F;
364 bool got_eos_position = getTimePos(eos_pos_sec); 364 bool got_eos_position = getTimePos(eos_pos_sec);
365 365
@@ -368,7 +368,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
368 // if we know that the movie is really short, don't 368 // if we know that the movie is really short, don't
369 // loop it else it can easily become a time-hog 369 // loop it else it can easily become a time-hog
370 // because of GStreamer spin-up overhead 370 // because of GStreamer spin-up overhead
371 writeToLog("really short movie (%0.3fsec) - not gonna loop this, pausing instead.", eos_pos_sec); 371 writeToLog((char*)"really short movie (%0.3fsec) - not gonna loop this, pausing instead.", eos_pos_sec);
372 // inject a COMMAND_PAUSE 372 // inject a COMMAND_PAUSE
373 mCommand = COMMAND_PAUSE; 373 mCommand = COMMAND_PAUSE;
374 } 374 }
@@ -387,7 +387,7 @@ MediaPluginGStreamer010::processGSTEvents(GstBus *bus,
387 else 387 else
388 #endif // LLGST_LOOP_BY_SEEKING 388 #endif // LLGST_LOOP_BY_SEEKING
389 { // use clumsy stop-start to loop 389 { // use clumsy stop-start to loop
390 writeToLog("didn't loop by rewinding - stopping and starting instead..."); 390 writeToLog((char*)"didn't loop by rewinding - stopping and starting instead...");
391 stop(); 391 stop();
392 play(1.0); 392 play(1.0);
393 } 393 }
@@ -433,7 +433,7 @@ MediaPluginGStreamer010::navigateTo ( const std::string urlIn )
433 433
434 setStatus(STATUS_LOADING); 434 setStatus(STATUS_LOADING);
435 435
436 writeToLog("Setting media URI: %s", urlIn.c_str()); 436 writeToLog((char*)"Setting media URI: %s", urlIn.c_str());
437 437
438 mSeekWanted = false; 438 mSeekWanted = false;
439 439
@@ -461,13 +461,13 @@ MediaPluginGStreamer010::update(int milliseconds)
461 if (!mDoneInit) 461 if (!mDoneInit)
462 return false; // error 462 return false; // error
463 463
464 //writeToLog("updating media..."); 464 //writeToLog((char*)"updating media...");
465 465
466 // sanity check 466 // sanity check
467 if (NULL == mPump || 467 if (NULL == mPump ||
468 NULL == mPlaybin) 468 NULL == mPlaybin)
469 { 469 {
470 writeToLog("dead media..."); 470 writeToLog((char*)"dead media...");
471 return false; 471 return false;
472 } 472 }
473 473
@@ -497,7 +497,7 @@ MediaPluginGStreamer010::update(int milliseconds)
497 GST_OBJECT_LOCK(mVideoSink); 497 GST_OBJECT_LOCK(mVideoSink);
498 if (mVideoSink->retained_frame_ready) 498 if (mVideoSink->retained_frame_ready)
499 { 499 {
500 writeToLog("NEW FRAME READY"); 500 writeToLog((char*)"NEW FRAME READY");
501 501
502 if (mVideoSink->retained_frame_width != mCurrentWidth || 502 if (mVideoSink->retained_frame_width != mCurrentWidth ||
503 mVideoSink->retained_frame_height != mCurrentHeight) 503 mVideoSink->retained_frame_height != mCurrentHeight)
@@ -528,7 +528,7 @@ MediaPluginGStreamer010::update(int milliseconds)
528 GST_OBJECT_UNLOCK(mVideoSink); 528 GST_OBJECT_UNLOCK(mVideoSink);
529 529
530 mCurrentRowbytes = neww * newd; 530 mCurrentRowbytes = neww * newd;
531 writeToLog("video container resized to %dx%d", 531 writeToLog((char*)"video container resized to %dx%d",
532 neww, newh); 532 neww, newh);
533 533
534 mDepth = newd; 534 mDepth = newd;
@@ -556,7 +556,7 @@ MediaPluginGStreamer010::update(int milliseconds)
556 } 556 }
557 557
558 GST_OBJECT_UNLOCK(mVideoSink); 558 GST_OBJECT_UNLOCK(mVideoSink);
559 writeToLog("NEW FRAME REALLY TRULY CONSUMED, TELLING HOST"); 559 writeToLog((char*)"NEW FRAME REALLY TRULY CONSUMED, TELLING HOST");
560 560
561 setDirty(0,0,mCurrentWidth,mCurrentHeight); 561 setDirty(0,0,mCurrentWidth,mCurrentHeight);
562 } 562 }
@@ -567,7 +567,7 @@ MediaPluginGStreamer010::update(int milliseconds)
567 567
568 GST_OBJECT_UNLOCK(mVideoSink); 568 GST_OBJECT_UNLOCK(mVideoSink);
569 569
570 writeToLog("NEW FRAME not consumed, still waiting for a shm segment and/or shm resize"); 570 writeToLog((char*)"NEW FRAME not consumed, still waiting for a shm segment and/or shm resize");
571 } 571 }
572 572
573 return true; 573 return true;
@@ -606,7 +606,7 @@ MediaPluginGStreamer010::mouseMove( int x, int y )
606bool 606bool
607MediaPluginGStreamer010::pause() 607MediaPluginGStreamer010::pause()
608{ 608{
609 writeToLog("pausing media..."); 609 writeToLog((char*)"pausing media...");
610 // todo: error-check this? 610 // todo: error-check this?
611 gst_element_set_state(mPlaybin, GST_STATE_PAUSED); 611 gst_element_set_state(mPlaybin, GST_STATE_PAUSED);
612 return true; 612 return true;
@@ -615,7 +615,7 @@ MediaPluginGStreamer010::pause()
615bool 615bool
616MediaPluginGStreamer010::stop() 616MediaPluginGStreamer010::stop()
617{ 617{
618 writeToLog("stopping media..."); 618 writeToLog((char*)"stopping media...");
619 // todo: error-check this? 619 // todo: error-check this?
620 gst_element_set_state(mPlaybin, GST_STATE_READY); 620 gst_element_set_state(mPlaybin, GST_STATE_READY);
621 return true; 621 return true;
@@ -625,7 +625,7 @@ bool
625MediaPluginGStreamer010::play(double rate) 625MediaPluginGStreamer010::play(double rate)
626{ 626{
627 // NOTE: we don't actually support non-natural rate. 627 // NOTE: we don't actually support non-natural rate.
628 writeToLog("playing media... rate=%f", rate); 628 writeToLog((char*)"playing media... rate=%f", rate);
629 // todo: error-check this? 629 // todo: error-check this?
630 gst_element_set_state(mPlaybin, GST_STATE_PLAYING); 630 gst_element_set_state(mPlaybin, GST_STATE_PLAYING);
631 return true; 631 return true;
@@ -662,7 +662,7 @@ MediaPluginGStreamer010::seek(double time_sec)
662 GST_SEEK_TYPE_SET, gint64(time_sec*GST_SECOND), 662 GST_SEEK_TYPE_SET, gint64(time_sec*GST_SECOND),
663 GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); 663 GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE);
664 } 664 }
665 writeToLog("MEDIA SEEK REQUEST to %f sec result was %d", 665 writeToLog((char*)"MEDIA SEEK REQUEST to %f sec result was %d",
666 float(time_sec), int(success)); 666 float(time_sec), int(success));
667 return success; 667 return success;
668} 668}
@@ -716,7 +716,7 @@ MediaPluginGStreamer010::load()
716 716
717 setStatus(STATUS_LOADING); 717 setStatus(STATUS_LOADING);
718 718
719 writeToLog("setting up media..."); 719 writeToLog((char*)"setting up media...");
720 720
721 mIsLooping = false; 721 mIsLooping = false;
722 mVolume = (float) 0.1234567; // minor hack to force an initial volume update 722 mVolume = (float) 0.1234567; // minor hack to force an initial volume update
@@ -755,7 +755,7 @@ MediaPluginGStreamer010::load()
755 GST_SLVIDEO(gst_element_factory_make ("private-slvideo", "slvideo")); 755 GST_SLVIDEO(gst_element_factory_make ("private-slvideo", "slvideo"));
756 if (!mVideoSink) 756 if (!mVideoSink)
757 { 757 {
758 writeToLog("Could not instantiate private-slvideo element."); 758 writeToLog((char*)"Could not instantiate private-slvideo element.");
759 // todo: cleanup. 759 // todo: cleanup.
760 setStatus(STATUS_ERROR); 760 setStatus(STATUS_ERROR);
761 return false; // error 761 return false; // error
@@ -774,7 +774,7 @@ MediaPluginGStreamer010::unload ()
774 if (!mDoneInit) 774 if (!mDoneInit)
775 return false; // error 775 return false; // error
776 776
777 writeToLog("unloading media..."); 777 writeToLog((char*)"unloading media...");
778 778
779 // stop getting callbacks for this bus 779 // stop getting callbacks for this bus
780 g_source_remove(mBusWatchID); 780 g_source_remove(mBusWatchID);
@@ -832,7 +832,7 @@ MediaPluginGStreamer010::startup()
832 "libgstvideo-0.10.so.0") ) 832 "libgstvideo-0.10.so.0") )
833#endif 833#endif
834 { 834 {
835 writeToLog("Couldn't find suitable GStreamer 0.10 support on this system - video playback disabled."); 835 writeToLog((char*)"Couldn't find suitable GStreamer 0.10 support on this system - video playback disabled.");
836 return false; 836 return false;
837 } 837 }
838*/ 838*/
@@ -842,7 +842,7 @@ MediaPluginGStreamer010::startup()
842// } 842// }
843// else 843// else
844// { 844// {
845// writeToLog("gst_segtrap_set_enabled() is not available; plugin crashes won't be caught."); 845// writeToLog((char*)"gst_segtrap_set_enabled() is not available; plugin crashes won't be caught.");
846// } 846// }
847/* 847/*
848#if LL_LINUX 848#if LL_LINUX
@@ -885,12 +885,12 @@ MediaPluginGStreamer010::startup()
885 { 885 {
886 if (err) 886 if (err)
887 { 887 {
888 writeToLog("GST init failed: %s", err->message); 888 writeToLog((char*)"GST init failed: %s", err->message);
889 g_error_free(err); 889 g_error_free(err);
890 } 890 }
891 else 891 else
892 { 892 {
893 writeToLog("GST init failed for unspecified reason."); 893 writeToLog((char*)"GST init failed for unspecified reason.");
894 } 894 }
895 return false; 895 return false;
896 } 896 }
@@ -903,7 +903,7 @@ MediaPluginGStreamer010::startup()
903 gst_slvideo_init_class(); 903 gst_slvideo_init_class();
904 904
905 // List the plugins GStreamer can find 905 // List the plugins GStreamer can find
906 writeToLog("Found GStreamer plugins:"); 906 writeToLog((char*)"Found GStreamer plugins:");
907 GList *list; 907 GList *list;
908 GstRegistry *registry = gst_registry_get_default(); 908 GstRegistry *registry = gst_registry_get_default();
909 std::string loaded = "No"; 909 std::string loaded = "No";
@@ -913,7 +913,7 @@ MediaPluginGStreamer010::startup()
913 { 913 {
914 GstPlugin *list_plugin = (GstPlugin *)list->data; 914 GstPlugin *list_plugin = (GstPlugin *)list->data;
915 if (gst_plugin_is_loaded(list_plugin)) loaded = "Yes"; 915 if (gst_plugin_is_loaded(list_plugin)) loaded = "Yes";
916 writeToLog("%s, loaded? %s", gst_plugin_get_name(list_plugin), loaded.c_str()); 916 writeToLog((char*)"%s, loaded? %s", gst_plugin_get_name(list_plugin), loaded.c_str());
917 } 917 }
918 gst_plugin_list_free(list); 918 gst_plugin_list_free(list);
919 919
@@ -960,11 +960,11 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
960 960
961 if( imp_dir == "" ) 961 if( imp_dir == "" )
962 { 962 {
963 writeToLog("Could not get application directory, not setting GST_PLUGIN_PATH."); 963 writeToLog((char*)"Could not get application directory, not setting GST_PLUGIN_PATH.");
964 return; 964 return;
965 } 965 }
966 966
967 writeToLog("Imprudence is installed at %s", imp_dir.c_str()); 967 writeToLog((char*)"Imprudence is installed at %s", imp_dir.c_str());
968 968
969 // ":" on Mac and 'Nix, ";" on Windows 969 // ":" on Mac and 'Nix, ";" on Windows
970 std::string separator = G_SEARCHPATH_SEPARATOR_S; 970 std::string separator = G_SEARCHPATH_SEPARATOR_S;
@@ -974,7 +974,7 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
974 char *old_path = getenv("GST_PLUGIN_PATH"); 974 char *old_path = getenv("GST_PLUGIN_PATH");
975 if(old_path == NULL) 975 if(old_path == NULL)
976 { 976 {
977 writeToLog("Did not find user-set GST_PLUGIN_PATH."); 977 writeToLog((char*)"Did not find user-set GST_PLUGIN_PATH.");
978 } 978 }
979 else 979 else
980 { 980 {
@@ -1005,11 +1005,11 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
1005 1005
1006 if( put_result == -1 ) 1006 if( put_result == -1 )
1007 { 1007 {
1008 writeToLog("Setting GST_PLUGIN_PATH failed!"); 1008 writeToLog((char*)"Setting GST_PLUGIN_PATH failed!");
1009 } 1009 }
1010 else 1010 else
1011 { 1011 {
1012 writeToLog("GST_PLUGIN_PATH set to %s", getenv("GST_PLUGIN_PATH")); 1012 writeToLog((char*)"GST_PLUGIN_PATH set to %s", getenv("GST_PLUGIN_PATH"));
1013 } 1013 }
1014 1014
1015 // Don't load system plugins. We only want to use ours, to avoid conflicts. 1015 // Don't load system plugins. We only want to use ours, to avoid conflicts.
@@ -1021,7 +1021,7 @@ void MediaPluginGStreamer010::set_gst_plugin_path()
1021 1021
1022 if( put_result == -1 ) 1022 if( put_result == -1 )
1023 { 1023 {
1024 writeToLog("Setting GST_PLUGIN_SYSTEM_PATH=\"\" failed!"); 1024 writeToLog((char*)"Setting GST_PLUGIN_SYSTEM_PATH=\"\" failed!");
1025 } 1025 }
1026 1026
1027#endif // LL_WINDOWS || LL_DARWIN 1027#endif // LL_WINDOWS || LL_DARWIN
@@ -1039,7 +1039,7 @@ MediaPluginGStreamer010::sizeChanged()
1039 { 1039 {
1040 mNaturalWidth = mCurrentWidth; 1040 mNaturalWidth = mCurrentWidth;
1041 mNaturalHeight = mCurrentHeight; 1041 mNaturalHeight = mCurrentHeight;
1042 writeToLog("Media NATURAL size better detected as %dx%d", 1042 writeToLog((char*)"Media NATURAL size better detected as %dx%d",
1043 mNaturalWidth, mNaturalHeight); 1043 mNaturalWidth, mNaturalHeight);
1044 } 1044 }
1045 1045
@@ -1054,7 +1054,7 @@ MediaPluginGStreamer010::sizeChanged()
1054 message.setValue("name", mTextureSegmentName); 1054 message.setValue("name", mTextureSegmentName);
1055 message.setValueS32("width", mNaturalWidth); 1055 message.setValueS32("width", mNaturalWidth);
1056 message.setValueS32("height", mNaturalHeight); 1056 message.setValueS32("height", mNaturalHeight);
1057 writeToLog("<--- Sending size change request to application with name: '%s' - natural size is %d x %d", mTextureSegmentName.c_str(), mNaturalWidth, mNaturalHeight); 1057 writeToLog((char*)"<--- Sending size change request to application with name: '%s' - natural size is %d x %d", mTextureSegmentName.c_str(), mNaturalWidth, mNaturalHeight);
1058 sendMessage(message); 1058 sendMessage(message);
1059 } 1059 }
1060} 1060}
@@ -1077,11 +1077,11 @@ MediaPluginGStreamer010::closedown()
1077 1077
1078MediaPluginGStreamer010::~MediaPluginGStreamer010() 1078MediaPluginGStreamer010::~MediaPluginGStreamer010()
1079{ 1079{
1080 //writeToLog("MediaPluginGStreamer010 destructor"); 1080 //writeToLog((char*)"MediaPluginGStreamer010 destructor");
1081 1081
1082 closedown(); 1082 closedown();
1083 1083
1084 writeToLog("GStreamer010 closing down"); 1084 writeToLog((char*)"GStreamer010 closing down");
1085} 1085}
1086 1086
1087 1087
@@ -1125,11 +1125,11 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1125 1125
1126 if ( load() ) 1126 if ( load() )
1127 { 1127 {
1128 writeToLog("GStreamer010 media instance set up"); 1128 writeToLog((char*)"GStreamer010 media instance set up");
1129 } 1129 }
1130 else 1130 else
1131 { 1131 {
1132 writeToLog("GStreamer010 media instance failed to set up"); 1132 writeToLog((char*)"GStreamer010 media instance failed to set up");
1133 } 1133 }
1134 1134
1135 message.setValue("plugin_version", getVersion()); 1135 message.setValue("plugin_version", getVersion());
@@ -1156,7 +1156,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1156 std::string name = message_in.getValue("name"); 1156 std::string name = message_in.getValue("name");
1157 1157
1158 std::ostringstream str; 1158 std::ostringstream str;
1159 writeToLog("MediaPluginGStreamer010::receiveMessage: shared memory added, name: %s, size: %d, address: %p", name.c_str(), int(info.mSize), info.mAddress); 1159 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: shared memory added, name: %s, size: %d, address: %p", name.c_str(), int(info.mSize), info.mAddress);
1160 1160
1161 mSharedSegments.insert(SharedSegmentMap::value_type(name, info)); 1161 mSharedSegments.insert(SharedSegmentMap::value_type(name, info));
1162 } 1162 }
@@ -1164,7 +1164,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1164 { 1164 {
1165 std::string name = message_in.getValue("name"); 1165 std::string name = message_in.getValue("name");
1166 1166
1167 writeToLog("MediaPluginGStreamer010::receiveMessage: shared memory remove, name = %s", name.c_str()); 1167 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: shared memory remove, name = %s", name.c_str());
1168 1168
1169 SharedSegmentMap::iterator iter = mSharedSegments.find(name); 1169 SharedSegmentMap::iterator iter = mSharedSegments.find(name);
1170 if(iter != mSharedSegments.end()) 1170 if(iter != mSharedSegments.end())
@@ -1182,7 +1182,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1182 } 1182 }
1183 else 1183 else
1184 { 1184 {
1185 writeToLog("MediaPluginGStreamer010::receiveMessage: unknown shared memory region!"); 1185 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: unknown shared memory region!");
1186 } 1186 }
1187 1187
1188 // Send the response so it can be cleaned up. 1188 // Send the response so it can be cleaned up.
@@ -1193,7 +1193,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1193 else 1193 else
1194 { 1194 {
1195 std::ostringstream str; 1195 std::ostringstream str;
1196 writeToLog("MediaPluginGStreamer010::receiveMessage: unknown base message: %s", message_name.c_str()); 1196 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: unknown base message: %s", message_name.c_str());
1197 } 1197 }
1198 } 1198 }
1199 else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) 1199 else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA)
@@ -1236,7 +1236,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1236 S32 texture_height = message_in.getValueS32("texture_height"); 1236 S32 texture_height = message_in.getValueS32("texture_height");
1237 1237
1238 std::ostringstream str; 1238 std::ostringstream str;
1239 writeToLog("---->Got size change instruction from application with shm name: %s - size is %d x %d", name.c_str(), width, height); 1239 writeToLog((char*)"---->Got size change instruction from application with shm name: %s - size is %d x %d", name.c_str(), width, height);
1240 1240
1241 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response"); 1241 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response");
1242 message.setValue("name", name); 1242 message.setValue("name", name);
@@ -1252,8 +1252,8 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1252 SharedSegmentMap::iterator iter = mSharedSegments.find(name); 1252 SharedSegmentMap::iterator iter = mSharedSegments.find(name);
1253 if(iter != mSharedSegments.end()) 1253 if(iter != mSharedSegments.end())
1254 { 1254 {
1255 writeToLog("*** Got size change with matching shm, new size is %d x %d", width, height); 1255 writeToLog((char*)"*** Got size change with matching shm, new size is %d x %d", width, height);
1256 writeToLog("*** Got size change with matching shm, texture size size is %d x %d", texture_width, texture_height); 1256 writeToLog((char*)"*** Got size change with matching shm, texture size size is %d x %d", texture_width, texture_height);
1257 1257
1258 mPixels = (unsigned char*)iter->second.mAddress; 1258 mPixels = (unsigned char*)iter->second.mAddress;
1259 mTextureSegmentName = name; 1259 mTextureSegmentName = name;
@@ -1263,7 +1263,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1263 if (texture_width > 1 || 1263 if (texture_width > 1 ||
1264 texture_height > 1) // not a dummy size from the app, a real explicit forced size 1264 texture_height > 1) // not a dummy size from the app, a real explicit forced size
1265 { 1265 {
1266 writeToLog("**** = REAL RESIZE REQUEST FROM APP"); 1266 writeToLog((char*)"**** = REAL RESIZE REQUEST FROM APP");
1267 1267
1268 GST_OBJECT_LOCK(mVideoSink); 1268 GST_OBJECT_LOCK(mVideoSink);
1269 mVideoSink->resize_forced_always = true; 1269 mVideoSink->resize_forced_always = true;
@@ -1345,7 +1345,7 @@ void MediaPluginGStreamer010::receiveMessage(const char *message_string)
1345 } 1345 }
1346 else 1346 else
1347 { 1347 {
1348 writeToLog("MediaPluginGStreamer010::receiveMessage: unknown message class: %s", message_class.c_str()); 1348 writeToLog((char*)"MediaPluginGStreamer010::receiveMessage: unknown message class: %s", message_class.c_str());
1349 } 1349 }
1350 } 1350 }
1351} 1351}
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml
index 2c6c6a4..51bb456 100644
--- a/linden/indra/newview/app_settings/logcontrol.xml
+++ b/linden/indra/newview/app_settings/logcontrol.xml
@@ -57,7 +57,7 @@
57 <!--<string>Inventory</string>--> 57 <!--<string>Inventory</string>-->
58 <!--<string>HUDEffect</string>--> 58 <!--<string>HUDEffect</string>-->
59 <!--<string>MarkerFile</string>--> 59 <!--<string>MarkerFile</string>-->
60 <!--<string>MediaImpl</string>--> 60 <!--<string>Media</string>-->
61 <!--<string>MediaInfo</string>--> 61 <!--<string>MediaInfo</string>-->
62 <!--<string>MediaCallback</string>--> 62 <!--<string>MediaCallback</string>-->
63 <!--<string>MediaBuffering</string>--> 63 <!--<string>MediaBuffering</string>-->
@@ -65,6 +65,8 @@
65 <!--<string>MediaState</string>--> 65 <!--<string>MediaState</string>-->
66 66
67 <!--<string>Messaging</string>--> 67 <!--<string>Messaging</string>-->
68
69 <string>NewsBar</string>
68 <!--<string>Notifications</string>--> 70 <!--<string>Notifications</string>-->
69 71
70 <!--<string>Plugin</string>--> 72 <!--<string>Plugin</string>-->
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 17d4c3c..fbb51e8 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -37,7 +37,17 @@
37 <key>Value</key> 37 <key>Value</key>
38 <integer>0</integer> 38 <integer>0</integer>
39 </map> 39 </map>
40 40 <key>VoiceModule</key>
41 <map>
42 <key>Comment</key>
43 <string>Executable file that runs voice. Platform specific parts (like .exe on windows) are added automatically.</string>
44 <key>Persist</key>
45 <integer>1</integer>
46 <key>Type</key>
47 <string>String</string>
48 <key>Value</key>
49 <string>SLVoice</string>
50 </map>
41 <!-- Imprudence-specific settings --> 51 <!-- Imprudence-specific settings -->
42 52
43 <key>AllowEditingOfTrees</key> 53 <key>AllowEditingOfTrees</key>
diff --git a/linden/indra/newview/hippolimits.cpp b/linden/indra/newview/hippolimits.cpp
index d4c8efb..bb2e805 100644
--- a/linden/indra/newview/hippolimits.cpp
+++ b/linden/indra/newview/hippolimits.cpp
@@ -22,7 +22,8 @@ HippoLimits::HippoLimits()
22 mMinPrimScale(0.001f), 22 mMinPrimScale(0.001f),
23 mMaxPrimScale(256.0f), 23 mMaxPrimScale(256.0f),
24 mMaxLinkedPrims(-1), 24 mMaxLinkedPrims(-1),
25 mMaxDragDistance(0.f) 25 mMaxDragDistance(0.f),
26 mVoiceConnector("SLVoice")
26{ 27{
27 setLimits(); 28 setLimits();
28} 29}
@@ -68,6 +69,7 @@ void HippoLimits::setOpenSimLimits()
68 mEnableTeenMode = FALSE; 69 mEnableTeenMode = FALSE;
69 mEnforceMaxBuild = FALSE; 70 mEnforceMaxBuild = FALSE;
70 mRenderWater = TRUE; 71 mRenderWater = TRUE;
72 mVoiceConnector = "SLVoice";
71 73
72 if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) { 74 if (gHippoGridManager->getConnectedGrid()->isRenderCompat()) {
73 llinfos << "Using rendering compatible OpenSim limits" << llendl; 75 llinfos << "Using rendering compatible OpenSim limits" << llendl;
@@ -110,6 +112,7 @@ void HippoLimits::setSecondLifeLimits()
110 mEnableTeenMode = FALSE; 112 mEnableTeenMode = FALSE;
111 mEnforceMaxBuild = FALSE; 113 mEnforceMaxBuild = FALSE;
112 mRenderWater = TRUE; 114 mRenderWater = TRUE;
115 mVoiceConnector = "SLVoice";
113} 116}
114 117
115F32 HippoLimits::getMaxPrimScale() const 118F32 HippoLimits::getMaxPrimScale() const
diff --git a/linden/indra/newview/hippolimits.h b/linden/indra/newview/hippolimits.h
index 7792a2c..9d6b2f6 100644
--- a/linden/indra/newview/hippolimits.h
+++ b/linden/indra/newview/hippolimits.h
@@ -14,7 +14,7 @@ public:
14 const S32& getMaxLinkedPrims() const { return mMaxLinkedPrims; } 14 const S32& getMaxLinkedPrims() const { return mMaxLinkedPrims; }
15 const S32& getMaxPhysLinkedPrims() const { return mMaxPhysLinkedPrims; } 15 const S32& getMaxPhysLinkedPrims() const { return mMaxPhysLinkedPrims; }
16 const F32& getMaxInventoryItemsTransfer() const { return mMaxInventoryItemsTransfer; } 16 const F32& getMaxInventoryItemsTransfer() const { return mMaxInventoryItemsTransfer; }
17 17 const std::string& getVoiceConnector() const { return mVoiceConnector; }
18 18
19 // Returns the max prim size we can use on a grid 19 // Returns the max prim size we can use on a grid
20 F32 getMinPrimScale() const; 20 F32 getMinPrimScale() const;
@@ -59,6 +59,7 @@ public:
59 BOOL mEnableTeenMode; 59 BOOL mEnableTeenMode;
60 BOOL mEnforceMaxBuild; 60 BOOL mEnforceMaxBuild;
61 BOOL mRenderWater; 61 BOOL mRenderWater;
62 std::string mVoiceConnector;
62 63
63private: 64private:
64 void setOpenSimLimits(); 65 void setOpenSimLimits();
diff --git a/linden/indra/newview/kowopenregionsettings.cpp b/linden/indra/newview/kowopenregionsettings.cpp
index 8aac87c..ef14d2a 100644
--- a/linden/indra/newview/kowopenregionsettings.cpp
+++ b/linden/indra/newview/kowopenregionsettings.cpp
@@ -36,6 +36,7 @@
36#include "llviewerobject.h" 36#include "llviewerobject.h"
37#include "llfloaterregioninfo.h" 37#include "llfloaterregioninfo.h"
38#include "llfloaterworldmap.h" 38#include "llfloaterworldmap.h"
39#include "llvoiceclient.h"
39 40
40//DEBUG includes 41//DEBUG includes
41//#include "llsdserialize.h" //LLSDNotationStreamer - for dumping LLSD to string 42//#include "llsdserialize.h" //LLSDNotationStreamer - for dumping LLSD to string
@@ -200,6 +201,12 @@ class OpenRegionInfoUpdate : public LLHTTPNode
200 { 201 {
201 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1; 202 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1;
202 } 203 }
204 if ( body.has("Voice") )
205 {
206 gSavedSettings.setString("VoiceModule", body["Voice"].asString());
207 //gVoiceClient->close();
208 //gVoiceClient->start();
209 }
203 210
204 if (limitschanged) 211 if (limitschanged)
205 gFloaterTools->updateToolsSizeLimits(); 212 gFloaterTools->updateToolsSizeLimits();
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index e9ea14b..79dddaa 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -73,7 +73,6 @@
73#include "lllogchat.h" 73#include "lllogchat.h"
74#include "lltexteditor.h" 74#include "lltexteditor.h"
75#include "lltextparser.h" 75#include "lltextparser.h"
76#include "llfloaterhtml.h"
77#include "llweb.h" 76#include "llweb.h"
78#include "llstylemap.h" 77#include "llstylemap.h"
79#include "llviewermenu.h" 78#include "llviewermenu.h"
diff --git a/linden/indra/newview/llfloaterhtml.cpp b/linden/indra/newview/llfloaterhtml.cpp
deleted file mode 100644
index 5822ed5..0000000
--- a/linden/indra/newview/llfloaterhtml.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
1/**
2 * @file llfloaterhtml.cpp
3 * @brief In-world HTML dialog
4 *
5 * $LicenseInfo:firstyear=2005&license=viewergpl$
6 *
7 * Copyright (c) 2005-2009, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33#include "llviewerprecompiledheaders.h"
34
35#include "llfloaterhtml.h"
36
37// viewer includes
38#include "lluictrlfactory.h"
39#include "llviewercontrol.h"
40#include "lllineeditor.h"
41#include "llviewerwindow.h"
42#include "llweb.h"
43
44
45LLFloaterHtml* LLFloaterHtml::sInstance = 0;
46
47////////////////////////////////////////////////////////////////////////////////
48//
49LLFloaterHtml* LLFloaterHtml::getInstance()
50{
51 if ( ! sInstance )
52 sInstance = new LLFloaterHtml();
53
54 return sInstance;
55}
56
57////////////////////////////////////////////////////////////////////////////////
58//
59LLFloaterHtml::LLFloaterHtml()
60: LLFloater( std::string("HTML Floater") )
61
62 ,
63 mWebBrowser( 0 )
64{
65 LLUICtrlFactory::getInstance()->buildFloater( this, "floater_html.xml" );
66
67 childSetAction("back_btn", onClickBack, this);
68 childSetAction("home_btn", onClickHome, this);
69 childSetAction("forward_btn", onClickForward, this);
70 childSetAction("close_btn", onClickClose, this);
71 childSetCommitCallback("url_edit", onCommitUrlEdit, this );
72 childSetAction("go_btn", onClickGo, this );
73
74 // reposition floater from saved settings
75 LLRect rect = gSavedSettings.getRect( "FloaterHtmlRect" );
76 reshape( rect.getWidth(), rect.getHeight(), FALSE );
77 setRect( rect );
78
79 mWebBrowser = getChild<LLWebBrowserCtrl>("html_floater_browser" );
80 if ( mWebBrowser )
81 {
82 // open links in internal browser
83 mWebBrowser->setOpenInExternalBrowser( false );
84 }
85}
86
87////////////////////////////////////////////////////////////////////////////////
88//
89LLFloaterHtml::~LLFloaterHtml()
90{
91 // save position of floater
92 gSavedSettings.setRect( "FloaterHtmlRect", getRect() );
93
94 sInstance = 0;
95}
96
97////////////////////////////////////////////////////////////////////////////////
98// virtual
99void LLFloaterHtml::draw()
100{
101 // enable/disable buttons depending on state
102 if ( mWebBrowser )
103 {
104 bool enable_back = mWebBrowser->canNavigateBack();
105 childSetEnabled( "back_btn", enable_back );
106
107 bool enable_forward = mWebBrowser->canNavigateForward();
108 childSetEnabled( "forward_btn", enable_forward );
109 };
110
111 LLFloater::draw();
112}
113
114////////////////////////////////////////////////////////////////////////////////
115//
116void LLFloaterHtml::show( std::string content_id, bool open_link_external, bool open_app_slurls )
117{
118 // calculate the XML labels we'll need (if only XML folders worked)
119 std::string title_str = content_id + "_title";
120 std::string url_str = content_id + "_url";
121
122 std::string title = getString( title_str );
123 std::string url = getString( url_str );
124
125 show( url, title, open_link_external, open_app_slurls );
126}
127
128////////////////////////////////////////////////////////////////////////////////
129//
130void LLFloaterHtml::show( std::string start_url, std::string title, bool open_link_external, bool trusted_browser )
131{
132 // set the title
133 setTitle( title );
134
135 // navigate to the URL
136 if ( mWebBrowser )
137 {
138 mWebBrowser->setTrusted( trusted_browser );
139 mWebBrowser->setOpenInExternalBrowser( open_link_external );
140 mWebBrowser->navigateTo( start_url );
141 }
142
143 // make floater appear
144 setVisibleAndFrontmost();
145}
146
147////////////////////////////////////////////////////////////////////////////////
148//
149std::string LLFloaterHtml::getSupportUrl()
150{
151 return getString("support_page_url");
152}
153
154////////////////////////////////////////////////////////////////////////////////
155//
156void LLFloaterHtml::onClose( bool app_quitting )
157{
158 setVisible( false );
159 // HACK for fast XML iteration replace with:
160 // destroy();
161}
162
163////////////////////////////////////////////////////////////////////////////////
164//
165void LLFloaterHtml::onClickClose( void* data )
166{
167 LLFloaterHtml* self = ( LLFloaterHtml* )data;
168 self->close();
169}
170
171////////////////////////////////////////////////////////////////////////////////
172// static
173void LLFloaterHtml::onClickBack( void* data )
174{
175 LLFloaterHtml* self = ( LLFloaterHtml* )data;
176 if ( self )
177 {
178 if ( self->mWebBrowser )
179 {
180 self->mWebBrowser->navigateBack();
181 };
182 };
183}
184
185////////////////////////////////////////////////////////////////////////////////
186//
187void LLFloaterHtml::onClickHome( void* data )
188{
189 LLFloaterHtml* self = ( LLFloaterHtml* )data;
190 if ( self )
191 {
192 if ( self->mWebBrowser )
193 {
194 std::string home_url = self->getString("home_page_url");
195 if ( home_url.length() > 4 )
196 {
197 self->mWebBrowser->navigateTo( home_url );
198 }
199 else
200 {
201 llwarns << "Invalid home page specified for HTML floater - navigating to default" << llendl;
202 self->mWebBrowser->navigateTo( "http://secondlife.com" );
203 }
204 };
205 };
206}
207
208////////////////////////////////////////////////////////////////////////////////
209// static
210void LLFloaterHtml::onClickForward( void* data )
211{
212 LLFloaterHtml* self = ( LLFloaterHtml* )data;
213 if ( self )
214 {
215 if ( self->mWebBrowser )
216 {
217 self->mWebBrowser->navigateForward();
218 };
219 };
220}
221
222////////////////////////////////////////////////////////////////////////////////
223// static
224void LLFloaterHtml::onCommitUrlEdit(LLUICtrl* ctrl, void* user_data)
225{
226 LLFloaterHtml* self = (LLFloaterHtml*)user_data;
227
228 LLLineEditor* editor = (LLLineEditor*)ctrl;
229 std::string url = editor->getText();
230
231 if ( self->mWebBrowser )
232 {
233 self->mWebBrowser->navigateTo( url );
234 };
235}
236
237////////////////////////////////////////////////////////////////////////////////
238// static
239void LLFloaterHtml::onClickGo( void* data )
240{
241 LLFloaterHtml* self = ( LLFloaterHtml* )data;
242 if ( self )
243 {
244 std::string url = self->childGetValue( "url_edit" ).asString();
245 if ( url.length() )
246 {
247 if ( self->mWebBrowser )
248 {
249 self->mWebBrowser->navigateTo( url );
250 }
251 }
252 }
253}
diff --git a/linden/indra/newview/llfloaterhtml.h b/linden/indra/newview/llfloaterhtml.h
deleted file mode 100644
index 4383472..0000000
--- a/linden/indra/newview/llfloaterhtml.h
+++ /dev/null
@@ -1,77 +0,0 @@
1 /**
2 * @file llfloaterhtml.h
3 * @author James Cook
4 * @brief In-world HTML dialog
5 *
6 * $LicenseInfo:firstyear=2005&license=viewergpl$
7 *
8 * Copyright (c) 2005-2009, Linden Research, Inc.
9 *
10 * Second Life Viewer Source Code
11 * The source code in this file ("Source Code") is provided by Linden Lab
12 * to you under the terms of the GNU General Public License, version 2.0
13 * ("GPL"), unless you have obtained a separate licensing agreement
14 * ("Other License"), formally executed by you and Linden Lab. Terms of
15 * the GPL can be found in doc/GPL-license.txt in this distribution, or
16 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
17 *
18 * There are special exceptions to the terms and conditions of the GPL as
19 * it is applied to this Source Code. View the full text of the exception
20 * in the file doc/FLOSS-exception.txt in this software distribution, or
21 * online at
22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
23 *
24 * By copying, modifying or distributing this software, you acknowledge
25 * that you have read and understood your obligations described above,
26 * and agree to abide by those obligations.
27 *
28 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
29 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
30 * COMPLETENESS OR PERFORMANCE.
31 * $/LicenseInfo$
32 */
33
34#ifndef LL_LLFLOATERHTML_H
35#define LL_LLFLOATERHTML_H
36
37#include "llfloater.h"
38#include "llhtmlhelp.h"
39
40class LLWebBrowserCtrl;
41
42class LLFloaterHtml :
43 public LLFloater
44{
45 public:
46 static LLFloaterHtml* getInstance();
47 virtual ~LLFloaterHtml();
48
49 virtual void draw();
50 virtual void onClose( bool app_quitting );
51
52 // Pass string like "in-world_help" or "additional help"
53 void show( std::string content_id, bool open_link_external, bool trusted_browser );
54
55 // Pass raw URL and window title
56 // Can be set to handle secondlife:///app/ URLs, but this should
57 // usually be false.
58 void show( std::string start_url, std::string title, bool open_link_external, bool trusted_browser );
59
60 std::string getSupportUrl();
61
62 static void onClickClose( void* data );
63 static void onClickBack( void* data );
64 static void onClickHome( void* data );
65 static void onClickForward( void* data );
66 static void onCommitUrlEdit(LLUICtrl* ctrl, void* user_data);
67 static void onClickGo( void* data );
68
69 private:
70 LLFloaterHtml();
71
72 LLWebBrowserCtrl* mWebBrowser;
73 static LLFloaterHtml* sInstance;
74 LLButton* mCloseButton;
75};
76
77#endif
diff --git a/linden/indra/newview/llfloatermediabrowser.cpp b/linden/indra/newview/llfloatermediabrowser.cpp
index d658a11..a78c9d1 100644
--- a/linden/indra/newview/llfloatermediabrowser.cpp
+++ b/linden/indra/newview/llfloatermediabrowser.cpp
@@ -1,6 +1,6 @@
1/** 1/**
2 * @file llfloaterhtmlhelp.cpp 2 * @file llmediabrowser.cpp
3 * @brief HTML Help floater - uses embedded web browser control 3 * @brief embedded web browser
4 * 4 *
5 * $LicenseInfo:firstyear=2006&license=viewergpl$ 5 * $LicenseInfo:firstyear=2006&license=viewergpl$
6 * 6 *
@@ -33,7 +33,6 @@
33#include "llviewerprecompiledheaders.h" 33#include "llviewerprecompiledheaders.h"
34 34
35#include "llfloatermediabrowser.h" 35#include "llfloatermediabrowser.h"
36#include "llfloaterhtml.h"
37 36
38#include "llchat.h" 37#include "llchat.h"
39#include "llfloaterchat.h" 38#include "llfloaterchat.h"
diff --git a/linden/indra/newview/llmediactrl.cpp b/linden/indra/newview/llmediactrl.cpp
index 8b60326..8b10fa3 100644
--- a/linden/indra/newview/llmediactrl.cpp
+++ b/linden/indra/newview/llmediactrl.cpp
@@ -36,7 +36,7 @@
36#include "llmediactrl.h" 36#include "llmediactrl.h"
37 37
38// viewer includes 38// viewer includes
39#include "llfloaterhtml.h" 39#include "llfloatermediabrowser.h"
40#include "llfloaterworldmap.h" 40#include "llfloaterworldmap.h"
41#include "lluictrlfactory.h" 41#include "lluictrlfactory.h"
42#include "llurldispatcher.h" 42#include "llurldispatcher.h"
@@ -746,7 +746,7 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
746 746
747 case MEDIA_EVENT_CURSOR_CHANGED: 747 case MEDIA_EVENT_CURSOR_CHANGED:
748 { 748 {
749 LL_INFOS("Media") << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << self->getCursorName() << LL_ENDL; 749 LL_DEBUGS("MediaEventCursor") << "Media event: MEDIA_EVENT_CURSOR_CHANGED, new cursor is " << self->getCursorName() << LL_ENDL;
750 750
751 std::string cursor = self->getCursorName(); 751 std::string cursor = self->getCursorName();
752 752
@@ -865,6 +865,7 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
865 const std::string protocol2( "https://" ); 865 const std::string protocol2( "https://" );
866 if( mOpenLinksInExternalBrowser ) 866 if( mOpenLinksInExternalBrowser )
867 { 867 {
868 LL_DEBUGS("Media") << "OpenLinksInExternalBrowser" << LL_ENDL;
868 if ( !url.empty() ) 869 if ( !url.empty() )
869 { 870 {
870 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || 871 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 ||
@@ -877,6 +878,7 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
877 else 878 else
878 if( mOpenLinksInInternalBrowser ) 879 if( mOpenLinksInInternalBrowser )
879 { 880 {
881 LL_DEBUGS("Media") << "OpenLinksInInternalBrowser" << LL_ENDL;
880 if ( !url.empty() ) 882 if ( !url.empty() )
881 { 883 {
882 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || 884 if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 ||
@@ -891,6 +893,8 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
891// "Second Life Browser", 893// "Second Life Browser",
892// open_links_externally, 894// open_links_externally,
893// mTrusted); 895// mTrusted);
896
897 LLFloaterMediaBrowser::getInstance()->openMedia(url);
894 } 898 }
895 } 899 }
896 } 900 }
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp
index 4fe0624..0b91091 100644
--- a/linden/indra/newview/llpanellogin.cpp
+++ b/linden/indra/newview/llpanellogin.cpp
@@ -297,7 +297,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
297 297
298 // don't make it a tab stop until SL-27594 is fixed 298 // don't make it a tab stop until SL-27594 is fixed
299 web_browser->setTabStop(FALSE); 299 web_browser->setTabStop(FALSE);
300 // web_browser->navigateToLocalPage( "loading", "loading.html" ); 300 web_browser->navigateToLocalPage( "loading", "loading.html" );
301 301
302 // make links open in external browser 302 // make links open in external browser
303 web_browser->setOpenInExternalBrowser( true ); 303 web_browser->setOpenInExternalBrowser( true );
@@ -338,16 +338,6 @@ void LLPanelLogin::setSiteIsAlive( bool alive )
338 else 338 else
339 // the site is not available (missing page, server down, other badness) 339 // the site is not available (missing page, server down, other badness)
340 { 340 {
341#if !USE_VIEWER_AUTH
342 if ( web_browser )
343 {
344 // hide browser control (revealing default one)
345 web_browser->setVisible( FALSE );
346
347 // mark as unavailable
348 mHtmlAvailable = FALSE;
349 }
350#else
351 341
352 if ( web_browser ) 342 if ( web_browser )
353 { 343 {
@@ -356,7 +346,7 @@ void LLPanelLogin::setSiteIsAlive( bool alive )
356 // mark as available 346 // mark as available
357 mHtmlAvailable = TRUE; 347 mHtmlAvailable = TRUE;
358 } 348 }
359#endif 349
360 } 350 }
361} 351}
362 352
@@ -1216,6 +1206,7 @@ bool LLPanelLogin::loadNewsBar()
1216 curl_free(curl_version); 1206 curl_free(curl_version);
1217 curl_free(curl_skin); 1207 curl_free(curl_skin);
1218 1208
1209 LL_DEBUGS("NewsBar")<< "news bar setup to navigate to: " << full_url.str() << LL_ENDL;
1219 news_bar->navigateTo( full_url.str() ); 1210 news_bar->navigateTo( full_url.str() );
1220 1211
1221 1212
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index 7b1ed95..5517ca2 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -62,6 +62,7 @@
62#include "llfirstuse.h" 62#include "llfirstuse.h"
63#include "llviewerwindow.h" 63#include "llviewerwindow.h"
64#include "llviewercamera.h" 64#include "llviewercamera.h"
65#include "hippolimits.h"
65 66
66#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel 67#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel
67#include "llfloaterchat.h" // for LLFloaterChat::addChat() 68#include "llfloaterchat.h" // for LLFloaterChat::addChat()
@@ -1524,6 +1525,15 @@ void LLVoiceClient::setState(state inState)
1524 1525
1525 mState = inState; 1526 mState = inState;
1526} 1527}
1528void LLVoiceClient::close()
1529{
1530 setState(stateDisableCleanup);
1531}
1532
1533void LLVoiceClient::start()
1534{
1535 setState(stateStart);
1536}
1527 1537
1528void LLVoiceClient::stateMachine() 1538void LLVoiceClient::stateMachine()
1529{ 1539{
@@ -1654,12 +1664,12 @@ void LLVoiceClient::stateMachine()
1654 //std::string exe_path = gDirUtilp->getAppRODataDir(); 1664 //std::string exe_path = gDirUtilp->getAppRODataDir();
1655 std::string exe_path = gDirUtilp->getExecutableDir(); 1665 std::string exe_path = gDirUtilp->getExecutableDir();
1656 exe_path += gDirUtilp->getDirDelimiter(); 1666 exe_path += gDirUtilp->getDirDelimiter();
1667#if LL_DARWIN
1668 exe_path += "../Resources/";
1669#endif
1670 exe_path += gSavedSettings.getString("VoiceModule");
1657#if LL_WINDOWS 1671#if LL_WINDOWS
1658 exe_path += "SLVoice.exe"; 1672 exe_path += ".exe";
1659#elif LL_DARWIN
1660 exe_path += "../Resources/SLVoice";
1661#else
1662 exe_path += "SLVoice";
1663#endif 1673#endif
1664 // See if the vivox executable exists 1674 // See if the vivox executable exists
1665 llstat s; 1675 llstat s;
@@ -1687,7 +1697,8 @@ void LLVoiceClient::stateMachine()
1687 STARTUPINFOA sinfo; 1697 STARTUPINFOA sinfo;
1688 memset(&sinfo, 0, sizeof(sinfo)); 1698 memset(&sinfo, 0, sizeof(sinfo));
1689 std::string exe_dir = gDirUtilp->getAppRODataDir(); 1699 std::string exe_dir = gDirUtilp->getAppRODataDir();
1690 cmd = "SLVoice.exe"; 1700 cmd = gSavedSettings.getString("VoiceModule");
1701 cmd += ".exe";
1691 cmd += args; 1702 cmd += args;
1692 1703
1693 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string... 1704 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
diff --git a/linden/indra/newview/llvoiceclient.h b/linden/indra/newview/llvoiceclient.h
index cfc336b..9ef3be9 100644
--- a/linden/indra/newview/llvoiceclient.h
+++ b/linden/indra/newview/llvoiceclient.h
@@ -516,6 +516,9 @@ static void updatePosition(void);
516 // Currently this will be false only for PSTN P2P calls. 516 // Currently this will be false only for PSTN P2P calls.
517 // NOTE: this will return true if the session can't be found. 517 // NOTE: this will return true if the session can't be found.
518 bool isSessionTextIMPossible(const LLUUID &session_id); 518 bool isSessionTextIMPossible(const LLUUID &session_id);
519
520 void close();
521 void start();
519 522
520 private: 523 private:
521 524
diff --git a/linden/indra/newview/skins/default/html/en-us/loading-error/index.html b/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
index 71f9c86..37c8405 100644
--- a/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
+++ b/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
@@ -1,14 +1,14 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 1
2 DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml"> 3<html xmlns="http://www.w3.org/1999/xhtml">
3<head> 4<head>
4<title>Unable to Connect</title> 5<title>Unable to Connect</title><style>
5<style> 6body {background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:85%;color:#e9f1f8;width:100%;padding:0px;margin:0px;}
6body {background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;width:100%;padding:0px;margin:0px;}
7a {color:#93a9d5;} 7a {color:#93a9d5;}
8a:active {color:#50607C;text-decoration:underline;} 8a:active {color:#50607C;text-decoration:underline;}
9a:hover {color:#ff7900;text-decoration:underline;} 9a:hover {color:#ff7900;text-decoration:underline;}
10#infobox{position:absolute;top:40%;left:50%;z-index:1;padding:0;width:592px;margin-left:-296px;margin-top:-150px;text-align:center;font-size:1.2em; color:#ccc;} 10#infobox{position:absolute;top:40%;left:50%;z-index:1;padding:0;width:592px;margin-left:-296px;margin-top:-80px;text-align:left;font-size:1.2em; color:#ccc;}
11#infobox #submitbtn {padding:15px 3px 5px 15px;height:28px;width:127px;margin-left:244px;} 11#infobox #submitbtn {height:28px;width:127px;}
12#infobox #submitbtn input {text-transform:capitalize;color:#fff;font-size:1.0em;height:28px;width:127px;border:none;font-weight:normal;background:url(../../btn_purplepill_bg.png) bottom left no-repeat;vertical-align:text-bottom;font-weight:bold;} 12#infobox #submitbtn input {text-transform:capitalize;color:#fff;font-size:1.0em;height:28px;width:127px;border:none;font-weight:normal;background:url(../../btn_purplepill_bg.png) bottom left no-repeat;vertical-align:text-bottom;font-weight:bold;}
13#infobox #submitbtn input:hover.input_over, #login_box #submitbtn input:hover.input_off {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) bottom right no-repeat;} 13#infobox #submitbtn input:hover.input_over, #login_box #submitbtn input:hover.input_off {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) bottom right no-repeat;}
14#infobox #submitbtn input:active.input_over {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) top left no-repeat;} 14#infobox #submitbtn input:active.input_over {color:#fff;border:none;background:url(../../btn_purplepill_bg.png) top left no-repeat;}
@@ -17,16 +17,34 @@ a:hover {color:#ff7900;text-decoration:underline;}
17</head> 17</head>
18<body> 18<body>
19<div id="infobox"> 19<div id="infobox">
20 <img src="../../unabletoconnect.png"><br/> 20 <table>
21 <p> 21
22 Second Life can't establish a connection to the login server. 22 <tbody style="height: 100px; overflow: scroll">
23 </p> 23 <tr>
24 <p> 24 Imprudence can't establish a connection to the login screen of the grid you have chosen.
25 Please check your internet connection. If your computer or network is protected by a firewall or proxy, make sure that Second Life is permitted to access the network. 25 </tr>
26 </p> 26 <tr>
27 <div id="submitbtn"> 27 <td>
28 <input class="input_over" type="submit" value="Try Again" onclick="document.location='secondlife:///app/login_refresh'; this.className='pressed';" onmouseover="this.className='input_over';" onmouseout="this.className='input_off';" /> 28 <img src="../../unabletoconnect.png"><br/>
29 </div> 29
30 </div> 30 <div id="submitbtn">
31 <input class="input_over" type="submit" value="Try Again" onclick="document.location='secondlife:///app/login_refresh'; this.className='pressed';" onmouseover="this.className='input_over';" onmouseout="this.className='input_off';" />
32 </div>
33
34 <td>
35 If you are used to see a loginscreen for that grid please
36 <ul>
37 <li>for OpenSimulator grids: check if the loginuri of that grid is still valid.</li>
38 <li>for OpenSimulator and Second Life: check the grid status page of the grid, and</li>
39 <li>if the grid status page of the grid says online check your internet connection.
40 If your computer or network is protected by a firewall or proxy, make sure that
41 Imprudence is permitted to access the network</li>
42
43 </ul>
44 </td>
45 </tr>
46
47 </tbody>
48 </table>
31</div> 49</div>
32</body> \ No newline at end of file 50</body>
diff --git a/linden/indra/newview/skins/default/html/en-us/loading/loading.html b/linden/indra/newview/skins/default/html/en-us/loading/loading.html
new file mode 100644
index 0000000..97174b0
--- /dev/null
+++ b/linden/indra/newview/skins/default/html/en-us/loading/loading.html
@@ -0,0 +1,9 @@
1<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
2<table width="100%" height="100%" border="0">
3 <tr>
4 <td align="center" valign="middle" style="font-size:0.8em;">
5 <img src="imprudence_loading.png" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;loading...
6 </td>
7 </tr>
8</table>
9</body>
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index 56c2410..e449a7e 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -134,7 +134,7 @@ class ViewerManifest(LLManifest):
134 self.path("README.txt") 134 self.path("README.txt")
135 self.path("MANIFESTO.txt") 135 self.path("MANIFESTO.txt")
136 self.path("CONTRIBUTE.txt") 136 self.path("CONTRIBUTE.txt")
137 self.path("RELEASE_NOTES.txt") 137 #self.path("RELEASE_NOTES.txt")
138 self.path("ChangeLog.txt", required=False) 138 self.path("ChangeLog.txt", required=False)
139 self.end_prefix("../../..") 139 self.end_prefix("../../..")
140 140
@@ -1002,8 +1002,8 @@ class Linux_i686Manifest(LinuxManifest):
1002 self.path("libz.so.1") 1002 self.path("libz.so.1")
1003 1003
1004 # OpenAL 1004 # OpenAL
1005 self.path("libopenal.so.1") 1005 self.path("libopenal.so.1.12.854", "libopenal.so.1")
1006 self.path("libalut.so.0") 1006 self.path("libalut.so.0.1.0", "libalut.so.0")
1007 1007
1008 # GTK+ and dependencies 1008 # GTK+ and dependencies
1009 ## Lets just use the system libraries for all of these: 1009 ## Lets just use the system libraries for all of these:
@@ -1135,17 +1135,15 @@ class Linux_x86_64Manifest(LinuxManifest):
1135 #self.path("libz.so.1") #not needed 1135 #self.path("libz.so.1") #not needed
1136 1136
1137 # OpenAL 1137 # OpenAL
1138 self.path("libopenal.so.1") 1138 self.path("libopenal.so.1.12.854", "libopenal.so.1")
1139 self.path("libalut.so.0") 1139 self.path("libalut.so.0.1.0", "libalut.so.0")
1140
1141 # GTK+ and dependencies 1140 # GTK+ and dependencies
1142 ## Lets just use the system libraries for all of these: 1141 ## Lets just use the system libraries for all of these:
1143 ##self.path("libatk-1.0.so.0") 1142 ##self.path("libatk-1.0.so.0")
1144 ##self.path("libcairo.so.2") 1143 ##self.path("libcairo.so.2")
1145 ##self.path("libfontconfig.so.1") 1144 ##self.path("libfontconfig.so.1")
1146 ##self.path("libfreetype.so.6") 1145 ##self.path("libfreetype.so.6")
1147 self.path("libgdk_pixbuf-2.0.so.0") # was commented to use systems gdk pixbufs instead - 1146 #self.path("libgdk_pixbuf-2.0.so.0")
1148 # but seems webkit needs it o_O . Packaging for testing now.
1149 ##self.path("libgdk-x11-2.0.so.0") 1147 ##self.path("libgdk-x11-2.0.so.0")
1150 ##self.path("libgtk-x11-2.0.so.0") 1148 ##self.path("libgtk-x11-2.0.so.0")
1151# self.path("libpango-1.0.so.0") # use systems pango instead 1149# self.path("libpango-1.0.so.0") # use systems pango instead