summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2022-12-06SL-18330: Adapt LLSDSerialize and tests to llssize max_bytes params.Nat Goodspeed
2022-12-02SL-18330: Test Python llsd.parse() both from bytes and from stream.Nat Goodspeed
2022-12-02SL-18330: Fix new C++ <-> Python LLSD compatibility tests.Nat Goodspeed
When sending multiple LEAP packets in the same file (for testing convenience), use a length prefix instead of delimiting with '\n'. Now that we allow a serialization format that includes an LLSD format header (e.g. "<?llsd/binary?>"), '\n' is part of the packet content. But in fact, testing binary LLSD means we can't pick any delimiter guaranteed not to appear in the packet content. Using a length prefix also lets us pass a specific max_bytes to the subject C++ LLSD parser. Make llleap_test.cpp use new freestanding Python llsd package when available. Update Python-side LEAP protocol code to work directly with encoded bytes stream, avoiding bytes<->str encoding and decoding, which breaks binary LLSD. Make LLSDSerialize::deserialize() recognize LLSD format header case- insensitively. Python emits and checks for "llsd/binary", while LLSDSerialize emits and checks for "LLSD/Binary". Once any of the headers is recognized, pass corrected max_bytes to the specific parser. Make deserialize() more careful about the no-header case: preserve '\n' in content. Introduce debugging code (disabled) because it's a little tricky to recreate. Revert LLLeap child process stdout parser from LLSDSerialize::deserialize() to the specific LLSDNotationParser(), as at present: the generic parser fails one of LLLeap's integration tests for reasons that remain mysterious.
2022-11-29SL-18330: WIP: Send LLLeap to child as binary LLSD; generic parser.Nat Goodspeed
Since parsing binary LLSD is faster than parsing notation LLSD, send data from the viewer to the LEAP plugin child process's stdin in binary instead of notation. Similarly, instead of parsing the child process's stdout using specifically a notation parser, use the generic LLSDSerialize::deserialize() LLSD parser. Add more LLSDSerialize Python compatibility tests.
2022-11-23SL-18330: LLSDSerialize::deserialize() w/o hdr uses XML or notationNat Goodspeed
Absent a header from LLSDSerialize::serialize(), make deserialize() distinguish between XML or notation by recognizing an initial '<'.
2022-11-22SL-18330: Make LLSDSerialize::deserialize() default to notation.Nat Goodspeed
LLSDSerialize::serialize() emits a header string, e.g. "<? llsd/notation ?>" for notation format. Until now, LLSDSerialize::deserialize() has required that header to properly decode the input stream. But none of LLSDBinaryFormatter, LLSDXMLFormatter or LLSDNotationFormatter emit that header themselves. Nor do any of the Python llsd.format_binary(), format_xml() or format_notation() functions. Until now, you could not use LLSD::deserialize() to parse an arbitrary-format LLSD stream serialized by anything but LLSDSerialize::serialize(). Change LLSDSerialize::deserialize() so that if no header is recognized, instead of failing, it attempts to parse as notation. Add tests to exercise this case. The tricky part about this processing is that deserialize() necessarily reads some number of bytes from the input stream first, to try to recognize the header. If it fails to do so, it must prepend the bytes it has already read to the rest of the input stream since they're probably the beginning of the serialized data. To support this use case, introduce cat_streambuf, a std::streambuf subclass that (virtually) concatenates other std::streambuf instances. When read by a std::istream, the sequence of underlying std::streambufs appears to the consumer as a single continuous stream.
2022-09-22Merge remote-tracking branch 'origin/SL-18119' into DRTVWR-548-maint-NAndrey Lihatskiy
2022-09-16SL-18119 - UIUsage logs for some common operationsBrad Payne (Vir Linden)
2022-09-15Merge branch 'master' into DRTVWR-548-maint-NAndrey Lihatskiy
# Conflicts: # indra/newview/llmodelpreview.h
2022-06-29Merge branch 'master' into DRTVWR-548-maint-NAndrey Lihatskiy
# Conflicts: # doc/contributions.txt # indra/newview/llviewercontrol.cpp
2022-06-29Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
2022-06-22SL-17634 Replace deprecated carbon Gestalt callsMaxim Nikolenko
2022-06-14SL-16182: Offload audio decoding from the main thread to the general work queue.Cosmic Linden
The work queue callback binds "this". This is deemed safe due to current dependencies, but see the associated comment in the return callback. There was some trial and error to get a this-binded lambda to compile. Due to LLVorbisDecodeState writing to disk off-thread, limit audio decodes proportional to general worker thread count. Guess the thread count for now.
2022-06-14SL-17483: Make ThreadPool inherit LLInstanceTrackerCosmic Linden
(cherry picked from commit 41d6a0e222241606c317281e2f0b211e16813dd5)
2022-05-31Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
# Conflicts: # indra/llprimitive/llmodel.cpp # indra/llprimitive/llmodel.h # indra/newview/llappviewer.cpp # indra/newview/llappviewer.h
2022-05-27Merged in SL-15937 (pull request #991)Howard Stearns
SL-15937 - adjust memory limit / cache code Approved-by: Andrey Lihatskiy Approved-by: Vir Linden
2022-05-27Merge branch 'master' into DRTVWR-543-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/cmake/LLCommon.cmake # indra/llcommon/CMakeLists.txt # indra/llrender/llgl.cpp # indra/newview/llappviewer.cpp # indra/newview/llface.cpp # indra/newview/llflexibleobject.cpp # indra/newview/llvovolume.cpp
2022-05-23SL-15937 - adjust memory limit / cache codeHoward Stearns
2022-05-18SL-17388 Add SSE version info to ViewerStatsAndrey Kleshchev
2022-04-18Merge branch master (D540) into DRTVWR-546Andrey Kleshchev
# Conflicts: # indra/llcommon/llsdutil.cpp # indra/newview/VIEWER_VERSION.txt # indra/newview/lldrawpoolalpha.cpp # indra/newview/lldrawpoolwater.cpp
2022-04-18Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
# Conflicts: # indra/newview/app_settings/settings.xml # indra/newview/llfloatersearch.cpp # indra/newview/llgroupactions.cpp # indra/newview/llvovolume.cpp
2022-04-18Merge branch 'master' into DRTVWR-543-maintAndrey Lihatskiy
2022-03-25SL-17077 Ensure profiling is disabled if gpu_benchmark fails. Log the ↵Dave Parks
source of the real crash for when the viewer inevitably crashes later.
2022-03-09SL-16972 Per feedback from Ansariel, only bump up max heap size on 64-bit ↵Dave Parks
builds.
2022-03-01Merge branch 'master' (DRTVWR-557) into DRTVWR-546Andrey Kleshchev
# Conflicts: # autobuild.xml # doc/contributions.txt # indra/cmake/GLOD.cmake # indra/llcommon/tests/llprocess_test.cpp # indra/newview/VIEWER_VERSION.txt # indra/newview/lldrawpoolavatar.cpp # indra/newview/llfloatermodelpreview.cpp # indra/newview/llmodelpreview.cpp # indra/newview/llviewertexturelist.cpp # indra/newview/llvovolume.cpp # indra/newview/viewer_manifest.py
2022-02-28Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
# Conflicts: # indra/llaudio/llstreamingaudio_fmodstudio.cpp # indra/newview/llviewerregion.cpp
2022-02-28Merge branch 'master' into DRTVWR-543-maintAndrey Lihatskiy
2022-02-28Merge branch 'master' into DRTVWR-540-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/llcommon/llsys.cpp # indra/newview/app_settings/key_bindings.xml # indra/newview/llfloatereditextdaycycle.cpp
2022-02-23SL-16815 and SL-16906 Avoid redundant bumpmap generation, add some ↵Dave Parks
assertions around ref counting and (hack) fix crash on shutdown from dangling texture reference (reduced to 1 dangling texture from several hundred, can't find the remaining reference).
2022-02-14Restored SL-14961Andrey Kleshchev
SL-14961 works better for windows than rethrow
2022-02-11SL-10190: Slightly reduce conditional clutter in llcoros.{h,cpp}.Nat Goodspeed
Rename 'winlevel()' to 'sehandle()'; change it from a static member function to a free function, thus eliminating the conditional in llcoros.h. Elsewhere than Windows, provide a zero-cost pass-through sehandle() implementation, eliminating the conditional in toplevel(). # Conflicts: # indra/llcommon/llcoros.cpp # indra/llcommon/llcoros.h
2022-02-11SL-10190: Introduce LLCoros::saveException() and rethrow().Nat Goodspeed
This mechanism uses a queue of std::exception_ptrs to transport an (otherwise) uncaught exception from a terminated coroutine to the thread's main fiber. The main loop calls LLCoros::rethrow() just after giving some cycles to ready coroutines that frame. # Conflicts: # indra/llcommon/llcoros.cpp # indra/llcommon/llcoros.h # indra/newview/llappviewer.cpp
2022-02-11Revert "SL-14961 Coroutine crash was not reported to bugsplat"Andrey Kleshchev
Will be replaced with retrow from nat
2022-02-05SL-16799 Clean up use of hardcoded folder namesAndrey Kleshchev
2022-01-26OPEN-358 Readable errorAndrey Kleshchev
2022-01-14SL-16606: Add profiler category STATSPtolemy
2022-01-14SL-16606: Add profiler category THREADPtolemy
2022-01-14SL-16606: Add profiler category STRINGPtolemy
2022-01-14SL-16606: Add profiler category STATSPtolemy
2022-01-14SL-16606: Add profiler category MEMORYPtolemy
2022-01-14SL-16606: Add profiler category LOGGINGPtolemy
2022-01-14SL-16606: Add profiler category LLSDPtolemy
2022-01-14SL-16606: Include profiler categories automaticallyPtolemy
2022-01-14SL-16606: Add categoriesPtolemy
2022-01-12SL-15997 Windows 11 detection #2Andrey Kleshchev
2022-01-12SL-15997 Windows 11 detectionAndrey Kleshchev
2022-01-10Merge branch 'DRTVWR-530-maint' into DRTVWR-553-maint-mix-JKAndrey Lihatskiy
# Conflicts: # indra/newview/app_settings/key_bindings.xml # indra/newview/llappviewer.cpp # indra/newview/llkeyconflict.cpp
2021-12-26Merge branch 'master' into DRTVWR-543-maintAndrey Lihatskiy
2021-12-26Merge branch 'master' into DRTVWR-540-maintAndrey Lihatskiy
2021-12-16Merge branch 'SL-15742' into DRTVWR-527-maintAndrey Lihatskiy