summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2016-03-17MergeRider Linden
2016-01-04MAINT-5976: On Linux builds do not specify explict for bool conversion operator.Rider Linden
2015-12-22MAINT-5976: Removed temp code to simulate Nat's fix. Now redundant.Rider Linden
2015-12-21Merged in nat_linden/viewer-azumarill-vivox (pull request #2)Rider Linden
MAINT-5976: Fix bug in LLCoros::set_consuming() mechanism.
2015-12-18And more linux linkingRider Linden
2015-12-18MAINT-5976: Fix bug in LLCoros::set_consuming() mechanism.Nat Goodspeed
The original implementation of set_consuming() involved a bool* pointing to a local bool in VoidListener::operator()()'s stack frame. postAndSuspend() would set that bool (through the pointer) as soon as it returned from suspension. The trouble with that is that LLEventMailDrop potentially calls its new listener (fulfilling the future) immediately in the listen_impl() override -- in other words, way up at the top of postAndSuspend(), well before the code that sets the relevant bool. Instead, make the adapter formerly known as VoidListener bind the coroutine's get_consuming() value at adapter construction time (before listening on the LLEventPump), so that its operator()() has the coroutine's correct get_consuming() value to return. Eliminating the bool* makes the code both simpler AND more correct! This change makes that adapter very specific to coroutine usage. Rename it FutureListener and migrate it from lleventcoros.h into the .cpp file. Nobody else was using it anyway. Make corresponding changes to postAndSuspend2() and its WaitForEventOnHelper class -- whose name no longer corresponds to the function as it used to. Rename that one FutureListener2. The new FutureListener functionality, common to both these adapters, makes it useful to derive FutureListener2 from FutureListener. Introduce llmake(), a generic function to deduce template type arguments from function parameter types. This allows us to remove the voidlistener() and wfeoh() helper functions. Hiding VoidListener broke one of the lleventcoro_test.cpp tests. But that test was sort of a lame recap of an earlier implementation of postAndSuspend(), based on LLEventPump events. Recast that test to illustrate how to use a coroutine future to suspend a coroutine for something other than an LLEventPump. But that rubbed my nose in the fact that we MUST wrap future's context switching with proper management of the current coroutine. Introduce LLCoros::Future<T>, which wraps boost::dcoroutines::future<T>. Use LLCoros::Future<T> in postAndSuspend() and postAndSuspend2().
2015-12-17MAINT-5977: Check get_consuming() as well as listener return when draining ↵Rider Linden
queue.
2015-12-17MAINT-5977: Finish implementation of MailBox event pump type for guaranteed ↵Rider Linden
delivery
2015-12-17Mergerider
2015-12-17MAINT-5976: Adding MailDrop type event Queuerider
2015-12-16MAINT-5976: Introduce LLCoros::set_consuming(bool).Nat Goodspeed
set_consuming(true) tells each postAndSuspend() call to consume the event for which it is suspending.
2015-12-04Initial changes for Vivox/Azumarill merge. Lots of temporary code and ↵Rider Linden
conditional compile switches. Begin switch from statemachine to coroutine.
2015-11-20MAINT-5835: Cut down on log spam from coros and voice.Rider Linden
2015-11-20WOLF-300: Re-enable llleap_test with the smaller data volume.Nat Goodspeed
2015-11-18WOLF-300: Try using a smaller data volume for LLLeap tests on Windows.Nat Goodspeed
2015-10-31Re-enable llprocess tests, leaving only llleap tests commented out.Nat Goodspeed
2015-10-31Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2015-10-17Suppress specifically the LLProcess and LLLeap integration testsNat Goodspeed
because of Oz's suspicion that they may, in some mysterious way, contribute to code-signing failures.
2015-10-19Merge from viewer release.Rider Linden
2015-10-13merge changes for MAINT-4734pavelkproductengine
2015-10-09Merge Xcode 7 Updatepavelkproductengine
2015-10-01Merge for Xcode 7rider
2015-09-30Merge downstream code, version 3.8.5AndreyL ProductEngine
2015-09-29DRTVWR-409: merge DRTVWR-368Rider Linden
2015-09-18comment out LL_DEBUGS that fails because 'expression evalauted desipite ↵callum_linden
being used as an operand to typeid'
2015-09-18Shouldn't have renamed this include.Rider Linden
2015-09-18Tweek to naming postEventAndSuspend -> postAndSuspendRider Linden
2015-09-18Set consistent terminology for yield/wait -> suspend for coroutines.Rider Linden
2015-09-18MAINT-5351: Zap one more vestigial reference to coroutine 'self' param.Nat Goodspeed
2015-09-10MAINT-5575: Finished converting experience cache to singletonRider Linden
MAINT-4952: Coverted VMM to coroutines
2015-08-25Reenable and correct link issue on linux llappearanceutility.Rider Linden
2015-08-20MAINT-5533 FIXED The fragment part of an URI is only shown if it contains a ↵AndreyL ProductEngine
query part as well. fix by Ansariel
2015-08-19Swap BOOST_COROUTINE and BOOST_CONTEXTRider Linden
2015-08-11MergeRider Linden
2015-08-04Merge downstream code and become version 3.8.3andreykproductengine
2015-08-04Merge downstream code and become version 3.8.3andreykproductengine
2015-07-15MergeRider Linden
2015-07-15Merge downstream code and become version 3.8.2andreykproductengine
2015-07-15Merge from viewer-relese and become version 3.8.2andreykproductengine
2015-07-143.8.1-releaseOz Linden
2015-07-12MAINT-5351: glh-linear 'equivalent' macro has been destroyed.Nat Goodspeed
Hopefully we no longer need to brute-force remove any more macros with the same name.
2015-07-10MAINT-5351: Finish cleaning up messy merge from backing out backoutNat Goodspeed
2015-07-10Automated merge with file:///Users/nat/linden/maint-4952-v-t-uNat Goodspeed
2015-07-10Merge restore of more selfless changesNat Goodspeed
2015-07-10Backed out changeset bab1000e1b2d: restore 'selfless' changesNat Goodspeed
2015-07-10Merge restore of selfless changesNat Goodspeed
2015-07-10Backed out changeset 6e1fa9518747: reapply 'selfless' changesNat Goodspeed
2015-07-10MAINT-5351: Improve management of "current" coroutine information.Nat Goodspeed
Our first cut at tracking the "current" coroutine simply reset the pointer to NULL every time we context-switched away. But that strategy doesn't handle the case of coroutine A launching coroutine B. Introduce LLCoros::CoroData to track, among other things, the previous value of the current-coroutine pointer each time we switch into a coroutine. Restore THAT value when we switch back out.
2015-07-07MergeRider Linden
2015-07-07Backout selfles merge 738255dbbfd679d9e615baab3398e5e345bbb3c5Rider Linden