Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
969ed53
Merge branch 'release/2025.03' into release/2025.04
akleshchev Mar 18, 2025
53c3176
#3661 Clamp water blur multiplier
akleshchev Mar 18, 2025
ed6f939
#3771 Fix unresolved HOSTIP parameter
akleshchev Mar 19, 2025
28638b3
#3762 Remove incorrect resolution specification
akleshchev Mar 19, 2025
5608c39
viewer#2270 The "More" button does not close the "Choose emoji" floater
akleshchev Oct 8, 2024
bf0767b
viewer#2894 Make PBR scale like Blinn Phong does
akleshchev Oct 28, 2024
ecfe76a
vp#404 Improve URL filter
akleshchev Mar 21, 2025
b1822e3
#3784 Increase texture scale boundaries
akleshchev Mar 27, 2025
8d5dab9
#3809 Fix J2C Upload
akleshchev Mar 28, 2025
fcc8ffd
#3809 Partial revert of "Fix J2C Upload"
akleshchev Mar 31, 2025
515c1f1
#3044 Add option to hide L$ balance for Snapshots with Interface showing
maxim-productengine Mar 31, 2025
c609a45
secondlife/viewer#912 BugSplat Crash 1412267 (missed refactoring for …
LLGuru Apr 17, 2024
497c309
#912 Refactor FindModel()
marchcat Apr 1, 2025
945b965
Add file pattern and recursive directory processing fix_xml_indentati…
marchcat Apr 1, 2025
ccdcbfe
Merge branch 'release/2025.03' into release/2025.04
Geenz Apr 1, 2025
3c9bb9b
Merge branch 'release/2025.04' of https://github.com/secondlife/viewe…
Geenz Apr 1, 2025
3a03c5f
#3846 Crash at updateGLTFMaterials
akleshchev Apr 1, 2025
8c20662
#3712 CMakeFindFrameworks deprecation
akleshchev Apr 1, 2025
939817d
#3849 Crash at LLSelectMgr::updatePointAt
akleshchev Apr 1, 2025
d77954e
#3597 Improve error handling at LLGLSLShader::disableTexture()
marchcat Apr 1, 2025
db2c45b
#3857 pick new and updated LEAP functions from develop branch
maxim-productengine Apr 2, 2025
498b244
# 3826 Physics Material Type does not update for linked objects
akleshchev Apr 2, 2025
46fca6f
#3857 second batch of new or updated LEAP functions
maxim-productengine Apr 3, 2025
dead3c1
#3857 teleport finished/failed event
maxim-productengine Apr 3, 2025
6ebd8a9
Merge pull request #3866 from secondlife/maxim/2025.04-3857
maxim-productengine Apr 3, 2025
f2e7e30
#3868 Crash in updateHoveredState
akleshchev Apr 3, 2025
f795ad6
#3870 Crash at LLVOAvatarSelf::getJoint()
akleshchev Apr 3, 2025
68f20d5
#2702 Increase hover height's limit
akleshchev Apr 3, 2025
2b475ad
#3878 Crash at LLPipeline::unlinkDrawable
akleshchev Apr 4, 2025
9aea5bb
#3876 sendLogoutRequest logging
akleshchev Apr 4, 2025
2da46c3
#3575 Clean up obsolete VRAM detectin logic
akleshchev Apr 1, 2025
0c056c7
#3575 Adjust VRAM budget test a bit
akleshchev Apr 1, 2025
cc54e20
#3575 Shrink draw distance when VRAM is very low
akleshchev Apr 1, 2025
f6a2dbe
#3627 std::bad_alloc when loading a model
akleshchev Apr 6, 2025
a7f3785
#3873 Return back AudioLevelWind
akleshchev Apr 7, 2025
b95b20a
#3757 Allow subfolders in "My Outfits"
akleshchev Apr 8, 2025
1bb8fb2
#3757 Menu for subfodlers in outfits
akleshchev Apr 8, 2025
1c90421
#3596 Faster mesh thread shutdown
akleshchev Apr 9, 2025
2371994
#3757 Menu for subfodlers in outfits p2
akleshchev Apr 9, 2025
7dce74f
#3757 Move for subfodlers
akleshchev Apr 10, 2025
e43baa7
#1754 Restore land owners overlay
akleshchev Apr 11, 2025
7d36e71
#3757 Disable ability to create folders in individual outfits
akleshchev Apr 14, 2025
206f8d9
#3863 Ensure cloud texture selection updates the sky
akleshchev Apr 15, 2025
a99c1e3
#3887 Fix clouds not updating
akleshchev Apr 15, 2025
67921fa
#3922 out_of_range crash in preeditor
akleshchev Apr 16, 2025
2e4d2dd
#3627 Crash on texture cache init
akleshchev Apr 16, 2025
f6219fe
#3696 Crash at LLFontFreetype::addGlyphFromFont
akleshchev Apr 18, 2025
3d5f154
Fix llhttpdate test on windows and macos (#3909)
marchcat Apr 14, 2025
90c7684
#3758 add support for highlighted segments
maxim-productengine Apr 10, 2025
3e46d70
#3758 initial chat mention support
maxim-productengine Apr 18, 2025
9a333e6
Merge develop into release/2025.04
akleshchev Apr 18, 2025
44bbdc5
#3488 Reduce locking
akleshchev Apr 21, 2025
87b6428
#3870 Added joint initialization for LLVOAvatarSelf
akleshchev Apr 21, 2025
b30283e
#3960 Fix expensive mesh thread score calculations
akleshchev Apr 22, 2025
6239647
#3962 allow Tab work the same way as picking name with Enter
maxim-productengine Apr 22, 2025
da2234a
#3952 insert @ name at the cursor position
maxim-productengine Apr 23, 2025
205b228
#3920 LLPanel::getString crash
akleshchev Apr 23, 2025
b1b0cdb
#3784 Increase gltf scale boundaries
akleshchev Apr 23, 2025
17561e2
#3758 show mention name in bubble chat
maxim-productengine Apr 23, 2025
89f8171
#3975 Crash at LLSpatialGroup::dirtyGeom
akleshchev Apr 24, 2025
d9468ec
#3758 disable editing of mention segment
maxim-productengine Apr 25, 2025
a7759f3
Merge branch 'release/2025.04' into 2025.04-chat-mention
maxim-productengine Apr 25, 2025
f450b42
post merge fix
maxim-productengine Apr 25, 2025
1eb34b4
#3758 clean up: move EUnderlineLink
maxim-productengine Apr 25, 2025
25c11f0
Merge pull request #3981 from secondlife/brad/version-increments
brad-linden Apr 25, 2025
17e9746
Merge pull request #3943 from secondlife/maxim/2025.04-chat-mention
maxim-productengine Apr 25, 2025
8665cd3
#3986 Packet ring crash in memcpy
akleshchev Apr 25, 2025
69a81d6
#3982 Crash at getChild<LLScrollListCtrl>
akleshchev Apr 25, 2025
04c0bc1
#3978 Fix offset in Land Owner highlights
akleshchev Apr 28, 2025
1f3ba13
Attempt to fix qatest.yaml CodeQL issues (#3987)
brad-linden Apr 28, 2025
7bd18e2
viewerp#300 Fix inconsistency with copying textures vs pbr
akleshchev Apr 25, 2025
fdda524
#3791 check against alpha blending as a part of determining exclude w…
maxim-productengine Apr 28, 2025
d9e55c4
#3997 Crash in a gltf asset enabled region
akleshchev Apr 29, 2025
98078b9
#3748 Don't allow dropping material onto water exclusion surface
maxim-productengine Apr 30, 2025
a0cbf22
#4001 Bump cache version
akleshchev May 1, 2025
9ce012a
#4015 Restore formatting for strings.xml and teleport_strings.xml tra…
marchcat May 3, 2025
929c9b2
#4009 Add color settings for chat mentions to Preferences
maxim-productengine May 5, 2025
fe0a4f4
#4027 Crash at adjustTexturesByScale
akleshchev May 5, 2025
9180a11
#4028 Crash at onEmojiPickerClosed
maxim-productengine May 5, 2025
b084d84
#4008 Fix media scale adjustments with pbr applied
akleshchev May 6, 2025
ed70509
Make builds support Python 3.13
akleshchev May 7, 2025
50108bf
#4011 Add conversation list highlight for chat mention
maxim-productengine May 7, 2025
3713472
#3757 Smarter subfolders dragndrop
akleshchev May 7, 2025
377d1b3
#4010 Add audio ping for chat mentions
maxim-productengine May 8, 2025
9668d2f
#3758 do not reopen avatar picker floater
maxim-productengine May 9, 2025
edb0032
#3542 Microphone doesn't switch after plugging in an audio device
akleshchev May 8, 2025
872fd15
#4056 Crash at childGetSelectionInterface
akleshchev May 10, 2025
fb34971
Revert "#4008 Fix media scale adjustments with pbr applied"
akleshchev May 12, 2025
733d65d
#4010 play only audio mention ping for new conversation
maxim-productengine May 12, 2025
e466414
#4055 Fix subfolder dragging
akleshchev May 12, 2025
6225eb8
#4060 Fix subfolders use through ctrl-v
akleshchev May 12, 2025
6b0cebe
#2279 fix for View Angle setting
maxim-productengine May 13, 2025
c94e00a
#4069 Fix crash at handleToolTip
akleshchev May 13, 2025
32cd3a6
#4071 Permit pasting links into outfits
akleshchev May 13, 2025
888d4ae
#4072 Fix Appearance floater not updating
akleshchev May 13, 2025
0555755
#4081 Meshes missing after teleport
akleshchev May 14, 2025
b5db42e
#4088 Fix Outfit folders changing to normal folders
akleshchev May 15, 2025
d5313e7
#4091 fix speaker icon is showing all users speaking when anyone is t…
maxim-productengine May 16, 2025
b2b021f
adjust which webrtc tracks are enabled when the avatar crosses a regi…
sethalves May 9, 2025
28edf9e
reuse region variable instead of multiple calls to gAgent.getRegion()
sethalves May 9, 2025
5ee83e7
Update macos icons (#4042, #4112)
marchcat May 20, 2025
0296bd6
#p430 don't show MFA dialog twice
maxim-productengine May 20, 2025
3fa7674
fix test for lllogininstance.cpp
maxim-productengine May 21, 2025
a31b7ae
Merge pull request #4126 from secondlife/maxim/2025.04-p430
maxim-productengine May 21, 2025
25e6834
Fix null outfit gallery observer pointer
Geenz May 22, 2025
5047a0b
Merge pull request #4100 from secondlife/viewer-1865-for-2025.04
sethalvesLL May 22, 2025
b62e7f9
Remove mOutfitsObserver, use mCategoriesObserver from our base.
Geenz May 22, 2025
5b12428
#4132 fix name mentions sometimes not being highlighted
maxim-productengine May 22, 2025
fe55c78
Merge pull request #4135 from secondlife/geenz/mac-outfit-gallery-cra…
Geenz May 22, 2025
de8275b
Merge pull request #3861 from secondlife/release/2025.04
Geenz May 28, 2025
fe4f85e
Merge remote-tracking branch 'origin/main' into geenz/2025.04-to-develop
Geenz May 28, 2025
39625d1
Revert back to currently shipping release.
Geenz May 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
qatest.yaml -text eol=crlf
2 changes: 1 addition & 1 deletion .github/workflows/qatest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -572,4 +572,4 @@ jobs:
# uses: actions/upload-artifact@v4
# with:
# name: test-results-${{ matrix.runner }}
# path: ${{ matrix.install-path }}/regressionTest/test_results.html
# path: ${{ matrix.install-path }}/regressionTest/test_results.html
1 change: 0 additions & 1 deletion indra/cmake/Linking.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ elseif (WINDOWS)
legacy_stdio_definitions
)
else()
include(CMakeFindFrameworks)
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_library(CARBON_LIBRARY Carbon)
find_library(COCOA_LIBRARY Cocoa)
Expand Down
2 changes: 1 addition & 1 deletion indra/cmake/Python.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ elseif (WINDOWS)
foreach(hive HKEY_CURRENT_USER HKEY_LOCAL_MACHINE)
# prefer more recent Python versions to older ones, if multiple versions
# are installed
foreach(pyver 3.12 3.11 3.10 3.9 3.8 3.7)
foreach(pyver 3.13 3.12 3.11 3.10 3.9 3.8 3.7)
list(APPEND regpaths "[${hive}\\SOFTWARE\\Python\\PythonCore\\${pyver}\\InstallPath]")
endforeach()
endforeach()
Expand Down
55 changes: 55 additions & 0 deletions indra/llcommon/llsdutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,61 @@ LLSD shallow(LLSD value, LLSD filter=LLSD()) { return llsd_shallow(value, filter

} // namespace llsd

/*****************************************************************************
* toArray(), toMap()
*****************************************************************************/
namespace llsd
{

// For some T convertible to LLSD, given std::vector<T> myVec,
// toArray(myVec) returns an LLSD array whose entries correspond to the
// items in myVec.
// For some U convertible to LLSD, given function U xform(const T&),
// toArray(myVec, xform) returns an LLSD array whose every entry is
// xform(item) of the corresponding item in myVec.
// toArray() actually works with any container<C> usable with range
// 'for', not just std::vector.
// (Once we get C++20 we can use std::identity instead of this default lambda.)
template<typename C, typename FUNC>
LLSD toArray(const C& container, FUNC&& func = [](const auto& arg) { return arg; })
{
LLSD array;
for (const auto& item : container)
{
array.append(std::forward<FUNC>(func)(item));
}
return array;
}

// For some T convertible to LLSD, given std::map<std::string, T> myMap,
// toMap(myMap) returns an LLSD map whose entries correspond to the
// (key, value) pairs in myMap.
// For some U convertible to LLSD, given function
// std::pair<std::string, U> xform(const std::pair<std::string, T>&),
// toMap(myMap, xform) returns an LLSD map whose every entry is
// xform(pair) of the corresponding (key, value) pair in myMap.
// toMap() actually works with any container usable with range 'for', not
// just std::map. It need not even be an associative container, as long as
// you pass an xform function that returns std::pair<std::string, U>.
// (Once we get C++20 we can use std::identity instead of this default lambda.)
template<typename C, typename FUNC>
LLSD toMap(const C& container, FUNC&& func = [](const auto& arg) { return arg; })
{
LLSD map;
for (const auto& pair : container)
{
const auto& [key, value] = std::forward<FUNC>(func)(pair);
map[key] = value;
}
return map;
}

} // namespace llsd

/*****************************************************************************
* boost::hash<LLSD>
*****************************************************************************/

// Specialization for generating a hash value from an LLSD block.
namespace boost
{
Expand Down
15 changes: 0 additions & 15 deletions indra/llcommon/lluuid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,14 +174,6 @@ void LLUUID::toString(std::string& out) const
(U8)(mData[15]));
}

// *TODO: deprecate
void LLUUID::toString(char* out) const
{
std::string buffer;
toString(buffer);
strcpy(out, buffer.c_str()); /* Flawfinder: ignore */
}

void LLUUID::toCompressedString(std::string& out) const
{
char bytes[UUID_BYTES + 1];
Expand All @@ -190,13 +182,6 @@ void LLUUID::toCompressedString(std::string& out) const
out.assign(bytes, UUID_BYTES);
}

// *TODO: deprecate
void LLUUID::toCompressedString(char* out) const
{
memcpy(out, mData, UUID_BYTES); /* Flawfinder: ignore */
out[UUID_BYTES] = '\0';
}

std::string LLUUID::getString() const
{
return asString();
Expand Down
2 changes: 0 additions & 2 deletions indra/llcommon/lluuid.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,7 @@ class LL_COMMON_API LLUUID
friend LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLUUID &uuid);
friend LL_COMMON_API std::istream& operator>>(std::istream& s, LLUUID &uuid);

void toString(char *out) const; // Does not allocate memory, needs 36 characters (including \0)
void toString(std::string& out) const;
void toCompressedString(char *out) const; // Does not allocate memory, needs 17 characters (including \0)
void toCompressedString(std::string& out) const;

std::string asString() const;
Expand Down
2 changes: 1 addition & 1 deletion indra/llinventory/llsettingsbase.h
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ class LLSettingsBase :

private:
bool mLLSDDirty;
bool mDirty;
bool mDirty; // gates updateSettings
bool mReplaced; // super dirty!

static LLSD combineSDMaps(const LLSD &first, const LLSD &other);
Expand Down
4 changes: 4 additions & 0 deletions indra/llinventory/llsettingssky.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1932,6 +1932,7 @@ LLUUID LLSettingsSky::getCloudNoiseTextureId() const
void LLSettingsSky::setCloudNoiseTextureId(const LLUUID &id)
{
mCloudTextureId = id;
setDirtyFlag(true);
setLLSDDirty();
}

Expand Down Expand Up @@ -1976,6 +1977,7 @@ LLVector2 LLSettingsSky::getCloudScrollRate() const
void LLSettingsSky::setCloudScrollRate(const LLVector2 &val)
{
mScrollRate = val;
setDirtyFlag(true);
setLLSDDirty();
}

Expand Down Expand Up @@ -2134,6 +2136,7 @@ LLUUID LLSettingsSky::getMoonTextureId() const
void LLSettingsSky::setMoonTextureId(LLUUID id)
{
mMoonTextureId = id;
setDirtyFlag(true);
setLLSDDirty();
}

Expand Down Expand Up @@ -2218,6 +2221,7 @@ LLUUID LLSettingsSky::getSunTextureId() const
void LLSettingsSky::setSunTextureId(LLUUID id)
{
mSunTextureId = id;
setDirtyFlag(true);
setLLSDDirty();
}

Expand Down
10 changes: 8 additions & 2 deletions indra/llmessage/llpacketring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,14 @@ S32 LLPacketRing::receiveOrDropBufferedPacket(char *datap, bool drop)

if (!drop)
{
assert(packet_size > 0);
memcpy(datap, packet->getData(), packet_size);
if (packet_size > 0)
{
memcpy(datap, packet->getData(), packet_size);
}
else
{
assert(false);
}
}
else
{
Expand Down
1 change: 1 addition & 0 deletions indra/llmessage/llproxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,7 @@ static apr_status_t tcp_blocking_handshake(LLSocket::ptr_t handle, char * dataou
rv = apr_socket_recv(apr_socket, datain, &maxinlen);
if (rv != APR_SUCCESS)
{
// if rv == 70060 it's WSAETIMEDOUT
char buf[MAX_STRING];
LL_WARNS("Proxy") << "Error receiving data from proxy control channel, status: " << rv << " " << apr_strerror(rv, buf, MAX_STRING) << LL_ENDL;
ll_apr_warn_status(rv);
Expand Down
27 changes: 23 additions & 4 deletions indra/llrender/llfontfreetype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,14 @@ LLFontGlyphInfo* LLFontFreetype::addGlyphFromFont(const LLFontFreetype *fontp, l

LLImageGL *image_gl = mFontBitmapCachep->getImageGL(bitmap_glyph_type, bitmap_num);
LLImageRaw *image_raw = mFontBitmapCachep->getImageRaw(bitmap_glyph_type, bitmap_num);
image_gl->setSubImage(image_raw, 0, 0, image_gl->getWidth(), image_gl->getHeight());
if (image_gl && image_raw)
{
image_gl->setSubImage(image_raw, 0, 0, image_gl->getWidth(), image_gl->getHeight());
}
else
{
llassert(false); //images were just inserted by nextOpenPos, they shouldn't be missing
}

return gi;
}
Expand Down Expand Up @@ -838,7 +845,12 @@ bool LLFontFreetype::setSubImageBGRA(U32 x, U32 y, U32 bitmap_num, U16 width, U1
{
LLImageRaw* image_raw = mFontBitmapCachep->getImageRaw(EFontGlyphType::Color, bitmap_num);
llassert(!mIsFallback);
llassert(image_raw && (image_raw->getComponents() == 4));
if (!image_raw)
{
llassert(false);
return false;
}
llassert(image_raw->getComponents() == 4);

// NOTE: inspired by LLImageRaw::setSubImage()
U32* image_data = (U32*)image_raw->getData();
Expand Down Expand Up @@ -866,10 +878,17 @@ bool LLFontFreetype::setSubImageBGRA(U32 x, U32 y, U32 bitmap_num, U16 width, U1
void LLFontFreetype::setSubImageLuminanceAlpha(U32 x, U32 y, U32 bitmap_num, U32 width, U32 height, U8 *data, S32 stride) const
{
LLImageRaw *image_raw = mFontBitmapCachep->getImageRaw(EFontGlyphType::Grayscale, bitmap_num);
LLImageDataLock lock(image_raw);

llassert(!mIsFallback);
llassert(image_raw && (image_raw->getComponents() == 2));
if (!image_raw)
{
llassert(false);
return;
}

LLImageDataLock lock(image_raw);

llassert(image_raw->getComponents() == 2);

U8 *target = image_raw->getData();
llassert(target);
Expand Down
19 changes: 0 additions & 19 deletions indra/llrender/llgl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1228,28 +1228,9 @@ bool LLGLManager::initGL()
}
#endif

#if LL_WINDOWS
if (mVRAM < 256)
{
// Something likely went wrong using the above extensions
// try WMI first and fall back to old method (from dxdiag) if all else fails
// Function will check all GPUs WMI knows of and will pick up the one with most
// memory. We need to check all GPUs because system can switch active GPU to
// weaker one, to preserve power when not under load.
U32 mem = LLDXHardware::getMBVideoMemoryViaWMI();
if (mem != 0)
{
mVRAM = mem;
LL_WARNS("RenderInit") << "VRAM Detected (WMI):" << mVRAM<< LL_ENDL;
}
}
#endif

if (mVRAM < 256 && old_vram > 0)
{
// fall back to old method
// Note: on Windows value will be from LLDXHardware.
// Either received via dxdiag or via WMI by id from dxdiag.
mVRAM = old_vram;
}

Expand Down
33 changes: 25 additions & 8 deletions indra/llrender/llglslshader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1076,16 +1076,16 @@ void LLGLSLShader::bind()

void LLGLSLShader::bind(U8 variant)
{
llassert(mGLTFVariants.size() == LLGLSLShader::NUM_GLTF_VARIANTS);
llassert(variant < LLGLSLShader::NUM_GLTF_VARIANTS);
llassert_always(mGLTFVariants.size() == LLGLSLShader::NUM_GLTF_VARIANTS);
llassert_always(variant < LLGLSLShader::NUM_GLTF_VARIANTS);
mGLTFVariants[variant].bind();
}

void LLGLSLShader::bind(bool rigged)
{
if (rigged)
{
llassert(mRiggedVariant);
llassert_always(mRiggedVariant);
mRiggedVariant->bind();
}
else
Expand Down Expand Up @@ -1247,23 +1247,40 @@ S32 LLGLSLShader::disableTexture(S32 uniform, LLTexUnit::eTextureType mode)
llassert(false);
return -1;
}

S32 index = mTexture[uniform];
if (index != -1 && gGL.getTexUnit(index)->getCurrType() != LLTexUnit::TT_NONE)
if (index < 0)
{
// Invalid texture index - nothing to disable
return index;
}

LLTexUnit* tex_unit = gGL.getTexUnit(index);
if (!tex_unit)
{
if (gDebugGL && gGL.getTexUnit(index)->getCurrType() != mode)
// Invalid texture unit
LL_WARNS_ONCE("Shader") << "Invalid texture unit at index: " << index << LL_ENDL;
return index;
}

LLTexUnit::eTextureType curr_type = tex_unit->getCurrType();
if (curr_type != LLTexUnit::TT_NONE)
{
if (gDebugGL && curr_type != mode)
{
if (gDebugSession)
{
gFailLog << "Texture channel " << index << " texture type corrupted." << std::endl;
gFailLog << "Texture channel " << index << " texture type corrupted. Expected: " << mode << ", Found: " << curr_type << std::endl;
ll_fail("LLGLSLShader::disableTexture failed");
}
else
{
LL_ERRS() << "Texture channel " << index << " texture type corrupted." << LL_ENDL;
LL_ERRS() << "Texture channel " << index << " texture type corrupted. Expected: " << mode << ", Found: " << curr_type << LL_ENDL;
}
}
gGL.getTexUnit(index)->disable();
tex_unit->disable();
}

return index;
}

Expand Down
2 changes: 2 additions & 0 deletions indra/llui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ set(llui_SOURCE_FILES
llbadgeowner.cpp
llbutton.cpp
llchatentry.cpp
llchatmentionhelper.cpp
llcheckboxctrl.cpp
llclipboard.cpp
llcombobox.cpp
Expand Down Expand Up @@ -130,6 +131,7 @@ set(llui_HEADER_FILES
llcallbackmap.h
llchatentry.h
llchat.h
llchatmentionhelper.h
llcheckboxctrl.h
llclipboard.h
llcombobox.h
Expand Down
1 change: 1 addition & 0 deletions indra/llui/llchatentry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ LLChatEntry::LLChatEntry(const Params& p)
mCurrentHistoryLine = mLineHistory.begin();

mAutoIndent = false;
mShowChatMentionPicker = true;
keepSelectionOnReturn(true);
}

Expand Down
Loading