diff --git a/README_BUILD_FIRESTORM_LINUX.txt b/README_BUILD_FIRESTORM_LINUX.txt index 18e7aef3ee..c6ea26031b 100755 --- a/README_BUILD_FIRESTORM_LINUX.txt +++ b/README_BUILD_FIRESTORM_LINUX.txt @@ -1,4 +1,4 @@ -First, make sure gcc-4.6 and g++-4.6 are installed. +First, make sure gcc-4.7 and g++-4.7 are installed. 32bit build platforms are better tested at this point and strongly recommended. diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index f55b5c70f0..3a3585dc58 100644 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp @@ -4017,7 +4017,10 @@ void LLMessageSystem::sendUntrustedSimulatorMessageCoro(std::string url, std::st { LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID); LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t - httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("groupMembersRequest", httpPolicy)); + // Fix adapter naming + //httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("groupMembersRequest", httpPolicy)); + httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("untrustedSimulatorMessage", httpPolicy)); + // LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest); LLCore::HttpOptions::ptr_t httpOpts = LLCore::HttpOptions::ptr_t(new LLCore::HttpOptions); diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index e6c9880953..a960363e35 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -690,17 +690,26 @@ bool LLGLManager::initGL() glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, meminfo); mVRAM = meminfo[0]/1024; + + // VRAM detection logging + LL_INFOS("RenderInit") << "VRAM detected via ATI MemInfo OpenGL extension: " << mVRAM << " MB" << LL_ENDL; } else if (mHasNVXMemInfo) { S32 dedicated_memory; glGetIntegerv(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, &dedicated_memory); mVRAM = dedicated_memory/1024; + + // VRAM detection logging + LL_INFOS("RenderInit") << "VRAM detected via nVidia MemInfo OpenGL extension: " << mVRAM << " MB" << LL_ENDL; } if (mVRAM < 256) { //something likely went wrong using the above extensions, fall back to old method mVRAM = old_vram; + + // VRAM detection logging + LL_WARNS("RenderInit") << "VRAM detected via MemInfo OpenGL extension most likely broken. Reverting to " << mVRAM << " MB" << LL_ENDL; } stop_glerror(); diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index 8141cf9bb8..f05d768ebe 100644 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp @@ -534,6 +534,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only, bool disable_wmi) // { mVRAM = vram/(1024*1024); + LL_INFOS("AppInit") << "VRAM Detected via WMI: " << mVRAM << LL_ENDL; } else { // Get the English VRAM string @@ -545,7 +546,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only, bool disable_wmi) // Dump the string as an int into the structure char *stopstring; mVRAM = strtol(ram_str.c_str(), &stopstring, 10); - LL_INFOS("AppInit") << "VRAM Detected: " << mVRAM << " DX9 string: " << ram_str << LL_ENDL; + LL_INFOS("AppInit") << "VRAM Detected via DirectX: " << mVRAM << " DX9 string: " << ram_str << LL_ENDL; } if (vram_only) diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index 62ef3bb2f1..7368dc8021 100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -60,7 +60,6 @@ --> import export - fsdata SLURL Outfit diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 0207f9cd4a..18ad0354ed 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -22687,7 +22687,7 @@ Change of this parameter will affect the layout of buttons in notification toast FSFlashOnMessage Comment - Flash/Bounce the app icon when a new message is recieved and Firestorm is not in focus + Flash/Bounce the app icon when a new message is received and Firestorm is not in focus Persist 1 Type @@ -22695,6 +22695,17 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + FSFlashOnObjectIM + + Comment + Flash/Bounce the app icon when a new instant message from an object is received and Firestorm is not in focus. + Persist + 1 + Type + Boolean + Value + 1 + FSDisableReturnObjectNotification Comment @@ -24086,6 +24097,17 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + FSStatusBarMenuButtonPopupOnRollover + + Comment + Enable rollover popups on top status bar menu icons: Quick Graphics Presets, Volume, and Media. + Persist + 1 + Type + Boolean + Value + 1 + diff --git a/indra/newview/fscommon.cpp b/indra/newview/fscommon.cpp index b29b8590a2..2df3b036a6 100644 --- a/indra/newview/fscommon.cpp +++ b/indra/newview/fscommon.cpp @@ -325,7 +325,7 @@ bool FSCommon::checkIsActionEnabled(const LLUUID& av_id, EFSRegistrarFunctionAct } else if (action == FS_RGSTR_ACT_ZOOM_IN) { - return (!isSelf && LLAvatarActions::canZoomIn(av_id)); + return (!isSelf && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) && LLAvatarActions::canZoomIn(av_id)); } else if (action == FS_RGSTR_ACT_OFFER_TELEPORT) { diff --git a/indra/newview/fsfloaterim.cpp b/indra/newview/fsfloaterim.cpp index a641ee626e..7e78c1dea4 100644 --- a/indra/newview/fsfloaterim.cpp +++ b/indra/newview/fsfloaterim.cpp @@ -2359,6 +2359,9 @@ void FSFloaterIM::handleMinimized(bool minimized) else { gConsole->addSession(mSessionID); - updateMessages(); + if (mChatHistory) + { + updateMessages(); + } } } diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 191405e30c..af332e849e 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1984,17 +1984,20 @@ bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id) return false; } +// FIRE-11920: Always allow replacing outfit // Check whether the outfit contains any wearables we aren't wearing already (STORM-702). - LLInventoryModel::cat_array_t cats; - LLInventoryModel::item_array_t items; - LLFindWearablesEx is_worn(/*is_worn=*/ false, /*include_body_parts=*/ true); - gInventory.collectDescendentsIf(outfit_cat_id, - cats, - items, - LLInventoryModel::EXCLUDE_TRASH, - is_worn); +// LLInventoryModel::cat_array_t cats; +// LLInventoryModel::item_array_t items; +// LLFindWearablesEx is_worn(/*is_worn=*/ false, /*include_body_parts=*/ true); +// gInventory.collectDescendentsIf(outfit_cat_id, +// cats, +// items, +// LLInventoryModel::EXCLUDE_TRASH, +// is_worn); - return items.size() > 0; +// return items.size() > 0; + return TRUE; +// FIRE-11920: Always allow replacing outfit } // Moved from LLWearableList::ContextMenu for wider utility. diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index f0a947e432..5a92614782 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1159,30 +1159,6 @@ bool LLAppViewer::init() return false; } - // Texture memory management - // On 64bit builds, allow up to 1GB texture memory on cards with 2GB video - // memory and up to 2GB texture memory on cards with 4GB video memory. Check - // is performed against a lower limit as not exactly 2 or 4GB might not be - // returned. -#ifdef ND_BUILD64BIT_ARCH - if (gGLManager.mVRAM > 3584) - { - gMaxVideoRam = S32Megabytes(2048); - LL_INFOS() << "At least 4 GB video memory detected - increasing max video ram to " << gMaxVideoRam.value() << " MB" << LL_ENDL; - } - else if (gGLManager.mVRAM > 1536) - { - gMaxVideoRam = S32Megabytes(1024); - LL_INFOS() << "At least 2 GB video memory detected - increasing max video ram to " << gMaxVideoRam.value() << " MB" << LL_ENDL; - } - else if (gGLManager.mVRAM > 768) - { - gMaxVideoRam = S32Megabytes(768); - LL_INFOS() << "At least 1 GB video memory detected - increasing max video ram to " << gMaxVideoRam.value() << " MB" << LL_ENDL; - } -#endif - // - LL_INFOS("InitInfo") << "Hardware test initialization done." << LL_ENDL ; // Prepare for out-of-memory situations, during which we will crash on diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 7632e96b51..5037e4ac5f 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -563,7 +563,7 @@ void LLAvatarActions::teleport_request_callback(const LLSD& notification, const std::string strMessage = response["message"]; // Filter the request message if the recipients is IM-blocked - if ( (!RlvActions::isRlvEnabled()) || ((RlvActions::canStartIM(idRecipient)) && (RlvActions::canSendIM(idRecipient))) ) + if ( (RlvActions::isRlvEnabled()) && ((!RlvActions::canStartIM(idRecipient)) || (!RlvActions::canSendIM(idRecipient))) ) { strMessage = RlvStrings::getString(RLV_STRING_HIDDEN); } diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp index 0e796133da..26c1d25ad6 100644 --- a/indra/newview/lleventpoll.cpp +++ b/indra/newview/lleventpoll.cpp @@ -44,6 +44,8 @@ #include "llsdutil.h" // for ll_pretty_print_sd +#include "boost/make_shared.hpp" + namespace LLEventPolling { namespace Details @@ -72,6 +74,7 @@ namespace Details bool mDone; LLCore::HttpRequest::ptr_t mHttpRequest; LLCore::HttpRequest::policy_t mHttpPolicy; + LLCore::HttpOptions::ptr_t mHttpOptions; // Restore pre-coro behavior (60s timeout, no retries) std::string mSenderIp; int mCounter; LLCoreHttpUtil::HttpCoroutineAdapter::wptr_t mAdapter; @@ -91,6 +94,7 @@ namespace Details mDone(false), mHttpRequest(), mHttpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID), + mHttpOptions(), // Restore pre-coro behavior (60s timeout, no retries) mSenderIp(), mCounter(sNextCounter++) @@ -99,6 +103,11 @@ namespace Details mHttpRequest = LLCore::HttpRequest::ptr_t(new LLCore::HttpRequest); mHttpPolicy = app_core_http.getPolicy(LLAppCoreHttp::AP_LONG_POLL); + // Restore pre-coro behavior (60s timeout, no retries) + mHttpOptions = LLCore::HttpOptions::ptr_t(new LLCore::HttpOptions); + mHttpOptions->setRetries(0); + mHttpOptions->setTransferTimeout(60); + // mSenderIp = sender.getIPandPort(); } @@ -170,7 +179,10 @@ namespace Details // << LLSDXMLStreamer(request) << LL_ENDL; LL_DEBUGS("LLEventPollImpl") << " <" << counter << "> posting and yielding." << LL_ENDL; - LLSD result = httpAdapter->postAndSuspend(mHttpRequest, url, request); + // Restore pre-coro behavior (60s timeout, no retries) + //LLSD result = httpAdapter->postAndSuspend(mHttpRequest, url, request); + LLSD result = httpAdapter->postAndSuspend(mHttpRequest, url, request, mHttpOptions); + // // LL_DEBUGS("LLEventPollImpl::eventPollCoro") << "<" << counter << "> result = " // << LLSDXMLStreamer(result) << LL_ENDL; @@ -186,6 +198,15 @@ namespace Details errorCount = 0; continue; } + // Restore pre-coro behavior (60s timeout, no retries) + else if (status == LLCore::HttpStatus(HTTP_BAD_GATEWAY)) + { // Pre-coro says this is the default answer for timeouts and it can happen + // frequently on OpenSim - assume this is normal and issue a new request immediately + LL_INFOS("LLEventPollImpl") << "Received HTTP 502 - start new request." << LL_ENDL; + errorCount = 0; + continue; + } + // else if ((status == LLCore::HttpStatus(LLCore::HttpStatus::LLCORE, LLCore::HE_OP_CANCELED)) || (status == LLCore::HttpStatus(HTTP_NOT_FOUND))) { // Event polling for this server has been canceled. In diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 4da204b538..f1714bed93 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -293,7 +293,8 @@ void LLFace::setTexture(U32 ch, LLViewerTexture* tex) if ( (LLRender::DIFFUSE_MAP == ch) && (!mShowDiffTexture) ) { mOrigDiffTexture = tex; - return; + if (LLViewerFetchedTexture::sDefaultDiffuseImagep.get() == mTexture[ch].get()) + return; } // [/SL:KB] diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index ce96a1092d..df28c17beb 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -3621,9 +3621,11 @@ BOOL LLPanelPreference::postBuild() // Only enable Growl checkboxes if Growl is usable if (hasChild("notify_growl_checkbox", TRUE)) { + BOOL growl_enabled = gSavedSettings.getBOOL("FSEnableGrowl") && GrowlManager::isUsable(); getChild("notify_growl_checkbox")->setCommitCallback(boost::bind(&LLPanelPreference::onEnableGrowlChanged, this)); getChild("notify_growl_checkbox")->setEnabled(GrowlManager::isUsable()); - getChild("notify_growl_always_checkbox")->setEnabled(gSavedSettings.getBOOL("FSEnableGrowl") && GrowlManager::isUsable()); + getChild("notify_growl_always_checkbox")->setEnabled(growl_enabled); + getChild("FSFilterGrowlKeywordDuplicateIMs")->setEnabled(growl_enabled); } // @@ -3727,7 +3729,9 @@ void LLPanelPreference::handleFavoritesOnLoginChanged(LLUICtrl* checkbox, const // Only enable Growl checkboxes if Growl is usable void LLPanelPreference::onEnableGrowlChanged() { - getChild("notify_growl_always_checkbox")->setEnabled(gSavedSettings.getBOOL("FSEnableGrowl") && GrowlManager::isUsable()); + BOOL growl_enabled = gSavedSettings.getBOOL("FSEnableGrowl") && GrowlManager::isUsable(); + getChild("notify_growl_always_checkbox")->setEnabled(growl_enabled); + getChild("FSFilterGrowlKeywordDuplicateIMs")->setEnabled(growl_enabled); } // diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 1f1a255310..b23a718130 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -1026,7 +1026,12 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item, U32 mask) if( item_array ) { // *FIX: bit of a hack to call update server from here... - new_item->updateServer(TRUE); + // FIRE-19635 / BUG-20161: Detached object ends up in root of inventory + //new_item->updateServer(TRUE); + LLInventoryModel::LLCategoryUpdate update(category_id, 1); + gInventory.accountForUpdate(update); + new_item->updateParentOnServer(FALSE); + // item_array->push_back(new_item); } else @@ -1069,7 +1074,12 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item, U32 mask) { // *FIX: bit of a hack to call update server from // here... - new_item->updateServer(TRUE); + // FIRE-19635 / BUG-20161: Detached object ends up in root of inventory + //new_item->updateServer(TRUE); + LLInventoryModel::LLCategoryUpdate update(parent_id, 1); + gInventory.accountForUpdate(update); + new_item->updateParentOnServer(FALSE); + // item_array->push_back(new_item); } else diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 517b7a62c2..1053552cba 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -195,7 +195,12 @@ LLStatusBar::LLStatusBar(const LLRect& rect) mNearbyIcons(FALSE), // Script debug mSearchData(NULL), // Hook up and init for filtering mFilterEdit(NULL), // Edit for filtering - mSearchPanel(NULL) // Panel for filtering + mSearchPanel(NULL), // Panel for filtering + mIconPresets(NULL), + mMediaToggle(NULL), + mMouseEnterPresetsConnection(), + mMouseEnterVolumeConnection(), + mMouseEnterNearbyMediaConnection() { setRect(rect); @@ -244,6 +249,22 @@ LLStatusBar::~LLStatusBar() { mShowCoordsCtrlConnection.disconnect(); } + + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + if (mMouseEnterPresetsConnection.connected()) + { + mMouseEnterPresetsConnection.disconnect(); + } + if (mMouseEnterVolumeConnection.connected()) + { + mMouseEnterVolumeConnection.disconnect(); + } + if (mMouseEnterNearbyMediaConnection.connected()) + { + mMouseEnterNearbyMediaConnection.disconnect(); + } + // + // LLView destructor cleans up children } @@ -285,26 +306,47 @@ BOOL LLStatusBar::postBuild() //mBtnStats = getChildView("stat_btn"); mIconPresets = getChild( "presets_icon" ); - mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + // mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); + if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover")) + { + mMouseEnterPresetsConnection = mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); + } + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over mIconPresets->setClickedCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); mBtnVolume = getChild( "volume_btn" ); mBtnVolume->setClickedCallback( onClickVolume, this ); - mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); + // FIRE-19697: Add setting to disable status bar icon menu popup on mouseover + // mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); + if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover")) + { + mMouseEnterVolumeConnection = mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); + } + // FIRE-19697: Add setting to disable status bar icon menu popup on mouseover - // ## Zi: Media/Stream separation + // Media/Stream separation mStreamToggle = getChild("stream_toggle_btn"); - mStreamToggle->setClickedCallback( &LLStatusBar::onClickStreamToggle, this ); - // ## Zi: Media/Stream separation + mStreamToggle->setClickedCallback(&LLStatusBar::onClickStreamToggle, this); + // Media/Stream separation mMediaToggle = getChild("media_toggle_btn"); mMediaToggle->setClickedCallback( &LLStatusBar::onClickMediaToggle, this ); - mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); + // FIRE-19697: Add setting to disable status bar icon menu popup on mouseover + // mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); + if (gSavedSettings.getBOOL("FSStatusBarMenuButtonPopupOnRollover")) + { + mMouseEnterNearbyMediaConnection = mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); + } + // FIRE-19697: Add setting to disable status bar icon menu popup on mouseover LLHints::registerHintTarget("linden_balance", getChild("balance_bg")->getHandle()); gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2)); + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + gSavedSettings.getControl("FSStatusBarMenuButtonPopupOnRollover")->getSignal()->connect(boost::bind(&LLStatusBar::onPopupRolloverChanged, this, _2)); + // Adding Net Stat Graph S32 x = getRect().getWidth() - 2; S32 y = 0; @@ -1373,7 +1415,7 @@ void LLStatusBar::onParcelIconClick(EParcelIcon icon) case PATHFINDING_DIRTY_ICON: // Pathfinding rebake functions // LLNotificationsUtil::add("PathfindingDirty"); - LLNotificationsUtil::add("PathfindingDirty",LLSD(),LLSD(),boost::bind(&LLStatusBar::rebakeRegionCallback,this,_1,_2)); + LLNotificationsUtil::add("PathfindingDirty", LLSD(), LLSD(), boost::bind(&LLStatusBar::rebakeRegionCallback, this, _1, _2)); // break; case PATHFINDING_DISABLED_ICON: @@ -1500,10 +1542,9 @@ void LLStatusBar::updateVolumeControlsVisibility(const LLSD& data) // // Pathfinding rebake functions -BOOL LLStatusBar::rebakeRegionCallback(const LLSD& notification,const LLSD& response) +BOOL LLStatusBar::rebakeRegionCallback(const LLSD& notification, const LLSD& response) { - std::string newSetName = response["message"].asString(); - S32 option = LLNotificationsUtil::getSelectedOption(notification,response); + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); if (option == 0) { @@ -1582,3 +1623,29 @@ void LLStatusBar::updateMenuSearchVisibility(const LLSD& data) } update(); } + +// FIRE-19697: Add setting to disable graphics preset menu popup on mouse over +void LLStatusBar::onPopupRolloverChanged(const LLSD& newvalue) +{ + bool new_value = newvalue.asBoolean(); + + if (mMouseEnterPresetsConnection.connected()) + { + mMouseEnterPresetsConnection.disconnect(); + } + if (mMouseEnterVolumeConnection.connected()) + { + mMouseEnterVolumeConnection.disconnect(); + } + if (mMouseEnterNearbyMediaConnection.connected()) + { + mMouseEnterNearbyMediaConnection.disconnect(); + } + + if (new_value) + { + mMouseEnterPresetsConnection = mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this)); + mMouseEnterVolumeConnection = mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); + mMouseEnterNearbyMediaConnection = mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); + } +} diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index 730706bb8b..8a819b914f 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -261,6 +261,10 @@ private: void onNavMeshStatusChange(const LLPathfindingNavMeshStatus &pNavMeshStatus); void createNavMeshStatusListenerForCurrentRegion(); // Pathfinding support + + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + void onPopupRolloverChanged(const LLSD& newvalue); + public: /** @@ -362,6 +366,12 @@ private: boost::signals2::connection mShowCoordsCtrlConnection; boost::signals2::connection mParcelMgrConnection; + // FIRE-19697: Add setting to disable graphics preset menu popup on mouse over + boost::signals2::connection mMouseEnterPresetsConnection; + boost::signals2::connection mMouseEnterVolumeConnection; + boost::signals2::connection mMouseEnterNearbyMediaConnection; + // + // Pathfinding rebake functions BOOL rebakeRegionCallback(const LLSD& notification,const LLSD& response); diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index b591378c78..68759effc6 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -50,6 +50,7 @@ #include "rlvhandler.h" // [/RLVa:KB] #include "llfloaterwebcontent.h" +#include "fsfloatersearch.h" // // Constants @@ -631,7 +632,7 @@ void start_gesture( EKeystate s ) // FIRE-4167: Don't start gesture if a floater with web content has focus LLFloater* focused_floater = gFloaterView->getFocusedFloater(); - if (focused_floater && dynamic_cast(focused_floater)) + if (focused_floater && (dynamic_cast(focused_floater) || dynamic_cast(focused_floater))) { return; } diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 6c75494ddb..cc47d5e3a3 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -3057,7 +3057,10 @@ void LLViewerMediaImpl::updateImagesMediaStreams() ////////////////////////////////////////////////////////////////////////////////////////// LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage() { - if(mTextureId.isNull()) +// if(mTextureId.isNull()) +// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0) + if ( (mTextureId.isNull()) || ((LLViewerFetchedTexture::sDefaultDiffuseImagep.notNull()) && (LLViewerFetchedTexture::sDefaultDiffuseImagep->getID() == mTextureId)) ) +// [/SL:KB] { // The code that created this instance will read from the plugin's bits. return NULL; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 02b23f745c..ea497f2bf8 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7508,6 +7508,13 @@ void handle_viewer_disable_message_log(void*) void handle_customize_avatar() { + // FIRE-19614: Make CTRL-O toggle the appearance floater + if (LLFloaterReg::instanceVisible("appearance")) + { + LLFloaterReg::hideInstance("appearance"); + } + else + // LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits")); } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 51c14072ee..8c2f16f9ae 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2748,17 +2748,17 @@ static void teleport_region_info_cb(const std::string& slurl, LLSD args, const L if (!can_user_access_dst_region) { - params.name = "TeleportOffered_MaturityBlocked"; + params.name = "TeleportOffered_MaturityBlocked_SLUrl"; send_simple_im(from_id, LLTrans::getString("TeleportMaturityExceeded"), IM_NOTHING_SPECIAL, session_id); send_simple_im(from_id, LLStringUtil::null, IM_LURE_DECLINED, session_id); } else if (does_user_require_maturity_increase) { - params.name = "TeleportOffered_MaturityExceeded"; + params.name = "TeleportOffered_MaturityExceeded_SLUrl"; } else { - params.name = "TeleportOffered"; + params.name = "TeleportOffered_SLUrl"; params.functor.name = "TeleportOffered"; } @@ -3935,7 +3935,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) payload["region_maturity"] = region_access; // FIRE-6786: Always show teleport location in teleport offer - if (dialog == IM_LURE_USER && (!rlv_handler_t::isEnabled() || !fRlvAutoAccept)) + if (dialog == IM_LURE_USER && (!rlv_handler_t::isEnabled() || !fRlvAutoAccept) && LLGridManager::instance().isInSecondLife()) { LLVector3d pos_global = from_region_handle(region_handle); pos_global += LLVector3d(pos); @@ -4209,7 +4209,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Make osx dashboard icon bounce when window isn't in focus //if (viewer_window && viewer_window->getMinimized()) static LLCachedControl sFlashIcon(gSavedSettings, "FSFlashOnMessage"); - if (viewer_window && dialog != IM_TYPING_START && dialog != IM_TYPING_STOP && sFlashIcon) + static LLCachedControl sFSFlashOnObjectIM(gSavedSettings, "FSFlashOnObjectIM"); + if (viewer_window && dialog != IM_TYPING_START && dialog != IM_TYPING_STOP && sFlashIcon && (sFSFlashOnObjectIM || (chat.mChatType != CHAT_TYPE_IM))) { viewer_window->flashIcon(5.f); } diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 5fa0ddec08..b1abad9be5 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1877,6 +1877,32 @@ LLViewerWindow::LLViewerWindow(const Params& p) LLFeatureManager::getInstance()->setGraphicsLevel(0, false); gSavedSettings.setU32("RenderQualityPerformance", 0); } + + // Texture memory management + // On 64bit builds, allow up to 1GB texture memory on cards with 2GB video + // memory and up to 2GB texture memory on cards with 4GB video memory. Check + // is performed against a lower limit as not exactly 2 or 4GB might not be + // returned. +#ifdef ND_BUILD64BIT_ARCH + LL_INFOS() << "GLManager detected " << gGLManager.mVRAM << " MB VRAM" << LL_ENDL; + + if (gGLManager.mVRAM > 3584) + { + gMaxVideoRam = S32Megabytes(2048); + LL_INFOS() << "At least 4 GB video memory detected - increasing max video ram for textures to 2048 MB" << LL_ENDL; + } + else if (gGLManager.mVRAM > 1536) + { + gMaxVideoRam = S32Megabytes(1024); + LL_INFOS() << "At least 2 GB video memory detected - increasing max video ram for textures to 1024 MB" << LL_ENDL; + } + else if (gGLManager.mVRAM > 768) + { + gMaxVideoRam = S32Megabytes(768); + LL_INFOS() << "At least 1 GB video memory detected - increasing max video ram for textures to 768 MB" << LL_ENDL; + } +#endif + // // Init the image list. Must happen after GL is initialized and before the images that // LLViewerWindow needs are requested. diff --git a/indra/newview/skins/ansastorm/themes/blood/colors.xml b/indra/newview/skins/ansastorm/themes/blood/colors.xml index a301896073..dbb6facb7f 100644 --- a/indra/newview/skins/ansastorm/themes/blood/colors.xml +++ b/indra/newview/skins/ansastorm/themes/blood/colors.xml @@ -327,7 +327,7 @@ value="0.04 0.04 0.04 1.0" /> + value="0.2 0 0 0.5" /> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index b309ea0be3..9cd1b6d912 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -5,7 +5,7 @@ - + diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 70af513329..eb418e92ab 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -1369,6 +1369,15 @@ Prøv igen om lidt. + [NAME_SLURL] har tilbudt en teleport til deres lokation: + +[MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon> +
+