Commit Graph

2997 Commits

Author SHA1 Message Date
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
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
Aleric Inglewood
06730d1a7e Fix recursive calls to LLWaterParamManager::initSingleton and LLWLParamManager::initSingleton 2013-03-19 22:44:01 +01:00
Aleric Inglewood
fc642019b3 Fix recursive call to LLNotifications::initSingleton 2013-03-19 19:56:20 +01:00
Aleric Inglewood
5a8308109b Lowered CurlTimeoutLowSpeedLimit from 56 kB/s to 7 kB/s.
This value really IS in bytes/s (not for the total), and apparently 56
kB/s is too optimistic. The value was used by LL for transfers that went
beyond the total download time (2 minutes?), adding enough seconds per
received bytes to the timeout to allow a download at 56 kB/s to finish.

Our meaning is different however: we time out immediately and whenever
the download drops below this speed.

Perhaps a better algorithm is where the speed demand is based on the
total size of the download, but I'm not sure we always know the size of
downloads at this point.
2013-03-10 17:45:39 +01:00
Aleric Inglewood
7dfef31469 Possible upload timeout improvement.
When uploading finishes, but is not detected, the timeout should be for
"reply delay", the time that the server takes before it replies, and not
CurlTimeoutLowSpeedTime. This patch adds code that takes this failure
into account (which happened only ONCE for me on Metropolis while flying
around and using trickle (not sure if that is relevant), so it's not
that likely to improvement anything in practise. Note that it is
detected by an assertion when it happens, so that we can safely assume
it normally never happened on SL).

