From 0340e6d3dea28e7bb1da9dc67ac4c2b57354279f Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:44:52 -0500 Subject: Second Life viewer sources 1.14.0.1 --- linden/doc/contributions.txt | 6 +-- linden/indra/SConstruct | 20 ++++--- linden/indra/llmessage/llcircuit.cpp | 2 +- linden/indra/llmessage/llpumpio.cpp | 15 +++--- linden/indra/llrender/llfontgl.cpp | 90 +++++++++++++++++++------------- linden/indra/newview/featuretable.txt | 2 +- linden/indra/newview/lleventpoll.cpp | 6 +-- linden/indra/newview/llfolderview.cpp | 21 ++++++-- linden/indra/newview/llfolderview.h | 3 +- linden/indra/newview/llinventoryview.cpp | 4 +- linden/indra/newview/llpolymesh.cpp | 2 +- linden/indra/newview/llstartup.cpp | 8 +++ linden/indra/newview/lltexturectrl.cpp | 2 +- linden/indra/newview/lltoolpie.cpp | 22 ++++---- linden/indra/newview/lltoolpie.h | 1 + linden/indra/newview/llviewerstats.cpp | 52 +++++++++--------- linden/indra/newview/llvlcomposition.cpp | 17 ++++-- linden/indra/newview/releasenotes.txt | 12 +++++ 18 files changed, 179 insertions(+), 106 deletions(-) (limited to 'linden') diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt index 494e3fe..3c495f7 100644 --- a/linden/doc/contributions.txt +++ b/linden/doc/contributions.txt @@ -1,4 +1,4 @@ -Linden Lab would like to acknowledge source code contributions from the + Linden Lab would like to acknowledge source code contributions from the following residents. The Second Life resident name is given below, along with the issue identifier corresponding to the patches we've received from them. To see more about these contributions, visit @@ -9,14 +9,14 @@ blino Nakamura - VWR-17 Drewan Keats - VWR-28 Dylan Haskell - VWR-72 Eddy Stryker - VWR-15, VWR-23 -Hiro Sommambulist - VWR-66 +Hiro Sommambulist - VWR-66, VWR-97, VWR-100, VWR-105, VWR-108, VWR-118 Joghert LeSabre - VWR-64 Kage Pixel - VWR-11 Kunnis Basiat - VWR-82 Paul Churchill - VWR-20 Paula Innis - VWR-30 Peekay Semyorka - VWR-7, VWR-19, VWR-49 -SpacedOut Frye - VWR-57, VWR-123 +SpacedOut Frye - VWR-57, VWR-94, VWR-121, VWR-123 Strife Onizuka - VWR-74, VWR-85, SVC-9 Zipherius Turas - VWR-76, VWR-77 diff --git a/linden/indra/SConstruct b/linden/indra/SConstruct index 2aeee01..66a0231 100644 --- a/linden/indra/SConstruct +++ b/linden/indra/SConstruct @@ -49,7 +49,7 @@ opts = Options() opts.Add(EnumOption('BUILD', 'Set build type', 'releasefordownload', allowed_values=('debug', 'release', 'releasenoopt', 'releasefordownload'))) opts.Add(EnumOption('ARCH', 'Set architecture', 'i686', - allowed_values=('i686', 'powerpc', 'x86_64'))) + allowed_values=('i686', 'powerpc', 'x86_64', 'x86_64cross'))) opts.Add(EnumOption('BTARGET', 'Set build target', 'server', allowed_values=('client', 'server', 'all'))) opts.Add(EnumOption('DISTCC', 'Enabled distcc', 'yes', @@ -183,8 +183,10 @@ for build_target in targets: # Linux-only flags flags += '-DLL_LINUX=1 ' if build_target == 'client': - flags += '-DAPPID=secondlife -DLL_SDL=1 -DLL_X11=1 ' - flags += '-DLL_GTK=1 ' + flags += '-DAPPID=secondlife -DLL_SDL=1 ' + if arch == 'x86_64' or arch == 'x86_64cross': + flags += '-DLL_FMOD=0 ' + flags += '-DLL_X11=1 -DLL_GTK=1 ' client_external_libs += [ 'gtk-x11-2.0', 'elfio' ] include_dirs += [ '../libraries/' + system_str + '/include/gtk-2.0' ] include_dirs += [ '../libraries/' + system_str + '/include/glib-2.0'] @@ -202,7 +204,7 @@ for build_target in targets: flags += '-DLL_LIBXUL_ENABLED=0 ' else: # Mac-only flags - flags += '-x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -faltivec -fasm-blocks -g -O2 -fmessage-length=0 -mtune=G4 -Wno-deprecated-declarations -Wno-invalid-offsetof -mmacosx-version-min=10.3 -DLL_DARWIN=1 -Wmost -Wno-sign-compare -Wno-switch -fpch-preprocess -F./newview/build/Deployment -fconstant-cfstrings -ffor-scope -Wno-reorder -isysroot /Developer/SDKs/MacOSX10.3.9.sdk ' + flags += '-x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -faltivec -fasm-blocks -g -fmessage-length=0 -mtune=G4 -Wno-deprecated-declarations -Wno-invalid-offsetof -mmacosx-version-min=10.3 -DLL_DARWIN=1 -Wmost -Wno-sign-compare -Wno-switch -fpch-preprocess -F./newview/build/Deployment -fconstant-cfstrings -ffor-scope -Wno-reorder -isysroot /Developer/SDKs/MacOSX10.3.9.sdk ' ### Build type-specific flags ### @@ -234,7 +236,7 @@ for build_target in targets: if build_target != 'client': gcc_bin = 'g++-3.3' - if arch == 'x86_64': + if arch == 'x86_64cross': gcc_bin = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc' strip_cmd = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/bin/strip -S -o $TARGET $SOURCE' @@ -273,7 +275,7 @@ for build_target in targets: if enable_distcc == 'yes': hosts = 'localhost/2 station9.lindenlab.com,lzo station7.lindenlab.com,lzo station6.lindenlab.com,lzo station11.lindenlab.com,lzo station5.lindenlab.com,lzo station15.lindenlab.com,lzo station10.lindenlab.com,lzo station13.lindenlab.com,lzo station12.lindenlab.com,lzo' - if arch == 'x86_64': + if arch == 'x86_64' or arch == 'x86_64cross': hosts = 'localhost' print "Distributing to hosts: " + hosts env['ENV']['DISTCC_HOSTS'] = hosts @@ -415,7 +417,11 @@ for build_target in targets: ################## output_bin = 'newview/secondlife-' + arch + '-bin' - external_libs = client_external_libs + common_external_libs + [ 'freetype', 'jpeg', 'SDL', 'GL', 'GLU', 'ogg', 'vorbisenc', 'vorbisfile', 'vorbis', 'fmod-3.75', 'db-4.2', 'openjpeg' ] + external_libs = client_external_libs + common_external_libs + [ 'freetype', 'jpeg', 'SDL', 'GL', 'GLU', 'ogg', 'vorbisenc', 'vorbisfile', 'vorbis', 'db-4.2', 'openjpeg' ] + + if arch != 'x86_64' and arch != 'x86_64cross': + external_libs += [ 'fmod-3.75' ] + external_libs.remove('cares') internal_libs = [ 'lscript', 'llwindow', 'llrender', 'llprimitive', diff --git a/linden/indra/llmessage/llcircuit.cpp b/linden/indra/llmessage/llcircuit.cpp index 5187948..d73cc22 100644 --- a/linden/indra/llmessage/llcircuit.cpp +++ b/linden/indra/llmessage/llcircuit.cpp @@ -967,7 +967,7 @@ BOOL LLCircuitData::updateWatchDogTimers(LLMessageSystem *msgsys) << (*it).first; llinfos << str.str().c_str() << llendl; } - mPotentialLostPackets.erase((*(it++)).first); + mPotentialLostPackets.erase(it++); } else { diff --git a/linden/indra/llmessage/llpumpio.cpp b/linden/indra/llmessage/llpumpio.cpp index c1f1821..4ce15b9 100644 --- a/linden/indra/llmessage/llpumpio.cpp +++ b/linden/indra/llmessage/llpumpio.cpp @@ -221,16 +221,15 @@ bool LLPumpIO::setConditional(LLIOPipe* pipe, const apr_pollfd_t* poll) { // remove any matching poll file descriptors for this pipe. LLIOPipe::ptr_t pipe_ptr(pipe); - - LLChainInfo::conditionals_t::iterator it = (*mCurrentChain).mDescriptors.begin(); - LLChainInfo::conditionals_t::iterator end = (*mCurrentChain).mDescriptors.end(); - while (it != end) + LLChainInfo::conditionals_t::iterator it; + it = (*mCurrentChain).mDescriptors.begin(); + while(it != (*mCurrentChain).mDescriptors.end()) { LLChainInfo::pipe_conditional_t& value = (*it); - if ( pipe_ptr == value.first ) + if(pipe_ptr == value.first) { ll_delete_apr_pollset_fd_client_data()(value); - (*mCurrentChain).mDescriptors.erase(it++); + it = (*mCurrentChain).mDescriptors.erase(it); mRebuildPollset = true; } else @@ -472,7 +471,7 @@ void LLPumpIO::pump() // << (*run_chain).mChainLinks[0].mPipe // << " because we reached the end." << llendl; #endif - mRunningChains.erase(run_chain++); + run_chain = mRunningChains.erase(run_chain); continue; } } @@ -551,7 +550,7 @@ void LLPumpIO::pump() (*run_chain).mDescriptors.begin(), (*run_chain).mDescriptors.end(), ll_delete_apr_pollset_fd_client_data()); - mRunningChains.erase(run_chain++); + run_chain = mRunningChains.erase(run_chain); // *NOTE: may not always need to rebuild the pollset. mRebuildPollset = true; diff --git a/linden/indra/llrender/llfontgl.cpp b/linden/indra/llrender/llfontgl.cpp index 2740c6c..f72a7de 100644 --- a/linden/indra/llrender/llfontgl.cpp +++ b/linden/indra/llrender/llfontgl.cpp @@ -304,14 +304,18 @@ BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale, sSansSerifHuge->reset(); } - if (!sSSHugeFallback) + if (sSSHugeFallback) { - sSSHugeFallback = new LLFontList(); - if (!loadFaceFallback(sSSHugeFallback, sanserif_fallback_file, huge_size*ss_fallback_scale)) - { - delete sSSHugeFallback; - sSSHugeFallback = NULL; - } + delete sSSHugeFallback; + } + sSSHugeFallback = new LLFontList(); + if (!loadFaceFallback( + sSSHugeFallback, + sanserif_fallback_file, + huge_size*ss_fallback_scale)) + { + delete sSSHugeFallback; + sSSHugeFallback = NULL; } failed |= !loadFace(sSansSerifHuge, sansserif_file, huge_size, sSSHugeFallback); @@ -326,14 +330,18 @@ BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale, sSansSerifBig->reset(); } - if (!sSSBigFallback) + if (sSSBigFallback) { - sSSBigFallback = new LLFontList(); - if (!loadFaceFallback(sSSBigFallback, sanserif_fallback_file, big_size*ss_fallback_scale)) - { - delete sSSBigFallback; - sSSBigFallback = NULL; - } + delete sSSBigFallback; + } + sSSBigFallback = new LLFontList(); + if (!loadFaceFallback( + sSSBigFallback, + sanserif_fallback_file, + big_size*ss_fallback_scale)) + { + delete sSSBigFallback; + sSSBigFallback = NULL; } failed |= !loadFace(sSansSerifBig, sansserif_file, big_size, sSSBigFallback); @@ -348,14 +356,18 @@ BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale, sSansSerif->reset(); } - if (!sSSFallback) + if (sSSFallback) { - sSSFallback = new LLFontList(); - if (!loadFaceFallback(sSSFallback, sanserif_fallback_file, medium_size*ss_fallback_scale)) - { - delete sSSFallback; - sSSFallback = NULL; - } + delete sSSFallback; + } + sSSFallback = new LLFontList(); + if (!loadFaceFallback( + sSSFallback, + sanserif_fallback_file, + medium_size*ss_fallback_scale)) + { + delete sSSFallback; + sSSFallback = NULL; } failed |= !loadFace(sSansSerif, sansserif_file, medium_size, sSSFallback); @@ -369,14 +381,18 @@ BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale, sSansSerifSmall->reset(); } - if (!sSSSmallFallback) + if(sSSSmallFallback) { - sSSSmallFallback = new LLFontList(); - if (!loadFaceFallback(sSSSmallFallback, sanserif_fallback_file, small_size*ss_fallback_scale)) - { - delete sSSSmallFallback; - sSSSmallFallback = NULL; - } + delete sSSSmallFallback; + } + sSSSmallFallback = new LLFontList(); + if (!loadFaceFallback( + sSSSmallFallback, + sanserif_fallback_file, + small_size*ss_fallback_scale)) + { + delete sSSSmallFallback; + sSSSmallFallback = NULL; } failed |= !loadFace(sSansSerifSmall, sansserif_file, small_size, sSSSmallFallback); @@ -393,14 +409,18 @@ BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale, sSansSerifBold->reset(); } - if (!sSSBoldFallback) + if (sSSBoldFallback) { - sSSBoldFallback = new LLFontList(); - if (!loadFaceFallback(sSSBoldFallback, sanserif_fallback_file, medium_size*ss_fallback_scale)) - { - delete sSSBoldFallback; - sSSBoldFallback = NULL; - } + delete sSSBoldFallback; + } + sSSBoldFallback = new LLFontList(); + if (!loadFaceFallback( + sSSBoldFallback, + sanserif_fallback_file, + medium_size*ss_fallback_scale)) + { + delete sSSBoldFallback; + sSSBoldFallback = NULL; } failed |= !loadFace(sSansSerifBold, sansserif_bold_file, medium_size, sSSBoldFallback); 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 // list Class0 VertexShaderEnable 1 0 -RenderVBO 1 1 +RenderVBO 1 0 RenderDistance 1 64 RenderAvatarVP 1 0 RenderAvatarMode 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: void stop() { - llinfos << "LLEventPoll::Impl::stop <" << mCount << "> " - << mPollURL << llendl; + lldebugs << "LLEventPoll::Impl::stop <" << mCount << "> " + << mPollURL << llendl; // there should be a way to stop a LLHTTPClient request in progress mDone = true; mPtr = NULL; @@ -69,7 +69,7 @@ private: ~Impl() { lldebugs << "LLEventPoll::Impl::~Impl <" << mCount << "> " - << mPollURL << llendl; + << mPollURL << llendl; } 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) } // when applying a filter, matching folders get their contents downloaded first - if (getRoot()->isFilterActive() && getFiltered(filter.getMinRequiredGeneration()) && !gInventory.isCategoryComplete(mListener->getUUID())) + if (filter.isNotDefault() && getFiltered(filter.getMinRequiredGeneration()) && !gInventory.isCategoryComplete(mListener->getUUID())) { gInventory.startBackgroundFetch(mListener->getUUID()); } @@ -2543,6 +2543,7 @@ LLFolderView::LLFolderView( const LLString& name, LLViewerImage* root_folder_ico mShowSingleSelection(FALSE), mArrangeGeneration(0), mSelectCallback(NULL), + mSelectionChanged(FALSE), mMinWidth(0), mDragAndDropThisFrame(FALSE) { @@ -4237,7 +4238,7 @@ void LLFolderView::idle(void* user_data) self->mFilter.clearModified(); BOOL filter_modified_and_active = self->mCompletedFilterGeneration < self->mFilter.getCurrentGeneration() && - self->mFilter.isActive(); + self->mFilter.isNotDefault(); self->mNeedsAutoSelect = filter_modified_and_active && !(gFocusMgr.childHasKeyboardFocus(self) || gFocusMgr.getMouseCapture()); @@ -4427,9 +4428,11 @@ LLInventoryFilter::LLInventoryFilter(const LLString& name) : mFilterGeneration = 0; mMustPassGeneration = S32_MAX; mMinRequiredGeneration = 0; + mFilterCount = 0; mNextFilterGeneration = mFilterGeneration + 1; mLastLogoff = gSavedPerAccountSettings.getU32("LastLogoff"); + mFilterBehavior = FILTER_NONE; } LLInventoryFilter::~LLInventoryFilter() @@ -4469,7 +4472,7 @@ std::string::size_type LLInventoryFilter::getStringMatchOffset() const } // has user modified default filter params? -BOOL LLInventoryFilter::isActive() +BOOL LLInventoryFilter::isNotDefault() { return mFilterOps.mFilterTypes != mDefaultFilterOps.mFilterTypes || mFilterSubString.size() @@ -4479,6 +4482,16 @@ BOOL LLInventoryFilter::isActive() || mFilterOps.mHoursAgo != mDefaultFilterOps.mHoursAgo; } +BOOL LLInventoryFilter::isActive() +{ + return mFilterOps.mFilterTypes != 0xffffffff + || mFilterSubString.size() + || mFilterOps.mPermissions != PERM_NONE + || mFilterOps.mMinDate != 0 + || mFilterOps.mMaxDate != U32_MAX + || mFilterOps.mHoursAgo != 0; +} + BOOL LLInventoryFilter::isModified() { return mModified; @@ -4688,7 +4701,7 @@ void LLInventoryFilter::setModified(EFilterBehavior behavior) mFilterBehavior = FILTER_RESTART; } - if (isActive()) + if (isNotDefault()) { // if not keeping current filter results, update last valid as well 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: BOOL check(LLFolderViewItem* item); std::string::size_type getStringMatchOffset() const; BOOL isActive(); + BOOL isNotDefault(); BOOL isModified(); BOOL isModifiedAndClear(); BOOL isSinceLogoff(); @@ -697,7 +698,7 @@ public: PermissionMask getFilterPermissions() const { return mFilter.getFilterPermissions(); } LLInventoryFilter::EFolderShow getShowFolderState() { return mFilter.getShowFolderState(); } U32 getSortOrder() const; - BOOL isFilterActive() { return mFilter.isActive(); } + BOOL isFilterModified() { return mFilter.isNotDefault(); } BOOL getAllowMultiSelect() { return mAllowMultiSelect; } // 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) gSavedSettings.setBOOL("ShowInventory", FALSE); } // clear filters, but save user's folder state first - if (!mActivePanel->getRootFolder()->isFilterActive()) + if (!mActivePanel->getRootFolder()->isFilterModified()) { mSavedFolderState->setApply(FALSE); mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); @@ -868,7 +868,7 @@ void LLInventoryView::onSearchEdit(const LLString& search_string, void* user_dat } // save current folder open state if no filter currently applied - if (!self->mActivePanel->getRootFolder()->isFilterActive()) + if (!self->mActivePanel->getRootFolder()->isFilterModified()) { self->mSavedFolderState->setApply(FALSE); 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 ) } U8 rotationOrder; - numRead = fread(&rotationOrder, 1, 1, fp); + numRead = fread(&rotationOrder, sizeof(U8), 1, fp); if (numRead != 1) { 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() if (STATE_LOGIN_SHOW == gStartupState) { + llinfos << "Initializing Window" << llendl; + gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); // Push our window frontmost gViewerWindow->getWindow()->show(); @@ -2550,13 +2552,19 @@ BOOL idle_startup() void login_show() { + llinfos << "Initializing Login Screen" << llendl; + LLPanelLogin::show( gViewerWindow->getVirtualWindowRect(), gSavedSettings.getBOOL("UseDebugLogin"), login_callback, NULL ); + llinfos << "Decoding Images" << llendl; + // Make sure all the UI textures are present and decoded. gImageList.decodeAllImages(2.f); + llinfos << "Setting Servers" << llendl; + if( USERSERVER_OTHER == gUserServerChoice ) { 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 else if (picker->mInventoryPanel->getFilterSubString().empty()) { // first letter in search term, save existing folder open state - if (!picker->mInventoryPanel->getRootFolder()->isFilterActive()) + if (!picker->mInventoryPanel->getRootFolder()->isFilterModified()) { picker->mSavedFolderState.setApply(FALSE); 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; LLViewerObject* LLToolPie::sClickActionObject = NULL; LLHandle LLToolPie::sLeftClickSelection = NULL; +U8 LLToolPie::sClickAction = 0; extern void handle_buy(void*); @@ -164,17 +165,17 @@ BOOL LLToolPie::pickAndShowMenu(S32 x, S32 y, MASK mask, BOOL always_show) // If it's a left-click, and we have a special action, do it. if (useClickAction(always_show, mask, object, parent)) { - U8 click_action = 0; + sClickAction = 0; if (object && object->getClickAction()) { - click_action = object->getClickAction(); + sClickAction = object->getClickAction(); } else if (parent && parent->getClickAction()) { - click_action = parent->getClickAction(); + sClickAction = parent->getClickAction(); } - switch(click_action) + switch(sClickAction) { case CLICK_ACTION_TOUCH: default: @@ -187,8 +188,9 @@ BOOL LLToolPie::pickAndShowMenu(S32 x, S32 y, MASK mask, BOOL always_show) if (object && object->flagTakesMoney() || parent && parent->flagTakesMoney()) { - sClickActionObject = parent; - sLeftClickSelection = LLToolSelect::handleObjectSelection(parent, MASK_NONE, FALSE, TRUE); + // pay event goes to object actually clicked on + sClickActionObject = object; + sLeftClickSelection = LLToolSelect::handleObjectSelection(object, MASK_NONE, FALSE, TRUE); return TRUE; } break; @@ -417,13 +419,12 @@ void LLToolPie::selectionPropertiesReceived() if (!sLeftClickSelection->isEmpty()) { - LLViewerObject* root = sLeftClickSelection->getFirstRootObject(); + LLViewerObject* selected_object = sLeftClickSelection->getPrimaryObject(); // since we don't currently have a way to lock a selection, it could have changed // after we initially clicked on the object - if (root == sClickActionObject) + if (selected_object == sClickActionObject) { - U8 action = root->getClickAction(); - switch (action) + switch (sClickAction) { case CLICK_ACTION_BUY: handle_buy(NULL); @@ -441,6 +442,7 @@ void LLToolPie::selectionPropertiesReceived() } sLeftClickSelection = NULL; sClickActionObject = NULL; + sClickAction = 0; } BOOL 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: LLUUID mHitObjectID; BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region static LLViewerObject* sClickActionObject; + static U8 sClickAction; static LLHandle sLeftClickSelection; }; 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] = // ST_IM_COUNT StatAttributes("IMs sent", FALSE, FALSE), // ST_FULLSCREEN_BOOL - StatAttributes("Fullscreen mode", TRUE, FALSE), + StatAttributes("Fullscreen mode", FALSE, FALSE), // ST_RELEASE_COUNT StatAttributes("Object release count", FALSE, FALSE), // ST_CREATE_COUNT @@ -118,61 +118,61 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] = // ST_UPLOAD_ANIM_COUNT StatAttributes("Animations uploaded", FALSE, FALSE), // ST_FPS_8_SECONDS - StatAttributes("Seconds below 8 FPS", TRUE, TRUE), + StatAttributes("Seconds below 8 FPS", FALSE, TRUE), // ST_SIM_FPS_20_SECONDS - StatAttributes("Seconds with sim FPS below 20", TRUE, TRUE), + StatAttributes("Seconds with sim FPS below 20", FALSE, TRUE), // ST_PHYS_FPS_20_SECONDS StatAttributes("Seconds with physics FPS below 20", FALSE, TRUE), // ST_LOSS_05_SECONDS - StatAttributes("Seconds with packet loss > 5%", TRUE, TRUE), + StatAttributes("Seconds with packet loss > 5%", FALSE, TRUE), // ST_FPS_DROP_50_RATIO StatAttributes("Ratio of frames 2x longer than previous", FALSE, FALSE), // ST_ENABLE_VBO StatAttributes("Vertex Buffers Enabled", TRUE, FALSE), // ST_DELTA_BANDWIDTH - StatAttributes("Increase/Decrease in bandwidth based on packet loss", TRUE, FALSE), + StatAttributes("Increase/Decrease in bandwidth based on packet loss", FALSE, FALSE), // ST_MAX_BANDWIDTH - StatAttributes("Max bandwidth setting", TRUE, FALSE), + StatAttributes("Max bandwidth setting", FALSE, FALSE), // ST_LIGHTING_DETAIL - StatAttributes("Lighting Detail", TRUE, FALSE), + StatAttributes("Lighting Detail", FALSE, FALSE), // ST_VISIBLE_AVATARS - StatAttributes("Visible Avatars", TRUE, FALSE), + StatAttributes("Visible Avatars", FALSE, FALSE), // ST_SHADER_OJECTS - StatAttributes("Object Shaders", TRUE, FALSE), + StatAttributes("Object Shaders", FALSE, FALSE), // ST_SHADER_ENVIRONMENT - StatAttributes("Environment Shaders", TRUE, FALSE), + StatAttributes("Environment Shaders", FALSE, FALSE), // ST_VISIBLE_DRAW_DIST - StatAttributes("Draw Distance", TRUE, FALSE), + StatAttributes("Draw Distance", FALSE, FALSE), // ST_VISIBLE_CHAT_BUBBLES - StatAttributes("Chat Bubbles Enabled", TRUE, FALSE), + StatAttributes("Chat Bubbles Enabled", FALSE, FALSE), // ST_SHADER_AVATAR - StatAttributes("Avatar Shaders", TRUE, FALSE), + StatAttributes("Avatar Shaders", FALSE, FALSE), // ST_FRAME_SECS - StatAttributes("FRAME_SECS", TRUE, FALSE), + StatAttributes("FRAME_SECS", FALSE, FALSE), // ST_UPDATE_SECS - StatAttributes("UPDATE_SECS", TRUE, FALSE), + StatAttributes("UPDATE_SECS", FALSE, FALSE), // ST_NETWORK_SECS - StatAttributes("NETWORK_SECS", TRUE, FALSE), + StatAttributes("NETWORK_SECS", FALSE, FALSE), // ST_IMAGE_SECS - StatAttributes("IMAGE_SECS", TRUE, FALSE), + StatAttributes("IMAGE_SECS", FALSE, FALSE), // ST_REBUILD_SECS - StatAttributes("REBUILD_SECS", TRUE, FALSE), + StatAttributes("REBUILD_SECS", FALSE, FALSE), // ST_RENDER_SECS - StatAttributes("RENDER_SECS", TRUE, FALSE), + StatAttributes("RENDER_SECS", FALSE, FALSE), // ST_CROSSING_AVG - StatAttributes("CROSSING_AVG", TRUE, FALSE), + StatAttributes("CROSSING_AVG", FALSE, FALSE), // ST_CROSSING_MAX - StatAttributes("CROSSING_MAX", TRUE, FALSE), + StatAttributes("CROSSING_MAX", FALSE, FALSE), // ST_LIBXUL_WIDGET_USED - StatAttributes("LibXUL Widget used", TRUE, FALSE), + StatAttributes("LibXUL Widget used", FALSE, FALSE), // ST_WINDOW_WIDTH - StatAttributes("Window width", TRUE, FALSE), + StatAttributes("Window width", FALSE, FALSE), // ST_WINDOW_HEIGHT - StatAttributes("Window height", TRUE, FALSE), + StatAttributes("Window height", FALSE, FALSE), // ST_TEX_BAKES - StatAttributes("Texture Bakes", TRUE, FALSE), + StatAttributes("Texture Bakes", FALSE, FALSE), // ST_TEX_REBAKES - StatAttributes("Texture Rebakes", TRUE, FALSE) + StatAttributes("Texture Rebakes", FALSE, FALSE) }; LLViewerStats::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, // These have already been validated by generateComposition. U8* st_data[4]; + S32 st_data_size[4]; // for debugging for (S32 i = 0; i < 4; i++) { @@ -299,6 +300,7 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, } } st_data[i] = mRawImages[i]->getData(); + st_data_size[i] = mRawImages[i]->getDataSize(); } /////////////////////////////////////// @@ -413,9 +415,18 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, for (U32 k = 0; k < tex_comps; k++) { // Linearly interpolate based on composition. - F32 a = *(st_data[tex0] + st_offset); - F32 b = *(st_data[tex1] + st_offset); - rawp[ offset ] = (U8)lltrunc( a + composition * (b - a) ); + if (st_offset >= st_data_size[tex0] || st_offset >= st_data_size[tex1]) + { + // SJB: This shouldn't be happening, but does... Rounding error? + //llwarns << "offset 0 [" << tex0 << "] =" << st_offset << " >= size=" << st_data_size[tex0] << llendl; + //llwarns << "offset 1 [" << tex1 << "] =" << st_offset << " >= size=" << st_data_size[tex1] << llendl; + } + else + { + F32 a = *(st_data[tex0] + st_offset); + F32 b = *(st_data[tex1] + st_offset); + rawp[ offset ] = (U8)lltrunc( a + composition * (b - a) ); + } offset++; st_offset++; } 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 @@ +Release Notes for Second Life 1.14.0(1) March 30, 2007 +===================================== +Fixes: +* Fixed: When going to recent items tab in inventory, inventory contents do not download +* Fixed: Crash in llvlcomposition +* Fixed: VWR-200: money(); events in a linked sets fail to trigger +* Fixed: VWR-109: Characters from fallback fonts don't scale properly +* Fixed: VWR-100: Messages form OpenJPEG only in debug mode +* Fixed: VWR-97: Several iterator bugs in llmessage +* Fixed: VWR-45: trivial patch, initialize variables +* Fixed: VWR-14: Inconsistancy with reading binary data in llpolymesh.cpp + Release Notes for Second Life 1.14.0(0) March 27, 2007 ===================================== New feature: -- cgit v1.1