Compare commits

..

1583 Commits

Author SHA1 Message Date
Siana Gearz
e484904e3b Version 1.8.0 2013-04-20 14:44:01 +02:00
Siana Gearz
24047c933a No longer stall to death on unreadable streams 2013-04-20 13:27:32 +02:00
Latif Khalifa
41fba80cb5 More french translation updates 2013-04-20 08:51:15 +02:00
Latif Khalifa
abc60bb235 Merge remote-tracking branch 'shyotl/master' 2013-04-20 08:06:04 +02:00
Shyotl
c9f93a82ce Improved the logic in LLPipeline::updateDrawableGeom a bit. 2013-04-20 01:02:40 -05:00
Shyotl
39c4d9ad50 Merge branch 'master' of git@github.com:singularity-viewer/SingularityViewer.git 2013-04-20 01:01:26 -05:00
Shyotl
2121e78b45 Lessen occurrence of missing prims. Also added 'ctrl-shift-v' to rebuild vbos. 2013-04-20 01:00:24 -05:00
Latif Khalifa
2580aad939 Re-apply saphira's Linux build patch that somehow got lost in merges 2013-04-20 05:26:47 +02:00
Aleric Inglewood
368d675f24 Compile warning fix. 2013-04-20 05:07:44 +02:00
Aleric Inglewood
55a676e85d Compile warning fix. 2013-04-20 05:04:07 +02:00
Aleric Inglewood
8d028e6948 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:54:25 +02:00
Latif Khalifa
70eb45e923 Revert "TEMPORARILY disable erroring out during mesh upload"
This reverts commit 3bdeb8e8a8.
2013-04-20 04:53:44 +02:00
Latif Khalifa
7b42ad5e2a Demote assert and allow UDP fallback in case COF fetching times out 2013-04-20 04:49:18 +02:00
Latif Khalifa
f6f505d487 Merge remote-tracking branch 'shyotl/master' 2013-04-20 04:29:59 +02:00
Shyotl
91db5a854f Wrap std::filebuf to work with unicode filepaths on Windows. (Use UTF-16) 2013-04-19 21:27:47 -05:00
Lirusaito
b7c1b9f42b Added OverrideAnimations string, so that notifications present an actual permission QUESTION when asking for the perm.
Conflicts:

	indra/newview/llviewermessage.cpp
2013-04-20 03:45:15 +02:00
Melanie
f83717255f Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-04-20 03:13:00 +02:00
Melanie
d593ebfa34 Add another menu insert point in the admin menu. 2013-04-20 03:12:49 +02:00
Latif Khalifa
3bdeb8e8a8 TEMPORARILY disable erroring out during mesh upload 2013-04-20 00:28:36 +02:00
Lirusaito
b8d2bd578c French translation update 2013-04-19 23:59:18 +02:00
Lirusaito
6c93dc1d82 Update LSL information (Adds new AnimationOverride) 2013-04-19 23:59:05 +02:00
Shyotl
733b8e75ac Less prim peekaboo antics. 2013-04-18 23:44:25 +02:00
Latif Khalifa
7e66eb08cf Merge remote-tracking branch 'shyotl/master' 2013-04-18 23:24:40 +02:00
Lirusaito
b51615be20 Support Legacy Region/Estate Environment
Also Disable Environment Tab when the cap required to use it isn't supported.
2013-04-18 23:24:30 +02:00
Shyotl
0261f13670 LLSliderCtrl callbacks actually get the child LLSlider object, not the LLSliderCtrl object. 2013-04-18 16:02:10 -05:00
Melanie
ceade84fb0 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-04-18 06:04:30 +02:00
Melanie
765a4749c9 Allow the octopus to set a channel at floater level to disambiguate between simultaneously open floaters 2013-04-18 05:15:34 +02:00
saphira
50f03d83c0 Fix SuSe Linux build break 2013-04-18 00:44:50 +02:00
Latif Khalifa
110f502960 Merge remote-tracking branch 'shyotl/master' 2013-04-16 17:50:26 +02:00
Shyotl
11358746da Use legacy function pointer for old legacy setTextEntryCallback signature. 2013-04-16 10:49:56 -05:00
Latif Khalifa
e2a9d83b3e Merge remote-tracking branch 'melanie_t/master' 2013-04-16 17:35:44 +02:00
Melanie
0909bf1133 Remove the spammy leftover debug message. Thought I'd done that already... 2013-04-16 14:07:34 +02:00
Melanie
a2f7bee568 Extend the octopus to allow avatar pickers to be used. 2013-04-16 13:32:35 +02:00
Latif Khalifa
97809b3a22 Merge remote-tracking branch 'melanie_t/master' 2013-04-16 12:53:37 +02:00
Melanie
ab2f06d64e Add some much needed parens 2013-04-16 12:50:22 +02:00
Melanie
ab29c73ff5 Hide the export check boxes when on SL. 2013-04-16 12:35:02 +02:00
Melanie
f960a79118 Kill some compiler warnings by removing three unused locals that were in there for debugging 2013-04-16 07:41:12 +02:00
Shyotl
4cbf8b16b6 Streaming FBO checkbox in preferences->graphics->advanced enable switch was inverted due to vbo rebuild being deferred to a later frame. 2013-04-16 00:21:12 -05:00
Latif Khalifa
c1d5f33a4c Merge remote-tracking branch 'shyotl/master' 2013-04-16 06:36:13 +02:00
Shyotl
f52b97d588 Fix llalertdialog.cpp (accidentally grabbed some changes that only work with future alterations I've yet to push to master.) 2013-04-15 23:29:51 -05:00
Melanie
158a434899 Set focus in all necessary ways, not just the keyboard alone, when tabs are changed by alt-arrows 2013-04-16 05:45:27 +02:00
Shyotl
fed6639e44 Renamed SHAlphaMaskMaxRMSE to SHAutoMaskMaxRMSE. Disabled alpha masking on attachments. 2013-04-15 18:16:12 -05:00
Shyotl
75c1e74e48 Avoid using invalid iterator in LLNotifications::getChannel if channel is not found. 2013-04-15 18:12:15 -05:00
Shyotl
70e008bf98 Fix some subtle bugs in llrender. 2013-04-15 18:10:38 -05:00
Shyotl
e22e8d92b8 Disable AA when drawing ui. 2013-04-15 18:09:00 -05:00
Shyotl
d51b0f8701 Tweaked alert dialogs. Clicking 'x' issues a response. Either 'close', 'cancel', 'ok' or a dummy 'close' which will result in LLNotification::getSelectedOption returning -1 in callback. Listed in order of preference. 2013-04-15 18:06:46 -05:00
Latif Khalifa
adb535421d Fixed build with DEBUG_CURLIO defined 2013-04-13 22:08:19 +02:00
Latif Khalifa
3a54d4b4ab Fixed windows build in debug mode 2013-04-13 22:07:45 +02:00
Melanie
0b70e32f15 Remove spammy debug - that part works now 2013-04-13 20:03:16 +02:00
Lirusaito
6f027c5535 commitCallbacks have the new value built in, let's not bother with childGetValue for the export check =^*^= 2013-04-13 20:03:05 +02:00
Lirusaito
2bc966ad24 Condensed export mask checks into boolean functions
Thins out that overly thick block of checks in the middle of LLPanelPermissions::refresh
Also corrected incorrect log output, after First stage comes contents not textures, Melanie.
2013-04-13 20:02:51 +02:00
Lirusaito
09e7017f06 Added handleVisibilityChange to LLPanelPermissions
TODO: Find out if this change is worthwhile by checking for log spam
2013-04-13 20:02:40 +02:00
Melanie
eacd1d7eb9 Fix export permission checks to look for face textures by asset ID 2013-04-13 20:01:57 +02:00
Melanie
469ef079b9 Fix export enable controls 2013-04-13 20:01:49 +02:00
Melanie
121de1fc12 Fix debug permissions display to show the transfer permission again. 2013-04-13 20:01:38 +02:00
Lirusaito
345c5c751c Space changes 2013-04-13 20:00:38 +02:00
Lirusaito
fd76b7bf20 Added simSupportsExport function
Hide E and export checked from regions without export support
No longer allow PERM_EXPORT from being added to default everyone permission flags if it's not supported by the sim.
2013-04-13 20:00:17 +02:00
Lirusaito
7e7190ce6e Such a silly mistake it's "checkbox allow export" not "checkbox export" 2013-04-13 19:59:47 +02:00
Lirusaito
5a8ab82257 Bit more cleanup in llpanelpermissions.cpp 2013-04-13 19:57:24 +02:00
Lirusaito
fec3b6c79f Space changes 2013-04-13 19:57:17 +02:00
Lirusaito
dd711d51c0 Clean up in llpanelpermissions.cpp 2013-04-13 19:57:08 +02:00
Lirusaito
d5e6f9950d Add Allow exportation checkbox to Default Upload Permissions floater.
Setting is per account and defaults to false.
2013-04-13 19:55:50 +02:00
Lirusaito
e7cf0b716d Permissions corrections. 2013-04-13 19:55:37 +02:00
Lirusaito
d269b66623 Space changes. 2013-04-13 19:54:41 +02:00
Lirusaito
9e6e801d49 Check if objects textures prevent it from being exportable. 2013-04-13 19:54:11 +02:00
Lirusaito
c67563dfe4 Bits and pieces
Disable next owner perms boxes when PERM_EXPORT
Added checks disabling the export toggle conditionally.
All cases covered except textures, couldn't figure that one out...
Mind the TODO's in the diff..
2013-04-13 19:53:58 +02:00
Lirusaito
11604ae5de Compile fixes.. I thought I'd done this... 2013-04-13 19:53:20 +02:00
Lirusaito
45f3a171be Enter PERM_EXPORT, stage right. 2013-04-13 19:53:02 +02:00
Lirusaito
15fea2ef54 Export perm added to UI!
Code added, Along with all the potential PERM_EXPORT bits...
Actual PERM_EXPORT bit still needs to be added.
SimulatorFeature comes next.
2013-04-13 19:52:44 +02:00
Latif Khalifa
3005b9dd2c Merge remote-tracking branch 'melanie_t/master' 2013-04-13 05:03:50 +02:00
Melanie
273f57d5a2 Fix chat focus issues once and for all 2013-04-13 04:59:02 +02:00
Latif Khalifa
99bda78f37 Merge commit 'e9330f8a8752d6b6effce438204cd0d2e69a1d0f' 2013-04-09 19:56:55 +02:00
Latif Khalifa
9f897f0e2c Merge remote-tracking branch 'upstream/release' 2013-04-09 19:52:13 +02:00
Drake Arconis
e9330f8a87 This should fix OSX blah blah 2013-04-09 08:12:13 -04:00
Latif Khalifa
59a7c1cd9c Fixed windows build with the latest cmake 2013-04-06 17:59:42 +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
987ab9c07f SH-4059 FIX other's hover parameters affects your avatar's setting
Added an additional sanity check to make sure that other avatars don't
affect your wearables.
2013-04-05 23:10:17 +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
Siana Gearz
6d0fee3de9 War on ugly icon in inventory 2013-04-01 10:08:03 +02:00
Siana Gearz
9ce24b7ec5 Someone forgot to compact the wolf remote 2013-04-01 07:09:19 +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
c14601f7c2 Avoid assertion in ~AIStateMachine upon viewer exit.
Force the state to bs_killed before clearing the list of statemachines
in AIEngine::flush().
2013-03-28 03:01:27 +01: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
Aleric Inglewood
fa05647068 Compile fix 2013-03-27 00:56:28 +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
Shyotl
1705167998 Fixed non-debug compile. 2013-03-24 23:20:40 -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
cfa3766bc7 Quick fix for the Mac build.
TODO: Make this version dependant so it works with newer Xcode too
2013-03-24 17:11:03 +01:00
Latif Khalifa
ea4f2ec7a7 Merge remote-tracking branch 'origin/sunshine2' 2013-03-24 14:23:18 +01:00
Latif Khalifa
97c340be54 Merge remote-tracking branch 'lightdrake/CupCake' 2013-03-24 14:22:44 +01:00
Latif Khalifa
afc137bb3f Merge remote-tracking branch 'aleric/master' 2013-03-24 14:22:28 +01:00
Latif Khalifa
db497ccf57 Merge remote-tracking branch 'lirusato/Frosting' 2013-03-24 14:22:02 +01:00
Aleric Inglewood
2916d9353e Comment fix. 2013-03-23 22:22:38 +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
Drake Arconis
43ed77f4d5 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer into Cupcake 2013-03-23 11:05:20 -04: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
Drake Arconis
91b3cdde39 Unbreak non-debian derived and standalone linux 2013-03-21 16:55:25 -04:00
Aleric Inglewood
712c46a74e Add comment with regard to LLSD in the body of pages with an HTTP error code. 2013-03-21 20:56:21 +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
Drake Arconis
0eeddb0607 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer into Cupcake
Conflicts:
	indra/newview/llappviewer.cpp
2013-03-20 08:31:04 -04:00
Lirusaito
c2b3322594 Pathfinding UI: Hide Capsule doesn't seem to work without havok 2013-03-20 08:30:36 -04:00
Aleric Inglewood
4be1d057bc Fix windows compile warnings. 2013-03-19 23:59:15 +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
prep
7ef75fef4f Fix for sh-4014. This was a regression caused by fix for sh-3650. 2013-03-19 19:20:06 +01:00
prep
45e6c3f2e4 modified_cof_cb() issues a updateAppearanceFromCOF() right before this function - removed extra update call. Sh-3650 & Sh-3985 2013-03-19 19:19:17 +01:00
Nyx Linden
707f3959f9 SH-3941 SH-3954 FIX local appearance does not update properly
We were using an indicator of whether there *was* a baked texture to whether we
were *using* a baked texture. Switched to one of the (several) proper indicators
of whether a baked texture was in use. This should allow local texture data to
get marked for download when we enter appearance mode.

Local testing confirms that old apperances linger for a second or two, but are
soon replaced by the correct local renders.
2013-03-19 19:13:51 +01:00
Nyx Linden
554a03d569 SH-3649 WIP newly created pants do not show up on mac/windows.
Added an initializer for the wearable definition version when creating a new wearable.
Should fix the issue but need to test.
2013-03-19 02:20:58 +01:00
Nyx Linden
0866685971 SH-3954 SH-3941 SH-3910 FIX local appearance does not update
We suppress texture downloads for local textures not needed with server side
baking. We need to explicitly re-set texture priority for local textures
when entering appearance mode.
2013-03-19 02:20:17 +01:00
Brad Payne (Vir Linden)
bb528a4398 Periodic log messages to explain why user is still clouded, if they are 2013-03-19 02:19:53 +01:00
Brad Payne (Vir Linden)
4179730552 Increase number of retries for requestServerAppearanceUpdate() 2013-03-19 02:14:40 +01:00
Nyx Linden
9ff1c8b879 SH-3798 FIX avatar skins look dull
Wearable parsing error caused last texture in some assets to fail to parse.
Parser now does not throw an error if the wearable does not end in a newline
2013-03-19 02:09:23 +01:00
Nyx Linden
07850410b5 SH-3909 Support avatar height offset
Adding a new visual param that allows users to manually adjust an offset for
how far off the ground (+ or -) their avatar's root bone is.

Supports the +-2m range people are used to adjusting in their viewers, but
new implementation should support server-generated appearances.

Conflicts:

	indra/newview/character/avatar_lad.xml
	indra/newview/llagent.cpp
	indra/newview/llcallingcard.cpp
	indra/newview/skins/default/xui/en/strings.xml
2013-03-19 02:06:22 +01:00
Shyotl
13d55cbeba Changed several setting lookups to cachedcontrols in LLAgentCamera 2013-03-14 14:38:23 -05:00
Shyotl
1dbaa19e99 Reworked control variable lookup profiling. Should practically be free, and is now enabled for relwithdebinfo. Use dumpcalls for output. 2013-03-14 14:37:20 -05:00
Lirusaito
b0459b08b6 Fix up a bunch more run-time UI warnings. 2013-03-14 05:24:10 -04:00
Drake Arconis
20cdb35172 Import some changes from internal 2013-03-12 06:03:06 -04:00
Drake Arconis
9bce5d479a Merge remote-tracking branch 'Lirusaito/master' into Cupcake 2013-03-12 01:47:14 -04:00
Drake Arconis
ce7966b750 Merge remote-tracking branch 'Lirusaito/Frosting' into Cupcake 2013-03-12 01:36:59 -04:00
Lirusaito
655e0bc30d Apollo skin upkeep 2013-03-12 01:27:06 -04:00
Lirusaito
2ae966fe6b Strings fix ups
Order was a little incorrect
Minor change to hippogridmanager.cpp
2013-03-12 01:26:19 -04:00
Drake Arconis
e08f4316ab New lsl function added 2013-03-12 01:08:03 -04:00
Lirusaito
ca71bf00c2 Fix for Issue 694, use gSavedSettings instead of restricting globals.
Removes gAllowTapTapHoldRun and not much else we may want to remove a few more in the future, though.
2013-03-12 01:04:09 -04:00
Drake Arconis
98641d5d54 Fix small copy paste buggy 2013-03-12 00:59:24 -04:00
Drake Arconis
aac7fa84c2 Added per skin lsl highlighting and move function color to an actual color 2013-03-12 00:46:18 -04:00
Drake Arconis
e93bddcbed Update lsl keywords 2013-03-12 00:45:47 -04:00
Drake Arconis
d345630b2c Merge remote-tracking branch 'Aleric/master' into Cupcake 2013-03-11 19:55:38 -04:00
Drake Arconis
8c09a3c6af Rip out emerald boob physics 2013-03-11 19:21:45 -04:00
Drake Arconis
e6ee833d45 Add in droid sans license file 2013-03-11 03:44:32 -04:00
Aleric Inglewood
7de15e7acd Update AIHTTPTimeoutPolicy objects when their base changes.
Actually propagate changes to CurlTimeout* Debug Settings to the timeout policy objects.
2013-03-10 20:59:48 +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
df93ebb8f6 Bug fix for AIStateMachine.
When a state machine is aborted after it switched to bs_initialize,
but before it executed initialize_impl(), then we should set the
state back to bs_reset and abort cleanly by switching to bs_killed
and then handle that. Before the state was set to bs_abort, resulting
in calling abort_impl(), finish_impl(), the call back and unref()
for an not initialized state machine! (detected by the assert that
makes sure that ref()/unref() are called in balance).
2013-03-09 04:20:54 +01:00
Lirusaito
d2c7ee8b45 Warning fixfix~ 2013-03-08 14:51:17 -05:00
Aleric Inglewood
50caf98cd6 Dont enter AIStateMachine::multiplex recursively. 2013-03-08 16:58:25 +01:00
Lirusaito
78e1804381 Add Pathfinding UI from v3
Added libpathing to LLPHYSICSEXTENSIONS_INCLUDE_DIRS
llviewermenu updated a bit to be closer to v-d/rlva. Best viewed without space changes.
Updated llresmgr.cpp from v-d to "handle special case of input value being zero"
pipeline update: hideObject, restoreHiddenObject, hideDrawable, and unhideDrawable added.

Thanks to Henri Beauchamp for some UI code touchups, thanks to Zi Ree for Rebake notification.
Thanks to Mobius Ryba and Ansariel Hiller for the V1-style pathfinding icons.

Note: When opening from pie menu object selection is lost, unless the floater is already open..
This provides a more reliable reproduction of the bug we've been having with inspect.
2013-03-08 03:17:11 -05:00
Lirusaito
95bd81ee7e Merge branch 'Cupcake' of https://github.com/LightDrake/SingularityViewer into Frosting 2013-03-08 02:57:48 -05:00
Lirusaito
06a73061ce More UI warnings fixup stuffs 2013-03-08 01:20:15 -05: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
Lirusaito
bede980527 Fix Issue 689: ATTACH_NECK and ATTACH_AVATAR_CENTER are missing strings 2013-03-07 20:58:15 -05:00
Lirusaito
63dcd7ba32 Snapshot floater aesthetics
Restores the cancel button with new functionality! In Freeze mode, it will exit freeze! Otherwise it will just close the floater as it used to do.
Lines up everything nicely, and removes overly complex tool tips.
Does not change or remove any existing functionality.
2013-03-07 20:43:33 -05:00
Aleric Inglewood
e8ef74156a Added print_statemachine_diagnostics
The responder name is now cached in LLURLRequest
(ResponderBase::getName() must return a string literal).
The run time (in the main thread) per state machine is now accumulated
in AIStateMachine (instead of AIEngine::QueueElement).
When AIStateMachine::mainloop runs longer than StateMachineMaxTime
then a warning is printed that now includes the time spent in the
slowest state machine (that frame) and (if it is a LLURLRequest)
what the corresponding responder is. Also the total accumulated run
time of that state machine is printed.

From this is can be concluded that the only responder currently
regularly holding up the main thread is LLMeshLODResponder (mostly 30 to
100 ms, but with spikes in the 1 to 2 second range some times).
2013-03-08 01:50:02 +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
Drake Arconis
b4356107ed Updated droid sans to current version 2013-03-07 10:46:39 -05:00
Aleric Inglewood
dd42577a2a Fix crashlogger wrt AIEngine. 2013-03-07 13:50:36 +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
Lirusaito
661e135778 Restore DEV-12255 patch
Refresh the snapshot when calling show after instance exists (IE: Via Keyboard shortcut)
Should never have been removed in the first place, the purpose of 7faa19b297 was to have an explicit click to refresh, this patch requires an explicit click.
This does NOT break keeping the same snapshot while switching settings
2013-03-07 07:44:38 -05:00
Drake Arconis
f6713559e9 Some minor llfont cleanup..more to come 2013-03-07 01:41:42 -05:00
Drake Arconis
394d8afa17 Well this explains why fonts look like ass in v3 2013-03-06 23:42:14 -05:00
Aleric Inglewood
4e0269b3d0 Bug fix in debug code. 2013-03-07 05:23:23 +01:00
Aleric Inglewood
58c07f8054 Don't return from abort() until the current execution, if any, finished. 2013-03-07 04:20:17 +01:00
Aleric Inglewood
380eec10fb Initialize mDebugRefCalled on restart. 2013-03-07 02:23:23 +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
Lirusaito
6153beabff Fix logic in toggle_active_speakers. 2013-03-06 05:06:36 -05:00
Lirusaito
00e5fc1632 Byebye run-time warnings from llgivemoney.cpp 2013-03-05 22:15:53 -05: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
Lirusaito
32b513a025 Finish up last commit
Fixes the segfault that was accidentally overlooked because voice decided to not return after the first run as I worked on all the other warnings
Thanks to Latif Khalifa for the VoiceMultiInstance debug setting which enabled me to use voice again.
2013-03-05 20:56:14 -05:00
Lirusaito
db39bab95b Fix a ton of run-time warnings about UI.
Cleans up some related code, probably looks nicer with space changes off.. though this is a pretty straightforward change.
Comments out code that still exists in xmls or might likely be added in future.
Each piece tested quite a bit.
2013-03-05 20:20:59 -05:00
Drake Arconis
565786ead1 Cleanup unused things 2013-03-05 13:35:58 -05:00
Drake Arconis
0e3a9b28bd CMake cleanup and organization 2013-03-05 12:24:51 -05:00
Drake Arconis
28eec629ec Remove executable bit from xml 2013-03-05 10:17:08 -05:00
Drake Arconis
bc2d26464f Remove dead code 2013-03-05 09:08:47 -05:00
Drake Arconis
e725a2915e Fix typo in local asset browser 2013-03-04 21:59:04 -05:00
Aleric Inglewood
d1d09d7c18 Bail out instead of crash when parseTEMessage fails. 2013-03-05 03:51:45 +01:00
Drake Arconis
5cf556fa09 And now it actually compiles... 2013-03-04 18:05:21 -05:00
Drake Arconis
c718bc4214 Make the actual skin folders lowercase 2013-03-04 17:10:19 -05:00
Drake Arconis
6e72ec2e12 Fix rigged mesh stack smashing 2013-03-04 16:13:58 -05:00
Drake Arconis
3fac86158c General cleanup of unused variable warnings 2013-03-04 16:04:05 -05:00
Drake Arconis
17067de2dc Fixed uninitialized warning in hacd 2013-03-04 16:00:00 -05:00
Drake Arconis
b667c81f84 Merge remote-tracking branch 'Lirusaito/Canon' into Cupcake 2013-03-04 12:17:41 -05:00
Drake Arconis
b800320a49 Remove LLMemType and related files 2013-03-04 12:02:01 -05:00
Drake Arconis
425db80fea Fix warning on non-windows platforms about unknown pragma 2013-03-04 03:31:44 -05:00
Drake Arconis
43c0c4ce91 Some CMake Cleanup
Clean up leftover SERVER and VIEWER from when they were a single tree
Fixed debian multiarch cmake
Small bits of OSX cleanup
2013-03-04 03:31:24 -05:00
Lirusaito
79f6883bdf [Issue 662] Translations retouch
Fixes overlaps and text running out of boundaries.
2013-03-03 14:48:03 -05:00
Lirusaito
3effb23f08 Call LLTrans::parseStrings before setting up notifications during LLAppViewer::init
Fixes the issue with notifications not translating

Moves the UI initialization code block up a few lines to the same area as v-d and sunshine-external have it.
This more clearly shows how it relates with upstream code such that future changes in this area might avoid similar issues.
2013-03-03 11:42:38 -05:00
Lirusaito
9ffa700c97 xmllint fixups 2013-03-03 09:58:02 -05:00
Lirusaito
198ef8feb0 Fix French role_actions.xml parsing warning 2013-03-02 22:20:42 -05:00
Lirusaito
fcd343af69 Small touches
Missed a line during Issue 662
Correct order of contributors to be alphabetical
Present existing translations before others.
2013-03-02 19:25:47 -05:00
Lirusaito
11856180aa [Issue 662] Translations from upstream to ease the resulting load on translators. 2013-03-02 14:32:26 -05:00
Lirusaito
4060db34fa [Issue 662] The text replacing certain heading texts to be as wide as it needs to be 2013-03-01 19:53:29 -05:00
Lirusaito
ab21a74bfc [Issue 662] Plug in LLPanelEstateInfo::updateEstate* functions 2013-03-01 19:31:18 -05:00
Lirusaito
bbe81a86f5 [Issue 662] Allow Version text on Region/Estate region tab to be as long as it needs to be 2013-03-01 15:36:24 -05:00
Lirusaito
1c0f222028 [Issue 662] Add Environment tab to Region/Estate Floater. 2013-03-01 15:23:44 -05:00
Lirusaito
cfd24e0f09 [Issue 662] Switch to using LLEstateInfoModel
Applies part of STORM-1506 patch from https://codereview.secondlife.com/r/397/
Removes old WindLight parts from code.
2013-03-01 11:23:43 -05:00
Lirusaito
c2c9d53000 [Issue 662] In preparation for Environment panel, sync panel_region_estate.xml 2013-02-28 23:38:49 -05:00
Lirusaito
8eff717612 [Issue 662] STORM-1265: Combine Terrain and Ground Textures tabs in Region/Estate floater 2013-02-28 23:37:23 -05:00
Lirusaito
c509378b24 [Issue 662] Make the Region/Estate's Covenant panel's text editor take up as much space as the LL Viewer's. 2013-02-28 19:44:29 -05:00
Lirusaito
df8595b72e [Issue 662] Update llfloaterregioninfo.* in preparation for adding new functionality. 2013-02-28 15:04:05 -05:00
Lirusaito
6525ccc384 Group Feature Request/Bug Fix: Allow setting a log location for any account before log in
The new setting gets overridden by the per account setting, if it has been set, but provides users the ability to set log location pre-login.
2013-02-28 14:41:08 -05:00
Lirusaito
7617f560ab Fix up a mistake in antispam logic where only the user, not any other residents might be blocked.
Adds can_block() to NACLantispam.cpp to unify the blocking checks, so mistakes like this shouldn't happen again.
Best viewed without space changes.
2013-02-28 14:05:01 -05:00
Lirusaito
4990af9cfd Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer into Canon 2013-02-27 15:47:03 -05:00
Lirusaito
09c8be1673 Workaround the chat bar no longer focusing because it is within a layout_stack 2013-02-27 15:35:38 -05:00
Aleric Inglewood
186c3ef88a Add support for xdg-open. 2013-02-27 17:22:10 +01:00
Latif Khalifa
ad03c27805 Tell cmake to only search paths we tell it to 2013-02-27 00:49:51 +01:00
Siana Gearz
c9ab38d449 Stream frequency change support and new anti-starvation strategy 2013-02-26 23:13:39 +01:00
Lirusaito
cef61db77f Feature Request: Add debug setting for showing Position Before Parcel in the Status Bar
Adds StatusBarPositionBeforeParcel
Enables builders on parcels with keywords in their names to see their position.
2013-02-26 16:59:35 -05:00
Lirusaito
c0c32c4b70 Minimal update of llpanelgrouproles.cpp to get the owner role checkbox to enable properly. 2013-02-26 16:56:59 -05:00
Lirusaito
620849607e Fulfill feature request: Optionally, don't ShowDisplayNameChanges in notifications.
Show display name changes checkbox added to Adv. Chat->Chat/IM tab.
Better viewed without space changes.
2013-02-26 16:35:02 -05:00
Lirusaito
180d1862a8 Dim seconds text in general preferences when AllowIdleAFK is false. 2013-02-26 16:07:21 -05: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
Lirusaito
c3e63e7ab7 handleLocalChatBar visibility whenever ShowLocalChatFloaterBar changes value 2013-02-25 17:39:53 -05: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
Lirusaito
9d6d8da54d Missed a spot in last commit. 2013-02-24 16:50:11 -05:00
Lirusaito
8e08e98c61 Only don't ShowLocalChatFloaterBar when Local Chat is torn-off. (Setting no longer requires relog) 2013-02-24 15:23:52 -05:00
Melanie
3036f74b69 Send the currently selected object list in the custom menu options request so that options can be created that operate on items. 2013-02-24 11:03:14 -05:00
Lirusaito
2ad9476961 Support SimulatorFeature MarketplaceURL for Marketplace Search tab on non-SL grids. 2013-02-24 10:54:46 -05:00
Aleric Inglewood
13e032fb04 Make AICurlThread::wakeup_thread thread-safe. 2013-02-23 23:29:43 +01:00
Aleric Inglewood
803e92020b Renamed AICurlThread::mWakeUpMutex --> AICurlThread::mWakeUpFlagMutex 2013-02-23 23:23:48 +01: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
19314b6686 Removed two unnecessary states from AICurlEasyRequestStateMachine
Removed AICurlEasyRequestStateMachine_added and
AICurlEasyRequestStateMachine_finished because the state machine is not
taking any action there anyway, and those states might be skipped all
together even, so they make no sense / shouldn't exist.
2013-02-23 21:33:37 +01:00
Aleric Inglewood
5d329d9e55 Fix initialization list order.
Also fixes a Dout line and initializes mState to 0 so
that if ever set_state would be called first from
a non-main thread then it will be larger (probably
not needed currently).
2013-02-23 21:13:26 +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
Aleric Inglewood
78bb94eb42 Bug fix: remove remainder of test code 2013-02-23 19:36:18 +01:00
Lirusaito
c6aa1bb3ea French network preferences update 2013-02-21 04:42:27 -05:00
Lirusaito
489f17b6b2 Fix compile warning 'unused variable' 2013-02-21 02:18:45 -05: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
Siana Gearz
657484fedc Merge branch 'Canon' of git://github.com/Lirusaito/SingularityViewer 2013-02-19 21:10:40 +01:00
Siana Gearz
3b86a39293 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-02-19 21:10:06 +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
dbf646f266 More verbose fmodex llinfos output upon init. (will be useful when I add more output options.. if we keep fmodex) 2013-02-19 01:52:29 -06: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
Lirusaito
036328c3ac Allow finding objects by typing on the script info scrolllists
Also tweaks columns widths and sort order to present information more effectively.
2013-02-17 19:41:59 -05:00
Aleric Inglewood
14a2788ac4 Don't even crop in rawRawSnapshot.
This causes LLSnapshotLivePreview::getAspectSizeProblem to never return
CANNOT_CROP_HORIZONTALLY or CANNOT_CROP_VERTICALLY anymore, making
the chance to successfully upload or save to a different target larger.
2013-02-17 22:31:32 +01:00
Siana Gearz
6123c9b80a Enable broadcast viewer effects by default 2013-02-17 16:00:59 +01:00
Siana Gearz
dbdd0ec4f1 Merge branch 'Canon' of git://github.com/Lirusaito/SingularityViewer 2013-02-17 15:40:27 +01:00
Siana Gearz
0f54a2777e Merge branch 'master' of git://github.com/lkalif/SingularityViewer 2013-02-17 15:36:59 +01:00
Siana Gearz
49c872c86d Merge branch 'sunshine' of https://github.com/Shyotl/SingularityViewer 2013-02-17 15:28:48 +01:00
Siana Gearz
6bf661e079 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-02-17 15:27:28 +01:00
Siana Gearz
ef4c7d9433 Some transform update fixes.
Thanks to MartinRJ and Henri for updateXform poking.
2013-02-17 15:23:25 +01:00
Shyotl
c3c34deb10 Added reload option to attachment 'tool' pie submenu. 2013-02-17 02:55:05 -06:00
Shyotl
4cc35d6c66 Fixed up some silly issues with the client tag system. 2013-02-17 02:54:30 -06:00
Latif Khalifa
e83befcb6b Updated 32 bit Linux prebuilt of PCRE based on NickyP's work in Kokua. Includes unicode support. 2013-02-16 02:19:57 +01:00
Latif Khalifa
bb527b6ed1 Updated 64 bit Linux prebuilt of PCRE based on NickyP's work in Kokua. Hopefully fixes startup crash on some distros 2013-02-16 01:03:43 +01:00
Lirusaito
cd6bda876d Add RememberName setting to settings.xml (No wonder it wasn't saving!) 2013-02-15 08:28:54 -05:00
Shyotl
51cbb8d6bd Catch up with LL regarding viewer stat recording. 2013-02-14 17:45:10 -06:00
Lirusaito
8cc601c3e2 Fix ups for the Permissions Panel
Minor update and cleanup to llpanelpermissions.cpp
Hide the You can modify this object text properly when Debugging Permissions
Show Debug Permissions on the same line on the build panel.
2013-02-14 15:48:00 -05:00
Aleric Inglewood
dc3f33717c Fixed assertion in HTTPTimeout::lowspeed
mTotalBytes had the meaning of "the sum of all elements in the vector",
but was reset to 0 at the start of a transaction. The meaning is now
changed to "total number of bytes in the vector that belong to the
current transaction".
2013-02-14 00:09:42 +01:00
Shyotl
2f5ab6f8e8 Once more, with feeling. (currency transaction messages) 2013-02-13 16:31:16 -06:00
Lirusaito
7a319d26d5 Extend support for custom menus by accepting messages issued by the server without question 2013-02-13 16:51:42 -05:00
Lirusaito
5d3341bc00 Correctly position custom dropdown menus 2013-02-13 14:17:34 -05:00
Lirusaito
7ca767275f Add support for CustomMenuAction Capability 2013-02-13 13:00:40 -05:00
Aleric Inglewood
86a0536131 Compile error fix: __value is reserved on Windows. 2013-02-13 17:20:41 +01:00
Lirusaito
4d3fb7affe Support SimulatorFeature god_names, used for identifying those the Sim reveals to be gods. 2013-02-13 03:11:20 -05:00
Lirusaito
c7fcaa8e5b Add setFeaturesReceivedCallback for when SimulatorFeatures cap is received 2013-02-13 03:04:29 -05:00
Shyotl
8ec5915b7c Removed some logic in llfloateravatarlist that shouldn't have been there. 2013-02-12 20:49:39 -06:00
Shyotl
a31ba15dbc Updated LLFloaterBuyContents 2013-02-12 20:49:17 -06:00
Shyotl
f147a734b1 LLStat dead code removal 2013-02-12 20:47:55 -06:00
Lirusaito
43bb5d6e39 Add bool LLMuteList::isLinden(const LLUUID& id) for use in situations where the available name may be just display name, but there is a UUID available instead. 2013-02-12 20:43:10 -05:00
Aleric Inglewood
c6c343a45b Compile bug fixes when -DDEBUG_CURLIO 2013-02-12 23:44:55 +01:00
Aleric Inglewood
b40e8fb508 Add checkbox "Keep aspect ratio" to snapshot floater. 2013-02-12 22:21:39 +01:00
Shyotl
6725c17f01 LLSys merge and cleanup. 2013-02-12 15:10:15 -06:00
Shyotl
24efffc68a LLInitParam merge. 2013-02-12 15:08:11 -06:00
Shyotl
c92c68dee2 A few more preview-related changes. 2013-02-12 15:07:07 -06:00
Shyotl
1eb142535c Merge in changes to avoid a few potential problems with LLUUID when accessed from multiple threads. 2013-02-12 15:02:17 -06:00
Shyotl
b901e57c55 Start culling of llmemtype (for now just #ifdef'd to nothingness. 2013-02-12 15:00:50 -06:00
Shyotl
0742610674 Updated gObjectPreviewProgram shader (simple lighting) 2013-02-12 14:59:02 -06:00
Shyotl
655c9348de Minor adjsutment to llcontrolgroup. Demote non-critical failure from llerrs to llwarns. 2013-02-12 14:53:56 -06:00
Shyotl
0a8147a9da Merged some alignment adjustments from sunshine-external 2013-02-12 14:52:53 -06:00
Shyotl
5180fbfc23 Clean up llfloaterurlentry 2013-02-12 14:50:29 -06:00
Shyotl
0759f2dae8 Actually use the namecache callback results when displaying currency transaction notifications. 2013-02-12 14:47:59 -06:00
Shyotl
c799f9f7eb Avoid sculpt discard-level 5 spam. 2013-02-12 14:46:31 -06:00
Latif Khalifa
69c43947ed Don't include warnings of singleton access from initSingleton() to the end users (release build) 2013-02-12 03:30:13 +01:00
Lirusaito
f95830fe23 Extend fuctionality of non-SL capability 2013-02-11 19:12:17 -05:00
Lirusaito
491af1cbf0 Remove gAllowIdleAFK (makes the general preferences checkbox functional) 2013-02-11 15:01:18 -05:00
Aleric Inglewood
b1892eb238 DoutEntering was hiding variable 'on' 2013-02-11 20:08:58 +01:00
Lirusaito
2d0e3daef3 When we don't have a parcel selected (About Land is closed), allow Script Limits refreshes to use our current parcel instead. 2013-02-11 03:55:58 -05:00
Lirusaito
8a76b5d1d2 Silly fox missed a spot! 2013-02-11 02:15:00 -05:00
Lirusaito
88ce171f1e Initial Portuguese translation, contributed by Knolan Falconer 2013-02-11 01:19:36 -05:00
Lirusaito
1d4858ae85 Add support for two non-SL grid features/flags.
Adds support for GamingData cap, and flags: PF_GAMING, DFQ_FILTER_GAMING, REGION_FLAGS_GAMING, and REGION_FLAGS_HIDE_FROM_SEARCH
Adds GamingCheck to floater_about_land.xml
Adds filter_gaming checkboxes to floater_directory* xmls
Adds "is gaming" and "hide from search" checkboxes to floater_god_tools.xml
2013-02-11 01:14:09 -05:00
Lirusaito
cff7a2a464 Brought in Script Limits from v-d! (Accessible from About Land) 2013-02-11 01:12:21 -05:00
Aleric Inglewood
c18b156d8b Bug fix for scrolling folder views.
An LLFolderView is added as child to LLScrollableContainerView,
but also adds the LLScrollableContainerView to it's mScrollContainer.
As a result, when scrolling inside a LLFolderView the event is passed to
the mScrollContainer, which then passes it first on to it's children
(see the "Bad UI design" remark in the code), causing an infinite loop.
This patch breaks that loop for those objects that have a
mScrollContainer: LLFolderView and LLContainerView.
2013-02-11 03:36:46 +01:00
Aleric Inglewood
2a177c6614 Fix for libcwd configured with --disable-location 2013-02-10 18:18:50 +01:00
Lirusaito
085d6cc806 Derive LLPanelPlace from LLRemoteParcelInfoObserver, and update affected sections to v-d. 2013-02-09 17:06:38 -05:00
Lirusaito
818734878d Update LLFloaterLand to v-d 2013-02-09 16:17:29 -05:00
Aleric Inglewood
2d7ab61c6e Make keyboard focus more robust under closed floaters. 2013-02-08 18:40:14 +01:00
Aleric Inglewood
dd6f95cd33 Make AIList resilient against invalidating iterators.
This adds a counter and a 'dead' flag to the data stored in the linked
list. The counter counts the number of iterators (still) pointing to an
element and the dead flag is set to indicate the element was erased when
iterators are still pointing to it. As a result, iterators are NEVER
invalidated. Of course, such elements are subsequentially skipped when
iterating over the list. Assertions protect against dereferencing an
erased iterator, but incrementing or decremention still works: it is
still well-defined what the next (non erased) element is, assuming the
element wasn't erased (yet), but would be erased delayed - or assuming
the iterator would have been incremented (decremented) in advance to
erasing the element.
2013-02-08 17:28:22 +01:00
Aleric Inglewood
d5482e6c74 Do not pre- increment the loop iterator in LLView::drawChildren
This is in fact much safer, because the only way to invalidate an
interator in the first place (in this code) is by calling removeChild,
which *already* has an assert never to remove a child that is being
iterated over (by means of the mInDraw flag).
2013-02-08 17:28:21 +01:00
Aleric Inglewood
baab1d81a7 Wrap LLView::child_list_t in a class AIList.
So far not doing anything. Iterators already keep a pointer to the
container they belong to.
2013-02-08 17:28:21 +01:00
Aleric Inglewood
ea114986be Use viewList_t and child_list_t in appropriate places.
Both types are currently the same, but soon they will be made different.
Currently they are used a bit mixed up. This patch fixes that.
2013-02-08 17:28:21 +01:00
Aleric Inglewood
c1e6812f41 Remove unused variable. 2013-02-08 17:28:21 +01:00
Aleric Inglewood
e7aeb3feaf Add AINRLock for debugging purposes.
This class can be used as RWLOCK parameter to AIThreadSafe to check that
data is only accessed by a single thread (like
AIThreadSafeSingleThreaded) AND is never write locked when a read or
write lock was already obtained (by the same thread). It doesn't
actually lock anything, it just keeps track if the "lock" was obtained
before. The use case is to check if STL containers aren't being used
(read or write locked) by a calling function when additional write
access is necessary, as write access might invalidate iterator that
point to the container (where the previous lock was taken).
2013-02-08 17:28:21 +01:00
Aleric Inglewood
adf4c9a0ce Make the type of the read/write lock of AIThreadSafe a template parameter.
This allows passing a different type than the default AIRWLock for
debugging purposes.

The signature of the class used for RWLOCK should be:

struct RWLock {
  // Default constructor.
  RWLock(void);

  // Block until it's safe to read the data.
  // high_priority is a hint that granting this thread the read lock is more important than granting another thread a write lock.
  void rdlock(bool high_priority = false);
  // Release the obtained read lock.
  void rdunlock();
  // Block until it's safe to write to the data.
  void wrlock();
  // Release the obtained write lock.
  void wrunlock();
  // Convert the obtained write lock into a read lock.
  void wr2rdlock();
  // Block until it is possible to convert the obtained read lock into a write lock.
  void rd2wrlock();

  // Return true when a read or write is obtained and subsequent calls to release the lock are expected.
  bool isLocked() const;
};
2013-02-08 17:28:21 +01:00
Aleric Inglewood
38d1525092 Merge remote-tracking branch 'singu/master' 2013-02-08 17:26:14 +01:00
Latif Khalifa
56b2c10312 Renamed deferred rendering switch from 'Lightning and Shadows' to 'Advanced Lighting Model' as per upstream 2013-02-07 18:17:15 +01:00
Aleric Inglewood
db5846c145 Added documentation on LLHTTPClient Responders. 2013-02-07 17:43:40 +01:00
Lirusaito
73dab7e00b Fix Sappa's issue with getString log spam, three strings weren't quite in the right xml. 2013-02-06 22:55:19 -05:00
Lirusaito
54c1fcf33d Override the viewer's Z offset with the RLV one, if the RLV one has been set. 2013-02-06 22:41:10 -05:00
Lirusaito
604acd8939 Fix Issue 628: Currency exchanges no longer notify in chat 2013-02-06 16:44:08 -05:00
Lirusaito
3d9c287410 Minor french translation update, thanks Nomade~ 2013-02-06 00:27:22 -05:00
Latif Khalifa
78dbaf2ed1 Moved RLVa menu back to advanced by default 2013-02-04 00:47:19 +01:00
Siana Gearz
7852da1506 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-02-04 00:21:07 +01:00
Latif Khalifa
e7a2f171d9 Merge remote-tracking branch 'upstream/master' 2013-02-03 23:48:05 +01:00
Siana Gearz
dc3f91b121 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-02-03 22:27:53 +01:00
Siana Gearz
064601ae5e Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-02-03 22:18:44 +01:00
Siana Gearz
2b036c7334 Split out HTTP texture bandwidth 2013-02-03 22:18:34 +01:00
Siana Gearz
6a774e4685 This should fix voice decline crash 2013-02-03 21:56:13 +01:00
Aleric Inglewood
83fb898852 Bug fix: Wake up curl thread at exit of viewer. 2013-02-03 17:24:26 +01:00
Latif Khalifa
4317fc36a8 Merge remote-tracking branch 'shyotl/sunshine' 2013-02-02 02:56:23 +01:00
Siana Gearz
57d43786ab Merge branch 'sunshine' of https://github.com/Shyotl/SingularityViewer 2013-02-02 02:22:46 +01:00
Shyotl
1069d5dec4 Draw trees before sky. Z-cull may be beneficial. Also, was incorrectly setting alphawrite off for deferred wlsky pass. 2013-02-01 17:16:01 -06:00
Aleric Inglewood
d055494706 Libcwd compile fixes
include linden_common.h first (is already included through the used
headers).
2013-02-01 21:26:08 +01:00
Lirusaito
0a6bebf9db Added ShowSimChannel debug setting to display sim channel information in the status bar. 2013-01-31 22:22:40 -05:00
Lirusaito
5b2e1a0aae Remove remaining dead LCD code(, also fix typo in a comment) 2013-01-31 21:32:29 -05:00
Lirusaito
46ddc9b6be Skins Request: Nano Green and Nano Purple 2013-01-31 21:18:50 -05:00
Latif Khalifa
5cbe633117 Fixed compile under older GCCs by Siana Gearz 2013-02-01 00:18:01 +01:00
Latif Khalifa
719ea47a35 Merge remote-tracking branch 'lirusato/Canon' 2013-01-31 17:21:08 +01:00
Latif Khalifa
70eeddabba Merge remote-tracking branch 'shyotl/sunshine' 2013-01-31 17:20:58 +01:00
Lirusaito
d756225684 Minimal change to fix folder->Add Items, purgeCategory wasn't supposed to be called in this case. 2013-01-31 02:41:17 -05:00
Shyotl
26de17f2de Avoid occasional DoF-related crash upon region disconnection. 2013-01-30 22:04:57 -06:00
Shyotl
be0d751334 Cleanup, further hardening of namecache callbacks, and update to avatar picker. 2013-01-30 22:04:04 -06:00
Latif Khalifa
4b0bac34dd Added the ability to have the voice enabled in multiple viewer instances 2013-01-31 01:26:39 +01:00
Lirusaito
bf8bd9cb1a Further notifications.xml touchup. 2013-01-30 19:16:56 -05:00
Lirusaito
e009b8f4b4 Added simple codeless floaters for My Outfits and Favorites folders, entries are in World menu. 2013-01-30 14:11:22 -05:00
Lirusaito
47cbaeed23 XML-Driven floater feature (and documentation)
Changes:
Adds LLUICtrlFactory::getBuiltFloater() to return LLFloater* when a floater has been built.
In llviewermenu.cpp's LLShowFloater::handleEvent():
Return early if the floater_name is empty,
otherwise if no anticipated floater is found, build one,
unless one of the same name is already built, then bring it to focus.



Documentation:
In order to add simple codeless floaters, a general understanding of our XMLs is necessary...
A simple codeless floater can be a few things, perhaps not limited to: media browsers, settings controls, and holders for inventory_panels.

So how do you make them conform to the codeless standard?
For the purpose of these examples, my floater file will always be floater_name.xml
Let's start with a shortened xml menu entry:
<menu_item_call label="Name!" name="name">
  <on_click function="ShowFloater" userdata="floater_name.xml"/>
</menu_item_call>
Alright, that wasn't so hard, just remember the key in this is ShowFloater is the function and userdata is the filename.

The next part is the actual floater, which isn't so different from making a complex floater..
There are two ways to do this, depending upon desired behavior:

The first behavior is to have only one of the floater open at a time, the following short xml exemplifies this:
<floater name="floater_name.xml" title="Name!"/>
Having a floater with this behavior will cause the menu entry to bring it into focus.

The other behavior is to allow more than one of the floater open at a time:
<floater name="name" title="Name!"/>
In this case, the menu entry will spawn a new version of the floater with every click, regardless of previous ones existing.

Granted, these short <floater/>'s probably aren't but examples and will not likely stand alone.
2013-01-30 14:07:59 -05:00
Latif Khalifa
4e29b6752e Fixed packaging of the mac build 2013-01-30 14:17:16 +01:00
Latif Khalifa
046735f043 Merge remote-tracking branch 'upstream/exp' 2013-01-30 05:49:45 +01:00
Latif Khalifa
a9b05fd029 Merge remote-tracking branch 'lirusato/master' 2013-01-30 05:48:45 +01:00
Latif Khalifa
5c8e436401 Fix windows build: warnings management 2013-01-30 05:45:00 +01:00
Latif Khalifa
4d805da6ac Package glod and colladadom dlls 2013-01-30 05:43:17 +01:00
Latif Khalifa
085800f6e0 Tell the compiler we are using colladadom dll, and not a static lib. Use our current boost libs 2013-01-30 05:27:10 +01:00
Latif Khalifa
1934fc9bd4 Temporarily disable HACD file save functions (not used) to avoid strange linking issue on windows 2013-01-30 05:25:05 +01:00
Latif Khalifa
8c1848b487 Silence secure CRT warnings when building HACD 2013-01-30 05:14:48 +01:00
Latif Khalifa
8edb10fb88 Merge remote-tracking branch 'aleric/meshupload' into meshupload 2013-01-30 05:12:04 +01:00
Aleric Inglewood
8aecc49456 Add missing notifications. 2013-01-30 03:58:42 +01:00
Latif Khalifa
b8919c21d8 Merge remote-tracking branch 'aleric/meshupload' into meshupload 2013-01-30 03:46:45 +01:00
Aleric Inglewood
9203b24eb9 Remove AIStateMachineThreadBase* argument from AIThreadImpl constructor.
Also removes the use of 'this' to initialize base classes, which led to
a compiler warning on vs2010.
2013-01-30 03:44:02 +01:00
Latif Khalifa
8584e6da4c Merge branch 'master' into meshupload
Conflicts:
	indra/llcommon/llhash.h
	indra/newview/CMakeLists.txt
	indra/newview/llfloatermodelpreview.cpp
	indra/newview/llfloatermodelpreview.h
	indra/newview/llpanelprofile.h
2013-01-30 00:36:31 +01:00
Aleric Inglewood
1d673df1bd Add AIMeshUpload and fix LLMeshUploadThread
* Removes polling stuff (call to gMeshRepo.update()) which did
  nothing but check if uploads already finished.
* Just creates and runs the state machine (AIMeshUpload) instead
  of creating an LLThread derived class (LLMeshUploadThread) and
  adding that to a queue, then have the main thread start it
  after adding it to another queue in order to keep track of
  the instances (both queues are gone).
* mWholeModelUploadURL was moved to the state machine, because
  it needs a life time till the responders finishes (can't be
  part of the thread object).
* LLMeshUploadThread is now derived from AIThreadImpl instead
  of LLThread, so it can be run in a state machine thread.
* The call to LLHTTPClient::post is now done from the main
  thread instead of from the thread, but I don't think that is
  a problem.
2013-01-29 23:42:06 +01:00
Aleric Inglewood
b3adf71ed7 Remember floater rectangle 2013-01-29 23:20:02 +01:00
Aleric Inglewood
7ba0b6482c Fix example code. 2013-01-29 20:49:53 +01:00
Aleric Inglewood
e99175444f Bike fix: Always set mStatus to STOPPED 2013-01-29 20:45:08 +01:00
Aleric Inglewood
d5ed31ca9b Allow passing a name to underlaying LLThread in debug mode. 2013-01-29 20:44:14 +01:00
Aleric Inglewood
1c8027b1e6 Add statemachine parent callback support to LLHTTPClient::post 2013-01-27 22:02:19 +01:00
Aleric Inglewood
ebac80b5b7 Fix termination race condition. 2013-01-27 20:52:21 +01:00
Siana Gearz
4cab6a89a9 1024-sized terrain texture support 2013-01-27 06:06:13 +01:00
Siana Gearz
50a360d314 Silence voice complaint about missing cap 2013-01-27 04:42:00 +01:00
Lirusaito
4e96dccd7c Fix Issue 385: Group chat announces in window not in Instant message
Improved Ignore Group functions
Best viewed without space changes.
2013-01-26 21:47:32 -05:00
Siana Gearz
7755033017 Lazily fix static deinitialization fiasco 2013-01-27 01:43:38 +01:00
Siana Gearz
aed472af77 Try to fix long-standing crash-on-resize in Linux.
It appear's SDL's SetVideoMode can cause repeat SDL_VIDEORESIZE message and shouldn't be called again.
2013-01-27 01:41:17 +01:00
Aleric Inglewood
c528a15e95 Added AIStateMachineThread 2013-01-26 19:19:09 +01:00
Aleric Inglewood
6dc4a60724 Changes to LLThread
* Call a virtual terminated() that by default sets mStatus to STOPPED,
  instead of setting it to STOPPED directly, allowing to override
  the behavior of a LLThread derived class when the thread is about
  the exit.
* Make setQuitting() public, so it can also be used to hint to a
  thread that it should stop at its earliest convience.
2013-01-26 19:15:57 +01:00
Aleric Inglewood
f6785c399d Added support for LLCondition to AIThreadSafeSimple. 2013-01-26 18:35:42 +01:00
Latif Khalifa
237f84cde0 Merge remote-tracking branch 'shyotl/sunshine' 2013-01-26 13:49:50 +01:00
Shyotl
485ad8e645 Reworked name loading for vivox speaker list. LLSpeaker now boost::signals2::trackable to avoid accessing after destruction. Opening new sessions via doubleclick on list(sessions managed by legacyname) or using the mute button(legacyname needed to exclude lindens) are both disabled until namecache lookup complete. 2013-01-26 01:57:13 -06:00
Lirusaito
1582bf43c5 Allow RLVa Z Offset and Vanity Body Dynamics Offset to coexist. 2013-01-25 11:26:52 -05:00
Aleric Inglewood
a1fa43850b Comment fixes. 2013-01-25 16:09:34 +01:00
Latif Khalifa
5e799b1f81 Respect always rez under owned land group setting for objects
duplicated by shift-dragging or duplicating.

Based on Phoenix changeset 5b50018c63d4 by Kadah
2013-01-23 12:02:04 +01:00
Siana Gearz
5bc8102864 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-01-23 00:08:38 +01:00
Aleric Inglewood
0296812e88 Add cmake file for collada and glod.
This fixes standalone when those libraries are installed
elsewhere. Note that it "breaks" standalone if you just
installed the prebuilt manually. For that to work you
have to add /.../libraries/include to CMAKE_INCLUDE_PATH,
which is not recommended because it would pick up any
other prebuilt over your system installed libraries.

Instead, for standalone, install the libraries somewhere
with some prefix and then add that prefix to the environment
variable CMAKE_PREFIX_PATH.

For example, $prefix/include/collada and $prefix/lib/libcollada4dom.so
2013-01-22 20:51:43 +01:00
Latif Khalifa
d8c846288e Merge remote-tracking branch 'lirusato/master' 2013-01-22 20:06:03 +01:00
Lirusaito
dd1e9a68d4 Removal of the deprecated lltabcontainervertical. 2013-01-22 01:38:25 -05:00
Lirusaito
21860ded90 Support web_profile_url response from OSGrid servers for setting WebProfileURL 2013-01-21 21:27:53 -05:00
Lirusaito
48113f8506 AuroraSim: HippoLimits and HippoGridManager update, and support for Aurora's MaxDrag 2013-01-21 21:22:04 -05:00
Aleric Inglewood
db7155666d Merge branch 'master' into meshupload
Conflicts:
	indra/cmake/00-Common.cmake

One diff added /MP to CMAKE_CXX_FLAGS_DEBUG while
another removed /arch:SSE2 from the same line.

Fixed to honor both changes.
2013-01-21 19:16:06 +01:00
Latif Khalifa
b758014ebc Adjust to recent change in the API for Responder objects 2013-01-21 11:25:32 +01:00
Latif Khalifa
18816ae146 Merge remote-tracking branch 'shyotl/sunshine' 2013-01-21 11:25:10 +01:00
Shyotl
dc106c5442 Fix some compiler warnings/errors. Error in llinventorymodelbackgroundfetch was introduced by partial commit. 2013-01-20 17:10:38 -06:00
Lirusaito
aa3228be76 French translation update, thanks Nomade~ 2013-01-20 10:25:19 -05:00
Lirusaito
c2ce72ed94 Issue 604: Reset Button for inventory
Attempted Spanish translation.
Nomade Zhao provided French.
2013-01-20 10:15:23 -05:00
Siana Gearz
4cd2de0fff Version 1.7.3 2013-01-20 05:57:05 +01:00
Siana Gearz
b318a0703b Use standard way on windows to find default file picker path 2013-01-20 05:55:18 +01:00
Siana Gearz
ea67aca955 This should de-clog the tubes on the map 2013-01-20 03:32:51 +01:00
Siana Gearz
0ab140a071 Potential permission fix 2013-01-20 01:49:55 +01:00
Siana Gearz
d5eb2432ef Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-01-20 01:49:14 +01:00
Lirusaito
a6c2d256c6 Hooked up RLVaTopLevelMenu setting so it actually works.
Changes to llviewermenu.cpp are better viewed without space changes
^Put together both RLVa Embedded and RLVa Main menus while building Advanced menu, labeling them RLVa; once the advanced menu is built and added to MenuBar, rlvMenuToggleVisible() is called.
Added onChangedMenuLevel() to rlvcommon.cpp
Added rlvMenuToggleVisible(), tweaked to only perform necessary operations for now, other parts left commented out for future use.
Removed menu visibility handling from RlvHandler::setEnabled()

NOTE: RLVa has only been updated in pertinent areas, from what I can tell we are a bit behind in other places, too.
2013-01-18 15:14:33 -05:00
Aleric Inglewood
7a8a2757db Add comment for sake of translation. 2013-01-18 16:10:18 +01:00
Aleric Inglewood
d8d3cafc32 Merge remote-tracking branch 'singu/master' 2013-01-18 02:28:17 +01:00
Aleric Inglewood
604824335c Keep focus during Freeze Time so that pressing ESC always leaves Freeze Time. 2013-01-18 02:26:43 +01:00
Latif Khalifa
9240147874 Merge remote-tracking branch 'lirusato/master' 2013-01-17 17:26:00 +01:00
Lirusaito
05a6323d2c French antispam controls touchup 2013-01-17 09:17:43 -05:00
Lirusaito
1dd0b7713b French translation fixies~ 2013-01-17 03:38:53 -05:00
Lirusaito
795f70a0b0 d520053 - MAINT-852 / VWR-8761 : Cannot delete object description. Now you can. 2013-01-17 01:11:59 -05:00
Lirusaito
5831af0fb6 OPEN-161: Typo in the header guard of lltexturecache.h 2013-01-17 01:10:47 -05:00
Aleric Inglewood
e8e3e43711 Update llqtwebkit with recompiled version. 2013-01-17 00:43:21 +01:00
Latif Khalifa
460b05d37a Merge remote-tracking branch 'shyotl/master' 2013-01-16 16:25:51 +01:00
Latif Khalifa
f03405ca47 Merge remote-tracking branch 'lirusato/master' 2013-01-16 16:25:37 +01:00
Lirusaito
0405ed9e3d French Translation update. 2013-01-16 09:27:25 -05:00
Lirusaito
2eb8f2f84a 07e5202 MAINT-1942 Increase maximum animation length from 30 seconds to 60 seconds 2013-01-16 05:00:35 -05:00
Shyotl
6894d4c0bc Changed how the 'client' column in avatar radar is handled. Initially was not designed nor tested to be toggleable on user-demand (was one shot deal depending on detected grid). 2013-01-15 23:14:58 -06:00
Lirusaito
53c04b7299 Issue 220: Copy/paste params in the build tools like phoenix
Adds mClipboardFlexiParams, mClipboardLightParams, mClipboardSculptParams, and mClipboardLightImageParams to LLPanelObject.
Corrects the tooltip on the the copy button.
2013-01-15 22:43:22 -05:00
Latif Khalifa
3bf307abb0 Merge remote-tracking branch 'shyotl/master' 2013-01-15 18:37:09 +01:00
Latif Khalifa
4928d29a8e Merge remote-tracking branch 'aleric/master' 2013-01-15 18:36:51 +01:00
Latif Khalifa
8cec9c7b73 Merge remote-tracking branch 'lirusato/master' 2013-01-15 18:36:39 +01:00
Shyotl
a6e3352073 Setting camera toolset as current sticks us into build mode (??)... Avoid when taking snapshots. 2013-01-14 23:09:12 -06:00
Aleric Inglewood
0eeea37662 Fix 'Open floater in Freeze Time mode'
When the floater was opened in Freeze Time mode, then parent of the
widget that triggers it to open is the 'Floater View'. We do NOT
want to set that MouseOpaque :p. Using getParent here is just
nonsense.
2013-01-15 03:31:57 +01:00
Shyotl
2a8f55e99e Updated gesture floater to use more modern (and actual working) method of adding list elements via xml. 2013-01-14 18:41:48 -06:00
Aleric Inglewood
db7b0c1785 Revert last part (work in progress of last two commits, I guess). 2013-01-15 00:11:17 +01:00
Aleric Inglewood
55e64f6ab0 Fix for last commit.
Show sculpties with no (or not enough) data as spheres with default LOD
stepping.
2013-01-14 23:53:58 +01:00
Aleric Inglewood
6fce7062e5 Fix gcc 4.4 problem.
When a sculptie has too few vertices, especially when we bluntly assume
it's stitched around and don't want to get less than 4 vertices in
either direction, then instead we end up with even ZERO vertices, which
causes a division by zero in LLPath::genNGon with undefined behavior.
2013-01-14 23:14:29 +01:00
Aleric Inglewood
2df8ba19f4 Fix last compiler warning. 2013-01-14 22:59:49 +01:00
Aleric Inglewood
e4a3b3b5ba Merge remote-tracking branch 'shyotl/master' 2013-01-14 16:12:57 +01:00
Lirusaito
0494dc8d32 Fix Issue 432: Radar Keeps Popping Up and side issue I got still the window "An object owned by you ..."
Unified key message sending to function send_keys_message()
Switched a few getBOOLs to CachedControls
Added RadarChatKeysStopAsking, and RadarChatKeysRequest as a three button notification so the user can decide to permanently say no.
Corrected RadarChatKeys description to be more accurate.
If we want to know if the radar is open, we check instanceExists, not getInstance.
Also enabled using the announce button when RadarChatKeys is false to announce keys, for manual updates.
2013-01-14 06:34:27 -05:00
Latif Khalifa
3dd33518c4 Merge remote-tracking branch 'shyotl/master' 2013-01-14 10:53:27 +01:00
Shyotl
db8225a078 Fixup LLScrollListCtrl::setCommentText, and incorrect behaviors with script editor and bulk perm editor pertaining to setCommentText inherited from V3. 2013-01-14 03:36:04 -06:00
Siana Gearz
8bc05f6d15 Fix double upload dialog 2013-01-14 00:04:43 +01:00
Damian Zhaoying
00fb7804da Spanish Translate for new Group/Chat/IM floaters and some general string fixed 2013-01-13 19:05:35 -03:00
Siana Gearz
3091d9c847 Potential permission fix 2013-01-13 21:50:31 +01:00
Siana Gearz
d1de4d53fe Merge branch 'meshupload' of git://github.com/LightDrake/SingularityViewer into meshupload 2013-01-13 20:37:04 +01:00
Commander Cupcake
c08c2a55e5 Revert changes that broke bump 2013-01-13 14:30:41 -05:00
Siana Gearz
cddd21d879 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-01-13 20:11:15 +01:00
Siana Gearz
188e42ee4a Merge branch 'meshupload' of git://github.com/AlericInglewood/SingularityViewer into meshup 2013-01-13 20:10:25 +01:00
Aleric Inglewood
f606477ae5 Use "mesh" as context everywhere (for loading and saving). 2013-01-13 19:48:35 +01:00
Aleric Inglewood
5250b218c5 LLPanelProfile is not a floater: onOpen is not virtual. 2013-01-13 19:47:32 +01:00
Aleric Inglewood
909247a179 Keep decimal format the default. 2013-01-13 19:46:35 +01:00
Aleric Inglewood
e7dea2714e Merge branch 'master' into meshupload 2013-01-13 18:02:28 +01:00
Aleric Inglewood
dcc2e52c61 Merge remote-tracking branch 'singu/master' 2013-01-13 18:01:48 +01:00
Aleric Inglewood
db17b93156 Merge branch 'master' into meshupload
Conflicts:
	indra/newview/llmeshrepository.cpp

Added /* */ around the 'virtual' keyword in two places
that collided with changes in meshupload from lightdrake.
2013-01-13 17:59:49 +01:00
Latif Khalifa
11c5e1cf4c Merge branch 'master' into 1.7.3-dev 2013-01-13 12:45:43 +01:00
Latif Khalifa
cef7ea9f5e Merge remote-tracking branch 'lirusato/master' into 1.7.3-dev 2013-01-13 12:45:37 +01:00
Latif Khalifa
31d2a15957 Merge remote-tracking branch 'aleric/master' into 1.7.3-dev 2013-01-13 12:45:25 +01:00
Shyotl
e622e03d2a Bulk of server-baking impelmentation and a bit of cleanup. 2013-01-13 02:37:12 -06:00
Siana Gearz
5b0597ea47 Suppress 400 GCC warnings in Collada DOM headers 2013-01-13 06:27:02 +01:00
Siana Gearz
5f3ca7fda0 Linux64 support, integrated physics/decomposition 2013-01-13 03:23:56 +01:00
Aleric Inglewood
3a414b21fa Temporary workaround for release. 2013-01-13 02:18:00 +01:00
Aleric Inglewood
e99a906f54 Testsuite part 1: make it compile alone. 2013-01-13 01:58:49 +01:00
Aleric Inglewood
fc4b02cee8 Moved HTTPTimeout to it's own files. 2013-01-12 23:00:21 +01:00
Aleric Inglewood
e01567553e Added default message for feed uploads.
By default show 'Type your message here...' and if the text editor
never got focus, replace that with a default message.
2013-01-12 21:31:21 +01:00
Aleric Inglewood
bf7b0bf4bf Hide floater until success/failure (or floater is re-opened) 2013-01-12 21:16:40 +01:00
Lirusaito
ece92a1b7c Optionally, have group chat and conference buttons on title line.
Adds UseConciseGroupChatButtons, and UseConciseConferenceButtons
Adds "Buttons on group chat name line (Affects new group chats)" and "Buttons on conference title line (Affects new conferences)" checkboxes to Adv. Chat's Chat UI tab.
Adds floater_instant_message_ad_hoc_concisebuttons.xml, floater_instant_message_group_concisebuttons.xml

Brings panel_speaker_controls.xml's speakers_list down by 7 pixels, which is necessary because it is awkwardly high in old places as well, such as Local Chat.
2013-01-12 14:42:55 -05:00
Aleric Inglewood
2da5c51e42 Do not freeze UI when snapshot floater is opened the first time. 2013-01-12 17:35:01 +01:00
Aleric Inglewood
57228fa208 Fix upload snapshot to inventory callback mechanism. 2013-01-12 17:27:33 +01:00
Aleric Inglewood
024c62aed4 Fix the "map/set iterators incompatible" bug.
cookies is only valid when AIHTTPReceivedHeaders::getValues return true.
2013-01-12 04:24:21 +01:00
Aleric Inglewood
e56f14502e Fill fd_sets AFTER processing command queue. 2013-01-12 02:51:44 +01:00
Lirusaito
82eb1a946e Fix group buttons in horizontal and allow the horizontal buttoned friends and groups floater to take up minimal space. 2013-01-11 19:17:06 -05:00
Siana Gearz
85855ecd85 Merge branch 'meshupload' of git://github.com/LightDrake/SingularityViewer into meshup 2013-01-12 01:12:33 +01:00
Siana Gearz
cbfd31a576 Merge branch 'master' of git://github.com/LightDrake/SingularityViewer into meshup 2013-01-12 01:11:01 +01:00
Siana Gearz
b6f1bb570f Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-01-12 00:59:06 +01:00
Siana Gearz
896036b3c2 Removing ReSit, because it's not so very nice 2013-01-12 00:50:24 +01:00
Lirusaito
e51937cee7 Warn more clearly about LLRadioGroup::setValue being used wrong, and attempt to recover with LLUICtrl::setValue. 2013-01-11 18:21:48 -05:00
Lirusaito
a47dbf88bb Fix Issue 590: Debug Settings parameters setting is seriously bugged 2013-01-11 15:50:47 -05:00
Aleric Inglewood
f9a868a979 Compile fix for VC++ 2013-01-11 17:16:05 +01:00
Latif Khalifa
56542a02e8 Use multiple cores for compilation of the Debug build 2013-01-11 11:28:21 +01:00
Lirusaito
2dda9499fa Unhide Client column properly on non-SL Grids. 2013-01-11 03:56:55 -05:00
Aleric Inglewood
f9738cb611 Add getName() to every non-base class Responder object. 2013-01-11 04:15:55 +01:00
Aleric Inglewood
741a160913 Fine tune of private (libcwd) assertion.
It turns out that it's possible to receive data before an upload
finished when the server sends HTTP_BAD_REQUEST in the middle of the
upload (this happens to me when I try to upload a 6000x6000 image to my
profile feed, with is a 44MB file). So, in that case the finished upload
detection did not fail and we shouldn't assert.
2013-01-11 01:28:46 +01:00
Aleric Inglewood
5daf817e7e Upload larger original to profile feed. 2013-01-10 19:42:19 +01:00
Aleric Inglewood
9175bc0e16 Fixed LLUploadDialog to display it's text.
Also made the view rectangle have some minimal size (1/10th of the
screens width and height).
Increased the used font a bit.
Fixed removal of the dialog in the case of uploading to profile feed.
2013-01-10 18:48:02 +01:00
Lirusaito
b7f1fdd9cc Vertical space recovered 2013-01-09 11:25:46 -05:00
Lirusaito
07f88d21bd Applied STORM-1209 and added string AGroupMemberNamed for translation. 2013-01-09 11:05:37 -05:00
Lirusaito
a7d1a4611f Optionally, have IM buttons on the same line as the person's name.
Adds UseConciseIMButtons.
Adds floater_instant_message_concisebuttons.xml
Adds Have buttons on the same line as name for IMs (Affects new IMs) checkbox to Adv. Chat's Chat UI tab.
2013-01-09 10:19:41 -05:00
Lirusaito
c96b840c53 Split off certain preferences into new Adv. Chat subtab Chat UI
From Text Chat: Disallow communicate shortcut opening detached friends list
From Vanity: Use horizontal buttons for contacts floater (needs restart)
The rest were in Chat/IM of Vanity.
2013-01-09 07:30:49 -05:00
Lirusaito
70445ab8a3 Add option for Horizontal buttons on Contacts floater.
Adds Use horizontal buttons for contacts floater (needs restart) to Vanity Preferences.
Adds ContactsUseHorizontalButtons.
Adds FloaterContactsHorizRect for saving horizontal contacts rect.
Adds panel_friends_horiz.xml, panel_group_horiz.xml, and floater_my_friends_horiz.xml

Also corrects string value for FloaterContactsRect
2013-01-08 20:21:15 -05:00
Aleric Inglewood
136e6dd389 New debug channel dc::snapshot. 2013-01-09 00:54:53 +01:00
Siana Gearz
94edef2c3f Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-01-09 00:07:57 +01:00
Siana Gearz
1434e8d6e9 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-01-09 00:07:34 +01:00
Siana Gearz
54a53b574f Follow fix and clean-up 2013-01-09 00:07:17 +01:00
Shyotl
c9954cf14e Some cleanup missed in merge. 2013-01-08 17:07:05 -06:00
Shyotl
7ca974f731 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git into sunshine 2013-01-08 17:06:08 -06:00
Shyotl
54771409d6 Merge branch 'master' into sunshine
Conflicts:
	indra/llimage/llimage.cpp
	indra/llui/llui.cpp
	indra/newview/llvoavatar.cpp
2013-01-08 17:05:29 -06:00
Aleric Inglewood
63ae33eca7 Fix crash in AICurlPrivate::curlthread::PollSet::next
Introduced in
6dcda3595e
(Add recovery for randomly closed socket desciptors.)

By copying CurlSocketInfo* into mCopiedFileDescriptors, it was possible
that we accessed a deleted CurlSocketInfo for it's filedescriptor,
returning a random value, which, when passed to FD_ISSET could cause a
SIGSEGV.

I reverted this change and now store the literal socket descriptors in
mCopiedFileDescriptors again. It is not a problem when libcurl deletes
the corresponding CurlSocketInfo (through a callback to
MultiHandle::socket_callback) in that case, because the fd_set we test
against isn't updated as a result of that, not until we're down with
mCopiedFileDescriptors (at the re-entry of select()).
2013-01-08 23:43:25 +01:00
Lirusaito
b485048f6b Show local chat bar in floater... (Needs restart) 2013-01-08 17:17:52 -05:00
Lirusaito
3ed2da9282 Once more change the behavior of minimizing new chats in open in separate floater mode, to be a little more truthful. 2013-01-08 14:53:08 -05:00
Drake Arconis
7aa95debf1 Merge branch 'master' into meshupload 2013-01-08 14:37:54 -05:00
Drake Arconis
f178de2ff8 Merge remote-tracking branch 'Lirusaito/master' 2013-01-08 14:37:45 -05:00
Drake Arconis
2d9402fd2d Merge branch 'master' into meshupload 2013-01-08 14:37:25 -05:00
Aleric Inglewood
5188693469 Compile fix for last commit and Release 2013-01-08 20:33:29 +01:00
Lirusaito
68911876b9 Option to Disallow communicate shortcut opening detached friends list
Added CommunicateSpecificShortcut
Added checkbox to Text Chat preferences
2013-01-08 13:48:18 -05:00
Drake Arconis
10c19731b3 Merge remote-tracking branch 'Aleric/master' 2013-01-08 13:11:43 -05:00
Lirusaito
820b4ea358 Optionally, remove chatbar from local chat floater.
FloaterChatBarlessRect keeps the size of this separate, for those who want to switch by mood.
ShowLocalChatFloaterBar toggles this.
Show local chat bar in floater entry added to Adv. Chat prefs.
floater_chat_history_barless.xml added for this.
2013-01-08 12:16:51 -05:00
Aleric Inglewood
d8485350e7 Address clang warnings.
* Split off AIThreadSafeBitsPOD, because offsetof may only be used on POD types.
* Added ASSERT_ONLY and ASSERT_ONLY_COMMA
* Removed a few unused class members
* Fixed a bug in AIHTTPReceivedHeaders::equal that more or less only
  compared the length of the headers before :/
2013-01-08 17:50:09 +01:00
Lirusaito
b4b6186f54 Re: 3ea353bef3, fix minimize case to minimize and not steal focus. Also apply to group chats. 2013-01-08 08:43:55 -05:00
Drake Arconis
8889f6b837 Merge remote-tracking branch 'Lirusaito/master' 2013-01-08 06:38:08 -05:00
Lirusaito
3ea353bef3 Change default behavior of separated non-local chats mode to open minimized. 2013-01-08 06:33:07 -05:00
Drake Arconis
ca746f3b47 Merge remote-tracking branch 'Lirusaito/master' into altcompilers 2013-01-08 06:17:47 -05:00
Drake Arconis
9f7e81cec2 Alt Compiler fixes 2013-01-08 06:17:39 -05:00
Drake Arconis
bc3ad59dd5 Revert "Fixed a build issue in clang"
This reverts commit 6d379448be.
2013-01-08 06:16:28 -05:00
Drake Arconis
979adcd6e2 Minor fix to OSX 2013-01-07 22:11:19 -05:00
Shyotl
c5c1294d7d Finished LLGLTexture. Migrated opengl related code from llui.h/cpp to llrender2dutils.h/cpp. Moved lluiimage to llrender library. 2013-01-07 20:12:14 -06:00
Drake Arconis
0ce91ce5ed Build fixes 2013-01-07 18:44:51 -05:00
Lirusaito
67e4518132 Scroll to the object's texture if the user has a copy in their inventory. EXT-5403? Fixes part of Issue 501. 2013-01-07 18:32:54 -05:00
Drake Arconis
b76cb36c0f Merge remote-tracking branch 'Lirusaito/meshupload' into meshupload 2013-01-07 18:31:02 -05:00
Lirusaito
0636f0049a Rectify the problem in which profile images would be below the window border when first opened. 2013-01-07 18:20:02 -05:00
Drake Arconis
8346ce4cd8 Merge remote-tracking branch 'Aleric/meshupload' into meshupload 2013-01-07 18:10:38 -05:00
Drake Arconis
e565341e90 Merge branch 'master' into meshupload 2013-01-07 18:09:56 -05:00
Lirusaito
1b2c0ba02b v-d llviewermenufile.cpp functions (and order) for meshupload, decide when Upload Mesh entry should be enabled. 2013-01-07 18:08:42 -05:00
Aleric Inglewood
cbbe678f9e Remove FloaterModelPreviewRect 2013-01-07 23:31:40 +01:00
Aleric Inglewood
5efcc7186e Fixed mesh file picker and then some 2013-01-07 23:12:09 +01:00
Aleric Inglewood
d188ecae70 Fix crash because of missing debug setting 2013-01-07 23:01:10 +01:00
Shyotl
d71210e942 Trivial changes, mostly to clean up diff noise. Majority of changes are comment corrections or licenseinfo updates. (does not include newview directory) 2013-01-07 14:44:54 -06:00
Aleric Inglewood
9c20139ae8 Fix memory leak. This auto deletes the file picker, the old code did't. 2013-01-07 20:21:45 +01:00
Aleric Inglewood
da19e770a2 Renamed FFLOAD/SAVE_LSL to FFLOAD/SAVE_SCRIPT 2013-01-07 20:11:18 +01:00
Aleric Inglewood
5e7acb9f3a Add support for ".dae" (and others) to filepicker load filter.
* Brought llfilepicker.{cpp,h} up to speed with V3 by adding
  FFLOAD_MODEL, FFLOAD_COLLADA, FFLOAD_SCRIPT, FFLOAD_DICTIONARY
  However, note that we used FFLOAD_LSL, so I renamed their
  FFLOAD_SCRIPT to FFLOAD_LSL and kept our way of filtering.
* Fixed the filter token that is sent to the plugin for
  collada (from "dae" to "collada").
2013-01-07 20:00:54 +01:00
Drake Arconis
6d379448be Fixed a build issue in clang 2013-01-07 11:59:25 -05:00
Aleric Inglewood
79763aacf7 Merge branch 'master' into meshupload 2013-01-07 17:59:21 +01:00
Aleric Inglewood
4b592f7507 Merge remote-tracking branch 'singu/master' 2013-01-07 17:58:53 +01:00
Aleric Inglewood
e7ef9eff4f Merge branch 'master' into meshupload 2013-01-07 17:50:03 +01:00
Drake Arconis
9e2049c463 Added darwin and windows libraries and added copying of collada and glod 2013-01-06 21:58:26 -05:00
Drake Arconis
8aa7113480 Merge branch 'master' into meshupload 2013-01-06 21:46:34 -05:00
Drake Arconis
b1b9172f28 Merge branch 'meshupload' of https://bitbucket.org/LightDrake/singularityviewer-test into meshupload 2013-01-06 21:21:02 -05:00
Drake Arconis
3a691e0c23 Fixed linking 2013-01-06 21:20:41 -05:00
Aleric Inglewood
a9a308e5e9 Never freeze again.
Put snapshot related floaters always on top of the full screen preview.
Make having multiple running uploads more robust.
Fix infinite recursion when clicking on the bottom 'Snapshot' button
under certain conditions.
Unfreeze time more robust; unfreeze time out of precaution when
starting an upload (if 'Keep open' not checked).
Fixed a bug that caused all callbacks for successful feed uploads to be
ignored.
2013-01-06 23:40:53 +01:00
Lirusaito
e7f4fc7107 Added colors for mesh upload MeshImportTableNormalColor and MeshImportTableHighlightColor to default/colors_base.xml 2013-01-06 12:46:56 -05:00
Lirusaito
ac60260da2 Update LLFloaterModelPreview and make it compile~
Collada include_directories and llfloatermodelpreview.*s added to CMakeLists.txt
Update to v-d, compile with AIFilePicker, comment spelling fixes.
Upload Mesh... entry added to File menu.
Updated AIFilePicker to have FFLOAD_COLLADA with an mFilter of "dae"
And, finally, add floater_model_preview.xml~
2013-01-06 11:56:33 -05:00
Drake Arconis
364cf1ec73 Bug fix from v3 2013-01-06 09:47:02 -05:00
Drake Arconis
297c386b16 Fixed glod 2013-01-06 07:30:42 -05:00
Drake Arconis
152a3685fa Merge branch 'master' into meshupload 2013-01-06 04:03:49 -05:00
Drake Arconis
bb7464a975 Merge branch 'master' of https://bitbucket.org/LightDrake/singularityviewer-test 2013-01-06 04:03:14 -05:00
Drake Arconis
9c1237ca05 Initial work. 2013-01-06 03:59:38 -05:00
Shyotl
69e0738096 Fix crash when using edit appearance. 2013-01-05 22:05:53 -06:00
Siana Gearz
cd27184332 Take out buggy padding removal in OJ 2013-01-06 04:01:28 +01:00
Drake Arconis
cadf654fae Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-01-05 20:50:49 -05:00
Siana Gearz
d5892bbb32 My preliminary thoughts on OpenJPEG 2013-01-06 02:38:12 +01:00
Shyotl
0b31537bfe Updated llfile so that llofstream and llifstream actually work when given a file handle. 2013-01-05 17:13:35 -06:00
Shyotl
776a977824 Completed code migration to LLAvatarAppearance 2013-01-05 17:12:02 -06:00
Siana Gearz
20ae72e5fa CMake needs proper quoting 2013-01-05 23:25:47 +01:00
Siana Gearz
7fc4348f64 Fix build deselect 2013-01-05 22:14:10 +01:00
Lirusaito
5ec116021a Feature request: Alt-R for Region/Estate floater 2013-01-05 01:45:55 -05:00
Lirusaito
a992333744 Zi Ree's Debug Setting Floater awesomeness (Search!!)
Made to work with Singularity, and also be a bit better..
Alphabetizes includes.
Switches settings combobox to a scrolllist, and Boolean combobox to a radiogroup.
Makes floater resizable, aligns a lot of the UI, and prepares it all for proper resize behavior.
Adds Copy button for copying the name of the debug setting.
Yay, verbosity! Also adds FloaterDebugSettingsRect to keep track of the floater's size.

Also somehow the getInstance line snuck out of last commit... tossed it in here.
2013-01-05 01:43:17 -05:00
Shyotl
5cf091b8b2 Completed code migration from LLViewerWearable to LLWearable. 2013-01-05 00:33:55 -06:00
Shyotl
bea4bc6a1a Brought over lltexglobalcolor 2013-01-04 21:15:35 -06:00
Shyotl
9596514c79 Dragged over lltexlayer, lldriverparam, lllocaltextureobject, llwearabledata 2013-01-04 20:50:35 -06:00
Siana Gearz
fefe0df922 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-01-03 23:37:00 +01:00
Siana Gearz
509bdcb891 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-01-03 23:36:55 +01:00
Aleric Inglewood
2fbd53807c Do not use LLCachedControl as global variables. 2013-01-03 23:25:18 +01:00
Lirusaito
9498375e75 Update LLFloaterSettingsDebug to match up with v-d.
Adds boost::bind and makes the floater a singleton.
2013-01-03 17:20:57 -05:00
Aleric Inglewood
639b264d2d Do not crash upon corrupted HTTP header.
This addresses the reported assertion by luis thibodeaux.
2013-01-03 21:06:20 +01:00
Lirusaito
c3829485e4 Fixed LLCompileQueue messages via update to v-d in parts. Script resets now output properly~ 2013-01-03 14:08:39 -05:00
Lirusaito
88de1b28a2 Add MoyMiniMapCustomColor swatch to Vanity Preferences.
Fixed spacing of MoyMiniMapCustomColor in settings_ascent_coa.xml and removed it from settings_per_account.xml

TODO: Make MoyMiniMapCustomColor more flexible.
-Added ColorCustomChat checkbox, pref code, and setting commented out.
2013-01-03 13:59:14 -05:00
Siana Gearz
17e0c79fe7 Build fix Linux 2013-01-03 03:03:06 +01:00
Siana Gearz
ddef80d2cf Revert "Attempt to fix frame timer on broken mainboards"
This reverts commit 5eb99b7d2f.
2013-01-03 03:02:15 +01:00
Siana Gearz
1872337f5f Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-01-03 02:17:20 +01:00
Siana Gearz
6e219f0a4e Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2013-01-03 02:15:51 +01:00
Shyotl
a408c2211b Workaround for targetomega'd objects turning jittery when zoomed in on. 2013-01-02 18:42:26 -06:00
Siana Gearz
8b2dcb6cb0 We're supposed to use HTTP bake fetch now 2013-01-03 00:10:56 +01:00
Aleric Inglewood
b0fe12f597 Snapshot Freeze Time: add Langolier tag for new (invisible) avatars.
If an avatar TP's in while you are in Freeze Time mode, they now have a
visible tag with the tag 'Langolier' in it. After exiting Freeze Time
mode they become visible. Before they would stay invisible.
2013-01-03 00:02:28 +01:00
Siana Gearz
9a1cc8b9a8 Translation cleanup script fix 2013-01-02 23:47:05 +01:00
Siana Gearz
cce4d50378 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-01-02 23:00:46 +01:00
Siana Gearz
e732e62b39 Tiny cleanup 2013-01-02 22:56:04 +01:00
Lirusaito
728056acdb Add support for Aurora's extended land layer codes to llvlmanager.cpp 2013-01-01 20:15:21 -05:00
Lirusaito
b85d282dfb WindLightRefresh added for compliance with Aurora's windlight event system. 2013-01-01 18:09:45 -05:00
Lirusaito
194902798b HippoGridManager and HippoLimits updated with Aurora bits from Voodoo.
Adds isAurora() to HippoGridManager
Adds setAuroraLimits and Aurora case to setLimits() in HippoLimits
2013-01-01 18:04:39 -05:00
Aleric Inglewood
cc276ff232 More snapshot UI tweaks. 2013-01-01 22:34:22 +01:00
Aleric Inglewood
5538fe27e5 Snapshot improvements.
* Warn when it was not possible to make a snapshot because the difference
between the aspect of the required target size and the required target
aspect itself is too large.
* Reset Feed and Postcard Aspect to Default when making a new snapshot.
* Fixed a rounding error that caused one-pixel size error.
2013-01-01 21:30:13 +01:00
Lirusaito
c0ba3e95f3 Ability to change default behavior of Chats being torn off so that all chats appear minimized upon opening, as well, regardless of conditions.
Adds debug setting OtherChatsTornOffAndMinimized
Not added to ui xml because the default behavior is likely fine.
2012-12-31 19:06:23 -05:00
Lirusaito
4ec6f853d8 In-Group feature request: Ability to have chats torn off, by default.
Best viewed without space changes... or maybe it doesn't matter any more.
Debug setting OtherChatsTornOff added.
Added Open new IMs in separate floaters checkbox to  Adv. Chat.
Moved Show group name in chat to the right column on top of Adv. Chat panel.

So how's this work?
Two ways.. 1. The user opens a chat; 2. A chat is started from another party to the user.
In 1, we open the chat in a separate floater and focus the floater.
In 2, we check if there is a floater currently in focus before opening the chat
if so, we minimize the floater, setting focus back to whatever floater the user was focused on;
if not, we leave the new chat floater open and focused.

Note that this will NOT alter the default behavior at all, we can't be having that.
2012-12-31 17:06:30 -05:00
Aleric Inglewood
6dcda3595e Add recovery for randomly closed socket desciptors.
Although it should never happen that a file descriptor is suddenly
closed, it appeared that this happens on linux 64bit when using
FMODex... Not really sure how useful this is, but at least now the
viewer just continues to work, as if -say- the socket was closed
remotely. Before the curl thread would go into a tight loop that it
wouldn't recover from until the watchdog thread terminated the viewer.
2012-12-31 19:24:37 +01:00
Aleric Inglewood
c4a9eb9e44 Work around for 'version `OPENSSL_1.0.0' not found'
When linking against the prebuilt libcrypto.so.1.0.0 and
libssl.so.1.0.0 there is a problem running the viewer in
gdb (on debian) because gdb links with libpython2.7.so
which needs a newer openssl on my system (OPENSSL_1.0.1).

The patch allows to work around this problem by defining
-DUSE_SYSTEM_OPENSSL:BOOL=ON when configuring, which then
causes the viewer to be compiled against the system libs.
(If you already installed the prebuilt, you have to manually
remove them with script/install.py --uninstall openSSL).

The prebuilt libcurl expects a function SSLv2_client_method
however, which is not present in my openssl system libs.
A stub was added which is possible because the function
in question isn't used anyway.
2012-12-31 16:15:36 +01:00
Lirusaito
ba57bb1396 In-group feature request: Allow coloring chat of special people (Friends, Estate Owner, Lindens, Muted Residents)
Added ColorFriendChat, ColorEstateOwnerChat, ColorLindenChat, and ColorMutedChat.
Did some spaces to tabs work, view without space changes.
Add checkboxes beneath corresponding color swatches and "Use colors for chat:" text to Vanity.
Fix Ascent*Color Comments strings.

Also fix the issue where clicking ones name in a group chat would result in it opening a random profile.
2012-12-31 06:24:35 -05:00
Lirusaito
f94f4a1191 Satisfy Issue 100: When timestamp it set to include seconds, the seconds do not get included with IM & chat logs.
Best viewed without space changes.
SecondsInLog debug setting added.
Seconds in Log timestamps checkbox added to Adv. Chat prefs.
2012-12-31 04:54:59 -05:00
Lirusaito
469f76e690 Added "Request New Feature..." to Help->Bug Reporting menu. 2012-12-30 16:21:01 -05:00
Lirusaito
0098466704 Fix for WordFromTheWise's missing lsl strings issue. 2012-12-30 16:09:08 -05:00
Lirusaito
48ddfd25d4 Skins request! Black Red, Black Light Blue, and Black Dark! 2012-12-30 16:07:07 -05:00
Aleric Inglewood
2f3841d7e6 Update of print_diagnostics.
CURLE_COULDNT_CONNECT only happens when we actually get
an error (ie, 'connection refused'). If we time out while the connect
attempt is still running then we get CURLE_OPERATION_TIMEDOUT.
2012-12-30 21:11:10 +01:00
Lirusaito
1cde242f06 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2012-12-30 14:05:35 -05:00
Damian Zhaoying
a0b227fdd8 fixes and UI translations tweeks to fit in spanish language 2012-12-30 15:38:11 -03:00
Aleric Inglewood
36a79d7cbe Merge remote-tracking branch 'shyotl/master' 2012-12-30 02:57:11 +01:00
Lirusaito
2c491bc905 Break out LLMakeOutfitDialog.
Added "Make Outfit..." to Edit menu and Create->"New Outfit" to inventory floater menu.
Cleaned up LLMakeOutfitDialog, using boost::bind and less waste.
Moved onMakeOutfitCommit() to LLMakeOutfitDialog as makeOutfit()
Also changes LLFloaterCustomize's callbacks to use boost::bind
Give new outfit dialog a title instead of a heading.

Small fix to mistake with AnnounceSnapshots xmlstuffs.
2012-12-29 19:24:17 -05:00
Aleric Inglewood
a25c405eae Fix assert after failed login.
reset_login(), among others, sets the state back to STATE_LOGIN_SHOW,
which then causes gViewerWindow->initWorldUI() to be called, which
is the (only) function that calls
LLMenuOptionPathfindingRebakeNavmesh::initialize.
In other words, it's perfectly normal to enter that function
a second time and the assert is erroneous.
2012-12-29 18:08:46 +01:00
Aleric Inglewood
e666c60e7d Merge remote-tracking branch 'singu/master' 2012-12-29 17:05:15 +01:00
Aleric Inglewood
6a45e68c73 Merge branch 'master' into llwebprofile 2012-12-29 17:03:46 +01:00
Aleric Inglewood
59b313352b Third time I have to fix this... weird 2012-12-29 17:03:16 +01:00
Aleric Inglewood
9e04f9ba80 Enable/disable upload/send button correctly.
Passes an 'index' magic number to the upload/save functions which
pass that back to the *Done callbacks, so we know if the *raw*
snapshot is still up to date when the upload succeeds or fails.
2012-12-29 16:51:29 +01:00
Lirusaito
cf5838505f In-world feature request: Announce in chat when someone has taken a snapshot.
AnnounceSnapshots debug setting.
"Announce when someone takes a snapshot" added to Vanity Main Preferences.
took_a_snapshot translatable string added to strings.xml

Also in this commit:
Turned PlayTypingSound check into LLCachedControl.
In preparation for the crippling of all old viewers, the Vanity Main tab shall henceforth only be called Main, not Main  (General)
This change has been made in the code comments and the UI itself.
2012-12-29 07:58:06 -05:00
Lirusaito
23469c00de Satisfy Issue 411: Song list in local chat - not a floater
AnnounceStreamMetadata debug setting.
"Announce music stream's metadata in local chat when tuned in" checkbox added to vanity main preferences.
Made the words Title and Artist translatable, as well as the "Now playing" string.
2012-12-29 07:45:05 -05:00
Siana Gearz
66083d6531 Removing leftover dead code 2012-12-28 21:07:19 +01:00
Aleric Inglewood
1c3748e923 Merge remote-tracking branch 'lirusaito/llwebprofile' into llwebprofile 2012-12-28 17:04:29 +01:00
Aleric Inglewood
88bf01fe6f Avoid crashing at exit by joining the curl thread. 2012-12-28 16:59:04 +01:00
Siana Gearz
a969a8f99c UseNewTargetOmegaCode loosely ported from Henri 2012-12-28 16:46:06 +01:00
Aleric Inglewood
ef0e34a278 Do not attach cam to avatar in Freeze Time mode.
We do, and the avatar moves then the cam jumps
away from the frozen avatar to where it really is.

Unfortunately, it's still not possible to attach
the cam to moving objects with this patch.
Also, scripted changes to objects are still visible,
like changes in local lights of texture full brightness.
2012-12-28 16:40:08 +01:00
Lirusaito
50eb45991d "attachments and wearables", not "clothing and wearables" 2012-12-28 02:13:50 -05:00
Lirusaito
ffa405dad9 Comment cleanup. 2012-12-28 01:25:11 -05:00
Lirusaito
1f966eb6c3 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2012-12-28 01:21:28 -05:00
Lirusaito
b503540075 Always remember to save after making a change. (Location works now) 2012-12-28 00:33:08 -05:00
Lirusaito
2be305d39e Improvements!
Fix CMakeLists being out of order.
Add setting SnapshotFeedAddLocation to keep track of user's preference whether or not to include location in uploads to profile feed.
Clean up LLFloaterFeed to take only what it needs, also gave it a boost~
Remove saveFeed() from LLFloaterSnapshot, removing the dependency on LLWebProfile.
Compile fixes for LLFloaterSnapshot.
Prettied up the upload to feed floater.

TODO: Does Location even work? I can't get it to appear, never seems to get used right in v-d either.
2012-12-28 00:14:54 -05:00
Shyotl
f6ee966e17 Clean up LLAvatarListEntry creation/destruction and resolve LLAvatarPropertiesProcessor retaining deleted observers. 2012-12-27 21:59:59 -06:00
Drake Arconis
246315c723 This is the Cupcake Commit. Cupcakes. Also may fix linux fmodex64. 2012-12-27 15:15:27 -05:00
Aleric Inglewood
be8f16a8e6 Disable upload/send button immediately.
Immediately disables button and reenables it
again when upload/save was a failure.
The callback is now ignored if the snapshot
was refresh in the meantime.
2012-12-27 19:02:58 +01:00
Aleric Inglewood
32614d3539 Compile bug fix 2012-12-27 17:38:28 +01:00
Aleric Inglewood
aab978c7ea WIP: floater_snapshot_feed.xml and code.
This is just a skeleton, roughly copied from the Postcoard
code, which is very similar. Nothing in indra/newview/llfloaterfeed.cpp
has been changed yet, apart from a few deletions (to make it compile)
and the literal replacement of "Postcard" with "Feed".
indra/newview/llfloatersnapshot.cpp was updated however to
open the new floater when one tries to upload a snapshot to the feed.
It is still needed to make a callback to saveFeed(), or rather to
move that function to the saveFeed that is in llfloatersnapshot.cpp.
2012-12-27 17:13:47 +01:00
Lirusaito
d4b48fae6f Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-12-26 15:50:38 -05:00
Lirusaito
0433bd8560 Gemini young age color should look more natural for Gemini. 2012-12-26 13:09:05 -05:00
Shyotl
71eb0fedd9 Merge branch 'master' of git://github.com/lkalif/SingularityViewer.git 2012-12-25 06:17:42 -06:00
Latif Khalifa
9056ae72d3 Point library downloads to bitbucket since github is depreciating binary downloads 2012-12-25 11:57:59 +01:00
Latif Khalifa
430a5359ac Merge remote-tracking branch 'upstream/master' 2012-12-25 11:47:32 +01:00
Inusaito Sayori
5468bc8447 Fix compile warning/error in aihttptimeoutpolicy.cpp 2012-12-25 04:53:16 -05:00
Inusaito Sayori
059005a4a7 Fly after teleport, off by default. 2012-12-25 04:47:07 -05:00
Shyotl
3ca39ab3f1 Client-side maturity handling when teleporting. Adds new notification that asks if you want to change maturity settings with a single click and automatically re-fire the teleport request. 2012-12-25 02:30:51 -06:00
Shyotl
f8a6e2e19f Moved region rebake button to 'Tools' menu 2012-12-25 02:27:15 -06:00
Shyotl
1f5c2095a5 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2012-12-24 18:26:52 -06:00
Shyotl
afaaba6b3c OSX was choking on transformfeedback shaders. Make failure to load such shaders non-critical to the shader loading process. Also clean up glColorMask state properly in wlsky. 2012-12-24 17:56:32 -06:00
Shyotl
5ada2d4b6f OSX was choking on transformfeedback shaders. Make failure to load such shaders non-critical to the shader loading process. Also clean up glColorMask state properly in wlsky. 2012-12-24 17:55:05 -06:00
Shyotl
dd15b9234f Migrated LLTexLayerParams. Renamed LLTexLayerSet(Buffer) to LLViewerTexLayerSet(Buffer), and provided simple bases in llappearance/lltexlayer.h to mimic new usage. Reworked various bits to work with these changes, and performed some basic cleanup of LLVOAvatar(Self) 2012-12-24 17:20:46 -06:00
Aleric Inglewood
c85f976ed6 Fix outbox notifications. 2012-12-24 22:08:44 +01:00
Aleric Inglewood
b22832ba54 Fix cookie handling.
Cookies are now collected during redirects, one the last cookie
of a given name is kept. Cookies are then set by looking for
the right cookie name (instead of what viewer 3 does: just
use the last cookie that was set).

This fixes the merchant outbox.
2012-12-24 19:58:54 +01:00
Inusaito Sayori
977f17a893 Add feature to Continue flying upon standing, if the user was flying when they sat down.
A couple users said this could be handy.
Useful for birds, fairies, and otherwise flying critters.
2012-12-24 05:24:57 -05:00
Inusaito Sayori
60621a300c Satisfy in-world feature request: Avatar Count on Radar. 2012-12-24 03:09:09 -05:00
Aleric Inglewood
fac3fc67b6 Add filtering for curl debug output.
Add CURLTR debug channel for libcurl API calls,
and use CURLIO only for libcurl debug output.
Note: need to set gDebugCurlTerse to true for
filtering to take effect, then pass 'debug_on'
to the LLHttpClient methods that require debugging.
2012-12-24 02:54:36 +01:00
Shyotl
d03d145be4 Pulled LLAvatarJointMesh out of LLViewerJointMesh. 2012-12-23 18:33:35 -06:00
Inusaito Sayori
8e3da75c3c Missed a spot for 487. 2012-12-23 15:10:53 -05:00
Shyotl
1083d7e0ef Added LLGLTexture. Virtually completely virtual for now. Also added LLTextureManagerBridge, although not yet utilized. 2012-12-22 23:58:42 -06:00
Shyotl
cdaa4b4e99 Clear up a few issues revealed upon forced full recompile. (VS is dumb sometimes) 2012-12-22 23:44:43 -06:00
Inusaito Sayori
c9dc2eaad4 Satisfy Issue 487: Walking Backwards, Turning Around
TurnAroundWhenWalkingBackwards added.
Turn Around When Walking Backwards added to Vanity Main Preferences.
Code borrowed, in part, from Firestorm.
2012-12-23 00:26:49 -05:00
Shyotl
295fcb53b0 Migrate llviewervisualparams to llappearance project. 2012-12-22 17:17:00 -06:00
Shyotl
389c35e08e Pulled LLAvatarJoint out of LLViewerJoint 2012-12-22 16:30:38 -06:00
Aleric Inglewood
8095d6c48c Large snapshot update (part 3) 2012-12-22 19:07:08 +01:00
Inusaito Sayori
6f2e192947 Complete Issue 545: OSSL Updates
Updates keywords.ini, lsl_functions_os.xml, and en-us/strings.xml
Thanks WhiteStar, ThiteStar.
2012-12-22 12:25:46 -05:00
Inusaito Sayori
0b9d8c7b47 Satisfy Issue 512: Increase RenderVolume LOD Factor Threshold to 4.000
Phoenix users are used to this.
The setting clamps to the max here, so it must be 4.
2012-12-22 05:29:21 -05:00
Inusaito Sayori
1ecea32933 An hour is not a circle. 2012-12-22 02:07:36 -05:00
Inusaito Sayori
ceae4470f5 Fix a windows compiley thing. 2012-12-21 05:49:14 -05:00
Lirusaito
237455f4b7 Use boost::date_time for displaying avatar age.
llpanelavatar change may be better viewed without space changes.
2012-12-20 23:34:05 -05:00
Lirusaito
3d25f8ee79 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2012-12-20 09:25:33 -05:00
Lirusaito
86572462e6 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2012-12-20 09:25:21 -05:00
Lirusaito
245eaa1fd9 Satisfy radar issues: 51(Avatar Age), 382(Time duration), 245(Hide columns on command)
Overall:
Extras tab added to radar.
Activities given tool_tip strings, TODO: Get icon entries to have tool_tips.
Added tab_min_width="0" to tab container so tabs take up only as much space as necessary.

Issue 51:
RadarAlertAge, AvatarAgeAlertDays debugs added.
RadarTextYoung color added to colors_base and gemini.
UI bits added to radar.
ALERT_TYPE_AGE, LIST_AGE, and boost::lexical_cast added.
LLAvatarListEntry is now derived from LLAvatarPropertiesObserver for processProperties and all that fun stuff. Also has mAgeAlert and mAge.
processProperties is basically copied directly from LLAvatarPanel, it can probably be bettered.

Issue 382:
mTime, getTime(), LIST_TIME
Time column.

Issue 245:
Hide columns text and checkboxes added to UI.
assessColumns() now used to determine which columns to show. Also once used during postBuild()
col_helper() function added to help decide to hide or resize a column based on given params.
checkboxes all use assessColumns as callback.
RadarColumn* debug settings added.

If you read this all, that's a sign the 'pocalypse is coming.
2012-12-20 08:58:18 -05:00
Shyotl
003aa6a4eb Migrate llpoly* files to llappearance 2012-12-20 02:55:34 -06:00
Shyotl
f9d205b869 Intermediary commit. Exploit virtuals to 'emulate' real llavatarappearance.h. 2012-12-20 02:53:45 -06:00
Shyotl
e08afcb963 Created llappearance project. Migrated llvoavatardefines and llwearabletype. 2012-12-20 00:00:17 -06:00
Damian Zhaoying
e7b712660e update spanish translations 2012-12-19 23:29:36 -03:00
Shyotl
3750123e43 Obsessive excessive clearing of glow rendertargets, as they still occasionally act weird. 2012-12-19 19:08:10 -06:00
Shyotl
b20f39d09f Retain shader error logs across entire session. 2012-12-19 19:06:59 -06:00
Inusaito Sayori
c35f762826 Satisfy Issue 476: Option to mute gesture sounds
Enable Gesture Sounds checkbox added to Adv. Chat->Spam tab.
2012-12-19 03:35:06 -05:00
Shyotl
7eda762c28 Cheapo sun bloom contribution in deferred. 2012-12-19 02:30:44 -06:00
Shyotl
0460769eea Unified moon/star rendering to share same shader. Also now actually using deferred shader when performing deferred rendering. 2012-12-19 01:52:10 -06:00
Shyotl
d3939c785d Fixup scroll list column header resizing. 2012-12-18 18:27:59 -06:00
Inusaito Sayori
66386d6eec Fix an issue introduced in V2MultiWear in which double-clicking or hitting an enter on a worn wearable would rewear it, not detach it. 2012-12-17 19:32:40 -05:00
Inusaito Sayori
9e8dafc4ca Satisfy Issue 167: Ability to set global "add instead of wear" option in prefs
Adds debug setting LiruAddNotReplace.
Adds "Add clothing and wearables instead of replacing them" to Main (General) tab of Vanity Preferences.
2012-12-17 17:17:12 -05:00
Inusaito Sayori
36a698fee4 Satisfy Issue 271: Fly after teleport feature.
Add debug setting LiruFlyAfterTeleports
Add Always fly after Teleports to General tab of System preferences.
(Also, fixed tabs where spaces should be in settings.xml)
2012-12-16 20:50:40 -05:00
Aleric Inglewood
aab764a6e5 Don't crash when user forgets last name on non-SL grids. 2012-12-16 23:39:58 +01:00
Aleric Inglewood
11f30bc28d Removed gFullName which isn't used anywhere 2012-12-16 23:17:10 +01:00
Inusaito Sayori
46b5595c3f Don't leave Group Copy check enabled unless we have trans and copy perms.
Also some code consistency chages that won't change anything.
2012-12-16 15:32:06 -05:00
Inusaito Sayori
c380f1f399 Don't show Paste As Link when Paste As Copy is shown enabled because it'll just be disabled in these cases. 2012-12-16 15:31:53 -05:00
Shyotl
184882e916 Remove dead code from llfloaterworldmap, and a tweak to lluictrl that I could've sworn I already did. 2012-12-16 13:30:29 -06:00
Aleric Inglewood
a9963bcdb3 In FreezeTime mode, keep avatars that TP away.
If an avatar TP's away (or quits), he will not
disappear anymore from a frozen scene. Unfreezing
makes him disappear of course (and clean up).

Known bug: if during Freeze Time mode someone
TPs away and then back, then he becomes a cloud
after Freeze Time is ended, which can only be
reset by another teleport (or relog) from either
the cloud or the one seeing him as cloud.
I decided not to fix this, cause there are things
with a higher priority and this - if it happens
at all - is rare and easy to recognize and work
around.
2012-12-16 00:13:06 +01:00
Aleric Inglewood
e0c0da7dff In Freeze Time re-show fullscreen preview when clicking thumbnail. 2012-12-15 02:20:53 +01:00
Shyotl
6c9df4574c Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2012-12-14 16:59:49 -06:00
Shyotl
034c83f996 Added trivial diagnostic message regarding teleport handling. 2012-12-14 16:28:18 -06:00
Shyotl
2b582b169b Mute list, now with 100% more text-appearing-ness, and 20% new shinies (mute-type icons, multi-select unmute, and displayname support). 2012-12-14 16:24:51 -06:00
Aleric Inglewood
cfa8df0575 Merge branch 'master' into llwebprofile 2012-12-14 20:43:17 +01:00
Aleric Inglewood
c34f2941aa Merge remote-tracking branch 'github/master' 2012-12-14 20:41:18 +01:00
Aleric Inglewood
555b397067 Install vivox runtime also on standalone when linux64 2012-12-14 20:40:27 +01:00
Inusaito Sayori
38f59e640c We canUndo and canRedo when we have a MoveableObject, not necessarily an EditableObject 2012-12-14 11:30:56 -05:00
Aleric Inglewood
65ce7dabe3 Merge remote-tracking branch 'github/master' 2012-12-14 16:42:27 +01:00
Aleric Inglewood
4d7d3ea937 Compile fix for non-standalone with DEBUG_CURLIO
Oops, that option doesn't exist in the prebuilt curl version.
2012-12-14 16:40:03 +01:00
Aleric Inglewood
15b6593143 Large snapshot update (part 2) 2012-12-14 02:31:08 +01:00
Inusaito Sayori
af1e7b346e Vignette is Awesome, its panel should reflect that! 2012-12-13 16:53:19 -05:00
Shyotl
7a2f572eaa Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer.git 2012-12-12 13:13:26 -06:00
Aleric Inglewood
4bb3ed0d85 Login crash bug fix.
XMLRPCResponder constructor was missing.
This fixes the following crash signature:

VIEWER      : 2012-12-12T14:25:13Z INFO("AppInit"): setStartupState: Startup state changing from STATE_LOGIN_NO_DATA_YET to STATE_LOGIN_DOWNLOADING
VIEWER      : 2012-12-12T14:25:14Z INFO("AppInit"): transferRate: Buffer size:   1308 B
VIEWER      : 2012-12-12T14:25:14Z INFO("AppInit"): transferRate: Transfer rate: 11 kb/s

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff33df7f5 in XMLRPC_RequestGetData () from /usr/lib/x86_64-linux-gnu/libxmlrpc-epi.so.0
(gdb) bt

Reason was that if the server replied with some error code then
mResponse was undefined.

I also added code to retry three times in that case;
the http status code that I get was 503, which really
mean "Service *temporarily* unavailable", so a retry
is in order.
2012-12-12 16:27:32 +01:00
Aleric Inglewood
5fe0820e13 Login crash bug fix.
XMLRPCResponder constructor was missing.
This fixes the following crash signature:

VIEWER      : 2012-12-12T14:25:13Z INFO("AppInit"): setStartupState: Startup state changing from STATE_LOGIN_NO_DATA_YET to STATE_LOGIN_DOWNLOADING
VIEWER      : 2012-12-12T14:25:14Z INFO("AppInit"): transferRate: Buffer size:   1308 B
VIEWER      : 2012-12-12T14:25:14Z INFO("AppInit"): transferRate: Transfer rate: 11 kb/s

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff33df7f5 in XMLRPC_RequestGetData () from /usr/lib/x86_64-linux-gnu/libxmlrpc-epi.so.0
(gdb) bt

Reason was that if the server replied with some error code then
mResponse was undefined.

I also added code to retry three times in that case;
the http status code that I get was 503, which really
mean "Service *temporarily* unavailable", so a retry
is in order.
2012-12-12 16:14:32 +01:00
Shyotl
28a4101d4d Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2012-12-12 03:12:08 -06:00
Shyotl
cc22edcce3 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2012-12-12 03:11:50 -06:00
Shyotl
2424d2a082 A little bit of postprocess shader tinkering. 2012-12-12 03:10:05 -06:00
Lirusaito
b1ccb70277 Added isClipboardPasteableAsCopy() to decide when not to show Paste As Copy 2012-12-11 15:15:41 -05:00
Shyotl
c641cc6394 Fix object list in About Land floater. (whoops) 2012-12-10 20:02:47 -06:00
Shyotl
9a6568f5e8 A little bit of bloom on indirect shiny reflections in deferred. 2012-12-10 20:00:57 -06:00
Shyotl
3627b33eec Reworked flexi update handling a little bit. 2012-12-10 19:55:17 -06:00
Lirusaito
702eb95b84 Add Paste As Copy to inventory menu...
The opposite of Paste As Link, this will make copies of everything in the paste buffer,
allowing the user to copy bunches of items or links and simply paste them to make new copies.

Also appears when not needed... unsure how to go about removing, maybe comment out in release?
2012-12-10 19:39:55 -05:00
Lirusaito
03f191f47d Satisfy Issue 494: Inventory: Copy links (without "find original")
http://code.google.com/p/singularity-viewer/issues/detail?id=494
Patch by Kitty Barnett, slightly modified by myself.
2012-12-10 16:42:06 -05:00
Lirusaito
813a4b0200 Fix warning: unused variable ‘len’ in release builds. 2012-12-10 13:26:48 -05:00
Lirusaito
c24950b261 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer
Conflicts:
	indra/newview/llfloateravatarpicker.cpp - Includes to v-d style, since plain alphabetical just won't cut it. Shyotl's changes for name system, here.
	indra/newview/llpanelgroupinvite.cpp - Shyotl's changes for name system, here.

Also corrected new README to have less typos and be slightly more accurate.
2012-12-10 11:24:25 -05:00
Shyotl
806abb1985 Reduce required number of glow rendertargets by 1... 2012-12-10 01:31:57 -06:00
Shyotl
a4591a5eaa Fix for friends list not resorting upon avatar online status change. Also did some minor cleanup 2012-12-09 17:05:54 -06:00
Siana Gearz
018737eb15 Blind Windows compile fix 2012-12-09 04:53:35 +01:00
Siana Gearz
3e5bd4e13b Linux build fixes 2012-12-09 04:25:01 +01:00
Siana Gearz
98ec8b9910 Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2012-12-09 03:27:52 +01:00
Siana Gearz
d2a966f363 OpenJPEG 1.5.2 2012-12-09 02:10:16 +01:00
Shyotl
8a7cc9259c Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2012-12-08 17:13:07 -06:00
Shyotl
382fc710e5 Disable octree statistics gathering. 2012-12-08 17:07:15 -06:00
Shyotl
be4229867a Occlusion-fudge was incorrectly defaulting to zero. 2012-12-08 16:56:06 -06:00
Shyotl
6b05022530 Applied Tofu Linden's SSAO improvements. e189d55a7b 2012-12-08 16:51:38 -06:00
Shyotl
08a3828cc9 Applied Tofu Linden's water atmospherics improvements.
59f73ee6a1 &
43fdcb8d84
2012-12-08 16:50:35 -06:00
Shyotl
d5efedf51b Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer.git into CT3Merge 2012-12-08 13:39:55 -06:00
Aleric Inglewood
8394a96fa8 Fix of TEXTBOX of group owned object.
Fixes http://code.google.com/p/singularity-viewer/issues/detail?id=548
2012-12-08 20:30:00 +01:00
Shyotl
4f7e869509 Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer.git into CT3Merge 2012-12-08 01:03:29 -06:00
Shyotl
7aac61859f Avoid excess calls to gGL.flush when bound texture hasn't actually changed. 2012-12-08 01:01:47 -06:00
Shyotl
3ba967bdc1 Update to LLAvatarNameCache and consumers. 2012-12-08 00:59:37 -06:00
Shyotl
9fb4e677a6 Updates to LLScrollListCtrl and related inter-dependencies. Also added ability to set face texture to 'None' (LLUUID::null). 2012-12-08 00:56:58 -06:00
Lirusaito
1ffb5aa6fe LLFloaterAvatarList RLVa: Don't announce people are in range when the user is blind. 2012-12-06 22:17:44 -05:00
Lirusaito
0100cd2f36 More of e2b011590d
Fixing up the name system, missed two parts.
2012-12-06 21:04:06 -05:00
Aleric Inglewood
d6b486524c Fix include of reader.h 2012-12-07 00:31:10 +01:00
Shyotl
f80394fc02 llpreviewgesture.cpp changes snuck past me in an early commit. 2012-12-06 17:19:10 -06:00
Shyotl
e750c598be Updated avatar radar. Focusprev/focusnext now obey the order of the actual displayed avatar list. Cleaned up some commit callbacks. 2012-12-06 17:16:44 -06:00
Shyotl
26191dd274 Migrate to boost::bind for a bunch of CommitCallbacks. Converted several static member functions to nonstatic member functions 2012-12-06 17:13:17 -06:00
Aleric Inglewood
12171f6cd9 Merge commit '5947769812369a7988a7f1db30df79e6fc0e4787'
Adds important commits from llwebprofile branch
into master which need to go into the next release.
2012-12-05 22:27:21 +01:00
Lirusaito
457276fa5d Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2012-12-05 13:59:36 -05:00
Lirusaito
7ba21ac4fd Show Highlight and Edit Axis at Root on build floater
Thanks for the help, Naudia Nadezda!
2012-12-05 12:06:10 -05:00
Lirusaito
e2b011590d Fix up the Name System just a little bit more.
Better viewed without space changes
Pretty much add support for sending LLAvatarName and std::string to become a name via the system...
Also a bit of a revert for llcallingcard.cpp in this regard, just allow it to use a callback along with the new support,
but still handle the actual name switching in LLAvatarNameCache.
Fixes a problem I was having with "[NAME] is Online" notifications appearing early on, only.
2012-12-05 01:48:09 -05:00
Shyotl
ef6f411b70 Removed LLUICtrl::setDoubleClickCallback and LLPanel::childSetDoubleClickCallback as they aren't used/needed and complicate things. Added LLPanel::childSetAction overload that accepts boost::singal2::signal (for boost::bind). Now using boost::function for various callbacks in LLScrollListCtrl (for boost::bind). 2012-12-04 21:54:01 -06:00
Lirusaito
2c48161595 Make Baker's Group code compile! Thanks Shyotl~
Note: Large groups still don't load?!
SimConsole cap is needed for Sim Console, won't work without it, keeping it in!
..But it should work with the new ASync one? Maybe needs tweaks, first?

Also switches opening IMs to the gCacheName->getFullName(id, name) system mentioned earlier, my connection has improved!
And makes the Avatar Picker show display names! Yay! (Rearranged the includes there, alphabetical~)
Also fallback to gCacheName->getFullName(id, name) if getting name fails in the new system.. hopefully this will combat occasional big failures.. but it may not work anyway.. maybe my connection is just awful again
2012-12-04 11:54:54 -05:00
Shyotl
ca3e0d2ba9 Use the correct font name. "SANSSERIF_SMALL", not "SANSSERIFSMALL" 2012-12-04 02:59:19 -06:00
Lirusaito
922e234fe9 Baker Linden's group update, added with some care, won't compile,
Note: These changesets removed the some caps in llviewerregion.cpp, I have made a note of these, but left them in.
Please take a look at the Singu Note:'s and Singu: TODO:'s when working on this.
2012-12-04 03:53:05 -05:00
Lirusaito
b9cfd2fae5 Replace the tricky copy-paste-everywhere Display Name system code with a unified function
Only does that, dun believe me? Take a look, oh... it also corrects improper interpretations of the PhoenixNameSystem value: 1 is both, 2 is displays, 0 and anything else is Legacy.
Also replaces a bit of the display name support code with new system... by definition this shouldn't change the log file, only the title of the session..
because of my bad connection during week days, I can not confirm this working 100%,
but if it does end up changing the logs under certain unseen conditions, replace the new name check with gCacheName->getFullName(id, name) but this reallllly shouldn't happen!
2012-12-04 00:36:12 -05:00
Aleric Inglewood
d8bc84adb1 Snapshot fixes and improvements.
* Allow to pass -1 to LLImageBase::reallocateData too (default parameter),
  causing it to allocate what is necessary for the size set (same
  behavior as allocateData).
* Speed up LLImageRaw::scale with factor 2 or 3 by copying the data less
  often and calling LLImageBase::reallocateData instead of destroying
  and recreating always.
* Fix gl_rect_2d to not decrement top and right with one pixel.
* Remove the vague "Constrain Proportions" checkbox and replace it with
  a new combo box and spinner to explicitly set the target aspect ratio,
  allowing to set it also to something different than either the window
  aspect ratio (ie, 1.6) or the target image dimension (1.0 for textures)
  which was totally lacking when, for example, uploading a profile image
  (which needs to be 4:3). This also allows to show snapshots on prims
  of arbitrary aspects.
2012-12-04 00:45:01 +01:00
Shyotl
ce3511f7ea Misc changes via v3 merge. Nothing big. 2012-12-03 15:03:52 -06:00
Shyotl
a8e1bd1538 'Save scripts in inventory as Mono scripts instead of LSL2' checkbox was not functioning. For whatever reason it was not implemented in the actual panel, and referenced the incorrect setting. The proper setting will be 'SaveInventoryScriptsAsMono' not 'SaveScriptsAsMono' 2012-12-03 11:33:24 -06:00
Lirusaito
0876c8c2bf Go away when idle checkbox added to General Preferences. 2012-12-02 22:14:36 -05:00
Shyotl
0554ecae5c Added explicit texture reloading. Accessable in the 'tools' submenus for the agent, avatars, and selected objects. 2012-12-02 17:06:54 -06:00
Lirusaito
cfbc8a23f7 Transaction Notifications are now optionally Notify Tips for those who don't want them to collect at the top right of the screen, but still want a notification.
Debug setting LiruNoTransactionClutter has been added, and is toggled by checkbox in General preferences
This adds support for TransactionInfo message, to localize the server's transaction notifications.
Adds a notification called Payment, which unifies all three of v-d's Payment* notifications.

This is a fairly large change to view, keep in mind what was removed as it may just be in a slightly different order or position..
2012-12-02 17:52:36 -05:00
Drake Arconis
5e71d9578f A bit of cleanup in preperation for VS2012 2012-11-30 11:17:10 -05:00
Shyotl
8b19f82c0b Trivial changes. Resolved some sign mismatch warnings, and now using LLCachedControl for 'SGIgnoreSimulatorCameraConstraint' setting lookup. 2012-11-29 11:58:41 -06:00
Shyotl
794dbacea3 Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer.git into testpit
Conflicts:
	indra/newview/lldrawpoolavatar.cpp
	indra/newview/llviewertexturelist.cpp
	indra/newview/llworldmap.cpp
	indra/newview/pipeline.cpp
2012-11-29 11:54:41 -06:00
Shyotl
3a4b6cf6b6 Hovertext updates marked objects as 'moved' when inappropriate. http://hg.secondlife.com/viewer-development/commits/8ccf2b0fa3857a6610f6ea03166e5a4494ca6d03 2012-11-29 10:07:25 -06:00
Shyotl
c0c9c51e43 Some minor syntax grooming in LLNetMap::draw 2012-11-29 10:03:48 -06:00
Aleric Inglewood
e788ee5faf Merge branch 'master' into llwebprofile 2012-11-28 18:50:31 +01:00
Aleric Inglewood
e17405d80a Fixed snapping of rotation in the edge-on case
Patch by https://codereview.secondlife.com/users/cron.stardust/
Jira: https://jira.secondlife.com/browse/STORM-1919
2012-11-28 17:04:24 +01:00
Aleric Inglewood
de52eebe7a Allow setting a custom size when uploading a texture. 2012-11-26 23:21:34 +01:00
Aleric Inglewood
d7069a2a66 Fix cancelling "Save" while "Keep open after save" is unchecked.
This causes a failure to save local file, or when clicking
Cancel in the file chooser, to keep the image and keep the
snapshot floater open so a retry to save the image can be
attempted.
2012-11-26 20:41:25 +01:00
Aleric Inglewood
7faa19b297 Large snapshot update (part 1)
This commit concentrates on remembering what parameters
where used for the last snapshot (the actual source, not
the formatted one), thus - the parameters passed to
rawSnapshot() - and then shows this snapshot as if it
was just made whenever the UI parameter selection matches.
The result is that the user can make a snapshot, save
it (for example) to their harddisk and then change the
destination and upload the same thing as snapshot.
The code tries hard to make this possible by automatically
adjusting the UI parameters to match every time the destination
is changed PROVIDED it was already saved or uploaded before.
If a snapshot wasn't saved and one changes destination
then this currently doesn't happen (by you could manually
make the parameters match, and still upload it). Also, if
the resolution is changed for a particular destination then
it won't automatically adjust it again.

Obviously, snapshots are no longer refreshed when changing
destination etc. You have to explicitly click "Refresh
Snapshot" before the last one is deleted / replaced.

The Debug Setting variables reflect the (last) manual choices
in most cases (set in the onCommit functions). If such a choice
is not allowed for a different destination then the UI is
changed to reflect the current behavior and the checkbox is
disabled so the user can't change it anymore. Then, if they
change destination back - the Debug Setting variable is used
to remember their last preference. A new Debug Setting has
been added for this purpose: SnapshotLayerType (colors or depth).

The old mSnapshotUpToDate has been removed and replaced with
mShowFreezeFrameSnapshot. The old getSnapshotUpToDate() now
returns something else (than mShowFreezeFrameSnapshot), namely
whether or not the current raw snapshot was taken with the same
parameters as are currently set in the UI.

The unused functions getImageAspect() and getAspect() were
removed.

mCurImageIndex has been deleted. Index 0 now means "the last
snapshot" and index 1 is temporarily used for the Falling Away
animation.

mDataSize was renamed to mFormattedDataSize.

The size spinner arrows are now disabled too whenever the spinner
edit field is disabled.

A bug in Freeze Time was fixed, where avatars would still
rotate around their axis in place (and without that their
attachments moved!)

Pressing ESC would return keyboard control to "walking"
for the own avatar with the above as result for the own
avatar. We now intercept ESC and use it (in Freeze Time mode)
to return to the cammable preview when a 2D preview was
being shown.
2012-11-26 18:12:41 +01:00
Shyotl
5e6ed2dc9f Large update to the worldmap. Essentially, v3 merge, and reimplemented legacy tile drawing and opensim-specific changes. Also added a diagnostic view. 2012-11-24 11:21:29 -06:00
Shyotl
adebc36bc7 Cheap workaround for osgrid giving us an invalid pure-white single-channel opaque water texture. First it purges the texture from the cache and attempts to refetch, and if it's still invalid it falls back to the transparent water texture (which won't actually be transparent due to blending being disabled). Also fixed some annoying console spam related to null textures, and also now using the correct glTexGen* function. More details in comments. 2012-11-24 01:00:25 -06:00
Aleric Inglewood
165bebda3e Compile error and warning fixes for DEBUG_CURLIO without CWDEBUG. 2012-11-23 03:19:39 +01:00
Aleric Inglewood
0f54e5fe46 Remove erroneous assertion. 2012-11-22 03:55:10 +01:00
Aleric Inglewood
14c046108e Snapshot floater changes
* Added a radio button for "Post to my.secondlife.com feed"
* Moved the snapshot to the top of the floater.
* Increased the size of the snapshot to match the size used in V3
  (floater is only 4 pixels wider though).
* Disable the "Temporary upload" checkbox when the Destination isn't the
  inventory.
* Update the shown Upload Fee to L$ 0 if temporary is checked.
* Added a size chooser for the Feed destination, using exclusively
  preset sizes with an aspect ratio of 4:3.
* Added two new preset sizes: 1024x1024 for texture uploads, and
  1680x1050 for save to disk.
2012-11-20 22:27:48 +01:00
Aleric Inglewood
b5a8850d65 Fix deinitialization order fiasco. 2012-11-19 08:32:00 +01:00
Aleric Inglewood
3f51bb6e1d Clear the command queue after flushing statemachines
Flushing the state machines can cause remove commands to be added to the
command queue, so clearing it needs to be after.
2012-11-19 08:31:46 +01:00
Siana Gearz
bf4100c024 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2012-11-19 05:10:16 +01:00
Aleric Inglewood
aab195a6eb Fix deinitialization order fiasco. 2012-11-19 04:42:02 +01:00
Aleric Inglewood
2400d146ce Clear the command queue after flushing statemachines
Flushing the state machines can cause remove commands to be added to the
command queue, so clearing it needs to be after.
2012-11-19 04:01:54 +01:00
Shyotl
9a9b5ce61e LLRectBase<>::clipPointToRect could divide by zero, resulting in the resulting clampd values being invalid under some scenarios (worldmap panning could cause the mouse cursor to 'restore' to an invalid location upon mouseclick release.) 2012-11-18 02:48:55 -06:00
Shyotl
6b473c6edc Avoid clearing hud object rebuild states when teleporting. 2012-11-18 02:42:33 -06:00
Shyotl
9d8f31a0cb Some teleport reworking. Don't clear rebuild groups/resetVBO unless tp screen is up, or we've just changed sims. Also skip updateUI drawing if tp screen is up. 2012-11-18 02:41:37 -06:00
Aleric Inglewood
5947769812 Fix LLMimeDiscoveryResponder.
Extract Content-Type also from a 405 reply.
If all else fails, use a default mime-type for url's opened
in the browser (start with http: or https:) of "text/html" instead
of "none/none".
2012-11-18 03:29:01 +01:00
Aleric Inglewood
52673f5249 Slight update of README 2012-11-18 02:41:37 +01:00
Aleric Inglewood
f44de434c2 Always use followRedir() to determine if redirections should be followed.
Before every HEAD and GET request allowed redirection by default,
without setting a limit on the number of redirections. This caused
an infinite redirect loop when connecting to marketplace, in combination
with the bug that we did not allow cookies.
2012-11-18 02:07:19 +01:00
Siana Gearz
cbb27a5661 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-11-18 01:33:18 +01:00
Siana Gearz
48eaccc612 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2012-11-18 01:33:11 +01:00
Aleric Inglewood
5499136677 Don't send an Accept header for HEAD requests. 2012-11-18 01:29:24 +01:00
Aleric Inglewood
57b66a9be9 Allow cookies when allowing redirects (next to when sending a Cookie ourselves). 2012-11-18 01:28:23 +01:00
Aleric Inglewood
746f419e80 Fix detection of mIsInProductionGrid and fix getMarketplaceDomain()
getMarketplaceDomain() should return aditi.lindenlab.com for aditi,
not secondlife.aditi.lindenlab.com.
mIsInProductionGrid wasn't set correctly.
2012-11-17 21:38:55 +01:00
Aleric Inglewood
5d1a138c5c Code clean up of code related to previous commit. 2012-11-17 05:16:21 +01:00
Aleric Inglewood
e781870da3 Fix Ratany Residents crash 2012-11-17 04:55:34 +01:00
Aleric Inglewood
e3f30fece9 Fix print_diagnostics for windows. 2012-11-16 16:06:30 +01:00
Lirusaito
7b2536eb0d Inventory cut support!
Also fixes a bunch of comments, implementation based off of v-d.
Added isOnClipboard and setCutMode functions to LLInventoryClipboard, in part from v-d's LLClipboard.
LLInventoryFilter has a few rearrangements of code; only real change is now it has checkAgainstClipboard and uses it to filter out cut items.
There is a massive retabbed block in llinventorymodel.cpp, view without space changes. Implements removeObject.
Note: We are not afflicted by MAINT-1197: Fix inventory deselection/reselection when cutting items
2012-11-16 02:47:05 -05:00
Damian Zhaoying
299382b907 Add Merchant Outbox text files 2012-11-15 22:13:17 -03:00
Aleric Inglewood
fce64f8f12 Add LLWebProfile and responders.
Adds finding and using libjsoncpp. Note that the old cmake file
found libjson, not the same thing.

Adds Debug Setting WebProfileNonProductionURL (next to already existing
WebProfileURL) to mimic V3's behavior and use a different URL for aditi.
These Debug Settings are using by (the new) getProfileURL() (copied
from V3 with just a minor fix).

Adds HippoGridInfo::isInProductionGrid() next to the existing
LLViewerLogin::isInProductionGrid that always returned true.
The former should only be called SL grids and then only returns
true for agni (and false for aditi et al). The latter was changed
to now always return true except on SL when the grid isn't agni.
The first is used for SL-only cases, the latter for things like
colors and for godmode decision logic.

V3's llwebprofile.cpp was fixed to compile on singu, with only real
difference that I dropped the Content-Type headers for the GET methods.
2012-11-16 02:00:06 +01:00
Aleric Inglewood
f8bf11d574 More clearly state the implications of the NoVerifySSLCert debug option 2012-11-15 14:14:25 +01:00
Aleric Inglewood
fdfe0cae87 More clearly state the implications of the NoVerifySSLCert debug option 2012-11-15 13:51:16 +01:00
Aleric Inglewood
66664660d7 Copied llwebprofile.{h,cpp} from v-d as-is. 2012-11-15 04:07:44 +01:00
Scott Meitz
760ac98ab6 missed another spot with trailing spaces in aa functions, TNX LightDrake and Shyot1 :) 2012-11-14 21:37:36 -05:00
Scott Meitz
2bd5d88dbf fix extra space in strings.xml en. Tooltip was not find them 2012-11-14 21:37:00 -05:00
Siana Gearz
5f78a36899 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-11-15 02:30:01 +01:00
Lirusaito
b897b9427f Fix unclickable explanatory link on Outbox floater
mOutboxInventoryPanel couldn't be setVisible(false) while it was NULL, thus it sat on top of the rest of the UI.
Set it to panel_outbox_inventory in postBuild, instead of setupOutbox.
2012-11-14 16:48:03 -05:00
Lirusaito
c33b1004d1 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-11-14 13:55:48 -05:00
Siana Gearz
19e8977fff Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2012-11-14 19:40:45 +01:00
Aleric Inglewood
c097d650dc Don't upload partial files 2012-11-14 19:26:16 +01:00
Aleric Inglewood
b7af32bee3 Use std::istream::read instead of readsome
According to the docs
(http://www.cplusplus.com/reference/iostream/istream/readsome/)
readsome would also set state flag eofbit, but apparently I'm
misinterpreting it.  Anyway, using read() and then gcount()
to get the number of bytes does work.
2012-11-14 18:37:44 +01:00
Shyotl
d2422b03be Don't flush rebuild queue nor flush pending texture requests if merely performing a local teleport (eg: doubleclick teleporting within current sim.) 2012-11-13 23:34:48 -06:00
Shyotl
97d2085735 Nullcheck in LLTextureFetch::removeRequest was returning without unlocking LLTextureFetch::mQueueMutex if called via LLTextureFetch::deleteRequest 2012-11-13 23:25:32 -06:00
Aleric Inglewood
e307df79a1 Ignore the body in case of internal errors 2012-11-14 04:00:26 +01:00
Aleric Inglewood
324fe06a06 Improved printed info when curl times out. 2012-11-14 02:12:27 +01:00
Shyotl
fe15371047 Update to LLTombstone/LLHandle/LLRootHandle/LLHandleProvider. 2012-11-13 17:55:52 -06:00
Siana Gearz
fbb7196100 Missed a piece of a fix for the case we receive complete texture data instead of what we asked for.
The rest of the fix landed in commit c37a473287 by accident.
2012-11-13 23:54:23 +01:00
Siana Gearz
8c9a9c9d12 Introducing SGIgnoreSimulatorCameraConstraints 2012-11-13 23:46:21 +01:00
Aleric Inglewood
6f8ea87c46 Add ResponderHeadersOnly.
ResponderHeadersOnly is a base class for responders that use
HTTPClient::head or HTTPClient::getHeaderOnly. It already
has a needsHeaders() that return true and only allows for
completedHeaders to be overridden.

I removed the CURLOPT_HEADER option for these cases, because
that only causes the headers to be send to the writeCallback
as if they are part of the body, in addition to the headerCallback;
That gave raise to some confusion for the existing code (ie,
unexpected errors when trying to decode the body as LLSD and
duplicated 'low speed' information for the Timeout policy code.
2012-11-13 21:46:35 +01:00
Siana Gearz
3d84157325 Revert "Probably antivirus-friendlier SLPlugin"
This reverts commit 817085c172.
2012-11-13 18:41:58 +01:00
Siana Gearz
9abf8ddf91 Merge git://github.com/Murf/SingularityViewer 2012-11-13 18:40:20 +01:00
Lirusaito
f289d5d9e7 Make MARKET_IMPORTER_UPDATE_FREQUENCY configurable as debug setting MarketImporterUpdateFreq
Change the default to a minute... that should be good? Right?
2012-11-13 00:16:04 -05:00
Lirusaito
821c03a389 Copy folders support!
Sync with v-d/rlva for Copy folder support
Also, guard against outboxy stuff, like when we're importing, don't show the Marketplace Send menu entry.
Fixed a few comments
Please view this commit with space/tab changes off! There were a lot of retabbing cases that don't need to waste anymore of anyone's time.
2012-11-13 00:06:47 -05:00
Siana Gearz
c37a473287 Add NickyD's fast j2k metadata reader 2012-11-13 05:38:27 +01:00
Shyotl
3eebedc4c3 Revert "Avoid re-requesting object-inventory items that already have a pending request."
This code was actually regression in viewer-dev and causes some issues.
This reverts commit cd5aa8f074.
2012-11-12 20:32:40 -06:00
Siana Gearz
5eb99b7d2f Attempt to fix frame timer on broken mainboards 2012-11-13 02:50:15 +01:00
Brett Murphy
3534706a59 get OSX building again 2012-11-13 11:38:28 +11:00
Brett Murphy
717a8a5cdb Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer 2012-11-13 11:03:38 +11:00
Aleric Inglewood
586d8fdf21 Compile fixes for gcc 4.2 (Mac) 2012-11-13 01:01:19 +01:00
Siana Gearz
f4016c2e1c Stop trying to package dbghelp.dll - windows always comes with one anyway 2012-11-12 19:37:31 +01:00
Siana Gearz
2bb08d7638 Merge branch 'master' of git://github.com/LightDrake/SingularityViewer 2012-11-12 19:34:06 +01:00
Aleric Inglewood
155cc56632 Do not put AICurlEasyRequest in a container. 2012-11-12 18:42:55 +01:00
Shyotl
4a4032f3b8 Hopefully allows better behavior when loading other avatars. This is from v3, and taking a cursory glance, it's useful as onFirstTEMessageReceived is called before LLVOAvatar::idleUpdate, which means that mLoadedCallbacksPaused hasn't been updated for that particualr frame yet. Using LLVOAvatar::isVisible() is more accurate. 2012-11-12 03:41:53 -06:00
Shyotl
cd5aa8f074 Avoid re-requesting object-inventory items that already have a pending request. 2012-11-12 03:18:02 -06:00
Shyotl
c2b26f6c15 GCC Fixes:
Only use C++0x/C++11 features if compiling for windows, or if GCC is configured to support such features (v4.7 onwards: '-std=c++11'. v4.3 through v4.6: '-std=c++0x')
Removed an assertion that's no longer possible to evaluate (queue doesn't support iterators).
2012-11-12 03:04:24 -06:00
Shyotl
f25ca2ac80 Fixed small #if/#ifdef typo. Also fixed formatting error in strings.xml 2012-11-12 00:12:39 -06:00
Siana Gearz
303c74f4c9 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer
Conflicts:
	indra/llmessage/llurlrequest.cpp
	indra/newview/llvoavatar.cpp
2012-11-12 06:46:58 +01:00
Siana Gearz
59d4d833f1 Made octree check optional 2012-11-12 04:48:00 +01:00
Siana Gearz
562acd6e2c Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2012-11-12 04:12:57 +01:00
Siana Gearz
c3d76669ca Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer
Conflicts:
	indra/llmessage/llavatarnamecache.cpp
2012-11-12 04:12:28 +01:00
Siana Gearz
14d8d14832 Texture fetch cleanup 2012-11-12 03:33:17 +01:00
Aleric Inglewood
cdc04ba413 Merge branch 'fasttimelock' 2012-11-11 19:06:14 +01:00
Aleric Inglewood
ab91525e7a Add missing needHeaders
The AIBufferedCurlEasyRequestEvents are not triggered unless
the derived class return true for needsHeaders().
That means, every class that implements received_HTTP_header(),
received_header() or completed_headers(), or implement
the virtual function completedHeaders(), or use the protected
member mReceivedHeaders directly.
This commits adds missing needsHeaders() for LLAvatarNameCache
(thanks Siana) and XMLRPCResponder. The former now uses
mReceivedHeaders directly instead of making a copy.
2012-11-11 17:36:43 +01:00
Shyotl
0a4b3487ea Resolve string substitutions failing for a few 'unsuccessful' startup dialogs. 2012-11-11 01:01:04 -06:00
Aleric Inglewood
0061055e73 Attempted to dereference a past-the-end iterator. 2012-11-11 01:54:50 +01:00
Aleric Inglewood
a16c4015ba Attempted to decrement past-the-end iterator of empty container. 2012-11-11 01:54:50 +01:00
Shyotl
0173c29630 Resolve compiler warning caused by silly temporary #define. 2012-11-09 23:32:57 -06:00
Aleric Inglewood
26a734a538 Add fasttimers around obtaining a mutex or waiting on a condition. 2012-11-10 02:33:48 +01:00
Aleric Inglewood
04e7dc1270 Collect and print stats about HTTP status code 2012-11-10 02:19:20 +01:00
Shyotl
1cdc11dae2 Added LLTextureFetch::deleteAllRequests procedure. Called upon teleport. 2012-11-09 18:45:57 -06:00
Shyotl
1cb75c4471 Tiny bit of code consolidation in lltexturefetch 2012-11-09 18:42:37 -06:00
Shyotl
b6efc9f583 Fixed buggyness regarding objects moved by scripts. http://hg.secondlife.com/viewer-development/changeset/1a874cd5d0a0616b979a571e810320cd35e69baf 2012-11-09 18:41:05 -06:00
Shyotl
01868e46fe Removed pointless redundant gGL.flush() calls from llworldmapview. 2012-11-09 18:33:44 -06:00
Shyotl
313cce23db Trivial. Changed LLOcclusionQueryPool::mAvailableName to std::queue, because it's being used as a queue, and it being a list makes little sense. 2012-11-09 18:32:57 -06:00
Shyotl
9aca1f41f3 Make occlusion boundingbox 'fudge' settings adjustable via SHOcclusionFudge saved setting. 2012-11-09 18:20:45 -06:00
Shyotl
81c7445744 image->hasFetcher() check reundant in LLViewerTextureList::clearFetchingRequests(). LLViewerFetchedTexture::forceToDeleteRequest() checks for this too. 2012-11-09 18:12:57 -06:00
Shyotl
d54daa19a0 Allow trial of trasform feedback (for testing/benchmark) on hardware that declares support for GL_EXT_transform_feedback. Performance is far less than satisfactory on my hd4870(ogl3.3 gpu), however. Also messes up texcoords. Don't add RenderUseTransformFeedback to settings.xml. 2012-11-09 18:10:39 -06:00
Shyotl
0c58a42b08 Added a couple needed nullchecks of gAgentAvatarp in LLAgent. 2012-11-09 16:32:26 -06:00
Aleric Inglewood
68cbf31c8b Add a PerHostRequestQueue object.
Adds a std::map for hostname (or urls) --> PerHostRequestQueue
objects. The latter keeps track of the number of added curl easy
requests and decides if a new request should be throttled or
not, as well as provides the queue to queue throttled requests.

At the moment CurlConcurrentConnectionsPerHost is set to 16,
because things really don't work without LL supporting connection
reuse if we limit it to 2. CurlConcurrentConnectionsPerHost is
also set to non-persistent so that we can easily change it in the future
(once we decide on it's final value it can be set to persistent).
2012-11-07 15:41:50 +01:00
Lirusaito
d518222340 Disable Group Fee Invites in antispam preferences, when appropriate. 2012-11-06 21:35:35 -05:00
Lirusaito
7a35a43bd4 Merchant Outbox!
Enter: LLFloaterOutbox, floater_merchant_outbox, LLMarketplaceFunctions, LLPanelMarketplaceOutboxInventory, and panel_outbox_inventory

LLView now has childFromPoint() from v-d.
LLInventoryBridge{
Sync includes with v-d.
Let's ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU for ease of access and tweak it to work.
Uncomment related code.
Catch if we're moving objects into the outbox during pasteFromClipboard()
}
LLInventoryPanel: start_folder attribute for inventory_panels, this could be quite useful in the future
Sync LLToolDragAndDrop with Catznip/v-d
Add the outbox to the World menu, since that seems to involve most commerce. Perhaps we should add a menu entry to the outbox itself to open its floater?
Fix the inventory merchant menu entries, thanks Shyotl..
Merchant Outbox Strings!
2012-11-06 20:23:36 -05:00
Aleric Inglewood
cb52e82a60 Moved and extended AICurlInterface::Stats
Moved AICurlPrivate::Stats to AICurlInterface::Stats and added several
counters to keep track of the number of existing instances of
respectively AICurlEasyRequest, AICurlEasyRequestStateMachine,
BufferedCurlEasyRequest, ResponderBase and
ThreadSafeBufferedCurlEasyRequest.
2012-11-07 02:15:23 +01:00
Aleric Inglewood
1a43bc8abf As AIStateMachine moved outside newview, there is no longer any need to pass AIStateMachine::flush to initCurl() 2012-11-07 02:08:52 +01:00
Aleric Inglewood
e88c39b090 AIStateMachine::flush can only make statemachines idle.
As idle statemachines aren't in any list, it's not possible
(without adding that list) to delete them. I don't think
that there are any active statemachines left at the end
of flush anyway, but killing them doesn't much sense if
we can't get them all: there will always be statemachines
left: those that were idle at the moment the viewer was
quit.
2012-11-07 01:53:12 +01:00
Aleric Inglewood
a1f5e6ba43 Rename AICurlResponderBufferEvents to AIBufferedCurlEasyRequestEvents
Since we changed CurlResponderBuffer to be derived from CurlEasyRequest
and therefore changed it's name to BufferedCurlEasyRequest, we should
also rename AICurlResponderBufferEvents to
AIBufferedCurlEasyRequestEvents.
This commit also fixes C++ comment in several places to reflex the
previous name change.
2012-11-07 01:49:45 +01:00
Lirusaito
d0a0aa7a65 Fix handle_secondlifeprotocol.sh, and sync with v-d.
More translation strings~
Log inventory offers to those we're not chatting with.
"SDL deiconification state switched to " now lldebugs instead of llinfos, far too spammy..

(Pre-outbox commit, may contain pieces of outbox work.. and unmentioned harmless sync)
2012-11-06 18:50:45 -05:00
Drake Arconis
8cf956e669 Fixed a crash 2012-11-06 07:20:24 -05:00
Shyotl
3bbb23b1bc Experiments with allocating octree nodes via memory pools. 2012-11-05 16:58:03 -06:00
Shyotl
a582b5996c Whoops. Forgot settings.xml 2012-11-05 14:54:48 -06:00
Siana Gearz
4cd10c34e2 Fix manifest when extra libs are empty on Windows 2012-11-05 12:15:42 +01:00
Shyotl
3ec1dbf51c Updated spatial partition and octrees to use std::vector. Also, added diagnostic spew to octrees. 2012-11-04 21:48:17 -06:00
Shyotl
71deb8925e Added some nullchecks, removed some dead code, and cleaned up a few small things. 2012-11-04 21:16:53 -06:00
Siana Gearz
abb562d1ab For extra safety 2012-11-05 03:22:57 +01:00
Aleric Inglewood
a495a6bfbc Short circuit llsd debug check. 2012-11-05 01:04:02 +01:00
Siana Gearz
e86b17be2d Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2012-11-04 18:56:15 +01:00
Aleric Inglewood
e62f805bcd Fix wrong assertion mAddedEasyRequests.size() >= (size_t)mRunningHandles
Rename check_run_count to check_msg_queue, because the whole 'run count'
approach is flawed anyway (the author of libcurl told me that THE way
to check for finished curl handles is to just call curl_multi_info_read
every time: it's extremely fast. Any test that attempts to avoid that
call is nonsense anyway.

The reason the assertion failed might have been caused by the fact
that we're comparing the current number of easy handles with the
number of running handles of 'a while ago'. It is possible that a
easy handle was removed in the meantime.

In order to check if that hypothesis is right, I moved the assertion
to directly below the call to curl_multi_socket_action where it
should hold. If this new assertion doesn't trigger than the hypothesis
was right and this is fixed.
2012-11-04 17:08:05 +01:00
Siana Gearz
6f8ae718d1 Forgotten files for message logger 2012-11-04 03:30:49 +01:00
Siana Gearz
1dcfa9e0ee Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer
Conflicts:
	indra/llmessage/llregionpresenceverifier.cpp
	indra/llmessage/llregionpresenceverifier.h
2012-11-04 02:10:31 +01:00
Siana Gearz
7f0664ff82 Bringing back message logger 2012-11-03 14:13:13 +01:00
Aleric Inglewood
03b3e60e23 Merge branch 'curlthreading3' 2012-11-02 18:54:07 +01:00
Aleric Inglewood
72bde5234a Rename CurlResponderBuffer to BufferedCurlEasyRequest and derive it from CurlEasyRequest
Every curl transaction is a AICurlEasyRequestStateMachine which has a
AICurlEasyRequest as member, which is a reference counting pointer to
a ThreadSafeBufferedCurlEasyRequest. And now BufferedCurlEasyRequest is
derived from CurlEasyRequest which is derived from CurlEasyHandle, but
neither are used separatedly.
2012-11-02 18:41:23 +01:00
Aleric Inglewood
1e1f5e8193 Fix windows compile errors/warnings 2012-11-01 03:18:00 +01:00
Aleric Inglewood
6c01b6da9b Merging CurlEasyRequest and CurlResponderBuffer, Step 1 2012-11-01 02:40:08 +01:00
Aleric Inglewood
756aac1f9a Remove AICurlInterface::strerror 2012-11-01 02:04:40 +01:00
Aleric Inglewood
c0ac428179 Code cleanup
* Moved Responder stuff to LLHTTPClient.
* Renamed LLHTTPClient::Responder to LLHTTPClient::ResponderWithResult.
* Deleted LLHTTPClientAdapter and LLHTTPClientInterface.
* Renamed AICurlInterface::TransferInfo to AITransferInfo and moved it
  to llhttpclient.h
* Removed 'CURLcode code' argument from completed_headers.
2012-10-31 23:11:42 +01:00
Aleric Inglewood
7549b471c3 Moved curl stuff from indra/aistatemachine to indra/llmessage. 2012-10-31 18:51:52 +01:00
Aleric Inglewood
0b265320a9 Code clean up.
* Removed LLCurlRequest and replaced it's last usage with LLHTTPClient API calls.
* Deleted dead code.
* Renamed all the get4/post4/put4/getByteRange4 etc, back to their
  original name without the '4'.
2012-10-31 05:01:24 +01:00
Aleric Inglewood
6033a76870 Print more debug output. Remove last AIFIXME 2012-10-30 21:37:49 +01:00
Aleric Inglewood
3708d55ef9 Allow changing CurlTimeout Debug Settings on the fly.
Same for NoVerifySSLCert and CurlConcurrentConnections.
2012-10-30 21:18:15 +01:00
Aleric Inglewood
9996cf6157 Bug fix 2012-10-30 21:17:25 +01:00
Aleric Inglewood
3e78b7c262 Allow people with last name "Resident" to login using Hippogrid manager. 2012-10-30 07:16:01 +01:00
Aleric Inglewood
65e012c540 More curl fixes and changes.
* Moved LegacyPolledResponder::mCode to ResponderBase::mCode.
* Added a parameter to ResponderBase::finished (and pubError*) to set mCode.
* Renamed ResponderBase::decode_body to decode_llsd_body and added ResponderBase::decode_raw_body.
* Use LegacyPolledResponder::finished instead of LegacyPolledResponder::completed_headers
  to set remaining cached values.
* Fixed assertion in case of -DCWDEBUG and upload finish detection failure in case of HEAD
  method (mDebugIsGetMethod -> mDebugIsHeadOrGetMethod).
* Add XmlTreeInjector : support for LLXmlTree.
* Split BlockingResponder into BlockingLLSDResponder and BlockingRawResponder.
* Final blocking responders are now: BlockingLLSDPostResponder, BlockingLLSDGetResponder
  and BlockingRawGetResponder.
* Added LLHTTPClient::blockingGetRaw
* Got rid of hipporestrequest.* -- and fixed hippogridmanager.cpp to use
  LLHTTPClient::blockingGetRaw instead, and fixed llviewermessage.cpp to use
  AICurlInterface::ResponderWithCompleted and decode_raw_body instead of
  HippoRestHandlerRaw and LLHTTPClient::get4 instead of HippoRestRequest::get5.
2012-10-28 17:38:25 +01:00
Aleric Inglewood
2a88f7d7c4 ResponderAdapter stuff
Renamed AICurlInterface::Responder to AICurlInterface::ResponderBase,
but without the virtual 'event' methods.
Derived from that: Responder and ReponderWithCompleted, where the
first defines result = 0, ErrorWithContent and error, and the latter
completedRaw and completed.
Added HttpClient::IgnoreBody, derived from Responder and implementing
'result' doing nothing; HttpClient::Ignore is now derived from
IgnoreBody and defines the still pure virtual getHTTPTimeoutPolicy.

Added ResponderBase::decode_body, which is now the sole place
where the code makes the decision wether some response data might be
LLSD or not based on the http status result. Before it just tried
to decode everything as LLSD, which seems a bit nonsense.

ResponderWithCompleted::completed no longer does anything, since
classes derived from ResponderWithCompleted are expected to override it,
or never call it by overriding completedRaw.

Entry point is now ResponderBase::finished = 0, instead of
completedRaw, where ResponderWithCompleted implements finished by
called completedRaw, but Responder doesn't: that directly calls
result/errorWithContent/error. Or, for the hack ResponderAdapter,
the entry points are pubResult/pubErrorWithContent.
Those are now the ONLY public methods, so more confusion.
mFinished is now set in all cases.

As a result of all that, it is no longer possible to accidently
pass a responder to ResponderAdapter that would break because it
expects completed() and completedRaw() to be called.

Added LLBufferArray::writeChannelTo.

Fixed bug for BlockingResponder::body (returned reference to temporary).

LLSDMessage::ResponderAdapter now allows a "timeoutpolicy" name
to be passed (not doing so results in the default timings), so
that the timeout policy of the used responder is retained.

Fixed llfasttimerview.cpp to test LLSDSerialize::fromXML() to return
a positive value instead of non-zero, because it may return -1 when the
parsing fails (three places).

Removed LLHTTPClient::Responder as base class from
LLFloaterRegionDebugConsole completely: it isn't a responder!

Several other responder classes were simplified a bit in order to
compile again with the above changes.
2012-10-26 04:13:29 +02:00
Shyotl
dca9501de7 Attempt to break viewer window out of 'maximized' mode when not actually maximized. There are old jiras about the previous workaround causing issues, so let's attempt a different method. 2012-10-25 20:52:14 -05:00
Shyotl
8ed6b549ee A few resolutions in the dropdown in the prefrences panel were not being parsed correctly. Use standard 'x' instead of '×' 2012-10-25 20:50:42 -05:00
Shyotl
1a741b97d2 Fixed LLGLState::checkStates() failing upon context re-creation:
-After new context creation, immediately call LLRender::refreshState() after LLViewerWindow::initGLDefaults() in order to force states to apply.
--LLRender::initGLDefaults optimizes out gl calls by caching states, but the cached values are only applicable to the old context, not the new, so this optimization must be skipped (LLRender::mDirty).
-LLViewerWindow::mStatesDirty also triggered a redundant shader reload, since restoreGL also called setShaders().
Fixed somewhat annoying flicker of a single frame whilst recovering from screen resizing.
-Skip frame if LLViewerWindow::checkSettings() called LLViewerWindow::reshape. (reshape will set gWindowResized to true)
--True optimal fix will require some refactoring.
Reworked how window position is saved in LLViewerWindow::changeDisplaySettings. Hopefully reduces chances of odd behavior (had WindowX and WindowY get stuck at massive negative values before)
2012-10-25 20:42:58 -05:00
Aleric Inglewood
33809f56c5 Comment out unused code. 2012-10-25 02:17:40 +02:00
Shyotl
67ee544231 Clear saved raw discard level upon texfetch cleanup. (missed this in an earlier commit) 2012-10-24 03:21:51 -05:00
Shyotl
94f61ce307 A few nullchecks in the particle system. Had a null drawable pop up. 2012-10-24 03:20:32 -05:00
Shyotl
b57f7cdc79 Fixed various specular/glow effects bleeding through fullbright objects in deferred. 2012-10-24 03:19:53 -05:00
Shyotl
c901a7136f I freaking swear LL breaks hud attachment lighting in some way every few months. *Grumble* 2012-10-23 17:24:08 -05:00
Aleric Inglewood
243db9a3a8 Moved mFinished/is_finished() from LegacyPolledResponder to Responder.
Slightly more robust, adds one boolean to all responders, 99%
of which don't need that though, and an extra call redirection,
but well... We might need it this way when I add the possibility
to abort a transfer.
2012-10-22 22:52:18 +02:00
Shyotl
a5ef61ac82 Avoid std::vector::erase in particle system (erase in any sequence-independent vector is a waste as it shifts all elements to maintain element-ordering and contiguity). Replaced with swap and pop. 2012-10-22 15:46:12 -05:00
Shyotl
9e272aeef0 Still need to initialize flexis upon their very first idle update, else you get an ugly polygon soup when they first appear. 2012-10-22 15:32:33 -05:00
Shyotl
5c45979783 Resolve issue with sculpties loading with incorrect discard levels. 2012-10-22 15:26:53 -05:00
Shyotl
02f214d8a7 Clear object rebuild queues upon teleport. 2012-10-22 15:25:02 -05:00
Aleric Inglewood
daac25c343 Bug fix, introduced in commit 0bee4a92 2012-10-22 20:31:33 +02:00
Aleric Inglewood
768f1b5710 Fixes blocking_request. Adds LegacyPolledResponder and BlockingResponder.
XMLRPCResponder also uses the new LegacyPolledResponder now.
Renamed http_result() -> http_status().
2012-10-22 20:19:44 +02:00
Shyotl
5b4b9fd169 Durr, missed a line when adding attached light muting. Clobbered when diffing. Incrementing in a for loop is kinda important! Our handling in this function differes from LL in the firstplace because they are performing iteration on an iterator that can be invalid after the erase. 2012-10-22 03:17:33 -05:00
Shyotl
7dea357f4c Picked up a few small changes from viewer-beta pertaining to pathfinding. 2012-10-22 03:08:51 -05:00
Shyotl
9ef10b1663 Muting an avatar now also removes their attached lights. Also cleaned up light update code(no change in behavior) 2012-10-22 03:07:07 -05:00
Shyotl
d2004e88f9 MatrixMode sanity checks and adjustments to physics debug display (fixes a crash with that debug view, too) 2012-10-22 03:05:18 -05:00
Shyotl
ef27cc54dd Fixed unsafe erasure from vector while iterating in llinventorybackup.cpp. 2012-10-22 02:56:41 -05:00
Shyotl
19390eaec3 Remove pointless framebuffer status check. glReadBuffer doesn't work with gl_depth_attachment, thus will always complain about readbuffer being absent. (it checks GL_COLOR_ATTACHMENT0, which isn't present because this check is before we attach color attachments.) 2012-10-22 02:55:21 -05:00
Shyotl
dff6171605 More alignment crap. 2012-10-22 02:51:41 -05:00
Shyotl
4fe84efafd Unbork shadow shaders by tweaking normal unpack. 2012-10-22 02:51:28 -05:00
Shyotl
ed4997168b LLViewerObject::idleUpdate now returns void. Texture animations/flexis now have their own update queues. 2012-10-22 02:50:04 -05:00
Aleric Inglewood
b92de9beb5 Done as part of AIHTTPTimeout 2012-10-22 02:20:20 +02:00
Aleric Inglewood
7f50b2ba7b Add XMLRPC support to LLHTTPClient and that instead of LLXMLRPCTransaction 2012-10-22 01:59:17 +02:00
Aleric Inglewood
c35bc71334 Fix crash when libcurl calls read callback before calling socket callback.
In days of usage this has never happened before, but apparently
it's possible. The solution chosen is to create the AIHTTPTimeout
object on the fly when it doesn't exist and let it be picked up
later when the CurlSocketInfo for the transfer is created.
2012-10-22 00:53:54 +02:00
Shyotl
413a8111c0 PASS_INVISI_SHINY never issued. Commented out some unused code. 2012-10-21 17:16:22 -05:00
Shyotl
5be31898f1 Don't compile avatar eye shader, as it isn't used anywhere. 2012-10-21 17:14:29 -05:00
Shyotl
44faf3e169 Removed annoying attribute consumption warnings. Alpha pass was leaving shader bound, which hosed up updateCull for water reflections (updateCull only binds occlusion shader if another shader isn't currently bound) 2012-10-21 17:14:00 -05:00
Aleric Inglewood
937a60c8f9 Add AIHTTPReceivedHeaders
This fixes the problem that existed with received headers:
The server sends some headers ("set-cookie") more than once
in the same reply, which cannot be stored in std::map.
The old code just ignored the additional cookies, while
curlthreading3 (since the introduction of AIHTTPHeaders)
caused an assertion.

AIHTTPReceivedHeaders is written around a std::multimap
and allows to retrieve multiple headers with the same key.
Also, it is case insensitive so that if a server sends
"Content-Type" it will still find it (the viewer looks for
"content-type").
2012-10-21 17:45:46 +02:00
Aleric Inglewood
f7626699da Bug fix: (correctly) revoke CurlResponderBuffer events. 2012-10-21 17:28:22 +02:00
Lirusaito
ad97c72821 Use smaller horizontal chat tabs, where possible. 2012-10-21 11:19:03 -04:00
Lirusaito
b7ce7b7dab Tiny LLWorld silliness fix up 2012-10-21 11:18:49 -04:00
Shyotl
b73f4dd8e4 Catch up with viewer-beta. Primarily sim transition alterations to reduce frame hitching, and some optimization in LLViewerObjectList (std::set -> std::vector and and some allocation tweakage). 2012-10-20 17:02:43 -05:00
Aleric Inglewood
a4bf92dae4 Add CURLcode and TransferInfo to completed_headers event. 2012-10-20 23:56:19 +02:00
Aleric Inglewood
1e745ba48b Curl work in progress.
Minor changes like comment fixes and addition of accessors
that will be needed for future commits.
Also removed Responder::fatalError as it was never used.
2012-10-20 23:52:34 +02:00
Aleric Inglewood
f8273e977e Make NoVerifySSLCert work for all LLURLRequest
Moved CURLOPT_ENCODING from CurlEasyRequest::setPost_raw, and
CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST from
CurlResponderBuffer::prepRequest, to LLURLRequest::configure,
enabling the debug setting NoVerifySSLCert for the latter
two to work as follows: old behavior if "NoVerifySSLCert"
is not set, and check neither if it is set. However, if
the (new) bool mIsAuth is set the behavior of LLXMLRPCTransaction::Impl::init
is used. This is so in a next commit we can replace
LLXMLRPCTransaction with LLURLRequest: LLXMLRPCTransaction::Impl::init
will be removed. For the same reason, when the new boolean
mNoCompression is set then CURLOPT_ENCODING is set to "identity",
otherwise the old behavior (of clearing it) is used.
2012-10-20 23:28:33 +02:00
Aleric Inglewood
605843b527 HTTP status of 400 is an error too. 2012-10-20 21:47:31 +02:00
Siana Gearz
71d2bd83aa Fix inconsistent link/unlink checking 2012-10-17 13:41:30 +02:00
Siana Gearz
a12704c6a3 Don't eat my mouse when i might be debugging 2012-10-17 13:39:54 +02:00
Shyotl
43271f290e A few more alignment bits and bobs. 2012-10-16 20:07:04 -05:00
Shyotl
7533b475be TCMalloc can now be manually disabled via develop.py -DDISABLE_TCMALLOC:BOOL=ON 2012-10-16 17:15:23 -05:00
Shyotl
1b89e5c973 Dragged in a bunch of alignment fixes from LL. Should allow disabling of tcmalloc on windows/linux32 if such is ever implemented. 2012-10-16 02:33:05 -05:00
Aleric Inglewood
8ba127d4c5 HTTPTimeout work in progress
* Avoid using CurlEasyRequest::mTimeout for HTTPTime::done and
  HTTPTime::print_diagnostics when it might be NULL.
* Comment fixes.
* Indentation fix.
2012-10-15 21:07:17 +02:00
Aleric Inglewood
bb8ea493d6 Fix top check in MultiHandle::check_run_count.
This check isn't really needed at all, since curl_multi_info_read
is fast enough, but well... The old check was flawed anyway.
2012-10-15 21:03:08 +02:00
Aleric Inglewood
02cffa9a71 Replace TimeOut with Timeout everywhere. 2012-10-15 21:01:16 +02:00
Aleric Inglewood
76fc30e460 HTTPTimeout work in progress.
* Moved DoutCurlEasy and DoutCurlEasyEntering from aicurl.cpp
  to aicurl.h and renamed them to DoutCurl and DoutCurlEntering
  respectively.
* Moved the callback functions from aicurl.cpp to aicurlthread.cpp.
* In CurlEasyRequest, renamed timeout_timings to print_curl_timings
  and mTimeoutLowercaseHostname to mLowercaseHostname.
* Put all remaining CurlEasyRequest::mTimeout* variables and
  timeout_* methods in curlthread::HTTPTimeout, stripping them
  of said prefix, and moved the definition to aicurlprivate.h.
  Added a ThreadSafeCurlEasyRequest* member and a get_lockobj()
  method so to that class so we can still use DoutCurl /
  DoutCurlEntering. timeout_add_easy_request was removed completely
  and reimplemented as the constructor of HTTPTimeout.
  timeout_has_stalled was renamed to HTTPTimeout::has_stalled,
  but also reimplemented as CurlEasyRequest::has_stalled.
* CurlEasyRequest::mRequestFinalized was removed and it's
  functionality taken over by CurlEasyRequest::mTimeoutPolicy.
* Fixed the indentation of struct Stats, class CurlEasyHandle
  and class CurlEasyRequest.
* Added CurlEasyRequest::set_timeout_opts
* Added CurlSocketInfo::mTimeout (LLPointer<HTTPTimeout>).
* mUploadFinished is now reset in HTTPTimeout::data_received,
  this was needed because "HEAD /something" header-only
  messages triggered upload_finished (unlike "GET ..."),
  and in combination with redirection that caused an assert.
2012-10-15 03:34:32 +02:00
Shyotl
e8ec81bf04 Experimentation with normalpacking and component precision. 2012-10-14 04:00:02 -05:00
Aleric Inglewood
9fba54ad5d On failed transfer, print CURLINFO_OS_ERRNO when available. 2012-10-14 03:13:32 +02:00
Aleric Inglewood
ccd98c3c3d Fix comment. 2012-10-14 02:55:45 +02:00
Aleric Inglewood
2539e41e59 Avoid problems in case a host also resolves to IPv6 2012-10-14 02:53:36 +02:00
Aleric Inglewood
83312fbb74 Allow getinfo() to be called on a const CurlEasyRequest. 2012-10-14 02:45:58 +02:00
Aleric Inglewood
6134162f1c Merge remote-tracking branch 'singu/exp' 2012-10-14 00:57:07 +02:00
Lirusaito
fb713226a0 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2012-10-12 13:50:56 -04:00
Aleric Inglewood
3ac46f5fa7 HTTP timeout work in progress. 2012-10-12 19:39:11 +02:00
Lirusaito
d5c507ca6b Merge branch 'master' of https://github.com/LightDrake/SingularityViewer 2012-10-12 12:59:42 -04:00
Drake Arconis
858bb15a6b Fixed issue 2012-10-12 12:36:31 -04:00
Aleric Inglewood
faee255730 HTTP timeout bug fix! Plus work in progress.
Use the better understandable alias CURLOPT_HTTPHEADER in debug output

Bug fix - finally!

This fixes a bug I've been looking for a week.
By accidently calling get_clock_count() for the mTimeoutLowSpeedClock
'event', the time difference 'now' - 'event' becomes negative, which
should be impossible; the result being that timeout_low_speed
stalled for 24 seconds while looping over the full 32 bit. That in
turn made SSL handshakes of libcurl fail, which seemed to be
impossible since the calls to libcurl had not changed!
2012-10-12 04:50:46 +02:00
Shyotl
eb5b1312bb Removed pointless asset fetches for expression-based gestures (opposed to animation based ones), since they don't have actual animation assets. 2012-10-11 02:40:00 -05:00
Siana Gearz
5445b4f97a Fix bandwidth estimation for texture fetch 2012-10-10 15:37:43 +02:00
Aleric Inglewood
02ead94848 HTTP timeout work in progress.
More debug output.
Avoid the new assert when exiting the viewer.
2012-10-08 19:14:22 +02:00
Aleric Inglewood
6a4f76a219 Bug fix for previous commit. 2012-10-08 05:00:11 +02:00
Aleric Inglewood
1252b0bde2 HTTP timeout work in progress.
* Remove progress meter call back, use read/write/header callbacks instead.
* Don't use timeout_lowspeed for ReplyDelay, instead use:
* Add timeout stuff to the main loop (CurlEasyRequest::mTimeoutStalled).

This patch fixes a few things compared to the previous version.
More things need to be fixed.
2012-10-08 02:19:32 +02:00
Aleric Inglewood
a40fbf0da1 Cache hostname of url in CurlEasyRequest::mTimeoutLowercaseHostname
Also add DoutCurlEasyEntering debug macro.
The caching is necessary because CURLINFO_EFFECTIVE_URL is unreliable
and can change several times during the transfer at any moment (as
a result of forwarding etc).
2012-10-06 01:21:33 +02:00
Aleric Inglewood
468f52a4f6 Merge branch 'master' into curlthreading3 2012-10-05 16:55:28 +02:00
Aleric Inglewood
3f1fb9a66e Add improved timeout handling for HTTP transactions.
Introduces AIHTTPTimeoutPolicy objects which do not just
specify a single "timeout" in seconds, but a plethora of
timings related to the life cycle of the average HTTP
transaction.

This knowledge is that moved to the Responder being
used instead of floating constants hardcoded in the
callers of http requests. This assumes that the same
timeout policy is wanted for each transaction that
uses the same Responder, which can be enforced is needed.

I added a AIHTTPTimeoutPolicy for EVERY responder,
only to make it easier later to tune timeout values
and/or to get feedback about which responder runs
into HTTP errors in debug output (especially time outs),
so that they can be tuned later. If we already understood
exactly what we were doing then most responders could
have been left alone and just return the default timeout
policy: by far most timeout policies are just a copy
of the default policy, currently.

This commit is not finished... It's a work in progress
(viewer runs fine with it though).
2012-10-05 15:53:29 +02:00
Drake Arconis
c181891549 New windlight presets 2012-10-04 18:28:51 -04:00
Drake Arconis
f84f4aa058 Updated/Fixed Cursors 2012-10-04 18:13:48 -04:00
Drake Arconis
5d5c3e2a48 LLCalcparser update 2012-10-04 17:56:43 -04:00
Drake Arconis
5b8b88e05a Nuked ancient uneeded things 2012-10-04 17:56:25 -04:00
Drake Arconis
0287e21c01 More python indentation fixing...DIE TABS DIE 2012-10-04 16:34:10 -04:00
Drake Arconis
7d2f2bd610 Fixed python indentation in newview 2012-10-04 16:25:44 -04:00
Drake Arconis
d56393b134 Merge remote-tracking branch 'singu/master'
Conflicts:
	indra/cmake/WebKitLibPlugin.cmake
	indra/llmessage/llurlrequest.cpp
	indra/plugins/webkit/media_plugin_webkit.cpp
2012-10-04 16:17:41 -04:00
Lirusaito
1f7ed035d3 Make translation more flexible
Also in this commit, unrelated updates to the building panel (so git sees the markup "just" move in my next commit)
2012-09-29 16:59:17 -04:00
Aleric Inglewood
8430328043 Add support for uploading JP2 files.
Recognizes .jp2, .j2c and .j2k extensions.
Adds image/jp2 files to file picker image filter (windows and Mac,
windows apparently already showed them).
Show preview for jpeg 2000 files.
Fixes error reporting for failed image uploads.
Enforces a power-of-two size for jpeg 2000 files (seemed to make sense to do that).
2012-09-29 17:47:15 +02:00
Lirusaito
f311852e9b Satiate Issue 474 by showing a more sensible number for ARC by default.
http://code.google.com/p/singularity-viewer/issues/detail?id=474
Adds LiruSensibleARC debug setting, defaults to true.
Code ported from Imprudence.
2012-09-28 20:13:38 -04:00
Shyotl
ac0a32e690 Add an antispam setting to block only group invites to groups that require an entry fee. 2012-09-27 19:30:54 -05:00
Shyotl
88482a2431 An extra rendertarget is needed when fxaa dof are used in conjunction. mDeferredScreens color attachment was being used for both input and output when doing DoF combine, which is undefined behavior. Using mDeferredScreen for this works as it's no longer needed after lighting has been applied. 2012-09-26 20:45:47 -05:00
Shyotl
efbd339dc8 No return value? VisualStudio don' care. 2012-09-26 19:52:17 -05:00
Shyotl
ff28ce8d65 Corrections of some stupids (harmless copy-paste shenanigans in this case). 2012-09-26 19:51:24 -05:00
Lirusaito
cb33470673 Strings fix-up~ 2012-09-25 16:02:17 -04:00
Lirusaito
e6389d62dc Add debian/ubuntu support to install-deps script.
Also make the script more portable.
2012-09-25 16:01:43 -04:00
Aleric Inglewood
2766f17cb9 Merge remote-tracking branch 'github/master' into curlthreading3 2012-09-24 17:52:46 +02:00
Aleric Inglewood
70c36716c9 Disable SSL/TLS session caching.
Fixes: VWR-28039, VWR-28629
2012-09-24 17:05:23 +02:00
Aleric Inglewood
48702b1ed9 Various stuff
Comment fixes
Added some more debug support, not used yet (linux/libcwd only),
I used it, but won't commit the code that did.
Pass time_time parameter from post2() to prepRequest; only
used by mesh uploading at the moment.
2012-09-24 16:55:34 +02:00
Shyotl
16216b2ed0 Removed lscript_compile, lscript_execute, and lscript_library dependencies from newview. 2012-09-24 04:08:57 -05:00
Aleric Inglewood
3e22553d7e Merge remote-tracking branch 'github/master' into curlthreading3 2012-09-23 17:40:07 +02:00
Aleric Inglewood
4744839a08 Bug fix for curl request queue of last commit.
In debug mode an assertion was triggered when a queued
request was being removed by the main thread; and rightfully
so: we should remove such request from the queue in that
case.
2012-09-23 17:31:41 +02:00
Lirusaito
cb0c13a1a1 Merge branch 'master' of https://github.com/LightDrake/SingularityViewer 2012-09-23 10:25:22 -04:00
Drake Arconis
f0497a2721 Merge branch 'llqtwebkit' 2012-09-23 05:58:47 -04:00
Drake Arconis
77d018dbc8 Dependency install script for linux. Currently only supports Arch. 2012-09-23 00:51:29 -04:00
Drake Arconis
4be8b50360 Merge branch 'master' into llqtwebkit 2012-09-22 22:45:56 -04:00
Lirusaito
2581935b36 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/newview/skins/default/xui/en-us/floater_post_process.xml - Used Mine, because Shyotl's is the ancient one from "the before time" and because my last commit (worked on motionblur tab, then, too.)
2012-09-22 15:12:45 -04:00
Aleric Inglewood
a7cf09883e Merge branch 'master' into curlthreading3 2012-09-22 01:26:37 +02:00
Aleric Inglewood
1254a7bbe2 Merge remote-tracking branch 'github/master' into curlthreading3
Conflicts:
	indra/aistatemachine/aistatemachine.cpp
2012-09-22 01:25:54 +02:00
Aleric Inglewood
fb5ec1d1f5 Implement curl connection throttling (CurlConcurrentConnections) 2012-09-21 19:26:40 +02:00
Aleric Inglewood
5bcb350d89 Always print '(CURL*)' in front of CURL*'s in debug output. 2012-09-21 01:48:21 +02:00
Aleric Inglewood
81bc6b49f8 Debug code bug fix; removal of CurlEasyHandle::getErrorString()
CurlEasyHandle::mErrorBuffer (CURLOPT_ERRORBUFFER) can NOT be
used to retrieve information about an error returned by
curl_multi_info_read in CURLMsg::data::result. This buffer is
only initialized when a curl_easy_* call returns an error,
and those errors are already printed automagically.

Initialize the buffer with an empty string upon invokation
of an curl_easy_* call, so we are sure the error belongs to
the last call.
2012-09-21 01:28:26 +02:00
Shyotl
9019a1eb23 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2012-09-20 15:29:28 -05:00
Aleric Inglewood
f3780998ed Always reset stream state after using std::hex 2012-09-20 16:50:03 +02:00
Aleric Inglewood
27090c541f Remove inconsistent dll linkage (missing LL_COMMON_API) 2012-09-20 05:36:11 +02:00
Aleric Inglewood
ef73469700 Merge remote-tracking branch 'singu/master'
Abandonning curlthreading2 -- which is now in master.
2012-09-20 05:17:56 +02:00
Aleric Inglewood
2d12a82a54 Always flush LLBufferStream objects. 2012-09-20 04:49:43 +02:00
Aleric Inglewood
c5d9dc4732 Bug fix 2012-09-20 04:48:03 +02:00
Drake Arconis
84ec70e707 Revert "Breakpad cmake"
This reverts commit b0415370f8.
2012-09-19 20:50:54 -04:00
Siana Gearz
b7f5d7e415 Windows build fixes 2012-09-20 01:37:40 +02:00
Siana Gearz
8df7a52cf7 Merge branch 'curlthreading2' of git://github.com/AlericInglewood/SingularityViewer
Conflicts:
	indra/llplugin/slplugin/CMakeLists.txt
2012-09-19 23:30:48 +02:00
Shyotl
9bb9292a41 Attempt to catch octree node manipulation while iterating over said nodes 2012-09-19 15:34:25 -05:00
Shyotl
438c499718 And the shader.. 2012-09-19 15:34:15 -05:00
Shyotl
ff81d9461a Added motionblur postprocess shader.
Conflicts:

	indra/newview/skins/default/xui/en-us/floater_post_process.xml
2012-09-19 15:33:58 -05:00
Shyotl
f4f85aa1fd Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git
Conflicts:
	indra/newview/llviewerobject.cpp
2012-09-19 15:24:33 -05:00
Aleric Inglewood
56f2f0b727 Merge branch 'curlthreading2' into curlthreading3 2012-09-19 04:14:25 +02:00
Aleric Inglewood
19f325aa09 Merge remote-tracking branch 'singu/master' into curlthreading2
Conflicts:
	indra/llcommon/CMakeLists.txt

Resolved with kdiff3 automatically.
2012-09-19 04:11:16 +02:00
Aleric Inglewood
1d5a63c180 Fixed showing TOS floater.
This creates a separate events interface structure
for CurlResponderBuffer (AICurlResponderBufferEvents)
for dealing with received HTTP headers.

The headers are passed to the Responder, but only
if the class derived from Responder implements
completedHeaders (otherwise it makes little sense
to even decode the headers).

Basically this is a reimplementation of the functionality
of the old LLHTTPClientURLAdaptor class.
2012-09-18 23:59:09 +02:00
Lirusaito
d7da5153f3 Fixed up the Post-Process floater~
Vertical tabs, as requested by Shyotl
2012-09-18 10:06:21 -04:00
Aleric Inglewood
c67f010302 Pass filename by reference when possible. 2012-09-18 05:01:34 +02:00
Drake Arconis
90a10b3508 Removed packaged dbghelp.dll 2012-09-17 22:40:30 -04:00
Drake Arconis
a09f7d274f Fixed a bit of cmake derpyness 2012-09-17 22:23:57 -04:00
Drake Arconis
daa9466b7a Spelling fixin a comment :D 2012-09-17 22:22:28 -04:00
Drake Arconis
efb252206b Cached controls in cmdline chatbar 2012-09-17 22:22:02 -04:00
Drake Arconis
ffb847bbc0 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-09-16 16:40:49 -04:00
Siana Gearz
44b2392a10 Version 1.7.2 2012-09-15 21:33:09 +02:00
Siana Gearz
855540b5c5 Have i beaten you now, evil extortionists? 2012-09-15 21:31:33 +02:00
Siana Gearz
a7b9b0da42 Version 1.7.2 2012-09-15 21:17:16 +02:00
Siana Gearz
5f8eac9dc8 Have i beaten you now, evil extortionists? 2012-09-15 21:15:59 +02:00
Siana Gearz
b0ea103c61 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-09-15 17:05:50 +02:00
Siana Gearz
65781e6080 Make label 'Multiple' click through in texture selector 2012-09-15 08:36:38 +02:00
Siana Gearz
fc0149cdbc Fix the Unlink button 2012-09-15 08:16:35 +02:00
Siana Gearz
3946c076fe Oh i love our Coyotl 2012-09-15 07:34:06 +02:00
Aleric Inglewood
b5b6d3f85c Fix PluginAttachDebuggerToPlugins for linux.
This fixes the problem that many terminals require command line
parameters to be passed as command line parameters to the terminal
command. The old code would pass the whole gdb command including
all it's arguments (whatever replaces %s) as a single argument,
regardless of whether there are quotes around the %s or not.
Now those arguments are passed as separate arguments if there
are no quotes around the %s.

Updated documentation with an example on how to open a gdb terminal
on a different machines X display.
2012-09-14 19:38:05 +02:00
Lirusaito
10f09dc15d Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-09-14 05:42:46 -04:00
Drake Arconis
f50d23a0d4 Fast Timers brought up to linden equiv 2012-09-14 00:30:52 -04:00
Drake Arconis
cb9f972d13 BE GONE 2012-09-14 00:30:25 -04:00
Shyotl
53fd33604d Apparently blendstate needs to be set back to alpha after finishing drawing wireframe. 2012-09-14 03:42:16 +02:00
Siana Gearz
c8e3935648 GCC build fix 2012-09-14 02:56:40 +02:00
Shyotl
8f9c8ee293 Disabled reundant mesh wireframe passes. Outline wireframe pass not needed if sRenderHiddenSelections is set. Also enabled backface culling for outline pass. While these changes do improve performance a bit, they also seem to fix an atioglxx.dll crash (driver bug?) 2012-09-14 02:49:28 +02:00
Shyotl
767fe92de5 Invisprims in deferred now bind the correct shader when being drawn. (Fixes vbo attrib errors) 2012-09-14 02:45:22 +02:00
Shyotl
435b9cd1bb Including these changes to llglshader might've been a good thing to do a few commits ago. Eups. 2012-09-14 02:44:51 +02:00
Shyotl
afc7c2b449 Better robustness when loading shaders. Redundant shaders (eg: "deferred/shadowF.glsl") will only need to be compiled once, and LLShaderMgr::mShaderObjects won't have previous entries mistakenly overwritten as a result. 2012-09-14 02:33:07 +02:00
Drake Arconis
e0a7c7e935 Renamed our log files to not conflict with linden 2012-09-13 19:39:02 -04:00
Drake Arconis
b0415370f8 Breakpad cmake 2012-09-13 18:19:38 -04:00
Drake Arconis
b7ff2fe3e3 Merge branch 'master' of https://github.com/LightDrake/SingularityViewer 2012-09-13 18:09:46 -04:00
Siana Gearz
7978f5ebfe Rebuild drawable when alpha changes 2012-09-13 06:38:36 +02:00
Lirusaito
b663110288 Fix Sound Upload not working
Was broken by a change in f77f846c8d
Thanks to Lucia TopHat and Tazy Scientist for helping me test and confirm all this.
2012-09-12 08:23:42 -04:00
Siana Gearz
3ef9e3bc69 Merge branch 'master' of git://github.com/LightDrake/SingularityViewer 2012-09-11 20:18:05 +02:00
Aleric Inglewood
a032bd28ad Merge branch 'curlthreading2' into curlthreading3 2012-09-11 17:05:13 +02:00
Aleric Inglewood
834a524a67 Compile fix.
This belongs to the latest merge with singu/master.
2012-09-11 17:03:57 +02:00
Aleric Inglewood
e3460bea09 Compile fix for openssl < 1.0.1 2012-09-11 15:51:18 +02:00
Lirusaito
31041f2ade Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-09-11 09:45:17 -04:00
Lirusaito
3320272673 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-09-11 09:30:25 -04:00
Aleric Inglewood
131959e388 Merge branch 'curlthreading2' into curlthreading3 2012-09-11 15:19:28 +02:00
Aleric Inglewood
d23835a6c2 Merge remote-tracking branch 'singu/master' into curlthreading2
Conflicts:
	indra/newview/statemachine/aistatemachine.cpp

Huh - you re-INDENTED a file that you didn't merge yet?
How about merging curlthreading2 and curlthreading3
before doing THAT? :/

Obviously I did an "use ours" here.
2012-09-11 15:15:46 +02:00
Aleric Inglewood
e17632e0d5 Merge branch 'curlthreading2' into curlthreading3 2012-09-11 14:56:07 +02:00
Aleric Inglewood
d57a3b101b Hide quilt patch directory 2012-09-11 14:54:51 +02:00
Aleric Inglewood
c2289c047b Only disable TLS1.1 for openssl1.0.1 and higher, leaving SSL3 alone. 2012-09-11 02:05:54 +02:00
Siana Gearz
4ade726a07 Fix PATH-842 rotation reset on object update 2012-09-10 16:31:27 +02:00
Siana Gearz
856a45a775 Crash stopgaps from FS 2012-09-10 02:51:03 +02:00
Siana Gearz
f64ccbab7e Scrollable fast timer view, by Liny 2012-09-10 02:36:37 +02:00
Siana Gearz
8a44c8fce1 Fast timer fix-up
The logic is incorrect in principle, but at least it's better behaved now.
Also, get fast timer out of important parts of aistatemachine.
2012-09-10 02:06:07 +02:00
Siana Gearz
2a70dde016 Start voice with mic muted 2012-09-08 09:49:12 +02:00
Siana Gearz
f1a5fb6b62 Fix LightShare annoyance for people who don't know what LightShare is 2012-09-08 08:12:13 +02:00
Siana Gearz
04bb15a108 Fix anti-aliasing in FBO mode 2012-09-08 08:09:30 +02:00
Drake Arconis
9b358a1b39 Initial llqtwebkit 2012-09-08 02:03:07 -04:00
Drake Arconis
86ad4aabf3 Cmake changes needed for standalone 2012-09-07 17:53:13 -04:00
Aleric Inglewood
36c097744c Merge remote-tracking branch 'github/master' 2012-09-06 15:22:31 +02:00
Aleric Inglewood
e7cd445491 Merge branch 'curlthreading2' into curlthreading3 2012-09-06 15:12:22 +02:00
cry0
9b66d74382 Fixed lscript
Bison 2.6 caused some problems with indra.l and indra.y
2012-09-05 21:42:51 -05:00
Aleric Inglewood
e3752aefed Fix loading Qt plugin on linux standalone.
For standalone there is no need to link libmedia_plugin_webkit.so
against Qt's plugins, and thus also not to add "random" paths
to LD_LIBRARY_PATH. Just let Qt do it's thing and find and
load the plugins it needs itself.
2012-09-05 19:29:47 +02:00
Aleric Inglewood
d8ff809092 Make webkit work with Qt 4.8 2012-09-05 04:12:13 +02:00
Aleric Inglewood
a8f5bf8baf Bug fix.
dlerror() returns NULL when no errors have occurred since the last call
to dlerror() (or since the last call to dlopen(), dlsym() or dlclose()).
2012-09-05 02:15:41 +02:00
Aleric Inglewood
3a3605b812 Cherry pick from curlthreading2 2012-09-04 23:34:56 +02:00
Aleric Inglewood
f1c635d103 Cherry pick from curlthreading2 2012-09-04 23:34:11 +02:00
Aleric Inglewood
15cce79040 Merge remote-tracking branch 'singu/master' into curlthreading2
Conflicts:
	indra/llmessage/llcurl.cpp

Changes to unused file (I'll remove it when I'm done).
2012-09-04 17:38:11 +02:00
Siana Gearz
fef681be7c Fix annoyance in debug build on OpenSim 2012-09-04 12:54:47 +02:00
Siana Gearz
e379a5a03e Allow super thin objects on OpenSim 2012-09-04 12:37:22 +02:00
Lirusaito
f2b4911f60 Space, the final frontier 2012-09-02 15:41:14 -04:00
Lirusaito
ff93de6e61 Fix for P2P Voice Volume slider overlapping End call button. 2012-09-02 14:38:49 -04:00
Siana Gearz
29adc28d80 ivec4 still needed as texture index on some SONY VAIO and Toshiba ATI drivers.
This reverts commit b8b235df09.
2012-09-02 19:26:28 +02:00
Shyotl
118937aa99 Fow windows, client is now more likeley to create gl context that actually matches desired multi-sample value. 2012-09-02 08:49:46 +02:00
Shyotl
6ec4c65f04 A few nullchecks, and removal of pointless uint < 0 bounds checks. 2012-09-02 08:48:52 +02:00
Shyotl
fefb40bda2 MAINT-675: Fix for DoF focal point being incorrect when alt-zooming on terrain. http://hg.secondlife.com/viewer-development/changeset/4e362886866692fa904a88adcf3e11b7518802f3 2012-09-02 08:47:20 +02:00
Shyotl
c5938f7d31 Removed prim joint logic. (Dead code) 2012-09-02 08:47:03 +02:00
Shyotl
e748b74c67 Hook floater with primary focus(and is therefore opaque) into the occlusion system. 2012-09-02 08:46:21 +02:00
Shyotl
a957d58939 SH-3238: Textures are loaded at lower detail on subsequent log-ins. http://hg.secondlife.com/viewer-development/changeset/e9975f600436ab692e541662bcadfa7a04c97e1d 2012-09-02 08:44:25 +02:00
Lirusaito
37a9a52544 Improve on translation in llviewermessage.cpp
More sync with v-d for llviewermessage.cpp
space changes mostly
2012-09-02 02:30:38 -04:00
Siana Gearz
566d70a6d1 Restore applying anti-aliasing from preferences 2012-09-02 06:39:50 +02:00
Lirusaito
7b7157f491 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-09-01 10:08:29 -04:00
Lirusaito
ea8791697e Sync more code with upstream, Translations galore, even translations for AntiSpam!
Updated AntiSpam with documentation, safety measures, and better presentations and clarifications for the end-user from FS.
If it looks like something was removed from an xml, it was just moved to fall into place better with v-d.

Corrected log end message being log start message.
2012-09-01 00:43:30 -04:00
Aleric Inglewood
dd9f7bba5d Merge branch 'curlthreading2' of github.com:AlericInglewood/SingularityViewer into curlthreading2 2012-09-01 04:02:45 +02:00
Aleric Inglewood
8051cd4194 Install fix for latest 32bitcompatibilitylibs 2012-09-01 03:56:52 +02:00
Siana Gearz
b4a7fa1ad9 Force Vorbis to link before FMODEx 2012-09-01 03:10:26 +02:00
Siana Gearz
e460bd9a69 Yet another attempt at getting old ATI drivers not to do all pink 2012-09-01 01:35:35 +02:00
Siana Gearz
5a3082275e Fix object update on OpenSim regions with mesh disabled 2012-08-31 19:55:49 +02:00
Siana Gearz
bdf20355b6 Added OSGrid 2012-08-31 06:36:47 +02:00
Aleric Inglewood
21ea923520 Compile fix for OSX 2012-08-31 05:50:42 +02:00
Aleric Inglewood
484fff444f Compile fix for OSX 2012-08-31 05:23:20 +02:00
Siana Gearz
f63d0abbc1 Fix multi-preview for textures 2012-08-30 14:03:27 +02:00
Siana Gearz
5a05898ec4 Callum Linden's tcmalloc 2012-08-30 08:38:56 +02:00
Lirusaito
b9ee7cc30a Expose pick import/export feature
Why did Beeks ever comment this out? Certainly works now...
2012-08-29 23:00:09 -04:00
Siana Gearz
03ee96cdff Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-08-30 04:49:41 +02:00
Siana Gearz
be2598bc4c Attempt to fix effect shaders 2012-08-30 02:58:50 +02:00
Lirusaito
01f5fe6eb1 Restore object rotation code to fix Issue 454
Just a partial revert of aca3e8f6c4
_PREHASH_ObjectRotation and sendRotationUpdate
2012-08-29 13:34:27 -04:00
Siana Gearz
32f9cbb11d Revert "MAINT-646: Hotspot in LLViewerObjectList::update"
This reverts commit d8fc691625.
2012-08-27 07:32:29 +02:00
Damian Zhaoying
67e99c799c Add new panel_navmesh_rebake.xml file and erase floater_hex.xml file from spanish language files 2012-08-26 06:11:40 -03:00
Damian Zhaoying
da5284c6b8 Fix and update some spanish translations 2012-08-26 06:01:35 -03:00
Damian Zhaoying
c2fa79347e Merge remote-tracking branch 'upstream/master' 2012-08-26 05:53:32 -03:00
Siana Gearz
953a7ff066 Fix growth of linker flags on windows 2012-08-26 08:12:23 +02:00
Lirusaito
84cabd6a1e Added Nomade's SecondLove skin 2012-08-25 16:23:29 -04:00
Siana Gearz
e1a6b7e249 Correct a whoopsie there 2012-08-25 19:41:34 +02:00
Damian Zhaoying
72b342912e Merge remote-tracking branch 'upstream/master' 2012-08-24 17:07:02 -03:00
Lirusaito
07f52c463e Fixed crash reported by Naudia Nadezda, crash when closing a texture multipreview.
Also updated LLPreviewTexture to be closer to upstream and better for translation,
added lltrans for FileSaved and Receiving,
and floater_preview_texture.xml now uses No Alpha, Has Alpha, Unknown as strings.
2012-08-23 23:53:36 -04:00
Lirusaito
064f0216b4 Disable Newline AntiSpam when AntiSpam is not enabled. 2012-08-23 18:55:57 -04:00
Lirusaito
70a4d113b3 Fix placement of the History Button having spacing when Voice is Disabled. 2012-08-23 18:55:20 -04:00
Lirusaito
2001d6b6ec Skins update, enter Nomade's (cleaned up) skins!
Fixed all skins to use DefaultListText properly.
Fixed white_emerald to use textures directory instead of Textures directory.
2012-08-23 18:51:40 -04:00
Siana Gearz
b278cbb32e Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-08-23 07:26:19 +02:00
Siana Gearz
7ec9af8200 Parcel media crash fix 2012-08-23 07:25:36 +02:00
Lirusaito
71b0c35653 AntiSpam improvements: Less sensitive defaults for sound multi's and an off switch.
Polished the Spam tab a bit...
Also, slightly better errors for antispam bugs... Which Ruby neglected to take from me...
2012-08-23 00:12:09 -04:00
Damian Zhaoying
4032df3115 Merge remote-tracking branch 'upstream/master' 2012-08-22 11:44:10 -03:00
Lirusaito
6eadc29ca0 Polish About floater Credits tabs, and remove translation of Credits and Licenses tabs. 2012-08-21 18:39:55 -04:00
Lirusaito
c6f7a39d22 A tiny sync with v-d in LLGLSandBox/LLViewerParcelMgr 2012-08-21 16:49:44 -04:00
Siana Gearz
73099edae3 Version 1.7.1 2012-08-21 22:06:23 +02:00
Siana Gearz
f53646764c Merge git://github.com/TighMacFanatic/SingularityViewer 2012-08-21 22:01:46 +02:00
Siana Gearz
7b42fea0f5 Stricter git 2012-08-21 19:17:45 +02:00
Siana Gearz
df1e9732d0 Developers, profile thy profiler! 2012-08-21 07:43:47 +02:00
Siana Gearz
822ba4432f Typo fix and MeshMaxConcurrentRequest bumped by demand 2012-08-21 07:43:00 +02:00
TighMacFanatic
8e6c6acf18 Fix issue preventing the spinner/copy/paste from working for position when editting attachments. 2012-08-20 23:54:03 -04:00
Aleric Inglewood
83b13f6a3f WIP: make everything use AICurlEasyRequestStateMachine 2012-08-20 21:18:19 +02:00
Siana Gearz
aceb3f3425 Fix playback of streams with über-long header, thx to Brett@FMOD 2012-08-20 16:09:55 +02:00
Siana Gearz
37f2ec2f9f Merge branch 'master' of git://github.com/lkalif/SingularityViewer 2012-08-20 05:16:17 +02:00
Shyotl
4d1e822de7 Fixed ancient annoyance of enabling any debug info display clobbering object hovertext. Object's real hovertext is now cached, and only substituted if overridden by setDebugText, and is properly recovered when debug text is cleared. 2012-08-20 05:10:29 +02:00
Shyotl
b8276fd8e3 MAINT-685: Fix for disabling basic shaders making high detail terrain render incorrectly. http://hg.secondlife.com/viewer-development/changeset/218a7b78dcc5f53f38de063f3a229a7462fe052f 2012-08-20 05:10:15 +02:00
Siana Gearz
d319ebc0a8 Shift-crouch-toggle is now a setting 2012-08-20 05:05:39 +02:00
Siana Gearz
5f32d9347d Place region console where people expect to find it 2012-08-20 04:41:49 +02:00
Siana Gearz
ba136fe42d Remove annoying sim version change notification - like viewer 2 2012-08-20 04:22:26 +02:00
Siana Gearz
e4090b1475 Fix up the link/unlink buttons 2012-08-20 03:31:11 +02:00
Siana Gearz
b7d2ecbf1a Able to play media again, thx VoodooSam 2012-08-20 02:34:39 +02:00
Siana Gearz
f77f846c8d Anim upload issues fixed, bulk upload clarified. 2012-08-19 23:58:10 +02:00
Siana Gearz
23b34aeb92 Fix FMOD Ex packaging 2012-08-19 19:04:22 +02:00
Damian Zhaoying
59c887129d Merge remote-tracking branch 'upstream/master' 2012-08-18 18:50:17 -03:00
Lirusaito
bd7cd9245a A tiny sync with v-d in LLGLSandBox/LLViewerParcelMgr 2012-08-16 09:21:46 -04:00
Latif Khalifa
53c7cf116c Implement setting home position the way V3 does it, with CAP fallback 2012-08-16 08:00:42 +02:00
Siana Gearz
95b7842e31 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-08-16 03:46:32 +02:00
Siana Gearz
0b953ccc40 Merge branch 'future' of https://github.com/Shyotl/SingularityViewer 2012-08-16 03:37:50 +02:00
Siana Gearz
41c4eabcaa Merge branch 'master' of git://github.com/lkalif/SingularityViewer 2012-08-16 03:37:34 +02:00
Siana Gearz
0a33a3a71a This should at least stop crash from pathfinding notification till we have figured it out better. 2012-08-16 03:37:13 +02:00
Shyotl
d6b470cd07 Just call LLPipeline::refreshCachedSettings() in LLViewerShaderManager::setShaders() to avoid occlusion-related crashes if certain shaders failed to load. 2012-08-15 16:21:10 -05:00
Lirusaito
d1cb627582 What started out as removing the newline spam in LLPanelObject, ended as cleanup/sync with v-d.
Jus' want files to be nice to read, but then... a bunch of them are all messy.. so... Fixed~
2012-08-15 10:00:47 -04:00
Lirusaito
1d99158562 newview/CMakeLists.txt alphabetized and brought closer to v-d.
Yay cleaning~
2012-08-15 02:10:10 -04:00
Aleric Inglewood
05c32c7a62 Merge branch 'curlthreading2' into curlthreading3 2012-08-15 05:44:17 +02:00
Aleric Inglewood
ea4d32b4ad Compile fix. 2012-08-15 05:43:12 +02:00
Lirusaito
bb9e260793 LLViewerMenuFile, missed a spot with translation.
Also rearranged includes, for better sync with upstream v-d...
2012-08-14 19:47:39 -04:00
Aleric Inglewood
536cb6febd Merge branch 'curlthreading2' into curlthreading3
Conflicts:
	indra/CMakeLists.txt
	indra/llcommon/llstring.h
	indra/llmessage/CMakeLists.txt
	indra/llmessage/llhttpclient.cpp
	indra/llmessage/llhttpclient.h
	indra/llmessage/llurlrequest.cpp
	indra/llmessage/llurlrequest.h
	indra/newview/hipporestrequest.cpp
	indra/newview/llappviewer.cpp
2012-08-15 00:51:40 +02:00
Latif Khalifa
258fe8bad0 Fixed region windlight on OpenSim. It's not possible to assume that the mere existance of M7WL should mean override of RegionWindlight as M7WL is always sent. If M7WL is to have a preference some other method must be devised, ie. a debug setting 2012-08-14 21:30:25 +02:00
Latif Khalifa
74772a1f61 One should never invoke CAPs request without checking if the capability is present. Fixes setting home location on OSGrid, issue #426 2012-08-14 19:30:49 +02:00
Siana Gearz
bdaa5f20a1 Auto detach Firestorm bridge 2012-08-14 08:11:15 +02:00
Aleric Inglewood
19293601b3 Manual pick of stuff from 'shycurl' (68ad5411) that seemed to make sense. 2012-08-14 02:38:06 +02:00
Shyotl
f2bcfa5275 Use cachedcontrol in LLViewerObjectList::update. 2012-08-13 18:51:37 -05:00
Siana Gearz
6265027222 Commonly requested resolutions for HD monitors
Totally wish i had that last one! Wheeee, SPAAAACE!
2012-08-14 00:35:53 +02:00
Siana Gearz
36ff4dcd11 Don't feed empty, non-working callback to CURL
Cherry-Pick of 96a4e16a

Conflicts:
	indra/llmessage/llurlrequest.cpp
	indra/llmessage/llurlrequest.h
	indra/newview/hipporestrequest.cpp

Clear reasons for conflicts, resolved.
2012-08-13 23:33:49 +02:00
Aleric Inglewood
35a53ef1d7 Bug fix (needed for libcwd with memory allocation debugging) 2012-08-13 21:59:57 +02:00
Siana Gearz
507c5eb7ca Fix classified search 2012-08-13 21:50:09 +02:00
Aleric Inglewood
169670a58b Refurbish last merge. Fix compile for standalone and libcwd. 2012-08-13 19:30:35 +02:00
Aleric Inglewood
fbb5dced97 Merge remote-tracking branch 'singu/master' into curlthreading2
Conflicts:
	indra/llcommon/CMakeLists.txt
	indra/llmessage/llcurl.cpp
	indra/llmessage/llcurl.h
	indra/llmessage/llhttpclient.cpp
	indra/llmessage/llhttpclient.h
	indra/llmessage/llpumpio.cpp
	indra/llmessage/llpumpio.h
	indra/llmessage/llurlrequest.cpp
	indra/llmessage/llurlrequest.h
	indra/newview/hipporestrequest.cpp
	indra/newview/llappviewer.cpp
	indra/newview/llspatialpartition.cpp
	indra/newview/llviewermedia.cpp
	indra/newview/llxmlrpctransaction.cpp

Conflicts resolved by choosing curlthreading2
for any llmessage file regardless (which looks
correct upon investigation); the rest also
turned out to need to use curlthreading2, except
in one line where I added a semi-colon after
an assert(), and the assert was changed in
singu/master.
2012-08-13 17:07:25 +02:00
Shyotl
aa54a386f3 Fix regression introduced in pathfinding (avelocity bugs) 2012-08-13 02:55:47 -05:00
Siana Gearz
6b8c58e3b5 Safe and probably pointless crash workarounds from FS and LL 2012-08-13 06:14:16 +02:00
Lirusaito
67f4797e09 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-08-12 22:58:22 -04:00
Siana Gearz
7335ae548c Add script teleport permission 2012-08-13 03:04:33 +02:00
Siana Gearz
0b1a5bc3c1 Translation file clean-up 2012-08-13 02:23:08 +02:00
Siana Gearz
e9c54bb5e4 Fix voice icon in chat floater tab 2012-08-13 01:56:35 +02:00
Siana Gearz
4294038271 Potential HTTP fixes from viewer-http 2012-08-12 22:39:33 +02:00
Lirusaito
408eab13f0 Removed a duplicate string 2012-08-12 16:04:22 -04:00
Siana Gearz
ee0bd9ee76 De-uglify graphics preferences 2012-08-12 20:52:57 +02:00
Aleric Inglewood
263a25fb87 Compile fix for DEBUG_CURLIO 2012-08-12 17:42:30 +02:00
Aleric Inglewood
fa10ce28d2 Missing header 2012-08-12 17:10:44 +02:00
Siana Gearz
039f665af1 Hopefully fix FMOD Ex packaging this time 2012-08-12 16:38:25 +02:00
Aleric Inglewood
304fa05094 Suppress "Expect:" header for POST and PUT. No longer use CURLOPT_COPYPOSTFIELDS.
For POST and PUT, libcurl adds by default a "Expect: 100-continue"
header and wait for the server to reply with a 100 response.
However, since the server never does that (LL comment in the
code "I'm not sure what it means") it's up to libcurl to continue
anyway after a while and that part is apparently bugged, causing
people not to be able to login sometimes. But suppressing the
header, libcurl doesn't wait for it and we worked around this bug.

The commit introduces a much improved CurlEasyRequest::setPost
method that enforces the above for POST, but that also no longer
uses CURLOPT_COPYPOSTFIELDS (but CURLOPT_POSTFIELDS), no longer
making a copy of the body of what we are going to send to the server.
Instead it uses a new object, derived from AIPostField, to keep track
of this data and to dispose of it once the transaction is complete
(and no sooner).

Copied from llcorehttp, we now also always set a "Connection:
keep-alive" and "Keep-alive: 300" header for POST.
This was already done for texture downloads (HttpOpRequest),
but now we do it always :p. Might need to be changed in the
future, but currently those headers are ignored by the server
anyway.
2012-08-12 16:34:20 +02:00
Siana Gearz
89ad14b82f Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-08-12 14:52:47 +02:00
Siana Gearz
73785af730 Fix permission panel unclickable 2012-08-12 13:33:27 +02:00
Siana Gearz
d2c3e50a3f Fix LLTrans for Unknown 2012-08-12 13:15:42 +02:00
Aleric Inglewood
2fbe7ab6ce Only accept pointers to valid types for getinfo(). 2012-08-12 03:38:45 +02:00
Aleric Inglewood
164799e4c4 Curl debug output improvements and minor fixes. 2012-08-12 03:33:33 +02:00
Siana Gearz
4f57269518 Fix show muted text in chat 2012-08-11 22:26:31 +02:00
Lirusaito
92c9311a4c gpu_table update! 2012-08-11 02:51:49 -04:00
Lirusaito
ca6fd89700 Initial gpu_table retabbing, nothing important. 2012-08-11 01:49:15 -04:00
Lirusaito
80b100f135 Fix "KeyError: 'extra_libraries'" when compiling without FMOD Ex. 2012-08-11 00:48:36 -04:00
Lirusaito
8e12f11089 Forgot to commit this include 2012-08-11 00:09:09 -04:00
Lirusaito
f4324e8890 Merge branch 'future' of git://github.com/Lirusaito/SingularityViewer
Conflicts:
	indra/llrender/llpostprocess.cpp
2012-08-10 23:39:06 -04:00
Lirusaito
fda34fea46 Merge branch 'AltCompilers' of https://github.com/LightDrake/SingularityViewer 2012-08-10 23:30:56 -04:00
Lirusaito
0770150455 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-08-10 23:30:16 -04:00
Lirusaito
d79a8fc87b Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2012-08-10 23:27:42 -04:00
Aleric Inglewood
8e1bbfe938 Amend last commit 2012-08-11 03:29:46 +02:00
Aleric Inglewood
3469d65f95 Windows compile and linker fixes.
* Do not include aithreadid.h from debug.h, because the latter is
  included everywhere (from linden_common.h) and aithreadid.h is
  heavy (includes among others windows.h).
* On windows, thread local members cannot be exported.
2012-08-11 03:23:31 +02:00
Lirusaito
486536f92d Allow antispam time to be set to 0, for disabling Antispam. 2012-08-10 18:41:50 -04:00
Aleric Inglewood
70717cb6c8 Compile bug fix for windows. 2012-08-10 14:49:34 +02:00
Aleric Inglewood
94ebcdeb6b Add eight missing headers...
How did you ever get this to compile if those
headers were removed from the precompiled header?
2012-08-10 07:23:29 +02:00
Aleric Inglewood
152238e67f Merge remote-tracking branch 'shyotl/breakforce' into breakforce 2012-08-10 05:56:28 +02:00
Shyotl
eef51e0bd0 Pulled llpacketring.h and llhttpclient.h out of the precompiled header. 2012-08-09 22:50:05 -05:00
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
b2c5a84964 Replace CURLOPT_POSTFIELDSIZE_LARGE with CURLOPT_POSTFIELDSIZE
Also adds a more robust interface for setopt that does
type checking based on the options used. This fixes one
bug where a F32 was passed and interpreted as long.
In many cases a U32 or S32 was passed as long, which
would fail (only) on a 64bit non-windows big endian machine.
2012-08-10 04:18:04 +02:00
Drake Arconis
0be43cf1c2 Fixed GCC47 issues and fmodex copying 2012-08-09 10:56:29 -04:00
Siana Gearz
f5923860fa Remove maximum selection limit of 20 friends, no longer present in viewer 2/3 2012-08-09 15:39:22 +02:00
Siana Gearz
adc2921f38 Fix push to talk lock 2012-08-09 15:28:04 +02:00
Siana Gearz
ca630a106e Merge fix 2012-08-09 15:21:38 +02:00
Drake Arconis
cbbc42d564 Merge remote-tracking branch 'singularity/master' into AltCompilers 2012-08-09 08:44:14 -04:00
Aleric Inglewood
0054e6a378 Bug fix.
Fixes an exit crash when the user clicks on Login and immediately
on Quit, because termination of the LLAuth curl request statemachine
access the CurlRequestTimeOut debug setting.
2012-08-09 07:04:23 +02:00
Aleric Inglewood
76e30150b9 Removed superfluous debug output 2012-08-09 07:02:42 +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
b9673df961 Clean up of debug.h: just use LL_COMMON_API. 2012-08-09 06:57:53 +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
Siana Gearz
e616b40c6f Autodetect music stream type properly 2012-08-09 05:09:02 +02:00
Siana Gearz
26109ca8f9 Assert fix 2012-08-09 04:50:48 +02:00
Siana Gearz
46e57d4f1c Package FMOD Ex on Linux 2012-08-09 03:46:24 +02:00
Siana Gearz
7743843a27 Merge branch 'AltCompilers' of git://github.com/LightDrake/SingularityViewer
Conflicts:
	indra/newview/skins/default/xui/en-us/strings.xml
2012-08-09 03:46:03 +02:00
Siana Gearz
c84e145557 Merge branch 'future' of https://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/llrender/llrendertarget.cpp
	indra/newview/lloverlaybar.cpp
2012-08-09 02:11:14 +02:00
Drake Arconis
e767392b44 Merge remote-tracking branch 'shyotl/future' into AltCompilers
Conflicts:
	indra/llrender/llrendertarget.cpp
	indra/newview/llvovolume.cpp
2012-08-08 18:54:04 -04:00
Drake Arconis
457177905d Merge remote-tracking branch 'singularity/master' into AltCompilers 2012-08-08 18:50:03 -04:00
Siana Gearz
de74443d76 Merge branch 'master' of https://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/newview/llvovolume.cpp
	indra/newview/skins/default/xui/fr/panel_overlaybar.xml
2012-08-09 00:42:23 +02:00
Siana Gearz
f3e7340118 Merge branch 'shycurl' of github.com:singularity-viewer/SingularityViewer
Conflicts:
	indra/llmessage/llhttpclient.cpp
	indra/llmessage/llhttpclient.h
	indra/llmessage/llurlrequest.cpp
	indra/llmessage/llurlrequest.h
2012-08-09 00:02:50 +02:00
Lirusaito
efe3dd77fa Address Issue 91: Estate ban button added to radar
Shift-Enter in radar now starts an IM with people selected.
Also, it seems Dark used black for texts and should... so... let's reverse that change.
2012-08-08 15:51:26 -04:00
Damian Zhaoying
7c690b9de1 Merge remote-tracking branch 'upstream/master' 2012-08-08 12:56:07 -03:00
Lirusaito
5ce8770dc3 Fix Issue 304: export texture in png too
code adapted from that bird that burnt to death...
2012-08-08 10:50:17 -04:00
Damian Zhaoying
e9ddd6b8f8 Merge remote-tracking branch 'upstream/master' 2012-08-08 01:03:49 -03:00
Aleric Inglewood
f94f458922 Print CURL_SOCKET_TIMEOUT for that particular value. 2012-08-08 04:10:34 +02:00
Aleric Inglewood
89ef06fd3f Compiler warning fixes. Take into account that debug_libcurl.cpp is no longer linked dynamically. 2012-08-08 01:58:49 +02:00
Aleric Inglewood
ccd135b2a6 and again 2012-08-08 01:04:27 +02:00
Aleric Inglewood
80eb0851d9 Fix stupidity 2012-08-08 01:02:08 +02:00
Aleric Inglewood
b84f470fca Bug fix: curl_off_t has a different size than void* on 32 bit. 2012-08-08 00:40:01 +02:00
Aleric Inglewood
5caeccc007 Final compile/link bug fixes for debug_libcurl code.
renamed cwdebug/debug_libcurl.cc -> llmessage/debug_libcurl.cpp
    and cwdebug/debug_libcurl.h  -> llmessage/debug_libcurl.h,
because debug_libcurl.cpp does curl calls that do ares and
openssl calls, so we need to link with those libraries.
llmessage is already linking with those libraries, and contains
the main entry point aicurl.h, so it's a suitable place to put
this.

Bug fix: must always include llpreprocessor.h before including
curl/curl.h.

Bug fix: Added #include "debug_libcurl.h" to hipporestrequest.cpp
and llurlsimstring.cpp which I missed before because they
included "curl/curl.h" instead of <curl/curl.h>. Same in
llwaterparammanager.cpp, but removed include there because it
isn't needed.

Now test DEBUG_CURLIO before including debug_curlio, that
seems better, because otherwise it would make more sense to
replace all #include <curl/curl.h> with #include "mycurl.h"
and then do it there-- but I didn't want to do that.

Bug fix: we undef-ed CURLOPT_DNS_USE_GLOBAL_CACHE, while really
that is an enum, not a macro.

Fixed DEBUG_WINDOWS_CODE_ON_LINUX again by adding a hack for
ioctlsocket(), not instantiating dumb_socketpair unless
DEBUG_WINDOWS_CODE_ON_LINUX is defined and removing again ^M's
introduced with the new windows non-blocking code.
Also changed the type of flags passed to fcntl to int (was long).
2012-08-07 20:57:39 +02:00
Siana Gearz
96a4e16a4b Don't feed empty, non-working callback to CURL 2012-08-07 18:21:36 +02:00
Aleric Inglewood
477c657f60 Merge remote-tracking branch 'singu/breakforce' into breakforce 2012-08-07 16:19:20 +02:00
Siana Gearz
68ad5411c9 Shyotl's old llcurl 2012-08-07 13:13:45 +02:00
Aleric Inglewood
cc50e620c0 Merge branch 'curlthreading2' into breakforce 2012-08-07 05:22:10 +02:00
Aleric Inglewood
8646abb18b Merge branch 'curlthreading2' into curlthreading3 2012-08-07 05:21:52 +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
93416e40a4 Compile fix: CURLOPT_SSL_OPTIONS was also added since 7.25.0 2012-08-07 05:16:59 +02:00
Lirusaito
d2210414bc Misplaced closing parenthesis... 2012-08-06 23:15:50 -04:00
Lirusaito
e6e9a21597 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2012-08-06 20:33:21 -04:00
Aleric Inglewood
e14be5c8c2 Make debug_libcurl.cc compile with libcurl 7.21 and higher 2012-08-07 01:33:29 +02:00
Lirusaito
f9b3561ca8 Typo fix 2012-08-06 17:24:01 -04:00
Aleric Inglewood
95083e846b WIP 2012-08-06 23:19:09 +02:00
Damian Zhaoying
ce415fb65c Merge remote-tracking branch 'upstream/master' 2012-08-06 15:56:30 -03:00
Aleric Inglewood
f479ea4bcf Merge branch 'curlthreading2' into curlthreading3 2012-08-06 19:55:19 +02:00
Shyotl
1a6c00ca8b Display pathfinding attributes in build floater. 2012-08-06 12:26:28 -05:00
Shyotl
58033d3cbc Added rebake navmesh button. Brought in rest of the underlying navmesh implementation. 2012-08-06 10:11:12 -05:00
Lirusaito
4c23ab029a Missing Strings.
Oops.  Customize Floater wants these for like once case...
2012-08-06 02:38:09 -04:00
Lirusaito
0846f8a963 Fixeds and ToDones
-Color Fixies-
Fixed Gemini skin not looking as it originally did.
We now use DefaultListText to color all otherwise uncolored text in scroll list cells.
All of our dark skins have been updated to use white here, as dark skins are intended to have white text...
This includes the Dark we ship with.

LLFloaterActiveSpeakers no longer uses hard coded font colors, it uses SpeakersInactive, DefaultListText, and SpeakersGhost.

LLFloaterAvatarList no longer uses hard coded font colors, it uses DefaultListText, RadarTextChatRange, RadarTextShoutRange, and RadarTextDrawDist, in place of previously hard coded font colors
Since the tooltip defines color meaning, these new colors should only be skinned to change shade.

DefaultListText defaults to black; SpeaksInactive, gray(grey4); SpeakersGhost, Red; RadarTextChatRange, Red; RadarTextShoutRange, Yellow(yellow1); RadarTextDrawDist, Green(green2).


-Translation update and fixies-
Partial credit to viewer-development, thanks for hanging onto old strings!  Also, updated to look more like v-d in translated areas.
Punctuation strings can be used quite a lot.  Brought them all in, just in case.

AscentPrefs*:
Drag and Drop points now use CurrentlySetTo, CurrentlyNotSet, AnItemNotOnThisAccount, and NotLoggedIn. (applies, as well, to FloaterAO)
Power User message is now built from PowerUser1, PowerUser2, Unlocked:, PowerUser3, RightClick, PowerUser4 and PowerUser5; this should give translators enough space to explain any tough to translate, and make the message easier to alter in the future, if necessary.

LLCompileQueue:
Now uses translation strings from upstream
Starting, Done, Resetting, Running, and NotRunning in its xml.
CompileQueueTitle, CompileQueueStart, CompileQueueDownloadedCompiling, CompileQueueScriptNotFound, CompileQueueProblemDownloading, CompileQueueInsufficientPermDownload, CompileQueueInsufficientPermFor, CompileQueueUnknownFailure, ResetQueueTitle, ResetQueueStart, NotRunQueueTitle, and NotRunQueueStart from strings.

LLFloaterAvatarList(floater_radar) now uses has_entered, has_left, the_sim, draw_distance, shout_range, and chat_range in its xml for translatable alerts.

LLFloaterLand(floater_about_land) now uses minutes, 1_minute, 1_second, seconds, and remaining from its xml.
LLFloaterLand, LLFolderView, LLPanelDirBrowser now make use of InventoryNoMatchingItems, NoneFound, and Searching in their searches.
LLFolderView was brought closer to v-d in translation.

LLGroupNotify now uses GroupNotifyGroupNotice, GroupNotifySentBy, GroupNotifyAttached, next (also now used by LLNotify), ok, GroupNotifyGroupNotices, GroupNotifyViewPastNotices, GroupNotifyOpenAttachment, and GroupNotifySaveAttachment.

LLInventoryFilter synced with V-D for translation:
Now uses Animations, Calling Cards, Clothing, Gestures, Landmarks, Notecards, Objects, Scripts, Sounds, Textures, Snapshots, No Filters, Since Logoff, and Worn.

LLManipRotate now uses Direction_Forward, Direction_Left, Direction_Right, Direction_Back, Direction_North, Direction_South, Direction_West, Direction_East, Direction_Up, and Direction_Down, like upstream v-d.

LLPanelAvatar(panel_avatar) now uses None string in its xml for when there are no groups, also removed cruft. Though the None has not been showing up for quite some time, anyway...

LLPanelObjectInventory now uses Buy, LoadingContents and NoContents,
however the last two strings did not seem to show up anyway...
thanks to Latif Khalifa, Jean Horten, theGenius Indigo and Cubbi Bearcat for confirming this happens across many different versions and on both Windows and linux(32 and 64).

LLPreviewScript now uses CompileSuccessful, SaveComplete, ObjectOutOfRange, and CompileSuccessfulSaving.

LLScrollingPanelParam now translates Less and More.
Avatar Shape Information strings now used for customize appearance panels.

LLTextureCtrl now uses multiple_textures.

LLToolpie has been updated to use v-d include order and now uses UnmuteAvatar, MuteAvatar, UnmuteObject, and MuteObject2 strings.
LLVOAvatarSelf now uses BodyParts* strings for translation of toolpie entries pertaining to bodyparts.

LLViewerMenuFile now uses UnknownFileExtension, and UploadingCosts.

LLViewerMessage now uses Cancel(also used by LLViewerDisplay), AcquiredItems, Saved_message, IM_autoresponse_sent_item, IM_autoresponded_to, IM_announce_incoming, InvOfferDecline, InvOfferGaveYou, InvOfferOwnedByUnknownUser, InvOfferAnObjectNamed, InvOfferOwnedBy, InvOfferOwnedByUnknownGroup, and InvOfferOwnedByGroup.


-AvatarRadar Update-
AvatarRadar enhanced with code from both Cool VL Viewer and some avian corpse.
e_radar_alert_type has been reworked to allow bitwise usage in the future.

Cool stuff:
gSavedSettings for radar are now CachedControls,
entering boolean is now checked before going into the switchcase,
Style changes, yay C++ style.

Avian Flu:
Distance for shout range corrected to be 96.
handleKeyHere: If the user hits enter with an avatar on the radar selected, focus camera on selected avatar; ctrl-enter, teleport to selected avatar.

Otherwise:
Tiny spelling fixies, and a suggestive comment.
2012-08-05 20:40:02 -04:00
Aleric Inglewood
65a1aae629 Bug fix
curl_easy_setopt expects a long int. Before this patch,
uninitialized memory was read, leading to extreme long
time out, instead of the intended disabled time out (so,
in practise this patch has little effect).

This bug was discovered with the previous commit.
2012-08-05 18:55:27 +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
Siana Gearz
761439cc8d Setting socket pair non-blocking 2012-08-05 08:20:31 +02:00
Shyotl
b847c53395 Implemented basic 'awareness' of objects flagged as permanent. 2012-08-04 20:46:51 -05:00
Shyotl
aca3e8f6c4 Cleanup. Removal of dead code. Added/renamed object flag accessors. 2012-08-04 18:18:22 -05:00
Shyotl
7122a7c174 Added sim console. 2012-08-04 13:43:32 -05:00
Drake Arconis
769a7b89d2 More Media Updates
Further updated llviewermedia
2012-08-03 23:14:03 -04:00
Shyotl
d2b13f515d Avoid several excessive per-frame LLView::getChildView calls by instead caching the results in postBuild. (Added CachedUICtrl, which is basically just a self-nulling pointer to not have to make ui ctors dirtier) 2012-08-03 20:51:53 -05:00
Shyotl
ef601d3345 Implemented a hash-map for first-level children of ui elements. First-level child lookups are prolificly abused on a per-frame basis, and a plain old loop with a string comparison each iteraton was somewhat of a hotspot. (The recursive loop after is even more expensive, however) 2012-08-03 13:20:26 -05:00
Shyotl
d9e5601e10 Manually vectorized some of the UI vertex operations. 2012-08-03 13:12:02 -05:00
Shyotl
c385133c84 Fixed noisemap not binding for the nightvision shader. 2012-08-03 13:10:16 -05:00
Damian Zhaoying
b91a670c05 some spanish language files fixes 2012-08-03 14:13:19 -03:00
Drake Arconis
c90c8e0f4b OpenID
Added support into client for openid
2012-08-03 11:32:36 -04:00
Damian Zhaoying
0a8cd6d03d Merge remote-tracking branch 'upstream/master' 2012-08-03 11:05:30 -03:00
Drake Arconis
af89351432 Cookies.
Enabled use of the cookie store.
2012-08-03 08:49:01 -04:00
Drake Arconis
fb81754880 STUPID TEMP FILES 2012-08-02 23:29:12 -04:00
Drake Arconis
dc5bfc1c41 Bit of cleanup
More cleanup and updates to llcommon
Removed legacy code and files
2012-08-02 23:19:07 -04:00
Aleric Inglewood
98c740f204 Remove debug output 2012-08-03 00:56:41 +02:00
Aleric Inglewood
255742db26 Merge branch 'curlthreading2' into breakforce 2012-08-03 00:54:12 +02:00
Aleric Inglewood
af4ceb0658 Crash on exit fix. 2012-08-03 00:53:54 +02:00
Aleric Inglewood
08d72b12ab Fix compilation on linux. Remove trailing ^M's 2012-08-02 23:03:03 +02:00
Aleric Inglewood
5fb4badb7c WIP 2012-08-02 22:34:23 +02:00
Siana Gearz
4650636e5a Use TCP socket pair instead of UDP 2012-08-02 22:33:01 +02:00
Lirusaito
2c65da3397 Make viewer_manifest.py smarter.
Use newlines as delimiter to avoid strange characters and spaces breaking xargs.
2012-08-02 15:50:20 -04:00
Lirusaito
abc1d185b7 Gemini keywords update. 2012-08-02 10:22:01 -04:00
Lirusaito
124eba4371 Merge branch 'AltCompilers' of https://github.com/LightDrake/SingularityViewer
Conflicts:
	indra/newview/skins/default/xui/en-us/strings.xml
2012-08-02 10:18:17 -04:00
Damian Zhaoying
a673496ed3 Update Spanish Translation, All files translated and up to date 2012-08-02 09:08:57 -03:00
Drake Arconis
af2a49afa7 Fixed linux64 libpng copying 2012-08-02 05:39:02 -04:00
Drake Arconis
b151796e0e Updated LSL Funtions
Updated the functions, constants, tooltips, etc for os,aa, and secondlife
2012-08-02 05:38:23 -04:00
Drake Arconis
828b2c9bc0 Merge remote-tracking branch 'shyotl/master' into AltCompilers 2012-08-01 21:41:36 -04:00
Lirusaito
be8b838334 Make new Posterize Effect fit in with the cleaned look of post-process floater. 2012-08-01 09:21:38 -04:00
Lirusaito
73fedf453c Compile fixies~ 2012-08-01 09:13:40 -04:00
Lirusaito
e03de192c8 Merge branch 'future' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/newview/llvovolume.cpp
2012-08-01 06:48:42 -04:00
Aleric Inglewood
725cdc2d69 Linux compile fixes 2012-07-31 23:04:45 +02:00
Siana Gearz
048c57cf0c Linktime fix 2012-07-31 22:40:20 +02:00
Siana Gearz
12dcbfbc79 Merge remote-tracking branch 'aleric/breakforce' into breakforce 2012-07-31 22:39:48 +02:00
Aleric Inglewood
32be05fa6c Compile warning fixes. Type fix (SLL -> SSL) 2012-07-31 22:37:49 +02:00
Aleric Inglewood
ae62b67554 Merge branch 'curlthreading2' into breakforce 2012-07-31 22:24:57 +02:00
Aleric Inglewood
29908533cd More work in progress 2012-07-31 22:23:52 +02:00
Siana Gearz
9c4f22d85b Attempt at fixing linker errors... 2012-07-31 21:30:05 +02:00
Siana Gearz
7f64668e55 Compile warning fix 2012-07-31 21:29:22 +02:00
Siana Gearz
0208942b84 Compile warning fix 2012-07-31 21:28:37 +02:00
Siana Gearz
783e86990c Compile fixes 2012-07-31 19:42:15 +02:00
Aleric Inglewood
cdefc0e384 Merge branch 'curlthreading2' into curlthreading3
Conflicts:
	indra/llmessage/llcurlrequest.cpp

Header file include changes collided. Fixed.
2012-07-31 17:46:07 +02:00
Lirusaito
1c9f996248 Make "Autorespond to people you have muted" an independent toggle for that type of autoresponse.
Trivial fix to carry users along, not needing to autorespond to anyone in order to autorespond to mutes.
I was working on a complete rewrite months ago, I have to dig that up, even still this system needs to be redone, ground up.
2012-07-31 03:37:10 -04:00
Aleric Inglewood
c9715c5b0b Print Dout() and DoutEntering() debug output on windows.
This is a bit of a hack currently and requires a
recompile with -DDEBUG_CURLIO.
2012-07-31 04:57:13 +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
Lirusaito
594dc64a43 Made Post-Process Settings floater far better looking 2012-07-30 11:03:20 -04:00
Lirusaito
1b69994ffa Respect graphics requirements for FBOs and Hardware Skinning in graphics preferences, properly. 2012-07-29 22:25:41 -04:00
Aleric Inglewood
3de21156b5 Windows code improvements and debugging.
Extended the DEBUG_WINDOWS_CODE_ON_LINUX hack to include ALL code.
memset-zero sockaddr_in, and use WSASocket as per suggestion of Shyotl.
2012-07-30 02:46:48 +02:00
Aleric Inglewood
ce2c6ab49e Don't crash when libcurl wasn't compiled with support for libz 2012-07-30 02:45:39 +02:00
Aleric Inglewood
d19c5a4a4a Move apr_os_thread_current_wrapper closer to where it's used, and fix a comment. 2012-07-30 02:44:51 +02:00
Aleric Inglewood
8945fe4857 Unbreak standalone install on 64bit linux 2012-07-30 01:47:27 +02:00
Aleric Inglewood
464919072d Use LLBufferArray instead of std::stringstream for CurlResponderBuffer::mInput
Note the changed code is never used yet.  CurlResponderBuffer::curlReadCallback
is only called when Request::post is being used, which is never used.
2012-07-29 22:52:20 +02:00
Siana Gearz
f8c2087d74 Preliminary Windows support for curlthreading 2012-07-29 22:47:19 +02:00
Siana Gearz
7adc0e24ab Merge branch 'curlthreading2' of git://github.com/AlericInglewood/SingularityViewer into curlthreading 2012-07-29 21:32:24 +02:00
Aleric Inglewood
ba65f29a72 Fix draining of wake up pipe.
This is a bug fix, although not one we'd ever run into as normally
there is always just one byte to read, never an EAGAIN and certainly
never more than 256 bytes. Anyway, also those cases should work now.
2012-07-29 21:12:45 +02:00
Aleric Inglewood
76eef6fe59 Avoid crash on exit. 2012-07-29 18:38:59 +02:00
Shyotl
1d1947c51a Reworked LLPostProcess and implemented FBO support (much faster if multiple post shaders are enabled, or need a lot of passes).
Tweaked LLRenderTarget to support depth textures if FBO support is lacking.
Prefer LLRenderTarget::getFBO() over LLRenderTarget::sUseFBO when determining how to handle a specific LLRenderTarget object. (Decoupling to simplify logic without having to track a global)
2012-07-29 04:28:11 -05:00
Aleric Inglewood
af4ac8fb5f WIP: work on rewriting LLURLRequest 2012-07-29 01:30:11 +02:00
Aleric Inglewood
adaf5cd69c Update of a few <edit> comments.
While comparing this function with v-d, I realized that
I editted these instances for Singularity, so I might
as well update the <edit> comments to be a bit more correct.
Not saying that there aren't other <edit> comments
still missing futher into the function.
2012-07-29 01:30:11 +02:00
Aleric Inglewood
516f5a40d0 Change mainloop to no longer use gIdleCallbacks 2012-07-29 01:30:11 +02:00
Aleric Inglewood
3b7887a041 Cleanup of some unnecessary dependencies. 2012-07-29 01:30:11 +02:00
Aleric Inglewood
fe38f59bbb Bug fix 2012-07-29 01:30:10 +02:00
Aleric Inglewood
cd93aba002 Created aistatemachine library and moved files. 2012-07-29 01:30:10 +02:00
Siana Gearz
2bcabce1d6 Merge branch 'curlthreading2' of git://github.com/AlericInglewood/SingularityViewer into curlthreading 2012-07-28 17:28:18 +02:00
Siana Gearz
6ed9a62501 Disable texture auditing at start-up 2012-07-28 16:56:19 +02:00
Lirusaito
b987c025db Update to notifications.xml, fix for Sound upload missing a string.
Notifications brought up to date from V-D, Tazy, and a few touchups of my own.
Added notification for status_SeeAVs from upstream, and hooked it into our icon.

Strings update from Tazy.
2012-07-28 07:49:04 -04:00
Lirusaito
27d8d100c5 Fix for log file name with datestamp checkbox on Comm Prefs Panel never enabling, and thus being intangible.
Also, enable local chat loggings by default.
2012-07-27 12:55:13 -04:00
Shyotl
701230b49c Added LLRenderTarget::resize and did a little cleanup. 2012-07-26 03:05:22 -05:00
Shyotl
726d8248c5 Trying alpha-face rebuild using LL's method. 2012-07-26 00:17:38 -05:00
Shyotl
07a2c5a81d Use glFramebufferTexture2D to detach textures from FBOs before said textures are 'deleted'(set to NULL via zeroing dimensions). May avoid odd LLImageGL::deleteTextures crash on some apple systems. 2012-07-25 23:12:26 -05:00
Shyotl
081ae32d35 Disable diagnostic fmodex stream allocation overrides. (will break on ogg streams. badly.) 2012-07-25 23:08:37 -05:00
Lirusaito
a7f02b3964 Migrate LLFloaterHardwareSettings into a tab in LLPanelDisplay
Still not translated, left the old translated floaters for easier translation.
New Hardware Tab is work in progress, it should be more populated in the future, but is fine for now.
2012-07-25 18:11:48 -04:00
Lirusaito
e116548b50 Allow more flexible perm controls, from item properties floater.
TODO: Bring these permission flexibilities into build floater's general tab.
2012-07-25 09:19:22 -04:00
Lirusaito
3190814265 Made AntiSpam better
AntiSpamNotify setting to turn off notifications, which seemed to become a new form of spam, otherwise.
Add tool_tips to UI explaining how to make the system less sensitive.
Made defaults for antispam a lot less sensitive, so users used to the old antispam defaults won't likely need to configure the new panel.
Pull in license from NaCl... (Why wasn't it already there, Ruby?!)
Fixed spaces being where tabs should be...
Added in selective Dialog disabling, instead of just all, nice little feature in itself.
Potentially fixed a bug where sounds would be blocked when they shouldn't be... but, if this still happens, I'll put in a debug setting to disable sound antispam.
2012-07-25 09:03:41 -04:00
Shyotl
eeea2b4de4 Don't batch faces that are animating, ever (hopefully). Should fix texture animations breaking when rendermaxtextureindex > 1 2012-07-24 20:18:35 -05:00
Shyotl
21f6174846 Use glFramebufferTexture2D to detach textures from FBOs before said textures are 'deleted'(set to NULL via zeroing dimensions). May avoid odd LLImageGL::deleteTextures crash on some apple systems. 2012-07-24 11:27:23 -05:00
Aleric Inglewood
ed4c6b7c92 Removed dead code.
This code has been in the viewer source for a long time,
and hasn't been used for a long time (furtherest back that
I checked was Snowglobe 1.4).

Most notably, this removes LLContextURLExtractor and code
that used it because that required an API where AICurlEasyHandle
is created before an url is known, which gets in the way of
reusing connections.
2012-07-23 18:15:11 +02:00
Siana Gearz
89be317a00 Fix measurement tool 2012-07-23 14:18:45 +02:00
Siana Gearz
1ad4597d7a Fix alpha flicker when Show Updates is enabled 2012-07-23 12:00:33 +02:00
Siana Gearz
c65b659538 Dirty potential mesh crash fix 2012-07-23 10:50:05 +02:00
Siana Gearz
3c23163a29 Less intrusive notifications, by Tazy Scientist 2012-07-23 09:54:00 +02:00
Siana Gearz
c3900ee4f3 Merge branch 'AltCompilers' of git://github.com/LightDrake/SingularityViewer
Conflicts:
	indra/newview/llvieweraudio.cpp
2012-07-23 09:03:17 +02:00
Siana Gearz
9c5da9e42c Build fixes VC10 2012-07-23 08:13:13 +02:00
Drake Arconis
efa970c6a5 Uhm..
This fixes a build issue temp till can rebuild QT...*sigh*
2012-07-22 23:41:09 -04:00
Siana Gearz
179f04739d Merge commit 'c7bdaf66329b018159c834d75fcc3d807b188ccb' 2012-07-23 05:10:56 +02:00
Siana Gearz
b2f513caae Safer settings, EOL fix 2012-07-23 04:02:20 +02:00
Siana Gearz
9c1e74b0c0 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/llaudio/llstreamingaudio_fmodex.cpp
	indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
2012-07-23 03:04:33 +02:00
Siana Gearz
e53af58d4a Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2012-07-22 23:31:19 +02:00
Siana Gearz
d9cb2ce6c7 Looks like a bit of edit crash fix got missed, thx Drake 2012-07-22 23:30:41 +02:00
Siana Gearz
a967f2b037 Updated 'Show Updates' 2012-07-22 22:36:40 +02:00
Siana Gearz
db5a7578c9 Crash fix copy texture params 2012-07-22 21:44:41 +02:00
Siana Gearz
15086833a3 Random stab in the dark coming right up! 2012-07-22 11:26:36 +02:00
Aleric Inglewood
785729abdf Merge branch 'master' into curlthreading2 2012-07-22 04:17:34 +02:00
Shyotl
32f407340f Call LLImageGL::initClass to avoid crash when calling LLFeatureManager::applyRecommendedSettings. (texauditing vectors must be allocated) 2012-07-21 21:16:41 -05: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
Aleric Inglewood
fb38f6adea Always write curl I/O debug info for the login attempt. 2012-07-21 21:51:24 +02:00
Shyotl
a1e714dce7 mDeferredVB only needs allocated when rendering in deferred mode. mCubeVB only needs allocated when occlusion is working. Let them be lazy-allocated on an as-needed basis. 2012-07-21 03:43:30 -05:00
Shyotl
3710ea903e Enable texture auditing categories, also fixed potential buffer underread related to auditing. 2012-07-21 03:27:43 -05:00
Drake Arconis
72a9b6b7fe Corrected issues
Corrected issue noted in media_plugin_webkit by Aleric.
Grr.
2012-07-21 03:23:02 -04:00
Drake Arconis
0d3fab40e5 Further header cleanup and a few updates
Updated llstring to current linden
Further linden_common cleanup
Header cleanup
Raised banlines to 5000 as per linden server change
Included missing llmediaentry.cpp file
Minor whitespace changes here and there
2012-07-21 03:01:42 -04:00
Aleric Inglewood
3a30f1dc71 This is called when LLApp::sStatus == LLApp::APP_STATUS_STOPPED too. 2012-07-21 03:57:58 +02:00
Shyotl
95abf3dca3 Merge branch 'master' into future 2012-07-20 12:12:07 -05:00
Shyotl
4e4d554ea4 Silence the diagnostic llinfos spam when listening to a stream. 2012-07-20 12:11:30 -05:00
Shyotl
9642780bb8 Merge branch 'master' into future
Conflicts:
	indra/llaudio/llstreamingaudio_fmodex.cpp
	indra/llaudio/llstreamingaudio_fmodex.h
2012-07-20 12:07:10 -05:00
Shyotl
73bc656e63 Flexis were not being reliably initialized before being drawn. 2012-07-20 12:04:24 -05:00
Shyotl
b8b235df09 And suddeny the texture index attrib(for batching) is now an integer! (Changing switch to an if block on nividia hardware seems like the real solution to pink textures... not the index datatype) 2012-07-20 12:03:41 -05:00
Shyotl
7b23aece00 Missed a couple LLCullResult::drawable_list_t -> LLCullResult::drawable_iterator replacements, albeit in #if'd out code blocks. 2012-07-20 11:37:01 -05:00
Shyotl
531af998fb MAINT-775: Fix for particle index pool corruption on teleport. (And removed alternative workaround) https://bitbucket.org/davep/viewer-development/changeset/04fdf7945708 2012-07-20 11:29:11 -05:00
Lirusaito
c7bdaf6632 Merge branch 'AltCompilers' of https://github.com/LightDrake/SingularityViewer 2012-07-20 10:50:40 -04:00
Lirusaito
92c7792e95 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml - Resolved to the eye's pleasure.
2012-07-20 10:41:25 -04:00
Shyotl
c9e0a6c533 MAINT-1270: Fix for some flexi prims becoming flat at some LoDs. https://bitbucket.org/davep/viewer-development/changeset/47f0d08ba7ad 2012-07-20 08:55:02 -05:00
Shyotl
6331267df6 MAINT-646: Optimize LLVolumeImplFlexible::doIdleUpdate() https://bitbucket.org/davep/viewer-development/changeset/b0148737d316 2012-07-20 08:54:25 -05:00
Drake Arconis
1e81966b89 Clean up and updates
Cleaned up header bloatyness in linden_common
Moved around things to be in line with Linden Lab
Updated llinitparam and imported its new dependencies
Removed dohexeditor and related files
Removed unused legacy files

             /\_..._/\
             |/ \_/ \|
             | o.-.o |
             \ ( O ) /
             /'--U--'\
             |  .:.  | /\
             | /:;:\ |` /
   Drake     | |:;:| |-'
  Arconis   /  |'-'|  \
            `""`   `""`
2012-07-20 08:13:07 -04:00
Shyotl
b785b9d219 Added 'Transparent Water' checkbox to graphics panel, as we actually have space for it now. 2012-07-20 05:15:47 -05:00
Shyotl
85da7163a7 Changing the rolloff settings now immediately apply (with fmodex). Also added AudioLevelUnderwaterRolloff now that the underwater rolloff 3d setting doesnt immediately get clobbered. Also, divvied up sound channels into channelgroups if using the fmod profiler, so it actually has useful info to show now. 2012-07-20 04:00:02 -05:00
Lirusaito
f3f8bee83b Remove old spam stuffs, Clean up new spam stuffs to compile, UI new spam stuffs. 2012-07-19 23:40:07 -04:00
Siana Gearz
8802d5033f Merge branch 'master' into curlthreading
Conflicts:
	indra/newview/viewer_manifest.py
2012-07-20 00:37:58 +02:00
Siana Gearz
3d39564605 Merge branch 'curlthreading2' of git://github.com/AlericInglewood/SingularityViewer into curlthreading 2012-07-20 00:35:43 +02:00
Drake Arconis
7843f51110 Merge remote-tracking branch 'singu/master' into AltCompilers 2012-07-19 17:51:18 -04:00
Drake Arconis
8bfdc98ef4 Improvements!
Fixed Boost library to not throw warnings
Changed PNG cmake slightly
Updated 32lib package for correct locations
Cleaned up flags a bit for linux64
2012-07-19 17:44:19 -04:00
Ruby
6673c89791 Add Antispam code from NaCl (Chalice Yao)
Amended by: Lirusaito <inusaito@gmail.com>
2012-07-19 16:36:39 -04:00
Siana Gearz
a8a30ae3b9 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2012-07-19 22:19:52 +02:00
Lirusaito
15af410e6f Fix typo in outbox icon name, when closed. 2012-07-19 14:02:11 -04:00
Aleric Inglewood
9e5cbf330f Bug fix for windows code found with previous commit. 2012-07-19 17:28:45 +02:00
Aleric Inglewood
2fa9334090 Debug code to test the windows code path on linux 2012-07-19 17:27:37 +02:00
Aleric Inglewood
fcdf5d377e Move PollSet out of the header file 2012-07-19 17:26:02 +02:00
Shyotl
756a284048 Don't ever halt stalled fmodex streams, as they don't seem to truly 'stall'. Decrease delay between leaving starvation and unmuting down to 1 second (from 5). 2012-07-19 02:32:16 -05:00
Lirusaito
32e2b584b9 Translation Fix 2012-07-19 02:12:51 -04:00
Lirusaito
add52b4d57 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2012-07-18 23:41:23 -04:00
Siana Gearz
a4d2cb3d12 Some fighting with Shyotl over FMOD Ex 2012-07-19 05:35:17 +02:00
Lirusaito
72fbb3f63e Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2012-07-18 22:58:52 -04:00
Siana Gearz
c62290accb Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2012-07-19 04:46:15 +02:00
Siana Gearz
8ad40c5d66 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/llaudio/llaudioengine_fmodex.cpp
2012-07-19 04:44:01 +02:00
Lirusaito
cd5a721c23 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2012-07-18 22:31:53 -04:00
Shyotl
643844c01d GCC being GCC-ey. Fix a couple errors and warnings 2012-07-18 21:27:46 -05:00
Shyotl
1a3c9ac5ef GCC being GCC-ey. Fix a couple errors and warnings 2012-07-18 21:27:02 -05:00
Lirusaito
c84f080fc8 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2012-07-18 22:08:06 -04:00
Shyotl
5fcdbfdd9e FMODEx diagnostics.
SHFMODExStreamBufferSize added. Determines stream buffer size in ms. (stream restart required)
SHFMODExDecodeBufferSize added. Determines decode buffer size in ms. (stream restart required)
Streams will mute themselves if they are starving, until they are free of starvation for 5 full seconds.
Streams that fail to accumulate any buffer progress while starving for 10 full updates will be stopped.
Stream buffer progress(buffer percent) is llinfos spewed every update. (temporary)
Doubled default stream buffer size
Increased default decode buffer size to 1000ms (from 400)
Temporarily using FMOD::Memory_Initialize to display raw stream/decode buffer sizes via llinfos.
Added llwarns messages for SigmaTel hardware or bad audio acceleration configuration.
2012-07-18 21:05:24 -05:00
Shyotl
77dca2ddb2 FMODEx diagnostics.
SHFMODExStreamBufferSize added. Determines stream buffer size in ms. (stream restart required)
SHFMODExDecodeBufferSize added. Determines decode buffer size in ms. (stream restart required)
Streams will mute themselves if they are starving, until they are free of starvation for 5 full seconds.
Streams that fail to accumulate any buffer progress while starving for 10 full updates will be stopped.
Stream buffer progress(buffer percent) is llinfos spewed every update. (temporary)
Doubled default stream buffer size
Increased default decode buffer size to 1000ms (from 400)
Temporarily using FMOD::Memory_Initialize to display raw stream/decode buffer sizes via llinfos.
Added llwarns messages for SigmaTel hardware or bad audio acceleration configuration.
2012-07-18 21:04:21 -05:00
Shyotl
d8fc691625 MAINT-646: Hotspot in LLViewerObjectList::update 2012-07-18 20:26:43 -05:00
Siana Gearz
96fa4af939 Initialize FMOD Ex with 44100 Hz, like FMOD 2012-07-19 03:26:02 +02:00
Siana Gearz
2334793554 Build SLPLugin.exe without tcmalloc, for SkyDrive 2012-07-19 03:24:44 +02:00
Lirusaito
20e445b4be Added icons for folders from phoenix, and created outbox folder icon for future use. 2012-07-18 20:26:19 -04:00
Aleric Inglewood
051263117d Don't force TLS v1 unless needed and then warn about it. 2012-07-19 00:13:43 +02:00
Lirusaito
085db93fc8 menu_inventory.xml translations update.
Brought the French up to date, translations on my own..
Brought the Spanish up to standard.
2012-07-18 16:04:12 -04:00
Damian Zhaoying
8fe6925414 New Spanish Translations 2012-07-18 15:30:03 -03:00
Damian Zhaoying
57ad7e62d2 Merge remote-tracking branch 'upstream/master' 2012-07-18 08:57:45 -03:00
Shyotl
6736e91ce0 MAINT-1147: Don't rebuild volume meshes on region crossing. https://bitbucket.org/davep/viewer-development/changeset/0f20bb7cb9ee 2012-07-18 03:09:16 -05:00
Shyotl
4cbdb7897d MAINT-646: Knock out some extraneous performance timers. https://bitbucket.org/davep/viewer-development/changeset/71673401390a 2012-07-18 03:08:47 -05:00
Shyotl
d57d0ceb0d MAINT-646: Vectorize LLPolyMesh https://bitbucket.org/davep/viewer-development/changeset/668dcacd6e76 2012-07-18 03:04:12 -05:00
Lirusaito
03608103b8 Tiny French Translation update
~Thanks Nomade~
2012-07-18 03:57:07 -04:00
Shyotl
9c58d42a3c MAINT-646: Don't spend so much time fetching avatar physics params. https://bitbucket.org/davep/viewer-development/changeset/b895285ab0de 2012-07-18 02:40:41 -05:00
Damian Zhaoying
675d171104 Merge remote-tracking branch 'upstream/master' 2012-07-18 03:16:39 -03:00
Shyotl
bf3e605d3b MAINT-646: Factor std::vector out of lloctree https://bitbucket.org/davep/viewer-development/changeset/efcec3eb374f 2012-07-18 01:03:54 -05:00
Shyotl
a56ad597d4 MAINT-646: Factor std::set out of lloctree https://bitbucket.org/davep/viewer-development/changeset/52b6c9168974 2012-07-18 00:54:52 -05:00
Shyotl
cc5ffafd7c MAINT-646: Add a lookup map for joints to remove hotspot in LLJoint::findJoint https://bitbucket.org/davep/viewer-development/changeset/15b05dc53770 2012-07-17 23:54:10 -05:00
Shyotl
b101bb0001 MAINT-646: Faster traversal of render batch lists. https://bitbucket.org/davep/viewer-development/changeset/38b7779af5f9 2012-07-17 23:38:34 -05:00
Lirusaito
405af67f45 Merge branch 'AltCompilers' 2012-07-17 22:30:48 -04:00
Aleric Inglewood
f772cbee51 Don't crash upon exit if we fail to cleanup. 2012-07-18 03:13:33 +02:00
Shyotl
72d93b8723 Merge branch 'V2MultiWear' 2012-07-17 19:46:56 -05: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
Aleric Inglewood
706b9c55c2 Moving stuff around a bit... 2012-07-18 01:41:36 +02:00
Shyotl
48ae0d003d Made the Visual Studio compiler a bit more happy with aicurl. 2012-07-17 18:04:48 -05:00
Damian Zhaoying
51c5933b76 Merge remote-tracking branch 'upstream/master' 2012-07-17 19:49:33 -03:00
Aleric Inglewood
0204d09a89 If curl thread is already awake, then don't write something to the pipe. 2012-07-17 23:39:44 +02:00
Lirusaito
465c6b9ed6 Bring back ASCENDED_DEVELOPER, and give it extra meaning! 2012-07-17 16:42:43 -04:00
Drake Arconis
39847c4688 Merge remote-tracking branch 'liruhub/master' into AltCompilers 2012-07-17 16:08:10 -04: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
Aleric Inglewood
648ed00ce2 Don't call gSavedSettings.getU32() and calc_clock_frequency() so often anymore. 2012-07-17 19:58:34 +02:00
Aleric Inglewood
87c9358813 Add back erroneously removed comments. 2012-07-17 19:33:12 +02:00
Aleric Inglewood
64b968b262 process is no longer processing 2012-07-17 19:27:14 +02:00
Lirusaito
c0fbf4bf55 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2012-07-17 12:17:32 -04:00
Aleric Inglewood
900e533b4b Remove unused call to process(). 2012-07-17 08:01:06 +02:00
Damian Zhaoying
01818582cf Merge remote-tracking branch 'upstream/master' 2012-07-16 21:07:25 -03:00
Lirusaito
9a0620f140 Add Voodoo to tags. 2012-07-16 19:33:44 -04:00
Drake Arconis
0216925e05 Merge remote-tracking branch 'siana/master' into AltCompilers 2012-07-16 17:20:57 -04:00
Drake Arconis
32b24a98ca Merge remote-tracking branch 'shyotl/V2MultiWear' into AltCompilers 2012-07-16 17:20:47 -04:00
Drake Arconis
93d7a4938a Merge remote-tracking branch 'liru/master' into AltCompilers 2012-07-16 17:19:58 -04:00
Drake Arconis
56265b78ec Merge remote-tracking branch 'liru/V2MultiWear' into AltCompilers 2012-07-16 17:19:45 -04:00
Lirusaito
6ee76aa6f7 Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-07-16 17:11:44 -04:00
Lirusaito
32d6aefe00 Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer 2012-07-16 17:10:01 -04:00
Lirusaito
84795863e5 Translations updated
Updated French Translation from Nomade's Zip for MultiWear.
Updated Translations to use basically the same format, and not have some cruft.
Abouts updated to include Spanish translators: Damian Zhaoying, and Franxizco Romano.
2012-07-16 17:07:22 -04:00
Aleric Inglewood
9deb3e433c LLCurlRequest time out fixes.
Also some more cleanup on exit improvements.
2012-07-16 22:35:04 +02:00
Drake Arconis
92a5b14347 Linux64 libs and fixes 2012-07-16 16:10:15 -04:00
Siana Gearz
891a330955 Version 1.7.0 2012-07-16 12:19:22 +02:00
Shyotl
3cee90fe8b Lets not call glDeleteTextures any more, since the glGenTextures/glDeleteTextures paradigm has gone away. 2012-07-16 01:00:55 -05:00
Drake Arconis
2bb58bac2e Corrected annoyance and inconsistencies for OSX 2012-07-15 23:32:12 -04:00
Damian Zhaoying
9dc1897b35 Fix English Inventory UI To translate other languages 2012-07-15 23:56:58 -03:00
Drake Arconis
7a7da24df5 Merge remote-tracking branch 'shyotl/V2MultiWear' into AltCompilers 2012-07-15 22:22:01 -04:00
Shyotl
46f7250f08 Fixup multisample rbos. Samplecount validation all done in LLMultisampleBuffer::allocate, and falls back to non-multisample safely if multisampled rbos cannot/shouldn't be used. 2012-07-15 21:12:31 -05:00
Drake Arconis
58bfe23e5a Merge remote-tracking branch 'shyotl/V2MultiWear' into AltCompilers 2012-07-15 17:46:51 -04:00
Drake Arconis
ccb914ea83 General cleanup of OSX support - not done
Updated with new cursors from LL
Corrected mispackaged OSX Libs
Corrected mouse flicker on menus

Signed-off-by: Drake Arconis <lightdrake@gmail.com>
2012-07-15 17:45:50 -04:00
Shyotl
10fe67f4a6 FBO tweaks. Release multisample fbo in LLPipeline::releaseScreenBuffers, and fixed LLRenderBuffer::mInternalFormat falling out of sync with LLRenderBuffer::mTex. 2012-07-15 16:41:31 -05:00
Aleric Inglewood
a34247ebf4 Bug fix.
Don't test on something that belongs in an assert.
is_main_thread() doesn't even exist unless --type=Debug.
2012-07-15 23:08:07 +02:00
Aleric Inglewood
53e96b02c0 Bug fix. Forgot to actually make it virtual. 2012-07-15 22:59:29 +02:00
Aleric Inglewood
7c022d6061 Don't crash on exit.
When a new state machine was just created, so run() had already
been called but it never did really run yet so running() would
return false; then abort() wasn't called in flush(), causing
the subsequent mainloop call to actually try and startup the
state machine, which then crashed because Debug Settings
mechanism is already destroyed at that point (and in general,
we really don't want anything to run: it does unpredictable
things).

With this fix, also state machines that were just created are
aborted, resulting actuall in a kill without delete, and subsequently
a clean delete from the mainloop.
2012-07-15 22:51:14 +02:00
Aleric Inglewood
14e5b46687 Fixed and adjusted remainders of isValid() code.
Note that in the code, and still, has_curl_request was always false.
However, instead of deleting all code paths that are only executed
when has_curl_request would be true, I fixed the code to work as
intended with my current implementation; which also results in
LLCurlRequests to never expire. This way things won't break
unexpectedly when this ever changes.

Since on this branch isValid was only called still (the rest was
removed already) to check if the curl download expired, I took
the liberty to rename isValid to hasNotExpired.
2012-07-15 22:46:38 +02:00
Lirusaito
0243c61ea1 Spanish Translation is complete, add it to the completed combo_box area, and keep to alphabetical order. 2012-07-15 15:23:53 -04:00
Lirusaito
d73d4e9d48 Merge branch 'master' of git://github.com/TighMacFanatic/SingularityViewer 2012-07-15 15:10:40 -04:00
Lirusaito
3d60d9e3c5 Merge branch 'V2MultiWear' of https://github.com/DamianZhaoying/SingularityViewer 2012-07-15 15:10:09 -04:00
TighMacFanatic
329b708aaf Fix History button in IM panel not working for non-Windows users. 2012-07-15 15:07:05 -04:00
Lirusaito
59e0367dd4 Merge branch 'master' of git://github.com/TighMacFanatic/SingularityViewer 2012-07-15 14:52:46 -04:00
TighMacFanatic
56c85813ee Fix History button on local chat not working for non-Windows users. 2012-07-15 14:25:10 -04:00
Aleric Inglewood
a6bb2604f6 Use our API, which makes more sense. 2012-07-15 16:58:47 +02:00
Aleric Inglewood
b2c71c099f Fixed typo in comment 2012-07-15 16:57:47 +02:00
Drake Arconis
102eca7d65 Merge remote-tracking branch 'siana/master' into AltCompilers 2012-07-15 10:37:06 -04:00
Lirusaito
55a1d54b8e Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-07-15 09:56:04 -04:00
TighMacFanatic
0c313807ff Merge branch 'master' of https://github.com/siana/SingularityViewer 2012-07-15 05:56:19 -04:00
Siana Gearz
d5e685aaf2 Merge branch 'V2MultiWear' of https://github.com/Shyotl/SingularityViewer 2012-07-15 09:44:17 +02:00
TighMacFanatic
214fc0419d Merge branch 'V2MultiWear' of https://github.com/Shyotl/SingularityViewer 2012-07-15 00:01:53 -04:00
Lirusaito
1e24b889dd Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer 2012-07-14 21:47:43 -04:00
Shyotl
08dd79fafd Recent occlusion changes rearing their head again. Fix a crash when graphics set to low. 2012-07-14 20:42:47 -05:00
Lirusaito
988e2c3fdf Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer 2012-07-14 20:47:27 -04:00
Lirusaito
92dc20850d Added Terrain Scale ComboBox to graphics preferences panel.
Fixed up feature tables to use correct names, and to use the 7 for high TerrainScale.
2012-07-14 20:45:59 -04:00
Shyotl
fa9c366076 Fixed alpha textures not entering the alpha pool an alternative way. 2012-07-14 19:45:11 -05:00
Shyotl
08ab36a5d9 mPendingInventoryItemsIDs wasn't having entries removed. 2012-07-14 19:44:06 -05:00
Siana Gearz
c1c04b489c Revert "Possible fix for "No able to connect to SecondLife""
This reverts commit 66c95af093.
2012-07-15 02:29:00 +02:00
Siana Gearz
0caa321fe5 Merge branch 'V2MultiWear' of git://github.com/AlericInglewood/SingularityViewer 2012-07-14 22:02:06 +02:00
Lirusaito
3acaf773b8 Merge branch 'AltCompilers' of https://bitbucket.org/LightDrake/singularityviewer 2012-07-14 16:01:06 -04:00
Lirusaito
5080746fa0 Prevent build preferences from altering objects we've duplicated. Offer an off switch for build prefs.
Added LiruEnableBuildPrefs, for turning off, when users do not want to use their default build parameters for a few prims, but don't wish to reset them permanently.
    This should perhaps end up on the build floater somewhere... but for now, debug only.
Note some of this fix for duplication may be overly cautious, but better safe than sorry.
Added a check for physical default in during creation, so that building at great distances adheres a bit more to build preferences.
Added IsCOA into the build settings, since I'd forgotten, previously.
2012-07-14 15:54:36 -04:00
Aleric Inglewood
66c95af093 Possible fix for "No able to connect to SecondLife" 2012-07-14 20:57:55 +02:00
Aleric Inglewood
9241816a71 Include linden_common.h first. Needed for libcwd. 2012-07-14 20:04:55 +02:00
Drake Arconis
07e1f0e802 Added a terrain texture scale changer thing!
Need someone to add UI bits though >.<
2012-07-14 05:04:10 -04:00
Drake Arconis
340f8f1f17 MORE WINDLIGHTS! 2012-07-14 05:02:44 -04:00
Drake Arconis
0316b7ff9a OSX libwork
Started on osx libwork will need darwin builder to test
2012-07-14 04:10:09 -04:00
Aleric Inglewood
7416d2aaf1 Timer, time out, and clean up improvements. 2012-07-14 04:29:37 +02:00
Siana Gearz
cb61342e58 Merge branch 'V2MultiWear' of https://github.com/Shyotl/SingularityViewer 2012-07-13 13:45:02 +02:00
Siana Gearz
d99de40b2b Suppress error prevalent on OSGrid 2012-07-13 13:44:46 +02:00
Lirusaito
533675416c Merge branch 'V2MultiWear'
Conflicts:
	indra/newview/app_settings/settings.xml - Removed SinguMuteGestures, since it's EnableGestureSounds now.
		~removed in llviewermessage.cpp as well.
2012-07-13 05:44:38 -04:00
Damian Zhaoying
8baceee06c Add Spanish Translation 2012-07-13 06:23:37 -03:00
Lirusaito
f7bf5c33bc Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer into V2MultiWear 2012-07-12 17:43:53 -04:00
Shyotl
f8445030c7 Avoid making duplicate copies in item inventory when no-mod texture is dragged onto faces. 2012-07-12 16:33:05 -05:00
Shyotl
1d60131df7 Avoid switch statement in shaders on nvidia hardware, since some driver versions don't behave properly, apparently.. 2012-07-12 16:25:27 -05:00
Shyotl
539b6410fa Brought back the inventory item count display after loading has completed. 2012-07-12 16:09:42 -05:00
Lirusaito
75f067d5c9 Added crossfade checkbox to Windlight remote panel. 2012-07-12 13:35:56 -04:00
Lirusaito
518e9b7513 Merge branch 'master' of git://github.com/siana/SingularityViewer into V2MultiWear 2012-07-12 12:40:41 -04:00
Siana Gearz
0314bb4d38 Apparently Laika Tungsten's name is nhede Core 2012-07-12 18:34:49 +02:00
Siana Gearz
ddfe004204 Restore function of day cycle editor 2012-07-12 18:33:10 +02:00
Siana Gearz
07375e7a39 Merge branch 'V2MultiWear' of https://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/llrender/llvertexbuffer.h
2012-07-12 08:30:35 +02:00
Lirusaito
44b69f3d3e Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer into V2MultiWear
Conflicts:
	indra/llrender/llvertexbuffer.h Chose Shyotl's.
2012-07-11 23:23:31 -04:00
Shyotl
bca4cf8584 Revert LLs recent VBO alterations, as they aren't proving to be all that great.. 2012-07-11 17:13:37 -05:00
Shyotl
4f3f503953 Recreate mDeferredVB on vertexbuffer reset.
Shuffled some code from LLVOPartGroup::restoreGL() to LLVOPartGroup::destroyGL(), as it makes more sense there.
Bind the correct shader in wireframe..
glLineStipple call managed to sneak into no-fixed-function mode.
LLViewerWindow::initFonts was called frequently and redundantly during destroygl->restoregl transition.
2012-07-11 17:12:40 -05:00
Lirusaito
1df635a164 Merge branch 'master' of git://github.com/siana/SingularityViewer into V2MultiWear 2012-07-11 12:44:41 -04:00
Siana Gearz
f3ae5789be Fix mute in voice 2012-07-11 18:43:31 +02:00
Lirusaito
cf7cd21474 Merge branch 'master' of git://github.com/siana/SingularityViewer into V2MultiWear 2012-07-11 12:37:37 -04:00
Lirusaito
0f8fbcfcc1 Disallow the user from self-muting and remove them from the mutelist if this was the case.
Works around other viewers allowing the user to mute themself.
2012-07-11 10:47:40 -04:00
Siana Gearz
a1f9109392 Don't try to HTTP inventory fetch when we can't 2012-07-11 14:54:20 +02:00
Siana Gearz
c648be6410 Merge branch 'AltCompilers' of bitbucket.org:LightDrake/singularityviewer 2012-07-11 07:38:58 +02:00
Lirusaito
6fa0b668ba Merge branch 'master' of git://github.com/TighMacFanatic/SingularityViewer into V2MultiWear 2012-07-10 19:51:45 -04:00
TighMacFanatic
1925b24512 Fix "Enable highlighting of selected prims" so it actually does something. 2012-07-10 19:48:11 -04:00
Drake Arconis
1101b4075a Merge remote-tracking branch 'siana/master' into AltCompilers 2012-07-10 14:16:24 -04: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
Drake Arconis
bcefad1a97 Massive windlight preset cleanup and updates
Cleaned up all duplicate windlight presets
Renamed windlight presets under correct current prefixes
Imported new presets from FS and Alchemy
2012-07-10 14:14:31 -04:00
Siana Gearz
fe65e19b67 Fix wind on multichannel systems 2012-07-10 15:08:20 +02:00
Siana Gearz
1b6ef97f45 Windows build fix 2012-07-10 14:55:16 +02:00
Siana Gearz
ce0e0a2d38 Fix editing artifact from about floater fudging 2012-07-10 14:17:18 +02:00
Siana Gearz
e7aeffc271 Our trusty perftools 2012-07-10 14:11:02 +02:00
Lirusaito
648766ad44 Merge branch 'master' of git://github.com/siana/SingularityViewer into V2MultiWear 2012-07-10 03:40:09 -04:00
Lirusaito
176c91097a Renamed DisableWindAudio to MuteWind and made it actually work
This will give Windows(only?) users experiencing the problem with wind sound corruption a way out.
2012-07-10 00:52:02 -04:00
Siana Gearz
515b1488c6 Bumping the cache version 2012-07-10 06:14:07 +02:00
Siana Gearz
6868e2f7c1 Merge branch 'V2MultiWear' of https://github.com/Shyotl/SingularityViewer 2012-07-10 06:07:56 +02:00
Siana Gearz
c71c7ca7cc Make defaults less rude to others 2012-07-10 05:50:47 +02:00
Siana Gearz
2f743fe2ce About floater fixup, new contributors! 2012-07-10 05:36:07 +02:00
Siana Gearz
b19c284eb7 Make void water subdivision tunable 2012-07-10 05:34:50 +02:00
Aleric Inglewood
0419f8bee9 Add an AITimer to AICurlEasyRequestStateMachine.
Fixes AIStateMachine to work thread-safe with the timer.
2012-07-10 05:09:08 +02:00
Siana Gearz
18638cd47c Fix assertion on shutdown if haven't logged in 2012-07-10 00:55:26 +02:00
Lirusaito
23e6c9c9e8 Revert "One more DARWIN fix."
This reverts commit 6581cb2929.
2012-07-09 18:49:27 -04:00
Lirusaito
fa9c48a376 Merge branch 'AltCompilers' of https://bitbucket.org/LightDrake/singularityviewer into V2MultiWear
Conflicts:
	indra/cmake/00-Common.cmake
2012-07-09 18:45:00 -04:00
Drake Arconis
a67fe755cd Fixed line endings
Fixed the line endings of the windlight files to unix
2012-07-09 12:32:34 -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
Lirusaito
80e44fe414 Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer into V2MultiWear 2012-07-08 20:05:17 -04:00
Shyotl
42c7a30280 Attempt to dodge some known vbo issues (VAO quriks, and VBO mapping being wonky). Will investigate the issues further, soon. 2012-07-08 19:04:33 -05:00
Shyotl
e9ec04a449 Added french translations for several recently added LLTrans string lookups. 2012-07-08 18:45:05 -05:00
Drake Arconis
f7d9cd1b8e Fixed jsoncpp 2012-07-08 19:33:44 -04:00
Drake Arconis
5cc687f5dc Merge remote-tracking branch 'siana/master' into AltCompilers 2012-07-08 19:11:04 -04:00
Siana Gearz
e7f8206c96 Merge branch 'AltCompilers' 2012-07-09 00:22:44 +02:00
Lirusaito
6581cb2929 One more DARWIN fix.
Credit to LightDrake and Apelsin
2012-07-08 17:57:06 -04:00
Lirusaito
b8f7e193d6 Merge branch 'V2MultiWear' of git://github.com/Shyotl/SingularityViewer into V2MultiWear 2012-07-08 17:10:44 -04:00
Shyotl
95b0421074 Inviting avatar to group via profile now adds that avatar to subsequent group invitation popup more reliably. 2012-07-08 16:09:10 -05:00
Lirusaito
1228732432 Fix for compile error caused by compiler type not being defined on DARWIN.
and stop compiling dsa/dhparam, we don't use these.
2012-07-08 17:08:11 -04:00
Lirusaito
191787e5c3 Merge branch 'V2MultiWear' of git://github.com/siana/SingularityViewer into V2MultiWear 2012-07-08 11:28:47 -04:00
Lirusaito
ca07daebc7 Merge branch 'V2MultiWear' of git://github.com/AlericInglewood/SingularityViewer into V2MultiWear 2012-07-08 11:28:31 -04:00
Lirusaito
8ec8acf610 Added Build preferences, like Emerald's. Exposed UI for giving an item with autoresponse
Pulled LLDropTarget into its own files and brought in the callback version so we can use either, whereever we need them, without rewriting them.
This makes code for drag and drop items into boxes easier.

--------Auto-Response--------
Added item box to Adv. Chat, finally you can send autoresponse with item!
Taught to LLViewerMessage to understand this.

------------Build------------
Added in comment labels for more sections of system preferences.
Everything new in the System->Build tab will reset on cancel, except the item, I see no reason to reset an item.
Added in BuildPrefs, and settings like them.
Taught LLToolPlacer how to give creations material type, and size, and ask importtracker to do the rest.
LLViewerObjectList now pings importtracker whenever it notices newly created objects that are ours entirely, so we can exact our will upon them.
Cleaned up most of importtracker code so we can use only the parts we need, and do it well.
Added ObjectPhysicsProperties to message.xml
2012-07-08 11:20:56 -04: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
Siana Gearz
81123a80f2 Merge branch 'AltCompilers' of bitbucket.org:LightDrake/singularityviewer into AltCompilers 2012-07-08 03:34:20 +02:00
Siana Gearz
045caad8f5 Revert "REVERT! Fix for media update commit."
This reverts commit 36a95ec36e.
2012-07-08 03:33:05 +02:00
Siana Gearz
a76a77a330 Merge branch 'V2MultiWear' into AltCompilers 2012-07-08 00:51:29 +02:00
Siana Gearz
36a95ec36e REVERT! Fix for media update commit. 2012-07-08 00:31:18 +02:00
Aleric Inglewood
744563a150 Use a newer libcurl version for linux. 2012-07-07 23:22:48 +02:00
Aleric Inglewood
389074d1e9 Fail at configure time when openGL is not found 2012-07-07 23:17:22 +02:00
Aleric Inglewood
93778eccbb Compile fix for g++ 4.7 2012-07-07 18:29:55 +02:00
Aleric Inglewood
5637e89568 Fix for libcwd that is already in curlthreading2. 2012-07-07 14:49:37 +02:00
Drake Arconis
4508ea1cc1 Fixup from last commit
*grumble* Stupid git gui broke my commit!
Fixed a warning in llpaneleditwearables.cpp
2012-07-07 00:35:46 -04:00
Lirusaito
6b11776fcf Added in Phoenix's building preferences: removed bloat and waste, made positioning less fragile, repositioned parts more sensibly, and suggested courses of action in comments. 2012-07-06 14:45:39 -04:00
Drake Arconis
525e9d9a8e Webkit plugin updates
Updated the webkit plugin with the latest features
Fixed SSL support in webkit
Other minor cleanup
2012-07-06 11:37:45 +00:00
Drake Arconis
b40a9c7a06 Updated about floater
Moved the licensing to its own tab
Updated and added relevant copyright notices
2012-07-06 09:12:42 +00:00
Drake Arconis
0b757aaad5 Merge remote-tracking branch 'liru/V2MultiWear' into AltCompilers 2012-07-06 01:54:57 +00:00
Drake Arconis
7f1d9a01e6 Merge remote-tracking branch 'siana/AltCompilers' into AltCompilers 2012-07-06 00:04:07 +00:00
Aleric Inglewood
f46d8e8a10 Try to be smart about not printing garbage (binary) received from the server. 2012-07-05 23:50:03 +02:00
Siana Gearz
d1b6b78206 Fixing windows build 2012-07-05 22:38:24 +02:00
Drake Arconis
d8c191490f OK HAPPY? ITS FIXED
MY GOD RAGE RAGE RAGE RAGE RAGE AND MOAR RAGE
Yes I know this looks stupid.
Really.
2012-07-05 14:19:37 +00:00
Drake Arconis
24ec85febd Merge branch 'AltCompilers' of bitbucket.org:LightDrake/singularityviewer into AltCompilers 2012-07-05 14:04:17 +00:00
Drake Arconis
9565d96006 Fixed a typo in repackage.sh
So. I was tired and that happened.
2012-07-05 14:03:53 +00:00
Drake Arconis
822098b5ac Fixed a typo in repackage.sh
So. I was tired and that happened.
2012-07-05 13:44:44 +00:00
Drake Arconis
02ae36b427 OpenSSL Updated.
OpenSSL 1.0.0g
2012-07-05 12:59:50 +00:00
Siana Gearz
f5bfab139c Merge branch 'curlthreading2' of git://github.com/AlericInglewood/SingularityViewer into curlthreading 2012-07-05 06:06:04 +02:00
Drake Arconis
259a9ff0cc Cleanup and more library work
Cleaned up unneeded files in LICENSES already provided by the
prebuilt packages themselves

install.xml:
Added in pcre, colladadom, and windows glod library
Corrected, descriptions licenses, and copyrights.
2012-07-05 02:43:37 +00:00
Drake Arconis
d238cfe753 LibraryWork: Windows Libraries
Repacked the windows libraries for new package layout.
Cleaned install.xml of unused libraries on windows.
Cleaned install.xml of unused libraries on darwin.
Repacked windows gperftools from Kitty/Catznip.
Updated windows openal.
2012-07-05 02:08:27 +00:00
Aleric Inglewood
df20f918ba New libcwd channel 'curlio'.
Enable printing of libcurl 'IO' debug messages when libcwd channel
'curlio' is turned on (added to .libcwdrc). Avoiding a recompile.
2012-07-05 03:10:16 +02:00
Aleric Inglewood
b8fc1f634e Print the curl library found during configure.
Prints something like:
-- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.25.0")
2012-07-05 01:41:01 +02:00
Aleric Inglewood
ae9dadb5d8 Improved layout of curl stats print out. 2012-07-04 16:56:33 +02:00
Siana Gearz
d31c062693 Fix building with libcwd 2012-07-04 12:44:05 +02:00
Drake Arconis
31ca817dc0 Removed ReleaseSSE2
Removed ReleaseSSE2 and moved its options under Release.
2012-07-04 10:25:04 +00:00
Siana Gearz
544928a039 Merge branch 'curlthreading2' of git://github.com/AlericInglewood/SingularityViewer into curlthreading 2012-07-04 10:45:48 +02:00
Aleric Inglewood
14276b3cf8 Bug fix 2012-07-04 08:44:22 +02:00
Aleric Inglewood
07e7eeedd1 Added some windows code.
Iterating directly over the elements of fd_set::fd_array in
windows is faster than using FD_ISSET.
2012-07-04 07:32:24 +02:00
Drake Arconis
5748de1f9d More changes for lib and packaging update 2012-07-04 04:41:33 +00:00
Drake Arconis
d0c1c4d753 Dos2Unix line endings and a file mode change 2012-07-04 00:29:59 +00:00
Drake Arconis
7af331c50d First set of changes for new librarys and lib layout support!
Modified repackage script to support new layout
Fixed webkit to work against new llqtwebkit
2012-07-04 00:26:42 +00:00
Aleric Inglewood
125a10bb44 Code hardening, review, bug fixes, documentation, curl stats and cleanup.
Bug fixes:
AICurlEasyRequestStateMachine didn't delete itself.
curl_multi_socket_action calls were made for potentional removed sockets.
The curl thread wasn't terminated.
2012-07-04 00:10:43 +02:00
Drake Arconis
9db7bcde00 Why or why ugly hack :/ 2012-07-03 17:33:37 +00:00
Aleric Inglewood
9b8e5c8719 Merge branch 'V2MultiWear' into curlthreading2
I picked a few non-curl related patches from curlthreading2
and applied them to V2MultiWear. Now merging back to avoid
collisions for others.
2012-07-03 14:27:12 +02:00
Aleric Inglewood
a803507d67 Use correct way to check if we logged in yet or not.
Without this fix, we trigger an assert, in debug mode, that was added
to Singularity exactly to find out if we called functions like
getExpandedFilename(LL_PATH_PER_SL_ACCOUNT ...) before logging in.
Checking if THAT function returns empty() is clearly not safe, but
very error prone.
2012-07-01 22:15:03 +02: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
26922a1578 Merge remote-tracking branch 'lirusaito/curlthreading2' into curlthreading2 2012-06-29 05:28:58 +02:00
Aleric Inglewood
90493b6571 Add support for libopenSSL older than version 1.0.0. 2012-06-29 05:20:24 +02:00
Aleric Inglewood
2dee921cd5 Fix libcurl version check. 2012-06-29 01:33:38 +02:00
Lirusaito
433c7c3f99 Spelling fixes and stuff like that to AICurl* and llproxy.* documentations
Also removes a duplicate include from llares.cpp

Conflicts:
	indra/llmessage/aicurl.cpp
2012-06-28 04:08:25 -04:00
Lirusaito
fef461fd13 Grabbed openSSL-1.0.0d from upstream for linux, necessary for non-standalone compiles.
Also brought in linux64 version I had sitting around, collecting dust.
2012-06-28 03:46:22 -04:00
Aleric Inglewood
1f56645b69 Always set proxy settings for every HTTP curl connection.
Move applyProxySettings to CurlEasyRequest and call it from
applyDefaultOptions.

Use AIThreadSafe for LLProxy for a more robust threadsafeness.
(This forces correct locking, checks that the unshared vars
are indeed unshared and made it easy to use read/write locking,
which might be important in this case (we do a lot of read-only
accesses to it).
2012-06-28 05:56:21 +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
Lirusaito
8805e3fb27 Nomade Zhao's 4 fixes for translation. Re: Issue 340 2012-03-28 00:00:42 -04:00
Lirusaito
64d8397ea5 Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-03-27 19:48:05 -04:00
Lirusaito
4d4496fc4d Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-03-27 19:29:24 -04:00
Lirusaito
af67342969 Merge branch 'master' of git://github.com/siana/SingularityViewer
Conflicts:
	indra/llrender/llvertexbuffer.cpp
Also, reverts indra/newview/skins/default/xui/en-us/panel_audio.xml to before mute-gesture button (For now can be toggled through SinguMuteGestures debug setting)
2012-03-27 07:15:48 -04:00
Lirusaito
d9cbd52ea8 Fix for compiler warning in LLVertexBuffer::setupVertexArray. 2012-03-23 22:45:55 -04:00
Lirusaito
8b25d44bcf Replaced a tab with a space in XML so Windows doesn't show an awkward square there. 2012-03-23 17:21:50 -04:00
Lirusaito
3d6733bed8 Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-03-23 17:20:04 -04:00
Lirusaito
c3f3db518b Fixed Issue 340, multiple instances of same name breaking translation.
Applies to advanced chat preferences only.
2012-03-19 18:08:17 -04:00
Lirusaito
385ec62e53 Added scale_image="false" to all mute buttons.
This will allow the mute icons to retain their normal look,
with Shyotl's changes to the UI code.
2012-03-14 08:55:10 -04:00
Lirusaito
881524831f Merge branch 'master' of https://bitbucket.org/Lirusaito/singularityviewer 2012-03-14 02:58:45 -04:00
Lirusaito
376be8b990 Spelling fix in a comment. 2012-03-14 02:53:44 -04:00
Lirusaito
96ddbf2a8b Added scale_image="false" to the gesture mute button so it won't span the width of the button. 2012-03-03 01:38:53 -05:00
Lirusaito
c2ee420917 Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-03-01 18:16:39 -05:00
Lirusaito
74a1ba0d1e Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-02-29 10:52:26 -05:00
Lirusaito
0dc05a39e6 Use Ctrl-shift-D for creating a landmarks, instead, and fix previous misplacement of the shortcut. 2012-02-28 13:05:06 -05:00
Lirusaito
72fe406f64 Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-02-24 18:39:25 -05:00
Lirusaito
90ac174260 Added Ctrl-D for creating a landmark
Most browsers use this for creating bookmarks, landmarks are pretty much
the same.
2012-02-24 14:07:58 -05:00
Lirusaito
b555e02220 Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-02-23 16:27:46 -05:00
Lirusaito
507c94c24c Merge branch 'master' of git://github.com/siana/SingularityViewer 2012-02-22 17:20:21 -05:00
Lirusaito
2699fa8cf9 Merge branch 'master' of https://github.com/LightDrake/SingularityViewer 2012-02-22 11:23:59 -05:00
Lirusaito
513002416c Corrected text to say viewer's website, since we are not Imprudence. 2012-02-22 09:50:19 -05:00
Lirusaito
22530cd77e Prevent snapshot resolution from going over window size, when showing UI or HUD in snapshots is enabled.
Otherwise snapshots do not have UI/HUD shown, despite enabling RenderUIInSnapshot or RenderHUDInSnapshot.
2012-02-22 09:23:09 -05:00
Lirusaito
81521b98fd Added gesture_muted icon, reworked the panel_audio to look better, and have mute gesture look more like the rest of the panel. 2012-02-22 06:22:05 -05:00
Lirusaito
73c2feee97 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2012-02-21 16:46:22 -05:00
Lirusaito
d4212d390d Merge branch 'master' of git://github.com/TighMacFanatic/SingularityViewer 2012-02-20 17:27:52 -05:00
Lirusaito
2b8a55f396 Add DisableCameraConstraints to the "Camera Options:" checkboxes on Input & Camera Preferences(panel_preferences_input.xml) 2012-02-20 17:13:35 -05:00
Lirusaito
f253da09ec Added gesture muting feature, like phoenix has. 2012-02-20 16:02:56 -05:00
Lirusaito
e232abdab2 Merge branch 'master' of git://github.com/siana/SingularityViewer
Conflicts:
	indra/newview/skins/dark/colors_base.xml
	indra/newview/skins/gemini/colors_base.xml
	indra/newview/skins/pslgreen/colors_base.xml
	indra/newview/skins/pslpurple/colors_base.xml
	indra/newview/skins/sapphire/colors_base.xml
2012-02-20 00:01:04 -05:00
Lirusaito
fae40e0bdf Fix to "Replace all NotifyCautionBoxColor's and AlertCautionBoxColor's that were using tan with black"(0fef1407e3), to only apply to skins where the tan background was too similar to the font color.
Also, for skins now using this black background, adjust foreground color to show up and match the skin, in cases where it was black.
2012-02-19 19:58:34 -05:00
8099 changed files with 200869 additions and 107082 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto

2
.gitignore vendored
View File

@@ -11,6 +11,7 @@
/bin-release
/indra/viewer-*
/indra/newview/vivox-runtime/
/indra/newview/dbghelp.dll
/libraries/
/lib/
*.pyc
@@ -22,3 +23,4 @@
/LICENSES/
/edited-files.txt
qtcreator-build/
/.pc

View File

@@ -0,0 +1,114 @@
Linden Research, Inc. ("Linden Lab") Viewer FLOSS License Exception v0.5
The Linden Lab Exception for Free/Libre and Open Source Software-only
Applications Using Linden Lab Viewer Software (the "FLOSS Exception").
Exception Intent
Linden Lab is releasing the source code for certain software that
enables users to view or otherwise access the Second Life virtual
world environment (the "Viewer Software"), under version 2 of the GNU
General Public License (the "GPL"). The creation or distribution of
works based on the Program (as defined under the GPL) of the Viewer
Software may require the use of certain Free/Libre and Open Source
Software ("FLOSS") works that are subject to license agreements not
compatible with re-licensing under the GPL. Because we want to allow
the Viewer Software to be distributed with these FLOSS works, this
FLOSS Exception following exception applies subject to the terms and
conditions below.
Legal Terms and Conditions
As a special exception to the terms and conditions of version 2.0 of
the GPL:
You are free to distribute a work based on the Program that is formed
entirely from the Viewer Software (and any modifications thereof) and
one or more works that are independent and separate works not derived
from the Viewer Software, and are licensed under one or more of the
licenses listed below in section 1 (each, a "FLOSS Work") , as long
as:
A. You obey the GPL in all respects for the Viewer Software and any
work based on the Program, except for the FLOSS Works, for which
you must comply with B below,
B. all FLOSS Works,
i. are distributed subject to one of the FLOSS licenses
listed below, and
ii. the object code or executable form of the FLOSS Works are
accompanied by the complete corresponding
machine-readable source code for those FLOSS Works on the
same medium and under the same FLOSS license as the
corresponding object code or executable forms thereof,
and
C. any works that are aggregated with the Viewer Software or a work
based on the Program on a volume of a storage or distribution
medium in accordance with the GPL, and are not licensed under
the FLOSS licenses listed below, are independent and separate
works in themselves which are not derivatives of either the
Viewer Software, a work based on the Program or a FLOSS Work.
If the above conditions are not met, then the Viewer Software may only
be copied, modified, distributed or used under the terms and
conditions of the GPL or another valid licensing option from Linden
Lab.
1. FLOSS License List
License name Version(s)/Copyright Date
Academic Free License 2.0
Apache Software License 1.0/1.1/2.0
Apple Public Source License 2.0
Artistic license From Perl 5.8.0
BSD license "July 22 1999"
Common Development and
Distribution License (CDDL) 1.0
Common Public License 1.0
GNU Library or "Lesser" General
Public License (LGPL) 2.0/2.1
Jabber Open Source License 1.0
MIT License (As listed in file MIT-License.txt) -
Mozilla Public License (MPL) 1.0/1.1
Open Software License 2.0
OpenSSL license (with
original SSLeay license) "2003" ("1998")
PHP License 3.0
Python license (CNRI Python License) -
Python Software Foundation License 2.1.1
Sleepycat License "1999"
W3C License "2001"
X11 License "2001"
Zlib/libpng License -
Zope Public License 2.0
Due to the many variants of some of the above licenses, we require
that any variant of the above licenses be identical in substance to
the form approved by the Open Source Initiative and follow the 2003
version of the Free Software Foundation's Free Software Definition
(http://www.gnu.org/philosophy/free-sw.html) or version 1.9 of the
Open Source Definition by the Open Source Initiative
(http://www.opensource.org/docs/definition.php).
2. Definitions
Terms used, but not defined, herein shall have the meaning provided in
the GPL.
3. Applicability
This FLOSS Exception applies to all Viewer Software files that contain
a notice placed by Linden Lab saying that the Viewer Software may be
distributed under the terms of this FLOSS Exception. If you create or
distribute a work which is a work based on the Program for the Viewer
Software and any other work licensed under the GPL, then this FLOSS
Exception is not available for that work; thus, you must remove the
FLOSS Exception notice from that work and comply with the GPL in all
respects, including by retaining all GPL notices. You may choose to
redistribute a copy of the Viewer Software exclusively under the terms
of the GPL by removing the FLOSS Exception notice from that copy of
the Viewer Software, provided that the copy has never been modified by
you or any third party.

339
LICENSES/GPL-license.txt Normal file
View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@@ -0,0 +1,36 @@
Source code
========
The license for the source code in this distribution should be clearly
marked on each source file. Unless otherwise specified, the source
code in this distribution ("Source Code") is provided by Linden Lab to
you under the terms of the GNU General Public License, version 2.0
("GPL"), unless you have obtained a separate licensing agreement
("Other License"), formally executed by you and Linden Lab. Terms of
the GPL can be found in GPL-license.txt in this distribution, or
online at http://secondlifegrid.net/technology-programs/license-virtual-world/viewerlicensing/gplv2
There are special exceptions to the terms and conditions of the GPL as
it is applied to this Source Code. View the full text of the exception
in the file FLOSS-exception.txt in this software distribution, or
online at http://secondlifegrid.net/technology-programs/license-virtual-world/viewerlicensing/flossexception
By copying, modifying or distributing this software, you acknowledge
that you have read and understood your obligations described above,
and agree to abide by those obligations.
ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
COMPLETENESS OR PERFORMANCE.
Logos and trademarks
==============
"Second Life" and "Linden Lab" are registered trademarks of Linden
Research, Inc. Other trademarks include (but are not limited to): the
names Linden and Linden Research, as well as the Linden Lab Hexagon
Design and the Second Life Hand Design logos.
Use of logos and trademarks are subject to the Linden Lab trademark
policy, available at:
http://secondlife.com/corporate/trademark/

View File

@@ -1,19 +0,0 @@
ELFIO.h - ELF reader and producer.
Copyright (C) 2001 Serge Lamikhov-Center <to_serge@users.sourceforge.net>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
The GNU Library GPL is available at http://www.gnu.org/copyleft/lesser.html

View File

@@ -1,23 +0,0 @@
http://www.jclark.com/xml/copying.txt
Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,29 +0,0 @@
http://xmlsoft.org/
http://www.opensource.org/licenses/mit-license.html
Open Source Initiative OSI - The MIT License:Licensing
Tue, 2006-10-31 04:56 . nelson
The MIT License
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -1,484 +0,0 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@@ -1,5 +0,0 @@
The pristine version of Qt corresponding to this build is available at:
http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/qt-all-opensource-src-4.5.2.tar.bz2
The patches we applied to the above package to get this build are available at:
http://hg.secondlife.com/llqtwebkit/src/tip/qt_patches/

27
README
View File

@@ -9,15 +9,30 @@
Sin-gu-la-ri-ty (noun) - a distinctive feature, a uniqueness; a point at which
continuity breaks up; a point in history at which machine becomes smarter than
humanity and/or fuses with it indivisively; or simply a cool sounding word with
my initials in it :)
the initials S.G. in it :)
Singularity Viewer is a Second Life protocol compatible client application. It
can be used to access Second LIfe service as well as a number of other such as
those based upon OpenSim plattform. It is directly based upon source code of
Ascent Viewer by Balseraph Software Group, which is in turn based upon source
code released by Linden Lab, with contributions from various sources.
Singularity Viewer is a SecondLife(tm) protocol compatible client application.
It can be used to access SecondLife services as well as a number of others such
as those based upon the OpenSim platform.
Singulariy is maintained by a small group of volunteers who can be contacted
both, in-world (SingularityViewer group) as well on IRC (#SingularityViewer
@ FreeNode). Bug requests and features requests can be submitted through our
Issue Tracker (http://code.google.com/p/singularity-viewer/issues/list or from
the viewer menu: Help --> Bug Reporting --> Singularity Issue Tracker...)
As this Readme grows out of date, please refer to
http://www.singularityviewer.org/about
00000000011111111112222222222333333333344444444445555555555666666666677777777778
12345678901234567890123456789012345678901234567890123456789012345678901234567890
History
The Singularity viewer was started by Siana Gearz in November 2010 by forking it
from the Ascent Viewer, by Balseraph Software Group, which in turn was based upon
source code modified from the snowglobe source code released by Linden Lab.

View File

@@ -248,6 +248,7 @@ Celierra Darling
VWR-6975
Cron Stardust
VWR-10579
STORM-1919
Cypren Christenson
SNOW-129
SNOW-140

82
doc/responders.txt Normal file
View File

@@ -0,0 +1,82 @@
All Responders are derived from ResponderBase, however you normally do never derived from that directly yourself.
Instead, Responder classes are derived from one of:
1. Responder base classes
ResponderHeadersOnly -- Derived classes are used with HTTPClient::head or HTTPClient::getHeaderOnly.
ResponderWithCompleted -- Derived classes implement completed(U32, std::string const&, LLSD const&),
or completedRaw(U32, std::string const&, LLChannelDescriptors const&, buffer_ptr_t const&)
if the response is not (always) LLSD.
ResponderWithResult -- Derived classes implement result(LLSD const&) and optionally
errorWithContent(U32, std::string const&, LLSD const&) OR error(U32, std::string const&).
2. Special base classes
ResponderIgnoreBody -- Same as ResponderWithResult but already implements result() that ignored the body.
LLAssetUploadResponder -- Derived from ResponderWithResult. Base class for responders that upload assets via capabilities.
LegacyPolledResponder -- Used for old code that needs polling (do not use).
There is one non-base class Responder with a more general purpose:
3. Special purpose responders:
ResponderIgnore -- Derived from ResponderIgnoreBody. Used for "fire and forget" requests as it ignores any response.
4. Signatures.
Every final (derived) responder class must implement 'getName(void) const' and 'getHTTPTimeoutPolicy(void)',
except the base classes (this is to alert the developer they have to implement getName as it is pure virtual).
For example:
extern AIHTTPTimeoutPolicy myResponder_timeout; // Add 'P(myResponder)' to indra/llmessage/aihttptimeoutpolicy.cpp.
class MyResponder : public LLHTTPClient::SomeResponderBaseClass {
...
/*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return myResponder_timeout; }
/*virtual*/ char const* getName(void) const { return "MyResponder"; }
};
Note the convention that the name of a AIHTTPTimeoutPolicy (what goes between the brackets of P()) is
the class name minus any 'AI' or 'LL' prefix and starting with a lowercase character.
Then, depending on the three main base classes that was derived from, the signatures should be:
class MyResponder1 : public LLHTTPClient::ResponderHeadersOnly {
/*virtual*/ void completedHeaders(U32 status, std::string const& reason, AIHTTPReceivedHeaders const& headers);
// See for example PostImageResponder
...
};
class MyResponder2 : public LLHTTPClient::ResponderWithCompleted {
/*virtual*/ void completedRaw(U32 status, std::string const& reason, LLChannelDescriptors const& channels, buffer_ptr_t const& buffer);
// See for example PostImageRedirectResponder
>>>OR<<<
/*virtual*/ void completed(U32 status, const std::string& reason, const LLSD& content); // See for example LLImportPostResponder
};
class MyResponder3 : public LLHTTPClient::ResponderWithResult {
/*virtual*/ void result(const LLSD& content); // See for example LLInventoryModelFetchItemResponder
/*virtual*/ void error(U32 status, const std::string& reason);
>>>OR instead error()<<<
/*virtual*/ void errorWithContent(U32 status, const std::string& reason, const LLSD& content);
// See for example LLSDMessage::EventResponder
};
Finally, if a responder derived from ResponderWithCompleted or ResponderWithResult needs to process
individual headers, you need to override 'needsHeaders':
/*virtual*/ bool needsHeaders(void) const { return true; } // See for example LLWebProfileResponders::PostImageResponder
// which will cause this to be called:
/*virtual*/ void completedHeaders(U32 status, std::string const& reason, AIHTTPReceivedHeaders const& headers);
And if it needs redirection to work (you'll get an assert if you forget this and it is being redirected):
/*virtual*/ bool followRedir(void) const { return true; } // See for example LLWebProfileResponders::ConfigResponder
This is not necessary for ResponderHeadersOnly because that already defines both.

View File

@@ -50,7 +50,7 @@
<key>OpenCircuit</key>
<map>
<key>flavor</key>
<string>template</string>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>false</boolean>
</map>
@@ -370,6 +370,22 @@
</map>
<!-- Server to client -->
<key>DisplayNameUpdate</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>WindLightRefresh</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>ParcelVoiceInfo</key>
<map>
<key>flavor</key>
@@ -378,7 +394,6 @@
<boolean>true</boolean>
</map>
<key>ParcelNavigateMedia</key>
<map>
<key>flavor</key>
@@ -419,6 +434,22 @@
<boolean>true</boolean>
</map>
<key>SetDisplayNameReply</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>SimConsoleResponse</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>DirLandReply</key>
<map>
<key>flavor</key>
@@ -515,8 +546,24 @@
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<!-- UDPDeprecated Messages -->
<key>NavMeshStatusUpdate</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>AgentStateUpdate</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<!-- UDPDeprecated Messages -->
<key>ScriptRunningReply</key>
<map>
<key>flavor</key>
@@ -565,22 +612,13 @@
<boolean>false</boolean>
</map>
<!-- Server to client -->
<key>DisplayNameUpdate</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>SetDisplayNameReply</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
<key>ObjectPhysicsProperties</key>
<map>
<key>flavor</key>
<string>llsd</string>
<key>trusted-sender</key>
<boolean>true</boolean>
</map>
</map>
<key>capBans</key>
@@ -625,7 +663,7 @@
<boolean>false</boolean>
<key>RequestTextureDownload</key>
<boolean>false</boolean>
<boolean>true</boolean>
<key>EventQueueGet</key>
<boolean>false</boolean>
@@ -677,6 +715,9 @@
<key>FetchLib2</key>
<boolean>true</boolean>
<key>UploadBakedTexture</key>
<boolean>true</boolean>
</map>
<key>messageBans</key>

View File

@@ -18,7 +18,7 @@ cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
cmake_policy(SET CMP0003 OLD)
set(ROOT_PROJECT_NAME "Singularity" CACHE STRING
"The root project/makefile/solution name. Defaults to SecondLife.")
"The root project/makefile/solution name. Defaults to Singularity.")
project(${ROOT_PROJECT_NAME})
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
@@ -30,11 +30,11 @@ include(BuildVersion)
include(UnixInstall)
set (DISABLE_FATAL_WARNINGS TRUE)
set (DISABLE_FATAL_WARNINGS CACHE BOOL TRUE)
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE ReleaseSSE2 CACHE STRING
"Build type. One of: Debug Release ReleaseSSE2 RelWithDebInfo" FORCE)
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Build type. One of: Debug Release RelWithDebInfo" FORCE)
endif (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
# Create a 'prepare' target in which to perform setup actions. This
@@ -46,12 +46,16 @@ endif(NOT STANDALONE)
add_custom_target(prepare DEPENDS ${prepare_depends})
add_subdirectory(cmake)
add_subdirectory(${LIBS_OPEN_PREFIX}cwdebug)
add_subdirectory(${LIBS_OPEN_PREFIX}aistatemachine)
add_subdirectory(${LIBS_OPEN_PREFIX}llaudio)
add_subdirectory(${LIBS_OPEN_PREFIX}llappearance)
add_subdirectory(${LIBS_OPEN_PREFIX}llcharacter)
add_subdirectory(${LIBS_OPEN_PREFIX}llcommon)
add_subdirectory(${LIBS_OPEN_PREFIX}llimage)
add_subdirectory(${LIBS_OPEN_PREFIX}libopenjpeg)
add_subdirectory(${LIBS_OPEN_PREFIX}libhacd)
add_subdirectory(${LIBS_OPEN_PREFIX}libndhacd)
add_subdirectory(${LIBS_OPEN_PREFIX}libpathing)
add_subdirectory(${LIBS_OPEN_PREFIX}llimagej2coj)
add_subdirectory(${LIBS_OPEN_PREFIX}llinventory)
add_subdirectory(${LIBS_OPEN_PREFIX}llmath)
@@ -62,85 +66,54 @@ add_subdirectory(${LIBS_OPEN_PREFIX}llvfs)
add_subdirectory(${LIBS_OPEN_PREFIX}llwindow)
add_subdirectory(${LIBS_OPEN_PREFIX}llxml)
if (EXISTS ${LIBS_CLOSED_DIR}llkdu AND NOT STANDALONE)
add_subdirectory(${LIBS_CLOSED_PREFIX}llkdu)
endif (EXISTS ${LIBS_CLOSED_DIR}llkdu AND NOT STANDALONE)
if(STANDALONE)
add_subdirectory(${LIBS_OPEN_PREFIX}llqtwebkit)
endif(STANDALONE)
add_subdirectory(${LIBS_OPEN_PREFIX}lscript)
#add_subdirectory(${LIBS_OPEN_PREFIX}lscript)
if (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
add_subdirectory(${LIBS_CLOSED_PREFIX}copy_win_scripts)
endif (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
add_custom_target(viewer)
if (VIEWER)
add_subdirectory(${LIBS_OPEN_PREFIX}llcrashlogger)
add_subdirectory(${LIBS_OPEN_PREFIX}llplugin)
add_subdirectory(${LIBS_OPEN_PREFIX}llui)
add_subdirectory(${LIBS_OPEN_PREFIX}llxuixml)
add_subdirectory(${LIBS_OPEN_PREFIX}llcrashlogger)
add_subdirectory(${LIBS_OPEN_PREFIX}llplugin)
add_subdirectory(${LIBS_OPEN_PREFIX}llui)
# viewer plugins directory
add_subdirectory(${LIBS_OPEN_PREFIX}plugins)
# viewer plugins directory
add_subdirectory(${LIBS_OPEN_PREFIX}plugins)
# llplugin testbed code (is this the right way to include it?)
#if (NOT LINUX)
# add_subdirectory(${VIEWER_PREFIX}test_apps/llplugintest)
#endif (NOT LINUX)
# llplugin testbed code (is this the right way to include it?)
#if (NOT LINUX)
# add_subdirectory(${VIEWER_PREFIX}test_apps/llplugintest)
#endif (NOT LINUX)
if (LINUX)
add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
add_dependencies(viewer linux-crash-logger-strip-target)
elseif (DARWIN)
#add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
#add_subdirectory(${VIEWER_PREFIX}mac_updater)
add_dependencies(viewer mac-crash-logger)
#add_dependencies(viewer mac-updater)
elseif (WINDOWS)
add_subdirectory(${VIEWER_PREFIX}win_crash_logger)
# cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake
if (EXISTS ${VIEWER_DIR}win_setup)
add_subdirectory(${VIEWER_DIR}win_setup)
endif (EXISTS ${VIEWER_DIR}win_setup)
add_subdirectory(${VIEWER_PREFIX}win_updater)
add_dependencies(viewer windows-updater)
add_dependencies(viewer windows-crash-logger)
elseif (SOLARIS)
add_subdirectory(solaris_crash_logger)
add_dependencies(viewer solaris-crash-logger)
endif (LINUX)
add_subdirectory(${VIEWER_PREFIX}newview/statemachine)
add_subdirectory(${VIEWER_PREFIX}newview)
add_dependencies(viewer secondlife-bin)
endif (VIEWER)
# Linux builds the viewer and server in 2 separate projects
# In order for ./develop.py build server to work on linux,
# the viewer project needs a server target.
# This is not true for mac and windows.
if (LINUX)
add_custom_target(server)
if (LINUX)
add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
add_dependencies(viewer linux-crash-logger-strip-target)
elseif (DARWIN)
#add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
#add_subdirectory(${VIEWER_PREFIX}mac_updater)
add_dependencies(viewer mac-crash-logger)
#add_dependencies(viewer mac-updater)
elseif (WINDOWS)
add_subdirectory(${VIEWER_PREFIX}win_crash_logger)
# cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake
if (EXISTS ${VIEWER_DIR}win_setup)
add_subdirectory(${VIEWER_DIR}win_setup)
endif (EXISTS ${VIEWER_DIR}win_setup)
add_subdirectory(${VIEWER_PREFIX}win_updater)
add_dependencies(viewer windows-updater)
add_dependencies(viewer windows-crash-logger)
elseif (SOLARIS)
add_subdirectory(solaris_crash_logger)
add_dependencies(viewer solaris-crash-logger)
endif (LINUX)
if (SERVER)
if (NOT LINUX)
add_custom_target(server)
endif (NOT LINUX)
include(${SERVER_PREFIX}Server.cmake)
endif (SERVER)
# Windows builds include tools like VFS tool
if (SERVER)
if (WINDOWS)
add_subdirectory(${SERVER_PREFIX}tools)
endif (WINDOWS)
endif (SERVER)
# Configure prebuilt binary download. This must be done last so that
# all subdirectories have a chance to list the packages they need.
# We need scp for proprietary downloads.
if(INSTALL_PROPRIETARY)
include(FindSCP)
endif(INSTALL_PROPRIETARY)
add_subdirectory(${VIEWER_PREFIX}newview/statemachine)
add_subdirectory(${VIEWER_PREFIX}newview)
add_dependencies(viewer secondlife-bin)
# The use_prebuilt_binary macro in cmake/Prebuilt.cmake records
# packages in the PREBUILT property of the 'prepare' target.

View File

@@ -0,0 +1,41 @@
# -*- cmake -*-
project(aistatemachine)
include(00-Common)
include(LLCommon)
include(LLMessage)
include(LLMath)
include(LLXML)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(
${LLCOMMON_INCLUDE_DIRS}
${LLMESSAGE_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
${LLXML_INCLUDE_DIRS}
)
set(aistatemachine_SOURCE_FILES
aistatemachine.cpp
aistatemachinethread.cpp
aitimer.cpp
)
set(aistatemachine_HEADER_FILES
CMakeLists.txt
aistatemachine.h
aistatemachinethread.h
aitimer.h
)
set_source_files_properties(${aistatemachine_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND aistatemachine_SOURCE_FILES ${aistatemachine_HEADER_FILES})
add_library (aistatemachine ${aistatemachine_SOURCE_FILES})
add_dependencies(aistatemachine prepare)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,316 @@
/**
* @file aistatemachine.h
* @brief State machine base class
*
* Copyright (c) 2010 - 2013, Aleric Inglewood.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution.
*
* CHANGELOG
* and additional copyright holders.
*
* 01/03/2010
* Initial version, written by Aleric Inglewood @ SL
*
* 28/02/2013
* Rewritten from scratch to fully support threading.
*/
#ifndef AISTATEMACHINE_H
#define AISTATEMACHINE_H
#include "aithreadsafe.h"
#include <llpointer.h>
#include <list>
#include <boost/signals2.hpp>
class AIStateMachine;
class AIEngine
{
private:
struct QueueElementComp;
class QueueElement {
private:
LLPointer<AIStateMachine> mStateMachine;
public:
QueueElement(AIStateMachine* statemachine) : mStateMachine(statemachine) { }
friend bool operator==(QueueElement const& e1, QueueElement const& e2) { return e1.mStateMachine == e2.mStateMachine; }
friend bool operator!=(QueueElement const& e1, QueueElement const& e2) { return e1.mStateMachine != e2.mStateMachine; }
friend struct QueueElementComp;
AIStateMachine const& statemachine(void) const { return *mStateMachine; }
AIStateMachine& statemachine(void) { return *mStateMachine; }
};
struct QueueElementComp {
inline bool operator()(QueueElement const& e1, QueueElement const& e2) const;
};
public:
typedef std::list<QueueElement> queued_type;
struct engine_state_type {
queued_type list;
bool waiting;
engine_state_type(void) : waiting(false) { }
};
private:
AIThreadSafeSimpleDC<engine_state_type, LLCondition> mEngineState;
typedef AIAccessConst<engine_state_type, LLCondition> engine_state_type_crat;
typedef AIAccess<engine_state_type, LLCondition> engine_state_type_rat;
typedef AIAccess<engine_state_type, LLCondition> engine_state_type_wat;
char const* mName;
static U64 sMaxCount;
public:
AIEngine(char const* name) : mName(name) { }
void add(AIStateMachine* state_machine);
void mainloop(void);
void threadloop(void);
void wake_up(void);
void flush(void);
char const* name(void) const { return mName; }
static void setMaxCount(F32 StateMachineMaxTime);
};
extern AIEngine gMainThreadEngine;
extern AIEngine gStateMachineThreadEngine;
class AIStateMachine : public LLThreadSafeRefCount
{
public:
typedef U32 state_type; //!< The type of run_state
protected:
// The type of event that causes multiplex() to be called.
enum event_type {
initial_run,
schedule_run,
normal_run,
insert_abort
};
// The type of mState
enum base_state_type {
bs_reset, // Idle state before run() is called. Reference count is zero (except for a possible external LLPointer).
bs_initialize, // State after run() and before/during initialize_impl().
bs_multiplex, // State after initialize_impl() before finish() or abort().
bs_abort,
bs_finish,
bs_callback,
bs_killed
};
public:
static state_type const max_state = bs_killed + 1;
protected:
struct multiplex_state_type {
base_state_type base_state;
AIEngine* current_engine; // Current engine.
multiplex_state_type(void) : base_state(bs_reset), current_engine(NULL) { }
};
struct sub_state_type {
state_type run_state;
state_type advance_state;
bool reset;
bool need_run;
bool idle;
bool skip_idle;
bool aborted;
bool finished;
};
private:
// Base state.
AIThreadSafeSimpleDC<multiplex_state_type> mState;
typedef AIAccessConst<multiplex_state_type> multiplex_state_type_crat;
typedef AIAccess<multiplex_state_type> multiplex_state_type_rat;
typedef AIAccess<multiplex_state_type> multiplex_state_type_wat;
// Sub state.
AIThreadSafeSimpleDC<sub_state_type> mSubState;
typedef AIAccessConst<sub_state_type> sub_state_type_crat;
typedef AIAccess<sub_state_type> sub_state_type_rat;
typedef AIAccess<sub_state_type> sub_state_type_wat;
// Mutex protecting everything below and making sure only one thread runs the state machine at a time.
LLMutex mMultiplexMutex;
// Mutex that is locked while calling *_impl() functions and the call back.
LLMutex mRunMutex;
S64 mSleep; //!< Non-zero while the state machine is sleeping.
// Callback facilities.
// From within an other state machine:
LLPointer<AIStateMachine> mParent; // The parent object that started this state machine, or NULL if there isn't any.
state_type mNewParentState; // The state at which the parent should continue upon a successful finish.
bool mAbortParent; // If true, abort parent on abort(). Otherwise continue as normal.
bool mOnAbortSignalParent; // If true and mAbortParent is false, change state of parent even on abort.
// From outside a state machine:
struct callback_type {
typedef boost::signals2::signal<void (bool)> signal_type;
callback_type(signal_type::slot_type const& slot) { connection = signal.connect(slot); }
~callback_type() { connection.disconnect(); }
void callback(bool success) const { signal(success); }
private:
boost::signals2::connection connection;
signal_type signal;
};
callback_type* mCallback; // Pointer to signal/connection, or NULL when not connected.
// Engine stuff.
AIEngine* mDefaultEngine; // Default engine.
AIEngine* mYieldEngine; // Requested engine.
#ifdef SHOW_ASSERT
// Debug stuff.
AIThreadID mThreadId; // The thread currently running multiplex().
base_state_type mDebugLastState; // The previous state that multiplex() had a normal run with.
bool mDebugShouldRun; // Set if we found evidence that we should indeed call multiplex_impl().
bool mDebugAborted; // True when abort() was called.
bool mDebugContPending; // True while cont() was called by not handled yet.
bool mDebugSetStatePending; // True while set_state() was called by not handled yet.
bool mDebugAdvanceStatePending; // True while advance_state() was called by not handled yet.
bool mDebugRefCalled; // True when ref() is called (or will be called within the critial area of mMultiplexMutex).
#endif
U64 mRuntime; // Total time spent running in the main thread (in clocks).
public:
AIStateMachine(void) : mCallback(NULL), mDefaultEngine(NULL), mYieldEngine(NULL),
#ifdef SHOW_ASSERT
mThreadId(AIThreadID::none), mDebugLastState(bs_killed), mDebugShouldRun(false), mDebugAborted(false), mDebugContPending(false),
mDebugSetStatePending(false), mDebugAdvanceStatePending(false), mDebugRefCalled(false),
#endif
mRuntime(0)
{ }
protected:
// The user should call finish() (or abort(), or kill() from the call back when finish_impl() calls run()), not delete a class derived from AIStateMachine directly.
virtual ~AIStateMachine() { llassert(multiplex_state_type_rat(mState)->base_state == bs_killed); }
public:
// These functions may be called directly after creation, or from within finish_impl(), or from the call back function.
void run(LLPointer<AIStateMachine> parent, state_type new_parent_state, bool abort_parent = true, bool on_abort_signal_parent = true, AIEngine* default_engine = &gMainThreadEngine);
void run(callback_type::signal_type::slot_type const& slot, AIEngine* default_engine = &gMainThreadEngine);
void run(void) { run(NULL, 0, false, true, mDefaultEngine); }
// This function may only be called from the call back function (and cancels a call to run() from finish_impl()).
void kill(void);
protected:
// This function can be called from initialize_impl() and multiplex_impl() (both called from within multiplex()).
void set_state(state_type new_state); // Run this state the NEXT loop.
// These functions can only be called from within multiplex_impl().
void idle(void); // Go idle unless cont() or advance_state() were called since the start of the current loop, or until they are called.
void finish(void); // Mark that the state machine finished and schedule the call back.
void yield(void); // Yield to give CPU to other state machines, but do not go idle.
void yield(AIEngine* engine); // Yield to give CPU to other state machines, but do not go idle. Continue running from engine 'engine'.
void yield_frame(unsigned int frames); // Run from the main-thread engine after at least 'frames' frames have passed.
void yield_ms(unsigned int ms); // Run from the main-thread engine after roughly 'ms' miliseconds have passed.
public:
// This function can be called from multiplex_imp(), but also by a child state machine and
// therefore by any thread. The child state machine should use an LLPointer<AIStateMachine>
// to access this state machine.
void abort(void); // Abort the state machine (unsuccessful finish).
// These are the only two functions that can be called by any thread at any moment.
// Those threads should use an LLPointer<AIStateMachine> to access this state machine.
void cont(void); // Guarantee at least one full run of multiplex() after this function is called. Cancels the last call to idle().
void advance_state(state_type new_state); // Guarantee at least one full run of multiplex() after this function is called
// iff new_state is larger than the last state that was processed.
public:
// Accessors.
// Return true if the derived class is running (also when we are idle).
bool running(void) const { return multiplex_state_type_crat(mState)->base_state == bs_multiplex; }
// Return true if the derived class is running and idle.
bool waiting(void) const
{
multiplex_state_type_crat state_r(mState);
return state_r->base_state == bs_multiplex && sub_state_type_crat(mSubState)->idle;
}
// Return true if the derived class is running and idle or already being aborted.
bool waiting_or_aborting(void) const
{
multiplex_state_type_crat state_r(mState);
return state_r->base_state == bs_abort || ( state_r->base_state == bs_multiplex && sub_state_type_crat(mSubState)->idle);
}
// Return true if are added to the engine.
bool active(AIEngine const* engine) const { return multiplex_state_type_crat(mState)->current_engine == engine; }
bool aborted(void) const { return sub_state_type_crat(mSubState)->aborted; }
// Use some safebool idiom (http://www.artima.com/cppsource/safebool.html) rather than operator bool.
typedef state_type AIStateMachine::* const bool_type;
// Return true if state machine successfully finished.
operator bool_type() const
{
sub_state_type_crat sub_state_r(mSubState);
return (sub_state_r->finished && !sub_state_r->aborted) ? &AIStateMachine::mNewParentState : 0;
}
// Return stringified state, for debugging purposes.
char const* state_str(base_state_type state);
#if defined(CWDEBUG) || defined(DEBUG_CURLIO)
char const* event_str(event_type event);
#endif
void add(U64 count) { mRuntime += count; }
U64 getRuntime(void) const { return mRuntime; }
protected:
virtual void initialize_impl(void) = 0;
virtual void multiplex_impl(state_type run_state) = 0;
virtual void abort_impl(void) { }
virtual void finish_impl(void) { }
virtual char const* state_str_impl(state_type run_state) const = 0;
private:
void reset(void); // Called from run() to (re)initialize a (re)start.
void multiplex(event_type event); // Called from AIEngine to step through the states (and from reset() to kick start the state machine).
state_type begin_loop(base_state_type base_state); // Called from multiplex() at the start of a loop.
void callback(void); // Called when the state machine finished.
bool sleep(U64 current_time) // Count frames if necessary and return true when the state machine is still sleeping.
{
if (mSleep == 0)
return false;
else if (mSleep < 0)
++mSleep;
else if ((U64)mSleep <= current_time)
mSleep = 0;
return mSleep != 0;
}
void force_killed(void); // Called from AIEngine::flush().
friend class AIEngine; // Calls multiplex() and force_killed().
};
bool AIEngine::QueueElementComp::operator()(QueueElement const& e1, QueueElement const& e2) const
{
return e1.mStateMachine->getRuntime() < e2.mStateMachine->getRuntime();
}
// This can be used in state_str_impl.
#define AI_CASE_RETURN(x) do { case x: return #x; } while(0)
#endif

View File

@@ -0,0 +1,193 @@
/**
* @file aistatemachinethread.cpp
* @brief Implementation of AIStateMachineThread
*
* Copyright (c) 2013, Aleric Inglewood.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution.
*
* CHANGELOG
* and additional copyright holders.
*
* 23/01/2013
* Initial version, written by Aleric Inglewood @ SL
*/
#include "linden_common.h"
#include "aistatemachinethread.h"
class AIStateMachineThreadBase::Thread : public LLThread {
private:
LLPointer<AIStateMachineThreadBase> mImpl;
bool mNeedCleanup;
public:
Thread(AIStateMachineThreadBase* impl) :
#ifdef LL_DEBUG
LLThread(impl->impl().getName()),
#else
LLThread("AIStateMachineThreadBase::Thread"),
#endif
mImpl(impl) { }
protected:
/*virtual*/ void run(void)
{
mNeedCleanup = mImpl->impl().thread_done(mImpl->impl().run());
}
/*virtual*/ void terminated(void)
{
mStatus = STOPPED;
if (mNeedCleanup)
{
// The state machine that started us has disappeared! Clean up ourselves.
// This is OK now because in our case nobody is watching us and having set
// the status to STOPPED didn't change anything really, although it will
// prevent LLThread::shutdown from blocking a whole minute and then calling
// apr_thread_exit to never return! Normally, the LLThread might be deleted
// immediately (by the main thread) after setting mStatus to STOPPED.
Thread::completed(this);
}
}
public:
// TODO: Implement a thread pool. For now, just create a new one every time.
static Thread* allocate(AIStateMachineThreadBase* impl) { return new Thread(impl); }
static void completed(Thread* threadp) { delete threadp; }
};
// MAIN THREAD
char const* AIStateMachineThreadBase::state_str_impl(state_type run_state) const
{
switch(run_state)
{
AI_CASE_RETURN(start_thread);
AI_CASE_RETURN(wait_stopped);
}
return "UNKNOWN STATE";
}
void AIStateMachineThreadBase::initialize_impl(void)
{
mThread = NULL;
mAbort = false;
set_state(start_thread);
}
void AIStateMachineThreadBase::multiplex_impl(state_type run_state)
{
switch(run_state)
{
case start_thread:
mThread = Thread::allocate(this);
// Set next state.
set_state(wait_stopped);
idle(); // Wait till the thread returns.
mThread->start();
break;
case wait_stopped:
if (!mThread->isStopped())
break;
// We're done!
//
// We can only get here when AIThreadImpl::done called cont(), (very
// shortly after which it will be STOPPED), which means we need to do
// the clean up of the thread.
// Also, the thread has really stopped now, so it's safe to delete it.
//
// Clean up the thread.
Thread::completed(mThread);
mThread = NULL; // Stop abort_impl() from doing anything.
if (mAbort)
abort();
else
finish();
break;
}
}
void AIStateMachineThreadBase::abort_impl(void)
{
if (mThread)
{
// If this AIStateMachineThreadBase still exists then the AIStateMachineThread<THREAD_IMPL>
// that is derived from it still exists and therefore its member THREAD_IMPL also still exists
// and therefore impl() is valid.
bool need_cleanup = impl().state_machine_done(mThread); // Signal the fact that we aborted.
if (need_cleanup)
{
// This is an unlikely race condition. We have been aborted by our parent,
// but at the same time the thread finished!
// We can only get here when AIThreadImpl::thread_done already returned
// (VERY shortly after the thread will stop (if not already)).
// Just go into a tight loop while waiting for that, when it is safe
// to clean up the thread.
while (!mThread->isStopped())
{
mThread->yield();
}
Thread::completed(mThread);
}
else
{
// The thread is still happily running (and will clean up itself).
// Lets make sure we're not flooded with this situation.
llwarns << "Thread state machine aborted while the thread is still running. That is a waste of CPU and should be avoided." << llendl;
}
}
}
bool AIThreadImpl::state_machine_done(LLThread* threadp)
{
StateMachineThread_wat state_machine_thread_w(mStateMachineThread);
AIStateMachineThreadBase* state_machine_thread = *state_machine_thread_w;
bool need_cleanup = !state_machine_thread;
if (!need_cleanup)
{
// If state_machine_thread is non-NULL, then AIThreadImpl::thread_done wasnt called yet
// (or at least didn't return yet) which means the thread is still running.
// Try telling the thread that it can stop.
threadp->setQuitting();
// Finally, mark that we are NOT going to do the cleanup by setting mStateMachineThread to NULL.
*state_machine_thread_w = NULL;
}
return need_cleanup;
}
// AIStateMachineThread THREAD
bool AIThreadImpl::thread_done(bool result)
{
StateMachineThread_wat state_machine_thread_w(mStateMachineThread);
AIStateMachineThreadBase* state_machine_thread = *state_machine_thread_w;
bool need_cleanup = !state_machine_thread;
if (!need_cleanup)
{
// If state_machine_thread is non-NULL then AIThreadImpl::abort_impl wasn't called,
// which means the state machine still exists. In fact, it should be in the waiting() state.
// It can also happen that the state machine is being aborted right now.
llassert(state_machine_thread->waiting_or_aborting());
state_machine_thread->schedule_abort(!result);
// Note that if the state machine is not running (being aborted, ie - hanging in abort_impl
// waiting for the lock on mStateMachineThread) then this is simply ignored.
state_machine_thread->cont();
// Finally, mark that we are NOT going to do the cleanup by setting mStateMachineThread to NULL.
*state_machine_thread_w = NULL;
}
return need_cleanup;
}

View File

@@ -0,0 +1,233 @@
/**
* @file aistatemachinethread.h
* @brief Run code in a thread.
*
* Copyright (c) 2013, Aleric Inglewood.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution.
*
* CHANGELOG
* and additional copyright holders.
*
* 23/01/2013
* Initial version, written by Aleric Inglewood @ SL
*/
#ifndef AISTATEMACHINETHREAD_H
#define AISTATEMACHINETHREAD_H
#include "aistatemachine.h"
#include "llthread.h"
#include "aithreadsafe.h"
#ifdef EXAMPLE_CODE // undefined
class HelloWorldThread : public AIThreadImpl {
private:
bool mStdErr; // input
bool mSuccess; // output
public:
// Constructor.
HelloWorldThread(void) : AIThreadImpl("HelloWorldThread"), // MAIN THREAD
mStdErr(false), mSuccess(false) { }
// Some initialization function (if needed).
void init(bool err) { mStdErr = err; } // MAIN THREAD
// Read back output.
bool successful(void) const { return mSuccess; }
// Mandatory signature.
/*virtual*/ bool run(void) // NEW THREAD
{
if (mStdErr)
std::cerr << "Hello world" << std::endl;
else
std::cout << "Hello world" << std::endl;
mSuccess = true;
return true; // true = finish, false = abort.
}
};
// The states of this state machine.
enum hello_world_state_type {
HelloWorld_start = AIStateMachine::max_state,
HelloWorld_done
};
// The statemachine class (this is almost a template).
class HelloWorld : public AIStateMachine {
private:
LLPointer<AIStateMachineThread<HelloWorldThread> > mHelloWorld;
bool mErr;
public:
HelloWorld() : mHelloWorld(new AIStateMachineThread<HelloWorldThread>), mErr(false) { }
// Print to stderr or stdout?
void init(bool err) { mErr = err; }
protected:
// Call finish() (or abort()), not delete.
/*virtual*/ ~HelloWorld() { }
// Handle initializing the object.
/*virtual*/ void initialize_impl(void);
// Handle run_state.
/*virtual*/ void multiplex_impl(state_type run_state);
// Implemenation of state_str for run states.
/*virtual*/ char const* state_str_impl(state_type run_state) const
{
switch(run_state)
{
AI_CASE_RETURN(HelloWorld_start);
AI_CASE_RETURN(HelloWorld_done);
}
return "UNKNOWN STATE";
}
};
// The actual implementation of this statemachine starts here!
void HelloWorld::initialize_impl(void)
{
mHelloWorld->thread_impl().init(mErr); // Initialize the thread object.
set_state(HelloWorld_start);
}
void HelloWorld::multiplex_impl(state_type run_state)
{
switch (run_state)
{
case HelloWorld_start:
{
mHelloWorld->run(this, HelloWorld_done); // Run HelloWorldThread and set the state of 'this' to HelloWorld_done when finished.
idle(HelloWorld_start); // Always go idle after starting a thread!
break;
}
case HelloWorld_done:
{
// We're done. Lets also abort when the thread reported no success.
if (mHelloWorld->thread_impl().successful()) // Read output/result of thread object.
finish();
else
abort();
break;
}
}
}
#endif // EXAMPLE CODE
class AIStateMachineThreadBase;
// Derive from this to implement the code that must run in another thread.
class AIThreadImpl {
private:
template<typename THREAD_IMPL> friend class AIStateMachineThread;
typedef AIAccess<AIStateMachineThreadBase*> StateMachineThread_wat;
AIThreadSafeSimpleDC<AIStateMachineThreadBase*> mStateMachineThread;
public:
virtual bool run(void) = 0;
bool thread_done(bool result);
bool state_machine_done(LLThread* threadp);
#ifdef LL_DEBUG
private:
char const* mName;
protected:
AIThreadImpl(char const* name = "AIStateMachineThreadBase::Thread") : mName(name) { }
public:
char const* getName(void) const { return mName; }
#endif
protected:
virtual ~AIThreadImpl() { }
};
// The base class for statemachine threads.
class AIStateMachineThreadBase : public AIStateMachine {
private:
// The actual thread (derived from LLThread).
class Thread;
protected:
typedef AIStateMachine direct_base_type;
// The states of this state machine.
enum thread_state_type {
start_thread = direct_base_type::max_state, // Start the thread (if necessary create it first).
wait_stopped // Wait till the thread is stopped.
};
public:
static state_type const max_state = wait_stopped + 1;
protected:
AIStateMachineThreadBase(void) { }
private:
// Handle initializing the object.
/*virtual*/ void initialize_impl(void);
// Handle mRunState.
/*virtual*/ void multiplex_impl(state_type run_state);
// Handle aborting from current bs_run state.
/*virtual*/ void abort_impl(void);
// Implemenation of state_str for run states.
/*virtual*/ char const* state_str_impl(state_type run_state) const;
// Returns a reference to the implementation code that needs to be run in the thread.
virtual AIThreadImpl& impl(void) = 0;
private:
Thread* mThread; // The thread that the code is run in.
bool mAbort; // (Inverse of) return value of AIThreadImpl::run(). Only valid in state wait_stopped.
public:
void schedule_abort(bool do_abort) { mAbort = do_abort; }
};
// The state machine that runs T::run() in a thread.
// THREAD_IMPL Must be derived from AIThreadImpl.
template<typename THREAD_IMPL>
class AIStateMachineThread : public AIStateMachineThreadBase {
private:
THREAD_IMPL mThreadImpl;
public:
// Constructor.
AIStateMachineThread(void)
{
*AIThreadImpl::StateMachineThread_wat(mThreadImpl.mStateMachineThread) = this;
}
// Accessor.
THREAD_IMPL& thread_impl(void) { return mThreadImpl; }
protected:
/*virtual*/ AIThreadImpl& impl(void) { return mThreadImpl; }
};
#endif

View File

@@ -31,11 +31,6 @@
#include "linden_common.h"
#include "aitimer.h"
enum timer_state_type {
AITimer_start = AIStateMachine::max_state,
AITimer_expired
};
char const* AITimer::state_str_impl(state_type run_state) const
{
switch(run_state)
@@ -43,6 +38,7 @@ char const* AITimer::state_str_impl(state_type run_state) const
AI_CASE_RETURN(AITimer_start);
AI_CASE_RETURN(AITimer_expired);
}
llassert(false);
return "UNKNOWN STATE";
}
@@ -54,12 +50,12 @@ void AITimer::initialize_impl(void)
void AITimer::expired(void)
{
set_state(AITimer_expired);
advance_state(AITimer_expired);
}
void AITimer::multiplex_impl(void)
void AITimer::multiplex_impl(state_type run_state)
{
switch (mRunState)
switch (run_state)
{
case AITimer_start:
{
@@ -79,18 +75,3 @@ void AITimer::abort_impl(void)
{
mFrameTimer.cancel();
}
void AITimer::finish_impl(void)
{
// Kill object by default.
// This can be overridden by calling run() from the callback function.
kill();
}
void AIPersistentTimer::finish_impl(void)
{
// Don't kill object by default.
if (aborted())
kill();
// Callback function should always call kill() or run().
}

View File

@@ -59,6 +59,18 @@
// just reuse the old ones (call the same callback).
//
class AITimer : public AIStateMachine {
protected:
// The base class of this state machine.
typedef AIStateMachine direct_base_type;
// The different states of the state machine.
enum timer_state_type {
AITimer_start = direct_base_type::max_state,
AITimer_expired
};
public:
static state_type const max_state = AITimer_expired + 1;
private:
AIFrameTimer mFrameTimer; //!< The actual timer that this object wraps.
F64 mInterval; //!< Input variable: interval after which the event will be generated, in seconds.
@@ -70,7 +82,6 @@ class AITimer : public AIStateMachine {
* @brief Set the interval after which the timer should expire.
*
* @param interval Amount of time in seconds before the timer will expire.
* @param True if the timer should be deleted after it expires; false means it will keep firing at regular intervals.
*
* Call abort() at any time to stop the timer (and delete the AITimer object).
*/
@@ -91,14 +102,11 @@ class AITimer : public AIStateMachine {
/*virtual*/ void initialize_impl(void);
// Handle mRunState.
/*virtual*/ void multiplex_impl(void);
/*virtual*/ void multiplex_impl(state_type run_state);
// Handle aborting from current bs_run state.
/*virtual*/ void abort_impl(void);
// Handle cleaning up from initialization (or post abort) state.
/*virtual*/ void finish_impl(void);
// Implemenation of state_str for run states.
/*virtual*/ char const* state_str_impl(state_type run_state) const;
@@ -107,12 +115,4 @@ class AITimer : public AIStateMachine {
void expired(void);
};
// Same as above but does not delete itself automatically by default after use.
// Call kill() on it yourself (from the callback function) when you're done with it!
class AIPersistentTimer : public AITimer {
protected:
// Handle cleaning up from initialization (or post abort) state.
/*virtual*/ void finish_impl(void);
};
#endif

View File

@@ -2,6 +2,9 @@
#
# Compilation options shared by all Second Life components.
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
include(Variables)
@@ -12,51 +15,46 @@ set(CMAKE_CXX_FLAGS_RELEASE
"-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=1 -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELEASESSE2
"-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=1 -DNDEBUG")
#llimage now requires this (?)
set(CMAKE_C_FLAGS_RELEASESSE2
"${CMAKE_CXX_FLAGS_RELEASESSE2}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-DLL_RELEASE=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1")
# Don't bother with a MinSizeRel build.
set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;ReleaseSSE2;Debug" CACHE STRING
set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING
"Supported build types." FORCE)
# Platform-specific compilation flags.
if (WINDOWS)
# Various libs are compiler specific, generate some variables here we can just use
# when we require them instead of reimplementing the test each time.
if (MSVC10)
set(MSVC_DIR 10.0)
set(MSVC_SUFFIX 100)
endif (MSVC10)
# Remove default /Zm1000 flag that cmake inserts
string (REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
string (REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
# Don't build DLLs.
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /arch:SSE2"
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP"
CACHE STRING "C++ compiler debug options" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP /arch:SSE2"
"${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP"
CACHE STRING "C++ compiler release-with-debug options" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP /arch:SSE /fp:fast"
"${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP /fp:fast -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
CACHE STRING "C++ compiler release options" FORCE)
set(CMAKE_C_FLAGS_RELEASE
"${CMAKE_C_FLAGS_RELEASE} ${LL_C_FLAGS} /O2 /Zi /MD /MP /arch:SSE /fp:fast"
"${CMAKE_C_FLAGS_RELEASE} ${LL_C_FLAGS} /O2 /Zi /MD /MP /fp:fast"
CACHE STRING "C compiler release options" FORCE)
set(CMAKE_CXX_FLAGS_RELEASESSE2
"${CMAKE_CXX_FLAGS_RELEASESSE2} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP /arch:SSE2 /fp:fast"
CACHE STRING "C++ compiler release-SSE2 options" FORCE)
set(CMAKE_C_FLAGS_RELEASESSE2
"${CMAKE_C_FLAGS_RELEASESSE2} ${LL_C_FLAGS} /O2 /Zi /MD /MP /arch:SSE2 /fp:fast"
CACHE STRING "C compiler release-SSE2 options" FORCE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LARGEADDRESSAWARE")
set(CMAKE_CXX_STANDARD_LIBRARIES "")
set(CMAKE_C_STANDARD_LIBRARIES "")
add_definitions(
/DLL_WINDOWS=1
/DUNICODE
@@ -66,58 +64,25 @@ if (WINDOWS)
/W3
/c
/Zc:forScope
/Zc:wchar_t-
/nologo
/Oy-
/arch:SSE2
)
# configure win32 API for windows XP+ compatibility
set(WINVER "0x0501" CACHE STRING "Win32 API Target version (see http://msdn.microsoft.com/en-us/library/aa383745%28v=VS.85%29.aspx)")
add_definitions("/DWINVER=${WINVER}" "/D_WIN32_WINNT=${WINVER}")
if(MSVC80 OR MSVC90 OR MSVC10)
set(CMAKE_CXX_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE} -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
CACHE STRING "C++ compiler release options" FORCE)
set(CMAKE_CXX_FLAGS_RELEASESSE2
"${CMAKE_CXX_FLAGS_RELEASESSE2} -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
CACHE STRING "C++ compiler release-SSE2 options" FORCE)
set(CMAKE_C_FLAGS_RELEASESSE2
"${CMAKE_CXX_FLAGS_RELEASESSE2} -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
CACHE STRING "C compiler release-SSE2 options" FORCE)
add_definitions(
/Zc:wchar_t-
)
endif (MSVC80 OR MSVC90 OR MSVC10)
# Are we using the crummy Visual Studio KDU build workaround?
if (NOT DISABLE_FATAL_WARNINGS)
add_definitions(/WX)
endif (NOT DISABLE_FATAL_WARNINGS)
# Various libs are compiler specific, generate some variables here we can just use
# when we require them instead of reimplementing the test each time.
if (MSVC71)
set(MSVC_DIR 7.1)
set(MSVC_SUFFIX 71)
elseif (MSVC80)
set(MSVC_DIR 8.0)
set(MSVC_SUFFIX 80)
elseif (MSVC90)
set(MSVC_DIR 9.0)
set(MSVC_SUFFIX 90)
elseif (MSVC10)
set(MSVC_DIR 10.0)
set(MSVC_SUFFIX 100)
endif (MSVC71)
if (MSVC10)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO")
endif(MSVC10)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO")
endif (WINDOWS)
set (GCC_EXTRA_OPTIMIZATIONS "-ffast-math")
@@ -144,7 +109,6 @@ if (LINUX)
add_definitions(-DLL_IGNORE_SIGCHLD)
if(${CMAKE_C_COMPILER} MATCHES "gcc*")
find_program(GXX g++)
mark_as_advanced(GXX)
@@ -197,9 +161,6 @@ if (LINUX)
# End of hacks.
#GCC Specific
add_definitions(-DCC_GCC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
if (NOT STANDALONE)
@@ -208,28 +169,29 @@ if (LINUX)
endif (NOT STANDALONE)
if (${ARCH} STREQUAL "x86_64")
add_definitions(-DLINUX64=1 -pipe)
set(CMAKE_CXX_FLAGS_RELEASESSE2 "${CMAKE_CXX_FLAGS_RELEASESSE2} -fomit-frame-pointer -mmmx -msse -mfpmath=sse -msse2 -ffast-math -ftree-vectorize -fweb -fexpensive-optimizations -frename-registers")
set(CMAKE_C_FLAGS_RELEASESSE2 "${CMAKE_C_FLAGS_RELEASESSE2} -fomit-frame-pointer -mmmx -msse -mfpmath=sse -msse2 -ffast-math -ftree-vectorize -fweb -fexpensive-optimizations -frename-registers")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fomit-frame-pointer -mmmx -msse -mfpmath=sse -msse2 -ffast-math -ftree-vectorize -fweb -fexpensive-optimizations -frename-registers")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -fomit-frame-pointer -mmmx -msse -mfpmath=sse -msse2 -ffast-math -ftree-vectorize -fweb -fexpensive-optimizations -frename-registers")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fomit-frame-pointer -ffast-math -funroll-loops")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fomit-frame-pointer -ffast-math -funroll-loops")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -ffast-math")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ffast-math")
else (${ARCH} STREQUAL "x86_64")
if (NOT STANDALONE)
set(MARCH_FLAG " -march=pentium4")
endif (NOT STANDALONE)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_CXX_FLAGS_RELEASESSE2 "${CMAKE_CXX_FLAGS_RELEASESSE2}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASESSE2 "${CMAKE_C_FLAGS_RELEASESSE2}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}")
endif (${ARCH} STREQUAL "x86_64")
elseif(${CMAKE_C_COMPILER} MATCHES "clang*")
find_program(CLANG clang++)
find_program(CLANG clang)
mark_as_advanced(CLANG)
find_program(CLANGXX clang++)
mark_as_advanced(CLANGXX)
add_definitions(
-DCC_CLANG
-D_FORTIFY_SOURCE=2
)
@@ -244,18 +206,39 @@ if (LINUX)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline -msse2")
set(CMAKE_CXX_FLAGS_RELEASESSE2 "${CMAKE_CXX_FLAGS_RELEASESSE2}${MARCH_FLAG} -msse2")
set(CMAKE_C_FLAGS_RELEASESSE2 "${CMAKE_C_FLAGS_RELEASESSE2}${MARCH_FLAG} -msse2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -msse2")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -msse2")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2")
elseif(${CMAKE_C_COMPILER} MATCHES "icc*" AND ${CMAKE_CXX_COMPILER} MATCHES "icpc*")
find_program(ICC icc)
mark_as_advanced(ICC)
add_definitions(
-D_FORTIFY_SOURCE=2
)
if (NOT STANDALONE)
# this stops us requiring a really recent glibc at runtime
add_definitions(-fno-stack-protector)
endif (NOT STANDALONE)
if (NOT STANDALONE)
set(MARCH_FLAG " -axsse4.1 -msse2")
endif (NOT STANDALONE)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline-functions")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline-functions")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -parallel -fp-model fast=1")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -parallel -fp-model fast=1")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -parallel -fp-model fast=1")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -parallel -fp-model fast=1")
endif()
set(CMAKE_CXX_FLAGS_DEBUG "-O0 ${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_C_FLAGS_DEBUG "-O0 ${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 ${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_C_FLAGS_RELEASE "-O3 ${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELEASESSE2 "-O3 ${CMAKE_CXX_FLAGS_RELEASESSE2}")
set(CMAKE_C_FLAGS_RELEASESSE2 "-O3 ${CMAKE_C_FLAGS_RELEASESSE2}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
endif (LINUX)
@@ -265,16 +248,23 @@ if (DARWIN)
add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE)
set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch")
# NOTE: it's critical that the optimization flag is put in front.
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELEASESSE2 "${CMAKE_CXX_FLAGS_RELEASESSE2} -O3 -msse2 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASESSE2 "${CMAKE_C_FLAGS_RELEASESSE2} -O3 -msse2 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
if(${CMAKE_C_COMPILER} MATCHES "gcc*")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch")
# NOTE: it's critical that the optimization flag is put in front.
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
elseif(${CMAKE_C_COMPILER} MATCHES "clang*")
# NOTE: it's critical that the optimization flag is put in front.
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse3")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -msse3")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -msse3")
endif()
endif (DARWIN)
@@ -283,8 +273,11 @@ if (LINUX OR DARWIN)
set(UNIX_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs")
set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS} -Wno-reorder -Wno-non-virtual-dtor -Woverloaded-virtual")
elseif(${CMAKE_C_COMPILER} MATCHES "clang*")
set(UNIX_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs -Wno-tautological-compare -Wno-char-subscripts -Wno-gnu -Wno-logical-op-parentheses
-Wno-non-virtual-dtor -Woverloaded-virtual -Wno-parentheses-equality -Wno-reorder -Wno-unused-function -Wno-unused-value -Wno-unused-variable")
set(UNIX_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs -Wno-tautological-compare -Wno-char-subscripts -Wno-gnu -Wno-logical-op-parentheses -Wno-non-virtual-dtor ")
set(UNIX_WARNINGS "${UNIX_WARNINGS} -Woverloaded-virtual -Wno-parentheses-equality -Wno-reorder -Wno-unused-function -Wno-unused-value -Wno-unused-variable")
set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS}")
elseif(${CMAKE_C_COMPILER} MATCHES "icc")
set(UNIX_WARNINGS "-wd327 -wd597 -wd858")
set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS}")
endif()
@@ -313,30 +306,31 @@ else (STANDALONE)
glib-2.0
gstreamer-0.10
gtk-2.0
llfreetype2
freetype2
pango-1.0
)
endif (STANDALONE)
if(1 EQUAL 1)
add_definitions(-DOPENSIM_RULES=1)
add_definitions(-DMESH_ENABLED=1)
add_definitions(-DENABLE_CLASSIC_CLOUDS=1)
if (NOT "$ENV{SHY_MOD}" STREQUAL "")
add_definitions(-DSHY_MOD=1)
endif (NOT "$ENV{SHY_MOD}" STREQUAL "")
endif(1 EQUAL 1)
SET( CMAKE_EXE_LINKER_FLAGS_RELEASESSE2
SET( CMAKE_EXE_LINKER_FLAGS_RELEASE
"${CMAKE_EXE_LINKER_FLAGS_RELEASE}" CACHE STRING
"Flags used for linking binaries under SSE2 build."
"Flags used for linking binaries under build."
FORCE )
SET( CMAKE_SHARED_LINKER_FLAGS_RELEASESSE2
SET( CMAKE_SHARED_LINKER_FLAGS_RELEASE
"${CMAKE_SHARED_LINKER_FLAGS_RELEASE}" CACHE STRING
"Flags used by the shared libraries linker under SSE2 build."
"Flags used by the shared libraries linker under build."
FORCE )
MARK_AS_ADVANCED(
CMAKE_CXX_FLAGS_RELEASESSE2
CMAKE_C_FLAGS_RELEASESSE2
CMAKE_EXE_LINKER_FLAGS_RELEASESSE2
CMAKE_SHARED_LINKER_FLAGS_RELEASESSE2 )
CMAKE_CXX_FLAGS_RELEASE
CMAKE_C_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_RELEASE
)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)

View File

@@ -1,4 +1,4 @@
# -*- cmake -*-
set(AISTATEMACHINE_INCLUDE_DIRS statemachine)
set(AISTATEMACHINE_LIBRARIES statemachine)
set(AISTATEMACHINE_INCLUDE_DIRS ${LIBS_OPEN_DIR}/aistatemachine)
set(AISTATEMACHINE_LIBRARIES aistatemachine)

View File

@@ -21,8 +21,6 @@ else (STANDALONE)
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapriconv-1.lib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapriconv-1.lib
)
# Doesn't need to link with iconv.dll
set(APRICONV_LIBRARIES "")
set(APRUTIL_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.lib ${APRICONV_LIBRARIES}
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.lib ${APRICONV_LIBRARIES}
@@ -33,8 +31,8 @@ else (STANDALONE)
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.0.dylib
)
set(APRUTIL_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.0.dylib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.0.dylib
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.dylib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.dylib
)
set(APRICONV_LIBRARIES iconv)
else (WINDOWS)
@@ -44,7 +42,7 @@ else (STANDALONE)
endif (WINDOWS)
set(APR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/apr-1)
if (LINUX AND VIEWER)
if (LINUX)
list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES})
endif (LINUX AND VIEWER)
endif (LINUX)
endif (STANDALONE)

View File

@@ -9,7 +9,7 @@ if (STANDALONE)
pkg_check_modules(VORBISFILE REQUIRED vorbisfile)
else (STANDALONE)
use_prebuilt_binary(ogg-vorbis)
set(VORBIS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(VORBIS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(VORBISENC_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
set(VORBISFILE_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
@@ -40,3 +40,11 @@ link_directories(
${VORBISFILE_LIBRARY_DIRS}
${OGG_LIBRARY_DIRS}
)
set(LLAUDIO_VORBIS_LIBRARIES
${VORBISENC_LIBRARIES}
${VORBISFILE_LIBRARIES}
${VORBIS_LIBRARIES}
${OGG_LIBRARIES}
)

View File

@@ -1,4 +1,4 @@
# -*- cmake -*-
include(Prebuilt)
set(DB_FIND_QUIETLY ON)
set(DB_FIND_REQUIRED ON)
@@ -8,9 +8,10 @@ if (STANDALONE)
else (STANDALONE)
if (LINUX)
# Need to add dependency pthread explicitely to support ld.gold.
set(DB_LIBRARIES db-4.2 pthread)
use_prebuilt_binary(db)
set(DB_LIBRARIES db-5.1 pthread)
else (LINUX)
set(DB_LIBRARIES db-4.2)
endif (LINUX)
set(DB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(DB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE)

View File

@@ -7,47 +7,33 @@ set(Boost_FIND_REQUIRED ON)
if (STANDALONE)
include(FindBoost)
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
set(BOOST_REGEX_LIBRARY boost_regex-mt)
set(BOOST_SYSTEM_LIBRARY boost_system-mt)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost 1.40.0 COMPONENTS date_time filesystem program_options regex system thread wave)
else (STANDALONE)
use_prebuilt_binary(boost)
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
if (WINDOWS)
set(BOOST_VERSION 1_45)
set(BOOST_OPTIM_SUFFIX mt)
set(BOOST_DEBUG_SUFFIX mt-gd)
# SNOW-788
# 00-Common.cmake alreay sets MSVC_SUFFIX to be correct for the VS we are using eg VC71, VC80, VC90 etc
# The precompiled boost libs for VC71 use a different suffix to VS80 and VS90
# This code should ensure the cmake rules are valid for any VS being used in future as long as the approprate
# boost libs are avaiable - RC.
if (MSVC71)
set(BOOST_OPTIM_SUFFIX mt-s)
set(BOOST_DEBUG_SUFFIX mt-sgd)
else (MSVC71)
set(BOOST_OPTIM_SUFFIX mt)
set(BOOST_DEBUG_SUFFIX mt-gd)
endif (MSVC71)
set(BOOST_PROGRAM_OPTIONS_LIBRARY
set(Boost_PROGRAM_OPTIONS_LIBRARY
optimized libboost_program_options-vc${MSVC_SUFFIX}-${BOOST_OPTIM_SUFFIX}-${BOOST_VERSION}
debug libboost_program_options-vc${MSVC_SUFFIX}-${BOOST_DEBUG_SUFFIX}-${BOOST_VERSION})
set(BOOST_REGEX_LIBRARY
set(Boost_REGEX_LIBRARY
optimized libboost_regex-vc${MSVC_SUFFIX}-${BOOST_OPTIM_SUFFIX}-${BOOST_VERSION}
debug libboost_regex-vc${MSVC_SUFFIX}-${BOOST_DEBUG_SUFFIX}-${BOOST_VERSION})
elseif (DARWIN)
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
set(BOOST_REGEX_LIBRARY boost_regex-mt)
set(BOOST_SYSTEM_LIBRARY boost_system-mt)
set(Boost_FILESYSTEM_LIBRARY boost_filesystem)
set(Boost_PROGRAM_OPTIONS_LIBRARY boost_program_options)
set(Boost_REGEX_LIBRARY boost_regex)
set(Boost_SYSTEM_LIBRARY boost_system)
elseif (LINUX)
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
set(BOOST_REGEX_LIBRARY boost_regex-mt)
set(BOOST_SYSTEM_LIBRARY boost_system-mt)
set(Boost_FILESYSTEM_LIBRARY boost_filesystem-mt)
set(Boost_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
set(Boost_REGEX_LIBRARY boost_regex-mt)
set(Boost_SYSTEM_LIBRARY boost_system-mt)
endif (WINDOWS)
endif (STANDALONE)

View File

@@ -8,85 +8,101 @@ set(cmake_SOURCE_FILES
CMakeLists.txt
00-Common.cmake
AIStateMachine.cmake
APR.cmake
Audio.cmake
BasicPluginBase.cmake
BerkeleyDB.cmake
Boost.cmake
BuildVersion.cmake
CARes.cmake
CURL.cmake
CMakeCopyIfDifferent.cmake
CURL.cmake
Colladadom.cmake
ConfigurePkgConfig.cmake
CopyBackToSource.cmake
CopyWinLibs.cmake
CSharpMacros.cmake
Cwdebug.cmake
DBusGlib.cmake
DirectX.cmake
DownloadPrebuilt.cmake.in
ELFIO.cmake
EXPAT.cmake
ExamplePlugin.cmake
FMOD.cmake
FMODEX.cmake
FindAPR.cmake
FindBerkeleyDB.cmake
FindCARes.cmake
FindColladadom.cmake
FindELFIO.cmake
FindGLOD.cmake
FindGooglePerfTools.cmake
FindHunSpell.cmake
FindMono.cmake
FindMT.cmake
FindMySQL.cmake
FindJsonCpp.cmake
FindLLQtWebkit.cmake
FindNDOF.cmake
FindOpenJPEG.cmake
FindTut.cmake
FindXmlRpcEpi.cmake
FMOD.cmake
FreeType.cmake
GLOD.cmake
GStreamer010Plugin.cmake
Glui.cmake
Glut.cmake
GooglePerfTools.cmake
HUNSPELL.cmake
Hunspell.cmake
JPEG.cmake
JsonCpp.cmake
LLAddBuildTest.cmake
LLAppearance.cmake
LLAudio.cmake
LLCharacter.cmake
LLCommon.cmake
LLCrashLogger.cmake
LLDatabase.cmake
LLImage.cmake
LLImageJ2COJ.cmake
LLInventory.cmake
LLKDU.cmake
LLMath.cmake
LLMessage.cmake
LLPhysicsExtensions.cmake
LLPlugin.cmake
LLPrimitive.cmake
LLPhysicsExtensions.cmake
LLQtWebkit.cmake
LLRender.cmake
LLScene.cmake
LLUI.cmake
LLVFS.cmake
LLWindow.cmake
LLXML.cmake
LScript.cmake
Linking.cmake
MonoEmbed.cmake
MySQL.cmake
MediaPluginBase.cmake
NDOF.cmake
OPENAL.cmake
OpenGL.cmake
OpenJPEG.cmake
OpenSSL.cmake
PNG.cmake
Python.cmake
PluginAPI.cmake
Prebuilt.cmake
PulseAudio.cmake
Python.cmake
Qt4.cmake
QuickTimePlugin.cmake
RunBuildTest.cmake
StateMachine.cmake
TemplateCheck.cmake
Tut.cmake
UI.cmake
UnixInstall.cmake
Variables.cmake
ViewerMiscLibs.cmake
WebKitLibPlugin.cmake
XmlRpcEpi.cmake
ZLIB.cmake
)
if(FMODEX)
list(APPEND cmake_SOURCE_FILES FMODEX.cmake)
endif(FMODEX)
source_group("Shared Rules" FILES ${cmake_SOURCE_FILES})
set(master_SOURCE_FILES
@@ -94,10 +110,6 @@ set(master_SOURCE_FILES
../develop.py
)
if (SERVER)
list(APPEND master_SOURCE_FILES ../Server.cmake)
endif (SERVER)
source_group("Master Rules" FILES ${master_SOURCE_FILES})
set_source_files_properties(${cmake_SOURCE_FILES} ${master_SOURCE_FILES}

View File

@@ -1,142 +0,0 @@
# - This is a support module for easy Mono/C# handling with CMake
# It defines the following macros:
#
# ADD_CS_LIBRARY (<target> <source>)
# ADD_CS_EXECUTABLE (<target> <source>)
# INSTALL_GAC (<target>)
#
# Note that the order of the arguments is important.
#
# You can optionally set the variable CS_FLAGS to tell the macros whether
# to pass additional flags to the compiler. This is particularly useful to
# set assembly references, unsafe code, etc... These flags are always reset
# after the target was added so you don't have to care about that.
#
# copyright (c) 2007 Arno Rehn arno@arnorehn.de
#
# Redistribution and use is allowed according to the terms of the GPL license.
# ----- support macros -----
MACRO(GET_CS_LIBRARY_TARGET_DIR)
IF (NOT LIBRARY_OUTPUT_PATH)
SET(CS_LIBRARY_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR})
ELSE (NOT LIBRARY_OUTPUT_PATH)
SET(CS_LIBRARY_TARGET_DIR ${LIBRARY_OUTPUT_PATH})
ENDIF (NOT LIBRARY_OUTPUT_PATH)
ENDMACRO(GET_CS_LIBRARY_TARGET_DIR)
MACRO(GET_CS_EXECUTABLE_TARGET_DIR)
IF (NOT EXECUTABLE_OUTPUT_PATH)
SET(CS_EXECUTABLE_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR})
ELSE (NOT EXECUTABLE_OUTPUT_PATH)
SET(CS_EXECUTABLE_TARGET_DIR ${EXECUTABLE_OUTPUT_PATH})
ENDIF (NOT EXECUTABLE_OUTPUT_PATH)
ENDMACRO(GET_CS_EXECUTABLE_TARGET_DIR)
MACRO(MAKE_PROPER_FILE_LIST)
FOREACH(file ${ARGN})
# first assume it's a relative path
FILE(GLOB globbed ${CMAKE_CURRENT_SOURCE_DIR}/${file})
IF(globbed)
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${file} native)
ELSE(globbed)
FILE(TO_NATIVE_PATH ${file} native)
ENDIF(globbed)
SET(proper_file_list ${proper_file_list} ${native})
SET(native "")
ENDFOREACH(file)
ENDMACRO(MAKE_PROPER_FILE_LIST)
# ----- end support macros -----
MACRO(ADD_CS_LIBRARY target)
GET_CS_LIBRARY_TARGET_DIR()
SET(target_DLL "${CS_LIBRARY_TARGET_DIR}/${target}.dll")
MAKE_PROPER_FILE_LIST(${ARGN})
FILE(RELATIVE_PATH relative_path ${CMAKE_BINARY_DIR} ${target_DLL})
SET(target_KEY "${CMAKE_CURRENT_SOURCE_DIR}/${target}.key")
SET(target_CS_FLAGS "${CS_FLAGS}")
IF(${target}_CS_FLAGS)
LIST(APPEND target_CS_FLAGS ${${target}_CS_FLAGS})
ENDIF(${target}_CS_FLAGS)
IF(EXISTS ${target_KEY})
LIST(APPEND target_CS_FLAGS -keyfile:${target_KEY})
ENDIF(EXISTS ${target_KEY})
FOREACH(ref ${${target}_REFS})
SET(ref_DLL ${CMAKE_CURRENT_BINARY_DIR}/${ref}.dll)
IF(EXISTS ${ref_DLL})
LIST(APPEND target_CS_FLAGS -r:${ref_DLL})
ELSE(EXISTS ${ref_DLL})
LIST(APPEND target_CS_FLAGS -r:${ref})
ENDIF(EXISTS ${ref_DLL})
ENDFOREACH(ref ${${target}_REFS})
ADD_CUSTOM_COMMAND (OUTPUT ${target_DLL}
COMMAND ${MCS_EXECUTABLE} ${target_CS_FLAGS} -out:${target_DLL} -target:library ${proper_file_list}
MAIN_DEPENDENCY ${proper_file_list}
DEPENDS ${ARGN}
COMMENT "Building ${relative_path}")
ADD_CUSTOM_TARGET (${target} ALL DEPENDS ${target_DLL})
FOREACH(ref ${${target}_REFS})
GET_TARGET_PROPERTY(is_target ${ref} TYPE)
IF(is_target)
ADD_DEPENDENCIES(${target} ${ref})
ENDIF(is_target)
ENDFOREACH(ref ${${target}_REFS})
SET(relative_path "")
SET(proper_file_list "")
ENDMACRO(ADD_CS_LIBRARY)
MACRO(ADD_CS_EXECUTABLE target)
GET_CS_EXECUTABLE_TARGET_DIR()
# Seems like cmake doesn't like the ".exe" ending for custom commands.
# If we call it ${target}.exe, 'make' will later complain about a missing rule.
# Create a fake target instead.
SET(target_EXE "${CS_EXECUTABLE_TARGET_DIR}/${target}.exe")
SET(target_TOUCH "${CS_EXECUTABLE_TARGET_DIR}/${target}.exe-built")
GET_DIRECTORY_PROPERTY(clean ADDITIONAL_MAKE_CLEAN_FILES)
LIST(APPEND clean ${target}.exe)
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${clean}")
MAKE_PROPER_FILE_LIST(${ARGN})
FILE(RELATIVE_PATH relative_path ${CMAKE_BINARY_DIR} ${target_EXE})
SET(target_CS_FLAGS "${CS_FLAGS}")
FOREACH(ref ${${target}_REFS})
SET(ref_DLL ${CMAKE_CURRENT_SOURCE_DIR}/${ref}.dll)
IF(EXISTS ${ref_DLL})
LIST(APPEND target_CS_FLAGS -r:${ref_DLL})
ELSE(EXISTS ${ref_DLL})
LIST(APPEND target_CS_FLAGS -r:${ref})
ENDIF(EXISTS ${ref_DLL})
ENDFOREACH(ref ${${target}_REFS})
ADD_CUSTOM_COMMAND (OUTPUT "${target_TOUCH}"
COMMAND ${MCS_EXECUTABLE} ${target_CS_FLAGS} -out:${target_EXE} ${proper_file_list}
COMMAND ${CMAKE_COMMAND} -E touch ${target_TOUCH}
MAIN_DEPENDENCY ${ARGN}
DEPENDS ${ARGN}
COMMENT "Building ${relative_path}")
ADD_CUSTOM_TARGET ("${target}" ALL DEPENDS "${target_TOUCH}")
FOREACH(ref ${${target}_REFS})
GET_TARGET_PROPERTY(is_target ${ref} TYPE)
IF(is_target)
ADD_DEPENDENCIES(${target} ${ref})
ENDIF(is_target)
ENDFOREACH(ref ${${target}_REFS})
SET(relative_path "")
SET(proper_file_list "")
ENDMACRO(ADD_CS_EXECUTABLE)
MACRO(INSTALL_GAC target)
GET_CS_LIBRARY_TARGET_DIR()
INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${GACUTIL_EXECUTABLE} -i ${CS_LIBRARY_TARGET_DIR}/${target}.dll -package 2.0)")
ENDMACRO(INSTALL_GAC target)

View File

@@ -1,7 +1,7 @@
# -*- cmake -*-
include(Prebuilt)
set(CURL_FIND_QUIETLY ON)
set(CURL_FIND_QUIETLY OFF)
set(CURL_FIND_REQUIRED ON)
if (STANDALONE)
@@ -14,6 +14,9 @@ else (STANDALONE)
optimized libcurl)
else (WINDOWS)
set(CURL_LIBRARIES curl)
if(LINUX AND WORD_SIZE EQUAL 64)
list(APPEND CURL_LIBRARIES idn)
endif(LINUX AND WORD_SIZE EQUAL 64)
endif (WINDOWS)
set(CURL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE)

View File

@@ -0,0 +1,46 @@
# -*- cmake -*-
include(Prebuilt)
set(COLLADADOM_FIND_QUIETLY OFF)
set(COLLADADOM_FIND_REQUIRED ON)
if (STANDALONE)
include (FindColladadom)
else (STANDALONE)
use_prebuilt_binary(colladadom)
if (NOT WINDOWS)
use_prebuilt_binary(pcre)
endif (NOT WINDOWS)
if (NOT DARWIN AND NOT WINDOWS)
use_prebuilt_binary(libxml)
endif (NOT DARWIN AND NOT WINDOWS)
set(COLLADADOM_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada/1.4
)
if (WINDOWS)
add_definitions(-DDOM_DYNAMIC)
set(COLLADADOM_LIBRARIES
debug libcollada14dom22-d
optimized libcollada14dom22
debug libboost_filesystem-vc100-mt-gd-1_45.lib
optimized libboost_filesystem-vc100-mt-1_45.lib
debug libboost_system-vc100-mt-gd-1_45.lib
optimized libboost_system-vc100-mt-1_45.lib
)
else (WINDOWS)
set(COLLADADOM_LIBRARIES
collada14dom
minizip
xml2
pcrecpp
pcre
)
endif (WINDOWS)
endif (STANDALONE)

View File

@@ -0,0 +1,74 @@
# -*- cmake -*-
SET(DEBUG_PKG_CONFIG "YES")
# Don't change this if manually set by user.
IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
# Guess at architecture-specific system library paths.
if (WORD_SIZE EQUAL 32)
SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib32 /usr/lib)
SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib32 /usr/local/lib)
SET(PKG_CONFIG_MULTI_GUESS /usr/lib/i386-linux-gnu)
SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/i386-linux-gnu)
else (WORD_SIZE EQUAL 32)
SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib64 /usr/lib)
SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib64 /usr/local/lib)
SET(PKG_CONFIG_MULTI_GUESS /usr/local/lib/x86_64-linux-gnu)
SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu)
endif (WORD_SIZE EQUAL 32)
# Use DPKG architecture, if available.
IF (${DPKG_ARCH})
SET(PKG_CONFIG_MULTI_GUESS /usr/lib/${DPKG_ARCH})
SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usrlocal/lib/${DPKG_ARCH})
ENDIF (${DPKG_ARCH})
# Explicitly include anything listed in PKG_CONFIG_PATH
string(REPLACE ":" ";" PKG_CONFIG_PATH_LIST "$ENV{PKG_CONFIG_PATH}")
FOREACH(PKG_CONFIG_DIR ${PKG_CONFIG_PATH_LIST})
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_DIR}/pkgconfig")
ENDFOREACH(PKG_CONFIG_DIR)
# Look for valid pkgconfig directories.
FIND_PATH(PKG_CONFIG_ENV pkgconfig ENV LD_LIBRARY_PATH)
FIND_PATH(PKG_CONFIG_MULTI pkgconfig HINT ${PKG_CONFIG_MULTI_GUESS})
FIND_PATH(PKG_CONFIG_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_MULTI_LOCAL_GUESS})
FIND_PATH(PKG_CONFIG_NO_MULTI pkgconfig HINT ${PKG_CONFIG_NO_MULTI_GUESS})
FIND_PATH(PKG_CONFIG_NO_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_NO_MULTI_LOCAL_GUESS})
# Add anything we found to our list.
IF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_ENV}/pkgconfig")
ENDIF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND)
IF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI}/pkgconfig")
ENDIF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND)
IF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI_LOCAL}/pkgconfig")
ENDIF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND)
IF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI}/pkgconfig")
ENDIF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND)
IF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND)
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI_LOCAL}/pkgconfig")
ENDIF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND)
# Also add some non-architecture specific package locations.
SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:/usr/share/pkgconfig:/usr/local/share/pkgconfig")
# Remove first unwanted ':'
string(SUBSTRING ${VALID_PKG_LIBDIRS} 1 -1 VALID_PKG_LIBDIRS)
# Set PKG_CONFIG_LIBDIR environment.
SET(ENV{PKG_CONFIG_LIBDIR} ${VALID_PKG_LIBDIRS})
ENDIF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
IF(DEBUG_PKG_CONFIG)
MESSAGE(STATUS "Using PKG_CONFIG_LIBDIR=$ENV{PKG_CONFIG_LIBDIR}")
ENDIF(DEBUG_PKG_CONFIG)

View File

@@ -29,6 +29,10 @@ set(debug_files
libapr-1.dll
libaprutil-1.dll
libapriconv-1.dll
libeay32.dll
ssleay32.dll
libcollada14dom22-d.dll
glod.dll
)
copy_if_different(
@@ -43,10 +47,6 @@ set(all_targets ${all_targets} ${out_targets})
set(plugintest_debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug")
set(plugintest_debug_files
libeay32.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgthread-2.0-0.dll
qtcored4.dll
qtguid4.dll
qtnetworkd4.dll
@@ -92,11 +92,6 @@ set(all_targets ${all_targets} ${out_targets})
set(plugintest_release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release")
set(plugintest_release_files
libeay32.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgthread-2.0-0.dll
# llkdu.dll (not required for plugin test)
qtcore4.dll
qtgui4.dll
qtnetwork4.dll
@@ -112,14 +107,6 @@ copy_if_different(
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/ReleaseSSE2"
out_targets
${plugintest_release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/RelWithDebInfo"
@@ -146,14 +133,6 @@ copy_if_different(
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/ReleaseSSE2/imageformats"
out_targets
${plugintest_release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/RelWithDebInfo/imageformats"
@@ -170,14 +149,6 @@ copy_if_different(
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2/llplugin/imageformats"
out_targets
${plugintest_release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/llplugin/imageformats"
@@ -224,14 +195,6 @@ copy_if_different(
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugins_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2/llplugin"
out_targets
${plugins_release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugins_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/llplugin"
@@ -247,46 +210,47 @@ set(release_files
libapr-1.dll
libaprutil-1.dll
libapriconv-1.dll
libeay32.dll
ssleay32.dll
libcollada14dom22.dll
glod.dll
)
if(FMODEX)
find_path(FMODEX_BINARY_DIR fmodex.dll
${release_src_dir}
${FMODEX_SDK_DIR}/api
${FMODEX_SDK_DIR}
find_path(FMODEX_BINARY_DIR fmodex.dll
"${release_src_dir}"
"${FMODEX_SDK_DIR}/api"
"${FMODEX_SDK_DIR}"
NO_DEFAULT_PATH
)
if(FMODEX_BINARY_DIR)
copy_if_different("${FMODEX_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Release" out_targets fmodex.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMODEX_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2" out_targets fmodex.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMODEX_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" out_targets fmodex.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMODEX_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Debug" out_targets fmodex.dll)
set(all_targets ${all_targets} ${out_targets})
endif(FMODEX_BINARY_DIR)
if(FMODEX_BINARY_DIR)
copy_if_different("${FMODEX_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Release" out_targets fmodex.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMODEX_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" out_targets fmodex.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMODEX_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Debug" out_targets fmodex.dll)
set(all_targets ${all_targets} ${out_targets})
endif(FMODEX_BINARY_DIR)
endif(FMODEX)
if(FMOD)
find_path(FMOD_BINARY_DIR fmod.dll
find_path(FMOD_BINARY_DIR fmod.dll
${release_src_dir}
${FMOD_SDK_DIR}/api
${FMOD_SDK_DIR}
)
if(FMOD_BINARY_DIR)
copy_if_different("${FMOD_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Release" out_targets fmod.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMOD_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2" out_targets fmod.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMOD_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" out_targets fmod.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMOD_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Debug" out_targets fmod.dll)
set(all_targets ${all_targets} ${out_targets})
else(FMOD_BINARY_DIR)
list(APPEND release_files fmod.dll) #Required for compile. This will cause an error in copying binaries.
endif(FMOD_BINARY_DIR)
if(FMOD_BINARY_DIR)
copy_if_different("${FMOD_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Release" out_targets fmod.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMOD_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" out_targets fmod.dll)
set(all_targets ${all_targets} ${out_targets})
copy_if_different("${FMOD_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/Debug" out_targets fmod.dll)
set(all_targets ${all_targets} ${out_targets})
else(FMOD_BINARY_DIR)
list(APPEND release_files fmod.dll) #Required for compile. This will cause an error in copying binaries.
endif(FMOD_BINARY_DIR)
endif(FMOD)
copy_if_different(
@@ -305,22 +269,6 @@ copy_if_different(
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2"
out_targets
${release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${vivox_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2"
out_targets
${vivox_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo"
@@ -337,62 +285,6 @@ copy_if_different(
)
set(all_targets ${all_targets} ${out_targets})
set(internal_llkdu_path "${CMAKE_SOURCE_DIR}/llkdu")
if(EXISTS ${internal_llkdu_path})
set(internal_llkdu_src "${CMAKE_BINARY_DIR}/llkdu/${CMAKE_CFG_INTDIR}/llkdu.dll")
set(llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llkdu.dll")
ADD_CUSTOM_COMMAND(
OUTPUT ${llkdu_dst}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${internal_llkdu_src} ${llkdu_dst}
DEPENDS ${internal_llkdu_src}
COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
)
set(all_targets ${all_targets} ${llkdu_dst})
else(EXISTS ${internal_llkdu_path})
if (EXISTS "${debug_src_dir}/llkdu.dll")
set(debug_llkdu_src "${debug_src_dir}/llkdu.dll")
set(debug_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/Debug/llkdu.dll")
ADD_CUSTOM_COMMAND(
OUTPUT ${debug_llkdu_dst}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${debug_llkdu_src} ${debug_llkdu_dst}
DEPENDS ${debug_llkdu_src}
COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/Debug"
)
set(all_targets ${all_targets} ${debug_llkdu_dst})
endif (EXISTS "${debug_src_dir}/llkdu.dll")
if (EXISTS "${release_src_dir}/llkdu.dll")
set(release_llkdu_src "${release_src_dir}/llkdu.dll")
set(release_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/Release/llkdu.dll")
ADD_CUSTOM_COMMAND(
OUTPUT ${release_llkdu_dst}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${release_llkdu_src} ${release_llkdu_dst}
DEPENDS ${release_llkdu_src}
COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/Release"
)
set(all_targets ${all_targets} ${release_llkdu_dst})
set(releasesse2_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2/llkdu.dll")
ADD_CUSTOM_COMMAND(
OUTPUT ${releasesse2_llkdu_dst}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${release_llkdu_src} ${releasesse2_llkdu_dst}
DEPENDS ${release_llkdu_src}
COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2"
)
set(all_targets ${all_targets} ${releasesse2_llkdu_dst})
set(relwithdebinfo_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/llkdu.dll")
ADD_CUSTOM_COMMAND(
OUTPUT ${relwithdebinfo_llkdu_dst}
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${release_llkdu_src} ${relwithdebinfo_llkdu_dst}
DEPENDS ${release_llkdu_src}
COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo"
)
set(all_targets ${all_targets} ${relwithdebinfo_llkdu_dst})
endif (EXISTS "${release_src_dir}/llkdu.dll")
endif (EXISTS ${internal_llkdu_path})
# Copy MS C runtime dlls, required for packaging.
# *TODO - Adapt this to support VC9
if (MSVC80)
@@ -455,14 +347,6 @@ if (MSVC80)
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${release_msvc8_redist_path}
"${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2"
out_targets
${release_msvc8_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${release_msvc8_redist_path}
"${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo"
@@ -483,19 +367,6 @@ if (MSVC80)
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Release/Microsoft.VC80.CRT.manifest
COMMENT "Creating release app config file"
)
set(releasesse2_appconfig_file ${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2/${VIEWER_BINARY_NAME}.exe.config)
add_custom_command(
OUTPUT ${releasesse2_appconfig_file}
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/build_win32_appConfig.py
${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2/Microsoft.VC80.CRT.manifest
${CMAKE_CURRENT_SOURCE_DIR}/SecondLife.exe.config
${releasesse2_appconfig_file}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ReleaseSSE2/Microsoft.VC80.CRT.manifest
COMMENT "Creating release-sse2 app config file"
)
set(relwithdebinfo_appconfig_file ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/${VIEWER_BINARY_NAME}.exe.config)
add_custom_command(
@@ -517,12 +388,8 @@ add_custom_target(copy_win_libs ALL
DEPENDS
${all_targets}
${release_appconfig_file}
${releasesse2_appconfig_file}
${relwithdebinfo_appconfig_file}
${debug_appconfig_file}
)
add_dependencies(copy_win_libs prepare)
if(EXISTS ${internal_llkdu_path})
add_dependencies(copy_win_libs llkdu)
endif(EXISTS ${internal_llkdu_path})

View File

@@ -1 +1,18 @@
set(CWDEBUG_LIBRARIES cwdebug)
include_directories (${CMAKE_SOURCE_DIR}/cwdebug)
set(cwdebug_SOURCE_FILES
${CMAKE_SOURCE_DIR}/cwdebug/debug.cc
)
set(cwdebug_HEADER_FILES
${CMAKE_SOURCE_DIR}/cwdebug/cwdebug.h
${CMAKE_SOURCE_DIR}/cwdebug/sys.h
${CMAKE_SOURCE_DIR}/cwdebug/debug.h
${CMAKE_SOURCE_DIR}/cwdebug/debug_ostream_operators.h
)
set_source_files_properties(${cwdebug_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND cwdebug_SOURCE_FILES ${cwdebug_HEADER_FILES})

View File

@@ -7,15 +7,14 @@ if (STANDALONE)
pkg_check_modules(DBUSGLIB REQUIRED dbus-glib-1)
elseif (LINUX)
use_prebuilt_binary(glib) # dbusglib needs glib
use_prebuilt_binary(dbusglib)
set(DBUSGLIB_FOUND ON FORCE BOOL)
set(DBUSGLIB_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/dbus
)
# We don't need to explicitly link against dbus-glib itself, because
# the viewer probes for the system's copy at runtime.
set(DBUSGLIB_LIBRARIES
dbus-glib-1
gobject-2.0
glib-2.0
)

View File

@@ -1,6 +1,6 @@
# -*- cmake -*-
if (VIEWER AND WINDOWS)
if (WINDOWS)
find_path(DIRECTX_INCLUDE_DIR dxdiag.h
"$ENV{DXSDK_DIR}/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include"
@@ -43,4 +43,4 @@ if (VIEWER AND WINDOWS)
message(FATAL_ERROR "Could not find DirectX SDK Libraries")
endif (DIRECTX_LIBRARY_DIR)
endif (VIEWER AND WINDOWS)
endif (WINDOWS)

View File

@@ -8,7 +8,7 @@ if (STANDALONE)
elseif (LINUX)
use_prebuilt_binary(elfio)
set(ELFIO_LIBRARIES ELFIO)
set(ELFIO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
set(ELFIO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(ELFIO_FOUND "YES")
endif (STANDALONE)

View File

@@ -13,5 +13,5 @@ else (STANDALONE)
else (WINDOWS)
set(EXPAT_LIBRARIES expat)
endif (WINDOWS)
set(EXPAT_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(EXPAT_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE)

View File

@@ -2,57 +2,59 @@
include(Linking)
if(INSTALL_PROPRIETARY)
include(Prebuilt)
use_prebuilt_binary(fmodex)
endif(INSTALL_PROPRIETARY)
find_library(FMODEX_LIBRARY
NAMES fmodex fmodex_vc fmodexL_vc
PATHS
optimized ${ARCH_PREBUILT_DIRS_RELEASE}
debug ${ARCH_PREBUILT_DIRS_DEBUG}
)
if (NOT FMODEX_LIBRARY)
set(FMODEX_SDK_DIR CACHE PATH "Path to the FMOD Ex SDK.")
if (FMODEX_SDK_DIR)
find_library(FMODEX_LIBRARY
fmodex fmodex_vc fmodexL_vc
PATHS
${FMODEX_SDK_DIR}/api/lib
${FMODEX_SDK_DIR}/api
${FMODEX_SDK_DIR}/lib
${FMODEX_SDK_DIR}
)
if(WORD_SIZE EQUAL 32)
find_library(FMODEX_LIBRARY
fmodex_vc fmodexL_vc fmodex fmodexL
PATHS
"${FMODEX_SDK_DIR}/api/lib"
"${FMODEX_SDK_DIR}/api"
"${FMODEX_SDK_DIR}/lib"
"${FMODEX_SDK_DIR}"
)
elseif(WORD_SIZE EQUAL 64)
find_library(FMODEX_LIBRARY
fmodex64 fmodexL64
PATHS
"${FMODEX_SDK_DIR}/api/lib"
"${FMODEX_SDK_DIR}/api"
"${FMODEX_SDK_DIR}/lib"
"${FMODEX_SDK_DIR}"
)
endif(WORD_SIZE EQUAL 32)
endif(FMODEX_SDK_DIR)
if(WINDOWS AND NOT FMODEX_LIBRARY)
set(FMODEX_PROG_DIR "$ENV{PROGRAMFILES}/FMOD SoundSystem/FMOD Programmers API Windows")
find_library(FMODEX_LIBRARY
fmodex_vc fmodexL_vc
set(FMODEX_PROG_DIR "$ENV{PROGRAMFILES}/FMOD SoundSystem/FMOD Programmers API Windows")
find_library(FMODEX_LIBRARY
fmodex_vc fmodexL_vc
PATHS
${FMODEX_PROG_DIR}/api/lib
${FMODEX_PROG_DIR}/api
${FMODEX_PROG_DIR}
"${FMODEX_PROG_DIR}/api/lib"
"${FMODEX_PROG_DIR}/api"
"${FMODEX_PROG_DIR}"
)
if(FMODEX_LIBRARY)
message(STATUS "Found fmodex in ${FMODEX_PROG_DIR}")
set(FMODEX_SDK_DIR ${FMODEX_PROG_DIR})
set(FMODEX_SDK_DIR ${FMODEX_PROG_DIR} CACHE PATH "Path to the FMOD Ex SDK." FORCE)
endif(FMODEX_LIBRARY)
if(FMODEX_LIBRARY)
message(STATUS "Found fmodex in ${FMODEX_PROG_DIR}")
set(FMODEX_SDK_DIR "${FMODEX_PROG_DIR}")
set(FMODEX_SDK_DIR "${FMODEX_PROG_DIR}" CACHE PATH "Path to the FMOD Ex SDK." FORCE)
endif(FMODEX_LIBRARY)
endif(WINDOWS AND NOT FMODEX_LIBRARY)
endif (NOT FMODEX_LIBRARY)
find_path(FMODEX_INCLUDE_DIR fmod.h
${LIBS_PREBUILT_DIR}/include/fmodex
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/fmodex
${FMODEX_SDK_DIR}/api/inc
${FMODEX_SDK_DIR}/inc
${FMODEX_SDK_DIR}
find_path(FMODEX_INCLUDE_DIR fmod.hpp
"${LIBS_PREBUILT_DIR}/include/fmodex"
"${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/fmodex"
"${FMODEX_SDK_DIR}/api/inc"
"${FMODEX_SDK_DIR}/inc"
"${FMODEX_SDK_DIR}"
)
if(DARWIN)
set(FMODEX_ORIG_LIBRARY "${FMODEX_LIBRARY}")
set(FMODEX_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/libfmodex.dylib")
endif(DARWIN)
if (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
set(FMODEX ON CACHE BOOL "Use closed source FMOD Ex sound library.")
else (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)

View File

@@ -0,0 +1,31 @@
# -*- cmake -*-
# - Find collada14dom
# Find the colladadom version 1.4 includes and library
# This module defines
# COLLADADOM_FOUND, System has libcollada14dom.so.
# COLLADADOM_INCLUDE_DIRS - The collada include directories.
# COLLADADOM_LIBRARIES - The libraries needed to use libcollada14dom.
# COLLADADOM_DEFINITIONS - Compiler switches required for using libcollada14dom.
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_COLLADADOM collada)
SET(COLLADADOM_DEFINITIONS ${PC_COLLADADOM_CFLAGS_OTHER})
FIND_PATH(COLLADADOM_INCLUDE_DIR dae.h
HINTS ${PC_COLLADADOM_INCLUDE_DIR} ${PC_COLLADADOM_INCLUDE_DIRS}
PATH_SUFFIXES collada)
FIND_LIBRARY(COLLADADOM_LIBRARY
NAMES libcollada14dom.so
HINTS ${PC_COLLADADOM_LIBDIR} ${PC_COLLADADOM_LIBRARY_DIRS}
PATHS /usr/lib /usr/local/lib)
SET(COLLADADOM_LIBRARIES ${COLLADADOM_LIBRARY})
SET(COLLADADOM_INCLUDE_DIRS ${COLLADADOM_INCLUDE_DIR} ${COLLADADOM_INCLUDE_DIR}/1.4)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(COLLADADOM DEFAULT_MSG
COLLADADOM_LIBRARY COLLADADOM_INCLUDE_DIR)
MARK_AS_ADVANCED(COLLADADOM_LIBRARY COLLADADOM_INCLUDE_DIR)

View File

@@ -0,0 +1,32 @@
# -*- cmake -*-
# - Find GLOD
# Find the GLOD includes and library
# This module defines
# GLOD_FOUND, System has libglod.so.
# GLOD_INCLUDE_DIRS - The GLOD include directories.
# GLOD_LIBRARIES - The libraries needed to use libglod.
# GLOD_DEFINITIONS - Compiler switches required for using libglod.
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_GLOD glod)
SET(GLOD_DEFINITIONS ${PC_GLOD_CFLAGS_OTHER})
FIND_PATH(GLOD_INCLUDE_DIR glod/glod.h
HINTS ${PC_GLOD_INCLUDE_DIR} ${PC_GLOD_INCLUDE_DIRS}
)
FIND_LIBRARY(GLOD_LIBRARY
NAMES libGLOD.so
HINTS ${PC_GLOD_LIBDIR} ${PC_GLOD_LIBRARY_DIRS}
PATHS /usr/lib /usr/local/lib)
SET(GLOD_LIBRARIES ${GLOD_LIBRARY})
SET(GLOD_INCLUDE_DIRS ${GLOD_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLOD DEFAULT_MSG
GLOD_LIBRARY GLOD_INCLUDE_DIR)
MARK_AS_ADVANCED(GLOD_LIBRARY GLOD_INCLUDE_DIR)

View File

@@ -5,7 +5,7 @@ FIND_PATH(HUNSPELL_INCLUDE_DIR hunspell.hxx
/usr/include
)
SET(HUNSPELL_NAMES ${HUNSPELL_NAMES} hunspell hunspell-1.2)
SET(HUNSPELL_NAMES ${HUNSPELL_NAMES} hunspell hunspell-1.2 hunspell-1.3)
FIND_LIBRARY(HUNSPELL_LIBRARY
NAMES ${HUNSPELL_NAMES}
PATHS /usr/lib /usr/local/lib

View File

@@ -3,16 +3,18 @@
# - Find JSONCpp
# Find the JSONCpp includes and library
# This module defines
# JSONCPP_INCLUDE_DIR, where to find json.h, etc.
# JSONCPP_LIBRARIES, the libraries needed to use jsoncpp.
# JSONCPP_FOUND, If false, do not try to use jsoncpp.
# also defined, but not for general use are
# JSONCPP_LIBRARY, where to find the jsoncpp library.
# JSONCPP_FOUND, System has libjsoncpp.
# JSONCPP_INCLUDE_DIRS - The libjsoncpp include directories.
# JSONCPP_LIBRARIES - The libraries needed to use libjsoncpp.
# JSONCPP_DEFINITIONS - Compiler switches required for using libjsoncpp.
FIND_PATH(JSONCPP_INCLUDE_DIR json/json.h
/usr/local/include
/usr/include
)
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_JSONCPP jsoncpp)
SET(JSONCPP_DEFINITIONS ${PC_JSONCPP_CFLAGS_OTHER})
FIND_PATH(JSONCPP_INCLUDE_DIR json/reader.h
HINTS ${PC_JSONCPP_INCLUDE_DIR} ${PC_JSONCPP_INCLUDE_DIRS}
PATH_SUFFIXES jsoncpp)
# Get the GCC compiler version
EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
@@ -22,39 +24,16 @@ EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
)
# Try to find a library that was compiled with the same compiler version as we currently use.
SET(JSONCPP_NAMES ${JSONCPP_NAMES} libjson_linux-gcc-${_gcc_COMPILER_VERSION}_libmt.so)
IF (STANDALONE)
# On standalone, assume that the system installed library was compiled with the used compiler.
SET(JSONCPP_NAMES ${JSONCPP_NAMES} libjson.so)
ENDIF (STANDALONE)
FIND_LIBRARY(JSONCPP_LIBRARY
NAMES ${JSONCPP_NAMES}
PATHS /usr/lib /usr/local/lib
)
NAMES libjson_linux-gcc-${_gcc_COMPILER_VERSION}_libmt.so libjsoncpp.so
HINTS ${PC_JSONCPP_LIBDIR} ${PC_JSONCPP_LIBRARY_DIRS}
PATHS /usr/lib /usr/local/lib)
IF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR)
SET(JSONCPP_LIBRARIES ${JSONCPP_LIBRARY})
SET(JSONCPP_FOUND "YES")
ELSE (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR)
SET(JSONCPP_FOUND "NO")
ENDIF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR)
SET(JSONCPP_LIBRARIES ${JSONCPP_LIBRARY})
SET(JSONCPP_INCLUDE_DIRS ${JSONCPP_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(JSONCPP DEFAULT_MSG
JSONCPP_LIBRARY JSONCPP_INCLUDE_DIR)
IF (JSONCPP_FOUND)
IF (NOT JSONCPP_FIND_QUIETLY)
MESSAGE(STATUS "Found JSONCpp: ${JSONCPP_LIBRARIES}")
ENDIF (NOT JSONCPP_FIND_QUIETLY)
ELSE (JSONCPP_FOUND)
IF (JSONCPP_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find JSONCpp library")
ENDIF (JSONCPP_FIND_REQUIRED)
ENDIF (JSONCPP_FOUND)
# Deprecated declarations.
SET (NATIVE_JSONCPP_INCLUDE_PATH ${JSONCPP_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_JSONCPP_LIB_PATH ${JSONCPP_LIBRARY} PATH)
MARK_AS_ADVANCED(
JSONCPP_LIBRARY
JSONCPP_INCLUDE_DIR
)
MARK_AS_ADVANCED(JSONCPP_LIBRARY JSONCPP_INCLUDE_DIR)

View File

@@ -35,7 +35,7 @@ find_path(LLQTWEBKIT_INCLUDE_DIR llqtwebkit.h NO_SYSTEM_ENVIRONMENT_PATH HINTS $
find_library(LLQTWEBKIT_LIBRARY NAMES llqtwebkit NO_SYSTEM_ENVIRONMENT_PATH HINTS ${LLQTWEBKIT_LIBRARY_DIRS})
if (NOT PKG_CONFIG_FOUND OR NOT LLQTWEBKIT_FOUND) # If pkg-config couldn't find it, pretend we don't have pkg-config.
if (NOT PKG_CONFIG_FOUND OR NOT LLQTWEBKIT_FOUND) # If pkg-config couldn't find it, pretend we don't have pkg-config.
set(LLQTWEBKIT_LIBRARIES llqtwebkit)
get_filename_component(LLQTWEBKIT_LIBRARY_DIRS ${LLQTWEBKIT_LIBRARY} PATH)
endif (NOT PKG_CONFIG_FOUND OR NOT LLQTWEBKIT_FOUND)

View File

@@ -1,17 +0,0 @@
#Find the windows manifest tool.
if (MSVC80)
FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt
PATHS
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin"
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
IF(HAVE_MANIFEST_TOOL)
MESSAGE(STATUS "Found Mainfest Tool. Embedding custom manifests.")
ELSE(HAVE_MANIFEST_TOOL)
MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.")
ENDIF(HAVE_MANIFEST_TOOL)
STRING(REPLACE "/MANIFEST " "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS
${CMAKE_EXE_LINKER_FLAGS})
endif (MSVC80)

View File

@@ -1,68 +0,0 @@
# - Try to find the mono, mcs, gmcs and gacutil
#
# defines
#
# MONO_FOUND - system has mono, mcs, gmcs and gacutil
# MONO_PATH - where to find 'mono'
# MCS_PATH - where to find 'mcs'
# GMCS_PATH - where to find 'gmcs'
# GACUTIL_PATH - where to find 'gacutil'
#
# copyright (c) 2007 Arno Rehn arno@arnorehn.de
#
# Redistribution and use is allowed according to the terms of the GPL license.
# Removed the check for gmcs
FIND_PROGRAM (MONO_EXECUTABLE mono
"$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
"$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
/bin
/usr/bin
/usr/local/bin
)
FIND_PROGRAM (MCS_EXECUTABLE mcs
"$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
"$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
/bin
/usr/bin
/usr/local/bin
)
FIND_PROGRAM (GMCS_EXECUTABLE gmcs
"$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
"$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
/bin
/usr/bin
/usr/local/bin
)
FIND_PROGRAM (GACUTIL_EXECUTABLE gacutil
"$ENV{PROGRAMFILES}/Mono-1.9.1/bin"
"$ENV{PROGRAMFILES}/Mono-1.2.6/bin"
/bin
/usr/bin
/usr/local/bin
)
FIND_PROGRAM (ILASM_EXECUTABLE
ilasm
NO_DEFAULT_PATH
PATHS "$ENV{PROGRAMFILES}/Mono-1.9.1/bin" "$ENV{PROGRAMFILES}/Mono-1.2.6/bin" /bin /usr/bin /usr/local/bin
)
SET (MONO_FOUND FALSE)
IF (MONO_EXECUTABLE AND MCS_EXECUTABLE AND GACUTIL_EXECUTABLE)
SET (MONO_FOUND TRUE)
ENDIF (MONO_EXECUTABLE AND MCS_EXECUTABLE AND GACUTIL_EXECUTABLE)
IF (MONO_FOUND)
IF (NOT Mono_FIND_QUIETLY)
MESSAGE(STATUS "Found mono: ${MONO_EXECUTABLE}")
MESSAGE(STATUS "Found mcs: ${MCS_EXECUTABLE}")
MESSAGE(STATUS "Found gacutil: ${GACUTIL_EXECUTABLE}")
ENDIF (NOT Mono_FIND_QUIETLY)
ELSE (MONO_FOUND)
IF (Mono_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find one or more of the following programs: mono, mcs, gacutil")
ENDIF (Mono_FIND_REQUIRED)
ENDIF (MONO_FOUND)
MARK_AS_ADVANCED(MONO_EXECUTABLE MCS_EXECUTABLE GACUTIL_EXECUTABLE)

View File

@@ -1,48 +0,0 @@
# -*- cmake -*-
# - Find MySQL
# Find the MySQL includes and library
# This module defines
# MYSQL_INCLUDE_DIR, where to find mysql.h, etc.
# MYSQL_LIBRARIES, the libraries needed to use Mysql.
# MYSQL_FOUND, If false, do not try to use Mysql.
# also defined, but not for general use are
# MYSQL_LIBRARY, where to find the Mysql library.
FIND_PATH(MYSQL_INCLUDE_DIR mysql/mysql.h
/usr/local/include
/usr/include
)
SET(MYSQL_NAMES ${MYSQL_NAMES} mysqlclient)
FIND_LIBRARY(MYSQL_LIBRARY
NAMES ${MYSQL_NAMES}
PATHS /usr/lib/mysql /usr/lib /usr/local/lib/mysql /usr/local/lib
)
IF (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR)
SET(MYSQL_LIBRARIES ${MYSQL_LIBRARY})
SET(MYSQL_FOUND "YES")
ELSE (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR)
SET(MYSQL_FOUND "NO")
ENDIF (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR)
IF (MYSQL_FOUND)
IF (NOT MYSQL_FIND_QUIETLY)
MESSAGE(STATUS "Found MySQL: ${MYSQL_LIBRARIES}")
ENDIF (NOT MYSQL_FIND_QUIETLY)
ELSE (MYSQL_FOUND)
IF (MYSQL_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find MySQL library")
ENDIF (MYSQL_FIND_REQUIRED)
ENDIF (MYSQL_FOUND)
# Deprecated declarations.
SET (NATIVE_MYSQL_INCLUDE_PATH ${MYSQL_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_MYSQL_LIB_PATH ${MYSQL_LIBRARY} PATH)
MARK_AS_ADVANCED(
MYSQL_LIBRARY
MYSQL_INCLUDE_DIR
)

View File

@@ -11,7 +11,7 @@ else (STANDALONE)
set(FREETYPE_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
else (LINUX)
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (LINUX)
set(FREETYPE_LIBRARIES freetype)

13
indra/cmake/GLOD.cmake Normal file
View File

@@ -0,0 +1,13 @@
# -*- cmake -*-
include(Prebuilt)
set(GLOD_FIND_QUIETLY OFF)
set(GLOD_FIND_REQUIRED ON)
if (STANDALONE)
include(FindGLOD)
else (STANDALONE)
use_prebuilt_binary(GLOD)
set(GLOD_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(GLOD_LIBRARIES glod)
endif (STANDALONE)

View File

@@ -1,16 +1,20 @@
# -*- cmake -*-
include(Prebuilt)
if(WORD_SIZE EQUAL 64)
set(DISABLE_TCMALLOC TRUE)
endif(WORD_SIZE EQUAL 64)
if (STANDALONE)
include(FindGooglePerfTools)
else (STANDALONE)
if (LINUX OR WINDOWS)
use_prebuilt_binary(google)
endif (LINUX OR WINDOWS)
if (WINDOWS)
if (LINUX OR WINDOWS AND NOT WORD_SIZE EQUAL 64)
use_prebuilt_binary(gperftools)
endif (LINUX OR WINDOWS AND NOT WORD_SIZE EQUAL 64)
if (WINDOWS AND NOT DISABLE_TCMALLOC)
set(TCMALLOC_LIBRARIES libtcmalloc_minimal.lib)
set(TCMALLOC_LINKER_FLAGS "/INCLUDE:\"__tcmalloc\"")
endif (WINDOWS)
endif (WINDOWS AND NOT DISABLE_TCMALLOC)
if (LINUX)
if(USE_GOOGLE_PERFTOOLS)
set(TCMALLOC_LIBRARIES tcmalloc)

View File

@@ -1,16 +0,0 @@
# -*- cmake -*-
include(Prebuilt)
if (STANDALONE)
include(FindHunSpell)
else (STANDALONE)
use_prebuilt_binary(hunspell)
set(HUNSPELL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/hunspell)
if (LINUX OR DARWIN)
set(HUNSPELL_LIBRARY hunspell-1.2)
else (LINUX OR DARWIN)
set(HUNSPELL_LIBRARY libhunspell)
endif (LINUX OR DARWIN)
endif (STANDALONE)

View File

@@ -0,0 +1,16 @@
# -*- cmake -*-
include(Prebuilt)
if (STANDALONE)
include(FindHunSpell)
else (STANDALONE)
use_prebuilt_binary(hunspell)
set(HUNSPELL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/hunspell)
if (LINUX OR DARWIN)
set(HUNSPELL_LIBRARY hunspell-1.3)
else (LINUX OR DARWIN)
set(HUNSPELL_LIBRARY libhunspell)
endif (LINUX OR DARWIN)
endif (STANDALONE)

View File

@@ -13,11 +13,11 @@ else (STANDALONE)
set(JPEG_LIBRARIES jpeg)
elseif (DARWIN)
set(JPEG_LIBRARIES
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/liblljpeg.a
debug ${ARCH_PREBUILT_DIRS_DEBUG}/liblljpeg.a
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libjpeg.a
)
elseif (WINDOWS)
set(JPEG_LIBRARIES jpeglib)
endif (LINUX)
set(JPEG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(JPEG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE)

View File

@@ -2,7 +2,7 @@
include(Prebuilt)
set(JSONCPP_FIND_QUIETLY ON)
set(JSONCPP_FIND_QUIETLY OFF)
set(JSONCPP_FIND_REQUIRED ON)
if (STANDALONE)
@@ -14,9 +14,9 @@ else (STANDALONE)
debug json_vc${MSVC_SUFFIX}d
optimized json_vc${MSVC_SUFFIX})
elseif (DARWIN)
set(JSONCPP_LIBRARIES json_mac-universal-gcc_libmt)
set(JSONCPP_LIBRARIES json_linux-gcc-4.0.1_libmt)
elseif (LINUX)
set(JSONCPP_LIBRARIES jsoncpp)
endif (WINDOWS)
set(JSONCPP_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/jsoncpp)
set(JSONCPP_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/jsoncpp)
endif (STANDALONE)

View File

@@ -0,0 +1,11 @@
# -*- cmake -*-
include(Variables)
set(LLAPPEARANCE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llappearance
)
set(LLAPPEARANCE_LIBRARIES llappearance)

View File

@@ -1,10 +0,0 @@
# -*- cmake -*-
include(MySQL)
set(LLDATABASE_INCLUDE_DIRS
${LIBS_SERVER_DIR}/lldatabase
${MYSQL_INCLUDE_DIR}
)
set(LLDATABASE_LIBRARIES lldatabase)

View File

@@ -1,18 +0,0 @@
# -*- cmake -*-
include(Prebuilt)
if (NOT STANDALONE AND EXISTS ${LIBS_CLOSED_DIR}/llkdu)
use_prebuilt_binary(kdu)
if (WINDOWS)
set(KDU_LIBRARY debug kdu_cored optimized kdu_core)
else (WINDOWS)
set(KDU_LIBRARY kdu)
endif (WINDOWS)
set(KDU_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
set(LLKDU_LIBRARY llkdu)
set(LLKDU_STATIC_LIBRARY llkdu_static)
set(LLKDU_LIBRARIES ${LLKDU_LIBRARY})
set(LLKDU_STATIC_LIBRARIES ${LLKDU_STATIC_LIBRARY})
endif (NOT STANDALONE AND EXISTS ${LIBS_CLOSED_DIR}/llkdu)

View File

@@ -4,12 +4,14 @@ include(CARes)
include(CURL)
include(OpenSSL)
include(XmlRpcEpi)
include(AIStateMachine)
set(LLMESSAGE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llmessage
${CARES_INCLUDE_DIRS}
${CURL_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIRS}
${AISTATEMACHINE_INCLUDE_DIRS}
)
set(LLMESSAGE_LIBRARIES llmessage)
set(LLMESSAGE_LIBRARIES llmessage aistatemachine)

View File

@@ -0,0 +1,7 @@
# -*- cmake -*-
set(LLPHYSICSEXTENSIONS_LIBRARIES nd_hacdConvexDecomposition hacd nd_Pathing )
set(LLPHYSICSEXTENSIONS_INCLUDE_DIRS ${LIBS_OPEN_DIR}/libndhacd ${LIBS_OPEN_DIR}/libpathing)

View File

@@ -1,7 +1,22 @@
# -*- cmake -*-
set(LLPRIMITIVE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llprimitive
)
include(Colladadom)
set(LLPRIMITIVE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llprimitive
${COLLADADOM_INCLUDE_DIRS}
)
if (WINDOWS)
set(LLPRIMITIVE_LIBRARIES
debug llprimitive
optimized llprimitive
${COLLADADOM_LIBRARIES}
)
else (WINDOWS)
set(LLPRIMITIVE_LIBRARIES
llprimitive
${COLLADADOM_LIBRARIES}
)
endif (WINDOWS)
set(LLPRIMITIVE_LIBRARIES llprimitive)

View File

@@ -0,0 +1,11 @@
# -*- cmake -*-
if (STANDALONE)
set(LLQTWEBKIT_INCLUDE_DIR
${LIBS_OPEN_DIR}/llqtwebkit
)
set(LLQTWEBKIT_LIBRARY
llqtwebkit
)
endif (STANDALONE)

View File

@@ -6,27 +6,7 @@ set(LLRENDER_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llrender
)
if (SERVER AND LINUX)
set(LLRENDER_LIBRARIES
llrenderheadless
)
else (SERVER AND LINUX)
set(LLRENDER_LIBRARIES
llrender
)
endif (SERVER AND LINUX)
# mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set
# differently for different object files.
macro (copy_server_sources )
foreach (PREFIX ${ARGV})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}_server.cpp
COMMAND ${CMAKE_COMMAND}
ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${PREFIX}.cpp
${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}_server.cpp
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${PREFIX}.cpp
)
list(APPEND server_SOURCE_FILES ${PREFIX}_server.cpp)
endforeach (PREFIX ${_copied_SOURCES})
endmacro (copy_server_sources _copied_SOURCES)

View File

@@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLSCENE_INCLUDE_DIRS
${LIBS_SERVER_DIR}/llscene
)
set(LLSCENE_LIBRARIES llscene)

View File

@@ -8,5 +8,5 @@ set(LLVFS_INCLUDE_DIRS
set(LLVFS_LIBRARIES
llvfs
${BOOST_REGEX_LIBRARY}
${Boost_REGEX_LIBRARY}
)

View File

@@ -13,15 +13,17 @@ if (STANDALONE)
SDL_LIBRARY
)
else (STANDALONE)
if (NOT DARWIN)
if (LINUX)
use_prebuilt_binary(mesa)
endif (NOT DARWIN)
if (LINUX AND VIEWER)
use_prebuilt_binary(SDL)
set (SDL_FOUND TRUE)
set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/i686-linux)
set (SDL_LIBRARY SDL)
endif (LINUX AND VIEWER)
set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR})
if(WORD_SIZE EQUAL 64)
set (SDL_LIBRARY SDL)
else(WORD_SIZE EQUAL 64)
set (SDL_LIBRARY SDL directfb fusion direct)
endif(WORD_SIZE EQUAL 64)
endif (LINUX)
endif (STANDALONE)
if (SDL_FOUND)
@@ -34,17 +36,12 @@ set(LLWINDOW_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llwindow
)
if (SERVER AND LINUX)
set(LLWINDOW_LIBRARIES
llwindowheadless
)
else (SERVER AND LINUX)
set(LLWINDOW_LIBRARIES
llwindow
)
if (WINDOWS)
list(APPEND LLWINDOW_LIBRARIES
comdlg32
)
endif (WINDOWS)
endif (SERVER AND LINUX)
set(LLWINDOW_LIBRARIES
llwindow
)
if (WINDOWS)
list(APPEND LLWINDOW_LIBRARIES
comdlg32
)
endif (WINDOWS)

View File

@@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLXUIXML_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llxuixml
)
set(LLXUIXML_LIBRARIES llxuixml)

View File

@@ -1,4 +1,8 @@
# -*- cmake -*-
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
include(Variables)
if (NOT STANDALONE)
if (WINDOWS)
@@ -6,17 +10,13 @@ if (NOT STANDALONE)
set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/release)
set(ARCH_PREBUILT_DIRS_DEBUG ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/debug)
elseif (LINUX)
if (VIEWER)
set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release_client)
else (VIEWER)
set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release)
endif (VIEWER)
set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/release)
set(ARCH_PREBUILT_DIRS_RELEASE ${ARCH_PREBUILT_DIRS})
set(ARCH_PREBUILT_DIRS_DEBUG ${ARCH_PREBUILT_DIRS})
elseif (DARWIN)
set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release)
set(ARCH_PREBUILT_DIRS ${ARCH_PREBUILT_DIRS_RELEASE})
set(ARCH_PREBUILT_DIRS_DEBUG ${ARCH_PREBUILT_DIRS_RELEASE})
set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib)
set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/release)
set(ARCH_PREBUILT_DIRS_DEBUG ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/debug)
endif (WINDOWS)
endif (NOT STANDALONE)
@@ -49,3 +49,5 @@ else (WINDOWS)
endif (WINDOWS)
mark_as_advanced(DL_LIBRARY PTHREAD_LIBRARY WINDOWS_LIBRARIES)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)

View File

@@ -1,48 +0,0 @@
# -*- cmake -*-
set(MONO_PREBUILT_LIBRARIES_DIR ${LIBS_PREBUILT_DIR}/mono/1.0)
set(MONO_PREBUILT_LIBRARIES
Iesi.Collections.dll
Iesi.Collections.pdb
Mono.CompilerServices.SymbolWriter.dll
Mono.PEToolkit.dll
Mono.PEToolkit.pdb
Mono.Security.dll
PEAPI.dll
RAIL.dll
RAIL.pdb
)
set(MONO_CORE_LIBRARIES
System.dll
System.Xml.dll
mscorlib.dll)
if(WINDOWS)
set(MONO_DEPENDENCIES
DomainCreator
DomainRegister
LslLibrary
LslUserScript
Script
ScriptTypes
TestFormat
UserScript
UThread
UThreadInjector
)
else(WINDOWS)
set(MONO_DEPENDENCIES
DomainCreator_POST_BUILD
DomainRegister_POST_BUILD
LslLibrary_POST_BUILD
LslUserScript_POST_BUILD
Script_POST_BUILD
ScriptTypes_POST_BUILD
TestFormat_POST_BUILD
UserScript_POST_BUILD
UThread_POST_BUILD
UThreadInjector_POST_BUILD
)
endif(WINDOWS)

View File

@@ -1,57 +0,0 @@
# -*- cmake -*-
include(Prebuilt)
use_prebuilt_binary(libmono)
SET(GLIB_2_0 glib-2.0)
if (WINDOWS)
SET(MONO_LIB mono)
else (WINDOWS)
SET(MONO_LIB mono)
SET(M_LIBRARIES m)
SET(GTHREAD_2_0 gthread-2.0)
endif(WINDOWS)
IF (DARWIN)
FIND_LIBRARY(MONO_LIBRARY NAMES Mono)
# Find_file doesnt work as expected. Hardcode relative to Mono.framework.
#FIND_FILE(GLIB_CONFIG glibconfig.h ${MONO_LIBRARY})
#FIND_FILE(MONO_GLIB_LIBRARY glib.h ${MONO_LIBRARY})
SET(MONO_GLIB_LIBRARY ${MONO_LIBRARY}/Headers/glib-2.0/)
SET(GLIB_CONFIG ${MONO_LIBRARY}/Libraries/glib-2.0/include/)
SET(MONO_LIB_DIRECTORY ${MONO_LIBRARY}/Libraries)
IF (MONO_LIBRARY AND MONO_GLIB_LIBRARY AND GLIB_CONFIG)
MESSAGE(STATUS "Found Mono for embedding")
INCLUDE_DIRECTORIES(${MONO_GLIB_LIBRARY} ${GLIB_CONFIG})
LINK_DIRECTORIES(${MONO_LIB_DIRECTORY})
ELSE (MONO_LIBRARY AND MONO_GLIB_LIBRARY AND GLIB_CONFIG)
MESSAGE(FATAL_ERROR "Mono not found for embedding")
MESSAGE(${MONO_LIBRARY})
MESSAGE(${MONO_GLIB_LIBRARY})
MESSAGE(${GLIB_CONFIG})
ENDIF (MONO_LIBRARY AND MONO_GLIB_LIBRARY AND GLIB_CONFIG)
ELSE (DARWIN)
SET(MONO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
SET(GLIB_2_0_PLATFORM_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0)
SET(GLIB_2_0_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/glib-2.0)
INCLUDE_DIRECTORIES(
${MONO_INCLUDE_DIR}
${GLIB_2_0_PLATFORM_INCLUDE_DIR}
${GLIB_2_0_INCLUDE_DIR})
ENDIF (DARWIN)
SET(MONO_LIBRARIES
${MONO_LIB}
${M_LIBRARIES}
${GLIB_2_0}
${GTHREAD_2_0}
)

View File

@@ -1,26 +0,0 @@
# -*- cmake -*-
include(Linking)
include(Prebuilt)
use_prebuilt_binary(mysql)
if (LINUX)
if (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
set(MYSQL_LIBRARIES mysqlclient)
set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
else (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
# Use the native MySQL library on a 64-bit system.
set(MYSQL_FIND_QUIETLY ON)
set(MYSQL_FIND_REQUIRED ON)
include(FindMySQL)
endif (WORD_SIZE EQUAL 32 OR DEBIAN_VERSION STREQUAL "3.1")
elseif (WINDOWS)
set(MYSQL_LIBRARIES mysqlclient)
set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
elseif (DARWIN)
set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(MYSQL_LIBRARIES
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libmysqlclient.a
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libmysqlclient.a
)
endif (LINUX)

View File

@@ -15,7 +15,7 @@ else (STANDALONE)
set(NDOF_LIBRARY ndofdev)
endif (WINDOWS)
set(NDOF_INCLUDE_DIR ${ARCH_PREBUILT_DIRS}/include/ndofdev)
set(NDOF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/ndofdev)
set(NDOF_FOUND 1)
endif (STANDALONE)

View File

@@ -21,6 +21,7 @@ if (OPENAL)
openal
alut
)
set(OPENAL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (OPENAL)
if (OPENAL)

View File

@@ -3,8 +3,5 @@ include(Prebuilt)
if (NOT (STANDALONE OR DARWIN))
use_prebuilt_binary(glext)
# possible glh_linear should have its own .cmake file instead
#use_prebuilt_binary(glh_linear)
# actually... not any longer, it's now in git -SG
set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
endif ()
set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (NOT (STANDALONE OR DARWIN))

View File

@@ -4,9 +4,9 @@ include(Prebuilt)
set(OpenSSL_FIND_QUIETLY ON)
set(OpenSSL_FIND_REQUIRED ON)
if (STANDALONE)
if (STANDALONE OR USE_SYSTEM_OPENSSL)
include(FindOpenSSL)
else (STANDALONE)
else (STANDALONE OR USE_SYSTEM_OPENSSL)
use_prebuilt_binary(openSSL)
if (WINDOWS)
set(OPENSSL_LIBRARIES ssleay32 libeay32)
@@ -14,10 +14,8 @@ else (STANDALONE)
set(OPENSSL_LIBRARIES ssl)
endif (WINDOWS)
set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE)
endif (STANDALONE OR USE_SYSTEM_OPENSSL)
if (LINUX)
if (LINUX OR DARWIN)
set(CRYPTO_LIBRARIES crypto)
elseif (DARWIN)
set(CRYPTO_LIBRARIES llcrypto)
endif (LINUX)
endif (LINUX OR DARWIN)

View File

@@ -10,8 +10,10 @@ else (STANDALONE)
use_prebuilt_binary(libpng)
if (WINDOWS)
set(PNG_LIBRARIES libpng15)
else (WINDOWS)
set(PNG_LIBRARIES png12)
endif (WINDOWS)
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
elseif(DARWIN)
set(PNG_LIBRARIES png15)
else(LINUX)
set(PNG_LIBRARIES png15)
endif()
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/)
endif (STANDALONE)

View File

@@ -1,5 +1,8 @@
# -*- cmake -*-
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
macro (use_prebuilt_binary _binary)
if(NOT STANDALONE)
get_property(PREBUILT_PACKAGES TARGET prepare PROPERTY PREBUILT)
@@ -9,3 +12,5 @@ macro (use_prebuilt_binary _binary)
endif(_index LESS 0)
endif(NOT STANDALONE)
endmacro (use_prebuilt_binary _binary)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)

2
indra/cmake/PulseAudio.cmake Executable file → Normal file
View File

@@ -13,7 +13,7 @@ if (PULSEAUDIO)
use_prebuilt_binary(pulseaudio)
set(PULSEAUDIO_FOUND ON FORCE BOOL)
set(PULSEAUDIO_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include
)
# We don't need to explicitly link against pulseaudio itself, because
# the viewer probes for the system's copy at runtime.

12
indra/cmake/Qt4.cmake Normal file
View File

@@ -0,0 +1,12 @@
# -*- cmake -*-
include(Prebuilt)
if (STANDALONE)
set(Qt4_FIND_REQUIRED ON)
include(FindQt4)
find_package(Qt4 4.7.0 COMPONENTS QtCore QtGui QtNetwork QtOpenGL QtWebKit REQUIRED)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
endif (STANDALONE)

View File

@@ -0,0 +1,4 @@
# -*- cmake -*-
set(STATEMACHINE_INCLUDE_DIRS statemachine)
set(STATEMACHINE_LIBRARIES statemachine)

View File

@@ -31,11 +31,9 @@ if (STANDALONE)
add_definitions(${${pkg}_CFLAGS_OTHERS})
endforeach(pkg)
else (STANDALONE)
if (NOT DARWIN)
if (LINUX)
use_prebuilt_binary(glib) # gtk-etc needs glib
use_prebuilt_binary(gtk-atk-pango-glib)
endif (NOT DARWIN)
if (LINUX)
set(UI_LIBRARIES
atk-1.0
X11
@@ -60,7 +58,6 @@ else (STANDALONE)
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/cairo
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/pixman-1
${LIBS_PREBUILT_DIR}/include
)
foreach(include ${${LL_ARCH}_INCLUDES})
include_directories(${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/${include})

View File

@@ -8,40 +8,32 @@
# DARWIN - Mac OS X
# LINUX - Linux
# WINDOWS - Windows
#
# What to build:
#
# VIEWER - viewer and other viewer-side components
# SERVER - simulator and other server-side bits
# Relative and absolute paths to subtrees.
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
if(NOT DEFINED COMMON_CMAKE_DIR)
set(COMMON_CMAKE_DIR "${CMAKE_SOURCE_DIR}/cmake")
endif(NOT DEFINED COMMON_CMAKE_DIR)
set(LIBS_CLOSED_PREFIX)
set(LIBS_OPEN_PREFIX)
set(LIBS_SERVER_PREFIX)
set(SCRIPTS_PREFIX ../scripts)
set(SERVER_PREFIX)
set(VIEWER_PREFIX)
set(LIBS_CLOSED_DIR ${CMAKE_SOURCE_DIR}/${LIBS_CLOSED_PREFIX})
set(LIBS_OPEN_DIR ${CMAKE_SOURCE_DIR}/${LIBS_OPEN_PREFIX})
set(LIBS_SERVER_DIR ${CMAKE_SOURCE_DIR}/${LIBS_SERVER_PREFIX})
set(SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/${SCRIPTS_PREFIX})
set(SERVER_DIR ${CMAKE_SOURCE_DIR}/${SERVER_PREFIX})
set(VIEWER_DIR ${CMAKE_SOURCE_DIR}/${VIEWER_PREFIX})
set(DISABLE_TCMALLOC OFF CACHE BOOL "Disable linkage of TCMalloc. (64bit builds automatically disable TCMalloc)")
set(LL_TESTS OFF CACHE BOOL "Build and run unit and integration tests (disable for build timing runs to reduce variation)")
set(VISTA_ICON OFF CACHE BOOL "Allow vista icon with pre 2008 Visual Studio IDEs. (Assumes replacement old rcdll.dll with new rcdll.dll from win sdk 7.0 or later)")
set(LIBS_PREBUILT_DIR ${CMAKE_SOURCE_DIR}/../libraries CACHE PATH
"Location of prebuilt libraries.")
if (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
# We use this as a marker that you can try to use the proprietary libraries.
set(INSTALL_PROPRIETARY ON CACHE BOOL "Install proprietary binaries")
endif (EXISTS ${CMAKE_SOURCE_DIR}/Server.cmake)
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WINDOWS ON BOOL FORCE)
set(ARCH i686)
@@ -69,6 +61,29 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
endif(CMAKE_SIZEOF_VOID_P MATCHES 4)
endif (WORD_SIZE EQUAL 32)
if (NOT STANDALONE AND MULTIARCH_HACK)
if (WORD_SIZE EQUAL 32)
set(DEB_ARCHITECTURE i386)
set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib32 ${CMAKE_SYSTEM_LIBRARY_PATH})
else (WORD_SIZE EQUAL 32)
set(DEB_ARCHITECTURE amd64)
set(FIND_LIBRARY_USE_LIB64_PATHS ON)
endif (WORD_SIZE EQUAL 32)
execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH
RESULT_VARIABLE DPKG_RESULT
OUTPUT_VARIABLE DPKG_ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
#message (STATUS "DPKG_RESULT ${DPKG_RESULT}, DPKG_ARCH ${DPKG_ARCH}")
if (DPKG_RESULT EQUAL 0)
set(CMAKE_LIBRARY_ARCHITECTURE ${DPKG_ARCH})
set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH})
endif (DPKG_RESULT EQUAL 0)
include(ConfigurePkgConfig)
endif (NOT STANDALONE AND MULTIARCH_HACK)
set(LL_ARCH ${ARCH}_linux)
set(LL_ARCH_DIR ${ARCH}-linux)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
@@ -76,40 +91,33 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(DARWIN 1)
#SDK Compiler and Deployment targets for XCode
if (${XCODE_VERSION} VERSION_LESS 4.0.0)
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk)
set(CMAKE_XCODE_ATTIBUTE_GCC_VERSION "4.2")
else (${XCODE_VERSION} VERSION_LESS 4.0.0)
if(${CMAKE_GENERATOR} MATCHES Xcode)
#SDK Compiler and Deployment targets for XCode
if (${XCODE_VERSION} VERSION_LESS 4.0.0)
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
else (${XCODE_VERSION} VERSION_LESS 4.0.0)
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.6.sdk)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
endif (${XCODE_VERSION} VERSION_LESS 4.0.0)
else(${CMAKE_GENERATOR} MATCHES Xcode)
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.6.sdk)
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
endif (${XCODE_VERSION} VERSION_LESS 4.0.0)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
endif(${CMAKE_GENERATOR} MATCHES Xcode)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
# NOTE: To attempt an i386/PPC Universal build, add this on the configure line:
# -DCMAKE_OSX_ARCHITECTURES:STRING='i386;ppc'
# Build only for i386 by default, system default on MacOSX 10.6 is x86_64
if (NOT CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES i386)
endif (NOT CMAKE_OSX_ARCHITECTURES)
if (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
set(ARCH universal)
else (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
set(ARCH ppc)
else (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
set(ARCH i386)
endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
endif (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
set(CMAKE_OSX_ARCHITECTURES i386)
set(ARCH i386)
set(WORD_SIZE 32)
set(LL_ARCH ${ARCH}_darwin)
set(LL_ARCH_DIR universal-darwin)
set(WORD_SIZE 32)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if (WINDOWS)
set(PREBUILT_TYPE windows)
elseif(DARWIN)
@@ -120,11 +128,9 @@ elseif(LINUX AND WORD_SIZE EQUAL 64)
set(PREBUILT_TYPE linux64)
endif(WINDOWS)
# Default deploy grid
set(GRID agni CACHE STRING "Target Grid")
set(VIEWER ON CACHE BOOL "Build Second Life viewer.")
set(VIEWER_CHANNEL "Singularity" CACHE STRING "Viewer Channel Name")
set(VIEWER_LOGIN_CHANNEL ${VIEWER_CHANNEL} CACHE STRING "Fake login channel for A/B Testing")
set(VIEWER_BRANDING_ID "singularity" CACHE STRING "Viewer branding id (currently secondlife|snowglobe)")
@@ -135,17 +141,6 @@ set(VIEWER_BRANDING_NAME_CAMELCASE "Singularity")
set(STANDALONE OFF CACHE BOOL "Do not use Linden-supplied prebuilt libraries.")
if (NOT STANDALONE AND EXISTS ${CMAKE_SOURCE_DIR}/llphysics)
set(SERVER ON CACHE BOOL "Build Second Life server software.")
endif (NOT STANDALONE AND EXISTS ${CMAKE_SOURCE_DIR}/llphysics)
if (LINUX AND SERVER AND VIEWER)
MESSAGE(FATAL_ERROR "
The indra source does not currently support building SERVER and VIEWER at the same time.
Please set one of these values to OFF in your CMake cache file.
(either by running ccmake or by editing CMakeCache.txt by hand)
For more information, please see JIRA DEV-14943 - Cmake Linux cannot build both VIEWER and SERVER in one build environment
")
endif (LINUX AND SERVER AND VIEWER)
source_group("CMake Rules" FILES CMakeLists.txt)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)

View File

@@ -19,8 +19,3 @@ else (NOT STANDALONE)
endif(LINUX AND ${ARCH} STREQUAL "x86_64")
set(STANDALONE ON)
endif(NOT STANDALONE)
if (WINDOWS)
use_prebuilt_binary(dbghelp)
endif (WINDOWS)

View File

@@ -1,31 +1,10 @@
# -*- cmake -*-
include(Linking)
include(Prebuilt)
include(LLQtWebkit)
include(Qt4)
if (STANDALONE)
# The minimal version, 4.4.3, is rather arbitrary: it's the version in Debian/Lenny.
find_package(Qt4 4.4.3 COMPONENTS QtCore QtGui QtNetwork QtOpenGL QtWebKit REQUIRED)
include(${QT_USE_FILE})
set(QTDIR $ENV{QTDIR})
if (QTDIR AND NOT "${QT_BINARY_DIR}" STREQUAL "${QTDIR}/bin")
message(FATAL_ERROR "\"${QT_BINARY_DIR}\" is unequal \"${QTDIR}/bin\"; "
"Qt is found by looking for qmake in your PATH. "
"Please set your PATH such that 'qmake' is found in \$QTDIR/bin, "
"or unset QTDIR if the found Qt is correct.")
endif (QTDIR AND NOT "${QT_BINARY_DIR}" STREQUAL "${QTDIR}/bin")
find_package(LLQtWebkit REQUIRED QUIET)
# Add the plugins.
set(QT_PLUGIN_LIBRARIES)
foreach(qlibname qgif qjpeg)
find_library(QT_PLUGIN_${qlibname} ${qlibname} PATHS ${QT_PLUGINS_DIR}/imageformats NO_DEFAULT_PATH)
if (QT_PLUGIN_${qlibname})
list(APPEND QT_PLUGIN_LIBRARIES ${QT_PLUGIN_${qlibname}})
else (QT_PLUGIN_${qtlibname})
message(FATAL_ERROR "Could not find the Qt plugin ${qlibname} in \"${QT_PLUGINS_DIR}/imageformats\"!")
endif (QT_PLUGIN_${qlibname})
endforeach(qlibname)
# qjpeg depends on libjpeg
list(APPEND QT_PLUGIN_LIBRARIES jpeg)
set(WEBKITLIBPLUGIN OFF CACHE BOOL
"WEBKITLIBPLUGIN support for the llplugin/llmedia test apps.")
else (STANDALONE)

View File

@@ -9,5 +9,5 @@ if (STANDALONE)
else (STANDALONE)
use_prebuilt_binary(xmlrpc-epi)
set(XMLRPCEPI_LIBRARIES xmlrpc-epi)
set(XMLRPCEPI_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(XMLRPCEPI_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE)

View File

@@ -17,6 +17,6 @@ else (STANDALONE)
set(ZLIB_LIBRARIES z)
endif (WINDOWS)
if (WINDOWS OR LINUX)
set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib)
set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/zlib)
endif (WINDOWS OR LINUX)
endif (STANDALONE)

View File

@@ -1,39 +0,0 @@
# -*- cmake -*-
project(cwdebug)
include(00-Common)
include(LLCommon)
include(LLMath)
include(LLMessage)
include(LLVFS)
include_directories (${CMAKE_CURRENT_SOURCE_DIR})
set(cwdebug_SOURCE_FILES
debug.cc
)
set(cwdebug_HEADER_FILES
CMakeLists.txt
cwdebug.h
sys.h
debug.h
debug_ostream_operators.h
)
set_source_files_properties(${cwdebug_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
if(NOT WORD_SIZE EQUAL 32)
if(WINDOWS)
add_definitions(/FIXED:NO)
else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
add_definitions(-fPIC)
endif(WINDOWS)
endif (NOT WORD_SIZE EQUAL 32)
list(APPEND cwdebug_SOURCE_FILES ${cwdebug_HEADER_FILES})
add_library (cwdebug ${cwdebug_SOURCE_FILES})

View File

@@ -49,6 +49,8 @@
namespace debug {
#if CWDEBUG_LOCATION
ll_thread_local size_t BackTrace::S_number;
void BackTrace::dump_backtrace(void) const
{
for (int frame = 0; frame < frames(); ++frame)
@@ -67,6 +69,67 @@ void BackTrace::dump_backtrace(void) const
Dout(dc::finish, mangled_function_name);
}
}
void BackTraces::store_trace(size_t trace)
{
mBackTraces.push_back(trace);
}
void BackTraces::remove_trace(size_t trace)
{
trace_container_type::iterator iter = mBackTraces.begin();
while (iter != mBackTraces.end())
{
if (*iter == trace)
{
*iter = mBackTraces.back();
mBackTraces.pop_back();
return;
}
++iter;
}
DoutFatal(dc::core, "Trace doesn't exist!");
}
void BackTraces::dump(void) const
{
Dout(dc::backtrace|continued_cf, "Dump for (BackTraces*)" << (void*)this << " (" << mBackTraces.size() << " backtraces): ");
for (trace_container_type::const_iterator iter = mBackTraces.begin(); iter != mBackTraces.end(); ++iter)
{
Dout(dc::continued|nonewline_cf, *iter << ' ');
}
Dout(dc::finish, "");
}
BackTraceTracker::BackTraceTracker(BackTraces* back_traces) : mBackTraces(back_traces)
{
BACKTRACE;
mTrace = BackTrace::S_number;
mBackTraces->store_trace(mTrace);
}
BackTraceTracker::~BackTraceTracker()
{
mBackTraces->remove_trace(mTrace);
}
BackTraceTracker::BackTraceTracker(BackTraceTracker const& orig) : mBackTraces(orig.mBackTraces)
{
BACKTRACE;
mTrace = BackTrace::S_number;
mBackTraces->store_trace(mTrace);
}
BackTraceTracker& BackTraceTracker::operator=(BackTraceTracker const& orig)
{
mBackTraces->remove_trace(mTrace);
mBackTraces = orig.mBackTraces;
BACKTRACE;
mTrace = BackTrace::S_number;
mBackTraces->store_trace(mTrace);
return *this;
}
#endif // CWDEBUG_LOCATION
#if CWDEBUG_ALLOC && CWDEBUG_LOCATION
@@ -173,6 +236,10 @@ void stop_recording_backtraces(void)
channel_ct backtrace DDCN("BACKTRACE"); //!< This debug channel is used for backtraces.
channel_ct statemachine DDCN("STATEMACHINE"); //!< This debug channel is used for output related to class AIStateMachine.
channel_ct caps DDCN("CAPS"); //!< This debug channel is used for output related to Capabilities.
channel_ct curl DDCN("CURL"); //!< This debug channel is used for output related to AICurl.
channel_ct curlio DDCN("CURLIO"); //!< This debug channel is used to print debug output of libcurl. This includes all HTTP network traffic.
channel_ct curltr DDCN("CURLTR"); //!< This debug channel is used to print libcurl API calls.
channel_ct snapshot DDCN("SNAPSHOT"); //!< This debug channel is used for output related to snapshots.
} // namespace dc
} // namespace DEBUGCHANNELS
@@ -411,4 +478,96 @@ void cwdebug_backtrace(int n)
}
#endif
#endif // CWDEBUG
#elif defined(DEBUG_CURLIO)
#include "debug.h"
#include "aithreadid.h"
namespace debug
{
namespace libcwd { libcwd_do_type const libcw_do; }
ll_thread_local int Indent::S_indentation;
Indent::Indent(int indent) : M_indent(indent)
{
S_indentation += M_indent;
}
Indent::~Indent()
{
S_indentation -= M_indent;
}
std::ostream& operator<<(std::ostream& os, Indent::print_nt)
{
if (Indent::S_indentation)
os << std::string(Indent::S_indentation, ' ');
return os;
}
#ifdef DEBUG_CURLIO
std::ostream& operator<<(std::ostream& os, print_thread_id_t)
{
if (!AIThreadID::in_main_thread_inline())
{
os << std::hex << (size_t)AIThreadID::getCurrentThread_inline() << std::dec << ' ';
}
return os;
}
#endif
std::ostream& operator<<(std::ostream& os, libcwd::buf2str const& b2s)
{
static char const c2s_tab[7] = { 'a', 'b', 't', 'n', 'v', 'f', 'r' };
size_t size = b2s.mSize;
for (char const* p1 = b2s.mBuf; size > 0; --size, ++p1)
{
char c =*p1;
if ((c > 31 && c != 92 && c != 127) || (unsigned char)c > 159)
os.put(c);
else
{
os.put('\\');
if (c > 6 && c < 14)
{
os.put(c2s_tab[c - 7]);
return os;
}
else if (c == 27)
{
os.put('e');
return os;
}
else if (c == '\\')
{
os.put('\\');
return os;
}
std::ostream::char_type old_fill = os.fill('0');
std::ios_base::fmtflags old_flgs = os.flags();
os.width(3);
os << std::oct << (int)((unsigned char)c);
os.setf(old_flgs);
os.fill(old_fill);
}
}
return os;
}
namespace dc
{
fake_channel const warning(1, "WARNING ");
fake_channel const curl(1, "CURL ");
fake_channel const curlio(1, "CURLIO ");
fake_channel const curltr(1, "CURLTR ");
fake_channel const statemachine(1, "STATEMACHINE");
fake_channel const notice(1, "NOTICE ");
fake_channel const snapshot(0, "SNAPSHOT ");
} // namespace dc
} // namespace debug
#endif

View File

@@ -27,6 +27,96 @@
#ifndef CWDEBUG
#ifdef DEBUG_CURLIO
// If CWDEBUG is not defined, but DEBUG_CURLIO is, then replace
// some of the cwd macro's with something that generates viewer
// specific debug output. Note that this generates a LOT of
// output and should not normally be defined.
#include <string>
#include "llpreprocessor.h"
namespace debug {
namespace libcwd {
struct buf2str {
buf2str(char const* buf, int size) : mBuf(buf), mSize(size) { }
char const* mBuf;
int mSize;
};
struct libcwd_do_type {
void on() const { }
};
extern LL_COMMON_API libcwd_do_type const libcw_do;
} // namespace libcwd
enum print_thread_id_t { print_thread_id };
inline void init() { }
struct Indent {
int M_indent;
static ll_thread_local int S_indentation;
enum LL_COMMON_API print_nt { print };
LL_COMMON_API Indent(int indent);
LL_COMMON_API ~Indent();
};
extern LL_COMMON_API std::ostream& operator<<(std::ostream& os, libcwd::buf2str const& b2s);
extern LL_COMMON_API std::ostream& operator<<(std::ostream& os, Indent::print_nt);
extern LL_COMMON_API std::ostream& operator<<(std::ostream& os, print_thread_id_t);
namespace dc {
struct fake_channel {
int mOn;
char const* mLabel;
fake_channel(int on, char const* label) : mOn(on), mLabel(label) { }
fake_channel(void) : mOn(0) { }
bool is_on() const { return !!mOn; }
bool is_off() const { return !mOn; }
void on() const { }
void off() const { }
};
extern LL_COMMON_API fake_channel const warning;
extern LL_COMMON_API fake_channel const curl;
extern LL_COMMON_API fake_channel const curlio;
extern LL_COMMON_API fake_channel const curltr;
extern LL_COMMON_API fake_channel const statemachine;
extern LL_COMMON_API fake_channel const notice;
extern LL_COMMON_API fake_channel const snapshot;
} // namespace dc
} // namespace debug
#define LIBCWD_DEBUG_CHANNELS debug
#define LibcwDoutScopeBegin(a, b, c) do { using namespace debug; using namespace debug::libcwd; llinfos_nf << print_thread_id << (c).mLabel << ": " << Indent::print;
#define LibcwDoutStream llcont
#define LibcwDoutScopeEnd llcont << llendl; } while(0)
#define Debug(x) do { using namespace debug; using namespace debug::libcwd; x; } while(0)
#define Dout(a, b) do { using namespace debug; using namespace debug::libcwd; if ((a).mOn) { llinfos_nf << print_thread_id << (a).mLabel << ": " << Indent::print << b << llendl; } } while(0)
#define DoutEntering(a, b) \
int __slviewer_debug_indentation = 2; \
{ \
using namespace debug; \
using namespace debug::libcwd; \
if ((a).mOn) \
llinfos_nf << print_thread_id << (a).mLabel << ": " << Indent::print << "Entering " << b << llendl; \
else \
__slviewer_debug_indentation = 0; \
} \
debug::Indent __slviewer_debug_indent(__slviewer_debug_indentation);
#else // !DEBUG_CURLIO
#define Debug(x)
#define Dout(a, b)
#define DoutEntering(a, b)
#endif // !DEBUG_CURLIO
#ifndef DOXYGEN // No need to document this. See http://libcwd.sourceforge.net/ for more info.
#include <iostream>
@@ -36,9 +126,6 @@
#define AllocTag2(p, desc)
#define AllocTag_dynamic_description(p, x)
#define AllocTag(p, x)
#define Debug(x)
#define Dout(a, b)
#define DoutEntering(a, b)
#define DoutFatal(a, b) LibcwDoutFatal(::std, , a, b)
#define ForAllDebugChannels(STATEMENT)
#define ForAllDebugObjects(STATEMENT)
@@ -89,6 +176,8 @@
#if CWDEBUG_LOCATION
#include <execinfo.h> // Needed for 'backtrace'.
#endif
#include "llpreprocessor.h" // LL_COMMON_API
#include <set>
#define CWD_API __attribute__ ((visibility("default")))
@@ -118,6 +207,10 @@ extern CWD_API channel_ct sdl;
extern CWD_API channel_ct backtrace;
extern CWD_API channel_ct statemachine;
extern CWD_API channel_ct caps;
extern CWD_API channel_ct curl;
extern CWD_API channel_ct curlio;
extern CWD_API channel_ct curltr;
extern CWD_API channel_ct snapshot;
#endif
@@ -186,6 +279,8 @@ class BackTrace {
private:
boost::shared_array<void*> M_buffer;
int M_frames;
public:
static ll_thread_local size_t S_number;
public:
BackTrace(void** buffer, int frames) : M_buffer(new void* [frames]), M_frames(frames) { std::memcpy(M_buffer.get(), buffer, sizeof(void*) * frames); }
@@ -212,19 +307,81 @@ extern pthread_mutex_t backtrace_mutex;
using namespace debug; \
void* buffer[32]; \
int frames = backtrace(buffer, 32); \
size_t size; \
{ \
pthread_mutex_lock(&backtrace_mutex); \
backtraces.push_back(BackTrace(buffer, frames)); \
size = backtraces.size(); \
BackTrace::S_number = backtraces.size(); \
pthread_mutex_unlock(&backtrace_mutex); \
} \
Dout(dc::backtrace, "Stored backtrace #" << size); \
Dout(dc::backtrace, "Stored backtrace #" << BackTrace::S_number); \
} while(0)
class LL_COMMON_API BackTraces {
private:
typedef std::vector<size_t> trace_container_type;
trace_container_type mBackTraces;
public:
void store_trace(size_t trace);
void remove_trace(size_t trace);
void dump(void) const;
};
class LL_COMMON_API BackTraceTracker {
private:
BackTraces* mBackTraces;
size_t mTrace;
public:
BackTraceTracker(BackTraces* back_traces);
~BackTraceTracker();
BackTraceTracker(BackTraceTracker const&);
BackTraceTracker& operator=(BackTraceTracker const&);
void dump(void) const { mBackTraces->dump(); }
};
#else
#define BACKTRACE do { } while(0)
#endif // CWDEBUG_LOCATION
template<class T>
class LL_COMMON_API InstanceTracker {
private:
T const* mInstance;
static pthread_mutex_t sInstancesMutex;
static std::set<T const*> sInstances;
static void remember(T const* instance) { pthread_mutex_lock(&sInstancesMutex); sInstances.insert(instance); pthread_mutex_unlock(&sInstancesMutex); }
static void forget(T const* instance) { pthread_mutex_lock(&sInstancesMutex); sInstances.erase(instance); pthread_mutex_unlock(&sInstancesMutex); }
public:
InstanceTracker(T const* instance) : mInstance(instance) { remember(mInstance); }
~InstanceTracker() { forget(mInstance); }
InstanceTracker& operator=(InstanceTracker const& orig) { forget(mInstance); mInstance = orig.mInstance; remember(mInstance); return *this; }
static void dump(void);
private:
// Non-copyable. Instead of copying, call InstanceTracker(T const*) with the this pointer of the new instance.
InstanceTracker(InstanceTracker const& orig);
};
template<class T>
pthread_mutex_t InstanceTracker<T>::sInstancesMutex = PTHREAD_MUTEX_INITIALIZER;
template<class T>
std::set<T const*> InstanceTracker<T>::sInstances;
template<class T>
void InstanceTracker<T>::dump(void)
{
pthread_mutex_lock(&sInstancesMutex);
for (typename std::set<T const*>::iterator iter = sInstances.begin(); iter != sInstances.end(); ++iter)
{
std::cout << *iter << std::endl;
}
pthread_mutex_unlock(&sInstancesMutex);
}
} // namespace debug
//! Debugging macro.
@@ -232,21 +389,21 @@ extern pthread_mutex_t backtrace_mutex;
// Print "Entering " << \a data to channel \a cntrl and increment
// debugging output indentation until the end of the current scope.
#define DoutEntering(cntrl, data) \
int __slviewer_debug_indentation = 2; \
int __slviewer_debug_indentation = 2; \
{ \
LIBCWD_TSD_DECLARATION; \
if (LIBCWD_DO_TSD_MEMBER_OFF(::libcwd::libcw_do) < 0) \
{ \
::libcwd::channel_set_bootstrap_st __libcwd_channel_set(LIBCWD_DO_TSD(::libcwd::libcw_do) LIBCWD_COMMA_TSD); \
bool on; \
bool __slviewer_debug_on; \
{ \
using namespace LIBCWD_DEBUGCHANNELS; \
on = (__libcwd_channel_set|cntrl).on; \
__slviewer_debug_on = (__libcwd_channel_set|cntrl).on; \
} \
if (on) \
if (__slviewer_debug_on) \
Dout(cntrl, "Entering " << data); \
else \
__slviewer_debug_indentation = 0; \
__slviewer_debug_indentation = 0; \
} \
} \
debug::Indent __slviewer_debug_indent(__slviewer_debug_indentation);

View File

@@ -70,7 +70,7 @@ def quote(opts):
class PlatformSetup(object):
generator = None
build_types = {}
for t in ('Debug', 'Release', 'ReleaseSSE2', 'RelWithDebInfo'):
for t in ('Debug', 'Release', 'RelWithDebInfo'):
build_types[t.lower()] = t
build_type = build_types['relwithdebinfo']
@@ -81,7 +81,6 @@ class PlatformSetup(object):
distcc = True
cmake_opts = []
word_size = 32
opensim_rules = 'OFF' #whether or not to use rules fit for opensim
using_express = False
def __init__(self):
@@ -125,7 +124,6 @@ class PlatformSetup(object):
standalone=self.standalone,
unattended=self.unattended,
word_size=self.word_size,
opensim_rules=self.opensim_rules,
type=self.build_type.upper(),
)
#if simple:
@@ -134,7 +132,6 @@ class PlatformSetup(object):
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DOPENSIM_RULES:BOOL=%(opensim_rules)s '
'-G %(generator)r %(opts)s %(dir)r' % args)
def run_cmake(self, args=[]):
@@ -296,7 +293,6 @@ class LinuxSetup(UnixSetup):
type=self.build_type.upper(),
project_name=self.project_name,
word_size=self.word_size,
opensim_rules=self.opensim_rules,
)
if not self.is_internal_tree():
args.update({'cxx':'g++', 'server':'OFF', 'viewer':'ON'})
@@ -323,7 +319,6 @@ class LinuxSetup(UnixSetup):
'-DVIEWER:BOOL=%(viewer)s -DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DOPENSIM_RULES:BOOL=%(opensim_rules)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(opts)s %(dir)r')
% args)
@@ -437,7 +432,6 @@ class DarwinSetup(UnixSetup):
unattended=self.unattended,
project_name=self.project_name,
universal=self.universal,
opensim_rules=self.opensim_rules,
type=self.build_type.upper(),
)
if self.universal == 'ON':
@@ -449,7 +443,6 @@ class DarwinSetup(UnixSetup):
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DOPENSIM_RULES:BOOL=%(opensim_rules)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(universal)s '
'%(opts)s %(dir)r' % args)
@@ -473,26 +466,11 @@ class DarwinSetup(UnixSetup):
class WindowsSetup(PlatformSetup):
gens = {
'vc71' : {
'gen' : r'Visual Studio 7 .NET 2003',
'ver' : r'7.1'
},
'vc80' : {
'gen' : r'Visual Studio 8 2005',
'ver' : r'8.0'
},
'vc90' : {
'gen' : r'Visual Studio 9 2008',
'ver' : r'9.0'
},
'vc100' : {
'gen' : r'Visual Studio 10',
'ver' : r'10.0'
}
}
gens['vs2003'] = gens['vc71']
gens['vs2005'] = gens['vc80']
gens['vs2008'] = gens['vc90']
gens['vs2010'] = gens['vc100']
search_path = r'C:\windows'
@@ -505,21 +483,21 @@ class WindowsSetup(PlatformSetup):
def _get_generator(self):
if self._generator is None:
for version in 'vc80 vc90 vc100 vc71'.split():
for version in 'vc100'.split():
if self.find_visual_studio(version):
self._generator = version
print 'Building with ', self.gens[version]['gen']
break
else:
print >> sys.stderr, 'Cannot find a Visual Studio installation, testing for express editions'
for version in 'vc80 vc90 vc100 vc71'.split():
for version in 'vc100'.split():
if self.find_visual_studio_express(version):
self._generator = version
self.using_express = True
print 'Building with ', self.gens[version]['gen'] , "Express edition"
break
else:
for version in 'vc80 vc90 vc100 vc71'.split():
for version in 'vc100'.split():
if self.find_visual_studio_express_single(version):
self._generator = version
self.using_express = True
@@ -550,7 +528,6 @@ class WindowsSetup(PlatformSetup):
unattended=self.unattended,
project_name=self.project_name,
word_size=self.word_size,
opensim_rules=self.opensim_rules,
)
#if simple:
# return 'cmake %(opts)s "%(dir)s"' % args
@@ -558,7 +535,6 @@ class WindowsSetup(PlatformSetup):
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DOPENSIM_RULES:BOOL=%(opensim_rules)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(opts)s "%(dir)s"' % args)
@@ -734,7 +710,6 @@ class CygwinSetup(WindowsSetup):
unattended=self.unattended,
project_name=self.project_name,
word_size=self.word_size,
opensim_rules=self.opensim_rules,
)
#if simple:
# return 'cmake %(opts)s "%(dir)s"' % args
@@ -742,7 +717,6 @@ class CygwinSetup(WindowsSetup):
'-DUNATTENDED:BOOl=%(unattended)s '
'-DSTANDALONE:BOOL=%(standalone)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DOPENSIM_RULES:BOOL=%(opensim_rules)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'%(opts)s "%(dir)s"' % args)
@@ -764,12 +738,11 @@ Options:
--unattended build unattended, do not invoke any tools requiring
a human response
--universal build a universal binary on Mac OS X (unsupported)
-t | --type=NAME build type ("Debug", "Release", "ReleaseSSE2", or "RelWithDebInfo")
-t | --type=NAME build type ("Debug", "Release", or "RelWithDebInfo")
-m32 | -m64 build architecture (32-bit or 64-bit)
-N | --no-distcc disable use of distcc
-G | --generator=NAME generator name
Windows: VC71 or VS2003 (default), VC80 (VS2005)
VC90 (VS2008), or VC100 (VS2010)
Windows: VC100 (VS2010) (default)
Mac OS X: Xcode (default), Unix Makefiles
Linux: Unix Makefiles (default), KDevelop3
-p | --project=NAME set the root project name. (Doesn't effect makefiles)
@@ -782,20 +755,15 @@ Commands:
Command-options for "configure":
We use cmake variables to change the build configuration.
-DSERVER:BOOL=OFF Don't configure simulator/dataserver/etc
-DVIEWER:BOOL=OFF Don't configure the viewer
-DPACKAGE:BOOL=ON Create "package" target to make installers
-DLOCALIZESETUP:BOOL=ON Create one win_setup target per supported language
-DLL_TESTS:BOOL=OFF Don't generate unit test projects
-DEXAMPLEPLUGIN:BOOL=OFF Don't generate example plugin project
-VISTA_ICON:BOOL=ON Allow pre-2008 VS to use vista-optimized resource file. (Requires updated rcdll.dll!)
-DPACKAGE:BOOL=ON Create "package" target to make installers
-DLOCALIZESETUP:BOOL=ON Create one win_setup target per supported language
-DLL_TESTS:BOOL=OFF Don't generate unit test projects
-DEXAMPLEPLUGIN:BOOL=OFF Don't generate example plugin project
-DDISABLE_TCMALLOC:BOOL=ON Disable linkage of TCMalloc. (64bit builds automatically disable TCMalloc)
Examples:
Set up a viewer-only project for your system:
develop.py configure -DSERVER:BOOL=OFF
Set up a Visual Studio 2005 project with "package" target:
develop.py -G vc80 configure -DPACKAGE:BOOL=ON
Set up a Visual Studio 2010 project with "package" target:
develop.py -G vc100 configure -DPACKAGE:BOOL=ON
'''
def main(arguments):

View File

@@ -120,7 +120,7 @@ ARGUMENTS=[
On Linux this would try to use Linux_i686Manifest.""",
default=""),
dict(name='build', description='Build directory.', default=DEFAULT_SRCTREE),
dict(name='buildtype', description="""The build type used. ('Debug', 'Release', 'ReleaseSSE2' or 'RelWithDebInfo')
dict(name='buildtype', description="""The build type used. ('Debug', 'Release', or 'RelWithDebInfo')
Default is Release """,
default="Release"),
dict(name='branding_id', description="""Identifier for the branding set to

View File

@@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 2.6.4)
project(libhacd CXX C)
include(00-Common)
file (GLOB SOURCE_FILES *.cpp )
file (GLOB INCLUDE_FILES *.h )
IF(WINDOWS)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
ENDIF(WINDOWS)
add_library(hacd ${SOURCE_FILES} ${INCLUDE_FILES})

View File

@@ -0,0 +1,85 @@
/* Copyright (c) 2011 Khaled Mamou (kmamou at gmail dot com)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#ifndef HACD_CIRCULAR_LIST_H
#define HACD_CIRCULAR_LIST_H
#include <stdlib.h>
#include "hacdVersion.h"
#include "hacdMicroAllocator.h"
namespace HACD
{
//! CircularListElement class.
template < typename T > class CircularListElement
{
public:
T & GetData() { return m_data; }
const T & GetData() const { return m_data; }
CircularListElement<T> * & GetNext() { return m_next; }
CircularListElement<T> * & GetPrev() { return m_prev; }
const CircularListElement<T> * & GetNext() const { return m_next; }
const CircularListElement<T> * & GetPrev() const { return m_prev; }
//! Constructor
CircularListElement(const T & data) {m_data = data;}
CircularListElement(void){}
//! Destructor
~CircularListElement(void){}
private:
T m_data;
CircularListElement<T> * m_next;
CircularListElement<T> * m_prev;
CircularListElement(const CircularListElement & rhs);
};
//! CircularList class.
template < typename T > class CircularList
{
public:
HeapManager * const GetHeapManager() const { return m_heapManager;}
void SetHeapManager(HeapManager * const heapManager) { m_heapManager = heapManager;}
CircularListElement<T> * & GetHead() { return m_head;}
const CircularListElement<T> * GetHead() const { return m_head;}
bool IsEmpty() const { return (m_size == 0);}
size_t GetSize() const { return m_size; }
const T & GetData() const { return m_head->GetData(); }
T & GetData() { return m_head->GetData();}
bool Delete() ;
bool Delete(CircularListElement<T> * element);
CircularListElement<T> * Add(const T * data = 0);
CircularListElement<T> * Add(const T & data);
bool Next();
bool Prev();
void Clear() { while(Delete());};
const CircularList& operator=(const CircularList& rhs);
//! Constructor
CircularList(HeapManager * heapManager)
{
m_head = 0;
m_size = 0;
m_heapManager = heapManager;
}
CircularList(const CircularList& rhs);
//! Destructor
virtual ~CircularList(void) {Clear();};
private:
CircularListElement<T> * m_head; //!< a pointer to the head of the circular list
size_t m_size; //!< number of element in the circular list
HeapManager * m_heapManager;
};
}
#include "hacdCircularList.inl"
#endif

View File

@@ -0,0 +1,230 @@
#pragma once
#ifndef HACD_CIRCULAR_LIST_INL
#define HACD_CIRCULAR_LIST_INL
#include <stdlib.h>
#include "hacdVersion.h"
namespace HACD
{
template < typename T >
inline bool CircularList<T>::Delete(CircularListElement<T> * element)
{
if (!element)
{
return false;
}
if (m_size > 1)
{
CircularListElement<T> * next = element->GetNext();
CircularListElement<T> * prev = element->GetPrev();
if (m_heapManager)
{
element->~CircularListElement<T>();
heap_free(m_heapManager, element);
}
else
{
delete element;
}
m_size--;
if (element == m_head)
{
m_head = next;
}
next->GetPrev() = prev;
prev->GetNext() = next;
return true;
}
else if (m_size == 1)
{
if (m_heapManager)
{
element->~CircularListElement<T>();
heap_free(m_heapManager, m_head);
}
else
{
delete m_head;
}
m_size--;
m_head = 0;
return true;
}
else
{
return false;
}
}
template < typename T >
inline bool CircularList<T>::Delete()
{
if (m_size > 1)
{
CircularListElement<T> * next = m_head->GetNext();
CircularListElement<T> * prev = m_head->GetPrev();
if (m_heapManager)
{
m_head->~CircularListElement<T>();
heap_free(m_heapManager, m_head);
}
else
{
delete m_head;
}
m_size--;
m_head = next;
next->GetPrev() = prev;
prev->GetNext() = next;
return true;
}
else if (m_size == 1)
{
if (m_heapManager)
{
m_head->~CircularListElement<T>();
heap_free(m_heapManager, m_head);
}
else
{
delete m_head;
}
m_size--;
m_head = 0;
return true;
}
else
{
return false;
}
}
template < typename T >
inline CircularListElement<T> * CircularList<T>::Add(const T * data)
{
if (m_size == 0)
{
if (data)
{
if (m_heapManager)
{
m_head = static_cast< CircularListElement<T> * > (heap_malloc(m_heapManager, sizeof(CircularListElement<T>)));
m_head->GetData().Initialize();
m_head->GetData() = (*data);
}
else
{
m_head = new CircularListElement<T>(*data);
}
}
else
{
if (m_heapManager)
{
m_head = static_cast< CircularListElement<T> * > (heap_malloc(m_heapManager, sizeof(CircularListElement<T>)));
m_head->GetData().Initialize();
}
else
{
m_head = new CircularListElement<T>();
}
}
m_head->GetNext() = m_head->GetPrev() = m_head;
}
else
{
CircularListElement<T> * next = m_head->GetNext();
CircularListElement<T> * element = m_head;
if (data)
{
if (m_heapManager)
{
m_head = static_cast< CircularListElement<T> * > (heap_malloc(m_heapManager, sizeof(CircularListElement<T>)));
m_head->GetData().Initialize();
m_head->GetData() = (*data);
}
else
{
m_head = new CircularListElement<T>(*data);
}
}
else
{
if (m_heapManager)
{
m_head = static_cast< CircularListElement<T> * > (heap_malloc(m_heapManager, sizeof(CircularListElement<T>)));
m_head->GetData().Initialize();
}
else
{
m_head = new CircularListElement<T>();
}
}
m_head->GetNext() = next;
m_head->GetPrev() = element;
element->GetNext() = m_head;
next->GetPrev() = m_head;
}
m_size++;
return m_head;
}
template < typename T >
inline CircularListElement<T> * CircularList<T>::Add(const T & data)
{
const T * pData = &data;
return Add(pData);
}
template < typename T >
inline bool CircularList<T>::Next()
{
if (m_size == 0)
{
return false;
}
m_head = m_head->GetNext();
return true;
}
template < typename T >
inline bool CircularList<T>::Prev()
{
if (m_size == 0)
{
return false;
}
m_head = m_head->GetPrev();
return true;
}
template < typename T >
inline CircularList<T>::CircularList(const CircularList& rhs)
{
if (rhs.m_size > 0)
{
CircularListElement<T> * current = rhs.m_head;
do
{
current = current->GetNext();
Add(current->GetData());
}
while ( current != rhs.m_head );
}
}
template < typename T >
inline const CircularList<T>& CircularList<T>::operator=(const CircularList& rhs)
{
if (&rhs != this)
{
Clear();
m_heapManager = rhs.m_heapManager;
if (rhs.m_size > 0)
{
CircularListElement<T> * current = rhs.m_head;
do
{
current = current->GetNext();
Add(current->GetData());
}
while ( current != rhs.m_head );
}
}
return (*this);
}
}
#endif

278
indra/libhacd/hacdGraph.cpp Normal file
View File

@@ -0,0 +1,278 @@
/* Copyright (c) 2011 Khaled Mamou (kmamou at gmail dot com)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "hacdGraph.h"
namespace HACD
{
GraphEdge::GraphEdge()
{
m_v1 = -1;
m_v2 = -1;
m_name = -1;
m_error = 0;
m_concavity = 0;
m_deleted = false;
#ifdef HACD_PRECOMPUTE_CHULLS
m_convexHull = 0;
#endif
}
GraphVertex::GraphVertex()
{
m_convexHull = 0;
m_name = -1;
m_cc = -1;
m_concavity = 0;
m_surf = 0;
m_deleted = false;
}
bool GraphVertex::DeleteEdge(long name)
{
return m_edges.Erase(name);
}
Graph::Graph()
{
m_nV = 0;
m_nE = 0;
m_nCCs = 0;
}
Graph::~Graph()
{
}
void Graph::Allocate(size_t nV, size_t nE)
{
m_nV = nV;
m_edges.reserve(nE);
m_vertices.resize(nV);
for(size_t i = 0; i < nV; i++)
{
m_vertices[i].m_name = static_cast<long>(i);
}
}
long Graph::AddVertex()
{
size_t name = m_vertices.size();
m_vertices.resize(name+1);
m_vertices[name].m_name = static_cast<long>(name);
m_nV++;
return static_cast<long>(name);
}
long Graph::AddEdge(long v1, long v2)
{
size_t name = m_edges.size();
m_edges.push_back(GraphEdge());
m_edges[name].m_name = static_cast<long>(name);
m_edges[name].m_v1 = v1;
m_edges[name].m_v2 = v2;
m_vertices[v1].AddEdge(static_cast<long>(name));
m_vertices[v2].AddEdge(static_cast<long>(name));
m_nE++;
return static_cast<long>(name);
}
bool Graph::DeleteEdge(long name)
{
if (name < static_cast<long>(m_edges.size()))
{
long v1 = m_edges[name].m_v1;
long v2 = m_edges[name].m_v2;
m_edges[name].m_deleted = true;
m_vertices[v1].DeleteEdge(name);
m_vertices[v2].DeleteEdge(name);
m_nE--;
return true;
}
return false;
}
bool Graph::DeleteVertex(long name)
{
if (name < static_cast<long>(m_vertices.size()))
{
m_vertices[name].m_deleted = true;
m_vertices[name].m_edges.Clear();
m_vertices[name].m_ancestors = std::vector<long>();
delete m_vertices[name].m_convexHull;
m_vertices[name].m_distPoints.Clear();
m_vertices[name].m_boudaryEdges.Clear();
m_vertices[name].m_convexHull = 0;
m_nV--;
return true;
}
return false;
}
bool Graph::EdgeCollapse(long v1, long v2)
{
long edgeToDelete = GetEdgeID(v1, v2);
if (edgeToDelete >= 0)
{
// delete the edge (v1, v2)
DeleteEdge(edgeToDelete);
// add v2 to v1 ancestors
m_vertices[v1].m_ancestors.push_back(v2);
// add v2's ancestors to v1's ancestors
m_vertices[v1].m_ancestors.insert(m_vertices[v1].m_ancestors.begin(),
m_vertices[v2].m_ancestors.begin(),
m_vertices[v2].m_ancestors.end());
// update adjacency information
SArray<long, SARRAY_DEFAULT_MIN_SIZE> & v1Edges = m_vertices[v1].m_edges;
long b = -1;
long idEdge;
for(size_t ed = 0; ed < m_vertices[v2].m_edges.Size(); ++ed)
{
idEdge = m_vertices[v2].m_edges[ed];
if (m_edges[idEdge].m_v1 == v2)
{
b = m_edges[idEdge].m_v2;
}
else
{
b = m_edges[idEdge].m_v1;
}
if (GetEdgeID(v1, b) >= 0)
{
m_edges[idEdge].m_deleted = true;
m_vertices[b].DeleteEdge(idEdge);
m_nE--;
}
else
{
m_edges[idEdge].m_v1 = v1;
m_edges[idEdge].m_v2 = b;
v1Edges.Insert(idEdge);
}
}
// delete the vertex v2
DeleteVertex(v2);
return true;
}
return false;
}
long Graph::GetEdgeID(long v1, long v2) const
{
if (v1 < static_cast<long>(m_vertices.size()) && !m_vertices[v1].m_deleted)
{
long idEdge;
for(size_t ed = 0; ed < m_vertices[v1].m_edges.Size(); ++ed)
{
idEdge = m_vertices[v1].m_edges[ed];
if ( (m_edges[idEdge].m_v1 == v2) ||
(m_edges[idEdge].m_v2 == v2) )
{
return m_edges[idEdge].m_name;
}
}
}
return -1;
}
void Graph::Print() const
{
std::cout << "-----------------------------" << std::endl;
std::cout << "vertices (" << m_nV << ")" << std::endl;
for (size_t v = 0; v < m_vertices.size(); ++v)
{
const GraphVertex & currentVertex = m_vertices[v];
if (!m_vertices[v].m_deleted)
{
std::cout << currentVertex.m_name << "\t";
long idEdge;
for(size_t ed = 0; ed < currentVertex.m_edges.Size(); ++ed)
{
idEdge = currentVertex.m_edges[ed];
std::cout << "(" << m_edges[idEdge].m_v1 << "," << m_edges[idEdge].m_v2 << ") ";
}
std::cout << std::endl;
}
}
std::cout << "vertices (" << m_nE << ")" << std::endl;
for (size_t e = 0; e < m_edges.size(); ++e)
{
const GraphEdge & currentEdge = m_edges[e];
if (!m_edges[e].m_deleted)
{
std::cout << currentEdge.m_name << "\t("
<< m_edges[e].m_v1 << ","
<< m_edges[e].m_v2 << ") "<< std::endl;
}
}
}
void Graph::Clear()
{
m_vertices.clear();
m_edges.clear();
m_nV = 0;
m_nE = 0;
}
long Graph::ExtractCCs()
{
// all CCs to -1
for (size_t v = 0; v < m_vertices.size(); ++v)
{
if (!m_vertices[v].m_deleted)
{
m_vertices[v].m_cc = -1;
}
}
// we get the CCs
m_nCCs = 0;
long v2 = -1;
long idEdge;
std::vector<long> temp;
for (size_t v = 0; v < m_vertices.size(); ++v)
{
if (!m_vertices[v].m_deleted && m_vertices[v].m_cc == -1)
{
m_vertices[v].m_cc = static_cast<long>(m_nCCs);
temp.clear();
temp.push_back(m_vertices[v].m_name);
while (temp.size())
{
long vertex = temp[temp.size()-1];
temp.pop_back();
for(size_t ed = 0; ed < m_vertices[vertex].m_edges.Size(); ++ed)
{
idEdge = m_vertices[vertex].m_edges[ed];
if (m_edges[idEdge].m_v1 == vertex)
{
v2 = m_edges[idEdge].m_v2;
}
else
{
v2 = m_edges[idEdge].m_v1;
}
if ( !m_vertices[v2].m_deleted && m_vertices[v2].m_cc == -1)
{
m_vertices[v2].m_cc = static_cast<long>(m_nCCs);
temp.push_back(v2);
}
}
}
m_nCCs++;
}
}
return static_cast<long>(m_nCCs);
}
}

118
indra/libhacd/hacdGraph.h Normal file
View File

@@ -0,0 +1,118 @@
/* Copyright (c) 2011 Khaled Mamou (kmamou at gmail dot com)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#ifndef HACD_GRAPH_H
#define HACD_GRAPH_H
#include "hacdVersion.h"
#include "hacdVector.h"
#include "hacdICHull.h"
#include <map>
#include <vector>
#include "hacdSArray.h"
//#define HACD_PRECOMPUTE_CHULLS
namespace HACD
{
class GraphVertex;
class GraphEdge;
class Graph;
class HACD;
class GraphVertex
{
public:
bool AddEdge(long name)
{
m_edges.Insert(name);
return true;
}
bool DeleteEdge(long name);
GraphVertex();
~GraphVertex(){ delete m_convexHull;};
private:
long m_name;
long m_cc;
SArray<long, SARRAY_DEFAULT_MIN_SIZE> m_edges;
bool m_deleted;
std::vector<long> m_ancestors;
SArray<DPoint, SARRAY_DEFAULT_MIN_SIZE> m_distPoints;
Real m_concavity;
double m_surf;
ICHull * m_convexHull;
SArray<unsigned long long, SARRAY_DEFAULT_MIN_SIZE> m_boudaryEdges;
friend class GraphEdge;
friend class Graph;
friend class HACD;
};
class GraphEdge
{
public:
GraphEdge();
~GraphEdge()
{
#ifdef HACD_PRECOMPUTE_CHULLS
delete m_convexHull;
#endif
};
private:
long m_name;
long m_v1;
long m_v2;
double m_concavity;
Real m_error;
#ifdef HACD_PRECOMPUTE_CHULLS
ICHull * m_convexHull;
#endif
bool m_deleted;
friend class GraphVertex;
friend class Graph;
friend class HACD;
};
class Graph
{
public:
size_t GetNEdges() const { return m_nE;}
size_t GetNVertices() const { return m_nV;}
bool EdgeCollapse(long v1, long v2);
long AddVertex();
long AddEdge(long v1, long v2);
bool DeleteEdge(long name);
bool DeleteVertex(long name);
long GetEdgeID(long v1, long v2) const;
void Clear();
void Print() const;
long ExtractCCs();
Graph();
virtual ~Graph();
void Allocate(size_t nV, size_t nE);
private:
size_t m_nCCs;
size_t m_nV;
size_t m_nE;
std::vector<GraphEdge> m_edges;
std::vector<GraphVertex> m_vertices;
friend class HACD;
};
}
#endif

1142
indra/libhacd/hacdHACD.cpp Normal file

File diff suppressed because it is too large Load Diff

330
indra/libhacd/hacdHACD.h Normal file
View File

@@ -0,0 +1,330 @@
/* Copyright (c) 2011 Khaled Mamou (kmamou at gmail dot com)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#ifndef HACD_HACD_H
#define HACD_HACD_H
#include "hacdVersion.h"
#include "hacdVector.h"
#include "hacdGraph.h"
#include "hacdICHull.h"
#include <set>
#include <vector>
#include <queue>
namespace HACD
{
const double sc_pi = 3.14159265;
class HACD;
// just to be able to set the capcity of the container
template<class _Ty, class _Container = std::vector<_Ty>, class _Pr = std::less<typename _Container::value_type> >
class reservable_priority_queue: public std::priority_queue<_Ty, _Container, _Pr>
{
typedef typename std::priority_queue<_Ty, _Container, _Pr>::size_type size_type;
public:
reservable_priority_queue(size_type capacity = 0) { reserve(capacity); };
void reserve(size_type capacity) { this->c.reserve(capacity); }
size_type capacity() const { return this->c.capacity(); }
};
//! priority queque element
class HACD;
class GraphEdgePriorityQueue
{
public:
//! Constructor
//! @param name edge's id
//! @param priority edge's priority
GraphEdgePriorityQueue(long name, Real priority)
{
m_name = name;
m_priority = priority;
}
//! Destructor
~GraphEdgePriorityQueue(void){}
private:
long m_name; //!< edge name
Real m_priority; //!< priority
//! Operator < for GraphEdgePQ
friend bool operator<(const GraphEdgePriorityQueue & lhs, const GraphEdgePriorityQueue & rhs);
//! Operator > for GraphEdgePQ
friend bool operator>(const GraphEdgePriorityQueue & lhs, const GraphEdgePriorityQueue & rhs);
friend class HACD;
};
inline bool operator<(const GraphEdgePriorityQueue & lhs, const GraphEdgePriorityQueue & rhs)
{
return (lhs.m_priority<rhs.m_priority);
}
inline bool operator>(const GraphEdgePriorityQueue & lhs, const GraphEdgePriorityQueue & rhs)
{
return lhs.m_priority>rhs.m_priority;
}
class ICallback
{
public:
virtual void operator()( char const *aMsg, double aProgress, double aConcavity, size_t aVertices) = 0;
};
typedef ICallback* CallBackFunction;
//! Provides an implementation of the Hierarchical Approximate Convex Decomposition (HACD) technique described in "A Simple and Efficient Approach for 3D Mesh Approximate Convex Decomposition" Game Programming Gems 8 - Chapter 2.8, p.202. A short version of the chapter was published in ICIP09 and is available at ftp://ftp.elet.polimi.it/users/Stefano.Tubaro/ICIP_USB_Proceedings_v2/pdfs/0003501.pdf
class HACD
{
public:
//! Gives the targeted number of triangles of the decimated mesh
//! @return targeted number of triangles of the decimated mesh
size_t GetTargetNTrianglesDecimatedMesh() const { return m_targetNTrianglesDecimatedMesh;}
//! Sets the targeted number of triangles of the decimated mesh
//! @param targeted number of triangles of the decimated mesh
void SetNTargetTrianglesDecimatedMesh(size_t targetNTrianglesDecimatedMesh) { m_targetNTrianglesDecimatedMesh = targetNTrianglesDecimatedMesh;}
//! Gives the triangles partitionas an array of size m_nTriangles where the i-th element specifies the cluster to which belong the i-th triangle
//! @return triangles partition
const long * const GetPartition() const { return m_partition;}
//! Sets the scale factor
//! @param scale scale factor
void SetScaleFactor(double scale) { m_scale = scale;}
//! Gives the scale factor
//! @return scale factor
const double GetScaleFactor() const { return m_scale;}
//! Sets the threshold to detect small clusters. The threshold is expressed as a percentage of the total mesh surface (default 0.25%)
//! @param smallClusterThreshold threshold to detect small clusters
void SetSmallClusterThreshold(double smallClusterThreshold) { m_smallClusterThreshold = smallClusterThreshold;}
//! Gives the threshold to detect small clusters. The threshold is expressed as a percentage of the total mesh surface (default 0.25%)
//! @return threshold to detect small clusters
const double GetSmallClusterThreshold() const { return m_smallClusterThreshold;}
//! Sets the call-back function
//! @param callBack pointer to the call-back function
void SetCallBack(CallBackFunction callBack) { m_callBack = callBack;}
//! Gives the call-back function
//! @return pointer to the call-back function
const CallBackFunction GetCallBack() const { return m_callBack;}
//! Specifies whether faces points should be added when computing the concavity
//! @param addFacesPoints true = faces points should be added
void SetAddFacesPoints(bool addFacesPoints) { m_addFacesPoints = addFacesPoints;}
//! Specifies wheter faces points should be added when computing the concavity
//! @return true = faces points should be added
const bool GetAddFacesPoints() const { return m_addFacesPoints;}
//! Specifies whether extra points should be added when computing the concavity
//! @param addExteraDistPoints true = extra points should be added
void SetAddExtraDistPoints(bool addExtraDistPoints) { m_addExtraDistPoints = addExtraDistPoints;}
//! Specifies wheter extra points should be added when computing the concavity
//! @return true = extra points should be added
const bool GetAddExtraDistPoints() const { return m_addExtraDistPoints;}
//! Sets the points of the input mesh (Remark: the input points will be scaled and shifted. Use DenormalizeData() to invert those operations)
//! @param points pointer to the input points
void SetPoints(Vec3<Real> * points) { m_points = points;}
//! Gives the points of the input mesh (Remark: the input points will be scaled and shifted. Use DenormalizeData() to invert those operations)
//! @return pointer to the input points
const Vec3<Real> * GetPoints() const { return m_points;}
//! Gives the points of the decimated mesh
//! @return pointer to the decimated mesh points
const Vec3<Real> * GetDecimatedPoints() const { return m_pointsDecimated;}
//! Gives the triangles in the decimated mesh
//! @return pointer to the decimated mesh triangles
const Vec3<long> * GetDecimatedTriangles() const { return m_trianglesDecimated;}
//! Gives the number of points in the decimated mesh.
//! @return number of points the decimated mesh mesh
const size_t GetNDecimatedPoints() const { return m_nPointsDecimated;}
//! Gives the number of triangles in the decimated mesh.
//! @return number of triangles the decimated mesh
const size_t GetNDecimatedTriangles() const { return m_nTrianglesDecimated;}
//! Sets the triangles of the input mesh.
//! @param triangles points pointer to the input points
void SetTriangles(Vec3<long> * triangles) { m_triangles = triangles;}
//! Gives the triangles in the input mesh
//! @return pointer to the input triangles
const Vec3<long> * GetTriangles() const { return m_triangles;}
//! Sets the number of points in the input mesh.
//! @param nPoints number of points the input mesh
void SetNPoints(size_t nPoints) { m_nPoints = nPoints;}
//! Gives the number of points in the input mesh.
//! @return number of points the input mesh
const size_t GetNPoints() const { return m_nPoints;}
//! Sets the number of triangles in the input mesh.
//! @param nTriangles number of triangles in the input mesh
void SetNTriangles(size_t nTriangles) { m_nTriangles = nTriangles;}
//! Gives the number of triangles in the input mesh.
//! @return number of triangles the input mesh
const size_t GetNTriangles() const { return m_nTriangles;}
//! Sets the minimum number of clusters to be generated.
//! @param nClusters minimum number of clusters
void SetNClusters(size_t nClusters) { m_nMinClusters = nClusters;}
//! Gives the number of generated clusters.
//! @return number of generated clusters
const size_t GetNClusters() const { return m_nClusters;}
//! Sets the maximum allowed concavity.
//! @param concavity maximum concavity
void SetConcavity(double concavity) { m_concavity = concavity;}
//! Gives the maximum allowed concavity.
//! @return maximum concavity
double GetConcavity() const { return m_concavity;}
//! Sets the maximum allowed distance to get CCs connected.
//! @param concavity maximum distance to get CCs connected
void SetConnectDist(double ccConnectDist) { m_ccConnectDist = ccConnectDist;}
//! Gives the maximum allowed distance to get CCs connected.
//! @return maximum distance to get CCs connected
double GetConnectDist() const { return m_ccConnectDist;}
//! Sets the volume weight.
//! @param beta volume weight
void SetVolumeWeight(double beta) { m_beta = beta;}
//! Gives the volume weight.
//! @return volume weight
double GetVolumeWeight() const { return m_beta;}
//! Sets the compacity weight (i.e. parameter alpha in ftp://ftp.elet.polimi.it/users/Stefano.Tubaro/ICIP_USB_Proceedings_v2/pdfs/0003501.pdf).
//! @param alpha compacity weight
void SetCompacityWeight(double alpha) { m_alpha = alpha;}
//! Gives the compacity weight (i.e. parameter alpha in ftp://ftp.elet.polimi.it/users/Stefano.Tubaro/ICIP_USB_Proceedings_v2/pdfs/0003501.pdf).
//! @return compacity weight
double GetCompacityWeight() const { return m_alpha;}
//! Sets the maximum number of vertices for each generated convex-hull.
//! @param nVerticesPerCH maximum # vertices per CH
void SetNVerticesPerCH(size_t nVerticesPerCH) { m_nVerticesPerCH = nVerticesPerCH;}
//! Gives the maximum number of vertices for each generated convex-hull.
//! @return maximum # vertices per CH
const size_t GetNVerticesPerCH() const { return m_nVerticesPerCH;}
//! Gives the number of vertices for the cluster number numCH.
//! @return number of vertices
size_t GetNPointsCH(size_t numCH) const;
//! Gives the number of triangles for the cluster number numCH.
//! @param numCH cluster's number
//! @return number of triangles
size_t GetNTrianglesCH(size_t numCH) const;
//! Gives the vertices and the triangles of the cluster number numCH.
//! @param numCH cluster's number
//! @param points pointer to the vector of points to be filled
//! @param triangles pointer to the vector of triangles to be filled
//! @return true if sucess
bool GetCH(size_t numCH, Vec3<Real> * const points, Vec3<long> * const triangles);
//! Computes the HACD decomposition.
//! @param fullCH specifies whether to generate convex-hulls with a full or limited (i.e. < m_nVerticesPerCH) number of vertices
//! @param exportDistPoints specifies wheter distance points should ne exported or not (used only for debugging).
//! @return true if sucess
bool Compute(bool fullCH=false, bool exportDistPoints=false);
#if 0
//! Saves the generated convex-hulls in a VRML 2.0 file.
//! @param fileName the output file name
//! @param uniColor specifies whether the different convex-hulls should have the same color or not
//! @param numCluster specifies the cluster to be saved, if numCluster < 0 export all clusters
//! @return true if sucess
bool Save(const char * fileName, bool uniColor, long numCluster=-1) const;
#endif
//! Shifts and scales to the data to have all the coordinates between 0.0 and 1000.0.
void NormalizeData();
//! Inverse the operations applied by NormalizeData().
void DenormalizeData();
//! Destructor.
~HACD(void);
private:
//! Constructor.
HACD(HeapManager * heapManager = 0);
//! Gives the edge index.
//! @param a first vertex id
//! @param b second vertex id
//! @return edge's index
static unsigned long long GetEdgeIndex(unsigned long long a, unsigned long long b)
{
if (a > b) return (a << 32) + b;
else return (b << 32) + a;
}
//! Computes the concavity of a cluster.
//! @param ch the cluster's convex-hull
//! @param distPoints the cluster's points
//! @return cluster's concavity
double Concavity(ICHull & ch, std::map<long, DPoint> & distPoints);
//! Computes the perimeter of a cluster.
//! @param triIndices the cluster's triangles
//! @param distPoints the cluster's points
//! @return cluster's perimeter
double ComputePerimeter(const std::vector<long> & triIndices) const;
//! Creates the Graph by associating to each mesh triangle a vertex in the graph and to each couple of adjacent triangles an edge in the graph.
void CreateGraph();
//! Initializes the graph costs and computes the vertices normals
void InitializeDualGraph();
//! Computes the cost of an edge
//! @param e edge's id
void ComputeEdgeCost(size_t e);
//! Initializes the priority queue
//! @param fast specifies whether fast mode is used
//! @return true if success
bool InitializePriorityQueue();
//! Cleans the intersection between convex-hulls
void CleanClusters();
//! Computes convex-hulls from partition information
//! @param fullCH specifies whether to generate convex-hulls with a full or limited (i.e. < m_nVerticesPerCH) number of vertices
void ComputeConvexHulls(bool fullCH);
//! Simplifies the graph
//! @param fast specifies whether fast mode is used
void Simplify();
private:
Vec3<long> * m_trianglesDecimated; //>! pointer the triangles array
Vec3<Real> * m_pointsDecimated; //>! pointer the points array
Vec3<long> * m_triangles; //>! pointer the triangles array
Vec3<Real> * m_points; //>! pointer the points array
Vec3<Real> * m_facePoints; //>! pointer to the faces points array
Vec3<Real> * m_faceNormals; //>! pointer to the faces normals array
Vec3<Real> * m_normals; //>! pointer the normals array
Vec3<Real> * m_extraDistPoints; //>! pointer to the faces points array
Vec3<Real> * m_extraDistNormals; //>! pointer to the faces normals array
size_t m_nTrianglesDecimated; //>! number of triangles in the original mesh
size_t m_nPointsDecimated; //>! number of vertices in the original mesh
size_t m_nTriangles; //>! number of triangles in the original mesh
size_t m_nPoints; //>! number of vertices in the original mesh
size_t m_nClusters; //>! number of clusters
size_t m_nMinClusters; //>! minimum number of clusters
double m_ccConnectDist; //>! maximum allowed distance to connect CCs
double m_concavity; //>! maximum concavity
double m_alpha; //>! compacity weigth
double m_beta; //>! volume weigth
double m_gamma; //>! computation cost
double m_diag; //>! length of the BB diagonal
double m_scale; //>! scale factor used for NormalizeData() and DenormalizeData()
double m_flatRegionThreshold; //>! threshhold to control the contirbution of flat regions concavity (default 1% of m_scale)
double m_smallClusterThreshold; //>! threshhold to detect small clusters (default 0.25% of the total mesh surface)
double m_area; //>! surface area
Vec3<Real> m_barycenter; //>! barycenter of the mesh
std::vector< long > m_cVertices; //>! array of vertices each belonging to a different cluster
ICHull * m_convexHulls; //>! convex-hulls associated with the final HACD clusters
Graph m_graph; //>! simplification graph
size_t m_nVerticesPerCH; //>! maximum number of vertices per convex-hull
reservable_priority_queue<GraphEdgePriorityQueue,
std::vector<GraphEdgePriorityQueue>,
std::greater<std::vector<GraphEdgePriorityQueue>::value_type> > m_pqueue; //!> priority queue
HACD(const HACD & rhs);
CallBackFunction m_callBack; //>! call-back function
long * m_partition; //>! array of size m_nTriangles where the i-th element specifies the cluster to which belong the i-th triangle
size_t m_targetNTrianglesDecimatedMesh; //>! specifies the target number of triangles in the decimated mesh. If set to 0 no decimation is applied.
HeapManager * m_heapManager; //>! Heap Manager
bool m_addFacesPoints; //>! specifies whether to add faces points or not
bool m_addExtraDistPoints; //>! specifies whether to add extra points for concave shapes or not
friend HACD * const CreateHACD(HeapManager * heapManager = 0);
friend void DestroyHACD(HACD * const hacd);
};
inline HACD * const CreateHACD(HeapManager * heapManager)
{
return new HACD(heapManager);
}
inline void DestroyHACD(HACD * const hacd)
{
delete hacd;
}
}
#endif

1004
indra/libhacd/hacdICHull.cpp Normal file

File diff suppressed because it is too large Load Diff

133
indra/libhacd/hacdICHull.h Normal file
View File

@@ -0,0 +1,133 @@
/* Copyright (c) 2011 Khaled Mamou (kmamou at gmail dot com)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. The names of the contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#ifndef HACD_ICHULL_H
#define HACD_ICHULL_H
#include "hacdVersion.h"
#include "hacdManifoldMesh.h"
#include "hacdVector.h"
#include <vector>
#include <map>
#include "hacdMicroAllocator.h"
namespace HACD
{
class DPoint;
class HACD;
//! Incremental Convex Hull algorithm (cf. http://maven.smith.edu/~orourke/books/ftp.html ).
enum ICHullError
{
ICHullErrorOK = 0,
ICHullErrorCoplanarPoints,
ICHullErrorNoVolume,
ICHullErrorInconsistent,
ICHullErrorNotEnoughPoints
};
class ICHull
{
public:
static const double sc_eps;
//!
HeapManager * const GetHeapManager() const { return m_heapManager;}
//!
void SetHeapManager(HeapManager * const heapManager)
{
m_heapManager = heapManager;
m_mesh.SetHeapManager(m_heapManager);
}
//!
bool IsFlat() { return m_isFlat;}
//!
std::map<long, DPoint> * GetDistPoints() const { return m_distPoints;}
//!
void SetDistPoints(std::map<long, DPoint> * distPoints) { m_distPoints = distPoints;}
//! Returns the computed mesh
TMMesh & GetMesh() { return m_mesh;}
//! Add one point to the convex-hull
bool AddPoint(const Vec3<Real> & point) {return AddPoints(&point, 1);}
//! Add one point to the convex-hull
bool AddPoint(const Vec3<Real> & point, long id);
//! Add points to the convex-hull
bool AddPoints(const Vec3<Real> * points, size_t nPoints);
bool AddPoints(std::vector< Vec3<Real> > points);
//!
ICHullError Process();
//!
ICHullError Process(unsigned long nPointsCH);
//!
double ComputeVolume();
//!
double ComputeArea();
//!
bool IsInside(const Vec3<Real> & pt0, const double eps = 0.0);
//!
double ComputeDistance(long name, const Vec3<Real> & pt, const Vec3<Real> & normal, bool & insideHull, bool updateIncidentPoints);
//!
const ICHull & operator=(ICHull & rhs);
//! Constructor
ICHull(HeapManager * const heapManager=0);
//! Destructor
virtual ~ICHull(void) {};
private:
//! DoubleTriangle builds the initial double triangle. It first finds 3 noncollinear points and makes two faces out of them, in opposite order. It then finds a fourth point that is not coplanar with that face. The vertices are stored in the face structure in counterclockwise order so that the volume between the face and the point is negative. Lastly, the 3 newfaces to the fourth point are constructed and the data structures are cleaned up.
ICHullError DoubleTriangle();
//! MakeFace creates a new face structure from three vertices (in ccw order). It returns a pointer to the face.
CircularListElement<TMMTriangle> * MakeFace(CircularListElement<TMMVertex> * v0,
CircularListElement<TMMVertex> * v1,
CircularListElement<TMMVertex> * v2,
CircularListElement<TMMTriangle> * fold);
//!
CircularListElement<TMMTriangle> * MakeConeFace(CircularListElement<TMMEdge> * e, CircularListElement<TMMVertex> * v);
//!
bool ProcessPoint();
//!
bool ComputePointVolume(double &totalVolume, bool markVisibleFaces);
//!
bool FindMaxVolumePoint();
//!
bool CleanEdges();
//!
bool CleanVertices(unsigned long & addedPoints);
//!
bool CleanTriangles();
//!
bool CleanUp(unsigned long & addedPoints);
//!
bool MakeCCW(CircularListElement<TMMTriangle> * f,
CircularListElement<TMMEdge> * e,
CircularListElement<TMMVertex> * v);
void Clear();
private:
static const long sc_dummyIndex;
static const double sc_distMin;
TMMesh m_mesh;
std::vector<CircularListElement<TMMEdge> *> m_edgesToDelete;
std::vector<CircularListElement<TMMEdge> *> m_edgesToUpdate;
std::vector<CircularListElement<TMMTriangle> *> m_trianglesToDelete;
std::map<long, DPoint> * m_distPoints;
// CircularListElement<TMMVertex> * m_dummyVertex;
Vec3<Real> m_normal;
bool m_isFlat;
HeapManager * m_heapManager;
ICHull(const ICHull & rhs);
friend class HACD;
};
}
#endif

Some files were not shown because too many files have changed in this diff Show More