Commit Graph

3123 Commits

Author SHA1 Message Date
Aleric Inglewood
e0aa3489f8 Fix for AIStateMachineThread (LLThreadSafeRefCount: deleting non-zero reference)
This fixes
https://code.google.com/p/singularity-viewer/issues/detail?id=736

The problem was that we need to keep the 'user' derived THREAD_IMPL
alive in the thread, and therefore used an LLPointer<THREAD_IMPL>
(as base class of AIStateMachineThread<THREAD_IMPL>), and therefore
THREAD_IMPL, derived from AIThreadImpl had to be derived from
LLThreadSafeRefCount. However, AIStateMachineThread<THREAD_IMPL> also
needed to be a statemachine of itself and is derived from
AIStateMachineThreadBase derived from AIStateMachine which is ALSO
derived from LLThreadSafeRefCount - that in this case wasn't really
needed. An attempt to deactive it by calling ref() from the constructor
of AIStateMachineThreadBase failed on the fact that LLThreadSafeRefCount
insists that its ref count mRef is exactly zero when it is being
deleted.

The chosen solution is to remove the ref count from AIThreadImpl and use
the LLThreadSafeRefCount base class of AIStateMachineThreadBase. The
result is that not only THREAD_IMPL, but also the state machine object
is kept alive, but that doesn't seem like a problem.

Thus, instead of passing a AIThreadImpl* to
AIStateMachineThreadBase::Thread, we now pass a
AIStateMachineThreadBase* to it to keep the whole of the
AIStateMachineThread<THREAD_IMPL> object alive, which has a THREAD_IMPL
as member now. This member then can be accessed through a virtual
function impl(). Another result of this change is that the 'user' (the
class derived from AIThreadImpl, THREAD_IMPL) now has to deal with the
LLPointer, and use LLPointer<AIStateMachineThread<THREAD_IMPL> >
instead of just AIStateMachineThread<THREAD_IMPL> and also allocate
this object himself. The access from there then changes into a -> to
access the state machine (as opposed to a .) and ->thread_impl() to
access the THREAD_IMPL object (as opposed to a ->).
2013-04-20 04:28:23 +02:00
Aleric Inglewood
fce106f7e2 PerHost became PerService
Reflect the fact that we include port number in its name.
2013-04-09 05:06:32 +02:00
Aleric Inglewood
bb948ce6d5 Use host:port as key for the "PerHost" request queue, instead of just the hostname.
Rationale: LL is doing all throttling per service (host:port), not per
service hostname. Also, textures and capabilities use the same host: the
sim you are connected to. Splitting the queues up on a per-service basis
will stop the textures from blocking a capability request.
2013-04-09 04:32:36 +02:00
Aleric Inglewood
3af89dd685 Temporarily add old bandwidth throttle method back. 2013-04-09 04:25:28 +02:00
Aleric Inglewood
748d339ee6 Move decision whether or not to add new HTTP request from texture fetcher to AICurl
After commit things compile again :).
The HTTP bandwidth throttling is not yet implemented. I'll put a
temporary fix back the next commit that just does it the "old way"...
2013-04-08 22:46:01 +02:00
Aleric Inglewood
8d6f5c6ffc Compile error fix.
Cannot pass non-trivially copyable type std::string through '...'.
2013-04-08 19:54:07 +02:00
Aleric Inglewood
9cc801f669 Added LLTextureFetchWorker::PerHostPtr
Points to the AIPerHostRequestQueue instance corresponding to the
hostname in LLTextureFetchWorker::mUrl. This is basically a cache as we
could of course just retrieve that instance from mUrl at any time,
everytime. Needed in a future commit.
2013-04-08 06:41:08 +02:00
Aleric Inglewood
79bcb1ec07 Print info in texture console about curl request queuing
This includes also non-texture requests (not sure if it's worth it to
explicitely separate this data for just textures).

