From 61129c73c97accf297943d6bc5beea3c09579084 Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Mon, 12 Aug 2013 10:12:09 -0700
Subject: [PATCH] NORSPEC-346 fix knock-on causing alpha mask edits to cause
 materials to get removed and revert to alpha blend

---
 indra/newview/llpanelface.h | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 562d293d561..46b3375f64b 100755
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -259,8 +259,13 @@ class LLPanelFace : public LLPanel
 					// need to get per-face answer to this question for sane alpha mode retention on updates.
 					//					
 					bool is_alpha_face = object->isImageAlphaBlended(face);
-					U8 default_alpha_mode = is_alpha_face ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
 					
+					// need to keep this original answer for valid comparisons in logic below
+					//
+					U8 original_default_alpha_mode = is_alpha_face ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
+					
+					U8 default_alpha_mode = original_default_alpha_mode;
+
 					if (!current_material.isNull())
 					{
 						default_alpha_mode = current_material->getDiffuseAlphaMode();
@@ -285,7 +290,7 @@ class LLPanelFace : public LLPanel
 						new_material->setDiffuseAlphaMode(LLMaterial::DIFFUSE_ALPHA_MODE_NONE);
 					}
 
-					bool is_default_blend_mode		= (new_alpha_mode == default_alpha_mode);
+					bool is_default_blend_mode		= (new_alpha_mode == original_default_alpha_mode);
 					bool is_need_material			= !is_default_blend_mode || !new_normal_map_id.isNull() || !new_spec_map_id.isNull();
 
 					if (!is_need_material)
-- 
GitLab