diff options
| -rw-r--r-- | .github/workflows/build.yaml | 50 | ||||
| -rw-r--r-- | .github/workflows/stale.yaml | 3 | ||||
| -rwxr-xr-x | build.sh | 22 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/skyF.glsl | 7 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 5 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolwlsky.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 106 | ||||
| -rw-r--r-- | indra/newview/llfloaterregioninfo.h | 7 | 
8 files changed, 85 insertions, 118 deletions
| diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index df49f5fa42..7e82e42862 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -42,8 +42,6 @@ jobs:        DEVELOPER_DIR: ${{ matrix.developer_dir }}        # Ensure that Linden viewer builds engage Bugsplat.        BUGSPLAT_DB: ${{ matrix.configuration != 'ReleaseOS' && 'SecondLife_Viewer_2018' || '' }} -      BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }} -      BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }}        build_coverity: false        build_log_dir: ${{ github.workspace }}/.logs        build_viewer: true @@ -262,23 +260,36 @@ jobs:              ${{ steps.build.outputs.physicstpv }}    sign-and-package-windows: +    env: +      AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }} +      AZURE_CERT_NAME:     ${{ secrets.AZURE_CERT_NAME }} +      AZURE_CLIENT_ID:     ${{ secrets.AZURE_CLIENT_ID }} +      AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} +      AZURE_TENANT_ID:     ${{ secrets.AZURE_TENANT_ID }}      needs: build      runs-on: windows      steps:        - name: Sign and package Windows viewer +        if: env.AZURE_KEY_VAULT_URI && env.AZURE_CERT_NAME && env.AZURE_CLIENT_ID && env.AZURE_CLIENT_SECRET && env.AZURE_TENANT_ID          uses: secondlife/viewer-build-util/sign-pkg-windows@v1          with: -          vault_uri: "${{ secrets.AZURE_KEY_VAULT_URI }}" -          cert_name: "${{ secrets.AZURE_CERT_NAME }}" -          client_id: "${{ secrets.AZURE_CLIENT_ID }}" -          client_secret: "${{ secrets.AZURE_CLIENT_SECRET }}" -          tenant_id: "${{ secrets.AZURE_TENANT_ID }}" +          vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}" +          cert_name: "${{ env.AZURE_CERT_NAME }}" +          client_id: "${{ env.AZURE_CLIENT_ID }}" +          client_secret: "${{ env.AZURE_CLIENT_SECRET }}" +          tenant_id: "${{ env.AZURE_TENANT_ID }}"    sign-and-package-mac: +    env: +      NOTARIZE_CREDS_MACOS:        ${{ secrets.NOTARIZE_CREDS_MACOS }} +      SIGNING_CERT_MACOS:          ${{ secrets.SIGNING_CERT_MACOS }} +      SIGNING_CERT_MACOS_IDENTITY: ${{ secrets.SIGNING_CERT_MACOS_IDENTITY }} +      SIGNING_CERT_MACOS_PASSWORD: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }}      needs: build      runs-on: macos-latest      steps:        - name: Unpack Mac notarization credentials +        if: env.NOTARIZE_CREDS_MACOS          id: note-creds          shell: bash          run: | @@ -286,7 +297,7 @@ jobs:            # USERNAME="..."            # PASSWORD="..."            # TEAM_ID="..." -          eval "${{ secrets.NOTARIZE_CREDS_MACOS }}" +          eval "${{ env.NOTARIZE_CREDS_MACOS }}"            echo "::add-mask::$USERNAME"            echo "::add-mask::$PASSWORD"            echo "::add-mask::$TEAM_ID" @@ -298,39 +309,48 @@ jobs:            [[ -n "$USERNAME" && -n "$PASSWORD" && -n "$TEAM_ID" ]]        - name: Sign and package Mac viewer +        if: env.SIGNING_CERT_MACOS && env.SIGNING_CERT_MACOS_IDENTITY && env.SIGNING_CERT_MACOS_PASSWORD && steps.note-creds.outputs.note_user && steps.note-creds.outputs.note_pass && steps.note-creds.outputs.note_team          uses: secondlife/viewer-build-util/sign-pkg-mac@v1          with:            channel: ${{ needs.build.outputs.viewer_channel }}            imagename: ${{ needs.build.outputs.imagename }} -          cert_base64: ${{ secrets.SIGNING_CERT_MACOS }} -          cert_name: ${{ secrets.SIGNING_CERT_MACOS_IDENTITY }} -          cert_pass: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }} +          cert_base64: ${{ env.SIGNING_CERT_MACOS }} +          cert_name: ${{ env.SIGNING_CERT_MACOS_IDENTITY }} +          cert_pass: ${{ env.SIGNING_CERT_MACOS_PASSWORD }}            note_user: ${{ steps.note-creds.outputs.note_user }}            note_pass: ${{ steps.note-creds.outputs.note_pass }}            note_team: ${{ steps.note-creds.outputs.note_team }}    post-windows-symbols: +    env: +      BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }} +      BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }}      needs: build      runs-on: ubuntu-latest      steps:        - name: Post Windows symbols +        if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS          uses: secondlife/viewer-build-util/post-bugsplat-windows@v1          with: -          username: ${{ secrets.BUGSPLAT_USER }} -          password: ${{ secrets.BUGSPLAT_PASS }} +          username: ${{ env.BUGSPLAT_USER }} +          password: ${{ env.BUGSPLAT_PASS }}            database: "SecondLife_Viewer_2018"            channel: ${{ needs.build.outputs.viewer_channel }}            version: ${{ needs.build.outputs.viewer_version }}    post-mac-symbols: +    env: +      BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }} +      BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }}      needs: build      runs-on: ubuntu-latest      steps:        - name: Post Mac symbols +        if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS          uses: secondlife/viewer-build-util/post-bugsplat-mac@v1          with: -          username: ${{ secrets.BUGSPLAT_USER }} -          password: ${{ secrets.BUGSPLAT_PASS }} +          username: ${{ env.BUGSPLAT_USER }} +          password: ${{ env.BUGSPLAT_PASS }}            database: "SecondLife_Viewer_2018"            channel: ${{ needs.build.outputs.viewer_channel }}            version: ${{ needs.build.outputs.viewer_version }} diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 35ac41420c..e44e223589 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -17,7 +17,8 @@ jobs:          with:            stale-pr-message: This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or it will be closed in 7 days            days-before-stale: 30 -          days-before-close: 7  +          days-before-close: 7 +          days-before-issue-close: -1            exempt-pr-labels: blocked,must,should,keep            stale-pr-label: stale        - name: Print outputs @@ -175,28 +175,6 @@ pre_build()          VIEWER_SYMBOL_FILE="$(native_path "$abs_build_dir/newview/$variant/secondlife-symbols-$symplat-${AUTOBUILD_ADDRSIZE}.tar.bz2")"      fi -    # expect these variables to be set in the environment from GitHub secrets -    if [[ -n "$BUGSPLAT_DB" ]] -    then -        # don't spew credentials into build log -        set +x -        if [[ -z "$BUGSPLAT_USER" || -z "$BUGSPLAT_PASS" ]] -        then -            # older mechanism involving build-secrets repo - -            # if build_secrets_checkout isn't set, report its name -            bugsplat_sh="${build_secrets_checkout:-\$build_secrets_checkout}/bugsplat/bugsplat.sh" -            if [ -r "$bugsplat_sh" ] -            then # show that we're doing this, just not the contents -                echo source "$bugsplat_sh" -                source "$bugsplat_sh" -            else -                fatal "BUGSPLAT_USER or BUGSPLAT_PASS missing, and no $bugsplat_sh" -            fi -        fi -        set -x -        export BUGSPLAT_USER BUGSPLAT_PASS -    fi -      # honor autobuild_configure_parameters same as sling-buildscripts      eval_autobuild_configure_parameters=$(eval $(echo echo $autobuild_configure_parameters)) diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl index cc5280d929..596e9321e8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl @@ -86,7 +86,9 @@ void main()      pos = env_mat * pos;      vec2 texCoord = vec2(atan(pos.z, pos.x) + PI, acos(pos.y)) / vec2(2.0 * PI, PI);      vec3 color = textureLod(environmentMap, texCoord.xy, 0).rgb * sky_hdr_scale; -    color = min(color, vec3(8192*8192*16)); +    color = min(color, vec3(8192*8192*16)); // stupidly large value arrived at by binary search -- avoids framebuffer corruption from some HDRIs + +    frag_data[2] = vec4(0.0,0.0,0.0,GBUFFER_FLAG_HAS_HDRI);  #else      // Potential Fill-rate optimization.  Add cloud calculation  @@ -104,12 +106,11 @@ void main()      color.rgb *= 2.;      color.rgb = clamp(color.rgb, vec3(0), vec3(5)); +    frag_data[2] = vec4(0.0,0.0,0.0,GBUFFER_FLAG_SKIP_ATMOS);  #endif      frag_data[0] = vec4(0);      frag_data[1] = vec4(0); -    frag_data[2] = vec4(0.0,0.0,0.0,GBUFFER_FLAG_SKIP_ATMOS);      frag_data[3] = vec4(color.rgb, 1.0); -  } diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index 5cc7ea698a..9b9739ba22 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -191,11 +191,12 @@ void main()      }      else if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_HDRI))      { +        // actual HDRI sky, just copy color value          color = texture(emissiveRect, tc).rgb;      } -    else if (!GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS)) +    else if (GET_GBUFFER_FLAG(GBUFFER_FLAG_SKIP_ATMOS))      { -        //should only be true of WL sky, just port over base color value +        //should only be true of WL sky, port over base color value and scale for fake HDR          color = texture(emissiveRect, tc).rgb;          color = srgb_to_linear(color);          color *= sky_hdr_scale; diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index a9cc138549..303916110c 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -470,8 +470,6 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass)      const F32 camHeightLocal = LLEnvironment::instance().getCamHeight(); -	gGL.setColorMask(true, false); -      LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin();      if (gPipeline.canUseWindLightShaders()) @@ -488,7 +486,6 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass)              renderSkyCloudsDeferred(origin, camHeightLocal, cloud_shader);          }      } -    gGL.setColorMask(true, true);  } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 6e8e37621e..454842999d 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -1314,10 +1314,9 @@ void LLPanelRegionDebugInfo::onClickDebugConsole(void* data)  BOOL LLPanelRegionTerrainInfo::validateTextureSizes()  { -	LLCheckBoxCtrl* material_type_ctrl = getChild<LLCheckBoxCtrl>("terrain_material_type"); -    if (material_type_ctrl) +    if (mMaterialTypeCtrl)      { -        const LLTerrainMaterials::Type material_type = material_type_from_ctrl(material_type_ctrl); +        const LLTerrainMaterials::Type material_type = material_type_from_ctrl(mMaterialTypeCtrl);          const bool is_material_selected = material_type == LLTerrainMaterials::Type::PBR;          if (is_material_selected) { return TRUE; }      } @@ -1325,9 +1324,7 @@ BOOL LLPanelRegionTerrainInfo::validateTextureSizes()      static const S32 MAX_TERRAIN_TEXTURE_SIZE = 1024;  	for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)  	{ -		std::string buffer; -		buffer = llformat("texture_detail_%d", i); -		LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>(buffer); +        LLTextureCtrl* texture_ctrl = mTextureDetailCtrl[i];  		if (!texture_ctrl) continue;  		LLUUID image_asset_id = texture_ctrl->getImageAssetID(); @@ -1410,7 +1407,8 @@ BOOL LLPanelRegionTerrainInfo::postBuild()  	initCtrl("terrain_raise_spin");  	initCtrl("terrain_lower_spin"); -    getChild<LLUICtrl>("terrain_material_type")->setCommitCallback(boost::bind(&LLPanelRegionTerrainInfo::onSelectMaterialType, this)); +    mMaterialTypeCtrl = findChild<LLCheckBoxCtrl>("terrain_material_type"); +    if (mMaterialTypeCtrl) { mMaterialTypeCtrl->setCommitCallback(boost::bind(&LLPanelRegionTerrainInfo::onSelectMaterialType, this)); }  	std::string buffer; @@ -1418,11 +1416,13 @@ BOOL LLPanelRegionTerrainInfo::postBuild()  	{  		buffer = llformat("texture_detail_%d", i);  		initCtrl(buffer); +        mTextureDetailCtrl[i] = findChild<LLTextureCtrl>(buffer);  	}  	for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)  	{  		buffer = llformat("material_detail_%d", i);  		initCtrl(buffer); +        mMaterialDetailCtrl[i] = findChild<LLTextureCtrl>(buffer);  	}  	for(S32 i = 0; i < CORNER_COUNT; ++i) @@ -1440,11 +1440,6 @@ BOOL LLPanelRegionTerrainInfo::postBuild()  	mAskedTextureHeights = false;  	mConfirmedTextureHeights = false; -    if (!mRegionChangedSlot.connected()) -    { -        mRegionChangedSlot = gAgent.addRegionChangedCallback(boost::bind(&LLPanelRegionTerrainInfo::onRegionChanged,this)); -    } -  	return LLPanelRegionInfo::postBuild();  } @@ -1456,19 +1451,15 @@ void LLPanelRegionTerrainInfo::onSelectMaterialType()  void LLPanelRegionTerrainInfo::updateForMaterialType()  { -    LLCheckBoxCtrl* material_type_ctrl = getChild<LLCheckBoxCtrl>("terrain_material_type"); -    if (!material_type_ctrl) { return; } -    const LLTerrainMaterials::Type material_type = material_type_from_ctrl(material_type_ctrl); +    if (!mMaterialTypeCtrl) { return; } +    const LLTerrainMaterials::Type material_type = material_type_from_ctrl(mMaterialTypeCtrl);      const bool show_texture_controls = material_type == LLTerrainMaterials::Type::TEXTURE;      const bool show_material_controls = material_type == LLTerrainMaterials::Type::PBR;      // Toggle visibility of correct swatches -    std::string buffer; -    LLTextureCtrl* texture_ctrl;      for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)      { -        buffer = llformat("texture_detail_%d", i); -        texture_ctrl = getChild<LLTextureCtrl>(buffer); +        LLTextureCtrl* texture_ctrl = mTextureDetailCtrl[i];          if (texture_ctrl)          {              texture_ctrl->setVisible(show_texture_controls); @@ -1476,42 +1467,20 @@ void LLPanelRegionTerrainInfo::updateForMaterialType()      }      for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)      { -        buffer = llformat("material_detail_%d", i); -        texture_ctrl = getChild<LLTextureCtrl>(buffer); -        if (texture_ctrl) +        LLTextureCtrl* material_ctrl = mMaterialDetailCtrl[i]; +        if (material_ctrl)          { -            texture_ctrl->setVisible(show_material_controls); +            material_ctrl->setVisible(show_material_controls);          }      }      // Toggle visibility of labels -    LLUICtrl* texture_label = getChild<LLUICtrl>("detail_texture_text"); +    LLUICtrl* texture_label = findChild<LLUICtrl>("detail_texture_text");  	if (texture_label) { texture_label->setVisible(show_texture_controls); } -    LLUICtrl* material_label = getChild<LLUICtrl>("detail_material_text"); +    LLUICtrl* material_label = findChild<LLUICtrl>("detail_material_text");  	if (material_label) { material_label->setVisible(show_material_controls); }  } -void LLPanelRegionTerrainInfo::onRegionChanged() -{ -    LLViewerRegion *region = gAgent.getRegion(); -    if (!region) { return; } - -    if (region->simulatorFeaturesReceived()) -    { -        onSimulatorFeaturesReceived(region->getRegionID(), region); -    } -    else -    { -        // See "RenderTerrainPBREnabled" in LLViewerRegion::setSimulatorFeatures -        region->setSimulatorFeaturesReceivedCallback(boost::bind(&LLPanelRegionTerrainInfo::onSimulatorFeaturesReceived,this,_1, _2)); -    } -} - -void LLPanelRegionTerrainInfo::onSimulatorFeaturesReceived(const LLUUID& region_id, LLViewerRegion* regionp) -{ -    refresh(); -} -  // virtual  bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)  { @@ -1558,22 +1527,21 @@ bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)              reset_material_swatches = !set_material_swatches;          } -		LLCheckBoxCtrl* material_type_ctrl = getChild<LLCheckBoxCtrl>("terrain_material_type"); -		if (material_type_ctrl) { material_type_to_ctrl(material_type_ctrl, material_type); } -		updateForMaterialType(); -        material_type_ctrl->setVisible(feature_pbr_terrain_enabled); +        if (mMaterialTypeCtrl) +        { +            material_type_to_ctrl(mMaterialTypeCtrl, material_type); +            updateForMaterialType(); +            mMaterialTypeCtrl->setVisible(feature_pbr_terrain_enabled); +        } -		LLTextureCtrl* asset_ctrl; -		std::string buffer;          if (set_texture_swatches)          {              for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)              { -                buffer = llformat("texture_detail_%d", i); -                asset_ctrl = getChild<LLTextureCtrl>(buffer); +                LLTextureCtrl* asset_ctrl = mTextureDetailCtrl[i];                  if(asset_ctrl)                  { -                    LL_DEBUGS() << "Detail Texture " << i << ": " +                    LL_DEBUGS("Terrain", "Texture") << "Detail Texture " << i << ": "                               << compp->getDetailAssetID(i) << LL_ENDL;                      LLUUID tmp_id(compp->getDetailAssetID(i));                      asset_ctrl->setImageAssetID(tmp_id); @@ -1584,11 +1552,10 @@ bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)          {              for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)              { -                buffer = llformat("material_detail_%d", i); -                asset_ctrl = getChild<LLTextureCtrl>(buffer); +                LLTextureCtrl* asset_ctrl = mMaterialDetailCtrl[i];                  if(asset_ctrl)                  { -                    LL_DEBUGS() << "Detail Material " << i << ": " +                    LL_DEBUGS("Terrain", "Material") << "Detail Material " << i << ": "                               << compp->getDetailAssetID(i) << LL_ENDL;                      LLUUID tmp_id(compp->getDetailAssetID(i));                      asset_ctrl->setImageAssetID(tmp_id); @@ -1599,8 +1566,9 @@ bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)          {              for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)              { -                buffer = llformat("texture_detail_%d", i); -                asset_ctrl = getChild<LLTextureCtrl>(buffer); +                LL_DEBUGS("Terrain", "Texture") << "Reset Texture swatch " << i +                         << LL_ENDL; +                LLTextureCtrl* asset_ctrl = mTextureDetailCtrl[i];                  if(asset_ctrl)                  {                      asset_ctrl->setImageAssetID(mLastSetTextures[i]); @@ -1611,8 +1579,9 @@ bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)          {              for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)              { -                buffer = llformat("material_detail_%d", i); -                asset_ctrl = getChild<LLTextureCtrl>(buffer); +                LL_DEBUGS("Terrain", "Material") << "Reset Material swatch " << i +                         << LL_ENDL; +                LLTextureCtrl* asset_ctrl = mMaterialDetailCtrl[i];                  if(asset_ctrl)                  {                      asset_ctrl->setImageAssetID(mLastSetMaterials[i]); @@ -1620,6 +1589,7 @@ bool LLPanelRegionTerrainInfo::refreshFromRegion(LLViewerRegion* region)              }          } +		std::string buffer;  		for(S32 i = 0; i < CORNER_COUNT; ++i)      	{  			buffer = llformat("height_start_spin_%d", i); @@ -1686,25 +1656,23 @@ BOOL LLPanelRegionTerrainInfo::sendUpdate()  		}  	} -	LLTextureCtrl* asset_ctrl;  	std::string id_str;  	LLMessageSystem* msg = gMessageSystem;      // Send either material IDs instead of texture IDs depending on -    // terrain_material_type - they both occupy the same slot. -	LLCheckBoxCtrl* material_type_ctrl = getChild<LLCheckBoxCtrl>("terrain_material_type"); -    const LLTerrainMaterials::Type material_type = material_type_ctrl ? material_type_from_ctrl(material_type_ctrl) : LLTerrainMaterials::Type::TEXTURE; +    // material_type - they both occupy the same slot. +    const LLTerrainMaterials::Type material_type = mMaterialTypeCtrl ? material_type_from_ctrl(mMaterialTypeCtrl) : LLTerrainMaterials::Type::TEXTURE;      for(S32 i = 0; i < LLTerrainMaterials::ASSET_COUNT; ++i)      { +        LLTextureCtrl* asset_ctrl;          if (material_type == LLTerrainMaterials::Type::PBR)          { -            buffer = llformat("material_detail_%d", i); +            asset_ctrl = mMaterialDetailCtrl[i];          }          else          { -            buffer = llformat("texture_detail_%d", i); +            asset_ctrl = mTextureDetailCtrl[i];          } -        asset_ctrl = getChild<LLTextureCtrl>(buffer);          if (!asset_ctrl) { continue; } diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 315c6aca0f..99774e5db3 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -56,6 +56,7 @@ class LLRadioGroup;  class LLSliderCtrl;  class LLSpinCtrl;  class LLTextBox; +class LLTextureCtrl;  class LLPanelRegionGeneralInfo;  class LLPanelRegionDebugInfo; @@ -249,8 +250,6 @@ public:  	BOOL postBuild() override; -    void onRegionChanged(); -    void onSimulatorFeaturesReceived(const LLUUID& region_id, LLViewerRegion* regionp);      bool refreshFromRegion(LLViewerRegion* region) override;                // refresh local settings from region update from simulator  	void setEnvControls(bool available);									// Whether environment settings are available for this region @@ -274,7 +273,9 @@ protected:  private:  	bool mConfirmedTextureHeights;  	bool mAskedTextureHeights; -    boost::signals2::connection mRegionChangedSlot; +    LLCheckBoxCtrl* mMaterialTypeCtrl = nullptr; +    LLTextureCtrl* mTextureDetailCtrl[LLTerrainMaterials::ASSET_COUNT]; +    LLTextureCtrl* mMaterialDetailCtrl[LLTerrainMaterials::ASSET_COUNT];      LLUUID mLastSetTextures[LLTerrainMaterials::ASSET_COUNT];      LLUUID mLastSetMaterials[LLTerrainMaterials::ASSET_COUNT];  }; | 
