diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index ee50037ae2..be7149a090 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1796,6 +1796,29 @@ if (LINUX) SET_SOURCE_FILES_PROPERTIES(llviewermenu.cpp PROPERTIES COMPILE_FLAGS -fno-var-tracking-assignments) endif() # + + # Replace the icons with the appropriate ones for the channel + # ('test' is the default) + set(ICON_PATH "private") + string(TOLOWER ${VIEWER_CHANNEL} channel_lower) + if(channel_lower MATCHES "release") + set(ICON_PATH "release") + elseif(channel_lower MATCHES "beta") + set(ICON_PATH "beta") + elseif(channel_lower MATCHES "project") + set(ICON_PATH "project") + endif() + + if (OPENSIM) + set(ICON_PATH "${ICON_PATH}-os") + endif (OPENSIM) + + message(STATUS "Copying icons for ${ICON_PATH}") + execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${CMAKE_CURRENT_SOURCE_DIR}/icons/${ICON_PATH}/firestorm_256.bmp" + "${CMAKE_CURRENT_SOURCE_DIR}/res-sdl/firestorm_icon.BMP" + ) endif (LINUX) if (WINDOWS) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 0b0f5052fc..bc654af8a3 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -6648,6 +6648,17 @@ Value 0 + FSOpenSimAlwaysForceShowGrid + + Comment + Soft enable/disable the startup behaviour of OpenSim builds to allow gridlist access + Persist + 1 + Type + Boolean + Value + 1 + ForceMandatoryUpdate Comment @@ -12260,6 +12271,28 @@ Change of this parameter will affect the layout of buttons in notification toast 0 + FSFocusPointLocked + + Comment + Whether the focus point used for DoF is currently Locked in place + Persist + 0 + Type + Boolean + Value + 0 + + FSFocusPointFollowsPointer + + Comment + Allows the Depth of Field focus to actively follow the mouse point + Persist + 0 + Type + Boolean + Value + 0 + CameraDoFResScale diff --git a/indra/newview/icons/beta-os/firestorm_256.bmp b/indra/newview/icons/beta-os/firestorm_256.bmp index 9621d199bd..cb83cab458 100644 Binary files a/indra/newview/icons/beta-os/firestorm_256.bmp and b/indra/newview/icons/beta-os/firestorm_256.bmp differ diff --git a/indra/newview/icons/beta/firestorm_256.BMP b/indra/newview/icons/beta/firestorm_256.bmp similarity index 100% rename from indra/newview/icons/beta/firestorm_256.BMP rename to indra/newview/icons/beta/firestorm_256.bmp diff --git a/indra/newview/icons/development-os/firestorm_256.bmp b/indra/newview/icons/development-os/firestorm_256.bmp index 9621d199bd..cb83cab458 100644 Binary files a/indra/newview/icons/development-os/firestorm_256.bmp and b/indra/newview/icons/development-os/firestorm_256.bmp differ diff --git a/indra/newview/icons/development/firestorm_256.BMP b/indra/newview/icons/development/firestorm_256.bmp similarity index 100% rename from indra/newview/icons/development/firestorm_256.BMP rename to indra/newview/icons/development/firestorm_256.bmp diff --git a/indra/newview/icons/nightly-os/firestorm_256.bmp b/indra/newview/icons/nightly-os/firestorm_256.bmp index 9621d199bd..cb83cab458 100644 Binary files a/indra/newview/icons/nightly-os/firestorm_256.bmp and b/indra/newview/icons/nightly-os/firestorm_256.bmp differ diff --git a/indra/newview/icons/nightly/firestorm_256.BMP b/indra/newview/icons/nightly/firestorm_256.bmp similarity index 100% rename from indra/newview/icons/nightly/firestorm_256.BMP rename to indra/newview/icons/nightly/firestorm_256.bmp diff --git a/indra/newview/icons/private-os/firestorm_256.bmp b/indra/newview/icons/private-os/firestorm_256.bmp index 9621d199bd..cb83cab458 100644 Binary files a/indra/newview/icons/private-os/firestorm_256.bmp and b/indra/newview/icons/private-os/firestorm_256.bmp differ diff --git a/indra/newview/icons/private/firestorm_256.BMP b/indra/newview/icons/private/firestorm_256.bmp similarity index 100% rename from indra/newview/icons/private/firestorm_256.BMP rename to indra/newview/icons/private/firestorm_256.bmp diff --git a/indra/newview/icons/project-os/firestorm_256.bmp b/indra/newview/icons/project-os/firestorm_256.bmp index 9621d199bd..cb83cab458 100644 Binary files a/indra/newview/icons/project-os/firestorm_256.bmp and b/indra/newview/icons/project-os/firestorm_256.bmp differ diff --git a/indra/newview/icons/project/firestorm_256.BMP b/indra/newview/icons/project/firestorm_256.bmp similarity index 100% rename from indra/newview/icons/project/firestorm_256.BMP rename to indra/newview/icons/project/firestorm_256.bmp diff --git a/indra/newview/icons/release-os/firestorm_256.bmp b/indra/newview/icons/release-os/firestorm_256.bmp index 9621d199bd..cb83cab458 100644 Binary files a/indra/newview/icons/release-os/firestorm_256.bmp and b/indra/newview/icons/release-os/firestorm_256.bmp differ diff --git a/indra/newview/icons/release/firestorm_256.BMP b/indra/newview/icons/release/firestorm_256.bmp similarity index 100% rename from indra/newview/icons/release/firestorm_256.BMP rename to indra/newview/icons/release/firestorm_256.bmp diff --git a/indra/newview/icons/test-os/firestorm_256.bmp b/indra/newview/icons/test-os/firestorm_256.bmp index 9621d199bd..cb83cab458 100644 Binary files a/indra/newview/icons/test-os/firestorm_256.bmp and b/indra/newview/icons/test-os/firestorm_256.bmp differ diff --git a/indra/newview/icons/test/firestorm_256.BMP b/indra/newview/icons/test/firestorm_256.bmp similarity index 100% rename from indra/newview/icons/test/firestorm_256.BMP rename to indra/newview/icons/test/firestorm_256.bmp diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 26ff6940b8..9f1ba3a99f 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3016,16 +3016,19 @@ bool LLAppViewer::initConfiguration() } // -// Set ForceShowGrid to TRUE on first run if we're on an OpenSim build -#ifdef OPENSIM - if (!gSavedSettings.getBOOL("ForceShowGrid")) - gSavedSettings.setBOOL("ForceShowGrid", TRUE); -#endif // OPENSIM -// gSavedSettings.setBOOL("FirstRunThisInstall", FALSE); } +// FIRE-29819 Set ForceShowGrid to TRUE always, unless expressly disabled +// FSOpenSimAlwaysForcesShowGrid is added to allow closed grids to soft disable the default behaviour +#if OPENSIM && !SINGLEGRID + if (!gSavedSettings.getBOOL("ForceShowGrid") && gSavedSettings.getBOOL("FSOpenSimAlwaysForceShowGrid")) + { + gSavedSettings.setBOOL("ForceShowGrid", TRUE); + } +#endif +// // Compatibility with old backups // Put gSavedSettings here, gSavedPerAccountSettings in llstartup.cpp // *TODO: Should we keep these around forever or just three release cycles? diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 75cf341109..0ead0adcce 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -2157,7 +2157,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer( { LLMatrix4a final_mat; // Use the SSE2 version - LLSkinningUtil::getPerVertexSkinMatrix(weights[j].getF32ptr(), mat, false, final_mat, max_joints); + // LLSkinningUtil::getPerVertexSkinMatrix(weights[j].getF32ptr(), mat, false, final_mat, max_joints); FSSkinningUtil::getPerVertexSkinMatrixSSE(weights[j], mat, false, final_mat, max_joints); // diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index cac30efe11..89f3629bb0 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -58,6 +58,7 @@ #include "llsliderctrl.h" #include "llspinctrl.h" #include "lltabcontainer.h" +#include "llcolorswatch.h" // #include "lltrans.h" #include "llcallbacklist.h" #include "llviewertexteditor.h" @@ -193,6 +194,15 @@ BOOL LLFloaterModelPreview::postBuild() getChild("show_joint_overrides")->setCommitCallback(boost::bind(&LLFloaterModelPreview::onViewOptionChecked, this, _1)); getChild("show_joint_positions")->setCommitCallback(boost::bind(&LLFloaterModelPreview::onViewOptionChecked, this, _1)); getChild("show_uv_guide")->setCommitCallback(boost::bind(&LLFloaterModelPreview::onViewOptionChecked, this, _1)); // - Add UV guide overlay to pmesh preview + // support for settings panel of floater + const auto& preview_refresh_cb = [this](LLUICtrl *, const LLSD &){ if(this->mModelPreview){mModelPreview->refresh();}}; + getChild("mesh_preview_canvas_color")->setCommitCallback(preview_refresh_cb); + getChild("mesh_preview_edge_color")->setCommitCallback(preview_refresh_cb); + getChild("mesh_preview_physics_edge_color")->setCommitCallback(preview_refresh_cb); + getChild("mesh_preview_physics_fill_color")->setCommitCallback(preview_refresh_cb); + getChild("mesh_preview_degenerate_edge_color")->setCommitCallback(preview_refresh_cb); + getChild("mesh_preview_degenerate_fill_color")->setCommitCallback(preview_refresh_cb); + // childDisable("upload_skin"); childDisable("upload_joints"); @@ -560,11 +570,13 @@ void add_row_to_list(LLScrollListCtrl *listp, cell_params.column = "model_name"; cell_params.value = name; + cell_params.font_halign = LLFontGL::LEFT; // Fix ugly alignment item_params.columns.add(cell_params); cell_params.column = "axis_x"; cell_params.value = vx; + cell_params.font_halign = LLFontGL::RIGHT; // Fix ugly alignment item_params.columns.add(cell_params); cell_params.column = "axis_y"; diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index aeddc0b7ec..7b41808c94 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -815,7 +815,7 @@ BOOL LLFloaterPreference::postBuild() // [/SL:KB] // -#if !defined(OPENSIM) || defined(SINGLEGRID)// +#if !defined(OPENSIM) || defined(SINGLEGRID) // Hide the opensim tab if opensim isn't enabled LLTabContainer* tab_container = getChild("pref core"); if (tab_container) @@ -824,9 +824,11 @@ BOOL LLFloaterPreference::postBuild() if (opensim_panel) tab_container->removeTabPanel(opensim_panel); } +#endif +#if defined(OPENSIM) && !defined(SINGLEGRID) + childSetEnabled("show_grid_selection_check", !gSavedSettings.getBOOL("FSOpenSimAlwaysForceShowGrid")); +#endif // -#endif // OPENSIM // - // Pie menu gSavedSettings.getControl("OverridePieColors")->getSignal()->connect(boost::bind(&LLFloaterPreference::onPieColorsOverrideChanged, this)); diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp index c4d54afc40..16b52a2d0b 100644 --- a/indra/newview/llscriptfloater.cpp +++ b/indra/newview/llscriptfloater.cpp @@ -559,10 +559,11 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id) if(it != mNotifications.end()) { + auto old_id = it->first; // store UUID to prevent use after free - Rye LLChicletPanel * chiclet_panelp = LLChicletBar::getInstance()->getChicletPanel(); if (NULL != chiclet_panelp) { - LLIMChiclet * chicletp = chiclet_panelp->findChiclet(it->first); + LLIMChiclet * chicletp = chiclet_panelp->findChiclet(old_id); // avoid use after free - Rye if (NULL != chicletp) { // Pass the new_message icon state further. @@ -571,14 +572,14 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id) } } - LLScriptFloater* floater = LLFloaterReg::findTypedInstance("script_floater", it->first); + LLScriptFloater* floater = LLFloaterReg::findTypedInstance("script_floater", old_id); // avoid use after free - Rye if (floater) { // Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142. set_new_message |= !floater->hasFocus(); } - removeNotification(it->first); + removeNotification(old_id); } } diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 4763f1e263..e50f137fbb 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -5639,9 +5639,18 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data } else { - if (node->mInventorySerial != inv_serial && node->getObject()) + // FIRE-19738 Object content caching improvement + // if (node->mInventorySerial != inv_serial && node->getObject()) + // { + // node->getObject()->dirtyInventory(); + if ( node->mInventorySerial != inv_serial ) { - node->getObject()->dirtyInventory(); + auto obj = node->getObject(); + if( obj && obj->getInventorySerial() != inv_serial ) + { + obj->dirtyInventory(); + } + // } // save texture data as soon as we get texture perms first time diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index d9a8951207..1ef53c5db2 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -5294,7 +5294,7 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de LLVector3 mouse_world_start = mouse_point_global; LLVector3 mouse_world_end = mouse_point_global + mouse_direction_global * depth; - if (!LLViewerJoystick::getInstance()->getOverrideCamera()) + if (!LLViewerJoystick::getInstance()->getOverrideCamera() && !gPipeline.FSFocusPointFollowsPointer) // FIRE-16728 Add free aim mouse and focus lock { //always set raycast intersection to mouse_world_end unless //flycam is on (for DoF effect) gDebugRaycastIntersection.load3(mouse_world_end.mV); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 0de00332a0..0c57826f53 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -185,6 +185,10 @@ bool LLPipeline::RenderDepthOfFieldInEditMode; // FIRE-16251: Depth of field does not work underwater bool LLPipeline::FSRenderDepthOfFieldUnderwater; // FIRE-16251 +// FIRE-16728 Add free aim mouse and focus lock +bool LLPipeline::FSFocusPointLocked; +bool LLPipeline::FSFocusPointFollowsPointer; +// F32 LLPipeline::CameraFocusTransitionTime; F32 LLPipeline::CameraFNumber; F32 LLPipeline::CameraFocalLength; @@ -658,6 +662,10 @@ void LLPipeline::init() connectRefreshCachedSettingsSafe("RenderAttachedLights"); connectRefreshCachedSettingsSafe("RenderAttachedParticles"); // + // FIRE-16728 Add free aim mouse and focus lock + connectRefreshCachedSettingsSafe("FSFocusPointLocked"); + connectRefreshCachedSettingsSafe("FSFocusPointFollowsPointer"); + // } LLPipeline::~LLPipeline() @@ -805,7 +813,10 @@ void LLPipeline::requestResizeShadowTexture() void LLPipeline::resizeShadowTexture() { releaseShadowTargets(); - allocateShadowBuffer(mScreenWidth, mScreenHeight); + // FIRE-30538 don;t pass zero screen size to shadow buff allocator + // allocateShadowBuffer(mScreenWidth, mScreenHeight); + allocateShadowBuffer( mScreen.getWidth(), mScreen.getHeight() ); + // gResizeShadowTexture = FALSE; } @@ -1227,6 +1238,10 @@ void LLPipeline::refreshCachedSettings() // FIRE-16251: Depth of Field does not work underwater FSRenderDepthOfFieldUnderwater = gSavedSettings.getBOOL("FSRenderDoFUnderwater"); // FIRE-16251 + // FIRE-16728 Add free aim mouse and focus lock + FSFocusPointLocked = gSavedSettings.getBOOL("FSFocusPointLocked"); + FSFocusPointFollowsPointer = gSavedSettings.getBOOL("FSFocusPointFollowsPointer"); + // CameraFocusTransitionTime = gSavedSettings.getF32("CameraFocusTransitionTime"); CameraFNumber = gSavedSettings.getF32("CameraFNumber"); CameraFocalLength = gSavedSettings.getF32("CameraFocalLength"); @@ -4252,11 +4267,6 @@ void LLPipeline::renderHighlights() glStencilFunc(GL_ALWAYS, 0, 0xFFFFFFFF); glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); - if (canUseVertexShaders()) - { - gHighlightProgram.bind(); - } - gGL.setColorMask(false, false); if (LLGLSLShader::sNoFixedFunction) @@ -7915,6 +7925,15 @@ void LLPipeline::renderFinalize() LLVector3 focus_point; + // FIRE-16728 focus point lock & free focus DoF - based on a feature developed by NiranV Dean + static LLVector3 last_focus_point{}; + if( LLPipeline::FSFocusPointLocked && !last_focus_point.isExactlyZero() ) + { + focus_point = last_focus_point; + } + else + { + // LLViewerObject *obj = LLViewerMediaFocus::getInstance()->getFocusedObject(); if (obj && obj->mDrawable && obj->isSelected()) { // focus on selected media object @@ -7928,10 +7947,11 @@ void LLPipeline::renderFinalize() } } } + }// support focus point lock if (focus_point.isExactlyZero()) { - if (LLViewerJoystick::getInstance()->getOverrideCamera()) + if (LLViewerJoystick::getInstance()->getOverrideCamera() || LLPipeline::FSFocusPointFollowsPointer) // FIRE-16728 Add free aim mouse and focus lock { // focus on point under cursor focus_point.set(gDebugRaycastIntersection.getF32ptr()); } @@ -7954,7 +7974,9 @@ void LLPipeline::renderFinalize() } } } - + // FIRE-16728 Add free aim mouse and focus lock + last_focus_point = focus_point; + // LLVector3 eye = LLViewerCamera::getInstance()->getOrigin(); F32 target_distance = 16.f; if (!focus_point.isExactlyZero()) @@ -8957,24 +8979,6 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget *screen_target) // send light color to shader in linear space LLColor3 col = volume->getLightLinearColor(); - // fade also works as flicker prevention during reparenting - // because reparenting causes distance to jump temporary - F32 fade = iter->fade; - if (fade < LIGHT_FADE_TIME) - { - // fade in/out light - if (fade >= 0.f) - { - fade = fade / LIGHT_FADE_TIME; - } - else - { - fade = 1.f + fade / LIGHT_FADE_TIME; - } - fade = llclamp(fade, 0.f, 1.f); - col *= fade; - } - if (col.magVecSquared() < 0.001f) { continue; diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 9e4fb5e7c5..75e2410147 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -958,6 +958,10 @@ public: // FIRE-16251: Depth of Field does not work underwater static bool FSRenderDepthOfFieldUnderwater; // FIRE-16251 + // FIRE-16728 + static bool FSFocusPointLocked; + static bool FSFocusPointFollowsPointer; + // static F32 CameraFocusTransitionTime; static F32 CameraFNumber; static F32 CameraFocalLength; diff --git a/indra/newview/quickprefs.cpp b/indra/newview/quickprefs.cpp index afe9251a31..81570ce6e7 100644 --- a/indra/newview/quickprefs.cpp +++ b/indra/newview/quickprefs.cpp @@ -1372,8 +1372,6 @@ void FloaterQuickPrefs::updateControl(const std::string& controlName, ControlEnt if (var) { widget->setValue(var->getValue()); - widget->setToolTip(var->getComment()); - label_textbox->setToolTip(var->getComment()); } else { diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml index 5485b6d70a..6e9572fd8e 100644 --- a/indra/newview/skins/default/xui/de/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml @@ -359,18 +359,35 @@ - - - Hinweis: -Zu viele Objekte nutzen unnötigerweise den Standard-Anhängepunkt (Rechte Hand). - -Bitte ziehen Sie einen anderen Anhängepunkt nahe der Objektposition in Betracht. - - + + + Modell-Upload-Verhaltenseinstellungen: + + + + + Farben für Modell-Upload: + + + Allgemein: + + + + + Physik: + + + + + Physik-Probleme: + + + +