<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcommon/llcond.h, branch 26.3</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://megapahit.org/viewer.git/atom?h=26.3</id>
<link rel='self' href='https://megapahit.org/viewer.git/atom?h=26.3'/>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/'/>
<updated>2024-04-29T04:56:09Z</updated>
<entry>
<title>#824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed</title>
<updated>2024-04-29T04:56:09Z</updated>
<author>
<name>Andrey Lihatskiy</name>
<email>alihatskiy@productengine.com</email>
</author>
<published>2024-04-29T04:43:28Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=1b68f71348ecf3983b76b40d7940da8377f049b7'/>
<id>urn:sha1:1b68f71348ecf3983b76b40d7940da8377f049b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-16094: Fix WorkQueue test for correct behavior of runFor().</title>
<updated>2021-11-24T17:56:48Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-11-24T17:56:48Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=04ebc11a2d8a2e59abda5061e35e504fc30504d2'/>
<id>urn:sha1:04ebc11a2d8a2e59abda5061e35e504fc30504d2</id>
<content type='text'>
Turns out that one of our WorkQueue integration tests was relying on the
incorrect runFor() behavior that we just fixed, so the test broke. Now that
runFor() doesn't wait around for work to be posted, use an explicit wait loop
instead.

To support this, add LLCond::get(functor), where functor must accept a const
reference to the stored data. This new get() returns whatever the functor
returns, allowing a caller to peek at the stored data.

Also use universal references for all remaining LLCond functor arguments.
</content>
</entry>
<entry>
<title>SL-16024: Make LLCond::get() lock and return by value.</title>
<updated>2021-10-07T19:32:19Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-10-07T19:32:19Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=6e06d1db6045df2e4961243f379c4d7695a8190d'/>
<id>urn:sha1:6e06d1db6045df2e4961243f379c4d7695a8190d</id>
<content type='text'>
Its previous behavior, returning a const reference without locking, was wrong:
it could return a reference to an object in an inconsistent state if it was
concurrently being modified on another thread.

Locking the mutex and returning a copy by value is the correct behavior.
</content>
</entry>
<entry>
<title>DRTVWR-476: Wrap boost::fibers::mutex et al. with LLCoros aliases.</title>
<updated>2020-05-14T18:51:52Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2020-05-14T18:51:52Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=98dfba0d2f24aeb92e023df9d48b23fef8253024'/>
<id>urn:sha1:98dfba0d2f24aeb92e023df9d48b23fef8253024</id>
<content type='text'>
Specifically:

LLCoros::Mutex means boost::fibers::mutex
LLCoros::LockType means std::unique_lock&lt;boost::fibers::mutex&gt;
LLCoros::ConditionVariable means boost::fibers::condition_variable
LLCoros::cv_status means boost::fibers::cv_status

So as not to drag in all of boost::fibers::mutex.hpp or condition_variable.hpp
for each consumer of llcoros.h, instead #define LLCOROS_MUTEX_HEADER and
LLCOROS_CONDVAR_HEADER. Those who need them can #include the relevant macro.

Update llcond.h and llthreadsafequeue.h accordingly.
</content>
</entry>
<entry>
<title>DRTVWR-476: Fix first round of compile errors.</title>
<updated>2020-03-25T22:44:04Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-07-18T10:03:12Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=3810145c1d8e21fc0819d71bbc42dcecced1f7e4'/>
<id>urn:sha1:3810145c1d8e21fc0819d71bbc42dcecced1f7e4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-476: Fix convert(F32Milliseconds)</title>
<updated>2020-03-25T22:44:04Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-07-17T16:56:19Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=72863b942829528a8a3af69d6e1e04a7ac139271'/>
<id>urn:sha1:72863b942829528a8a3af69d6e1e04a7ac139271</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-476: Review response: remove wait_until() methods and LLDate.</title>
<updated>2020-03-25T22:44:04Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-07-17T16:49:31Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=7e2cc57d61d09ca106243d51494aef025c8729fa'/>
<id>urn:sha1:7e2cc57d61d09ca106243d51494aef025c8729fa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-476: Review response: support LLDate and llunits.h durations.</title>
<updated>2020-03-25T22:44:04Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-07-17T13:51:59Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=a3de18996f0c4aee37266c1a3d72c5cc9cadd6c1'/>
<id>urn:sha1:a3de18996f0c4aee37266c1a3d72c5cc9cadd6c1</id>
<content type='text'>
Also introduce value_type typedef.
</content>
</entry>
<entry>
<title>DRTVWR-476: WIP: Untested preliminary implementation of LLCond.</title>
<updated>2020-03-25T22:44:04Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2019-07-11T18:52:30Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=d8e08ecde97362f6b3117cbb68395fdd299027e2'/>
<id>urn:sha1:d8e08ecde97362f6b3117cbb68395fdd299027e2</id>
<content type='text'>
LLCond encapsulates the usage patterns required to properly use
condition_variable. We also provide LLScalarCond, LLBoolCond and LLOneShotCond.
</content>
</entry>
</feed>