* Generalized PUT / POST configuration by adding
  CurlEasyRequest::setPut, which now also supports keep-alive (which
  still isn't used).
* Upload content length is now stored in CurlEasyRequest::mContentLength
* CurlEasyRequest::has_stalled() now return false if it was possbile
  that the 'upload finished' detect failed AND calls upload_finished()
  itself in that case, so it is no longer 'const'.
* If low speed is detect exactly when the last bytes are being attempted
  to be sent (unlikely scenario), then the upload gets 4 more seconds
  after which is switches to CurlTimeoutReplyDelay.
* Added EDoesAuthentication and EAllowCompressedReply to replace
  booleans, for readability and type-safety, as did EKeepAlive. Note
  that this change inverts the meaning of the compression related parameter.
* Unrelated: removed an unnecessary #include "llurlrequest.h" from
  llxmlrpcresponder.h
2013-03-10 16:43:15 +01:00
Aleric Inglewood
96d302aa42 Be more verbose about internal (curl / timeout) errors.
Translates the CURLE_WRITE_ERROR into what it really means: that the low
speed check failed.
2013-03-09 05:26:52 +01:00
Aleric Inglewood
933ca23348 Bug fix for ASSERT(previewp->mFormattedUpToDate || ret == SIZE_TOO_LARGE || ret == ENCODING_FAILED) 2013-03-08 03:37:00 +01:00
Aleric Inglewood
e3f4022ffa Merge remote-tracking branch 'singu/master'
Conflicts:
	indra/newview/llvoavatar.cpp

Bug fix is no longer needed.
2013-03-07 16:53:15 +01:00
Aleric Inglewood
f52e055414 Merge branch 'master' into curlthreading4 2013-03-07 13:49:42 +01:00
Aleric Inglewood
65d750b190 Add CPU cycles to AIStateMachine in the crashlogger
Also removes unused Debug Setting CurlMaximumNumberOfHandles.
The maximum number of handles is limitted by
CurlMaxTotalConcurrentConnections.
2013-03-07 13:44:40 +01:00
Aleric Inglewood
b9b5f13624 Run HTTPGetResponder in any thread.
This fixes a bug where unref() was called when a state machine was
aborted before it reached bs_initialized. Debug code was added to detect
errors related to that.

In order to run HTTPGetResponder in any thread, I needed direct access
to LLHTTPClient::request, so I had to move that to the header file,
and therefore had to move ERequestAction from LLURLRequest to
LLHTTPClient to avoid include problems.

With this, textures are fetched with no latency: call to
LLHTTPClient::request runs all the way till the state machine is idle
(AICurlEasyRequestStateMachine_waitAdded). There is small delay till the
curl thread wakes up, which then processes the request and opens the url
etc. When the transaction is finished, it calls
AIStateMachine::advance_state(AICurlEasyRequestStateMachine_removed_after_finished)
which subsequently doesn't return until the state machine is completely
finished (bs_killed). The LLURLRequest isn't deleted yet at that point
because the AITimer of the LLURLRequest runs in the main thread: it is
aborted, but only the next time the main thread state engines run that
is deleted and the timer keeps an LLPointer to it's parent, the
LLURLRequest, so only then the LLURLRequest object is destructed. This
however has nothing to do with the texture-bandwidth loop.
2013-03-07 01:52:21 +01:00
Aleric Inglewood
4cd7dec92b Merge branch 'master' into curlthreading4
Conflicts:
	indra/aistatemachine/aistatemachine.cpp
	indra/aistatemachine/aistatemachine.h
	indra/llmessage/aicurleasyrequeststatemachine.cpp
2013-03-06 03:34:05 +01:00
Aleric Inglewood
c4dceaf3e9 Rewrite of AIStateMachine, version 2. 2013-03-06 03:26:43 +01:00
Aleric Inglewood
d1d09d7c18 Bail out instead of crash when parseTEMessage fails. 2013-03-05 03:51:45 +01:00
Aleric Inglewood
186c3ef88a Add support for xdg-open. 2013-02-27 17:22:10 +01:00
Siana Gearz
c9ab38d449 Stream frequency change support and new anti-starvation strategy 2013-02-26 23:13:39 +01:00
Siana Gearz
6ee8cc5798 Unbreak skinning on low end hardware 2013-02-26 20:47:43 +01:00
Siana Gearz
f3b7102034 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-02-26 00:23:35 +01:00
Siana Gearz
13e0bc2742 Merge branch 'sunshine' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/newview/lldrawable.cpp
	indra/newview/llviewerwindow.cpp
2013-02-26 00:20:26 +01:00
Siana Gearz
a4b49e3fc2 Random stab at object updates. Tell me if it breaks anything. 2013-02-26 00:00:45 +01:00
Siana Gearz
e2659b801a Dirty fix object import 2013-02-25 23:58:43 +01:00
Shyotl
d27b329afb Minor bit of cleanup. Also now using glTexGenf instead of glTexGeni for fixed-function water texcoords. 2013-02-25 13:02:22 -06:00
Shyotl
e187e642c0 Restored some RLVa shownames logic that was clobbered a while ago. 2013-02-25 13:00:07 -06:00
Shyotl
fd21197d2a Wedged high-res non-tiled deferred snapshot logic into LLViewerWindow::rawRawSnapshot 2013-02-25 12:59:17 -06:00
Shyotl
34cf0329ab Crahfix for avatars, as destruction can be delayed via llpointer refs, meaning the region the av was in could be long gone before the avs destructor is actually called. Calling logPendingPhases in a more reasonable place (markDead). 2013-02-25 12:55:50 -06:00
Shyotl
94a0040ddb Sunshine catchup. 2013-02-25 12:53:18 -06:00
Aleric Inglewood
b6cbed838f Assertion bug fix for libcwd with dc::curl on and curlio off. 2013-02-23 21:37:07 +01:00
Aleric Inglewood
4851cc174e Revert "Work in progress"
This reverts commit ef35aa7954
because it contained too much wrong things that I won't be
using. I'll re-commit stuff from it after that that I do
want to keep.
2013-02-23 20:00:13 +01:00
Latif Khalifa
b2b24cee7a Compile fix 2013-02-21 01:11:03 +01:00
Aleric Inglewood
ef35aa7954 Work in progress
This work extends AIStateMachine to run multiplex() in the thread
that calls run(), cont() or set_state(). Note that all three
eventually call locked_cont(), so thats where multiplex() is called
from. Calling multiplex() means "running the state machine", as in
"calling multiplex_impl".

Currently only LLURLRequest uses this feature, and then only
for the HTTPGetResponder, and well only for the initializing,
start up and normal finish states.

A current/remaining problem is that we run into a situation where
the curl thread runs a statemachine to it's finish and kills it,
while the main thread is also 'running' it and tries to call
multiplex while the statemachine isn't running anymore.
2013-02-20 23:29:38 +01:00
Siana Gearz
8f5c58ff3c Merge branch 'Canon' of git://github.com/Lirusaito/SingularityViewer 2013-02-20 21:21:15 +01:00
Siana Gearz
408811c319 Merge branch 'sunshine' of git://github.com/Shyotl/SingularityViewer 2013-02-20 21:20:22 +01:00
Siana Gearz
1555d70230 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-02-20 21:19:39 +01:00
Lirusaito
b9da20f0d6 Added new controls to Network Preferences
Adds Texture Bandwidth slider
Adds Use HTTP for Inventory and Textures checkboxes.
Also, swaps out the bandwidth slider for a new Z Offset slider on quick settings, as bandwidth sliders should be set and forget, there is no modern need for them to be changed so frequently.

[Note to translators: please examine the network preferences after this update, controls have been moved and may now overlap.]
2013-02-20 06:16:53 -05:00
Shyotl
041481db89 Snap grid was pulling colors from wrong control group. 2013-02-19 22:33:31 -06:00
Shyotl
beeef8d5b9 Fix crash if periodic av metric update happens after disconnect. 2013-02-19 21:54:35 -06:00
Shyotl
8d09539fcc Added a couple missing entries to settings.xml 2013-02-19 21:52:13 -06:00
Shyotl
07bc115b1c Stars had nonsensical and broken face winding. 2013-02-19 20:58:13 -06:00
Siana Gearz
00cb7a0e51 Merge branch 'sunshine' of git://github.com/Shyotl/SingularityViewer 2013-02-19 21:12:14 +01:00
Lirusaito
49eb78db27 Added the ever-requested marketplace tab to search floater (When on SL Grids, only) 2013-02-19 08:40:12 -05:00
Shyotl
76f3dc9e19 Massive sunshine/viewer-dev catchup. Further implemented serverside baking and added/updated metrics feedback. 2013-02-19 01:50:46 -06:00
Melanie
994dfc5b29 Simplify the previous commit because commit callback for buttons is now
identical to the clicked callback, obviating the need to distinguish between
these control types.
2013-02-18 23:21:00 -05:00
Melanie
2b9c0e34c7 Fix the Octopus to not segfault anymore 2013-02-18 21:54:16 -05:00
Lirusaito
4c33328906 If RLVa is off, RLVa z offset should not be enforced.
Easier diff view without space changes.
2013-02-18 17:57:40 -05:00
Aleric Inglewood
ff3910a705 Merge remote-tracking branch 'singu/master' 2013-02-18 15:38:58 +01:00
Lirusaito
e01dd3292f Add Script Info menu entry to the self pie menu...
From the comments in llfloaterscriptlimits.cpp, it seems like this was intended to be a feature.
2013-02-17 23:19:23 -05:00
Lirusaito
833a6e8acf Fix up merge of llviewermessage.cpp between Shyotl/sunshine and Canon. 2013-02-17 21:00:51 -05:00
Lirusaito
3c544bceb3 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer into Canon 2013-02-17 19:47:48 -05:00