aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:52 -0500
committerJacek Antonelli2008-08-15 23:44:52 -0500
commit0340e6d3dea28e7bb1da9dc67ac4c2b57354279f (patch)
treedf9029fa98b28a23c44409598764f282c14c4e16 /linden/indra/newview
parentSecond Life viewer sources 1.14.0.0 (diff)
downloadmeta-impy-0340e6d3dea28e7bb1da9dc67ac4c2b57354279f.zip
meta-impy-0340e6d3dea28e7bb1da9dc67ac4c2b57354279f.tar.gz
meta-impy-0340e6d3dea28e7bb1da9dc67ac4c2b57354279f.tar.bz2
meta-impy-0340e6d3dea28e7bb1da9dc67ac4c2b57354279f.tar.xz
Second Life viewer sources 1.14.0.1
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/featuretable.txt2
-rw-r--r--linden/indra/newview/lleventpoll.cpp6
-rw-r--r--linden/indra/newview/llfolderview.cpp21
-rw-r--r--linden/indra/newview/llfolderview.h3
-rw-r--r--linden/indra/newview/llinventoryview.cpp4
-rw-r--r--linden/indra/newview/llpolymesh.cpp2
-rw-r--r--linden/indra/newview/llstartup.cpp8
-rw-r--r--linden/indra/newview/lltexturectrl.cpp2
-rw-r--r--linden/indra/newview/lltoolpie.cpp22
-rw-r--r--linden/indra/newview/lltoolpie.h1
-rw-r--r--linden/indra/newview/llviewerstats.cpp52
-rw-r--r--linden/indra/newview/llvlcomposition.cpp17
-rw-r--r--linden/indra/newview/releasenotes.txt12
13 files changed, 100 insertions, 52 deletions
diff --git a/linden/indra/newview/featuretable.txt b/linden/indra/newview/featuretable.txt
index 59e816d..17e2427 100644
--- a/linden/indra/newview/featuretable.txt
+++ b/linden/indra/newview/featuretable.txt
@@ -40,7 +40,7 @@ VertexShaderEnable 1 1
40// 40//
41list Class0 41list Class0
42VertexShaderEnable 1 0 42VertexShaderEnable 1 0
43RenderVBO 1 1 43RenderVBO 1 0
44RenderDistance 1 64 44RenderDistance 1 64
45RenderAvatarVP 1 0 45RenderAvatarVP 1 0
46RenderAvatarMode 1 0 46RenderAvatarMode 1 0
diff --git a/linden/indra/newview/lleventpoll.cpp b/linden/indra/newview/lleventpoll.cpp
index ece0958..5407ee2 100644
--- a/linden/indra/newview/lleventpoll.cpp
+++ b/linden/indra/newview/lleventpoll.cpp
@@ -49,8 +49,8 @@ public:
49 49
50 void stop() 50 void stop()
51 { 51 {
52 llinfos << "LLEventPoll::Impl::stop <" << mCount << "> " 52 lldebugs << "LLEventPoll::Impl::stop <" << mCount << "> "
53 << mPollURL << llendl; 53 << mPollURL << llendl;
54 // there should be a way to stop a LLHTTPClient request in progress 54 // there should be a way to stop a LLHTTPClient request in progress
55 mDone = true; 55 mDone = true;
56 mPtr = NULL; 56 mPtr = NULL;
@@ -69,7 +69,7 @@ private:
69 ~Impl() 69 ~Impl()
70 { 70 {
71 lldebugs << "LLEventPoll::Impl::~Impl <" << mCount << "> " 71 lldebugs << "LLEventPoll::Impl::~Impl <" << mCount << "> "
72 << mPollURL << llendl; 72 << mPollURL << llendl;
73 } 73 }
74 74
75 75
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp
index 377e620..1007bc4 100644
--- a/linden/indra/newview/llfolderview.cpp
+++ b/linden/indra/newview/llfolderview.cpp
@@ -1245,7 +1245,7 @@ void LLFolderViewFolder::filter( LLInventoryFilter& filter)
1245 } 1245 }
1246 1246
1247 // when applying a filter, matching folders get their contents downloaded first 1247 // when applying a filter, matching folders get their contents downloaded first
1248 if (getRoot()->isFilterActive() && getFiltered(filter.getMinRequiredGeneration()) && !gInventory.isCategoryComplete(mListener->getUUID())) 1248 if (filter.isNotDefault() && getFiltered(filter.getMinRequiredGeneration()) && !gInventory.isCategoryComplete(mListener->getUUID()))
1249 { 1249 {
1250 gInventory.startBackgroundFetch(mListener->getUUID()); 1250 gInventory.startBackgroundFetch(mListener->getUUID());
1251 } 1251 }
@@ -2543,6 +2543,7 @@ LLFolderView::LLFolderView( const LLString& name, LLViewerImage* root_folder_ico
2543 mShowSingleSelection(FALSE), 2543 mShowSingleSelection(FALSE),
2544 mArrangeGeneration(0), 2544 mArrangeGeneration(0),
2545 mSelectCallback(NULL), 2545 mSelectCallback(NULL),
2546 mSelectionChanged(FALSE),
2546 mMinWidth(0), 2547 mMinWidth(0),
2547 mDragAndDropThisFrame(FALSE) 2548 mDragAndDropThisFrame(FALSE)
2548{ 2549{
@@ -4237,7 +4238,7 @@ void LLFolderView::idle(void* user_data)
4237 4238
4238 self->mFilter.clearModified(); 4239 self->mFilter.clearModified();
4239 BOOL filter_modified_and_active = self->mCompletedFilterGeneration < self->mFilter.getCurrentGeneration() && 4240 BOOL filter_modified_and_active = self->mCompletedFilterGeneration < self->mFilter.getCurrentGeneration() &&
4240 self->mFilter.isActive(); 4241 self->mFilter.isNotDefault();
4241 self->mNeedsAutoSelect = filter_modified_and_active && 4242 self->mNeedsAutoSelect = filter_modified_and_active &&
4242 !(gFocusMgr.childHasKeyboardFocus(self) || gFocusMgr.getMouseCapture()); 4243 !(gFocusMgr.childHasKeyboardFocus(self) || gFocusMgr.getMouseCapture());
4243 4244
@@ -4427,9 +4428,11 @@ LLInventoryFilter::LLInventoryFilter(const LLString& name) :
4427 mFilterGeneration = 0; 4428 mFilterGeneration = 0;
4428 mMustPassGeneration = S32_MAX; 4429 mMustPassGeneration = S32_MAX;
4429 mMinRequiredGeneration = 0; 4430 mMinRequiredGeneration = 0;
4431 mFilterCount = 0;
4430 mNextFilterGeneration = mFilterGeneration + 1; 4432 mNextFilterGeneration = mFilterGeneration + 1;
4431 4433
4432 mLastLogoff = gSavedPerAccountSettings.getU32("LastLogoff"); 4434 mLastLogoff = gSavedPerAccountSettings.getU32("LastLogoff");
4435 mFilterBehavior = FILTER_NONE;
4433} 4436}
4434 4437
4435LLInventoryFilter::~LLInventoryFilter() 4438LLInventoryFilter::~LLInventoryFilter()
@@ -4469,7 +4472,7 @@ std::string::size_type LLInventoryFilter::getStringMatchOffset() const
4469} 4472}
4470 4473
4471// has user modified default filter params? 4474// has user modified default filter params?
4472BOOL LLInventoryFilter::isActive() 4475BOOL LLInventoryFilter::isNotDefault()
4473{ 4476{
4474 return mFilterOps.mFilterTypes != mDefaultFilterOps.mFilterTypes 4477 return mFilterOps.mFilterTypes != mDefaultFilterOps.mFilterTypes
4475 || mFilterSubString.size() 4478 || mFilterSubString.size()
@@ -4479,6 +4482,16 @@ BOOL LLInventoryFilter::isActive()
4479 || mFilterOps.mHoursAgo != mDefaultFilterOps.mHoursAgo; 4482 || mFilterOps.mHoursAgo != mDefaultFilterOps.mHoursAgo;
4480} 4483}
4481 4484
4485BOOL LLInventoryFilter::isActive()
4486{
4487 return mFilterOps.mFilterTypes != 0xffffffff
4488 || mFilterSubString.size()
4489 || mFilterOps.mPermissions != PERM_NONE
4490 || mFilterOps.mMinDate != 0
4491 || mFilterOps.mMaxDate != U32_MAX
4492 || mFilterOps.mHoursAgo != 0;
4493}
4494
4482BOOL LLInventoryFilter::isModified() 4495BOOL LLInventoryFilter::isModified()
4483{ 4496{
4484 return mModified; 4497 return mModified;
@@ -4688,7 +4701,7 @@ void LLInventoryFilter::setModified(EFilterBehavior behavior)
4688 mFilterBehavior = FILTER_RESTART; 4701 mFilterBehavior = FILTER_RESTART;
4689 } 4702 }
4690 4703
4691 if (isActive()) 4704 if (isNotDefault())
4692 { 4705 {
4693 // if not keeping current filter results, update last valid as well 4706 // if not keeping current filter results, update last valid as well
4694 switch(mFilterBehavior) 4707 switch(mFilterBehavior)
diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h
index ccadba9..eb67373 100644
--- a/linden/indra/newview/llfolderview.h
+++ b/linden/indra/newview/llfolderview.h
@@ -210,6 +210,7 @@ public:
210 BOOL check(LLFolderViewItem* item); 210 BOOL check(LLFolderViewItem* item);
211 std::string::size_type getStringMatchOffset() const; 211 std::string::size_type getStringMatchOffset() const;
212 BOOL isActive(); 212 BOOL isActive();
213 BOOL isNotDefault();
213 BOOL isModified(); 214 BOOL isModified();
214 BOOL isModifiedAndClear(); 215 BOOL isModifiedAndClear();
215 BOOL isSinceLogoff(); 216 BOOL isSinceLogoff();
@@ -697,7 +698,7 @@ public:
697 PermissionMask getFilterPermissions() const { return mFilter.getFilterPermissions(); } 698 PermissionMask getFilterPermissions() const { return mFilter.getFilterPermissions(); }
698 LLInventoryFilter::EFolderShow getShowFolderState() { return mFilter.getShowFolderState(); } 699 LLInventoryFilter::EFolderShow getShowFolderState() { return mFilter.getShowFolderState(); }
699 U32 getSortOrder() const; 700 U32 getSortOrder() const;
700 BOOL isFilterActive() { return mFilter.isActive(); } 701 BOOL isFilterModified() { return mFilter.isNotDefault(); }
701 BOOL getAllowMultiSelect() { return mAllowMultiSelect; } 702 BOOL getAllowMultiSelect() { return mAllowMultiSelect; }
702 703
703 // Close all folders in the view 704 // Close all folders in the view
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp
index afeb3be..162cf9f 100644
--- a/linden/indra/newview/llinventoryview.cpp
+++ b/linden/indra/newview/llinventoryview.cpp
@@ -622,7 +622,7 @@ void LLInventoryView::onClose(bool app_quitting)
622 gSavedSettings.setBOOL("ShowInventory", FALSE); 622 gSavedSettings.setBOOL("ShowInventory", FALSE);
623 } 623 }
624 // clear filters, but save user's folder state first 624 // clear filters, but save user's folder state first
625 if (!mActivePanel->getRootFolder()->isFilterActive()) 625 if (!mActivePanel->getRootFolder()->isFilterModified())
626 { 626 {
627 mSavedFolderState->setApply(FALSE); 627 mSavedFolderState->setApply(FALSE);
628 mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); 628 mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
@@ -868,7 +868,7 @@ void LLInventoryView::onSearchEdit(const LLString& search_string, void* user_dat
868 } 868 }
869 869
870 // save current folder open state if no filter currently applied 870 // save current folder open state if no filter currently applied
871 if (!self->mActivePanel->getRootFolder()->isFilterActive()) 871 if (!self->mActivePanel->getRootFolder()->isFilterModified())
872 { 872 {
873 self->mSavedFolderState->setApply(FALSE); 873 self->mSavedFolderState->setApply(FALSE);
874 self->mActivePanel->getRootFolder()->applyFunctorRecursively(*self->mSavedFolderState); 874 self->mActivePanel->getRootFolder()->applyFunctorRecursively(*self->mSavedFolderState);
diff --git a/linden/indra/newview/llpolymesh.cpp b/linden/indra/newview/llpolymesh.cpp
index 4f339ac..2f3dfce 100644
--- a/linden/indra/newview/llpolymesh.cpp
+++ b/linden/indra/newview/llpolymesh.cpp
@@ -340,7 +340,7 @@ BOOL LLPolyMeshSharedData::loadMesh( const char *fileName )
340 } 340 }
341 341
342 U8 rotationOrder; 342 U8 rotationOrder;
343 numRead = fread(&rotationOrder, 1, 1, fp); 343 numRead = fread(&rotationOrder, sizeof(U8), 1, fp);
344 344
345 if (numRead != 1) 345 if (numRead != 1)
346 { 346 {
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index cfdf899..2fe1190 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -633,6 +633,8 @@ BOOL idle_startup()
633 633
634 if (STATE_LOGIN_SHOW == gStartupState) 634 if (STATE_LOGIN_SHOW == gStartupState)
635 { 635 {
636 llinfos << "Initializing Window" << llendl;
637
636 gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); 638 gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
637 // Push our window frontmost 639 // Push our window frontmost
638 gViewerWindow->getWindow()->show(); 640 gViewerWindow->getWindow()->show();
@@ -2550,13 +2552,19 @@ BOOL idle_startup()
2550 2552
2551void login_show() 2553void login_show()
2552{ 2554{
2555 llinfos << "Initializing Login Screen" << llendl;
2556
2553 LLPanelLogin::show( gViewerWindow->getVirtualWindowRect(), 2557 LLPanelLogin::show( gViewerWindow->getVirtualWindowRect(),
2554 gSavedSettings.getBOOL("UseDebugLogin"), 2558 gSavedSettings.getBOOL("UseDebugLogin"),
2555 login_callback, NULL ); 2559 login_callback, NULL );
2556 2560
2561 llinfos << "Decoding Images" << llendl;
2562
2557 // Make sure all the UI textures are present and decoded. 2563 // Make sure all the UI textures are present and decoded.
2558 gImageList.decodeAllImages(2.f); 2564 gImageList.decodeAllImages(2.f);
2559 2565
2566 llinfos << "Setting Servers" << llendl;
2567
2560 if( USERSERVER_OTHER == gUserServerChoice ) 2568 if( USERSERVER_OTHER == gUserServerChoice )
2561 { 2569 {
2562 LLPanelLogin::addServer( gUserServerName, USERSERVER_OTHER ); 2570 LLPanelLogin::addServer( gUserServerName, USERSERVER_OTHER );
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp
index 666b5d2..8ae6862 100644
--- a/linden/indra/newview/lltexturectrl.cpp
+++ b/linden/indra/newview/lltexturectrl.cpp
@@ -821,7 +821,7 @@ void LLFloaterTexturePicker::onSearchEdit(const LLString& search_string, void* u
821 else if (picker->mInventoryPanel->getFilterSubString().empty()) 821 else if (picker->mInventoryPanel->getFilterSubString().empty())
822 { 822 {
823 // first letter in search term, save existing folder open state 823 // first letter in search term, save existing folder open state
824 if (!picker->mInventoryPanel->getRootFolder()->isFilterActive()) 824 if (!picker->mInventoryPanel->getRootFolder()->isFilterModified())
825 { 825 {
826 picker->mSavedFolderState.setApply(FALSE); 826 picker->mSavedFolderState.setApply(FALSE);
827 picker->mInventoryPanel->getRootFolder()->applyFunctorRecursively(picker->mSavedFolderState); 827 picker->mInventoryPanel->getRootFolder()->applyFunctorRecursively(picker->mSavedFolderState);
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp
index 3eaa275..4b29303 100644
--- a/linden/indra/newview/lltoolpie.cpp
+++ b/linden/indra/newview/lltoolpie.cpp
@@ -63,6 +63,7 @@ LLToolPie *gToolPie = NULL;
63 63
64LLViewerObject* LLToolPie::sClickActionObject = NULL; 64LLViewerObject* LLToolPie::sClickActionObject = NULL;
65LLHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL; 65LLHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL;
66U8 LLToolPie::sClickAction = 0;
66 67
67extern void handle_buy(void*); 68extern void handle_buy(void*);
68 69
@@ -164,17 +165,17 @@ BOOL LLToolPie::pickAndShowMenu(S32 x, S32 y, MASK mask, BOOL always_show)
164 // If it's a left-click, and we have a special action, do it. 165 // If it's a left-click, and we have a special action, do it.
165 if (useClickAction(always_show, mask, object, parent)) 166 if (useClickAction(always_show, mask, object, parent))
166 { 167 {
167 U8 click_action = 0; 168 sClickAction = 0;
168 if (object && object->getClickAction()) 169 if (object && object->getClickAction())
169 { 170 {
170 click_action = object->getClickAction(); 171 sClickAction = object->getClickAction();
171 } 172 }
172 else if (parent && parent->getClickAction()) 173 else if (parent && parent->getClickAction())
173 { 174 {
174 click_action = parent->getClickAction(); 175 sClickAction = parent->getClickAction();
175 } 176 }
176 177
177 switch(click_action) 178 switch(sClickAction)
178 { 179 {
179 case CLICK_ACTION_TOUCH: 180 case CLICK_ACTION_TOUCH:
180 default: 181 default:
@@ -187,8 +188,9 @@ BOOL LLToolPie::pickAndShowMenu(S32 x, S32 y, MASK mask, BOOL always_show)
187 if (object && object->flagTakesMoney() 188 if (object && object->flagTakesMoney()
188 || parent && parent->flagTakesMoney()) 189 || parent && parent->flagTakesMoney())
189 { 190 {
190 sClickActionObject = parent; 191 // pay event goes to object actually clicked on
191 sLeftClickSelection = LLToolSelect::handleObjectSelection(parent, MASK_NONE, FALSE, TRUE); 192 sClickActionObject = object;
193 sLeftClickSelection = LLToolSelect::handleObjectSelection(object, MASK_NONE, FALSE, TRUE);
192 return TRUE; 194 return TRUE;
193 } 195 }
194 break; 196 break;
@@ -417,13 +419,12 @@ void LLToolPie::selectionPropertiesReceived()
417 419
418 if (!sLeftClickSelection->isEmpty()) 420 if (!sLeftClickSelection->isEmpty())
419 { 421 {
420 LLViewerObject* root = sLeftClickSelection->getFirstRootObject(); 422 LLViewerObject* selected_object = sLeftClickSelection->getPrimaryObject();
421 // since we don't currently have a way to lock a selection, it could have changed 423 // since we don't currently have a way to lock a selection, it could have changed
422 // after we initially clicked on the object 424 // after we initially clicked on the object
423 if (root == sClickActionObject) 425 if (selected_object == sClickActionObject)
424 { 426 {
425 U8 action = root->getClickAction(); 427 switch (sClickAction)
426 switch (action)
427 { 428 {
428 case CLICK_ACTION_BUY: 429 case CLICK_ACTION_BUY:
429 handle_buy(NULL); 430 handle_buy(NULL);
@@ -441,6 +442,7 @@ void LLToolPie::selectionPropertiesReceived()
441 } 442 }
442 sLeftClickSelection = NULL; 443 sLeftClickSelection = NULL;
443 sClickActionObject = NULL; 444 sClickActionObject = NULL;
445 sClickAction = 0;
444} 446}
445 447
446BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask) 448BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
diff --git a/linden/indra/newview/lltoolpie.h b/linden/indra/newview/lltoolpie.h
index dd54b5c..fbfd1a6 100644
--- a/linden/indra/newview/lltoolpie.h
+++ b/linden/indra/newview/lltoolpie.h
@@ -73,6 +73,7 @@ protected:
73 LLUUID mHitObjectID; 73 LLUUID mHitObjectID;
74 BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region 74 BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region
75 static LLViewerObject* sClickActionObject; 75 static LLViewerObject* sClickActionObject;
76 static U8 sClickAction;
76 static LLHandle<LLObjectSelection> sLeftClickSelection; 77 static LLHandle<LLObjectSelection> sLeftClickSelection;
77}; 78};
78 79
diff --git a/linden/indra/newview/llviewerstats.cpp b/linden/indra/newview/llviewerstats.cpp
index f09b297..c7d2ee2 100644
--- a/linden/indra/newview/llviewerstats.cpp
+++ b/linden/indra/newview/llviewerstats.cpp
@@ -68,7 +68,7 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] =
68 // ST_IM_COUNT 68 // ST_IM_COUNT
69 StatAttributes("IMs sent", FALSE, FALSE), 69 StatAttributes("IMs sent", FALSE, FALSE),
70 // ST_FULLSCREEN_BOOL 70 // ST_FULLSCREEN_BOOL
71 StatAttributes("Fullscreen mode", TRUE, FALSE), 71 StatAttributes("Fullscreen mode", FALSE, FALSE),
72 // ST_RELEASE_COUNT 72 // ST_RELEASE_COUNT
73 StatAttributes("Object release count", FALSE, FALSE), 73 StatAttributes("Object release count", FALSE, FALSE),
74 // ST_CREATE_COUNT 74 // ST_CREATE_COUNT
@@ -118,61 +118,61 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] =
118 // ST_UPLOAD_ANIM_COUNT 118 // ST_UPLOAD_ANIM_COUNT
119 StatAttributes("Animations uploaded", FALSE, FALSE), 119 StatAttributes("Animations uploaded", FALSE, FALSE),
120 // ST_FPS_8_SECONDS 120 // ST_FPS_8_SECONDS
121 StatAttributes("Seconds below 8 FPS", TRUE, TRUE), 121 StatAttributes("Seconds below 8 FPS", FALSE, TRUE),
122 // ST_SIM_FPS_20_SECONDS 122 // ST_SIM_FPS_20_SECONDS
123 StatAttributes("Seconds with sim FPS below 20", TRUE, TRUE), 123 StatAttributes("Seconds with sim FPS below 20", FALSE, TRUE),
124 // ST_PHYS_FPS_20_SECONDS 124 // ST_PHYS_FPS_20_SECONDS
125 StatAttributes("Seconds with physics FPS below 20", FALSE, TRUE), 125 StatAttributes("Seconds with physics FPS below 20", FALSE, TRUE),
126 // ST_LOSS_05_SECONDS 126 // ST_LOSS_05_SECONDS
127 StatAttributes("Seconds with packet loss > 5%", TRUE, TRUE), 127 StatAttributes("Seconds with packet loss > 5%", FALSE, TRUE),
128 // ST_FPS_DROP_50_RATIO 128 // ST_FPS_DROP_50_RATIO
129 StatAttributes("Ratio of frames 2x longer than previous", FALSE, FALSE), 129 StatAttributes("Ratio of frames 2x longer than previous", FALSE, FALSE),
130 // ST_ENABLE_VBO 130 // ST_ENABLE_VBO
131 StatAttributes("Vertex Buffers Enabled", TRUE, FALSE), 131 StatAttributes("Vertex Buffers Enabled", TRUE, FALSE),
132 // ST_DELTA_BANDWIDTH 132 // ST_DELTA_BANDWIDTH
133 StatAttributes("Increase/Decrease in bandwidth based on packet loss", TRUE, FALSE), 133 StatAttributes("Increase/Decrease in bandwidth based on packet loss", FALSE, FALSE),
134 // ST_MAX_BANDWIDTH 134 // ST_MAX_BANDWIDTH
135 StatAttributes("Max bandwidth setting", TRUE, FALSE), 135 StatAttributes("Max bandwidth setting", FALSE, FALSE),
136 // ST_LIGHTING_DETAIL 136 // ST_LIGHTING_DETAIL
137 StatAttributes("Lighting Detail", TRUE, FALSE), 137 StatAttributes("Lighting Detail", FALSE, FALSE),
138 // ST_VISIBLE_AVATARS 138 // ST_VISIBLE_AVATARS
139 StatAttributes("Visible Avatars", TRUE, FALSE), 139 StatAttributes("Visible Avatars", FALSE, FALSE),
140 // ST_SHADER_OJECTS 140 // ST_SHADER_OJECTS
141 StatAttributes("Object Shaders", TRUE, FALSE), 141 StatAttributes("Object Shaders", FALSE, FALSE),
142 // ST_SHADER_ENVIRONMENT 142 // ST_SHADER_ENVIRONMENT
143 StatAttributes("Environment Shaders", TRUE, FALSE), 143 StatAttributes("Environment Shaders", FALSE, FALSE),
144 // ST_VISIBLE_DRAW_DIST 144 // ST_VISIBLE_DRAW_DIST
145 StatAttributes("Draw Distance", TRUE, FALSE), 145 StatAttributes("Draw Distance", FALSE, FALSE),
146 // ST_VISIBLE_CHAT_BUBBLES 146 // ST_VISIBLE_CHAT_BUBBLES
147 StatAttributes("Chat Bubbles Enabled", TRUE, FALSE), 147 StatAttributes("Chat Bubbles Enabled", FALSE, FALSE),
148 // ST_SHADER_AVATAR 148 // ST_SHADER_AVATAR
149 StatAttributes("Avatar Shaders", TRUE, FALSE), 149 StatAttributes("Avatar Shaders", FALSE, FALSE),
150 // ST_FRAME_SECS 150 // ST_FRAME_SECS
151 StatAttributes("FRAME_SECS", TRUE, FALSE), 151 StatAttributes("FRAME_SECS", FALSE, FALSE),
152 // ST_UPDATE_SECS 152 // ST_UPDATE_SECS
153 StatAttributes("UPDATE_SECS", TRUE, FALSE), 153 StatAttributes("UPDATE_SECS", FALSE, FALSE),
154 // ST_NETWORK_SECS 154 // ST_NETWORK_SECS
155 StatAttributes("NETWORK_SECS", TRUE, FALSE), 155 StatAttributes("NETWORK_SECS", FALSE, FALSE),
156 // ST_IMAGE_SECS 156 // ST_IMAGE_SECS
157 StatAttributes("IMAGE_SECS", TRUE, FALSE), 157 StatAttributes("IMAGE_SECS", FALSE, FALSE),
158 // ST_REBUILD_SECS 158 // ST_REBUILD_SECS
159 StatAttributes("REBUILD_SECS", TRUE, FALSE), 159 StatAttributes("REBUILD_SECS", FALSE, FALSE),
160 // ST_RENDER_SECS 160 // ST_RENDER_SECS
161 StatAttributes("RENDER_SECS", TRUE, FALSE), 161 StatAttributes("RENDER_SECS", FALSE, FALSE),
162 // ST_CROSSING_AVG 162 // ST_CROSSING_AVG
163 StatAttributes("CROSSING_AVG", TRUE, FALSE), 163 StatAttributes("CROSSING_AVG", FALSE, FALSE),
164 // ST_CROSSING_MAX 164 // ST_CROSSING_MAX
165 StatAttributes("CROSSING_MAX", TRUE, FALSE), 165 StatAttributes("CROSSING_MAX", FALSE, FALSE),
166 // ST_LIBXUL_WIDGET_USED 166 // ST_LIBXUL_WIDGET_USED
167 StatAttributes("LibXUL Widget used", TRUE, FALSE), 167 StatAttributes("LibXUL Widget used", FALSE, FALSE),
168 // ST_WINDOW_WIDTH 168 // ST_WINDOW_WIDTH
169 StatAttributes("Window width", TRUE, FALSE), 169 StatAttributes("Window width", FALSE, FALSE),
170 // ST_WINDOW_HEIGHT 170 // ST_WINDOW_HEIGHT
171 StatAttributes("Window height", TRUE, FALSE), 171 StatAttributes("Window height", FALSE, FALSE),
172 // ST_TEX_BAKES 172 // ST_TEX_BAKES
173 StatAttributes("Texture Bakes", TRUE, FALSE), 173 StatAttributes("Texture Bakes", FALSE, FALSE),
174 // ST_TEX_REBAKES 174 // ST_TEX_REBAKES
175 StatAttributes("Texture Rebakes", TRUE, FALSE) 175 StatAttributes("Texture Rebakes", FALSE, FALSE)
176}; 176};
177 177
178LLViewerStats::LLViewerStats() 178LLViewerStats::LLViewerStats()
diff --git a/linden/indra/newview/llvlcomposition.cpp b/linden/indra/newview/llvlcomposition.cpp
index f2fa1e6..e0cb40d 100644
--- a/linden/indra/newview/llvlcomposition.cpp
+++ b/linden/indra/newview/llvlcomposition.cpp
@@ -269,6 +269,7 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
269 269
270 // These have already been validated by generateComposition. 270 // These have already been validated by generateComposition.
271 U8* st_data[4]; 271 U8* st_data[4];
272 S32 st_data_size[4]; // for debugging
272 273
273 for (S32 i = 0; i < 4; i++) 274 for (S32 i = 0; i < 4; i++)
274 { 275 {
@@ -299,6 +300,7 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
299 } 300 }
300 } 301 }
301 st_data[i] = mRawImages[i]->getData(); 302 st_data[i] = mRawImages[i]->getData();
303 st_data_size[i] = mRawImages[i]->getDataSize();
302 } 304 }
303 305
304 /////////////////////////////////////// 306 ///////////////////////////////////////
@@ -413,9 +415,18 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
413 for (U32 k = 0; k < tex_comps; k++) 415 for (U32 k = 0; k < tex_comps; k++)
414 { 416 {
415 // Linearly interpolate based on composition. 417 // Linearly interpolate based on composition.
416 F32 a = *(st_data[tex0] + st_offset); 418 if (st_offset >= st_data_size[tex0] || st_offset >= st_data_size[tex1])
417 F32 b = *(st_data[tex1] + st_offset); 419 {
418 rawp[ offset ] = (U8)lltrunc( a + composition * (b - a) ); 420 // SJB: This shouldn't be happening, but does... Rounding error?
421 //llwarns << "offset 0 [" << tex0 << "] =" << st_offset << " >= size=" << st_data_size[tex0] << llendl;
422 //llwarns << "offset 1 [" << tex1 << "] =" << st_offset << " >= size=" << st_data_size[tex1] << llendl;
423 }
424 else
425 {
426 F32 a = *(st_data[tex0] + st_offset);
427 F32 b = *(st_data[tex1] + st_offset);
428 rawp[ offset ] = (U8)lltrunc( a + composition * (b - a) );
429 }
419 offset++; 430 offset++;
420 st_offset++; 431 st_offset++;
421 } 432 }
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt
index b8822dc..5fd9230 100644
--- a/linden/indra/newview/releasenotes.txt
+++ b/linden/indra/newview/releasenotes.txt
@@ -1,3 +1,15 @@
1Release Notes for Second Life 1.14.0(1) March 30, 2007
2=====================================
3Fixes:
4* Fixed: When going to recent items tab in inventory, inventory contents do not download
5* Fixed: Crash in llvlcomposition
6* Fixed: VWR-200: money(); events in a linked sets fail to trigger
7* Fixed: VWR-109: Characters from fallback fonts don't scale properly
8* Fixed: VWR-100: Messages form OpenJPEG only in debug mode
9* Fixed: VWR-97: Several iterator bugs in llmessage
10* Fixed: VWR-45: trivial patch, initialize variables
11* Fixed: VWR-14: Inconsistancy with reading binary data in llpolymesh.cpp
12
1Release Notes for Second Life 1.14.0(0) March 27, 2007 13Release Notes for Second Life 1.14.0(0) March 27, 2007
2===================================== 14=====================================
3New feature: 15New feature: