Commit Graph

289 Commits

Author SHA1 Message Date
Aleric Inglewood
91df8446b0 Oops bug fix for last commit. 2012-08-10 05:37:41 +02:00
Aleric Inglewood
ffb55f482a Compile fixes for windows. 2012-08-10 05:35:11 +02:00
Aleric Inglewood
cd197a3807 Fix LL_REF_COUNT_DEBUG debug code.
This code was broken with respect to LLAPRPool.
Fix that, and also fixed it for the new AIThreadID API.
2012-08-09 07:00:51 +02:00
Aleric Inglewood
37c8ea54eb Add AIThreadID - Cleanup of apr_os_thread* related code.
Apart from just really cleaning things up and moving
everything into one class regarding thread IDs (ie,
is_main_thread(), comparing ID's etc), this also
fixes an obscure bug where LL was casting thread ID's
to U32 and then compared those to find out if it
the same thread. It's theoretically possible that
such fails on a 64bit OS.

By generalizing the interface, I adopted the use
of a thread-local cache for the current thread ID
as used by LLMutex et al, so now all code benefits
from that. The idea was even extended to now also
be used for is_main_thread() tests and even resetting
a thread ID to the ID of the current thread.
2012-08-09 06:30:31 +02:00
Aleric Inglewood
cc50e620c0 Merge branch 'curlthreading2' into breakforce 2012-08-07 05:22:10 +02:00
Aleric Inglewood
2fbf6b732e Fix undefined symbols linker error on linux / relwithdebinfo.
See http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Interface.html
With this patch, the #pragma will also be used with icc and clang,
I didn't test this.
2012-08-07 05:18:24 +02:00
Aleric Inglewood
caef97ad36 Print all libcurl calls if -DDEBUG_CURLIO. Don't create static lib for cwdebug.
Basically, cmake doesn't support linking static libs into a shared lib.
The correct way is to just specify source files in subdirectories
directly as source files of the shared library. This patch changes that.

Also, after this commit, when DEBUG_CURLIO is defined, every call to
libcurl is printed to llinfos (or to dc::curl when using libcwd).
2012-08-05 18:51:21 +02:00
Aleric Inglewood
dd47123bde Add possibility to suppress function name prefix in debug output.
Adds llinfos_nf et al.
2012-07-31 04:56:03 +02:00
Siana Gearz
2bcabce1d6 Merge branch 'curlthreading2' of git://github.com/AlericInglewood/SingularityViewer into curlthreading 2012-07-28 17:28:18 +02:00
Aleric Inglewood
785729abdf Merge branch 'master' into curlthreading2 2012-07-22 04:17:34 +02:00
Aleric Inglewood
2830b35aa6 Avoid dead lock in LLQueuedThread::generateHandle / LLTextureFetchWorker::callbackDecoded
Thead 1:

indra/llcommon/llqueuedthread.cpp:456:

452                     if (complete)
453                     {
454                             lockData();             // This locks LLThread::mRunCondition
455                             req->setStatus(STATUS_COMPLETE);
456                             req->finishRequest(true);

LLImageDecodeThread::ImageRequest::finishRequest calls:
    mResponder->completed(success, mDecodedImageRaw, mDecodedImageAux);

LLTextureFetchWorker::DecodeResponder::completed calls:
    worker->callbackDecoded(success, raw, aux);

LLTextureFetchWorker::callbackDecoded calls:
    LLMutexLock lock(&mWorkMutex);                      // This locks LLTextureFetchWorker::mWorkMutex

Thread 2:

LLTextureFetchWorker::doWork calls:
    LLMutexLock lock(&mWorkMutex);                      // This locks LLTextureFetchWorker::mWorkMutex
    .
    .
    .
    mDecodeHandle = mFetcher->mImageDecodeThread->decodeImage(mFormattedImage, image_priority, discard, mNeedsAux, new DecodeResponder(mFetcher, mID, this));

LLImageDecodeThread::decodeImage calls:
    handle_t handle = generateHandle();

LLQueuedThread::generateHandle calls:
    lockData();                                         // This locks LLThread::mRunCondition
2012-07-22 04:13:23 +02:00
Siana Gearz
8802d5033f Merge branch 'master' into curlthreading
Conflicts:
	indra/newview/viewer_manifest.py
2012-07-20 00:37:58 +02:00
Aleric Inglewood
7f78870295 Merge remote-tracking branch 'siana/master' into curlthreading2
Conflicts:
	indra/llcommon/llstring.cpp
	indra/llmessage/llcurl.cpp
	indra/newview/llviewertexturelist.cpp
	indra/newview/viewer_manifest.py
	install.xml

Resolved:
	indra/llcommon/llstring.cpp :
		two different ways to work around compile error.
	indra/llmessage/llcurl.cpp :
		this file is no longer used.. I deleted huge
		parts to mark that I implemented that. Siana
		apparently made a few changes in those parts.
	indra/newview/llviewertexturelist.cpp :
		manually copied patch. Mine also removed trailing
		spaces, keeping that.
	indra/newview/viewer_manifest.py:
		Collision with changes from Liru, which have been
		ignored (kept siana/master).
	install.xml:
		Collision with an earlier screw up. I kept the
		fix from siana/master.
2012-07-18 02:08:31 +02:00
Drake Arconis
7721c6e3da Resolved issue with glibc 2.16
Resolved issues introduced by changes made in glibc 2.16 removing the undocumented definition of struct siginfo from bits/siginfo.h
2012-07-17 16:06:31 -04:00
Siana Gearz
891a330955 Version 1.7.0 2012-07-16 12:19:22 +02:00
Drake Arconis
edb144bd1d Fixed ugly workaround for compiler detection
Corrected ugly workaround for compiler detection in code with
correct definition in llpreprocessor.h and updated various #if
to reflect this.
2012-07-10 14:15:59 -04:00
Aleric Inglewood
f012f664d2 Threading voodoo: allow multiple concurrent calls to set_state().
This patch prepares AIStateMachine for the use of AITimer together
with calls to set_state() from other threads. The extra problem
in this case is that the main-thread CAN start running the state
machine again (when the timer times out), while before it was
assumed to be idle until a thread called set_state.

This also takes into account that a thread might call set_state()
and then AGAIN call set_state() before the main thread gets the
chance to call idle() inbetween.
2012-07-09 04:19:28 +02:00
Drake Arconis
cb0f4f8f10 Added support for Intel c++ Composer Xe
Added support for building with Intel C++ Composer Xe
Fixed a warning thrown by it
2012-07-08 10:29:28 -04:00
Aleric Inglewood
93778eccbb Compile fix for g++ 4.7 2012-07-07 18:29:55 +02:00
Lirusaito
9c61998dac Spelling fixes...
to a header *sigh*
2012-07-03 00:54:25 -04:00
Drake Arconis
947990c2ad Merge remote-tracking branch 'aleric/V2MultiWear' into AltCompilers 2012-07-03 00:34:07 +00:00
Aleric Inglewood
e36042bb76 More that I forgot it extract from curlthreading2. 2012-07-03 02:33:09 +02:00
Drake Arconis
7ad1b8731d Merge remote-tracking branch 'aleric/V2MultiWear' into AltCompilers 2012-07-02 21:25:40 +00:00
Aleric Inglewood
d66acdf240 Add the rest of sRunning too. 2012-07-02 23:22:42 +02:00
Drake Arconis
8eb319d3ba Merge remote-tracking branch 'aleric/V2MultiWear' into AltCompilers 2012-07-02 21:08:04 +00:00
Drake Arconis
c464a8da30 Merge branch 'V2MultiWear' of bitbucket.org:Lirusaito/singularityviewer into AltCompilers
Conflicts:
	indra/cmake/00-Common.cmake
	indra/newview/llvovolume.cpp
2012-07-02 20:16:56 +00:00
Lirusaito
e6689f830a Update llstring, and fix an error only presented in debug builds. 2012-07-02 15:57:55 -04:00
Drake Arconis
ece9dda7b4 Initial support for the Clang compiler and numerous warning fixes 2012-07-02 19:45:41 +00:00
Lirusaito
24db228406 Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer into V2MultiWear
Conflicts:
	indra/llrender/llvertexbuffer.h
	indra/newview/llface.cpp
	indra/newview/llpaneleditwearable.h
2012-07-02 04:14:52 -04:00
Shyotl
67e1a3b004 Lindie viewer-dev catchup regarding rendering pipeline. 2012-06-30 20:05:31 -05:00
Aleric Inglewood
cb5efad026 Turn llassert[_always] into a (single) statement and print line nr in decimal. 2012-06-30 21:14:18 +02:00
Aleric Inglewood
69ca6cd5b2 WIP: Make curl thread code robust and flexible.
Conflicts:

	indra/llmessage/llcurl.cpp
	indra/llmessage/llcurl.h
	indra/newview/app_settings/settings.xml
	indra/newview/llappviewer.cpp
	indra/newview/llmeshrepository.cpp

Resolved:

	indra/llmessage/llcurl.cpp:

	  Basically removed (not used anyway)

	indra/llmessage/llcurl.h:

	  Basically removed (just includes aiculr.h now)

	indra/newview/app_settings/settings.xml:

	  CurlUseMultipleThreads was remvoved.
	  CurlMaximumNumberOfHandles and CurlRequestTimeOut
	  are still in there, but unused at the moment.

	indra/newview/llappviewer.cpp:

	  CurlMaximumNumberOfHandles and CurlRequestTimeOut
	  are unused at the moment.

	indra/newview/llmeshrepository.cpp:

	  Lock mSignal always (is unlocked inside wait()).
	  Use mSignal lock to see if we are waiting; remove mWaiting.
	  Return false from the MeshFetch functions iff we have to retry
	  a HTTP fetch. Catch the error exception thrown by getByteRange
	  instead of using it's return value (always returns true
	  anyway).
2012-06-28 01:30:46 +02:00
Aleric Inglewood
221e3908b9 There is no need to use a pure virtual destructor, and doing so crashes libcwd when configured with --enable-alloc. 2012-06-27 04:27:09 +02:00
Aleric Inglewood
0bee4a922f Make sure that sRunning <= number of threads with status RUNNING. 2012-06-27 04:27:08 +02:00
Aleric Inglewood
5996ff1fa2 Fixed a comment. 2012-06-27 04:27:08 +02:00
Aleric Inglewood
e7a3a150a7 Add AIThreadSafeBits::wrapper_cast to cast wrapped object back to wrapper class. 2012-06-27 04:27:08 +02:00
Aleric Inglewood
e9df867a21 Like the other AIThreadSafe* objects, disallow AIThreadSafeSingleThread copy/assign 2012-06-27 04:27:07 +02:00
Aleric Inglewood
4391614d6e AIThreadSafe* update.
Updated/added documentation.
Removed AIThreadSafeWindowsHack that annoyed me (fix your compiler).
Don't use 'static' in anonymous namespace.
Use the AIThreadSafe*DC variants for default constructed objects,
as opposed to the AITHREADSAFE* macro's.
2012-06-27 04:27:07 +02:00
Aleric Inglewood
d63c54cb78 Allow AIThreadSafe*DC classes to be constructed with zero or one parameter.
Also, allow AIThreadSafeSingleThreadDC objects to auto convert
to it's underlaying type, to assign that type and to write it
directly to an ostream.
2012-06-27 04:27:07 +02:00
Aleric Inglewood
058720824d Fixup of LLAtomic and LLThreadSafeRefCount 2012-06-27 04:27:07 +02:00
Aleric Inglewood
eb7615ad57 Merge branch 'master' into V2MultiWear 2012-06-27 04:26:44 +02:00
Lirusaito
0ad533d94d STORM-1870 and Have a space before old names in parentheses, like V3.
Also small fixes, some spelling, some important; synchronize with upstream a bit..
Jonathan Yap: STORM-1870 Avatar tracking beacon doesn't get disabled if DESTINATION_REACHED_RADIUS is reached
2012-06-09 17:07:20 -04:00
Lirusaito
a82953d0d0 Few more GCC 4.7 fixes.
include unistd when not on windows.
2012-04-29 00:25:40 -04:00
Shyotl
b49ad1cd34 RLVa impl updated to that used in v3. Hooked RLVa restrictions back into wearables. New RLVa floater: 'Locks...' Also updated 'Restrictions...' floater. 2012-04-12 10:29:45 -05:00
Aleric Inglewood
b18bc08600 Add AIAccessConst, AISTAccess, AISTAccessConst, ...
Also added AIThreadSafeSingleThread, AIThreadSafeSingleThreadDC
and AITHREADSAFESINGLETHREAD
2012-03-13 16:32:10 +01:00
Aleric Inglewood
fffbda1b90 Add ASSERT_SINGLE_THREAD 2012-03-12 04:37:55 +01:00
Aleric Inglewood
8c721c4a69 Merge/collision fix.
Belonged in previous commit really.
2012-03-12 04:37:16 +01:00
Aleric Inglewood
87b8f6e076 Merge with siana/master. Resolved conflicts.
Conflicts: removal of trailing space (to be the same as
viewer 3) in one instance collided with a patch of Siana.

I had moved isSelfLocked.
2012-03-11 03:21:45 +01:00
Aleric Inglewood
52b4008968 Prepare synchronization with viewer-development.
Synchronization will be complete after viewer-development
gets my LLAPRPool and LLAPRFile patch that I'm currently
working on.
2012-03-06 23:10:43 +01:00
Aleric Inglewood
c1133cb932 Use LLAPRPool
apr_pool_t* should not be used anywhere, except where a comment
explicitely says it's ok. This one apparently sneeked in in the
meantime.
2012-03-06 17:04:05 +01:00