aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
authorMcCabe Maxsted2009-03-04 12:50:59 -0700
committerMcCabe Maxsted2009-03-04 12:50:59 -0700
commitf3de7ecf37cd83c23d15ea12e112be9600e33ece (patch)
treeadac53f3d9b87bd87fd081b1722781d071c8ebff /linden/indra/newview
parentBackported fix for VWR-6744 (No way to hide IMs in chat console) (diff)
parentApplied my patch for VWR-8454 (PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS not hig... (diff)
downloadmeta-impy-f3de7ecf37cd83c23d15ea12e112be9600e33ece.zip
meta-impy-f3de7ecf37cd83c23d15ea12e112be9600e33ece.tar.gz
meta-impy-f3de7ecf37cd83c23d15ea12e112be9600e33ece.tar.bz2
meta-impy-f3de7ecf37cd83c23d15ea12e112be9600e33ece.tar.xz
Merge branch 'cvpatches' into next
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/app_settings/keywords.ini1
-rw-r--r--linden/indra/newview/llcompilequeue.cpp16
-rw-r--r--linden/indra/newview/lldrawable.cpp12
-rw-r--r--linden/indra/newview/llfilepicker.cpp39
-rw-r--r--linden/indra/newview/llviewermenu.cpp5
-rw-r--r--linden/indra/newview/pipeline.cpp12
6 files changed, 75 insertions, 10 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
455PARCEL_FLAG_ALLOW_TERRAFORM Used with llGetParcelFlags to find if a parcel allows anyone to terraform the land 455PARCEL_FLAG_ALLOW_TERRAFORM Used with llGetParcelFlags to find if a parcel allows anyone to terraform the land
456PARCEL_FLAG_ALLOW_DAMAGE Used with llGetParcelFlags to find if a parcel allows damage 456PARCEL_FLAG_ALLOW_DAMAGE Used with llGetParcelFlags to find if a parcel allows damage
457PARCEL_FLAG_ALLOW_CREATE_OBJECTS Used with llGetParcelFlags to find if a parcel allows anyone to create objects 457PARCEL_FLAG_ALLOW_CREATE_OBJECTS Used with llGetParcelFlags to find if a parcel allows anyone to create objects
458PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS Used with llGetParcelFlags to find if a parcel allows group members or objects to create objects
458PARCEL_FLAG_USE_ACCESS_GROUP Used with llGetParcelFlags to find if a parcel limits access to a group 459PARCEL_FLAG_USE_ACCESS_GROUP Used with llGetParcelFlags to find if a parcel limits access to a group
459PARCEL_FLAG_USE_ACCESS_LIST Used with llGetParcelFlags to find if a parcel limits access to a list of residents 460PARCEL_FLAG_USE_ACCESS_LIST Used with llGetParcelFlags to find if a parcel limits access to a list of residents
460PARCEL_FLAG_USE_BAN_LIST Used with llGetParcelFlags to find if a parcel uses a ban list 461PARCEL_FLAG_USE_BAN_LIST Used with llGetParcelFlags to find if a parcel uses a ban list
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
900void LLFilePicker::add_to_selectedfiles(gpointer data, gpointer user_data) 900void 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/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/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;