The texture console now prints: HTTP:c/q/a/r
Where, c = number of 'add' request commands in the command queue
(minus the number of 'remove' request in the command queue and not
taking into account the command_being_processed, nor entirely being
thread-safe with regard to adding requests to 'q' or 'a' next: it is
possible that a request is no longer counted in 'c' but not yet is added
to 'q' or 'a'.
q = number of queued (throttled) requests (by the curl thread).
a = number of actually added requests (to the multi handle).
r = last returned value of 'running handles' by libcurl.

Obviously, c and q should be small (0 or 1) most of the time and a and r
should be equal and maxed out. This turns out to be the case.
2013-04-08 06:41:07 +02:00
Aleric Inglewood
6c9b136d32 Removal of HTTPRequestRate and dead code. 2013-04-08 06:39:52 +02:00
Aleric Inglewood
07201a5cfe Add AICurlInterface::getNumHTTPRunning
Replaces LLTextureFetch::getNumHTTPRequests.
Returns AICurlInterface::Stats::running_handles.
This is work in progress that temporarily doesn't compile because
LLTextureFetch::getNumHTTPRequests is still being used somewhere.
2013-04-08 06:39:06 +02:00
Latif Khalifa
fc4fcc9450 Merge remote-tracking branch 'shyotl/master' 2013-04-06 09:26:23 +02:00
Shyotl
b16bb264cc Added an experimental new alphamask detection method(set SHUseRMSEAutoMask to TRUE to use. Adjust SHAlphaMaskMaxRMSE to tweak cutoff). Fixed per-frame sky updates hammering analyzeAlpha. 2013-04-06 02:04:46 -05:00
Latif Khalifa
5ad2e32712 Merge remote-tracking branch 'lirusaito/master' 2013-04-05 23:11:30 +02:00
Nyx Linden
1a3e2ff18e SH-4050 FIX camera goes below ground when avatar offset set to 0
Added a constraint to ensure that the avatar's height (with offset)
does not go below 0.1 meters. Camera was getting confused since the avatar's
effective height was negative.

Note the avatar is mostly underground/contorted even at 0.1 meters, but
most users setting values this low will be making ultra-tinies and would
be hiding the avatar mesh. Camera stays above ground when height is at 0.1.

Conflicts:

	indra/llappearance/llavatarappearance.cpp
2013-04-05 23:10:16 +02:00
Nyx Linden
add9bb9945 SH-4044 FIX voice dot is offset vertically if using avatar height offset
Added the height offset in one too many places. fixing.
2013-04-05 23:10:16 +02:00
Lirusaito
da55a4a51c Fix Issue 726
Instead of focusing the chat bar when the chat history floater is visible, focus it onFocusReceived
This avoids the floater grabbing focus when returning from mouselook.
2013-04-04 18:31:35 -04:00
Latif Khalifa
82ecdd1079 Merge remote-tracking branch 'lirusaito/master' 2013-04-01 17:14:56 +02:00
Latif Khalifa
1fe3bf8357 Align whitespace with upstream in hope of avoiding future merge conflicts 2013-04-01 15:19:48 +02:00
Latif Khalifa
7e11ab9e95 Merge remote-tracking branch 'shyotl/master' 2013-04-01 14:44:07 +02:00
Latif Khalifa
7c7722a049 Merge remote-tracking branch 'aleric/master' 2013-04-01 14:43:59 +02:00
Shyotl
e2255f419d Commented out a spammy llinfos message. 2013-03-30 01:26:30 -05:00
Shyotl
b07ab02f54 Added blendfunc checks when RenderDebugGL is TRUE. 2013-03-30 01:26:07 -05:00
Shyotl
03272c8875 Clamp LLMeshSkinInfo::mJointNames to a max of 64 entries. Also checking size in lldrawpoolavatar(Redundant checks added to just match similar logic LLRiggedVolume::update more closely.) 2013-03-30 01:01:53 -05:00
Shyotl
1965224912 Stabbed some blendfunc state issues. This fixes some ui flicker which popped up recently (perhaps after merging, or I just never noticed it before then) 2013-03-30 00:57:49 -05:00
Nyx Linden
2d6bc052ab SUN-57 SH-4039 FIX bake fail on non-ssb regions
We were getting the texture ID from the type,index couple, but were not
passing in index, which defaulted to 0. texture ID is available from the
texture object itself, so using that and removing the index parameter
to prevent future confusion.

Conflicts:

	indra/newview/llvoavatarself.cpp
2013-03-30 00:42:43 +01:00
Brad Payne (Vir Linden)
201647e1cf SH-4001 FIX - made local texture loading universal.
Conflicts:

	indra/newview/llvoavatarself.cpp
2013-03-30 00:37:21 +01:00
Latif Khalifa
20fe807271 First re-apply "SH-3941 SH-3954 FIX local appearance does not update properly" 2013-03-30 00:30:07 +01:00
Lirusaito
b3c78b0ca5 Fix ups for 6525ccc384
If log_path is empty, we shouldn't setChatLogsDir to it.
In fact, this may have been the cause of something Nomade Zhao brought up.

Also, InstantMessageLogPathAnyAccount was accidentally being set as a PerAccount
2013-03-29 15:53:30 -04:00
Aleric Inglewood
ac84e02018 Do not use a timer for HTTP get in LLTextureFetchWorker::doWork
All HTTP timing is done by AIHTTPTimeoutPolicy.

Inside LLTextureFetchWorker::doWork when mState == SEND_HTTP_REQ,
mCanUseHTTP is true, throttling is not in effect and mURL is not empty,
mLoaded is set to FALSE, mState is set to WAIT_HTTP_REQ and
LLHTTPClient::request is called that starts the download by curl.
A call back to LLTextureFetchWorker::callbackHttpGet is guaranteed,
which causes mLoaded to be set to TRUE (HTTPGetResponder::completedRaw
calls LLTextureFetchWorker::callbackHttpGet which sets mRequestedSize to -1
(if there was an error) and mLoaded to TRUE).

Being in state WAIT_HTTP_REQ, once mLoaded == TRUE (and mRequestedSize
is -1), the different timeout errors are handled.
2013-03-27 22:37:21 +01:00
Aleric Inglewood
bbf24b4994 Indentation fix. 2013-03-27 21:45:09 +01:00
Latif Khalifa
f63286b333 Merge remote-tracking branch 'shyotl/master' 2013-03-27 10:16:30 +01:00
Shyotl
92cc65bf5e Decoupled rlva/setting based z-offset from param based z-offset. This reverts questionable changes introduced in the recent rlva merge. 2013-03-27 01:36:23 -05:00
Shyotl
60f1bada3d Undo a bit of regression in llphysicsmotion 2013-03-26 23:10:26 -05:00
Aleric Inglewood
41a0681768 Revert "Snapshot floater aesthetics"
This reverts commit 63dcd7ba32.

That commit is nonsense and only shows that Liru has no clue what he is
doing when it comes to the snapshot stuff :/.

And no, I wasn't even AWARE he made this commit, I was just happily
exploring and wanted to make a few snapshots when I suddenly noticed
that several things were BROKEN: the aspect that the fullscreen preview
was shown with was wrong, and when I wanted to limit the aspect of my
feed upload that wasn't possible anymore ?!?!??  WTF

Please don't screw up the hard work of others without at LEAST first
consulting them.
2013-03-27 02:22:48 +01:00
Latif Khalifa
303840f729 Merge remote-tracking branch 'shyotl/sunshine'
Conflicts:
	indra/llappearance/llavatarappearance.cpp
	indra/newview/character/avatar_lad.xml
	indra/newview/llagent.cpp
2013-03-26 23:54:36 +01:00
Aleric Inglewood
779f697ffb Fix yield_ms().
This fixes
https://code.google.com/p/singularity-viewer/issues/detail?id=714

The problem was a typo in AIStateMachine::sleep, >= should have been <=
which caused a state machine that uses yield_ms() to never run anymore
when next run it already should have run again. AIFilePicker is the only
state machine that currently uses yield_ms and I hadn't spotted this
because I don't have plugin messages on by default which made my viewer
just that much faster that it the yield never expired the first run
already (causing it to expire immediately).

The rest of the changes in this commit are just minor improvements /
conformation to the EXAMPLE_CODE in aistatemachine.cpp.
2013-03-26 23:30:04 +01:00
Aleric Inglewood
524fdf033d Merge remote-tracking branch 'singu/master' 2013-03-26 21:10:00 +01:00
Shyotl
441b564afe RLVa update. 2013-03-26 00:46:11 -05:00
Aleric Inglewood
b20886a481 Allow TOS redirect. Fix upload finished detection when redirecting.
This fixes https://code.google.com/p/singularity-viewer/issues/detail?id=705

Adds 'bool redirect_status_ok(void) const { return true; }' to LLIamHere,
because it's ok to receive a 302 status there. Likewise added to LLIamHereVoice,
because that has the same comment in its error() method.

Also fixes the problem that if two redirects occur on a row, then the
upload_finished detection asserted because it would detect the third
time that libcurl turned off writing to the socket as a failure (the
second time wasn't a problem because mUploadFinished was reset upon
receiving the first 302 header, but not upon receiving the second
header).
2013-03-25 04:41:07 +01:00
Latif Khalifa
ea4f2ec7a7 Merge remote-tracking branch 'origin/sunshine2' 2013-03-24 14:23:18 +01:00
Latif Khalifa
afc137bb3f Merge remote-tracking branch 'aleric/master' 2013-03-24 14:22:28 +01:00
Aleric Inglewood
d526d388ef Make AIRegisteredStateMachines more robust.
Now that a call to cont() can schedule a run of the statemachine, we
need this change to make it robust (the comment that cont() does never
access mRegisteredStateMachines no longer holds).
2013-03-23 22:17:27 +01:00
Latif Khalifa
ef6549ce32 Set default network buffer size to 6000ms for music streaming 2013-03-22 22:43:31 +01:00
Latif Khalifa
f1cf73b8af Reverted addition of soon to be obsolete way of setting z offset to quick prefs 2013-03-22 22:40:37 +01:00
Latif Khalifa
40133643c0 Revert "SH-3941 SH-3954 FIX local appearance does not update properly"
This causes SUN-57

This reverts commit 707f3959f9.
2013-03-22 21:52:17 +01:00
Aleric Inglewood
835240fda1 Fix crash in LLTextureFetch::getWorker upon viewer exit.
This is now necessary since the curl thread no longer syncs with the
main thread: it is possible that a request finishes after a texture
fetch thread was shot down but before curl was stopped, and curl
calling BufferedCurlEasyRequest::processOutput while objects that the
responder uses were already destructed (most notably
LLTextureFetch itself).
2013-03-21 20:26:01 +01:00
Aleric Inglewood
00b223f2a4 Do not request empty folders.
Doing this resulted in a 404 on Aditi, and although that was a server
bug; it still doesn't seem to make much sense to do the request in the
first place.
2013-03-20 22:51:11 +01:00
Lirusaito
212faab988 Merge branch 'Cupcake' of https://github.com/LightDrake/SingularityViewer into Frosting 2013-03-20 09:01:37 -04:00
Lirusaito
f87a967c0d Pathfinding UI: Fix the open with selection via pie menu bug.
Also comments out an unnecessary excess call.
2013-03-20 08:37:06 -04:00
Drake Arconis
5dd957f117 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer into Cupcake 2013-03-20 08:31:21 -04:00