Age | Commit message (Collapse) | Author |
|
|
|
MSVC's `std::basic_ostream<CHAR>` template is not implemented in a general way:
it can only be instantiated for certain specific `CHAR` types. Declaring a
`std::basic_ostringstream<llwchar>` fails on MSVC with C2941.
Fortunately both llstring.cpp functions that build a `LLWString` incrementally
have the same characteristics: (a) they each build it one character at a time,
and (b) the length of the result `LLWString` won't exceed the known length of
the input string. So it works to declare a `std::vector<llwchar>`, `reserve()`
the input length and `push_back()` individual characters. Then we can use
`LLWString`'s range constructor to immediately allocate the right size.
|
|
MSVC's `std::basic_ostream<CHAR>` template is not implemented in a general way:
it can only be instantiated for certain specific `CHAR` types. Declaring a
`std::basic_ostringstream<llwchar>` fails on MSVC with C2941.
The ugly workaround from Stack Overflow is to clone-and-edit Microsoft's
`std::numpunct` template, locally specializing it for the desired `CHAR` type.
|
|
`finishProfile()` is called at least once within a `__try` block. If we default
its `report_name` parameter to a temporary `std::string`, that temporary must be
destroyed when the stack is unwound, which `__try` forbids.
|
|
Fix issue with improper reporting as to whether voice is working.
|
|
(#2547)
|
|
(#2546)
|
|
This fixes #1436, an issue where the 'call button' sometimes got greyed
out when it shouldn't have been.
Vivox is now 'working' (and the call button can be enabled) when it's logged in.
WebRTC is 'working' (and the call button can be enabled) when the coroutine is active.
|
|
|
|
viewer#2529 Fix initialization
|
|
Make `LLGLSLShader::finishProfile()` accept a string pathname instead of a
bool and, in addition to logging statistics to the viewer log, output
statistics to that file as JSON. The calls that used to pass
`emit_report=false` now pass `report_name=std::string()`.
Make llviewerdisplay.cpp's `display()` function synthesize a profile filename
in the viewer's logs directory, and pass that filename to
`LLGLSLShader::finishProfile()`.
|
|
Intent is to eventually use only stored variables for everything.
LLSD operations are far too expensive.
|
|
|
|
Profile guided optimizations
|
|
|
|
|
|
This fixes: https://github.com/secondlife/viewer-private/issues/285
When processing messages from the voice server, the volume and not the
mute status was being checked with respect to retrieving the mute status.
|
|
Many of the string conversion functions in llstring.cpp would build their
result strings using successive concatenation operations, piece by piece. This
can be expensive in allocations. Instead, use a std::basic_ostringstream of
char type appropriate to the return string type to aggregate piecewise string
building.
|
|
`wchar_to_utf8chars()` used to require a `char*` output buffer with no length,
assuming that its caller knew enough to provide a buffer of sufficient length.
In fact a `char[8]` buffer suffices, but nothing in the header indicated that.
Eliminate the output parameter and return `std::string`. Fix the few existing
callers.
Also set an `ll_convert_alias` so that `ll_convert_to<std::string>(llwchar)`
directly calls `wchar_to_utf8chars()`. Replace instances of the workaround
`wstring_to_utf8str(LLWString(1, llwchar))`.
|
|
|
|
|
|
* #2434 Intel HD4000 compatibility pass
* Fixes crash on old drivers when loading shaders
* Fixes 30 second hang on startup
* Fixes occasional dev build crash in LLWearableList
---------
Co-authored-by: Brad Linden <brad@lindenlab.com>
|
|
|
|
Consensus seems to be that (a) string_view is, in effect, already a reference,
(b) it's small enough to make pass-by-value reasonable and (c) the optimizer
can reason about values way better than it can about references.
|
|
Clean up llviewermenu
|
|
|
|
|
|
|
|
The voice server sends up the float power level of peers as an integer
multiplied by 128, in order to save character count as the voice power level
will likely be only 3 digits, instead of many for a full float.
The client was not taking this into account.
|
|
|
|
call.
For #2532, callback button was remaining disabled after hanging up on a group call.
Also, fix an issue where user was automatically added to a group call after the
initiator of the group call hangs up and re-calls the group.
|
|
Release/2024.08 delta fps
|
|
Reduce 'World map' floater draw time
|
|
|
|
|
|
|
|
The initial block area for the pyramid walk should not be smaller than the max_block_size area so need an llmax to not allow multiplication below 1.
This was causing decode errors for complex small images (128x128 or smaller) on discard 1 and 2.
|
|
|
|
viewer#2411 Use font buffer for inventory
|
|
Also fixes some sculpts getting wrong LoD
|
|
|
|
|
|
Add a menus.lua autorun script that waits until login, then adds the Lua
floaters back into the Develop->Consoles menu where they were originally.
Extend UI.addMenuItem() and addMenuSeparator() to support pos argument.
|
|
Make central Lua engine functionality conditional on that flag.
|
|
'pos' is a 0-relative index at which to insert the desired menu item or
separator. If 'pos' is omitted, the item is appended to the menu.
|
|
conference/p2p/group call
Processing for vivox was being enabled when teleporting into a vivox region
regardless as to whether the user was in a conference/p2p/group call, resulting
in vivox spatial and webrtc conference/p2p/group simultaneously being active.
|
|
Appending is effected by passing position == getItemCount(). Until now,
insert() disallowed that value, so you could insert before the last existing
entry but not after it.
|
|
Add tests to verify that llless() correctly handles signed <=> unsigned
comparison, which native "<" does not.
|
|
#2519)
|
|
|