diff options
Diffstat (limited to '')
20 files changed, 147 insertions, 86 deletions
diff --git a/linden/indra/newview/app_settings/keywords.ini b/linden/indra/newview/app_settings/keywords.ini index 2a911ba..56acf4c 100644 --- a/linden/indra/newview/app_settings/keywords.ini +++ b/linden/indra/newview/app_settings/keywords.ini | |||
@@ -455,6 +455,7 @@ PARCEL_FLAG_ALLOW_LANDMARK Used with llGetParcelFlags to find if a parcel allo | |||
455 | PARCEL_FLAG_ALLOW_TERRAFORM Used with llGetParcelFlags to find if a parcel allows anyone to terraform the land | 455 | PARCEL_FLAG_ALLOW_TERRAFORM Used with llGetParcelFlags to find if a parcel allows anyone to terraform the land |
456 | PARCEL_FLAG_ALLOW_DAMAGE Used with llGetParcelFlags to find if a parcel allows damage | 456 | PARCEL_FLAG_ALLOW_DAMAGE Used with llGetParcelFlags to find if a parcel allows damage |
457 | PARCEL_FLAG_ALLOW_CREATE_OBJECTS Used with llGetParcelFlags to find if a parcel allows anyone to create objects | 457 | PARCEL_FLAG_ALLOW_CREATE_OBJECTS Used with llGetParcelFlags to find if a parcel allows anyone to create objects |
458 | PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS Used with llGetParcelFlags to find if a parcel allows group members or objects to create objects | ||
458 | PARCEL_FLAG_USE_ACCESS_GROUP Used with llGetParcelFlags to find if a parcel limits access to a group | 459 | PARCEL_FLAG_USE_ACCESS_GROUP Used with llGetParcelFlags to find if a parcel limits access to a group |
459 | PARCEL_FLAG_USE_ACCESS_LIST Used with llGetParcelFlags to find if a parcel limits access to a list of residents | 460 | PARCEL_FLAG_USE_ACCESS_LIST Used with llGetParcelFlags to find if a parcel limits access to a list of residents |
460 | PARCEL_FLAG_USE_BAN_LIST Used with llGetParcelFlags to find if a parcel uses a ban list | 461 | PARCEL_FLAG_USE_BAN_LIST Used with llGetParcelFlags to find if a parcel uses a ban list |
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 0f15236..55ff208 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -4659,6 +4659,17 @@ | |||
4659 | <key>Value</key> | 4659 | <key>Value</key> |
4660 | <integer>0</integer> | 4660 | <integer>0</integer> |
4661 | </map> | 4661 | </map> |
4662 | <key>MediaDebugLevel</key> | ||
4663 | <map> | ||
4664 | <key>Comment</key> | ||
4665 | <string>How spammy media (GStreamer) debug output should be. (0-4)</string> | ||
4666 | <key>Persist</key> | ||
4667 | <integer>1</integer> | ||
4668 | <key>Type</key> | ||
4669 | <string>U32</string> | ||
4670 | <key>Value</key> | ||
4671 | <integer>0</integer> | ||
4672 | </map> | ||
4662 | <key>MemoryLogFrequency</key> | 4673 | <key>MemoryLogFrequency</key> |
4663 | <map> | 4674 | <map> |
4664 | <key>Comment</key> | 4675 | <key>Comment</key> |
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index 15ce1a3..b2bfccf 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp | |||
@@ -75,9 +75,6 @@ | |||
75 | 75 | ||
76 | #if LL_WINDOWS | 76 | #if LL_WINDOWS |
77 | #include "llwindebug.h" | 77 | #include "llwindebug.h" |
78 | #include <direct.h> | ||
79 | #include <errno.h> | ||
80 | #include <stdlib.h> | ||
81 | #endif | 78 | #endif |
82 | 79 | ||
83 | #if LL_WINDOWS | 80 | #if LL_WINDOWS |
@@ -320,30 +317,6 @@ std::vector<std::string> gLoginURIs; | |||
320 | static std::string gHelperURI; | 317 | static std::string gHelperURI; |
321 | 318 | ||
322 | 319 | ||
323 | void LLAppViewer::gst_plugin_path() | ||
324 | { | ||
325 | #ifdef LL_WINDOWS | ||
326 | char* buffer; | ||
327 | |||
328 | // Get the current working directory: | ||
329 | if((buffer = _getcwd(NULL,0)) == NULL) | ||
330 | { | ||
331 | LL_INFOS("InitInfo") << "_getcwd error" << LL_ENDL; | ||
332 | } | ||
333 | else | ||
334 | { | ||
335 | LL_INFOS("InitInfo") << "Imprudence is installed at " << buffer << LL_ENDL; | ||
336 | |||
337 | std::string plugin_path = "GST_PLUGIN_PATH=" + std::string(buffer) + "\\lib\\gstreamer-plugins"; | ||
338 | |||
339 | // Place GST_PLUGIN_PATH in the environment settings for imprudence.exe | ||
340 | const char* gst_plugin_path = plugin_path.c_str(); | ||
341 | putenv(gst_plugin_path); | ||
342 | LL_INFOS("InitInfo") << "GST_PLUGIN_PATH set to " << getenv("GST_PLUGIN_PATH") << LL_ENDL; | ||
343 | } | ||
344 | #endif //LL_WINDOWS | ||
345 | } | ||
346 | |||
347 | void idle_afk_check() | 320 | void idle_afk_check() |
348 | { | 321 | { |
349 | // check idle timers | 322 | // check idle timers |
@@ -643,8 +616,6 @@ bool LLAppViewer::init() | |||
643 | LL_VERSION_PATCH, | 616 | LL_VERSION_PATCH, |
644 | LL_VERSION_BUILD ); | 617 | LL_VERSION_BUILD ); |
645 | 618 | ||
646 | gst_plugin_path(); | ||
647 | |||
648 | ////////////////////////////////////////////////////////////////////////////// | 619 | ////////////////////////////////////////////////////////////////////////////// |
649 | ////////////////////////////////////////////////////////////////////////////// | 620 | ////////////////////////////////////////////////////////////////////////////// |
650 | ////////////////////////////////////////////////////////////////////////////// | 621 | ////////////////////////////////////////////////////////////////////////////// |
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h index 2083a93..58dc835 100644 --- a/linden/indra/newview/llappviewer.h +++ b/linden/indra/newview/llappviewer.h | |||
@@ -138,8 +138,6 @@ public: | |||
138 | 138 | ||
139 | protected: | 139 | protected: |
140 | 140 | ||
141 | void gst_plugin_path(); // Sets GST_PLUGIN_PATH environment variable for GStreamer. | ||
142 | |||
143 | virtual bool initWindow(); // Initialize the viewer's window. | 141 | virtual bool initWindow(); // Initialize the viewer's window. |
144 | virtual bool initLogging(); // Initialize log files, logging system, return false on failure. | 142 | virtual bool initLogging(); // Initialize log files, logging system, return false on failure. |
145 | virtual void initConsole() {}; // Initialize OS level debugging console. | 143 | virtual void initConsole() {}; // Initialize OS level debugging console. |
diff --git a/linden/indra/newview/llcompilequeue.cpp b/linden/indra/newview/llcompilequeue.cpp index fc2742f..b4f1a22 100644 --- a/linden/indra/newview/llcompilequeue.cpp +++ b/linden/indra/newview/llcompilequeue.cpp | |||
@@ -59,6 +59,7 @@ | |||
59 | #include "llfloaterchat.h" | 59 | #include "llfloaterchat.h" |
60 | #include "llviewerstats.h" | 60 | #include "llviewerstats.h" |
61 | #include "lluictrlfactory.h" | 61 | #include "lluictrlfactory.h" |
62 | #include "llselectmgr.h" | ||
62 | 63 | ||
63 | ///---------------------------------------------------------------------------- | 64 | ///---------------------------------------------------------------------------- |
64 | /// Local function declarations, constants, enums, and typedefs | 65 | /// Local function declarations, constants, enums, and typedefs |
@@ -194,7 +195,20 @@ BOOL LLFloaterScriptQueue::start() | |||
194 | { | 195 | { |
195 | //llinfos << "LLFloaterCompileQueue::start()" << llendl; | 196 | //llinfos << "LLFloaterCompileQueue::start()" << llendl; |
196 | std::string buffer; | 197 | std::string buffer; |
197 | buffer = llformat("Starting %s of %d items.", mStartString.c_str(), mObjectIDs.count()); // *TODO: Translate | 198 | |
199 | LLSelectMgr *mgr = LLSelectMgr::getInstance(); | ||
200 | LLObjectSelectionHandle selectHandle = mgr->getSelection(); | ||
201 | U32 n_objects = 0; | ||
202 | if (gSavedSettings.getBOOL("EditLinkedParts")) | ||
203 | { | ||
204 | n_objects = selectHandle->getObjectCount(); | ||
205 | } | ||
206 | else | ||
207 | { | ||
208 | n_objects = selectHandle->getRootObjectCount(); | ||
209 | } | ||
210 | |||
211 | buffer = llformat("Starting %s of %d items.", mStartString.c_str(), n_objects); // *TODO: Translate | ||
198 | 212 | ||
199 | LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output"); | 213 | LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output"); |
200 | list->addCommentText(buffer); | 214 | list->addCommentText(buffer); |
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp index 5e4aafc..e058681 100644 --- a/linden/indra/newview/lldrawable.cpp +++ b/linden/indra/newview/lldrawable.cpp | |||
@@ -497,7 +497,7 @@ F32 LLDrawable::updateXform(BOOL undamped) | |||
497 | F32 dist_squared = 0.f; | 497 | F32 dist_squared = 0.f; |
498 | F32 camdist2 = (mDistanceWRTCamera * mDistanceWRTCamera); | 498 | F32 camdist2 = (mDistanceWRTCamera * mDistanceWRTCamera); |
499 | 499 | ||
500 | if (damped && mDistanceWRTCamera > 0.0f) | 500 | if (damped && isVisible()) |
501 | { | 501 | { |
502 | F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f); | 502 | F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f); |
503 | LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt); | 503 | LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt); |
@@ -521,11 +521,19 @@ F32 LLDrawable::updateXform(BOOL undamped) | |||
521 | { | 521 | { |
522 | // snap to final position | 522 | // snap to final position |
523 | dist_squared = 0.0f; | 523 | dist_squared = 0.0f; |
524 | if (!isRoot()) | ||
525 | { //child prim snapping to some position, needs a rebuild | ||
526 | gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); | ||
527 | } | ||
524 | } | 528 | } |
525 | } | 529 | } |
526 | 530 | ||
527 | if ((mCurrentScale != target_scale) || | 531 | if ((mCurrentScale != target_scale) || |
528 | (!isRoot() && (dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED) || !mVObjp->getAngularVelocity().isExactlyZero())) | 532 | (!isRoot() && |
533 | (dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED) || | ||
534 | !mVObjp->getAngularVelocity().isExactlyZero() || | ||
535 | target_pos != mXform.getPosition() || | ||
536 | target_rot != mXform.getRotation())) | ||
529 | { //child prim moving or scale change requires immediate rebuild | 537 | { //child prim moving or scale change requires immediate rebuild |
530 | gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); | 538 | gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); |
531 | } | 539 | } |
diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp index bbcfba6..1edfbe6 100644 --- a/linden/indra/newview/llfilepicker.cpp +++ b/linden/indra/newview/llfilepicker.cpp | |||
@@ -899,12 +899,41 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename) | |||
899 | // static | 899 | // static |
900 | void LLFilePicker::add_to_selectedfiles(gpointer data, gpointer user_data) | 900 | void LLFilePicker::add_to_selectedfiles(gpointer data, gpointer user_data) |
901 | { | 901 | { |
902 | LLFilePicker* picker = (LLFilePicker*) user_data; | 902 | // We need to run g_filename_to_utf8 in the user's locale |
903 | std::string old_locale(setlocale(LC_ALL, NULL)); | ||
904 | setlocale(LC_ALL, ""); | ||
905 | |||
906 | LLFilePicker* picker = (LLFilePicker*) user_data; | ||
907 | GError *error = NULL; | ||
903 | gchar* filename_utf8 = g_filename_to_utf8((gchar*)data, | 908 | gchar* filename_utf8 = g_filename_to_utf8((gchar*)data, |
904 | -1, NULL, NULL, NULL); | 909 | -1, NULL, NULL, &error); |
905 | picker->mFiles.push_back(std::string(filename_utf8)); | 910 | if (error) |
906 | lldebugs << "ADDED FILE " << filename_utf8 << llendl; | 911 | { |
907 | g_free(filename_utf8); | 912 | // This condition should really be notified to the user, e.g., |
913 | // through a message box. Just logging it is inapropriate. | ||
914 | // FIXME. | ||
915 | |||
916 | // Ghhhh. g_filename_display_name is new to glib 2.6, and it | ||
917 | // is too new for SL! (Note that the latest glib as of this | ||
918 | // writing is 2.22. *sigh*) LL supplied *makeASCII family are | ||
919 | // also unsuitable since they allow control characters... | ||
920 | |||
921 | std::string display_name; | ||
922 | for (const gchar *str = (const gchar *)data; *str; str++) | ||
923 | { | ||
924 | display_name += (char)((*str >= 0x20 && *str <= 0x7E) ? *str : '?'); | ||
925 | } | ||
926 | llwarns << "g_filename_to_utf8 failed on \"" << display_name << "\": " << error->message << llendl; | ||
927 | } | ||
928 | |||
929 | if (filename_utf8) | ||
930 | { | ||
931 | picker->mFiles.push_back(std::string(filename_utf8)); | ||
932 | lldebugs << "ADDED FILE " << filename_utf8 << llendl; | ||
933 | g_free(filename_utf8); | ||
934 | } | ||
935 | |||
936 | setlocale(LC_ALL, old_locale.c_str()); | ||
908 | } | 937 | } |
909 | 938 | ||
910 | // static | 939 | // static |
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp index a626ad3..14f9a10 100644 --- a/linden/indra/newview/llfloaterchat.cpp +++ b/linden/indra/newview/llfloaterchat.cpp | |||
@@ -385,7 +385,11 @@ void LLFloaterChat::addChat(const LLChat& chat, | |||
385 | text_color = gSavedSettings.getColor("IMChatColor"); | 385 | text_color = gSavedSettings.getColor("IMChatColor"); |
386 | size = INSTANT_MSG_SIZE; | 386 | size = INSTANT_MSG_SIZE; |
387 | } | 387 | } |
388 | gConsole->addLine(chat.mText, size, text_color); | 388 | // We display anything if it's not an IM. If it's an IM, check pref... |
389 | if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatHistory") ) | ||
390 | { | ||
391 | gConsole->addLine(chat.mText, size, text_color); | ||
392 | } | ||
389 | } | 393 | } |
390 | 394 | ||
391 | if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) | 395 | if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) |
diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp index 7a30b22..a8a3b16 100644 --- a/linden/indra/newview/llviewercontrol.cpp +++ b/linden/indra/newview/llviewercontrol.cpp | |||
@@ -70,6 +70,7 @@ | |||
70 | #include "llvosurfacepatch.h" | 70 | #include "llvosurfacepatch.h" |
71 | #include "llvowlsky.h" | 71 | #include "llvowlsky.h" |
72 | #include "llrender.h" | 72 | #include "llrender.h" |
73 | #include "llmediamanager.h" | ||
73 | 74 | ||
74 | #ifdef TOGGLE_HACKED_GODLIKE_VIEWER | 75 | #ifdef TOGGLE_HACKED_GODLIKE_VIEWER |
75 | BOOL gHackGodmode = FALSE; | 76 | BOOL gHackGodmode = FALSE; |
@@ -429,6 +430,22 @@ bool handleVoiceClientPrefsChanged(const LLSD& newvalue) | |||
429 | return true; | 430 | return true; |
430 | } | 431 | } |
431 | 432 | ||
433 | bool handleMediaDebugLevelChanged(const LLSD& newvalue) | ||
434 | { | ||
435 | LLMediaManager *mgr = LLMediaManager::getInstance(); | ||
436 | if (mgr) | ||
437 | { | ||
438 | LLMediaBase *impl = | ||
439 | mgr->createSourceFromMimeType("http", "audio/mpeg"); | ||
440 | |||
441 | if (impl) | ||
442 | { | ||
443 | impl->setDebugLevel( (LLMediaBase::EDebugLevel)newvalue.asInteger() ); | ||
444 | } | ||
445 | } | ||
446 | return true; | ||
447 | } | ||
448 | |||
432 | //////////////////////////////////////////////////////////////////////////// | 449 | //////////////////////////////////////////////////////////////////////////// |
433 | 450 | ||
434 | void settings_setup_listeners() | 451 | void settings_setup_listeners() |
@@ -556,6 +573,7 @@ void settings_setup_listeners() | |||
556 | gSavedSettings.getControl("VoiceInputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); | 573 | gSavedSettings.getControl("VoiceInputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); |
557 | gSavedSettings.getControl("VoiceOutputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); | 574 | gSavedSettings.getControl("VoiceOutputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); |
558 | gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); | 575 | gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); |
576 | gSavedSettings.getControl("MediaDebugLevel")->getSignal()->connect(boost::bind(&handleMediaDebugLevelChanged, _1)); | ||
559 | } | 577 | } |
560 | 578 | ||
561 | template <> eControlType get_control_type<U32>(const U32& in, LLSD& out) | 579 | template <> eControlType get_control_type<U32>(const U32& in, LLSD& out) |
diff --git a/linden/indra/newview/llviewermedia.cpp b/linden/indra/newview/llviewermedia.cpp index e99c838..d8fcdcb 100644 --- a/linden/indra/newview/llviewermedia.cpp +++ b/linden/indra/newview/llviewermedia.cpp | |||
@@ -496,6 +496,13 @@ void LLViewerMedia::initClass() | |||
496 | const LLMIMETypes::LLMIMEInfo& info = it->second; | 496 | const LLMIMETypes::LLMIMEInfo& info = it->second; |
497 | mm->addMimeTypeImplNameMap( mime_type, info.mImpl ); | 497 | mm->addMimeTypeImplNameMap( mime_type, info.mImpl ); |
498 | } | 498 | } |
499 | |||
500 | LLMediaBase *impl = mm->createSourceFromMimeType("http", "audio/mpeg"); | ||
501 | if (impl) | ||
502 | { | ||
503 | U32 level = gSavedSettings.getU32("MediaDebugLevel"); | ||
504 | impl->setDebugLevel( (LLMediaBase::EDebugLevel)level ); | ||
505 | } | ||
499 | } | 506 | } |
500 | 507 | ||
501 | ////////////////////////////////////////////////////////////////////////////////////////// | 508 | ////////////////////////////////////////////////////////////////////////////////////////// |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 31fdcc3..486e4f1 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -5963,8 +5963,9 @@ void queue_actions(LLFloaterScriptQueue* q, const std::string& noscriptmsg, cons | |||
5963 | { | 5963 | { |
5964 | // Apply until an object fails | 5964 | // Apply until an object fails |
5965 | QueueObjects func(q); | 5965 | QueueObjects func(q); |
5966 | const bool firstonly = true; | 5966 | LLSelectMgr *mgr = LLSelectMgr::getInstance(); |
5967 | bool fail = LLSelectMgr::getInstance()->getSelection()->applyToObjects(&func, firstonly); | 5967 | LLObjectSelectionHandle selectHandle = mgr->getSelection(); |
5968 | bool fail = selectHandle->applyToObjects(&func); | ||
5968 | if(fail) | 5969 | if(fail) |
5969 | { | 5970 | { |
5970 | if ( !func.scripted ) | 5971 | if ( !func.scripted ) |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index b947f95..221de59 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -3286,6 +3286,10 @@ void process_sound_trigger(LLMessageSystem *msg, void **) | |||
3286 | msg->getVector3Fast(_PREHASH_SoundData, _PREHASH_Position, pos_local); | 3286 | msg->getVector3Fast(_PREHASH_SoundData, _PREHASH_Position, pos_local); |
3287 | msg->getF32Fast(_PREHASH_SoundData, _PREHASH_Gain, gain); | 3287 | msg->getF32Fast(_PREHASH_SoundData, _PREHASH_Gain, gain); |
3288 | 3288 | ||
3289 | //If we have sounds muted, don't even try to load or trigger the sound. | ||
3290 | if(gSavedSettings.getBOOL("MuteSounds") || gain == 0.0) | ||
3291 | return; | ||
3292 | |||
3289 | // adjust sound location to true global coords | 3293 | // adjust sound location to true global coords |
3290 | LLVector3d pos_global = from_region_handle(region_handle); | 3294 | LLVector3d pos_global = from_region_handle(region_handle); |
3291 | pos_global.mdV[VX] += pos_local.mV[VX]; | 3295 | pos_global.mdV[VX] += pos_local.mV[VX]; |
@@ -3317,7 +3321,7 @@ void process_sound_trigger(LLMessageSystem *msg, void **) | |||
3317 | 3321 | ||
3318 | void process_preload_sound(LLMessageSystem *msg, void **user_data) | 3322 | void process_preload_sound(LLMessageSystem *msg, void **user_data) |
3319 | { | 3323 | { |
3320 | if (!gAudiop) | 3324 | if (!gAudiop || gSavedSettings.getBOOL("MuteSounds")) |
3321 | { | 3325 | { |
3322 | return; | 3326 | return; |
3323 | } | 3327 | } |
@@ -3363,6 +3367,9 @@ void process_attached_sound(LLMessageSystem *msg, void **user_data) | |||
3363 | msg->getF32Fast(_PREHASH_DataBlock, _PREHASH_Gain, gain); | 3367 | msg->getF32Fast(_PREHASH_DataBlock, _PREHASH_Gain, gain); |
3364 | msg->getU8Fast(_PREHASH_DataBlock, _PREHASH_Flags, flags); | 3368 | msg->getU8Fast(_PREHASH_DataBlock, _PREHASH_Flags, flags); |
3365 | 3369 | ||
3370 | if(gSavedSettings.getBOOL("MuteSounds") || gain == 0.0) | ||
3371 | return; | ||
3372 | |||
3366 | LLViewerObject *objectp = gObjectList.findObject(object_id); | 3373 | LLViewerObject *objectp = gObjectList.findObject(object_id); |
3367 | if (!objectp) | 3374 | if (!objectp) |
3368 | { | 3375 | { |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index fd2487b..7d70dd2 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -3096,69 +3096,62 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3096 | (is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute) | 3096 | (is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute) |
3097 | || is_appearance != mNameAppearance) | 3097 | || is_appearance != mNameAppearance) |
3098 | { | 3098 | { |
3099 | char line[MAX_STRING]; /* Flawfinder: ignore */ | 3099 | std::string line; |
3100 | if (!sRenderGroupTitles) | 3100 | if (title && title->getString() && title->getString()[0] != '\0') |
3101 | { | ||
3102 | // If all group titles are turned off, stack first name | ||
3103 | // on a line above last name | ||
3104 | strncpy(line, firstname->getString(), MAX_STRING -1 ); /* Flawfinder: ignore */ | ||
3105 | line[MAX_STRING -1] = '\0'; | ||
3106 | strcat(line, "\n"); | ||
3107 | } | ||
3108 | else if (title && title->getString() && title->getString()[0] != '\0') | ||
3109 | { | 3101 | { |
3110 | strncpy(line, title->getString(), MAX_STRING -1 ); /* Flawfinder: ignore */ | 3102 | line += title->getString(); |
3111 | line[MAX_STRING -1] = '\0'; | 3103 | LLStringFn::replace_nonprintable(line,LL_UNKNOWN_CHAR); |
3112 | strcat(line, "\n"); /* Flawfinder: ignore */ | 3104 | line += "\n"; |
3113 | strncat(line, firstname->getString(), MAX_STRING - strlen(line) -1 ); /* Flawfinder: ignore */ | 3105 | line += firstname->getString(); |
3114 | } | 3106 | } |
3115 | else | 3107 | else |
3116 | { | 3108 | { |
3117 | strncpy(line, firstname->getString(), MAX_STRING -1 ); /* Flawfinder: ignore */ | 3109 | line += firstname->getString(); |
3118 | line[MAX_STRING -1] = '\0'; | ||
3119 | } | 3110 | } |
3120 | 3111 | ||
3121 | strcat(line, " "); /* Flawfinder: ignore */ | 3112 | line += " "; |
3122 | strncat(line, lastname->getString(), MAX_STRING - strlen(line) -1); /* Flawfinder: ignore */ | 3113 | line += lastname->getString(); |
3123 | BOOL need_comma = FALSE; | 3114 | BOOL need_comma = FALSE; |
3124 | 3115 | ||
3125 | if (is_away || is_muted || is_busy) | 3116 | if (is_away || is_muted || is_busy) |
3126 | { | 3117 | { |
3127 | strcat(line, " ("); /* Flawfinder: ignore */ | 3118 | line += " ("; |
3128 | if (is_away) | 3119 | if (is_away) |
3129 | { | 3120 | { |
3130 | strcat(line, "Away"); /* Flawfinder: ignore */ | 3121 | line += "Away"; |
3131 | need_comma = TRUE; | 3122 | need_comma = TRUE; |
3132 | } | 3123 | } |
3133 | if (is_busy) | 3124 | if (is_busy) |
3134 | { | 3125 | { |
3135 | if (need_comma) | 3126 | if (need_comma) |
3136 | { | 3127 | { |
3137 | strcat(line, ", "); /* Flawfinder: ignore */ | 3128 | line += ", "; |
3138 | } | 3129 | } |
3139 | strcat(line, "Busy"); /* Flawfinder: ignore */ | 3130 | line += "Busy"; |
3140 | need_comma = TRUE; | 3131 | need_comma = TRUE; |
3141 | } | 3132 | } |
3142 | if (is_muted) | 3133 | if (is_muted) |
3143 | { | 3134 | { |
3144 | if (need_comma) | 3135 | if (need_comma) |
3145 | { | 3136 | { |
3146 | strcat(line, ", "); /* Flawfinder: ignore */ | 3137 | line += ", "; |
3147 | } | 3138 | } |
3148 | strcat(line, "Muted"); /* Flawfinder: ignore */ | 3139 | line += "Muted"; |
3149 | need_comma = TRUE; | 3140 | need_comma = TRUE; |
3150 | } | 3141 | } |
3151 | strcat(line,")"); /* Flawfinder: ignore */ | 3142 | line += ")"; |
3152 | } | 3143 | } |
3153 | if (is_appearance) | 3144 | if (is_appearance) |
3154 | { | 3145 | { |
3155 | strcat(line, "\n(Editing Appearance)"); /* Flawfinder: ignore */ | 3146 | line += "\n"; |
3147 | line += "(Editing Appearance)"; | ||
3156 | } | 3148 | } |
3157 | mNameAway = is_away; | 3149 | mNameAway = is_away; |
3158 | mNameBusy = is_busy; | 3150 | mNameBusy = is_busy; |
3159 | mNameMute = is_muted; | 3151 | mNameMute = is_muted; |
3160 | mNameAppearance = is_appearance; | 3152 | mNameAppearance = is_appearance; |
3161 | mTitle = title ? title->getString() : ""; | 3153 | mTitle = title ? title->getString() : ""; |
3154 | LLStringFn::replace_nonprintable(mTitle,LL_UNKNOWN_CHAR); | ||
3162 | mNameString = utf8str_to_wstring(line); | 3155 | mNameString = utf8str_to_wstring(line); |
3163 | new_name = TRUE; | 3156 | new_name = TRUE; |
3164 | } | 3157 | } |
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index 3523635..e7db166 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp | |||
@@ -2665,6 +2665,18 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects, BOOL render | |||
2665 | LLGLState::checkClientArrays(); | 2665 | LLGLState::checkClientArrays(); |
2666 | U32 last_type = 0; | 2666 | U32 last_type = 0; |
2667 | 2667 | ||
2668 | // If we don't do this, we crash something on changing graphics settings | ||
2669 | // from Medium -> Low, because we unload all the shaders and the | ||
2670 | // draw pools aren't aware. I don't know if this has to be a separate | ||
2671 | // loop before actual rendering. JC | ||
2672 | for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter) | ||
2673 | { | ||
2674 | LLDrawPool *poolp = *iter; | ||
2675 | if (poolp->isFacePool() && hasRenderType(poolp->getType())) | ||
2676 | { | ||
2677 | poolp->prerender(); | ||
2678 | } | ||
2679 | } | ||
2668 | for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter) | 2680 | for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter) |
2669 | { | 2681 | { |
2670 | LLDrawPool *poolp = *iter; | 2682 | LLDrawPool *poolp = *iter; |
diff --git a/linden/indra/newview/skins/default/xui/de/panel_media_controls.xml b/linden/indra/newview/skins/default/xui/de/panel_media_controls.xml index eb47fa2..d15d186 100644 --- a/linden/indra/newview/skins/default/xui/de/panel_media_controls.xml +++ b/linden/indra/newview/skins/default/xui/de/panel_media_controls.xml | |||
@@ -2,7 +2,6 @@ | |||
2 | <panel name="media_controls"> | 2 | <panel name="media_controls"> |
3 | <icon name="music_icon" tool_tip="Streaming-Musik abspielen/unterbrechen" /> | 3 | <icon name="music_icon" tool_tip="Streaming-Musik abspielen/unterbrechen" /> |
4 | <button name="music_play" tool_tip="Streaming-Musik spielen/unterbrechen" /> | 4 | <button name="music_play" tool_tip="Streaming-Musik spielen/unterbrechen" /> |
5 | <button name="music_pause" tool_tip="Streaming-Musik unterbrechen" /> | ||
6 | <button name="music_stop" tool_tip="Streaming-Musik beenden" /> | 5 | <button name="music_stop" tool_tip="Streaming-Musik beenden" /> |
7 | <icon name="media_icon" tool_tip="Streaming-Musik abspielen/unterbrechen" /> | 6 | <icon name="media_icon" tool_tip="Streaming-Musik abspielen/unterbrechen" /> |
8 | <button name="media_play" tool_tip="Streaming-Musik abspielen/unterbrechen" /> | 7 | <button name="media_play" tool_tip="Streaming-Musik abspielen/unterbrechen" /> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml index d3174af..8020e9a 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml | |||
@@ -28,7 +28,7 @@ | |||
28 | width="350" /> | 28 | width="350" /> |
29 | <check_box bottom="-65" control_name="IMInChatHistory" enabled="true" follows="left|top" | 29 | <check_box bottom="-65" control_name="IMInChatHistory" enabled="true" follows="left|top" |
30 | font="SansSerifSmall" height="16" initial_value="false" | 30 | font="SansSerifSmall" height="16" initial_value="false" |
31 | label="Include IM in Local Chat" left="148" mouse_opaque="true" | 31 | label="Show IMs with Chat" left="148" mouse_opaque="true" |
32 | name="include_im_in_chat_history" radio_style="false" width="237" /> | 32 | name="include_im_in_chat_history" radio_style="false" width="237" /> |
33 | <check_box bottom="-85" control_name="IMShowTimestamps" enabled="true" follows="left|top" | 33 | <check_box bottom="-85" control_name="IMShowTimestamps" enabled="true" follows="left|top" |
34 | font="SansSerifSmall" height="16" initial_value="false" | 34 | font="SansSerifSmall" height="16" initial_value="false" |
diff --git a/linden/indra/newview/skins/default/xui/fr/panel_media_controls.xml b/linden/indra/newview/skins/default/xui/fr/panel_media_controls.xml index ff498ba..7b601b4 100644 --- a/linden/indra/newview/skins/default/xui/fr/panel_media_controls.xml +++ b/linden/indra/newview/skins/default/xui/fr/panel_media_controls.xml | |||
@@ -2,7 +2,6 @@ | |||
2 | <panel name="media_controls"> | 2 | <panel name="media_controls"> |
3 | <icon name="music_icon" tool_tip="Jouer/pauser le flux musical" /> | 3 | <icon name="music_icon" tool_tip="Jouer/pauser le flux musical" /> |
4 | <button name="music_play" tool_tip="Jouer/pauser le flux musical" /> | 4 | <button name="music_play" tool_tip="Jouer/pauser le flux musical" /> |
5 | <button name="music_pause" tool_tip="Pauser le flux musical" /> | ||
6 | <button name="music_stop" tool_tip="Arrêter le flux musical" /> | 5 | <button name="music_stop" tool_tip="Arrêter le flux musical" /> |
7 | <icon name="media_icon" tool_tip="Jouer/pauser le flux musical" /> | 6 | <icon name="media_icon" tool_tip="Jouer/pauser le flux musical" /> |
8 | <button name="media_play" tool_tip="Jouer/pauser le flux musical" /> | 7 | <button name="media_play" tool_tip="Jouer/pauser le flux musical" /> |
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_media_controls.xml b/linden/indra/newview/skins/default/xui/ja/panel_media_controls.xml index 7c87dc3..89791a5 100644 --- a/linden/indra/newview/skins/default/xui/ja/panel_media_controls.xml +++ b/linden/indra/newview/skins/default/xui/ja/panel_media_controls.xml | |||
@@ -4,8 +4,6 @@ | |||
4 | tool_tip="ストリーミング・ミュージックの再生/一時停止" /> | 4 | tool_tip="ストリーミング・ミュージックの再生/一時停止" /> |
5 | <button name="music_play" | 5 | <button name="music_play" |
6 | tool_tip="ストリーミング・ミュージックの再生/一時停止" /> | 6 | tool_tip="ストリーミング・ミュージックの再生/一時停止" /> |
7 | <button name="music_pause" | ||
8 | tool_tip="ストリーミング・ミュージックの一時停止" /> | ||
9 | <button name="music_stop" | 7 | <button name="music_stop" |
10 | tool_tip="ストリーミング・ミュージックの停止" /> | 8 | tool_tip="ストリーミング・ミュージックの停止" /> |
11 | <icon name="media_icon" | 9 | <icon name="media_icon" |
diff --git a/linden/indra/newview/skins/default/xui/ko/panel_media_controls.xml b/linden/indra/newview/skins/default/xui/ko/panel_media_controls.xml index 3b3aa0e..fa5a010 100644 --- a/linden/indra/newview/skins/default/xui/ko/panel_media_controls.xml +++ b/linden/indra/newview/skins/default/xui/ko/panel_media_controls.xml | |||
@@ -2,7 +2,6 @@ | |||
2 | <panel name="media_controls"> | 2 | <panel name="media_controls"> |
3 | <icon name="music_icon" tool_tip="스트리밍 음악 재생/일시 정지" /> | 3 | <icon name="music_icon" tool_tip="스트리밍 음악 재생/일시 정지" /> |
4 | <button name="music_play" tool_tip="스트리밍 음악 재생/일시 정지" /> | 4 | <button name="music_play" tool_tip="스트리밍 음악 재생/일시 정지" /> |
5 | <button name="music_pause" tool_tip="스트리밍 음악 일시 정지" /> | ||
6 | <button name="music_stop" tool_tip="스트리밍 음악 중지" /> | 5 | <button name="music_stop" tool_tip="스트리밍 음악 중지" /> |
7 | <icon name="media_icon" tool_tip="스트리밍 음악 재생/일시 정지" /> | 6 | <icon name="media_icon" tool_tip="스트리밍 음악 재생/일시 정지" /> |
8 | <button name="media_play" tool_tip="스트리밍 음악 재생/일시 정지" /> | 7 | <button name="media_play" tool_tip="스트리밍 음악 재생/일시 정지" /> |
diff --git a/linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml b/linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml index d62fe09..466db79 100644 --- a/linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml +++ b/linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml | |||
@@ -4,7 +4,7 @@ | |||
4 | name="media_controls" width="220"> | 4 | name="media_controls" width="220"> |
5 | <icon bottom="-18" enabled="true" follows="left|top" height="14" | 5 | <icon bottom="-18" enabled="true" follows="left|top" height="14" |
6 | image_name="icn_label_music.tga" label="" left_delta="6" mouse_opaque="true" | 6 | image_name="icn_label_music.tga" label="" left_delta="6" mouse_opaque="true" |
7 | name="music_icon" scale_image="true" tool_tip="Play/pause streaming music" | 7 | name="music_icon" scale_image="true" tool_tip="Play streaming music" |
8 | width="14" /> | 8 | width="14" /> |
9 | <button bottom="-21" enabled="true" follows="left|top" height="20" | 9 | <button bottom="-21" enabled="true" follows="left|top" height="20" |
10 | image_overlay="icn_play.tga" | 10 | image_overlay="icn_play.tga" |
@@ -13,15 +13,7 @@ | |||
13 | image_disabled="flyout_btn_left_disabled.tga" | 13 | image_disabled="flyout_btn_left_disabled.tga" |
14 | label="" left_delta="16" | 14 | label="" left_delta="16" |
15 | mouse_opaque="true" name="music_play" scale_image="true" toggle="false" | 15 | mouse_opaque="true" name="music_play" scale_image="true" toggle="false" |
16 | tool_tip="Play/pause streaming music" width="20" /> | 16 | tool_tip="Play streaming music" width="20" /> |
17 | <button bottom="-21" enabled="false" follows="left|top" height="20" | ||
18 | image_overlay="icn_pause.tga" | ||
19 | image_unselected="flyout_btn_left.tga" | ||
20 | image_selected="flyout_btn_left_selected.tga" | ||
21 | image_disabled="flyout_btn_left_disabled.tga" | ||
22 | label="" left_delta="0" | ||
23 | mouse_opaque="true" name="music_pause" scale_image="true" toggle="false" | ||
24 | tool_tip="Pause streaming music" width="20" /> | ||
25 | <button bottom="-21" enabled="true" follows="left|top" height="20" | 17 | <button bottom="-21" enabled="true" follows="left|top" height="20" |
26 | image_overlay="icn_stop.tga" | 18 | image_overlay="icn_stop.tga" |
27 | image_unselected="flyout_btn_right.tga" | 19 | image_unselected="flyout_btn_right.tga" |
@@ -33,7 +25,7 @@ | |||
33 | <icon bottom="-18" enabled="true" follows="left|top" height="14" | 25 | <icon bottom="-18" enabled="true" follows="left|top" height="14" |
34 | image_name="icn_label_media.tga" | 26 | image_name="icn_label_media.tga" |
35 | label="" left_delta="22" mouse_opaque="true" | 27 | label="" left_delta="22" mouse_opaque="true" |
36 | name="media_icon" scale_image="true" tool_tip="Play/pause streaming music" | 28 | name="media_icon" scale_image="true" tool_tip="Play/pause streaming media" |
37 | width="17" /> | 29 | width="17" /> |
38 | <button bottom="-21" enabled="true" follows="left|top" height="20" | 30 | <button bottom="-21" enabled="true" follows="left|top" height="20" |
39 | image_overlay="icn_play.tga" | 31 | image_overlay="icn_play.tga" |