From 391db15f8511efab4093e88fcbc4567abd5b076b Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 6 Dec 2016 13:25:26 +0200 Subject: [PATCH 01/15] MAINT-6963 Object's name is not changed in inventory if object in attached state was renamed through Edit floater. --- indra/newview/llpanelpermissions.cpp | 51 ++++++++++++++++++++++++---- indra/newview/llpanelpermissions.h | 3 ++ 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp index 6e677bbce5..203c57b732 100644 --- a/indra/newview/llpanelpermissions.cpp +++ b/indra/newview/llpanelpermissions.cpp @@ -63,6 +63,7 @@ #include "roles_constants.h" #include "llgroupactions.h" #include "lltrans.h" +#include "llinventorymodel.h" U8 string_value_to_click_action(std::string p_value); @@ -1016,13 +1017,26 @@ void LLPanelPermissions::onCommitNextOwnerTransfer(LLUICtrl* ctrl, void* data) // static void LLPanelPermissions::onCommitName(LLUICtrl*, void* data) { - //LL_INFOS() << "LLPanelPermissions::onCommitName()" << LL_ENDL; LLPanelPermissions* self = (LLPanelPermissions*)data; LLLineEditor* tb = self->getChild("Object Name"); - if(tb) + if (!tb) { - LLSelectMgr::getInstance()->selectionSetObjectName(tb->getText()); -// LLSelectMgr::getInstance()->selectionSetObjectName(self->mLabelObjectName->getText()); + return; + } + LLSelectMgr::getInstance()->selectionSetObjectName(tb->getText()); + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + if (selection->isAttachment() && (selection->getNumNodes() == 1) && !tb->getText().empty()) + { + LLUUID object_id = selection->getFirstObject()->getAttachmentItemID(); + LLViewerInventoryItem* item = findItem(object_id); + if (item) + { + LLPointer new_item = new LLViewerInventoryItem(item); + new_item->rename(tb->getText()); + new_item->updateServer(FALSE); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + } } } @@ -1030,12 +1044,26 @@ void LLPanelPermissions::onCommitName(LLUICtrl*, void* data) // static void LLPanelPermissions::onCommitDesc(LLUICtrl*, void* data) { - //LL_INFOS() << "LLPanelPermissions::onCommitDesc()" << LL_ENDL; LLPanelPermissions* self = (LLPanelPermissions*)data; LLLineEditor* le = self->getChild("Object Description"); - if(le) + if (!le) { - LLSelectMgr::getInstance()->selectionSetObjectDescription(le->getText()); + return; + } + LLSelectMgr::getInstance()->selectionSetObjectDescription(le->getText()); + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + if (selection->isAttachment() && (selection->getNumNodes() == 1)) + { + LLUUID object_id = selection->getFirstObject()->getAttachmentItemID(); + LLViewerInventoryItem* item = findItem(object_id); + if (item) + { + LLPointer new_item = new LLViewerInventoryItem(item); + new_item->setDescription(le->getText()); + new_item->updateServer(FALSE); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + } } } @@ -1159,3 +1187,12 @@ void LLPanelPermissions::onCommitIncludeInSearch(LLUICtrl* ctrl, void*) LLSelectMgr::getInstance()->selectionSetIncludeInSearch(box->get()); } + +LLViewerInventoryItem* LLPanelPermissions::findItem(LLUUID &object_id) +{ + if (!object_id.isNull()) + { + return gInventory.getItem(object_id); + } + return NULL; +} diff --git a/indra/newview/llpanelpermissions.h b/indra/newview/llpanelpermissions.h index 87805bbf90..2d15954baa 100644 --- a/indra/newview/llpanelpermissions.h +++ b/indra/newview/llpanelpermissions.h @@ -37,6 +37,7 @@ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class LLNameBox; +class LLViewerInventoryItem; class LLPanelPermissions : public LLPanel { @@ -77,6 +78,8 @@ protected: static void onCommitClickAction(LLUICtrl* ctrl, void*); static void onCommitIncludeInSearch(LLUICtrl* ctrl, void*); + static LLViewerInventoryItem* findItem(LLUUID &object_id); + protected: void disableAll(); From b5f861ae8498a76915e342a7b2d2cd23d565dd37 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 8 Dec 2016 16:24:50 +0200 Subject: [PATCH 02/15] MAINT-6979 Scroll bar in Appearance -> Wearing jumps up to the top each time an attachment is detached --- indra/llui/llaccordionctrltab.cpp | 3 ++- indra/llui/llaccordionctrltab.h | 3 +++ indra/newview/llpanelwearing.cpp | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 53720a6044..f8ef5289db 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -361,6 +361,7 @@ LLAccordionCtrlTab::LLAccordionCtrlTab(const LLAccordionCtrlTab::Params&p) { mStoredOpenCloseState = false; mWasStateStored = false; + mSkipChangesOnNotifyParent = false; mDropdownBGColor = LLColor4::white; LLAccordionCtrlTabHeader::Params headerParams; @@ -691,7 +692,7 @@ S32 LLAccordionCtrlTab::notifyParent(const LLSD& info) mExpandedHeight = height; - if(isExpanded()) + if(isExpanded() && !mSkipChangesOnNotifyParent) { LLRect panel_rect = getRect(); panel_rect.setLeftTopAndSize( panel_rect.mLeft, panel_rect.mTop, panel_rect.getWidth(), height); diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h index 7a78700e0f..0263bce4be 100644 --- a/indra/llui/llaccordionctrltab.h +++ b/indra/llui/llaccordionctrltab.h @@ -195,6 +195,8 @@ public: void setFitPanel( bool fit ) { mFitPanel = true; } bool getFitParent() const { return mFitPanel; } + void setIgnoreResizeNotification(bool ignore) { mSkipChangesOnNotifyParent = ignore;} + protected: void adjustContainerPanel (const LLRect& child_rect); void adjustContainerPanel (); @@ -235,6 +237,7 @@ private: bool mStoredOpenCloseState; bool mWasStateStored; + bool mSkipChangesOnNotifyParent; bool mSelectionEnabled; diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp index 796372ba04..a150007177 100644 --- a/indra/newview/llpanelwearing.cpp +++ b/indra/newview/llpanelwearing.cpp @@ -232,6 +232,7 @@ BOOL LLPanelWearing::postBuild() { mAccordionCtrl = getChild("wearables_accordion"); mWearablesTab = getChild("tab_wearables"); + mWearablesTab->setIgnoreResizeNotification(true); mAttachmentsTab = getChild("tab_temp_attachments"); mAttachmentsTab->setDropDownStateChangedCallback(boost::bind(&LLPanelWearing::onAccordionTabStateChanged, this)); From a65b586b184d9837e0586b4df0d2e758ccce63f6 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 8 Dec 2016 17:21:05 +0200 Subject: [PATCH 03/15] MAINT-6729 Additional fix for crash in LLImageGL::analyzeAlpha() --- indra/llimage/llimage.cpp | 2 +- indra/llimage/llimage.h | 2 +- indra/llrender/llimagegl.cpp | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 43b6b3bcd6..a07ea14621 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -800,7 +800,7 @@ U8* LLImageBase::getData() return mData; } -bool LLImageBase::isBufferInvalid() +bool LLImageBase::isBufferInvalid() const { return mBadBufferAllocation || mData == NULL ; } diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index 9cc7431a9c..d0bd4a2aef 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -141,7 +141,7 @@ public: const U8 *getData() const ; U8 *getData() ; - bool isBufferInvalid() ; + bool isBufferInvalid() const; void setSize(S32 width, S32 height, S32 ncomponents); U8* allocateDataSize(S32 width, S32 height, S32 ncomponents, S32 size = -1); // setSize() + allocateData() diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 81a5537f78..20cba68f84 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1267,6 +1267,12 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S llassert(gGLManager.mInited); stop_glerror(); + if (!imageraw || imageraw->isBufferInvalid()) + { + LL_WARNS() << "Trying to create a texture from invalid image data" << LL_ENDL; + return FALSE; + } + if (discard_level < 0) { llassert(mCurrentDiscardLevel >= 0); From 8d34a4f8c12d624deb72878d7a6682e306f71d1a Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Fri, 9 Dec 2016 18:49:48 +0200 Subject: [PATCH 04/15] MAINT-6840 start and pause doesn't wotk reliably and can get stuck --- .../libvlc/media_plugin_libvlc.cpp | 17 ++++++++++------- indra/newview/llviewermedia.cpp | 3 +-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp index 0bd323eb58..ebcdde2960 100644 --- a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp +++ b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp @@ -84,6 +84,7 @@ private: float mCurTime; float mDuration; + EStatus mVlcStatus; }; //////////////////////////////////////////////////////////////////////////////// @@ -111,6 +112,7 @@ MediaPluginBase(host_send_func, host_user_data) mURL = std::string(); + mVlcStatus = STATUS_NONE; setStatus(STATUS_NONE); } @@ -209,28 +211,28 @@ void MediaPluginLibVLC::eventCallbacks(const libvlc_event_t* event, void* ptr) switch (event->type) { case libvlc_MediaPlayerOpening: - parent->setStatus(STATUS_LOADING); + parent->mVlcStatus = STATUS_LOADING; break; case libvlc_MediaPlayerPlaying: parent->mDuration = (float)(libvlc_media_get_duration(parent->mLibVLCMedia)) / 1000.0f; - parent->setStatus(STATUS_PLAYING); + parent->mVlcStatus = STATUS_PLAYING; break; case libvlc_MediaPlayerPaused: - parent->setStatus(STATUS_PAUSED); + parent->mVlcStatus = STATUS_PAUSED; break; case libvlc_MediaPlayerStopped: - parent->setStatus(STATUS_DONE); + parent->mVlcStatus = STATUS_DONE; break; case libvlc_MediaPlayerEndReached: - parent->setStatus(STATUS_DONE); + parent->mVlcStatus = STATUS_DONE; break; case libvlc_MediaPlayerEncounteredError: - parent->setStatus(STATUS_ERROR); + parent->mVlcStatus = STATUS_ERROR; break; case libvlc_MediaPlayerTimeChanged: @@ -446,6 +448,7 @@ void MediaPluginLibVLC::receiveMessage(const char* message_string) } else if (message_name == "idle") { + setStatus(mVlcStatus); } else if (message_name == "cleanup") { @@ -567,7 +570,7 @@ void MediaPluginLibVLC::receiveMessage(const char* message_string) { if (mLibVLCMediaPlayer) { - libvlc_media_player_pause(mLibVLCMediaPlayer); + libvlc_media_player_set_pause(mLibVLCMediaPlayer, 1); } } else if (message_name == "seek") diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index ec06cc432f..bf98650afd 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -810,7 +810,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) sAnyMediaShowing = true; } - if (!pimpl->getUsedInUI() && pimpl->hasMedia() && (!pimpl->isMediaPaused() || !pimpl->isMediaTimeBased())) + if (!pimpl->getUsedInUI() && pimpl->hasMedia() && pimpl->isMediaPlaying()) { sAnyMediaPlaying = true; } @@ -949,7 +949,6 @@ void LLViewerMedia::setAllMediaPaused(bool val) if (pimpl->isMediaTimeBased() && pimpl->isMediaPaused()) { pimpl->play(); - return; } } else if (pimpl->isMediaTimeBased() && pimpl->mMediaSource) From ef7ddc9407bfd4d19aeb73a61f1b7a077879c70a Mon Sep 17 00:00:00 2001 From: pavelkproductengine Date: Fri, 9 Dec 2016 19:31:30 +0200 Subject: [PATCH 05/15] MAINT-6551 One of my avatars does not render correctly when ALM is disabled unless basic shaders are also disabled. --- .../shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl index b9ddbc8e1c..8918182853 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl @@ -43,12 +43,12 @@ void default_lighting() { vec4 color = texture2D(diffuseMap,vary_texcoord0.xy); + color *= vertex_color; + if (color.a < minimum_alpha) { discard; } - - color.rgb *= vertex_color.rgb; color.rgb = atmosLighting(color.rgb); From 5cc716dbf9470f7be454588b5402408bafa225bb Mon Sep 17 00:00:00 2001 From: ruslantproductengine Date: Mon, 12 Dec 2016 18:24:46 +0200 Subject: [PATCH 06/15] MAINT-6125 - Mesh avatar deforms constantly MAINT-6910 - [MAINT-RC] Some mesh turns invisible when camera is moved on the Maint-RC viewer only - caused by fix for MAINT-6125. Commulative fix. Fixed for booth ticket's in indra/newview/llvovolume.cpp Remained fixed, it's a small code improvements which is not related to MAINT-6125, MAINT-6910 --- indra/llrender/llvertexbuffer.cpp | 2 +- indra/newview/lldrawable.cpp | 4 +--- indra/newview/llmaniptranslate.cpp | 4 ++-- indra/newview/llvieweroctree.cpp | 2 +- indra/newview/llvovolume.cpp | 8 ++++++-- indra/newview/pipeline.cpp | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 31dffdd545..1c325f5e5d 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -509,7 +509,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) } } - U32 map_tc[] = + static const U32 map_tc[] = { MAP_TEXCOORD1, MAP_TEXCOORD2, diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index f956023358..3bb2c45a24 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -979,9 +979,7 @@ void LLDrawable::updateSpatialExtents() if (mVObjp) { const LLVector4a* exts = getSpatialExtents(); - LLVector4a extents[2]; - extents[0] = exts[0]; - extents[1] = exts[1]; + LLVector4a extents[2] = { exts[0], exts[1] }; mVObjp->updateSpatialExtents(extents[0], extents[1]); setSpatialExtents(extents[0], extents[1]); diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 3975d3980b..f3e00fa9c6 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -1638,8 +1638,8 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal, LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr; - U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_ALPHA, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY }; - U32 num_types = LL_ARRAY_SIZE(types); + static const U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_ALPHA, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY }; + static const U32 num_types = LL_ARRAY_SIZE(types); GLuint stencil_mask = 0xFFFFFFFF; //stencil in volumes diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp index 023f1b92ba..5f0e21db71 100644 --- a/indra/newview/llvieweroctree.cpp +++ b/indra/newview/llvieweroctree.cpp @@ -465,7 +465,7 @@ LLViewerOctreeGroup::LLViewerOctreeGroup(OctreeNode* node) { LLVector4a tmp; tmp.splat(0.f); - mExtents[0] = mExtents[1] = mObjectBounds[0] = mObjectBounds[0] = mObjectBounds[1] = + mExtents[0] = mExtents[1] = mObjectBounds[0] = mObjectBounds[1] = mObjectExtents[0] = mObjectExtents[1] = tmp; mBounds[0] = node->getCenter(); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 217b8bfbc2..8b25cfaa58 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1485,7 +1485,6 @@ BOOL LLVOVolume::genBBoxes(BOOL force_global) res &= face->genVolumeBBoxes(*volume, i, mRelativeXform, (mVolumeImpl && mVolumeImpl->isVolumeGlobal()) || force_global); - if (rebuild) { if (i == 0) @@ -1761,6 +1760,11 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1)); compiled = TRUE; lodOrSculptChanged(drawable, compiled); + + if(drawable->isState(LLDrawable::REBUILD_RIGGED | LLDrawable::RIGGED)) + { + updateRiggedVolume(false); + } genBBoxes(FALSE); } // it has its own drawable (it's moved) or it has changed UVs or it has changed xforms from global<->local @@ -4210,7 +4214,7 @@ void LLRiggedVolume::update(const LLMeshSkinInfo* skin, LLVOAvatar* avatar, cons LLVector4a* pos = dst_face.mPositions; - if( pos && weight && dst_face.mExtents ) + if (pos && dst_face.mExtents) { LL_RECORD_BLOCK_TIME(FTM_SKIN_RIGGED); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 32285d2784..dddf586f62 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -10120,7 +10120,7 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera } LLPipeline::sShadowRender = TRUE; - U32 types[] = { + static const U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY, From 8937802340c139947653ab2276217040444eba9e Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 13 Dec 2016 11:35:13 +0200 Subject: [PATCH 07/15] MAINT-6990 'Voice chat volume' floater is shown if you click in the right side of resident name --- indra/newview/llconversationview.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index b18e543f0a..d147d214a3 100644 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -458,6 +458,11 @@ void LLConversationViewSession::refresh() } } } + + if (mSpeakingIndicator) + { + mSpeakingIndicator->setShowParticipantsSpeaking(mIsInActiveVoiceChannel); + } requestArrange(); // Do the regular upstream refresh LLFolderViewFolder::refresh(); From 26511f5b87dac96f6f06f36c13806707b332153d Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 13 Dec 2016 11:59:53 +0200 Subject: [PATCH 08/15] MAINT-6994 Viewer still reports remaining capacity incorrectly during the presence of an region object bonus. --- indra/newview/llfloatertools.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 987a7449ee..b14b9b7578 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -1177,7 +1177,12 @@ void LLFloaterTools::updateLandImpacts() S32 rezzed_prims = parcel->getSimWidePrimCount(); S32 total_capacity = parcel->getSimWideMaxPrimCapacity(); - + LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + if (region) + { + S32 max_tasks_per_region = (S32)region->getMaxTasks(); + total_capacity = llmin(total_capacity, max_tasks_per_region); + } std::string remaining_capacity_str = ""; bool show_mesh_cost = gMeshRepo.meshRezEnabled(); From bde862084d76eb4b9d773e10fdde6bfd3df57f7a Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 13 Dec 2016 17:21:01 +0200 Subject: [PATCH 09/15] MAINT-7002 Crash in LLConversationViewSession::handleMouseUp() --- indra/newview/llconversationview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index d147d214a3..15a8aacd37 100644 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -303,7 +303,7 @@ BOOL LLConversationViewSession::handleMouseUp( S32 x, S32 y, MASK mask ) LLConversationItem* item = dynamic_cast(getViewModelItem()); LLUUID session_id = item? item->getUUID() : LLUUID(); LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(session_id); - if(!session_floater->hasFocus()) + if(session_floater && !session_floater->hasFocus()) { session_floater->setFocus(true); } From 0d836acf0052ae294c7ebeb228632f1d36941fff Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 13 Dec 2016 17:56:47 +0200 Subject: [PATCH 10/15] MAINT-6978 Simple additional logging --- indra/newview/llstartup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 35ecc4421c..1bb3d65e05 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3029,7 +3029,7 @@ bool LLStartUp::startLLProxy() } else { - LL_WARNS("Proxy") << "Invalid other HTTP proxy configuration."<< LL_ENDL; + LL_WARNS("Proxy") << "Invalid other HTTP proxy configuration: " << httpProxyType << LL_ENDL; // Set the missing or wrong configuration back to something valid. gSavedSettings.setString("HttpProxyType", "None"); From dcff9513f1b6d2b2dca9ec5f3bb9597992c0f9f2 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 13 Dec 2016 20:29:07 +0200 Subject: [PATCH 11/15] MAINT-6978 Proxy should not be initialized outside of startLLProxy() --- indra/llcorehttp/_httpoprequest.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp index db57869a1b..07cc0e4625 100644 --- a/indra/llcorehttp/_httpoprequest.cpp +++ b/indra/llcorehttp/_httpoprequest.cpp @@ -568,7 +568,17 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service) // Use the viewer-based thread-safe API which has a // fast/safe check for proxy enable. Would like to // encapsulate this someway... - LLProxy::getInstance()->applyProxySettings(mCurlHandle); + if (LLProxy::instanceExists()) + { + // Make sure proxy won't be initialized from here, + // it might conflict with LLStartUp::startLLProxy() + LLProxy::getInstance()->applyProxySettings(mCurlHandle); + } + else + { + LL_WARNS() << "Proxy is not initialized!" << LL_ENDL; + } + } else if (gpolicy.mHttpProxy.size()) { From 71269ac1fc4ab19d46fd33c82b1df7a887b918bc Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 15 Dec 2016 02:40:51 +0200 Subject: [PATCH 12/15] Backed out changeset: ebe10b4b1197 --- indra/llrender/llvertexbuffer.cpp | 2 +- indra/newview/lldrawable.cpp | 4 +++- indra/newview/llmaniptranslate.cpp | 4 ++-- indra/newview/llvieweroctree.cpp | 2 +- indra/newview/llvovolume.cpp | 8 ++------ indra/newview/pipeline.cpp | 2 +- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 1c325f5e5d..31dffdd545 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -509,7 +509,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask) } } - static const U32 map_tc[] = + U32 map_tc[] = { MAP_TEXCOORD1, MAP_TEXCOORD2, diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 3bb2c45a24..f956023358 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -979,7 +979,9 @@ void LLDrawable::updateSpatialExtents() if (mVObjp) { const LLVector4a* exts = getSpatialExtents(); - LLVector4a extents[2] = { exts[0], exts[1] }; + LLVector4a extents[2]; + extents[0] = exts[0]; + extents[1] = exts[1]; mVObjp->updateSpatialExtents(extents[0], extents[1]); setSpatialExtents(extents[0], extents[1]); diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index f3e00fa9c6..3975d3980b 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -1638,8 +1638,8 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal, LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr; - static const U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_ALPHA, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY }; - static const U32 num_types = LL_ARRAY_SIZE(types); + U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_ALPHA, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY }; + U32 num_types = LL_ARRAY_SIZE(types); GLuint stencil_mask = 0xFFFFFFFF; //stencil in volumes diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp index 5f0e21db71..023f1b92ba 100644 --- a/indra/newview/llvieweroctree.cpp +++ b/indra/newview/llvieweroctree.cpp @@ -465,7 +465,7 @@ LLViewerOctreeGroup::LLViewerOctreeGroup(OctreeNode* node) { LLVector4a tmp; tmp.splat(0.f); - mExtents[0] = mExtents[1] = mObjectBounds[0] = mObjectBounds[1] = + mExtents[0] = mExtents[1] = mObjectBounds[0] = mObjectBounds[0] = mObjectBounds[1] = mObjectExtents[0] = mObjectExtents[1] = tmp; mBounds[0] = node->getCenter(); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 8b25cfaa58..217b8bfbc2 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1485,6 +1485,7 @@ BOOL LLVOVolume::genBBoxes(BOOL force_global) res &= face->genVolumeBBoxes(*volume, i, mRelativeXform, (mVolumeImpl && mVolumeImpl->isVolumeGlobal()) || force_global); + if (rebuild) { if (i == 0) @@ -1760,11 +1761,6 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1)); compiled = TRUE; lodOrSculptChanged(drawable, compiled); - - if(drawable->isState(LLDrawable::REBUILD_RIGGED | LLDrawable::RIGGED)) - { - updateRiggedVolume(false); - } genBBoxes(FALSE); } // it has its own drawable (it's moved) or it has changed UVs or it has changed xforms from global<->local @@ -4214,7 +4210,7 @@ void LLRiggedVolume::update(const LLMeshSkinInfo* skin, LLVOAvatar* avatar, cons LLVector4a* pos = dst_face.mPositions; - if (pos && dst_face.mExtents) + if( pos && weight && dst_face.mExtents ) { LL_RECORD_BLOCK_TIME(FTM_SKIN_RIGGED); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index dddf586f62..32285d2784 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -10120,7 +10120,7 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera } LLPipeline::sShadowRender = TRUE; - static const U32 types[] = { + U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY, From ffccd4a2ecdebba16a2fc06f84f04fb85389f24f Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 15 Dec 2016 02:41:14 +0200 Subject: [PATCH 13/15] Backed out changeset: f73be0eb9d00 --- indra/newview/app_settings/settings.xml | 11 ----------- indra/newview/llviewercamera.cpp | 10 ---------- indra/newview/llviewercamera.h | 3 --- indra/newview/llvovolume.cpp | 19 ++++++------------- indra/newview/llvovolume.h | 2 +- indra/newview/pipeline.cpp | 7 +++---- indra/newview/pipeline.h | 2 +- 7 files changed, 11 insertions(+), 43 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 04fb1fb238..9f37c3487e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4636,17 +4636,6 @@ Value 1 - IgnoreFOVZoomForLODs - - Comment - Ignore zoom effect(CTRL+0) when calculating lods. - Persist - 1 - Type - Boolean - Value - 0 - IgnoreAllNotifications Comment diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index 778e275727..57a0195d23 100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp @@ -113,7 +113,6 @@ LLViewerCamera::LLViewerCamera() : LLCamera() { calcProjection(getFar()); mCameraFOVDefault = DEFAULT_FIELD_OF_VIEW; - mPrevCameraFOVDefault = DEFAULT_FIELD_OF_VIEW; mCosHalfCameraFOV = cosf(mCameraFOVDefault * 0.5f); mPixelMeterRatio = 0.f; mScreenPixelArea = 0; @@ -883,15 +882,6 @@ void LLViewerCamera::setDefaultFOV(F32 vertical_fov_rads) mCosHalfCameraFOV = cosf(mCameraFOVDefault * 0.5f); } -BOOL LLViewerCamera::isDefaultFOVChanged() -{ - if(mPrevCameraFOVDefault != mCameraFOVDefault) - { - mPrevCameraFOVDefault = mCameraFOVDefault; - return !gSavedSettings.getBOOL("IgnoreFOVZoomForLODs"); - } - return FALSE; -} // static void LLViewerCamera::updateCameraAngle( void* user_data, const LLSD& value) diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h index 5901de289f..f8c973690a 100644 --- a/indra/newview/llviewercamera.h +++ b/indra/newview/llviewercamera.h @@ -115,8 +115,6 @@ public: void setDefaultFOV(F32 fov) ; F32 getDefaultFOV() { return mCameraFOVDefault; } - BOOL isDefaultFOVChanged(); - BOOL cameraUnderWater() const; BOOL areVertsVisible(LLViewerObject* volumep, BOOL all_verts); @@ -140,7 +138,6 @@ protected: mutable LLMatrix4 mProjectionMatrix; // Cache of perspective matrix mutable LLMatrix4 mModelviewMatrix; F32 mCameraFOVDefault; - F32 mPrevCameraFOVDefault; F32 mCosHalfCameraFOV; LLVector3 mLastPointOfInterest; F32 mPixelMeterRatio; // Divide by distance from camera to get pixels per meter at that distance. diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 217b8bfbc2..657babd92c 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1214,18 +1214,18 @@ void LLVOVolume::sculpt() } } -S32 LLVOVolume::computeLODDetail(F32 distance, F32 radius, F32 lod_factor) +S32 LLVOVolume::computeLODDetail(F32 distance, F32 radius) { S32 cur_detail; if (LLPipeline::sDynamicLOD) { // We've got LOD in the profile, and in the twist. Use radius. - F32 tan_angle = (lod_factor*radius)/distance; + F32 tan_angle = (LLVOVolume::sLODFactor*radius)/distance; cur_detail = LLVolumeLODGroup::getDetailFromTan(ll_round(tan_angle, 0.01f)); } else { - cur_detail = llclamp((S32) (sqrtf(radius)*lod_factor*4.f), 0, 3); + cur_detail = llclamp((S32) (sqrtf(radius)*LLVOVolume::sLODFactor*4.f), 0, 3); } return cur_detail; } @@ -1241,7 +1241,6 @@ BOOL LLVOVolume::calcLOD() F32 radius; F32 distance; - F32 lod_factor = LLVOVolume::sLODFactor; if (mDrawable->isState(LLDrawable::RIGGED)) { @@ -1277,18 +1276,12 @@ BOOL LLVOVolume::calcLOD() distance *= rampDist; } - + // DON'T Compensate for field of view changing on FOV zoom. distance *= F_PI/3.f; - static LLCachedControl ignore_fov_zoom(gSavedSettings,"IgnoreFOVZoomForLODs"); - if(!ignore_fov_zoom) - { - lod_factor *= DEFAULT_FIELD_OF_VIEW / LLViewerCamera::getInstance()->getDefaultFOV(); - } - cur_detail = computeLODDetail(ll_round(distance, 0.01f), - ll_round(radius, 0.01f), - lod_factor); + ll_round(radius, 0.01f)); + if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_LOD_INFO) && mDrawable->getFace(0)) diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 3b68d61ee9..a331908320 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -327,7 +327,7 @@ public: void clearRiggedVolume(); protected: - S32 computeLODDetail(F32 distance, F32 radius, F32 lod_factor); + S32 computeLODDetail(F32 distance, F32 radius); BOOL calcLOD(); LLFace* addFace(S32 face_index); void updateTEData(); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 32285d2784..7c019dc3ea 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3424,7 +3424,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) if (LLViewerCamera::sCurCameraID == LLViewerCamera::CAMERA_WORLD) { LLSpatialGroup* last_group = NULL; - BOOL fov_changed = LLViewerCamera::getInstance()->isDefaultFOVChanged(); for (LLCullResult::bridge_iterator i = sCull->beginVisibleBridge(); i != sCull->endVisibleBridge(); ++i) { LLCullResult::bridge_iterator cur_iter = i; @@ -3438,7 +3437,7 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) if (!bridge->isDead() && group && !group->isOcclusionState(LLSpatialGroup::OCCLUDED)) { - stateSort(bridge, camera, fov_changed); + stateSort(bridge, camera); } if (LLViewerCamera::sCurCameraID == LLViewerCamera::CAMERA_WORLD && @@ -3510,9 +3509,9 @@ void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera) } -void LLPipeline::stateSort(LLSpatialBridge* bridge, LLCamera& camera, BOOL fov_changed) +void LLPipeline::stateSort(LLSpatialBridge* bridge, LLCamera& camera) { - if (bridge->getSpatialGroup()->changeLOD() || fov_changed) + if (bridge->getSpatialGroup()->changeLOD()) { bool force_update = false; bridge->updateDistance(camera, force_update); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 5ddb4e0f01..bba36351d9 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -254,7 +254,7 @@ public: void stateSort(LLCamera& camera, LLCullResult& result); void stateSort(LLSpatialGroup* group, LLCamera& camera); - void stateSort(LLSpatialBridge* bridge, LLCamera& camera, BOOL fov_changed = FALSE); + void stateSort(LLSpatialBridge* bridge, LLCamera& camera); void stateSort(LLDrawable* drawablep, LLCamera& camera); void postSort(LLCamera& camera); void forAllVisibleDrawables(void (*func)(LLDrawable*)); From 7dcea20c4d46e95a9fe1c7eb8b0d8f39de61b5a2 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 15 Dec 2016 02:41:39 +0200 Subject: [PATCH 14/15] Backed out changeset: b1a30962dd54 --- doc/contributions.txt | 1 - indra/newview/pipeline.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 29d74b7e28..d3a5d087d5 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -207,7 +207,6 @@ Ansariel Hiller MAINT-6773 MAINT-6906 MAINT-6911 - MAINT-6917 STORM-2140 MAINT-6912 MAINT-6929 diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 7c019dc3ea..890839e6e6 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -11624,7 +11624,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) avatar->setImpostorDim(tdim); - LLVOAvatar::sUseImpostors = (0 != LLVOAvatar::sMaxNonImpostors); + LLVOAvatar::sUseImpostors = true; // @TODO ??? sUseOcclusion = occlusion; sReflectionRender = FALSE; sImpostorRender = FALSE; From 1e292b47352c16cc17389ea1a379dd8b5cd9de2d Mon Sep 17 00:00:00 2001 From: Ansariel Date: Thu, 15 Dec 2016 09:48:09 +0100 Subject: [PATCH 15/15] Backed out changeset: 7b22662b83b2 - This stays in and has nothing to do with mesh LOD calculation --- doc/contributions.txt | 1 + indra/newview/pipeline.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 7a79cdaaf6..7cc7aace9e 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -209,6 +209,7 @@ Ansariel Hiller MAINT-6773 MAINT-6906 MAINT-6911 + MAINT-6917 STORM-2140 MAINT-6912 MAINT-6929 diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index aa111764cf..88fa0e8cb6 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -11733,7 +11733,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) avatar->setImpostorDim(tdim); - LLVOAvatar::sUseImpostors = true; // @TODO ??? + LLVOAvatar::sUseImpostors = (0 != LLVOAvatar::sMaxNonImpostors); sUseOcclusion = occlusion; sReflectionRender = FALSE; sImpostorRender = FALSE;