Age | Commit message (Collapse) | Author |
|
|
|
Introduce LLSingletonBase::getInstanceForSecondaryThread(), used both by
LLSingleton and LLParamSingleton. Because it's a method of the non-template
base class, because it's not itself a template method,
getInstanceForSecondaryThread()'s definition can live in llsingleton.cpp. This
is what calls LLMainThreadTask::dispatch().
To support LLParamSingleton, though, getInstanceForSecondaryThread() must be
capable of handling arguments. For that, it accepts a nullary std::function
returning the LLSingletonBase* of interest.
Packing initParamSingleton() arguments into a nullary std::function to pass to
getInstanceForSecondaryThread() sounds like a job for std::bind().
Unfortunately std::bind() has trouble forwarding int and string literals to a
function that infers its argument types. To work around that, use
boost::call_traits::param_type and a lambda with an explicit tuple.
|
|
instead of on LLEventTimer.
LLEventTimer takes cycles from the main loop to run through the collection of
pending LLEventTimers, checking each to see if we've reached its timestamp.
But LLMainThreadTask does not require delay timing; it wants the main loop to
service it ASAP. That's what the "mainloop" WorkQueue is for.
But WorkQueue::waitForResult() forbids calls from a thread's default
coroutine. While that restriction may still make sense in general, we
specifically want to be able to pause LLMainThreadTask's caller, no matter
what coroutine it's running on. Introduce WorkQueue::waitForResult_() that
bypasses the check.
|
|
|
|
We had to switch to APR's partially-supported CMake builds, but apriconv has
no upstream CMake config.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
informative
|
|
|
|
|
|
|
|
|
|
|
|
|
|
following promotion of DRTVWR-582
|
|
|
|
|
|
|
|
|
|
texture
|
|
|
|
|
|
|
|
|
|
|
|
Remove unused counters that cause fatal warnings
|
|
undocked
|
|
|
|
|
|
Use f.writelines((bytes, b'\n')) instead.
|
|
|
|
LLEventTimer supported static run_every(), run_at() and run_after() methods to
schedule future work. This can still be done by deriving from LLEventTimer,
but is better accomplished with a WorkSchedule instance. These convenience
methods, which encourage use of LLEventTimer insted of WorkSchedule, weren't
used except by LLEventTimeout. Remove them and the LLEventTimer::Generic
subclass used to implement them.
Similarly, LLEventTimeout supported static post_every(), post_at() and
post_after() methods based on LLEventTimer::run_every(), run_at() and
run_after(). These weren't used either.
LLRunner is a very old mechanism to schedule future work that seems to be
unused. Research suggests that it's indirectly engaged only by
LLDeferredChain, which isn't used. LLIOSleeper is tested but isn't otherwise
used. Add a deprecation warning to llrun.h prior to excision.
Also replace Boost.Bind with lambdas.
|
|
llsdserialize_test used Boost.Foreach, Boost.Function and Boost.Bind.
llleap_test used Boost.Assign. Both used Boost.Phoenix.
Replace Boost.Foreach with range 'for'.
Replace Boost.Function with std::function.
Replace Boost.Assign with initializer lists.
Replace Boost.Bind and Boost.Phoenix with lambdas.
|
|
NamedTempFile used to use APR calls to discover a suitable temp directory,
synthesize a temp filename template, generate the unique file, write its
content and ultimately delete it. This required a reference to gAPRPoolp as
the default value of an optional constructor argument in case some usage
demanded an alternative APR memory pool. It also used Boost.Phoenix
placeholders to magically synthesize a callable. Replace APR calls with
Boost.Filesystem; replace Boost.Phoenix with lambdas. Break out unique path
generation logic as static NamedTempFile::temp_path(). In a nod to GitHub
Actions builds, honor RUNNER_TEMP environment variable if set.
test.cpp's RecordToTempFile need no longer pass an apr_pool_t* to
NamedTempFile.
NamedTempFile's constructor now accepts an optional suffix, making subclass
NamedExtTempFile nearly trivial. It no longer needs to create or remove a
symlink, for which it used to use APR calls.
llprocess_test.cpp's NamedTempDir used to use Python's tempfile.mkdtemp() to
create a temp directory, and apr_dir_remove() to destroy it. Replace both with
NamedTempFile::temp_path() and Boost.Filesystem.
Also add diagnostic output for LLProcess test failure. If llprocess_test
cannot launch a child process, notice the APR_LOG environment variable
recognized by our patched apr_suite to engage logging, and report the contents
of that file.
|
|
This conditional code hasn't been used since June 2008, possibly even earlier.
|
|
|
|
functions in LSL editor
|
|
|
|
|
|
inappropriate param
|
|
Same thing as commit cf692c40b0b9f8d0d04cd10a02a84e3f697a2e99
which was removed due to shutdown freezes.
Error thread is no longer there so doesn't cause any race sonditions,
was not able to repro any issues so will ask QA to test shutdown
|