Skip to content

Release/2025.06 #4379

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 190 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
190 commits
Select commit Hold shift + click to select a range
7947ce3
triage#162 "Away" status is removed even by a random hover
akleshchev Apr 8, 2024
a902138
triage#166 Select 'No Description' when clicking on a text field
akleshchev Apr 9, 2024
0acee93
Merge branch 'main' into marchcat/c-merge
marchcat Apr 10, 2024
5af93ff
Merge pull request #1177 from secondlife/marchcat/c-merge
marchcat Apr 10, 2024
f4c41ec
triage#170 Fix 'Clear log' button having incorrect state
akleshchev Apr 10, 2024
4f2f328
triage#171 Sometimes conversation.log remains empty
akleshchev Apr 10, 2024
15908fd
viewer#1195 Real Life photo can be set to a bake texture
akleshchev Apr 12, 2024
aa67d6c
Remove BuildParams
bennettgoble Mar 31, 2024
6e761c0
Remove unused fix-incredibuild.py
bennettgoble Apr 11, 2024
e84107b
CI: Remove python-version from matrix
bennettgoble Apr 11, 2024
d378c72
CI: adopt xz compression
bennettgoble Apr 11, 2024
e6c8312
Merge branch 'main' into marchcat/c-merge
marchcat Apr 15, 2024
1ede307
Merge pull request #1237 from secondlife/marchcat/c-merge
marchcat Apr 15, 2024
d7614a8
viewer#1213 My Environments 'Apply' buttons enabled for folders
akleshchev Apr 15, 2024
be1f322
viewer#1215 My Environments' trash button is missing a notification
akleshchev Apr 15, 2024
495a402
Make it so that reset skeleton is a networked ViewerEffect
FelixWolf Apr 12, 2024
180a2aa
Remove animesh networked skeleton reset for now
FelixWolf Apr 16, 2024
7723da1
Cleaned up code a bit, fixed issue with referencing effectp instead o…
FelixWolf Apr 16, 2024
79b560d
Fix bad copypasting of code, hopefully for good this time
FelixWolf Apr 16, 2024
505ed20
viewer#1216 Library settings can be deleted via My Environments
akleshchev Apr 15, 2024
2194777
SL-18721 Window shutdown adjustments
akleshchev Apr 16, 2024
3758618
viewer#1260 Fix thumbnail preview being blury
akleshchev Apr 16, 2024
f660f1f
viewer#1260 Fix thumbnail preview not loading
akleshchev Apr 17, 2024
b1b2ae0
Revert "SL-20140 Setting shape hand size to 36 won't save"
marchcat Apr 15, 2024
195a6c5
Merge branch 'main' into marchcat/c-merge
marchcat Apr 24, 2024
e5b14e4
Merge pull request #1315 from secondlife/marchcat/c-merge
marchcat Apr 24, 2024
0d4f52b
secondlife/viewer#1200 Avatar rotates 360 degrees when viewed from th…
LLGuru Apr 15, 2024
0cceb13
viewer#1321 allow to set price before clicking the "For Sale" box
maxim-productengine Apr 25, 2024
a220acb
viewer#1300 Inventory favorites basic framework
akleshchev Apr 22, 2024
7e536f4
viewer#1300 Rename landmark favorites tab
akleshchev Apr 22, 2024
a0b0f20
viewer#1300 Update Gear Menu Items
akleshchev Apr 22, 2024
384d694
viewer#1300 Inventory favorites context menu
akleshchev Apr 23, 2024
cea6eee
viewer#1300 'Star' favorites in inventory
akleshchev Apr 25, 2024
a0c4d81
viewer#1300 'Star' favorites in inventory #2
akleshchev Apr 27, 2024
204b7ff
Add timestamp to snapshot file names
bennettgoble Apr 27, 2024
2add3b4
viewer#1300 'Star' favorites in inventory #3
akleshchev Apr 29, 2024
c05c066
Merge pull request #1344 from secondlife/signal/snapshot-time
bennettgoble Apr 29, 2024
1e7dc04
viewer#1300 'Star' favorites in inventory #4
akleshchev Apr 29, 2024
645811c
Viewer#1301 Implement Inventory Favorites Tab WIP
akleshchev May 1, 2024
2372944
secondlife/viewer#1359 Introduce enum ERezzedStatus
LLGuru Apr 30, 2024
fc5e532
Viewer#1301 Implement Inventory Favorites Tab WIP#2
akleshchev May 2, 2024
18f23d9
secondlife/viewer#1360 Avoid of using avatar full names
LLGuru Apr 30, 2024
faefd35
secondlife/viewer#1330 EmojiPicker inserts emoji to inactive chat flo…
LLGuru Apr 28, 2024
d738aa7
pviewer#235 slurl command should require at least click action
maxim-productengine May 2, 2024
bbadb8b
Viewer#1301 Small cleanup
akleshchev May 2, 2024
db3e5af
Viewer#1301 Implement Inventory Favorites Tab
akleshchev May 2, 2024
1c17038
viewer#1300 Update Inventory Settings
akleshchev May 3, 2024
26f7045
viewer#1195 Don't allow Bake textures as group images
akleshchev May 6, 2024
5c78396
viewer#1424 Favorites in Appearance floater #1
akleshchev May 8, 2024
a420e84
viewer#1424 Favorites in Appearance floater #2
akleshchev May 9, 2024
b6d195a
SL-20288 Fix renaming
akleshchev Mar 13, 2024
f8cc05a
viewer#1424 Colored Favorites in Appearance floater
akleshchev May 9, 2024
b9633c1
viewer#1424 Favorites in Appearance floater #3
akleshchev May 10, 2024
7d1597f
viewer#1424 Favorites in Appearance floater #4
akleshchev May 13, 2024
dcb85f9
Merge branch 'marchcat/w-whitespace' into release/maint-c
marchcat May 15, 2024
e592164
Merge branch 'main' into release/maint-c
marchcat May 15, 2024
ee05a06
Merge branch 'release/maint-x' into marchcat/x-c-merge
marchcat May 15, 2024
363b899
Mac build fix
marchcat May 15, 2024
4ddaeb3
Merge pull request #1477 from secondlife/marchcat/x-c-merge
marchcat May 15, 2024
1eeecfa
viewer#1425 Sorting in Appearance floater
akleshchev May 14, 2024
50b93bd
viewer#1424 Favorite support in galleries
akleshchev May 14, 2024
738cf84
viewer#1424 Favorite support for items in outfits
akleshchev May 9, 2024
2f600d8
secondlife/jira-archive-internal#71144 Mouselook no longer allows pit…
LLGuru May 16, 2024
dfdd84e
Update threejs to use the platform agnostic package
marchcat May 16, 2024
98f7d73
viewer#1424 Finish menus
akleshchev May 16, 2024
382b45c
viewer#1424 Favorite support in galleries #2
akleshchev May 16, 2024
3066cce
viewer#1300 Small menu adjustment
akleshchev May 17, 2024
0b46cef
Merge branch 'main' into marchcat/c-merge
marchcat May 17, 2024
e8de17d
Merge pull request #1507 from secondlife/marchcat/c-merge
marchcat May 17, 2024
f2358a2
viewer#1425 Sorting in Appearance floater #2
akleshchev May 17, 2024
4c676ac
viewer#1300 More favorite settings
akleshchev May 17, 2024
25b19eb
viewer#1424 Proper links support for favorites
akleshchev May 17, 2024
741b79d
viewer#1529 Mesh Uploader should permit lowering material count
akleshchev May 21, 2024
6f7e50e
viewer#1425 Fix missed 'static' declarations
akleshchev May 22, 2024
c255174
viewer#1400 Show LODs info in Build Tools
akleshchev May 21, 2024
b052240
viewer#1400 Allow forcing specific LODs for selection
akleshchev May 22, 2024
e0f5606
viewer-private#240 Restore missing marketplace notification
akleshchev May 23, 2024
c4392d4
viewer#1408 Change misleading content removal wanring
akleshchev May 24, 2024
1fcd284
viewer#1218 Moon beacon can't be toggled when setting is no-mod
akleshchev May 27, 2024
82b1f23
viewer#1584 Reword the "Arrow keys always move me"
akleshchev May 30, 2024
9f00bb1
viewer#1600 Fixed being unable to delete links to worn objects
akleshchev May 31, 2024
3f150fb
viewer#1594 Add a "Cancel" button to exit the "New List" prompt
akleshchev May 31, 2024
bd9add8
viewer#1595 Add a prompt to confirm deleting an 'auto raplace' list
akleshchev May 31, 2024
29e1089
viewer-private#245 The "Voice chat" is truncated on the slider
akleshchev Jun 3, 2024
db3f7ea
viewer#1588 Upload directly to Specified Inventory Folder
akleshchev Jun 3, 2024
268281a
An alternative in getting CPU freq on M-series
erikkundiman Dec 26, 2023
2117dca
tbfreq x clockrate.hz only when cpufrequency is 0
erikkundiman Dec 31, 2023
9e584ed
viewer-private#244 Reconnect to voice after 'tuning'
akleshchev Jun 5, 2024
39c1894
viewer#1154 Fix an extra key
akleshchev Jun 5, 2024
6339bc8
Merge branch 'main' into marchcat/c-merge
marchcat Jun 6, 2024
94a18c4
Merge pull request #1656 from secondlife/marchcat/c-merge
marchcat Jun 6, 2024
8f6e50e
Merge pull request #1636 from megapahit/macos-arm64
marchcat Jun 6, 2024
bd8438f
viewer#1619 Fix outfits search pulling up results sometimes
akleshchev Jun 7, 2024
0dcc912
Merge main into inventory_favorites
akleshchev Jun 10, 2024
d1cf13f
viewer#1673 Crash calling dirtyDescendantsFilter
akleshchev Jun 10, 2024
ee49b3b
Merge branch 'main' into marchcat/c-merge
marchcat Jun 10, 2024
e6a34da
Merge pull request #1689 from secondlife/marchcat/c-merge
marchcat Jun 11, 2024
534605e
Merge branch 'main' (featurette) into inventory_favorites
akleshchev Jun 11, 2024
daad8dc
viewer#1672 Crash at setDefaultFOV
akleshchev Jun 11, 2024
51f5e09
viewer#1692 Crash at LLVOVolume::getReflectionProbeIsBox()
akleshchev Jun 11, 2024
fd2626c
viewer#1698 Uniform being out of range shouldn't crash viewer
akleshchev Jun 11, 2024
c137e6a
Merge pull request #1704 from secondlife/main
marchcat Jun 11, 2024
ba160ed
viewer#1728 Crash in LLViewerRegion::probeCache
akleshchev Jun 12, 2024
8b18906
viewer#1730 Crash in LLFetchedGLTFMaterial::bind
akleshchev Jun 12, 2024
63ef1d1
viewer#1731 Crash at LLPipeline::markVisible
akleshchev Jun 12, 2024
078e8fd
viewer#1750 Crash at LLGLTFMaterial::operator=
akleshchev Jun 13, 2024
5d1e3d4
viewer-private#245 The "Voice chat" is truncated on the slider #2
akleshchev Jun 13, 2024
fece367
jira-archive-internal#63268 Several objects are worn on the same part
akleshchev Jun 14, 2024
7ae63da
viewer#1300 Increment inventory cache for favorites
akleshchev Jun 14, 2024
3fc8d4b
#1611 Regression in anti-flipping mechanism for mouselook camera
LLGuru Jun 6, 2024
3d84a14
#1611 Regression in anti-flipping mechanism for mouselook camera
LLGuru Jun 14, 2024
6b251fb
viewer#1781 More detailed model upload errors for textures
akleshchev Jun 17, 2024
f32a6d4
#1773 Advanced Lighting Model info still showing in About for other l…
LLGuru Jun 17, 2024
574dc78
#1207 EEP: Water settings only displaying one decimal place
LLGuru Jun 17, 2024
4d0b980
viewer#1772 Teleport History landing going higher and higher
akleshchev Jun 17, 2024
5513459
#1644 On-water property lines persist at water level
LLGuru Jun 18, 2024
a3a7733
viewer-private#242 Last used picker mode can force picker into a disa…
akleshchev Jun 18, 2024
fcffbad
viewer#1501 Crash initiating screenSpaceReflUtil.glsl
akleshchev May 17, 2024
6ee6d19
viewer#1005 Review fixes
akleshchev Jun 26, 2024
ac0f566
Merge pull request #1840 from secondlife/inventory_favorites
akleshchev Jun 27, 2024
f010ab9
viewer#1300 Small 'favorites' improvement
akleshchev Jul 3, 2024
826236f
SL-18721 Move window shutdown further down
akleshchev Jul 4, 2024
a620e58
SL-18721 Don't 'post' window destruction, make thread do it automatic…
akleshchev Jul 4, 2024
8ae0e6c
viewer#2102 Update feature notification to notify about Favorites
akleshchev Jul 25, 2024
0c643d9
Update expired cert in integration test
marchcat Jul 22, 2024
9e24b30
Fix local resetting (#2383)
FelixWolf Aug 22, 2024
2813097
Merge commit '7947ce3' into marchcat/maint-c/maint-c-restore
marchcat Apr 9, 2025
5d7a500
Merge commit '9e24b30' into marchcat/maint-c/restore
marchcat Apr 10, 2025
3f64894
Fix pre-commit error
marchcat Apr 10, 2025
32e894b
Switch to smaller runners (#3722)
Geenz Mar 21, 2025
d34e323
macos buildfix
marchcat Apr 10, 2025
e66637f
Fix missing inventory unlock
akleshchev Oct 15, 2024
28f4596
Post-merge cleanup: llwindowwin32.cpp
marchcat Oct 15, 2024
d531835
Post-merge cleanup: llvoavatar.cpp
marchcat Oct 15, 2024
19347f7
Fix merge issues:
Ansariel Oct 15, 2024
a510a1d
Convert BOOL to bool
Ansariel Oct 15, 2024
bab3bc4
Fix more merge issues:
Ansariel Oct 15, 2024
f52b281
Apply changes from 55f2103adc36db0d3f068a31a144e15465226e13 to LLFold…
Ansariel Oct 16, 2024
9117a37
Give control over thread queue's automatic shutdown
akleshchev Oct 31, 2024
7bffdd7
#3367 Move Maximum # of animated avatars slider in Graphics
marchcat Jan 8, 2025
f9503bd
#3353 Fix favorited items not being readded on parent removal
akleshchev Jan 8, 2025
1dd0059
#3354 adjust controls positions to avoid overlapping
maxim-productengine Jan 9, 2025
eb0ca41
#3373 Rename "My Favorites" system folder to "Favorites Bar"
maxim-productengine Jan 9, 2025
b1fa03e
#3374 LLFolderViewFolder::updateHasFavorites
akleshchev Jan 9, 2025
3daf086
#3374 Fix item reparenting moving containing folder
akleshchev Jan 9, 2025
2d11e10
#3377 Select 'All items' tab when creating a folder via '+' button
maxim-productengine Jan 10, 2025
0c9f6f5
#3394 Fix colour change not applied to favourites in Outfit Gallery
maxim-productengine Jan 13, 2025
154d15d
#3403 fix Favorited worn outfit not coloured in My Outfits tab
maxim-productengine Jan 15, 2025
dab8b9c
#3383 'InventoryAddAttachmentBehavior' setting should affect inventor…
maxim-productengine Jan 28, 2025
cfad42b
Refactor LLWindowWin32::LLWindowWin32Thread::wakeAndDestroy()
marchcat Apr 12, 2025
1dacabe
#3379 Crash on gIdleCallbacks iteration
akleshchev Apr 12, 2025
1f17536
#3900 Skip checking AFK status during startup states
marchcat Apr 12, 2025
207ef20
#3897 Fix favorite's stars being hidden in some cases
akleshchev Apr 14, 2025
5a893f2
Fix llhttpdate test on windows and macos (#3909)
marchcat Apr 14, 2025
ae93198
Merge branch 'main' into marchcat/maint-c-restore
marchcat Apr 15, 2025
06a76ed
Merge branch 'develop' into marchcat/05-develop
marchcat Apr 15, 2025
d464901
Post-merge fix compareGalleryItem() in lloutfitgallery.cpp (#3917)
marchcat Apr 16, 2025
3142429
#3910 Sometimes can't favorite a folder
akleshchev Apr 15, 2025
f8782b0
#3897 Fix favorite's stars being hidden in some cases #2
akleshchev Apr 16, 2025
082c915
Merge branch 'develop' into marchcat/05-develop
marchcat Apr 17, 2025
53b3aed
#3898 Make default inventory size a bit wider
akleshchev Apr 17, 2025
d3d8513
#1424 Favorites in Appearance floater #4
akleshchev Apr 17, 2025
01f73fe
Merge branch 'release/2025.05' into marchcat/05-develop
marchcat Apr 18, 2025
933f522
Merge branch 'develop' into marchcat/05-develop
marchcat Apr 18, 2025
1c3ce46
Restore missing 'override'
marchcat Apr 18, 2025
11cd9b9
Merge pull request #3914 from secondlife/marchcat/05-develop
marchcat Apr 18, 2025
f5be549
#3910 Fix sorting of 'favorites' inventory tab
akleshchev Apr 18, 2025
74a71e3
Restore llmath fixes that got lost during merge (#3948)
Ansariel Apr 18, 2025
1e4f12f
#3382 Rename inventory setting
maxim-productengine Apr 22, 2025
ec6c988
#3918 Implement automatic shutdown for WorkQueueBase
marchcat Apr 22, 2025
d6699df
Increment viewer version after 2025.04
brad-linden Apr 25, 2025
61af5d6
Merge pull request #3983 from secondlife/brad/version-increments
brad-linden Apr 25, 2025
e8b1e07
#3953 My Inventory folder appears in Favorites
akleshchev Apr 28, 2025
14f5cd2
#3924 Fix favorites inventory panel being stuck
akleshchev Apr 28, 2025
00d612f
#3993 Fix missing 'add to favorites' option
akleshchev Apr 29, 2025
3bddaea
p#428 Fix texture picker's tentative behavior
akleshchev Apr 29, 2025
778a69c
#4005 Crash at LLVOVolume::isMesh
akleshchev Apr 30, 2025
f73e0d0
#3905 Crashes in LLInventoryModel::saveToFile
akleshchev Apr 30, 2025
3de223a
#1300 Test coverage for inventory metadata
akleshchev May 1, 2025
2cbff07
#4000 Cherry pick inventory LEAP functions from develop branch
maxim-productengine May 20, 2025
b9ab6c3
Fix CodeQL errors in 2025.05 (#4125)
marchcat May 21, 2025
b08ba3f
Merge branch 'main' into marchcat/2505-merge
marchcat May 28, 2025
91adb11
Merge pull request #4183 from secondlife/marchcat/2505-merge
marchcat May 28, 2025
6f98834
Remove duplicated code (#4187)
Ansariel May 29, 2025
2d0f9e4
#3367 Fix post-merge regression
marchcat May 29, 2025
4bc20a8
#4184 clearAndDeparentModels crash
akleshchev Jun 26, 2025
9235312
#4298 Crash at generateVertexRemapMulti
akleshchev Jun 27, 2025
86cc076
#4300 Crash at readProfileQuery
akleshchev Jun 27, 2025
e2decee
#4283 fix for missing items in 'My Outfits' floater
maxim-productengine Jul 17, 2025
3806c35
#4216 Pressing cancel on picker reverts an override
akleshchev Jul 17, 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
50 changes: 12 additions & 38 deletions autobuild.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2332,59 +2332,33 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
</map>
<key>threejs</key>
<map>
<key>copyright</key>
<string>Copyright © 2010-2021 three.js authors</string>
<key>license</key>
<string>MIT</string>
<key>license_file</key>
<string>LICENSES/THREEJS_LICENSE.txt</string>
<key>name</key>
<string>threejs</string>
<key>platforms</key>
<map>
<key>darwin64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>cfed00d8ea7265c035c2d86a234b28efb0b23756</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-darwin64-b8f6746.tar.zst</string>
</map>
<key>name</key>
<string>darwin64</string>
</map>
<key>linux64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>9de1295b157c9913c28be81ff933c73493ecc132</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-linux64-b8f6746.tar.zst</string>
</map>
</map>
<key>windows64</key>
<key>common</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>4141710fccbd1ea2b3b53d00e189bdfa2ee9d441</string>
<string>982c0fa427458082ea9e3cb9603904210732b64e</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows64-b8f6746.tar.zst</string>
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-5da28d9/threejs-0.132.2-common-8454371083.tar.zst</string>
</map>
<key>name</key>
<string>windows64</string>
<string>common</string>
</map>
</map>
<key>license</key>
<string>MIT</string>
<key>license_file</key>
<string>LICENSES/THREEJS_LICENSE.txt</string>
<key>copyright</key>
<string>Copyright © 2010-2021 three.js authors</string>
<key>version</key>
<string>0.132.2</string>
<key>name</key>
<string>threejs</string>
</map>
<key>tinygltf</key>
<map>
Expand Down
2 changes: 2 additions & 0 deletions indra/llcharacter/llcharacter.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ class LLCharacter

virtual void addDebugText( const std::string& text ) = 0;

virtual std::string getDebugName() const { return getID().asString(); }

virtual const LLUUID& getID() const = 0;
//-------------------------------------------------------------------------
// End Interface
Expand Down
17 changes: 17 additions & 0 deletions indra/llcommon/llassettype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "llassettype.h"
#include "lldictionary.h"
#include "llmemory.h"
#include "llsd.h"
#include "llsingleton.h"

///----------------------------------------------------------------------------
Expand Down Expand Up @@ -246,3 +247,19 @@ bool LLAssetType::lookupIsAssetIDKnowable(EType asset_type)
}
return false;
}

LLSD LLAssetType::getTypeNames()
{
LLSD type_names;
const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
for (S32 type = AT_TEXTURE; type < AT_COUNT; ++type)
{
const AssetEntry *entry = dict->lookup((LLAssetType::EType) type);
// skip llassettype_bad_lookup
if (entry)
{
type_names.append(entry->mTypeName);
}
}
return type_names;
}
2 changes: 2 additions & 0 deletions indra/llcommon/llassettype.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ class LL_COMMON_API LLAssetType
static bool lookupIsAssetFetchByIDAllowed(EType asset_type); // the asset allows direct download
static bool lookupIsAssetIDKnowable(EType asset_type); // asset data can be known by the viewer

static LLSD getTypeNames();

static const std::string BADLOOKUP;

protected:
Expand Down
8 changes: 8 additions & 0 deletions indra/llcommon/llprocessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,14 @@ class LLProcessorInfoDarwinImpl : public LLProcessorInfoImpl
{
getCPUIDInfo();
uint64_t frequency = getSysctlInt64("hw.cpufrequency");
if (!frequency)
{
auto tbfrequency = getSysctlInt64("hw.tbfrequency");
struct clockinfo clockrate;
auto clockrate_len = sizeof(clockrate);
if (!sysctlbyname("kern.clockrate", &clockrate, &clockrate_len, NULL, 0))
frequency = tbfrequency * clockrate.hz;
}
setInfo(eFrequency, (F64)frequency / (F64)1000000);
}

Expand Down
39 changes: 39 additions & 0 deletions indra/llcommon/llsdutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,45 @@ LLSD shallow(LLSD value, LLSD filter=LLSD()) { return llsd_shallow(value, filter

} // namespace llsd

/*****************************************************************************
* LLSDParam<std::vector<T>>
*****************************************************************************/
// Given an LLSD array, return a const std::vector<T>&, where T is a type
// supported by LLSDParam. Bonus: if the LLSD value is actually a scalar,
// return a single-element vector containing the converted value.
template <typename T>
class LLSDParam<std::vector<T>>: public LLSDParamBase
{
public:
LLSDParam(const LLSD& array)
{
// treat undefined "array" as empty vector
if (array.isDefined())
{
// what if it's a scalar?
if (! array.isArray())
{
v.push_back(LLSDParam<T>(array));
}
else // really is an array
{
// reserve space for the array entries
v.reserve(array.size());
for (const auto& item : llsd::inArray(array))
{
v.push_back(LLSDParam<T>(item));
}
}
}
}

operator const std::vector<T>&() const { return v; }

private:
std::vector<T> v;
};


/*****************************************************************************
* toArray(), toMap()
*****************************************************************************/
Expand Down
4 changes: 2 additions & 2 deletions indra/llcommon/threadpool.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ namespace LL
* ThreadPool listens for application shutdown messages on the "LLApp"
* LLEventPump. Call close() to shut down this ThreadPool early.
*/
virtual void close();
void close();

std::string getName() const { return mName; }
size_t getWidth() const { return mThreads.size(); }
Expand Down Expand Up @@ -122,7 +122,7 @@ namespace LL
size_t threads=1,
size_t capacity=1024*1024,
bool auto_shutdown = true):
ThreadPoolBase(name, threads, new queue_t(name, capacity), auto_shutdown)
ThreadPoolBase(name, threads, new queue_t(name, capacity, false), auto_shutdown)
{}
~ThreadPoolUsing() override {}

Expand Down
44 changes: 36 additions & 8 deletions indra/llcommon/workqueue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "llcoros.h"
#include LLCOROS_MUTEX_HEADER
#include "llerror.h"
#include "llevents.h"
#include "llexception.h"
#include "stringize.h"

Expand All @@ -30,11 +31,38 @@ using Lock = LLCoros::LockType;
/*****************************************************************************
* WorkQueueBase
*****************************************************************************/
LL::WorkQueueBase::WorkQueueBase(const std::string& name):
super(makeName(name))
LL::WorkQueueBase::WorkQueueBase(const std::string& name, bool auto_shutdown)
: super(makeName(name))
{
// TODO: register for "LLApp" events so we can implicitly close() on
// viewer shutdown.
if (auto_shutdown)
{
// Register for "LLApp" events so we can implicitly close() on viewer shutdown
std::string listener_name = "WorkQueue:" + getKey();
LLEventPumps::instance().obtain("LLApp").listen(
listener_name,
[this](const LLSD& stat)
{
std::string status(stat["status"]);
if (status != "running")
{
// Viewer is shutting down, close this queue
LL_DEBUGS("WorkQueue") << getKey() << " closing on app shutdown" << LL_ENDL;
close();
}
return false;
});

// Store the listener name so we can unregister in the destructor
mListenerName = listener_name;
}
}

LL::WorkQueueBase::~WorkQueueBase()
{
if (!mListenerName.empty() && !LLEventPumps::wasDeleted())
{
LLEventPumps::instance().obtain("LLApp").stopListening(mListenerName);
}
}

void LL::WorkQueueBase::runUntilClose()
Expand Down Expand Up @@ -212,8 +240,8 @@ void LL::WorkQueueBase::checkCoroutine(const std::string& method)
/*****************************************************************************
* WorkQueue
*****************************************************************************/
LL::WorkQueue::WorkQueue(const std::string& name, size_t capacity):
super(name),
LL::WorkQueue::WorkQueue(const std::string& name, size_t capacity, bool auto_shutdown):
super(name, auto_shutdown),
mQueue(capacity)
{
}
Expand Down Expand Up @@ -261,8 +289,8 @@ bool LL::WorkQueue::tryPop_(Work& work)
/*****************************************************************************
* WorkSchedule
*****************************************************************************/
LL::WorkSchedule::WorkSchedule(const std::string& name, size_t capacity):
super(name),
LL::WorkSchedule::WorkSchedule(const std::string& name, size_t capacity, bool auto_shutdown):
super(name, auto_shutdown),
mQueue(capacity)
{
}
Expand Down
11 changes: 8 additions & 3 deletions indra/llcommon/workqueue.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ namespace LL
* You may omit the WorkQueueBase name, in which case a unique name is
* synthesized; for practical purposes that makes it anonymous.
*/
WorkQueueBase(const std::string& name);
WorkQueueBase(const std::string& name, bool auto_shutdown);

virtual ~WorkQueueBase();

/**
* Since the point of WorkQueue is to pass work to some other worker
Expand Down Expand Up @@ -197,6 +199,9 @@ namespace LL
private:
virtual Work pop_() = 0;
virtual bool tryPop_(Work&) = 0;

// Name used for the LLApp event listener (empty if not registered)
std::string mListenerName;
};

/*****************************************************************************
Expand All @@ -212,7 +217,7 @@ namespace LL
* You may omit the WorkQueue name, in which case a unique name is
* synthesized; for practical purposes that makes it anonymous.
*/
WorkQueue(const std::string& name = std::string(), size_t capacity=1024);
WorkQueue(const std::string& name = std::string(), size_t capacity=1024, bool auto_shutdown = true);

/**
* Since the point of WorkQueue is to pass work to some other worker
Expand Down Expand Up @@ -282,7 +287,7 @@ namespace LL
* You may omit the WorkSchedule name, in which case a unique name is
* synthesized; for practical purposes that makes it anonymous.
*/
WorkSchedule(const std::string& name = std::string(), size_t capacity=1024);
WorkSchedule(const std::string& name = std::string(), size_t capacity=1024, bool auto_shutdown = true);

/**
* Since the point of WorkSchedule is to pass work to some other worker
Expand Down
19 changes: 19 additions & 0 deletions indra/llinventory/llfoldertype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "llfoldertype.h"
#include "lldictionary.h"
#include "llmemory.h"
#include "llsd.h"
#include "llsingleton.h"

///----------------------------------------------------------------------------
Expand Down Expand Up @@ -220,3 +221,21 @@ const std::string &LLFolderType::badLookup()
static const std::string sBadLookup = "llfoldertype_bad_lookup";
return sBadLookup;
}

LLSD LLFolderType::getTypeNames()
{
LLSD type_names;
for (S32 type = FT_TEXTURE; type < FT_COUNT; ++type)
{
if (lookupIsEnsembleType((LLFolderType::EType)type))
continue;

const FolderEntry* entry = LLFolderDictionary::getInstance()->lookup((LLFolderType::EType)type);
// skip llfoldertype_bad_lookup
if (entry)
{
type_names.append(entry->mName);
}
}
return type_names;
}
2 changes: 2 additions & 0 deletions indra/llinventory/llfoldertype.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ class LL_COMMON_API LLFolderType

static const std::string& badLookup(); // error string when a lookup fails

static LLSD getTypeNames();

protected:
LLFolderType() {}
~LLFolderType() {}
Expand Down
Loading
Loading