From 7989df1c3623f9402248aa74bdec20dff6d78fd1 Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Thu, 21 Feb 2019 17:20:53 -0800
Subject: Merge

---
 indra/newview/app_settings/settings.xml | 2 +-
 indra/newview/lldrawpoolwater.cpp       | 2 --
 indra/newview/llviewershadermgr.cpp     | 8 ++++----
 indra/newview/pipeline.h                | 3 ++-
 4 files changed, 7 insertions(+), 8 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index bb5ff19176..f591782694 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8763,7 +8763,7 @@
     <key>Type</key>
     <string>Boolean</string>
     <key>Value</key>
-    <integer>0</integer>
+    <integer>1</integer>
   </map>
   <key>RenderLocalLights</key>
   <map>
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index b2f0d956c4..f5a41fd5f6 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -619,8 +619,6 @@ void LLDrawPoolWater::shade2(bool edge, LLGLSLShader* shader, const LLColor3& li
 	{		
 		LLGLDisable cullface(GL_CULL_FACE);
 
-        
-
         sNeedsReflectionUpdate = TRUE;			
         sNeedsDistortionUpdate = TRUE;
 
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 8a69376fe1..a81b20747d 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -3400,9 +3400,9 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 
 BOOL LLViewerShaderMgr::loadShadersAvatar()
 {
-    BOOL success = TRUE;
+      BOOL success = TRUE;
 
-    if (mShaderLevel[SHADER_AVATAR] == 0)
+     if (mShaderLevel[SHADER_AVATAR] == 0)
     {
         gAvatarProgram.unload();
         gAvatarWaterProgram.unload();
@@ -3411,7 +3411,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
         return TRUE;
     }
 
-    if (success)
+     if (success)
     {
         gAvatarProgram.mName = "Avatar Shader";
         gAvatarProgram.mFeatures.hasSkinning = true;
@@ -3455,7 +3455,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
         }
     }
 
-    if (success)
+     if (success)
     {
         gAvatarPickProgram.mName = "Avatar Pick Shader";
         gAvatarPickProgram.mFeatures.hasSkinning = true;
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 5be6b73cc4..b3aa48e39f 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -281,7 +281,8 @@ public:
 
 	void unbindDeferredShader(LLGLSLShader& shader);
 	void renderDeferredLighting(LLRenderTarget* light_target);
-	
+	void postDeferredGammaCorrect(LLRenderTarget* screen_target);
+
 	void generateWaterReflection(LLCamera& camera);
 	void generateSunShadow(LLCamera& camera);
     LLRenderTarget* getShadowTarget(U32 i);
-- 
cgit v1.2.3


From 645651813520c29c9f898ad531e0b3de65f33b67 Mon Sep 17 00:00:00 2001
From: andreykproductengine <andreykproductengine@lindenlab.com>
Date: Mon, 25 Feb 2019 16:51:29 +0200
Subject: SL-1945 Autoselection and some crash fixing

---
 indra/newview/llfloatereditextdaycycle.cpp |  7 ++++++-
 indra/newview/lltrackpicker.cpp            | 10 +++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp
index 18f22bf2d2..f712901795 100644
--- a/indra/newview/llfloatereditextdaycycle.cpp
+++ b/indra/newview/llfloatereditextdaycycle.cpp
@@ -1322,6 +1322,11 @@ void LLFloaterEditExtDayCycle::updateSlider()
     mFramesSlider->clear();
     mSliderKeyMap.clear();
 
+    if (!mEditDay)
+    {
+        return;
+    }
+
     LLSettingsDay::CycleTrack_t track = mEditDay->getCycleTrack(mCurrentTrack);
     for (auto &track_frame : track)
     {
@@ -1723,7 +1728,7 @@ bool LLFloaterEditExtDayCycle::isRemovingFrameAllowed()
 
 bool LLFloaterEditExtDayCycle::isAddingFrameAllowed()
 {
-    if (!mFramesSlider->getCurSlider().empty()) return false;
+    if (!mFramesSlider->getCurSlider().empty() || !mEditDay) return false;
 
     LLSettingsBase::Seconds frame(mTimeSlider->getCurSliderValue());
     if ((mEditDay->getSettingsNearKeyframe(frame, mCurrentTrack, LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR)).second)
diff --git a/indra/newview/lltrackpicker.cpp b/indra/newview/lltrackpicker.cpp
index bc918f4bd7..15bc591b37 100644
--- a/indra/newview/lltrackpicker.cpp
+++ b/indra/newview/lltrackpicker.cpp
@@ -81,13 +81,21 @@ void LLFloaterTrackPicker::showPicker(const LLSD &args)
     LLSD::array_const_iterator iter;
     LLSD::array_const_iterator end = args.endArray();
 
+    bool select_item = true;
     for (iter = args.beginArray(); iter != end; ++iter)
     {
         S32 track_id = (*iter)["id"].asInteger();
         bool can_enable = (*iter)["enabled"].asBoolean();
-        LLView *view = getChild<LLCheckBoxCtrl>(RDO_TRACK_PREFIX + llformat("%d", track_id), true);
+        LLCheckBoxCtrl *view = getChild<LLCheckBoxCtrl>(RDO_TRACK_PREFIX + llformat("%d", track_id), true);
         view->setEnabled(can_enable);
         view->setLabelArg("[ALT]", (*iter).has("altitude") ? ((*iter)["altitude"].asString() + "m") : " ");
+
+        // Mark first avaliable item as selected
+        if (can_enable && select_item)
+        {
+            select_item = false;
+            view->set(TRUE);
+        }
     }
 
     openFloater(getKey());
-- 
cgit v1.2.3


From 5cd188840d968731047aa89459ff63f605709c6e Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Mon, 25 Feb 2019 12:14:59 -0800
Subject: SL-9806

Remove fade effect on sun disc as it nears horizon (stars poke through).
---
 indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl  | 3 ++-
 indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl | 4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl
index 5bb2020971..1fb337498c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl
@@ -52,7 +52,8 @@ void main()
     c.rgb = fullbrightAtmosTransport(c.rgb);
     c.rgb = fullbrightScaleSoftClip(c.rgb);
 
-    c.a *= sun_fade;
+    // SL-9806 stars poke through
+    //c.a *= sun_fade;
 
     frag_data[0] = c;
     frag_data[1] = vec4(0.0f);
diff --git a/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl b/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
index 668379164d..d85ce004a5 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
@@ -47,7 +47,9 @@ void main()
     vec4 sunA = texture2D(diffuseMap, vary_texcoord0.xy);
     vec4 sunB = texture2D(altDiffuseMap, vary_texcoord0.xy);
     vec4 c     = mix(sunA, sunB, blend_factor);
-    c.a *= sun_fade;
+
+// SL-9806 stars poke through
+//    c.a *= sun_fade;
 
     c.rgb = pow(c.rgb, vec3(0.7f));
     c.rgb = fullbrightAtmosTransport(c.rgb);
-- 
cgit v1.2.3


From 4879438b14612c6a4e8fb5a3b61dd793b7591ae1 Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Mon, 25 Feb 2019 12:25:02 -0800
Subject: Disable nSight debug by default (breaks snapshots).

---
 indra/newview/app_settings/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index f591782694..bb5ff19176 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8763,7 +8763,7 @@
     <key>Type</key>
     <string>Boolean</string>
     <key>Value</key>
-    <integer>1</integer>
+    <integer>0</integer>
   </map>
   <key>RenderLocalLights</key>
   <map>
-- 
cgit v1.2.3


From c42a364841f68e08bccb2ee288f34c8c3f4be733 Mon Sep 17 00:00:00 2001
From: Rider Linden <rider@lindenlab.com>
Date: Mon, 25 Feb 2019 14:23:46 -0800
Subject: SL-10165: Using Load Sky/Water when over an existing keyframe
 replaces the old frame.

---
 indra/newview/llfloatereditextdaycycle.cpp | 31 ++++++++++++++++++++++--------
 indra/newview/llfloatereditextdaycycle.h   |  5 +++--
 2 files changed, 26 insertions(+), 10 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp
index 18f22bf2d2..f81b2177a8 100644
--- a/indra/newview/llfloatereditextdaycycle.cpp
+++ b/indra/newview/llfloatereditextdaycycle.cpp
@@ -1368,7 +1368,7 @@ void LLFloaterEditExtDayCycle::updateTimeAndLabel()
     // Update blender here:
 }
 
-void LLFloaterEditExtDayCycle::addSliderFrame(const F32 frame, const LLSettingsBase::ptr_t &setting, bool update_ui)
+void LLFloaterEditExtDayCycle::addSliderFrame(F32 frame, const LLSettingsBase::ptr_t &setting, bool update_ui)
 {
     // multi slider distinguishes elements by key/name in string format
     // store names to map to be able to recall dependencies
@@ -1408,6 +1408,19 @@ void LLFloaterEditExtDayCycle::removeCurrentSliderFrame()
     updateTabs();
 }
 
+void LLFloaterEditExtDayCycle::removeSliderFrame(F32 frame)
+{
+    keymap_t::iterator it = std::find_if(mSliderKeyMap.begin(), mSliderKeyMap.end(), 
+        [frame](const keymap_t::value_type &value) { return fabs(value.second.mFrame - frame) < LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR; });
+
+    if (it != mSliderKeyMap.end())
+    {
+        mFramesSlider->deleteSlider((*it).first);
+        mSliderKeyMap.erase(it);
+    }
+
+}
+
 //-------------------------------------------------------------------------
 
 LLFloaterEditExtDayCycle::connection_t LLFloaterEditExtDayCycle::setEditCommitSignal(LLFloaterEditExtDayCycle::edit_commit_signal_t::slot_type cb)
@@ -1997,18 +2010,20 @@ void LLFloaterEditExtDayCycle::onAssetLoadedForInsertion(LLUUID item_id, LLUUID
         }
         else
         {
-            // load single frame
-
-            if ((mEditDay->getSettingsNearKeyframe(frame, dest_track, LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR)).second)
-            {
-                LL_WARNS("ENVDAYEDIT") << "Attempt to add new frame too close to existing frame." << LL_ENDL;
-                return;
-            }
             if (!mFramesSlider->canAddSliders())
             {
                 LL_WARNS("ENVDAYEDIT") << "Attempt to add new frame when slider is full." << LL_ENDL;
                 return;
             }
+
+            // load or replace single frame
+            LLSettingsDay::CycleTrack_t::value_type nearest = mEditDay->getSettingsNearKeyframe(frame, dest_track, LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR);
+            if (nearest.first != LLSettingsDay::INVALID_TRACKPOS)
+            {   // There is already a frame near the target location. Remove it so we can put the new one in its place.
+                mEditDay->removeTrackKeyframe(dest_track, nearest.first);
+                removeSliderFrame(nearest.first);
+            }
+
             // Don't forget to clone (we might reuse/load it couple times)
             if (settings->getSettingsType() == "sky")
             {
diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h
index 311bbd52dc..c271f15840 100644
--- a/indra/newview/llfloatereditextdaycycle.h
+++ b/indra/newview/llfloatereditextdaycycle.h
@@ -144,8 +144,9 @@ private:
 	void                        updateLabels();
 	void                        updateSlider(); //generate sliders from current track
 	void                        updateTimeAndLabel();
-	void                        addSliderFrame(const F32 frame, const LLSettingsBase::ptr_t &setting, bool update_ui = true);
-	void                        removeCurrentSliderFrame();
+	void                        addSliderFrame(F32 frame, const LLSettingsBase::ptr_t &setting, bool update_ui = true);
+    void                        removeCurrentSliderFrame();
+    void                        removeSliderFrame(F32 frame);
 
     void                        loadInventoryItem(const LLUUID  &inventoryId);
     void                        onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status);
-- 
cgit v1.2.3


From 48d1facd90e4112d58b249e0cbca354c81f18764 Mon Sep 17 00:00:00 2001
From: andreykproductengine <andreykproductengine@lindenlab.com>
Date: Tue, 26 Feb 2019 15:22:00 +0200
Subject: SL-10635 Crash when loading day cycle from asset

---
 indra/newview/llfloatereditextdaycycle.cpp | 76 +++++++++++++++++++++---------
 1 file changed, 54 insertions(+), 22 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp
index a64a3d46ff..3f2a89be88 100644
--- a/indra/newview/llfloatereditextdaycycle.cpp
+++ b/indra/newview/llfloatereditextdaycycle.cpp
@@ -555,7 +555,11 @@ void LLFloaterEditExtDayCycle::setEditName(const std::string &name)
 /* virtual */
 BOOL LLFloaterEditExtDayCycle::handleKeyUp(KEY key, MASK mask, BOOL called_from_parent)
 {
-    if (mask == MASK_SHIFT && mShiftCopyEnabled)
+    if (!mEditDay)
+    {
+        mShiftCopyEnabled = false;
+    }
+    else if (mask == MASK_SHIFT && mShiftCopyEnabled)
     {
         mShiftCopyEnabled = false;
         std::string curslider = mFramesSlider->getCurSlider();
@@ -770,6 +774,11 @@ void LLFloaterEditExtDayCycle::onAddFrame()
 {
     LLSettingsBase::Seconds frame(mTimeSlider->getCurSliderValue());
     LLSettingsBase::ptr_t setting;
+    if (!mEditDay)
+    {
+        LL_WARNS("ENVDAYEDIT") << "Attempt to add new frame while waiting for day(asset) to load." << LL_ENDL;
+        return;
+    }
     if ((mEditDay->getSettingsNearKeyframe(frame, mCurrentTrack, LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR)).second)
     {
         LL_WARNS("ENVDAYEDIT") << "Attempt to add new frame too close to existing frame." << LL_ENDL;
@@ -815,6 +824,11 @@ void LLFloaterEditExtDayCycle::onRemoveFrame()
 
 void LLFloaterEditExtDayCycle::onCloneTrack()
 {
+    if (!mEditDay)
+    {
+        LL_WARNS("ENVDAYEDIT") << "Attempt to copy track while waiting for day(asset) to load." << LL_ENDL;
+        return;
+    }
     const LLEnvironment::altitude_list_t &altitudes = LLEnvironment::instance().getRegionAltitudes();
     bool use_altitudes = altitudes.size() > 0 && ((mEditContext == CONTEXT_PARCEL) || (mEditContext == CONTEXT_REGION));
 
@@ -865,6 +879,12 @@ void LLFloaterEditExtDayCycle::onLoadTrack()
 
 void LLFloaterEditExtDayCycle::onClearTrack()
 {
+    if (!mEditDay)
+    {
+        LL_WARNS("ENVDAYEDIT") << "Attempt to clear track while waiting for day(asset) to load." << LL_ENDL;
+        return;
+    }
+
     if (mCurrentTrack > 1)
         mEditDay->getCycleTrack(mCurrentTrack).clear();
     else
@@ -887,6 +907,12 @@ void LLFloaterEditExtDayCycle::onClearTrack()
 
 void LLFloaterEditExtDayCycle::onCommitName(class LLLineEditor* caller, void* user_data)
 {
+    if (!mEditDay)
+    {
+        LL_WARNS("ENVDAYEDIT") << "Attempt to rename day while waiting for day(asset) to load." << LL_ENDL;
+        return;
+    }
+
     mEditDay->setName(caller->getText());
 }
 
@@ -1274,37 +1300,36 @@ void LLFloaterEditExtDayCycle::updateButtons()
     // This logic appears to work in reverse, the add frame button
     // is only enabled when you're on an existing frame and disabled
     // in all the interim positions where you'd want to add a frame...
-    //LLSettingsBase::Seconds frame(mTimeSlider->getCurSliderValue());
-    //LLSettingsBase::ptr_t settings = mEditDay->getSettingsAtKeyframe(frame, mCurrentTrack);
-    //bool can_add = static_cast<bool>(settings);
-    //mAddFrameButton->setEnabled(can_add);
-    //mDeleteFrameButton->setEnabled(!can_add);
-    mAddFrameButton->setEnabled(!mIsPlaying && isAddingFrameAllowed() && mCanMod);
-    mDeleteFrameButton->setEnabled(!mIsPlaying && isRemovingFrameAllowed() && mCanMod);
-    mLoadFrame->setEnabled(!mIsPlaying && mCanMod);
 
+    bool can_manipulate = mEditDay && !mIsPlaying && mCanMod;
     bool can_clone(false);
-    bool can_load(true);
-    bool can_clear(true);
+    bool can_clear(false);
 
-    if (mCurrentTrack == 0)
+    if (can_manipulate)
     {
-        can_clone = false;
-    }
-    else
-    {
-        for (S32 track = 1; track < LLSettingsDay::TRACK_MAX; ++track)
+        if (mCurrentTrack == 0)
+        {
+            can_clone = false;
+        }
+        else
         {
-            if (track == mCurrentTrack)
-                continue;
-            can_clone |= !mEditDay->getCycleTrack(track).empty();
+            for (S32 track = 1; track < LLSettingsDay::TRACK_MAX; ++track)
+            {
+                if (track == mCurrentTrack)
+                    continue;
+                can_clone |= !mEditDay->getCycleTrack(track).empty();
+            }
         }
+
+        can_clear = (mCurrentTrack > 1) ? (!mEditDay->getCycleTrack(mCurrentTrack).empty()) : (mEditDay->getCycleTrack(mCurrentTrack).size() > 1);
     }
 
-    can_clear = (mCurrentTrack > 1) ? (!mEditDay->getCycleTrack(mCurrentTrack).empty()) : (mEditDay->getCycleTrack(mCurrentTrack).size() > 1);
     mCloneTrack->setEnabled(can_clone);
-    mLoadTrack->setEnabled(can_load);
+    mLoadTrack->setEnabled(can_manipulate);
     mClearTrack->setEnabled(can_clear);
+    mAddFrameButton->setEnabled(can_manipulate && isAddingFrameAllowed());
+    mDeleteFrameButton->setEnabled(can_manipulate && isRemovingFrameAllowed());
+    mLoadFrame->setEnabled(can_manipulate);
 
     // update track buttons
     bool extended_env = LLEnvironment::instance().isExtendedEnvironmentEnabled();
@@ -1324,6 +1349,7 @@ void LLFloaterEditExtDayCycle::updateSlider()
 
     if (!mEditDay)
     {
+        // floater is waiting for asset
         return;
     }
 
@@ -2067,6 +2093,12 @@ void LLFloaterEditExtDayCycle::onAssetLoadedForInsertion(LLUUID item_id, LLUUID
         return;
     }
 
+    if (!mEditDay)
+    {
+        // day got reset while we were waiting for response
+        return;
+    }
+
     LLInventoryItem *inv_item = gInventory.getItem(item_id);
 
     if (inv_item && !inv_item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
-- 
cgit v1.2.3


From 6b9b8a627f5923084bd5c519bd51801cbd3aa568 Mon Sep 17 00:00:00 2001
From: maxim_productengine <mnikolenko@productengine.com>
Date: Tue, 26 Feb 2019 15:51:33 +0200
Subject: SL-1945 Autoselection fix

---
 indra/newview/lltrackpicker.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/lltrackpicker.cpp b/indra/newview/lltrackpicker.cpp
index 15bc591b37..fe6256a8a9 100644
--- a/indra/newview/lltrackpicker.cpp
+++ b/indra/newview/lltrackpicker.cpp
@@ -94,7 +94,7 @@ void LLFloaterTrackPicker::showPicker(const LLSD &args)
         if (can_enable && select_item)
         {
             select_item = false;
-            view->set(TRUE);
+            getChild<LLRadioGroup>(RDO_TRACK_SELECTION, true)->setSelectedByValue(LLSD(track_id), TRUE);
         }
     }
 
-- 
cgit v1.2.3