Added a new statemachine AIFetchInventoryFolder, which can be used
to fetch the contents of a folder by name or UUID.
Also added AIEvent (and one event,
AIEvent::LLInventoryModel_mIsAgentInvUsable_true, which is needed
for AIFetchInventoryFolder).
Fixed LLInventoryModel::sBackgroundFetchActive to correctly reflect
whether or not LLInventoryModel::backgroundFetch is added to
gIdleCallbacks.
Avoid duplicated entries in sFetchQueue.
Reset sFullFetchStarted in LLInventoryModel::stopBackgroundFetch to
allow for a renewed full fetch when some single-folder fetch stops it.
Added AIStateMachine::mQueued to make calling 'cont()' more robust:
calling cont() / idle() / cont() on a row would otherwise add a
statemachine twice to the active list, which would cause a crash
when it's killed.
The previous hack wasn't thread-safe: read-only access would
access the reference counter multiple times at the same time,
which therefore would have to be thread-local to ever work.
The current solution just disables the calls to lock/unlock
for copyconstructed objects, which works if the copyconstructed
object isn't used anymore after the original is destructed.
This is the case then the copy construction only happens
upon passing a temporary to a function, which is the case.
Resolved Conflicts:
indra/newview/llviewermedia.cpp
indra/plugins/base_media/CMakeLists.txt
Trivial fix for indra/newview/llviewermedia.cpp.
Moved 'prepare' dependency from base_media to
base_basic because media already depends on basic.
g++ 4.2 (and possibly earlier) apparently call a copy
constructor when passing a temporary to a function
that takes a const reference. Added code to allow
copy-constructing the AI*Access classes for this
compiler.
g++-4.2.x also bails out when it encounters files that
do not end on a newline. So, also added those where
they were missing.