Compare commits

..

1572 Commits

Author SHA1 Message Date
Inusaito Sayori
e5b09a0876 Fix bug in which texture drag&drop to a texturectrl wouldn't make apply buttons enable (IE: group profile) 2015-02-16 14:57:28 -05:00
Inusaito Sayori
e9a517985b Instead of "?object_not_owner" display " (Owner)" appended on Object IM Info Floater
Translators may want to update floater_object_im_info.xml, string "owner" was added.
2015-02-13 02:56:52 -05:00
Inusaito Sayori
a2058bc1e8 Hopefully fix Router's issue by caching ID for map compare, not name. 2015-02-13 00:01:19 -05:00
Inusaito Sayori
de96b8e43e Use friendlier names in friendly situations~ 2015-02-12 23:46:22 -05:00
Inusaito Sayori
d1e5d67336 What Altivec? This isn't PowerPC 2015-02-12 21:01:24 -05:00
Inusaito Sayori
5279697890 mFocusLostSignal is not needed, these disconnect themselves. 2015-02-11 01:44:26 -05:00
Inusaito Sayori
fd9166e32a Presentation of group ban date bug go squash. 2015-02-09 17:01:45 -05:00
Inusaito Sayori
6b9c53c3c0 Fix missing ) at the end of llTextBox description tooltip. 2015-02-05 00:38:17 -05:00
Inusaito Sayori
3620e537ab Satisfy Issue 1827: Group Profile Texture Expansion
Also fix buttons laying over Group Insignia text
2015-02-05 00:37:35 -05:00
Inusaito Sayori
e625fa3b33 Cleanup duplicate show_picture codestuffs. 2015-02-04 23:47:37 -05:00
Inusaito Sayori
f0b18e52a3 OR not AND 2015-02-04 13:54:39 -05:00
Inusaito Sayori
adecaca730 Work around crash signature 8715
Apparently SL Grid gives some odd session types for P2P?
This should be looked into closer, but for now just accept that it happens.
2015-02-04 01:07:56 -05:00
Inusaito Sayori
10ef3ff683 Fix crash signature 7694 2015-02-04 00:30:40 -05:00
Inusaito Sayori
ef5b95d5b9 Fix crash signature 9141 2015-02-04 00:02:09 -05:00
Inusaito Sayori
c3e9150125 Oops, should leave that there. 2015-02-02 19:28:29 -05:00
Inusaito Sayori
ac0afbcc4a Fix llDialog tooltip 2015-02-02 16:12:56 -05:00
Inusaito Sayori
a9593e62b7 LLViewerMenu code cleanup 2015-02-02 16:12:32 -05:00
Inusaito Sayori
4b7bc99291 Cleanup LLNotify
Adds support for SUPPRESS_TOAST in payload to skip display of notices and just spew them to chat. (this was requested to be hooked up around last release, I think)
Fixes Singularity->Close All Dialogs breaking notifications such that the skip button would appear when not needed.

Cleans up a buncha dead code and silliness.
Also Cleanup LLGroupNotify because why not?
2015-02-02 15:44:06 -05:00
Inusaito Sayori
43e1aa9c01 Apply Aleric's fix for Issue 1810: Import of XML shape data from Avastar 2015-01-31 06:47:24 -05:00
Inusaito Sayori
d44d6515d8 [Voice Update] Use newest SLVoice~ 2015-01-30 18:17:06 -05:00
Shyotl
7c636c6c17 Remove unused linear_to_srgb function from several shaders. 2015-01-29 17:49:18 -06:00
Shyotl
c094314a2d LLFeatureManager cleanup. 2015-01-29 17:48:15 -06:00
Shyotl
9da87128f1 Disable usage of glFog when drawing selected objects, if using shaders. 2015-01-29 17:47:39 -06:00
Shyotl
1036e1f3fb Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2015-01-29 17:40:44 -06:00
Inusaito Sayori
6b5fd054f6 Update all other platforms to FMOD Studio 1.05.11 2015-01-29 06:52:12 -05:00
Shyotl
91b6d68eae Avoid unix-based mkdir usage on windows. 2015-01-29 04:03:45 -06:00
Shyotl
a0487b12be FMOD Studio prebuilt update for OSX. Also, delete "autobuild-package.xml" that is in newer v3-based prebuilt packages, and prevent registry key from trumping usage of fmodstudio prebuilt; it must now be explicitly set in the develop.py invocation. 2015-01-29 00:55:08 -06:00
Shyotl
1e07b626c4 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2015-01-28 16:39:39 -06:00
Shyotl
b247ca3f76 Fix osx packaging. 2015-01-28 16:37:06 -06:00
Inusaito Sayori
5f3cac46eb This slipped by me, oopsies. 2015-01-28 13:12:38 -05:00
Inusaito Sayori
a7c424fc68 Fix remaining issues with new packaging system (mostly Linux)
Thanks to Duncan Armundsen and Damian Zhaoying for the pointers
(merges slightly with alchemy)
2015-01-27 12:08:46 -05:00
Inusaito Sayori
a35f159117 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2015-01-27 09:15:01 -05:00
Shyotl
b865b92a6a Merge branch 'FMODStudio'
Conflicts:
	indra/cmake/PNG.cmake
	indra/newview/llnetmap.cpp
	indra/newview/llviewermessage.cpp



PARAMETERS: CLEAN
2015-01-26 17:15:46 -06:00
Shyotl
2132978c41 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2015-01-26 15:26:02 -06:00
Inusaito Sayori
97f6b9d845 Fix missing notification warning pointed out by Nomade and the French testers
Merci Beaucoup, tout les monde!
2015-01-26 13:33:31 -05:00
Shyotl
6e4ef6f8a1 I'll have all the derps, please. 2015-01-23 16:49:21 -06:00
Shyotl
56bd48bd2a elseif (WINDOWS AND WORD_SIZE EQUAL 32)' mistakenly clobbered. Also, try 'ProgramFiles(x86)' envvar first 2015-01-23 02:07:19 -06:00
Shyotl
ca98523c41 Cmake version bump, cleanup, typo fixes, rewrite of fmodex.cmake. 2015-01-22 02:39:45 -06:00
Inusaito Sayori
290f143b5c Fix the << button on local chat not working, thanks for pointing this out, Nomade~
Also code cleanupsies~
2015-01-21 17:21:38 -05:00
Inusaito Sayori
123ded50ef Oops, that should use emplace, too bad we don't have C++11. 2015-01-20 17:44:22 -05:00
Inusaito Sayori
18b7f6925a Fix/Update Inspect Tool
Solves Issue 1131: Inspect Window while open prevents camming
Possibly fixes Issue 928: Have to Click a second time to Inspect an object, I couldn't reproduce, but maybe you still can?

Fixes a bug in the name cache connection setting of llfloaterinspect.cpp from upstream.
2015-01-20 04:59:46 -05:00
Inusaito Sayori
51aaa9f26b LLTool Update/Sync
Better diff against Alchemy.
2015-01-20 04:37:32 -05:00
Inusaito Sayori
a75964c993 Move menu stuff out of lltoolmgr and into llviewermenu.cpp 2015-01-20 02:00:25 -05:00
Inusaito Sayori
9bd9cb697e Fix SLVoice erroring when log folder path has a space in it.
Thanks to Nomade and Melissa for the help tracking this!
2015-01-13 21:00:57 -05:00
Shibe Doge
4d29117148 Doge wuz here. Also barkies.
░░░░░░░░░▄░░░░░░░░░░░░░░▄░░░░
░░░░░░░░▌▒█░░░░░░░░░░░▄▀▒▌░░░
░░░░░░░░▌▒▒█░░░░░░░░▄▀▒▒▒▐░░░
░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐░░░
░░░░░▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐░░░
░░░▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌░░░
░░▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒▌░░
░░▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐░░
░▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄▌░
░▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒▌░
▀▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒▐░
▐▒▒▐▀▐▀▒░▄▄▒▄▒▒▒▒▒▒░▒░▒░▒▒▒▒▌
▐▒▒▒▀▀▄▄▒▒▒▄▒▒▒▒▒▒▒▒░▒░▒░▒▒▐░
░▌▒▒▒▒▒▒▀▀▀▒▒▒▒▒▒░▒░▒░▒░▒▒▒▌░
░▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▒▄▒▒▐░░
░░▀▄▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▄▒▒▒▒▌░░
░░░░▀▄▒▒▒▒▒▒▒▒▒▒▄▄▄▀▒▒▒▒▄▀░░░
░░░░░░▀▄▄▄▄▄▄▀▀▀▒▒▒▒▒▄▄▀░░░░░
░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▀▀░░░░░░░░
2015-01-13 17:31:20 -05:00
Inusaito Sayori
dd4f2e857b If we're gonna autologin, remember name too. 2015-01-13 00:52:27 -05:00
Inusaito Sayori
0b998da183 Cleanup stuffs inspired by Drake's work~ 2015-01-13 00:50:49 -05:00
Inusaito Sayori
eef7596aeb Combine renderPhysicsDisplay code loops, but don't actually fix any bugs X3 2015-01-13 00:46:20 -05:00
Inusaito Sayori
4abf23f9a9 [OpenSim] Seriously fix Issue 1791, the names thing.
Don't leave me now, don't say it's the end of the road~
2015-01-12 22:07:23 -05:00
Inusaito Sayori
56d2754606 Bricks in the wall 2015-01-12 21:32:29 -05:00
Inusaito Sayori
88ca93d24f Fix vivox logging borkage.
Thankies to Drake/Alchemy~
2015-01-12 19:16:47 -05:00
Inusaito Sayori
72c85ef104 Solve Issue 1234: Enable opening of chat logs in external editor under linux too
Requires xdg-open, but meh~
2015-01-12 19:14:53 -05:00
Inusaito Sayori
c6b1763d96 [STORM-1949] Add default values for ExternalEditor
Thankies Cinder~
2015-01-12 19:00:44 -05:00
Inusaito Sayori
844444c33b Optimize loops calling endInstances()
Thankies to Drake Arconis/Alchemy~
2015-01-12 18:06:49 -05:00
Shyotl
c708408f64 Linux OSS was removed from fmodstudio. Also fix issue in linux manifest. 2015-01-10 16:11:52 -06:00
Lirusaito
03e9db98e6 [OpenSim] Optimize the minimap region tile matrix implementation 2015-01-10 16:29:23 -05:00
Inusaito Sayori
bf3947dcc5 [OpenSim] Draw property lines on minimap properly for variable size regions
This fixes Issue 1684: Minimap on Opensim Var Region showing bad the property lines

This changeset is welcome for use under LGPL.
2015-01-10 12:31:26 -05:00
Inusaito Sayori
5140affe07 [OpenSim] Fix World Map Textures on Minimap of Variable Size Regions.
Thanks to Shyotl for the helpies~
2015-01-10 03:01:02 -05:00
Shyotl
b808caaa0e Appease cmake 3.1.0 2015-01-09 21:38:27 -06:00
Inusaito Sayori
658c617c75 Don't add this column twice, that's just silly. 2015-01-09 17:14:08 -05:00
Inusaito Sayori
05fcfc32bc [OpenSim] Remove unneeded code from the previous name resolution fixes 2015-01-09 15:57:24 -05:00
Inusaito Sayori
05a4409b3d Fix display names not being considered default if the display name is sent empty 2015-01-09 14:29:57 -05:00
Inusaito Sayori
cadc08af87 Remove assert for Issue 1784 (crash signature 450), it didn't fail.
This reverts commit bb297ac354.
2015-01-08 15:08:24 -05:00
Shyotl
2678d0f99e Trying fmodstudio as a prebuilt. (pushed to test on linux buildserver) 2015-01-08 00:49:42 -06:00
Shyotl
b1954e411b Nice typos. 2015-01-08 00:46:36 -06:00
Inusaito Sayori
5d47c7ecfa [OpenSim] Properly fix name lookups, oops~ 2015-01-07 19:02:28 -05:00
Inusaito Sayori
f09d399e88 Only spam the logs about missing var region flags when we're not on SL. 2015-01-07 15:47:14 -05:00
Inusaito Sayori
c592184aa6 Oops, uninstaller wasn't cleaning up the Portable shortcut. 2015-01-07 13:03:04 -05:00
Inusaito Sayori
bb297ac354 Add an assert for Issue 1784 (crash signature 450) 2015-01-07 00:46:01 -05:00
Inusaito Sayori
7871be05af Login entry must be a map to construct an LLSavedLoginEntry, not just defined.
Login Screen Crash Fix.
2015-01-06 15:33:50 -05:00
Shyotl
1a9cd725b2 boost::mutex seems slow with vs2010, so fall back to apr_mutex for it. 2015-01-06 03:56:57 -06:00
Shyotl
1e0395c26d Back to boost mutexes 2015-01-05 17:02:00 -06:00
Shyotl
7943adedaa Also need this. Last build only succeeded due to lingering obsolete entries in the cmake var cache. 2015-01-05 14:25:55 -06:00
Inusaito Sayori
2285830c8f This message ish too long now. 2015-01-04 09:55:09 -05:00
Inusaito Sayori
eff4bc7ad6 Bring back the Copy Key button and offer Copy SLURL as part of a flyout instead. 2015-01-03 22:50:55 -05:00
Inusaito Sayori
794027d91e In (readonly) combo_boxes and flyout_buttons allow use of the font attribute. 2015-01-03 22:14:53 -05:00
Inusaito Sayori
312625036b Fix max_chars on login screen, oopsie. 2015-01-03 15:50:42 -05:00
Inusaito Sayori
e7c1dc3b8e Include object key in objectiminfo floater
General cleanup of llfloaterobjectiminfo included
Update of object im command handler code from v3
2014-12-30 18:02:32 -05:00
Inusaito Sayori
a29b50b4cd Fix crash signature 86
Cleans up a buncha lame code in llpanellogin.cpp
Removes some static silliness from the old days.
Removes RememberLogin because RememberName serves its purpose.
Stylistic fixups~
Removes some pointless functions.
2014-12-30 16:49:40 -05:00
Inusaito Sayori
d03b03ac93 Fix crash signature 230 2014-12-30 14:42:13 -05:00
Shyotl
a891d2fdea FMOD(STUDIO|EX)_SDK_DIR wasn't being properly set. Change fallback on missing msvc*, as the old code made no sense (wildcarded paths don't throw when not found) 2014-12-29 18:59:15 -06:00
Inusaito Sayori
de28034c20 Feature Request: Copy URI button in avatar profiles
This takes the copy key button's place... if this is bad, I'll figure something out down the line.
2014-12-29 18:53:01 -05:00
Inusaito Sayori
01c639c261 Map all the people! 2014-12-29 16:52:51 -05:00
Inusaito Sayori
fe21270bbc [Radar] Attempt to fix the rare spamming of left/entered messages 2014-12-29 16:44:50 -05:00
Inusaito Sayori
b9acd64221 Better the cmdline_partial_name2key function
Just style fixes and opts.
2014-12-29 16:42:38 -05:00
Inusaito Sayori
9bf2092c7e Don't hide the tab container for classifieds (especially not at the wrong time)
Thanks to Aztek Aeon for pointing out this bug!

Includes random stylistic fixes. (everywhere~)
2014-12-29 16:12:18 -05:00
Inusaito Sayori
0eba34d5a8 Can haz groups left count in groups list.
Translators, this is in panel_groups.xml and panel_groups_horiz.xml called groupcount

Inspired by Alchemy<3
2014-12-28 13:33:21 -05:00
Inusaito Sayori
5257eec81e Address Issue 1761: Grid status from Help menu
Adds Grid Status... item to Help menu

Translators:
add WebLaunchGridStatus notification translation to notifications.xml
add Grid Status... menu item translation to menu_viewer.xml and menu_login.xml

Adds menu visibility function "VisibleSecondLife" for hiding things that shouldn't be shown on OpenSim
Hides SL issue tracker and wiki menu items on non-SL grids
2014-12-28 12:17:18 -05:00
Shyotl
2d2513369a OSX poking. 2014-12-28 00:20:30 -06:00
Inusaito Sayori
6e8cd5a4cc Bug fixy ~ Reset Ambient Occlusion setting on cancel
Thanks to Cale Flanagan for finding this one.
2014-12-27 13:11:11 -05:00
Inusaito Sayori
7749f8a99d Edit Linked Parts counts and costs display update~
Show proper impact when editing multiple prims with edit linked parts enabled
Show "Selected prims:" instead of "Selected Objects: 0" when editing linked parts
Show two decimals of impact precision when editing linked parts.
2014-12-27 13:10:46 -05:00
Inusaito Sayori
ef32d0d321 French login panel further update. 2014-12-27 10:46:38 -05:00
Inusaito Sayori
f26d7c7bf2 Update instant message stuff
Fixes auto response chats not showing the name, anymore; switches to using 25% more font color transparency to indicate autoresponse
Cleans up and reorganizes im codestuffs~
2014-12-27 10:20:57 -05:00
Shyotl
86240966b6 Include build version and arch/platform in generated symbol file's name. 2014-12-27 02:54:04 -06:00
Shyotl
f5d3bc2b7b Fixed CMP0026 properly. Requires cmake 2.8.8+ 2014-12-26 23:53:14 -06:00
Shyotl
b3bd91877c Fixed CMP0048 properly. 2014-12-26 23:51:05 -06:00
Shyotl
00123d2dde Not sure why this line got deleted. It's needed for linux breakpad. 2014-12-25 01:57:59 -06:00
Shyotl
ecd58e3924 Reduce some diagnostic spam. 2014-12-23 20:00:01 -06:00
Shyotl
0ac3fd0563 Rename linux build directory from viewer-* to build-*. Also have mac use the unix run_build if not using Xcode 2014-12-22 20:52:11 -06:00
Inusaito Sayori
a805d15797 Do not include Server Release Notes, unless the region has that capability. 2014-12-22 21:05:19 -05:00
Shyotl
28024d7a01 Try better handling CMAKE_BUILD_TYPE if xcode (supports multi-configurations, unlike Unix Makefiles) 2014-12-22 02:42:31 -06:00
Shyotl
e0fb73414b Mac fixup. 2014-12-22 02:08:18 -06:00
Inusaito Sayori
94d6969fed Fix Resident no longer stripping for username only mode
Thanks for noticing this Gamer Expert
2014-12-19 21:27:07 -05:00
Inusaito Sayori
8e5fad2209 Login Panel Redesign Desu
More clear text
Cleaner appearance
Can haz tab from username to password to grid.
2014-12-19 21:26:03 -05:00
Shyotl
ca49db02df Fixed doublequote issue with --extra_libraries 2014-12-19 19:25:31 -06:00
Shyotl
08db85fa99 Unused assets can DIAF. 2014-12-18 23:17:03 -06:00
Shyotl
e57bcea3b6 Experimentation with msbuild 12.0 2014-12-18 18:26:21 -06:00
Shyotl
5c5fae78c6 Fix some annoying issues with spaces in develop.py, for windows. 2014-12-18 18:08:59 -06:00
Shyotl
44f8f17763 V3 merge for most python scripts. fmod inclusion/linkage/packaging changes. 2014-12-18 18:01:41 -06:00
Inusaito Sayori
78e7b288b8 Fix ClickToWalk not allowing mouse-walk (behavior change)
Ansariel and worked together on this to solve http://jira.phoenixviewer.com/browse/FIRE-15189

The behavior change is that when your own avatar is clicked and the mouse is dragged, the camera no longer simply turns on a single axis,
since the behavior for dragging from anywhere else is still the old single-axis pan, this is not a very big deal. I can even see this being more useful!
2014-12-18 08:35:03 -05:00
Inusaito Sayori
78131d2d53 [OpenSim] Fix name lookup fails (on the agent only?) when a grid does not have NameLookupURL 2014-12-17 08:46:21 -05:00
Inusaito Sayori
ca8aa4dc0a Remove the assert I was using to debug Issue 1670
Apparently it is failing on alphas during initialization (loading log file?)
Doesn't matter now, the issue is solved.
2014-12-17 01:28:13 -05:00
Lirusaito
81ef1292ed Fix broked World->Chat 2014-12-16 21:35:28 -05:00
Inusaito Sayori
b67f55cff7 Prevent failure to create SLURL when an object chats but is not on the object list.
Fixes an issue I couldn't remember nor find on the issue tracker.

SLURLs for found objects remain unchanged.
SLURLs for objects that are not found, but we could find their owners now display the owner's position and region, with "?owner_not_object" appended to the slurl as a note to the user
SLURLs for objects that are not found, and we could not find their owners, now display as being from the position 0, 0, 0 in the users region
2014-12-16 19:57:46 -05:00
Inusaito Sayori
9880134b4d Feature request: Add the ability to use keyboard shortcuts from the login panel, whether or not the login webpage is focused 2014-12-16 19:45:19 -05:00
Inusaito Sayori
cc32df6fd8 Update and Sync Mutelist with upstream alchemy
Satisfies the feature request for mute toggle to display mute status
Adds dynamic mute/unmute option to P2P IM dropdown.

Translators should look into the changes made in this commit for:
floater_chat_history.xml, floater_instant_message.xml, floater_instant_message_concisebuttons.xml
panel_avatar.xml has been taken care of for spanish and french, although they should be looked into more closely by the translators.

Cleanup and Sync in related places~
Removal of old static callbacks.
Moves God Names logic into LFSimFeatureHandler
Adds a custom function LLMuteList::hasMute() for quickly checking if a mute is in the internal set.
2014-12-16 19:42:27 -05:00
Inusaito Sayori
0e48a2196f Update/Modernize LLAvatarName and LLAvatarNameCache and _EVERYTHING_ they touch
Fairly certain this adds the feature in which the user may click the online notification to open a chat with the user coming online.

Translators may want to look at the xml changes of this change to see what to update

Removes old LegacyMultiAttachmentSupport patch
Moves LLAvatarName-centric functions into LLAvatarName from elsewhere.
Adds boost::signals2::connections to name polling places.
Removes more old icky static callbacks
Merge from Alchemy, credit where due~
Update notifications.xml to have a bunch of the tags from upstream to ease diffing
2014-12-16 17:55:23 -05:00
Inusaito Sayori
39d27e3a4e Move llavatarname.* to llmessage/ from llcommon/ 2014-12-15 18:35:30 -05:00
Inusaito Sayori
48e6a4f535 LLPanelLogin code cleanup 2014-12-12 20:33:36 -05:00
Inusaito Sayori
7db5126182 Autoreplace toggle on Autoreplace toolbar button~ 2014-12-12 20:26:03 -05:00
Inusaito Sayori
0d4ac69465 [Warnings] Fix sign/unsigned mismatch 2014-12-12 20:21:36 -05:00
Shyotl
32706065ac Have CopyWinLibs only copy files needed for current configuration. 2014-12-12 03:49:47 -06:00
Shyotl
d571b8be81 Viewer manifest cleanup/updating 2014-12-09 16:13:59 -06:00
Shyotl
f014c8207c Try path.os.basename/split instead of string.rsplit 2014-12-09 01:28:23 -06:00
Shyotl
b680b53128 Update vstool executable path. 2014-12-08 23:34:42 -06:00
Shyotl
e2cd11ccd7 Fix up some small typos and avoid c++11's string::back()/pop_back() calls for now. 2014-12-08 21:40:11 -06:00
Shyotl
ab4561aacc Linux build pass. 2014-12-08 18:46:15 -06:00
Inusaito Sayori
a7733a6c55 Fixyfixy 2014-12-08 11:45:52 -05:00
Inusaito Sayori
688aa50064 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer 2014-12-05 19:13:55 -05:00
Inusaito Sayori
232bf22e51 Compile foxies 2014-12-05 18:43:50 -05:00
Inusaito Sayori
171c1a5c44 Fix media controls loading entered urls twice as much.
Thanks to Diva Canto for working with me on this!
2014-12-05 18:41:08 -05:00
Inusaito Sayori
80b4fe6613 Solve Issue 1755: Change Appearance Save button to a flyout option, and move File->Update Outfit
Update Outfit is now at the bottom of the inventory's File menu.
2014-12-05 18:39:05 -05:00
Inusaito Sayori
18f640d73d Fix Linux linker errors
Patch by Aleric
2014-12-05 12:52:01 -05:00
Inusaito Sayori
9e2667261f Timeout policy removal in llmarketplacefunctions.cpp 2014-12-05 12:16:12 -05:00
Shyotl
18e33d2268 Un-break build for older compilers. 2014-12-04 17:53:41 -06:00
Shyotl
fd13ccf802 Support running develop.py without needing to be in indra directory. 2014-12-04 17:23:27 -06:00
Shyotl
fbf947fcd7 Pre cmake3.0 support. 2014-12-04 16:43:52 -06:00
Shyotl
958031dbaf Moved build dirs out of indra directory. installed.xml and prebuilts are now per-build-target. Added support for v3 prebuilt package layout. 2014-12-03 22:36:42 -06:00
Shyotl
7ddef751ef Update md5 checksums for vs2012 x64 libs. 2014-11-28 23:29:34 -06:00
Inusaito Sayori
a81ecc2006 Introduce LLInventoryAction namespace, move doToSelected into it. 2014-11-27 12:45:55 -05:00
Shyotl
fedd094987 Clean up warning. (implicit float to signed integer conversion) 2014-11-26 22:57:50 -06:00
Shyotl
36a8a20434 Alignment fixes. 2014-11-26 22:53:32 -06:00
Shyotl
f5204cc8f5 Check for bad FMOD_RESULT return values for practically every fmod api call. Wavedata dsp also now attached before fmod's fader DSP, and although that makes the stream channelgroup less than necessary, channelgroups are still nice to have. 2014-11-26 01:15:17 -06:00
Inusaito Sayori
808e262a4d MAINT-3562 FIXED Viewer crashes when updating local textures using Substance Designer : add code for control input buffer size
3e69e78acb
2014-11-26 01:23:45 -05:00
Inusaito Sayori
152cf42029 This escaped the getOpenIcon->getIconOpen commit. 2014-11-25 23:39:10 -05:00
Inusaito Sayori
e69385861a Add LLHTTPClient::putRaw 2014-11-25 23:36:43 -05:00
Shyotl
87f87bf2ff Delegate stream shutdown to LLAudioEngine and LLStreamingAudio_* 2014-11-25 16:37:39 -06:00
Shyotl
b3d86e626b Fixed wind dsp and implemented a DSP that mimics removed FMOD::Channel::getWaveData func.
Fixed crash if fmod profiling was enabled.
Fixed crash due to failing to check if resulting utf string from stream metadata was zero-length before calling std::string::back.
2014-11-25 16:32:04 -06:00
Inusaito Sayori
d80ebdc77d getOpenIcon -> getIconOpen 2014-11-25 01:46:12 -05:00
Inusaito Sayori
80ac46c9a5 Move llfoldertype from llcommon/ to llinventory/ 2014-11-24 20:38:46 -05:00
Lirusaito
4387118d55 Remove silly redundant code in LLFloater::draw
Thanks to Diva for pointing this out.
2014-11-23 18:50:59 -05:00
Shyotl
c2abbaedc8 Merge branch 'master' of https://Shyotl@bitbucket.org/LightDrake/singularityviewer-internal.git into FMODStudio 2014-11-22 22:20:32 -06:00
Shyotl
f8927a8a11 Merge branch 'master' of https://Shyotl@bitbucket.org/LightDrake/singularityviewer-internal.git into FMODStudio
Conflicts:
	indra/llcommon/llsingleton.h
2014-11-22 22:19:44 -06:00
Shyotl
7054a2a6d2 Added some fasttimers to LLVOAvatar::idleUpdate 2014-11-22 22:04:18 -06:00
Shyotl
f2f8ecab98 Clean up code for vivox session participant management. 2014-11-22 22:02:46 -06:00
Shyotl
be9d417778 Added vector_shrink_to_fit to llstl.h 2014-11-22 22:02:20 -06:00
Shyotl
6e537cd322 Try to handle BOM for utf stream metadata (doesn't seem common, at all). 2014-11-22 22:01:45 -06:00
Inusaito Sayori
19cae9b59b [RLVa] Escape potentially dirty strings before using them as regex in replace_all_regex
Fixes crashes
This changeset is welcome for use in LGPL viewers

Thanks to Ansariel Hiller for pointing this crash out.
2014-11-21 03:12:06 -05:00
Inusaito Sayori
89e65ed89e CMake 3 Fixies from Alchemy 2014-11-20 22:04:32 -05:00
Inusaito Sayori
9892d23735 Sync stuff 2014-11-20 13:41:19 -05:00
Inusaito Sayori
10a3339019 Check for signing variables before even trying to sign
Also tabs to spaces and fix typo.
2014-11-20 13:40:05 -05:00
Inusaito Sayori
8b658bd628 Attempted fox for PNG 2014-11-20 12:21:35 -05:00
Lirusaito
5a045db751 Fix Voice on Linux.
No such thing as -st/shutdown timeout on Vivox 2.x SDK
2014-11-20 10:28:44 -05:00
Inusaito Sayori
80e7854300 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2014-11-17 22:50:18 -05:00
Inusaito Sayori
c83c1ed291 Add reset_camera to keyboard action registry. 2014-11-17 22:49:59 -05:00
Inusaito Sayori
37412c8dd2 wlfPanel cleanup and simplification 2014-11-10 18:25:31 -05:00
Damian Zhaoying
aaa1a5451e Merge remote-tracking branch 'Liru/master' 2014-11-10 19:37:48 -03:00
Inusaito Sayori
e3d45d99da Address Issue 1732: Display name in the Communication box
Adds Chat Tabs namesystem combobox to Adv. Chat->Chat UI.
2014-11-10 16:09:43 -05:00
Inusaito Sayori
60d9301646 Support GridName sim feature, show grid name in status bar when hypergridded over to another grid.
V3s will want to add this display to the NavBar, most likely.
Adds const Type& ref() function to SignaledType to get a const reference from it where needed.
2014-11-10 15:58:58 -05:00
Inusaito Sayori
23f070128a Clean up and optimize more draw call logic in llstatusbar.cpp 2014-11-10 14:46:49 -05:00
Inusaito Sayori
39e0e4ad9e LFSimFeatureHandler cleanup~ 2014-11-10 13:36:23 -05:00
Damian Zhaoying
bde1853862 Merge remote-tracking branch 'Liru/master' 2014-10-30 14:47:32 -03:00
Lirusaito
637b70a723 Cleanup and revision to solve Issue 1548: Right click zoom in mouselook resets on left click.
Removes variables tracking right mouse down from lltoolfocus and lltoolcompgun in favor of using the already existing LLViewerWindow::getRightMouseDown()
2014-10-30 11:15:36 -04:00
Inusaito Sayori
d34c5034c3 Of course, I'd only notice this file is unstaged after the commit has been pushed. 2014-10-24 18:05:05 -04:00
Damian Zhaoying
8dc3dcd2ac Added Spanish translations to new Quit button toolbar and Shared options 2014-10-23 21:36:21 -03:00
Inusaito Sayori
b25643f0bf Clean up and draw optimization in LLStatusBar.
I saw a 1.7 FPS gain, which is pretty good for my old card ^*^
2014-10-23 04:28:18 -04:00
Inusaito Sayori
3231a7d25f Complete keyboard-camera panning featureset with pgup pan in and pgdn pan out 2014-10-23 04:25:37 -04:00
Inusaito Sayori
855769c53e Add quit button to toolbar. 2014-10-23 04:16:31 -04:00
Lirusaito
7cf069bf4c Fix libpng warning: iCCP: known incorrect sRGB profile 2014-10-22 20:50:11 -04:00
Lirusaito
bd94e2ae73 Linux64 library update! (other platforms to come)
Curl 7.38
LibPNG 1.6.13
LLQTWebkit 4.8.6
OpenSSL 1.0.1j (Yep, this fixes POODLE)

Libraries provided by Alchemy Viewer.
2014-10-21 05:41:44 -04:00
Inusaito Sayori
6c2871402d [RLVa] Don't filter parts of words out just because they match a name under restraint
This fix is free to be reused under LGPL..
2014-10-19 21:44:45 -04:00
Inusaito Sayori
341ca20529 Avatar Picker's list of friends should use the friends name system. 2014-10-18 15:05:10 -04:00
Inusaito Sayori
0d300776ca Muscle Memory fix, move Share to the bottom of the inventory menu. 2014-10-18 14:40:59 -04:00
Inusaito Sayori
fad498cfb8 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2014-10-17 01:04:27 -04:00
Inusaito Sayori
39d3a58b49 Only disable friend items that have rights changed (scope reduction surgery)
Thanks to Deltek for finding this one!
2014-10-17 00:53:56 -04:00
Inusaito Sayori
e98792209e Issue 1151: Add share to LLAvatarActions
Syncs LLGiveInventory and LLFloaterAvatarPicker with upstream.
Syncsyncsync~

Translators:
menu_inventory.xml menu_radar.xml and menu_avs_list.xml: Share
notifications.xml: ShareNotification, ShareItemsConfirmation, ShareFolderConfirmation, ItemsShared
strings.xml: share_alert
2014-10-17 00:33:33 -04:00
Inusaito Sayori
2d53641cd0 Fix up overcomplicated logic to get friends search working right. 2014-10-15 01:54:58 -04:00
Inusaito Sayori
529c61fabe Fix friends list online count being wrong
This patch changes from always updating online count with cells, to checking the indicator cell's previous value before changing it, maintaining the count instead of always modifying it during updates..
Removes commented out OnlineSIP bits, as it's just easier not to upkeep them.
2014-10-15 01:20:01 -04:00
Damian Zhaoying
614a1c3bb6 Spanish translation to Fix "The notification called 'AuthRequest' was not found in notifications.xml." alert
Some minor fixes in other files.
2014-10-14 12:35:20 -03:00
Damian Zhaoying
663d9ce3d1 Merge remote-tracking branch 'Liru/master' 2014-10-14 04:42:59 -03:00
Latif Khalifa
67b8c8d360 Put Vivox license file online, avoid issues with local paths 2014-10-14 00:45:37 -04:00
Inusaito Sayori
4c5379fe30 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2014-10-14 00:43:32 -04:00
Inusaito Sayori
65c613fb3e Clean up in the friends list code, fixing things~
The entire list should no longer lock up when changing friend rights for just some people
Visual changes:
Muted people's names in friends list are now displayed in the muted color (this still needs testing)
The collapse and expand button now uses icons instead of < and > characters.

Complex stuff devs may read:
Remove pointless classes, definitions, and functions.
Replace static callbacks with bound ones.
Cleanup commented stuff
Fix styling and spacing stuffs
Comment out unexecuted code paths
Optimizes updating uncached names so full refresh is not required, just a single name update.
Comment out unused voice stuff, since SIP buddylist was removed in Voice Update.
Switch to Params for list building~
2014-10-14 00:35:26 -04:00
Cinder Biscuits
d0f265f6d9 OMG backout worst fix of the year right here. 2014-10-12 21:56:50 +00:00
Cinder
ec4d13741f Code signing for Windows and OS X 2014-10-10 21:30:23 -06:00
Cinder
d6b87f141f Ported viewer-stare fixes 2014-10-10 21:17:47 -06:00
Inusaito Sayori
cd61a2ae20 Fix "The notification called 'AuthRequest' was not found in notifications.xml." alert
Thanks to Eva Darkwyr for alerting me of this.
2014-10-08 01:37:04 -04:00
Inusaito Sayori
d99528f4b4 GPU Table update
New cards added from the cool vl viewer's table, thanks Henri~
Tabbing fixed up so that the numbers all align.
2014-10-06 13:57:39 -04:00
Cinder Biscuits
775a7be958 Allow disabling crash reporter on mac 2014-10-06 01:45:54 -04:00
Inusaito Sayori
77f5851b3c Nomade translated animation for appearance mode toggle 2014-10-03 03:55:55 -04:00
Damian Zhaoying
e4ac5c8f6c Merge remote-tracking branch 'Liru/master' 2014-10-02 19:27:23 -03:00
Inusaito Sayori
4f6ec26dc9 Merge branch 'master' of github.com:slabua/SingularityViewer 2014-10-02 16:10:08 -04:00
Salvatore La Bua
55fda48a3b Fix issue 1670: radio group for LinksForChattingObjects 2014-10-02 20:26:56 +02:00
Damian Zhaoying
5dc2bc06cf Added Spanish Translation of xml export floater. Update translations in files notificationsa and floater radar. 2014-10-02 12:39:52 -03:00
Damian Zhaoying
f2367575a2 Merge remote-tracking branch 'Liru/master' 2014-10-02 03:58:38 -03:00
Inusaito Sayori
345d5d99b3 Woops, that logic is backwards. 2014-10-02 01:30:56 -04:00
Inusaito Sayori
5c86dfeb6e Tiny tweak to handle_go_to that Ubit says will help on opensim
Doesn't seem to change anything on SecondLife.
2014-10-02 01:01:23 -04:00
Inusaito Sayori
b119aa49ef Take SinguMotionResetsCamera into in handle_go_to. 2014-10-02 01:00:20 -04:00
Inusaito Sayori
8b84d5597f Hide the drop target reset button when its in the default state 2014-10-01 23:23:54 -04:00
Inusaito Sayori
b060ba3c38 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2014-10-01 20:30:51 -04:00
Inusaito Sayori
17c2e93c78 Solve Issue 1696: buttons overlap 2014-10-01 18:45:15 -04:00
Inusaito Sayori
6a2353f08b Feature Request: If only one prim in a linkset is selected, show its individual land impact, like we used to. 2014-10-01 18:44:59 -04:00
Inusaito Sayori
da2d80d23a Useful fixies from upstream 2014-10-01 18:43:59 -04:00
Inusaito Sayori
01f2e70f1d Fix Issue 1690: Problem in the Italian translation 2014-10-01 18:43:38 -04:00
Inusaito Sayori
b77268b0e3 Attempt to fix blank region name in region restarting floater. 2014-10-01 18:42:43 -04:00
Inusaito Sayori
6a4c1f6ac6 Feature Request: Add a clear button to drop targets (except where not needed). 2014-10-01 18:42:14 -04:00
Inusaito Sayori
1d6e21247e Move LLDropTarget rectangle setting into a common function setChildRects 2014-10-01 18:41:53 -04:00
Inusaito Sayori
4a699d6160 Have Drop Targets with settings update when their settings update. 2014-10-01 18:35:09 -04:00
Inusaito Sayori
06584a38ab Stylistic changes and whatnot for LLDropTarget what with setValue and setItem 2014-10-01 18:34:26 -04:00
Inusaito Sayori
d2dd03dcba War on std::string::find compares against -1 instead of std::string::npos 2014-10-01 18:27:03 -04:00
Inusaito Sayori
3b631a4f90 Back out of droptarget support for links.
Drag and drop support for links would have to be done in lltooldraganddrop, and would probably require a rework there.
2014-10-01 18:26:44 -04:00
Aleric Inglewood
3555967812 Write <archetype><meta> for assets in "My Inventory" folder too. 2014-09-30 18:12:39 +02:00
Damian Zhaoying
358135a890 Merge remote-tracking branch 'Liru/master' 2014-09-20 16:10:10 -03:00
Inusaito Sayori
73ac76a0eb LLDropTarget should accept link targets instead of links
Also stylization changes
2014-09-16 20:33:37 -04:00
Shyotl
972c92a3fe Inconsequential template tweak. 2014-09-15 15:24:40 -05:00
Shyotl
f6209dec34 Silence some LL_INFOS spam on shader init. 2014-09-15 15:23:22 -05:00
Shyotl
738ce6422a A bit of code consolidation. Unified code for OUT_TERSE_IMPROVED and OUT_FULL terse subset. 2014-09-15 15:22:33 -05:00
Inusaito Sayori
dd3cb2b43c French Translation of xml export floater, thankies Nomade. 2014-09-14 17:18:19 -04:00
Damian Zhaoying
8fd1788ece Merge remote-tracking branch 'Liru/master' 2014-09-13 14:46:59 -03:00
Inusaito Sayori
d34bd5338d Comment out something from the llviewerobjectbackup.cpp sync that looks iffy and seemed to cause malfunction. 2014-09-11 22:27:25 -04:00
Inusaito Sayori
8dca737dc8 Solve Issue 1539: XML Export consistently fails as of latest alpha (build 5824) 2014-09-11 22:26:45 -04:00
Inusaito Sayori
86ff77665c Sync llviewerobjectbackup with Cool VL Viewer
Note to Translators:
-Adds translation work to floater_object_backup.xml
-Adds ImportFailed, ExportAborted, and ConfirmAbortBackup to notifications.xml

Turns LLViewerObjectBackup into an LLFloaterSingleton.. but eventually, this should probably be an instance tracker on the uuid of the object to export or something instead.
2014-09-11 19:45:15 -04:00
Inusaito Sayori
e5e665b9ee Sync LLAssetUploadResponders with upstream
Move LLSendTexLayerResponder into llviewertexlayer.cpp to reduce diff noise
2014-09-11 18:13:11 -04:00
Inusaito Sayori
6863eb6651 Be sure the object's inventory serial is incorrect before dirtying the inventory
Thanks to Ubit for pointing this out
2014-09-11 16:02:54 -04:00
Shyotl
0493a91a42 Boost 1.52 uses a completely different api for atomics. Not going to be supporting them. Also, fix llcalcparser in more old-boost compatible manner, and fix linux usage of apr_signal_description_get. 2014-09-11 05:20:01 -05:00
Inusaito Sayori
1ee939c7f7 [Radar] Feature Request: Add the ability to see avatar distance in avatar range alerts.
To toggle this feature, right click the radar, under the Alerts submenu choose "Include distance in alerts"

Cleans up code for calls to setPosition.
For now only entering messages will show distance, unless testing shows that it should be otherwise.
2014-09-11 03:58:23 -04:00
Inusaito Sayori
ff8b4fd95a [Radar] Optimize hidden column evaluation and generation out of draw call.
Please view this diff without space changes.
2014-09-11 03:37:51 -04:00
Inusaito Sayori
a68983b37f [Warnings] Fix ‘std::string {anonymous}::compute_CPUFamilyName(const char*, int, int)’ defined but not used 2014-09-10 16:58:44 -04:00
Drake Arconis
2d0905a4a6 Fix for fmod studio 1.5 2014-09-10 01:11:14 -04:00
Drake Arconis
eb96dee176 Murrrrge 2014-09-10 01:03:04 -04:00
Shyotl
df2ca052ea I suppose actually including llvoavatar.cpp would help too... 2014-09-09 21:56:53 -05:00
Shyotl
e95c0a4631 Revert some bogus changes in f38754d0d6. Not sure where these changes came from. 2014-09-09 20:44:00 -05:00
Shyotl
fbbd45c674 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2014-09-09 19:48:42 -05:00
Shyotl
69064e96f0 Merge branch 'Supp' 2014-09-09 19:48:13 -05:00
Damian Zhaoying
1e0b95ca68 Update spanish translations. New Reset settings buttons in Graphics - DOF tab. Fix buttons in Group roles. Fix texts in map search places. 2014-09-09 14:36:39 -03:00
Inusaito Sayori
a5ac768540 Don't play empty audio urls. 2014-09-09 12:38:29 -04:00
Inusaito Sayori
1c7772e731 Sync with Alchemy, fixes not being able to send calling cards to people. 2014-09-08 21:25:12 -04:00
Cinder Biscuits
2db2c96329 Fix find evaluation on newer versions of clang (and 64-bit macs) 2014-09-07 22:43:03 -04:00
Inusaito Sayori
76616ee6f6 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2014-09-07 18:25:25 -04:00
Shyotl
37c7a72505 Implement boost and stl mutexes and atomics. 2014-09-07 17:18:55 -05:00
Inusaito Sayori
b198e296cb Allow right clicking avatar lists with multiple avatars selected to invite to group. 2014-09-07 17:32:08 -04:00
Shyotl
f38754d0d6 Fixed an alignment issue with LLAvatarJointCollisionVolume array. Thanks Henri. 2014-09-07 15:55:53 -05:00
Shyotl
e5a0393480 Merge branch 'master' of git@github.com:singularity-viewer/SingularityViewer.git 2014-09-07 15:46:05 -05:00
Inusaito Sayori
e62ef91404 Fix sex radio: Now let's hear some kinky tunes~ 2014-09-07 15:26:20 -05:00
Inusaito Sayori
71d78425be Preload trash icon
Solves the issue where the remove saved login button has nothing on it
2014-09-07 15:26:12 -05:00
Inusaito Sayori
c7db5122c8 Fix Issue 1653: Using Search Box causes crash 2014-09-07 15:26:03 -05:00
Shyotl
89fcf69948 Added several temporary fasttimers to better pinpoint idle stall. 2014-09-07 15:22:19 -05:00
Inusaito Sayori
724ea77bef Translate Render muted avatars to francais 2014-09-07 12:43:18 -04:00
Inusaito Sayori
b127dd514d Stylistic changes and such. 2014-09-07 12:40:46 -04:00
Inusaito Sayori
a732635e75 Merge branch 'master' of https://github.com/MelanieT/SingularityViewer 2014-09-06 19:35:39 -04:00
Inusaito Sayori
5072f983ed Fix up skins, remove poor line endings and remove a few nonexistent colors. 2014-09-06 19:17:29 -04:00
Inusaito Sayori
6c9fca3f61 Merge branch 'master' of github.com:slabua/SingularityViewer 2014-09-06 18:52:35 -04:00
Inusaito Sayori
91b98bed05 Fix sex radio: Now let's hear some kinky tunes~ 2014-09-06 18:42:24 -04:00
Salvatore La Bua
195f7502b7 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2014-09-06 20:08:09 +02:00
Lirusaito
1b8779f93e Fix teh Singletons to have a global registry 2014-09-06 11:30:25 -04:00
Salvatore La Bua
f0f124a23a Add skin Dark Green, based upon the Dark skin
Little changes on fonts' and windows icons' colour.
2014-09-05 15:40:09 +02:00
Inusaito Sayori
2772daa964 Preload trash icon
Solves the issue where the remove saved login button has nothing on it
2014-09-04 18:35:28 -04:00
Inusaito Sayori
2338e8a186 Fix Issue 1653: Using Search Box causes crash 2014-09-04 17:32:21 -04:00
Inusaito Sayori
ab7acd7149 Modernize LLSingleton 2014-09-04 17:32:16 -04:00
Inusaito Sayori
43a9aedf7d Sync with Upstream Alchemy
Changes LLEnvManagerNew::setRegionChangeCallback to LLAgent::addRegionChangedCallback
Cleans up some of the timeout policies that aren't necessary any longer.
Modernizes parts of LLViewerKeyboard, updates llregistry.h
Begins changeover from LLDynamicArray to std::vector
Minor merge of newer, trivial SSA functions.
Introduces LLAgent functions: addParcelChangedCallback and canJoinGroups
Support for secondlife:///app/appearance SLapps.
Cleans up older functions.
2014-09-04 17:32:03 -04:00
Shyotl
1608ed43c1 Release 1.8.6 2014-09-04 03:20:01 -05:00
Inusaito Sayori
fa103a69f9 I like jackals. 2014-09-03 21:49:08 -04:00
Inusaito Sayori
f8520f9dd3 Em Dash wants build tools to focus properly when the build button is clicked.
If the world is in focus and build button is pressed without the build floater open, don't bother focusing.
If a floater is in focus and build button is pressed without the build floater open, focus the build floater
If the build floater is in the background and the button is pressed, focus the build floater.
If the build floater is in focus and the button is pressed, close the build floater.
If the build floater is  not in focus but nothing else is, close the build floater.
2014-09-03 19:41:07 -04:00
Inusaito Sayori
3a372afc0e Add Render muted avatars check to System->Security & Privacy Preferences
Redefaulted LiruLegacyDisplayMuteds to false due to (at least) two alpha testers noticing it and wanting it back how it is in the current release (since 1.7.0).
True was to get back to the old ways of v1, but it's okay to be false by default, better now since it's exposed.

Also irrelevant tiny voice cleanup from Spatters.
2014-09-03 08:28:16 -04:00
Inusaito Sayori
95d6bec68f Maximum bandwidth is apparently 10000 on SL Viewer, match that. 2014-09-03 08:28:11 -04:00
Inusaito Sayori
56f2e20cb4 Feature Request: Add LiruResizeRootWithScreen to prevent ui getting messed up when the window is resized
This is not complete, and it should only be used if you know what you're getting into.
2014-09-03 08:28:06 -04:00
Shyotl
4cbcaba7f2 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git 2014-09-03 01:47:43 -05:00
Shyotl
aeeca6e2c0 llcommon.dll doer faster. (set /LTCG and /GL) 2014-09-03 01:45:47 -05:00
Inusaito Sayori
74704d0d2a Fix crash signature 608
This was a crash in LLPanelDirClassified::postBuild(), on the line changed here, probably accessng null pointer.
There are probably a few other signatures for this in our database.
2014-09-02 10:53:36 -04:00
Shyotl
0b384bdd72 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git 2014-09-02 02:57:28 -05:00
Shyotl
e9cf3a6806 Fix tiled snapshots. Also, LLRender::genRot takes degrees, not radians. 2014-09-02 02:53:10 -05:00
Shyotl
c5f9068664 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git 2014-09-01 00:49:05 -05:00
Shyotl
992bbbba1c A bit of cleanup, and call subprocess.Popen with shell=True. 2014-09-01 00:47:39 -05:00
Shyotl
fe9dd63558 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git 2014-08-31 04:58:29 -05:00
Shyotl
8e45003c27 Packaging bugs. I'm drowning in them. (use subprocess.Popen instead of os.popen) 2014-08-31 04:56:55 -05:00
Shyotl
f53d824e07 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2014-08-31 00:05:11 -05:00
Shyotl
259670af85 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git 2014-08-31 00:04:59 -05:00
Shyotl
c7e9430f99 Avoid erroneously creating 'About Land' instance. Also avoid issuing 'ParcelPropertiesRequest' excessively. 2014-08-30 23:48:56 -05:00
Shyotl
afe573d2eb Spaces in path... and nsi script... issues. 2014-08-30 23:47:32 -05:00
Shyotl
547d9817db Replace \t with spaces in develop.py. 2014-08-30 18:57:12 -05:00
Shyotl
9c63243fe7 Fix issue with planar face alignment. 2014-08-30 18:56:27 -05:00
Shyotl
5535ba6b47 Fix issue with paths with spaces, in viewer_manifest.py 2014-08-30 16:25:46 -05:00
Drake Arconis
5059d5e2da Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer 2014-08-30 14:29:32 -04:00
Inusaito Sayori
52a80f98ed Nomade's touches to french Object Weights Floater
Supposedly fixes a french crash.
2014-08-30 06:09:33 -04:00
Inusaito Sayori
9600319094 Add debug setting LiruHighlightNewInventory to prevent selection being changed on accepting new inventory. 2014-08-27 07:58:08 -04:00
Aleric Inglewood
9b930c8716 Don't set a SSL ctx callback when we don't use openSSL. 2014-08-26 19:19:06 +02:00
Aleric Inglewood
eb0d2e5b2c libcurl-gnutls.so (debian) links with libgnutls.so
In that case we DO reach the assert here.
I verified that curl_global_init() indeed calls gnutls_global_init().
2014-08-26 01:35:13 +02:00
Aleric Inglewood
5e2722475a This header uses LLMatrix4a, not LLMatrix4. 2014-08-26 00:29:59 +02:00
Aleric Inglewood
b1e406731d Merge remote-tracking branch 'singu/master' 2014-08-25 18:39:46 +02:00
Aleric Inglewood
8c6d51cb71 No longer support DEBUG_CURLIO when libcwd isn't installed. 2014-08-25 17:58:45 +02:00
Shyotl
4b205084f8 Fix develop.py 'build' command. 2014-08-23 20:52:01 -05:00
Shyotl
eb910b0bae Use /Zm140 for all windows builds. 2014-08-23 20:50:56 -05:00
Shyotl
09a6a1f259 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git 2014-08-23 01:37:48 -05:00
Shyotl
315618a18b Fixed materials specularmap + glossiness=0 combination. 2014-08-23 01:34:25 -05:00
Inusaito Sayori
59af03695b Fix debug settings boolean to work with the radiogroup update. 2014-08-23 00:24:57 -04:00
Inusaito Sayori
e1851f7b5b Sync llwindowwin32 with Alchemy. 2014-08-22 21:47:52 -04:00
Inusaito Sayori
a126b4003f Fix the first double click of every session failing. 2014-08-22 21:43:48 -04:00
Inusaito Sayori
9067de26ac Seriously, what is logic? 2014-08-22 17:32:28 -04:00
Inusaito Sayori
260c5345fd Logic, what's that?! 2014-08-22 16:16:08 -04:00
Drake Arconis
29195e8460 Merged upstream/master 2014-08-22 10:26:58 -04:00
Inusaito Sayori
e3dd05ef21 Fix the broken radio groups
Now can I go to sleep, Papa?
...
But I did my chores and fixed the bugs.
...
YAY! *runs off to bed*
2014-08-22 07:14:19 -04:00
Inusaito Sayori
9379bcedf9 A propos de [SHORT_APP_NAME] 2014-08-22 06:02:03 -04:00
Inusaito Sayori
2c91210d6e Is almost zero approximately zero? 2014-08-22 06:01:45 -04:00
Shyotl
f721d935e4 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git 2014-08-22 03:55:21 -05:00
Shyotl
66597cade3 Use [SHORT_APP_NAME] xui/de/floater_about.xml as per liru request. 2014-08-22 03:52:13 -05:00
Shyotl
3c5f39e26a Use a dynamic buffer for LLMeshHeaderResponder. 2014-08-22 03:41:00 -05:00
Shyotl
24e3176f1b Fixed some odd initialization oddness in develop.py. Also changed win64 build targetdir to build-vc###-Win64 2014-08-22 03:38:49 -05:00
Drake Arconis
e49156a074 Fix mesh upload broken by # 2014-08-22 00:29:46 -04:00
Drake Arconis
948ebe5213 All your codebase are belong to us. 2014-08-22 00:15:09 -04:00
Drake Arconis
2a64c07215 Fix fmodex breakage 2014-08-21 22:00:59 -04:00
Drake Arconis
578a5719dd Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer 2014-08-21 21:59:51 -04:00
Shyotl
e59757e3e8 Clean up a few harmless compiler warnings (signed/unsigned, double to float) 2014-08-20 19:43:32 -05:00
Shyotl
282de8c7f5 Only use LLAvatarJoint when necessary, else LLJoint 2014-08-20 19:40:31 -05:00
Shyotl
541021f29c Fix relwithdebug. 2014-08-20 17:42:48 -05:00
Melanie
6804253bfc Merge branch 'master' of github.com:singularity-viewer/SingularityViewer
Conflicts:
	indra/newview/llfloaterperms.cpp
2014-08-20 05:46:50 +02:00
Inusaito Sayori
e01b9dcd39 If it's not a translation, don't change APP_NAME and related strings in strings.xml 2014-08-19 20:06:43 -04:00
Inusaito Sayori
8d4567b930 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2014-08-19 19:55:34 -04:00
Inusaito Sayori
6f6988a487 Add "Move to Lost And Found" option for displaced inventory
Inspired by the work of Kitty Barnett
Fixes Issue 1337: Corrupted Inventory
Fixes Issue 1625: Unattainable inventory is Outside of My Inventoy and no options to move back to My Inventory
Fixes Issue 1580: Deleted folders showing outside of inventory folder.
2014-08-19 19:52:24 -04:00
Inusaito Sayori
435ab2ce77 Modernize llradiogroup, allows v3-style attributes: value, label for radio_item; allow_deselect for radio_group.
LLRadioCtrl moves into llradiogroup.cpp
2014-08-19 19:42:42 -04:00
Shyotl
1afd723c4e Post-merge fixup. 2014-08-19 01:36:24 -05:00
Shyotl
b09f7f5ac7 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git
Conflicts:
	indra/newview/llviewerobjectlist.cpp
	indra/newview/llviewerpartsim.cpp
2014-08-18 23:55:03 -05:00
Shyotl
1b3f0f9ec0 Manual texture reloading now re-fetches materials-related textures. 2014-08-18 23:47:37 -05:00
Shyotl
d1d68721ac Pulled mesh header info parsing and VFS fetching into their own procedures to remove duplicate code. 2014-08-18 17:16:45 -05:00
Inusaito Sayori
2f4afe5b68 Fix About [APP_NAME] to read About [SHORT_APP_NAME] 2014-08-18 17:58:45 -04:00
Shyotl
47fcc70756 Write initial mesh data to file in larger chunks. Reduces file i/o stalls. 2014-08-18 00:54:46 -05:00
Shyotl
0e86b696c5 Added more verbose statemachine debug output. 2014-08-18 00:54:01 -05:00
Shyotl
54f05b409c Always use dynamic_cast when casting from an LLJoint* 2014-08-13 18:04:24 -05:00
Inusaito Sayori
350dff9b98 Cinder made some logic enhancements to hippogridmanager.cpp, I've picked them up~ 2014-08-13 02:34:52 -04:00
Inusaito Sayori
f198221812 System preferences and Menu translation updates by Nomade Zhao. 2014-08-13 02:04:17 -04:00
Inusaito Sayori
dee08b4216 Spanish translation pruning, also Manage ban list translation by Damian. 2014-08-13 02:02:34 -04:00
Damian Zhaoying
e02d074a85 Merge remote-tracking branch 'Liru/master' 2014-08-11 18:25:32 -03:00
Damian Zhaoying
8e2da87b97 Update spanish translations to reflect a lot of changes and adds in last Alphas builds. 2014-08-11 18:22:34 -03:00
Inusaito Sayori
2deba06212 Missed a spot with the date column for group bans
I'm thinking of putting a setting here instead of hardcoding the date format, actually, but for now this is good enough.
2014-08-11 14:36:37 -04:00
Drake Arconis
90d2dce07a Add FMOD Studio support 2014-08-10 17:41:10 -04:00
Latif Khalifa
a6ac8e1f71 Workaround for clang bugs 2014-08-09 11:24:22 -04:00
Inusaito Sayori
69436a9032 Add french translation for connect to neighboring regions from Nomade Zhao 2014-08-09 10:50:24 -04:00
Inusaito Sayori
50d91d13be Allow dragging and dropping to attached objects
There's now a guard serverside that'll prevent the situation that would cause things to break in the past, so there's no reason not to have this.
2014-08-08 16:26:40 -04:00
Inusaito Sayori
54a6db146e Upon further consideration and a bit of feedback, the new matching common characters behavior of gesture autocomplete is probably bad, I've commented it out and brought back the old code. 2014-08-08 14:57:14 -04:00
Inusaito Sayori
3b31fe91a6 Address Deltek's concern that the Open Attachment button wasn't changing text to just say save when the object is not the openable type. 2014-08-08 14:52:52 -04:00
Inusaito Sayori
90c5219be9 Move Media Filter from the View menu to the Singularity menu.
Moves Media Filter in all translations, no need for translators to worry~
Nomade, please translate the Singularity menu at your discretion.. in menu_viewer.xml
2014-08-08 08:43:24 -04:00
Inusaito Sayori
669fe29173 Initialize members of LLMediaFilter, fixes win64 filter being broken. 2014-08-08 08:26:48 -04:00
Inusaito Sayori
d7d06c8234 Oh, and this one too, maybe it is fixed now? 2014-08-08 07:07:51 -04:00
Inusaito Sayori
4754c1322d This should probably be a size_t, perhaps this fixes the win64 mediafilter bug. 2014-08-07 21:56:25 -04:00
Inusaito Sayori
acb093c277 Media Filter code cleanup 2014-08-07 20:37:03 -04:00
Inusaito Sayori
21d54edeb9 Per-slider reset buttons? Sure.
Adds callback to registrar: "Prefs.Reset", pass debug setting name as parameter.
2014-08-07 20:29:12 -04:00
Inusaito Sayori
20ea0968da Feature Request from friti: Add a reset button to Depth of Field tab of graphics.
Actually should've committed this last night. X3
2014-08-07 08:31:26 -04:00
Shyotl
398d8c52a2 Minor cleanup. 2014-08-07 01:57:11 -05:00
Lirusaito
f82d12d381 Fix linker errors on linux after merging Shyotl 2014-08-07 01:54:56 -05:00
Lirusaito
91ee5724ca Fix compile errors and warnings on linux after merging Shyotl. 2014-08-07 01:54:45 -05:00
Inusaito Sayori
a82443f271 Make sure that we have a token when doing sscanf in llinventory.cpp and llviewerobject.cpp
Guards against opensim grids that may leave new/blank lines of sorts after their message blocks
2014-08-06 23:29:23 -04:00
Cinder Biscuits
1cd0b70055 Fix filling in MediaAlert notification. 2014-08-06 16:34:23 -04:00
Inusaito Sayori
8f8904ad0f Feature Request: Autoselect the parcel you are on for about land floater when there's no active parcel selection. 2014-08-05 23:25:39 -04:00
Shyotl
e975e389df Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git
Conflicts:
	indra/newview/llnetmap.cpp
2014-08-05 18:17:13 -05:00
Inusaito Sayori
d3242393e0 Better default rect for those two new v3 floaters (destinations and avatar picker) from Latif. 2014-08-05 13:35:42 -04:00
Inusaito Sayori
ce7d0e81bd Toggle control_name in <floater/>'s like booleans for visibility, if they exist.
Look out for this in the UI Overhaul merge, this is gonna clash big time.
2014-08-05 12:48:28 -04:00
Inusaito Sayori
0cf16e6f8f Allow edit menu shortcuts to work while on login screen~ 2014-08-05 11:20:58 -04:00
Inusaito Sayori
0ab395794e [Warnings] "One more," says friti; "One more," fixes Liru. 2014-08-05 00:57:26 -04:00
Inusaito Sayori
ac06a8394b I'm a sillyfolf, here's a compile fix. 2014-08-05 00:48:13 -04:00
Inusaito Sayori
46dd1ad154 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2014-08-05 00:34:06 -04:00
Inusaito Sayori
e57a7b6f3b [Warnings] Fix the "no biggie" warnings
Thanks to friti for providing the pastebin~
2014-08-05 00:31:52 -04:00
Inusaito Sayori
409128b07f [Warnings] enumeral mismatch in conditional expression: ‘DS3Keys’ vs ‘XBoxKeys’ [-Wenum-compare]
Thought I covered this one already...
2014-08-05 00:31:03 -04:00
Inusaito Sayori
fd562061ee Update simple codeless floater behavior
Such that floater's named according to their filename will now close if they were frontmost
making their menu entries and buttons, toggly.

This effects the behavior of the toolbar preferences floater, the Favorites floater, and the My Outfits floater.
(and any such simple extensions made by forks and those that will come in the future)
2014-08-04 23:36:47 -04:00
Inusaito Sayori
c6a7dc8f9c Nomade's update to Camera and Input preferences. 2014-08-04 23:32:44 -04:00
Shyotl
5275f7e852 Re-determine spatial groups for hud attachments upon teleport. Fixes missing prim issue. 2014-08-03 18:52:06 -05:00
Inusaito Sayori
6ec19e4630 Minor edits to french translation. 2014-08-01 09:01:48 -04:00
Inusaito Sayori
690ac8d4b1 Ooooops, broke showcase tab on SL, needs to expandURLSubstitutions(). 2014-08-01 05:56:20 -04:00
Inusaito Sayori
7ae1cd33be Add debug setting LiruShowTransactionThreshold for filtering out low amount transaction notifications. 2014-08-01 05:21:14 -04:00
Inusaito Sayori
a7c6c184da Now that I'm more awake, this is a far better solution for the default sim features issues.
Adds const Type mDefaultValue reset() and getDefault() to SignaledType
Cleans up code by not needing to reset to the default by value every time, nice template function to do this~
Leaves in hg boolean, but commented out in case opensim ever decides to make that a reality.
2014-07-31 22:50:02 -04:00
Inusaito Sayori
29d6b423a3 Toolbar prefs was filling up quick, gave it an extra 20 pixels of height and reordered. 2014-07-31 14:52:41 -04:00
Inusaito Sayori
b3590c5ae6 Add Default Avatar Picker Floater (World->Default Avatars)
Default Avatars button option added to Toolbar prefs.
Adds debug setting ToolbarVisibleAvatar
Hooks into "avatar_picker_url" login response on opensim.
Also includes hooking up of DestinationGuideShown to startup, which was left unstaged from the initial commit of the Destination Guide.
2014-07-31 14:45:27 -04:00
Inusaito Sayori
67f549d86d SimFeaturesHandler: Work around grids where OpenSimExtras aren't implemented by not overriding hg strings there. 2014-07-31 11:29:26 -04:00
Inusaito Sayori
9096265bff Possible solution for Issue 954: Singularity Alpha Build 4701 EULA file missing on first login. 2014-07-31 11:20:17 -04:00
Inusaito Sayori
ce265b3948 Add Destination Guide
Adds llfloaterdestinations.* and floater_destinations.xml (needs translations, but not really)
Adds GenericErrorPageURL, DestinationGuideURL (not persistent), DestinationGuideShown, and DestinationGuideRect to debug settings
Removes ShowcaseURLDefault in favor of DestinationGuideURL from upstream.
Also Adds ToolbarVisibleDestinations for the toolbar button, but I'll need to set up a nice way to make the button invisible when the url is empty before adding it to the gui... maybe.. or maybe it's just not important.

This commit comes with support for dynamically changing destination guide page based on opensimextras simulator features cap
2014-07-31 10:07:11 -04:00
Inusaito Sayori
7fee70543d Login Response support for destination_guide_url, OpenSimExtras support (properly) search-server-url, and support the new destination-guide-url from OpenSimExtras
Expands SignaledType's callback to accept const Type& as argument.
typedefs Signal::slot_type to slot_t so that SignaledType can be altered without needing to update all lines setting slots.

Merges floater_directory.xml with floater_directory(2|3).xml
Condenses translations down to one xml(, finally the nightmare is over).
Better ui code support for classic find all panel
Not like anyone cares, but ShowcaseURLDefault no longer persists value changes between sessions.

Moves SearchType and getSearchUrl(SearchType ty, bool is_web) from HippoGridInfo into a namespace in llpaneldirfind.cpp, the only place where it is used; so that it may wrap the sim feature lookup.

Thanks to Shyotl for the help in dynamically maintaining tab positions for dynamic tabs.
2014-07-31 08:12:00 -04:00
Inusaito Sayori
f3a48bb0f0 Silk Aeon wants greater precision on the Object Weights Floater. 2014-07-30 08:43:12 -04:00
Inusaito Sayori
c151c12b95 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2014-07-25 20:55:39 -04:00
Aleric Inglewood
b8d999066d Allow usage of default timeout policy 2014-07-26 02:46:11 +02:00
Inusaito Sayori
0e816492b4 Merge branch 'master' of https://bitbucket.org/Shyotl/singularityviewer-internal 2014-07-23 22:08:12 -04:00
Inusaito Sayori
c6ef099e18 When we setTextEntry on a combo box, move the cursor to the beginning of the new text.
This fixes the login location combo box not displaying the location cleanly after appending coordinates and such.
2014-07-23 18:15:14 -04:00
Inusaito Sayori
1c5872da0c Fix the grids combobox on the login panel not being scrollable because of constantly reordering grids
Still select the current grid, just use its index number to select it, instead of hacking it to the top of the combo box.
2014-07-23 18:12:18 -04:00
Shyotl
d95e94fa07 Missed a cast to LLMatrix4. Was causing assorted wonkiness (most noticeably, mouselook oddities) 2014-07-23 16:55:46 -05:00
Inusaito Sayori
d7bbbd9d40 Fix Group Role Data never loading since the group bans merge. 2014-07-23 16:58:41 -04:00
Inusaito Sayori
cf56659b18 Add xcode_fix.sh to scripts/ to avoid users needing to download it. 2014-07-23 16:51:14 -04:00
Inusaito Sayori
4163b8e40b Well that's a strange bug... eh, not too important. 2014-07-22 14:38:29 -04:00
Inusaito Sayori
4ca6a5c52c Sync up most of the realistic mouselook code with alchemy.
This should fix the inverted mouselook when sitting problem
Think the bug was in llvoavatar, but keeping in sync is always good for the future overall.
2014-07-22 07:07:38 -04:00
Inusaito Sayori
511811de3b Fix Media Filtering preferences code to work right. 2014-07-22 07:05:36 -04:00
Inusaito Sayori
6ef4dfb61f Fix Media Filtering preferences UI to look proper. 2014-07-22 05:49:41 -04:00
Inusaito Sayori
5ca2a3b0f7 Feature request: Change status bar search to search in all (applicable) tabs
Opens up to last tab selected now, but puts query text and triggers searches in all tabs.

Singu TODO: Have it search marketplace?
2014-07-22 05:48:30 -04:00
Inusaito Sayori
88794d0288 Add "Connect to neighboring regions" checkbox to Vanity->Main preferences. 2014-07-22 04:40:21 -04:00
Lirusaito
30e76a7c11 Fix linker errors on linux after merging Shyotl 2014-07-22 04:24:26 -04:00
Lirusaito
41eb687243 Fix compile errors and warnings on linux after merging Shyotl. 2014-07-22 03:39:01 -04:00
Inusaito Sayori
5191baa659 Merge branch 'master' of https://bitbucket.org/Shyotl/singularityviewer-internal
Conflicts:
	indra/newview/llnetmap.cpp - Thankies Shyotl~
2014-07-21 23:31:59 -04:00
Inusaito Sayori
8159eff664 Ban From Group option belongs in the Moderation submenu on the radar. 2014-07-21 23:13:12 -04:00
Inusaito Sayori
c6eb3d790e MAINT-4241 FIXED [Group Bans] Ban member(s) button is not greyed out for banning group owners. Viewer gives message that you ejected group owner.
by Andrey Kleshchev
5598f66
2014-07-21 23:11:53 -04:00
Inusaito Sayori
f62fc8ab15 Fix right clicking on lists of avatars and selecting ban/invite not working for nonfriends who aren't nearby.
Also touch up group invite floater to show names we can't get from voavatars in the user's global namesystem preference.
2014-07-21 23:11:03 -04:00
Inusaito Sayori
75e85701c6 Add Ban From Group option to right click menu of avatar lists.
Also missed two touchups for the Responder API merge in llfloaterperms.cpp
2014-07-21 22:56:18 -04:00
Shyotl
cd85afc9a5 Quick workaround to fix issue with simple geom not rendering in deferred 'underwater' pass. 2014-07-21 20:28:23 -05:00
Inusaito Sayori
b9ba472eda Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer
Conflicts:
	indra/newview/llspeakers.cpp
Compile fixes:
	indra/newview/llgroupmgr.cpp - uncomment new API for GroupBanDataResponder
2014-07-21 19:56:35 -04:00
Inusaito Sayori
bf9d3acf33 Factor in mAvatarOffset(hover) when calculating the legacy offset, though I doubt this helps. 2014-07-21 19:07:16 -04:00
Inusaito Sayori
bd7e291787 Debug output that was once useful to me. 2014-07-21 19:05:24 -04:00
Inusaito Sayori
73b34b6d89 When there is nothing selected in a media filter list, don't enable its remove button
Also missed xml parts from last commit.
2014-07-21 18:51:20 -04:00
Inusaito Sayori
f2c7290ee8 Touchups to Cinder's new media filter code! 2014-07-21 18:30:05 -04:00
Inusaito Sayori
6f6938f5bb Function removal in LFFloaterInvPanel, in favor of boost::bind function. 2014-07-21 18:04:20 -04:00
Inusaito Sayori
601ff92871 Address Issue 1570: Make comboboxes scrollable
Note: It appears that mLabel is never set by combo boxes, this should eventually be fixed.
Checking !getFirstSelected() is sufficient to test if we're in the list, however.
2014-07-21 18:00:43 -04:00
Cinder
f119986fad Remove orphaned media filter notifications 2014-07-21 14:49:39 -04:00
Cinder
402cd21f87 Hi. 2014-07-21 14:49:33 -04:00
Cinder
8cb694af89 Orphaned local function 2014-07-21 14:49:26 -04:00
Cinder
73d8cedf7e A few changes after code review from Liru 2014-07-21 14:49:18 -04:00
Cinder
b7e8d36cf8 I do things. 2014-07-21 14:49:09 -04:00
Cinder
45f5eb9671 Replace the media filter with something a little different 2014-07-21 14:48:57 -04:00
Shyotl
16fe6d0dcf Fix compile. Remove call to temporary matrix sanity check. 2014-07-21 01:27:45 -05:00
Inusaito Sayori
b633c3ffea Fix Issue 1593: "Attachment" button on Group Notices 2014-07-15 15:37:02 -04:00
Inusaito Sayori
ca1696823c French translation updates, by me~ 2014-07-14 03:20:48 -04:00
Inusaito Sayori
c1cc9d484a Add AlchemyConnectToNeighbors 2014-07-13 19:43:00 -04:00
Liru
db75cb3e17 Fix down arrow not working in inventory after the v-t sync, I must've missed this spot. 2014-07-13 12:51:11 -04:00
Liru
b8a17c8f22 Finish work on MAINT-3119 FIXED Return common chars for triggers that matches the prefix.
Makes the code cleaner too, upstream made this too messy.
2014-07-13 10:28:41 -04:00
Aleric Inglewood
74dff061ff Support for new LL Responder API.
This adds mStatus, mReason and mContent to ResponderBase
and fills those in instead of passing it to member functions.
The added danger here is that now code can accidently try
to access these variables while they didn't already get a
correct value.

Affected members of ResponderBase (that now have less arguments):
decode_llsd_body, decode_raw_body, completedHeaders,
completed -> httpCompleted, result -> httpSuccess,
errorWithContent and error -> httpFailure.

New API:

ResponderBase::setResult
ResponderBase::getStatus()
ResponderBase::getReason()
ResponderBase::getContent()
ResponderBase::getResponseHeaders() (returns AIHTTPReceivedHeaders though, not LLSD)
ResponderBase::dumpResponse()
ResponderWithCompleted::completeResult
ResponderWithResult::failureResult (previously pubErrorWithContent)
ResponderWithResult::successResult (previously pubResult)

Not implemented:

getHTTPMethod() - use getName() instead which returns the class name of the responder.

completedHeaders() is still called as usual, although you can ignore
it (not implement in a derived responder) and call getResponseHeaders()
instead, provided you implement needsHeaders() and have it return true.

However, classes derived from ResponderHeadersOnly do not have
completedHeaders(), so they still must implement completedHeaders(),
and then call getResponseHeaders() or just access mReceivedHeaders
directly, as usual.
2014-07-12 18:29:44 +02:00
Aleric Inglewood
3dd846b600 Stop people from wearing their whole root folder. 2014-07-12 14:38:54 +02:00
Inusaito Sayori
8a2e24ecd0 Sync with viewer-tiger~
Syncs up llmath stuffs.

Thanks to Shyotl for the CMakeLists fix for Wbemuuid.
2014-07-11 20:36:19 -04:00
Aleric Inglewood
6ccca51fee Compiler warning fixes.
g_thread_init is automatically called since 2.32 (and deprecated since 2.35).
g_type_init is automatically called since 2.36 and will be deprecated in the
future.
2014-07-11 17:10:27 +02:00
Aleric Inglewood
a4b3c3d1ad Remove self dependency of llwindow.
Needed to avoid an error message from cmake 2.8.12.1 and higher
(policy 0022).
2014-07-11 16:32:55 +02:00
Inusaito Sayori
bc8947289b Sync
Includes:
MAINT-3541 (crash in std::vector >::reserve)
MAINT-3364 FIXED Call clearSelection() from root_folder
MAINT-3621 FIXED Set name to "Unnamed" if object's name consists of whitespaces.
MAINT-3412 add gpu_table line with distinct Intel Iris Pro OpenGL regex to match new MBP with forced Intel graphics
MAINT-3119 FIXED Return common chars for triggers that matches the prefix.
MAINT-3661 Fix for crash when uploading corrupt .dae file.
MAINT-3671 FIXED Rename title when new tab is added.
MAINT-3465 FIXED Add check mark to selected entry.
BUG-5537 FIX reverting breaking changes to pectorals and belly.
MAINT-535 FIXED The teleport SLAPP is changed to UNTRUSTED_THROTTLE. Confirmation dialog for teleporting via slapp is added.
2014-07-11 09:31:51 -04:00
Inusaito Sayori
e7c506c6ec MAINT-3496 FIXED Disable "Allow group access" option if "Sell passes to: group" is selected(and vice versa). 2014-07-11 06:52:25 -04:00
Inusaito Sayori
8236964029 Missed the setting for joystick button on toolbar, oops. 2014-07-11 06:42:46 -04:00
Inusaito Sayori
aadecaf102 MAINT-3530 : Add viewer checkbox to extend parcel entry limits to a higher ceiling 2014-07-11 06:42:20 -04:00
Inusaito Sayori
b55e45eef6 Add a joystick on/off toggle to the new joystick toolbar button~ 2014-07-11 01:20:22 -04:00
Inusaito Sayori
adbc928148 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2014-07-10 23:46:47 -04:00
Inusaito Sayori
c4c206076a Add the option to have a toolbar button for joystick configuration 2014-07-10 23:42:43 -04:00
Inusaito Sayori
5c077d7037 Suppress the annoying 404 notification from default perms 2014-07-10 22:43:36 -04:00
Inusaito Sayori
8583a2f4f7 Idea!: Set to defaults flyout button with options for all styles of joystick controller
The button portion does nothing if there is an unknown or no controller connected, otherwise it sets defaults for the controller's identified type.

Joystick buttons are still configured based on identification, however.
DS3 users will likely find that using Motion in Joy switchboards is much more effective, however.
2014-07-10 22:38:30 -04:00
Inusaito Sayori
ed8416ea10 Add a hack to make classified panel in search actually change
We cannot know the creator when we send the request, so use null to trigger the workaround.
2014-07-09 23:22:10 -04:00
Inusaito Sayori
deb7454cf7 Cure Issue 1586: Singularity crashes when adding classified adds on opensim grids (untested in SL)
Following as it is done upstream, no more requests on null ids.
2014-07-09 16:45:40 -04:00
Inusaito Sayori
8c40af5aee Sync up llpanelclassified.* a bit for easier diffings. 2014-07-09 16:18:19 -04:00
Inusaito Sayori
dd893bab41 Work towards curing Issue 1586: Singularity crashes when adding classified adds on opensim grids (untested in SL) 2014-07-09 15:29:38 -04:00
Lirusaito
759ee62e7c /open for opening avatar profiles by id~ 2014-07-09 03:18:08 -04:00
Lirusaito
1e9b79e2c1 Fix old namesystem code that broke initially setting Legacy (w/display) for everything in general.
Also cleans up old logic and directs the friends list to update when the user changes the namesystem for it specifically.
Thanks to um... I think it was Deltek, who discovered this bug.
2014-07-09 03:08:13 -04:00
Lirusaito
315883a28c Fix Issue 1577: Color yellow hard to read on Radar
Thanks to Carla Gomes
2014-07-09 03:00:38 -04:00
Lirusaito
19b85afe12 Allow gtp with implicit current height when z is not provided. 2014-07-09 02:56:09 -04:00
Inusaito Sayori
b2e8a31d68 Address Issue 1571: Newer OSSL functions not recognized by Script Editor 2014-07-08 19:15:19 -04:00
Inusaito Sayori
b4b12732cb Add new materials script constants to keywords.ini 2014-07-08 18:48:59 -04:00
Inusaito Sayori
c714c57bb2 Solve Issue 1572: Checkbox not saving its tick 2014-07-08 18:31:23 -04:00
Shyotl
4697216c5e Utilize vector_replace_with_last 2014-07-05 19:29:10 -05:00
Shyotl
e2fa94e2c3 Fixed water normals. 2014-07-05 19:09:21 -05:00
Siana Gearz
7578a27bf7 Fix RLVa in About floater 2014-07-05 14:11:26 +02:00
Siana Gearz
14e0b3c9e6 Latif's Breakpad from Replex 2014-07-05 04:14:58 +02:00
Shyotl
815acfc7da Don't use SHGetSpecialFolderPath since it's dead. Use SHGetFolderPath instead, as that still is supported on XP, and is merely deprecated, not removed from newer SDKs (yet). 2014-07-04 20:25:35 -05:00
Shyotl
7d8af7d413 Use one shared vbo to draw fullscreen rectangles in LLPipeline, for both deferred and non-deferred. Provides a nice bit of cleanup. 2014-07-03 17:09:27 -05:00
Shyotl
39810ed516 Removed several unused variables from LLPipeline 2014-07-03 02:34:10 -05:00
Shyotl
9cbcf8fe34 Removed glh_linear and glu dependencies from viewer. 2014-07-03 02:11:45 -05:00
Inusaito Sayori
02b476035b Correct Issue 1562: Environment Editor Floater not Opening Initially 2014-06-26 15:08:04 -04:00
Inusaito Sayori
9eb338f417 Merge up RLVa in llinventorybridge.cpp and remove old commented code
Just something I did to ease mergies.
Adds RLVaDebugDeprecateExplicitPoint

Ignore space changes
2014-06-25 15:23:04 -04:00
Inusaito Sayori
15e30604fc Feature Request: Add an option to bypass closing active viewers when (un)installing 2014-06-25 00:12:12 -04:00
Shyotl
21f677cf58 Remove glh::matrix4f variant of glh_get_current_modelview. 2014-06-24 01:23:08 -05:00
Shyotl
3ead892b1c Re-worked animated linden trees to reduce duplicate code and provide a cleaner diff. 2014-06-24 01:17:47 -05:00
Shyotl
a59e87a896 Added a gradient fade to the minimap viewcone visualization. 2014-06-22 03:55:29 -05:00
Shyotl
96df7b82de Change texture default to non-auto-alphamaskable, non-pickable. Only 'fetchable' textures may qualify for either. 2014-06-22 03:53:08 -05:00
Shyotl
5cb5d284c3 Initialize LLRender::mHasTextureSwizzle to false. 2014-06-22 03:44:48 -05:00
Shyotl
869517b9c6 Evidently a line in objectSkinV.glsl escaped earlier staging. 2014-06-22 03:43:43 -05:00
Shyotl
56cefce1cc Enable auto-alphamasking for attachments, and force to use V3 auto-alphamask algorithm for said attachments. 2014-06-22 03:42:37 -05:00
Shyotl
165af85894 Altered vector_replace_with_last to work around MSVC2010 compiler bug. 2014-06-22 03:40:12 -05:00
Shyotl
7c073c1db7 Explicit enforcement of alignment for all aligned types, including structures with aligned members. (Compiler handholding) 2014-06-22 03:39:33 -05:00
Shyotl
061178ad82 Migrated gl matrix stack to LLMatrix4a 2014-06-22 03:34:51 -05:00
Inusaito Sayori
dbc7c6e74d OUYA has different defaults, store its defaultification status uniquely.
Also code cleanup/simplification in the getDescriptiony areas.
2014-06-21 19:08:52 -04:00
Inusaito Sayori
d87a48ea06 Group Bans!
Thankies Baker Linden~

Ported Ansariel's mAvatarNameCacheConnection change to mAvatarNameCacheConnections to llpanelgroupbulkimpl.h

Adds setGroupID in places, in case we ever want to add that.. but for now we don't really need/use it
Adds Refresh_Off icon from upstream.

Viewer Interesting changes:
Moves LLGroupChange out of stdenums.h into llgroupmgr.h
Moves roles_constants.h from llcommon into newview

This looks like it's better without space changes...
2014-06-21 16:44:39 -04:00
Inusaito Sayori
b36bb8b5bb Increase the maximum range of finding avatars to invite near the user
Increased from 40 to 8192, so it works across sims and all the way up.
Also made the value editable, and the slider is now as wide as the list which looks nice.
2014-06-21 15:05:46 -04:00
Inusaito Sayori
2ed16c9736 Right click menus in avatar picker lists and in group invite avatar list. 2014-06-21 15:02:20 -04:00
Inusaito Sayori
c031649979 Added Eject avatar from group notification from v-r. 2014-06-20 18:01:59 -04:00
Inusaito Sayori
e0746fca12 Sync up llgroupactions with v-r/rlv. 2014-06-20 15:53:54 -04:00
Inusaito Sayori
2075042ba7 Fix key2name not working on the first try. Also make it comply with the name system choice. 2014-06-19 12:48:00 -04:00
Inusaito Sayori
499cd48763 More touches for DS3 support. 2014-06-19 11:29:18 -04:00
Inusaito Sayori
5d826b2b62 Use Nebadon's defaults for the Ouya game controller. 2014-06-18 21:32:31 -04:00
Inusaito Sayori
b20943d497 cd36a1fe16 had some mistakes/missing pieces 2014-06-18 21:07:15 -04:00
Inusaito Sayori
b4ab9a4e57 Fix cursorZoom being broken, my bad, forgot to add the increment line 2014-06-18 20:35:03 -04:00
Inusaito Sayori
cd36a1fe16 Add MotioninJoy detection, along with a whole new control set for it.. plus bonus buttons!
Tilt up to go up/jump, tilt down to go down/crouch (flying works nicely this way)
Turn left to roll left, turn right to roll right, while in flycam only.
Controls are mapped to the same buttons as with xbox controller.

Bonus buttons:
PS3 Logo button: Toggle Sit!
L2 and R2... no idea what to make these, I'll come up with something
2014-06-18 20:32:28 -04:00
Lirusaito
1cda80cbe7 Introduce function isXboxLike, to support Xbox-like controllers, even if they don't identify as Xbox.
Support for Ouya controller added.
2014-06-18 16:15:48 -04:00
Latif Khalifa
ffd0e6b79d [Branding] Linux scripts now made from template by cmake 2014-06-18 18:35:29 +02:00
Inusaito Sayori
a7728b87fc Touchup-fix for Issue 1549: Keyboard camera panning only works in 3 directions using WASD keys.
I didn't like the way Advanced menu flickered, so I provided a setting to prevent the toggle that way altogether.

Adds LiruUseAdvancedMenuShortcut
2014-06-18 09:47:08 -04:00
Inusaito Sayori
c218789abc Repeats per meter goes negative when flipping, let it be modified while in the negative without clamping to a positive minimum. 2014-06-18 09:32:59 -04:00
Inusaito Sayori
3656cb9fdb MAINT-4001 : Make Received Items not movable (protected), consolidate Received Items folders which may have been moved
Work by Merov Linden.
2014-06-18 08:05:49 -04:00
Sim Federal
e93fdf4615 Added region positions to the world map tiles
This feature added the setting 'SFMapShowRegionPositions'
2014-06-17 14:06:42 -05:00
Inusaito Sayori
6722e25cbe Fix Issue 1182: Script Window Resize Issue 2014-06-17 13:36:29 -04:00
Lirusaito
790db4283c STORM-2018: Group invite fails to let you join groups when groups maxed even when you leave group 2014-06-17 12:57:52 -04:00
Lirusaito
a0359473ff STORM-2011: Group member lists not loading properly
Work by Ansariel

For us, this is just to disconnect properly, we didn't have this because it was broken.
2014-06-17 12:56:43 -04:00
Lirusaito
ccfdcce5c1 MAINT-3187: Name list controls do not properly resolve avatar names
Work by Ansariel

For us, this is just to disconnect properly, we had this commented out because it was broken.
2014-06-17 12:54:26 -04:00
Lirusaito
811849fa23 Attempt to fix Issue 1154: Streaming Audio Display no longer stays enabled across relogs 2014-06-17 12:51:04 -04:00
Inusaito Sayori
1051fd9d42 Feature Request: Show how many scripts are actually running when doing a script count (also shows mono!) 2014-06-17 11:39:03 -04:00
Inusaito Sayori
5490a992ca Revert "[Preferences Refactor] Remove window size combo box from graphics preferences"
The issue wasn't the resolution box, and it apparently has its uses.
This reverts commit ac106b0aff.

Conflicts:
	indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
2014-06-16 21:43:43 -04:00
Inusaito Sayori
2d29fb8d15 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2014-06-16 16:09:29 -04:00
Aleric Inglewood
589035c1db Attempt to fix gray avatars on mobile networks.
Ported from
e879862791
2014-06-16 21:02:27 +02:00
Shyotl
8f6a578ec0 Migration to LLMatrix4a instead of glh::matrix4f 2014-06-15 22:42:32 -05:00
Inusaito Sayori
a2fcf4edac Touchup to export perm enablement in default permissions
(not convinced this feature is working, though)
2014-06-14 23:18:48 -04:00
Inusaito Sayori
f56ac5210c [Warnings] Fixed warnings that Friti reported, thanks friti! 2014-06-14 18:21:20 -04:00
Inusaito Sayori
576069a84d Fox knot 2014-06-14 16:26:29 -04:00
Inusaito Sayori
7ea7d4cf6c Fix any and all crashes relating to initialization of UI components that may need the name cache to be initialized already. 2014-06-14 15:40:36 -04:00
Inusaito Sayori
21e1359b37 Confirmation for removing users, also reposition the remove button icon 2014-06-14 15:38:33 -04:00
Inusaito Sayori
eebee9b7c1 [STORM-68b] Default permissions floater overhaul
Adds separated default permissions for Objects, Uploads, Scripts, Notecards, Gestures and Wearables.

Compatible with Export Permission
Backwards compatible with default permissions for objects on regions where AgentPreferences capability is not available (opensim users rejoice!)

These changes to llfloaterperms are made available under lgpl, if there's a v3 that wants to adopt default export permission for opensim.
2014-06-14 15:32:50 -04:00
Sim Federal
bfc986a97d Fixed the spamming of has left sim
Bumping into the edge of a region without
a neighboring simulator would spam has left
and has entered the sim. This will now check
if the position is a valid global, if position not valid
then it will assume you're still in the same simulator.
2014-06-13 04:20:17 -05:00
Inusaito Sayori
d65a52242e Fox a small mistake in the last commit. 2014-06-13 05:12:41 -04:00
Inusaito Sayori
c82c791061 Whoops, that was C++11, that won't work for Linux and Mac. (code change only) 2014-06-12 08:51:54 -04:00
Inusaito Sayori
bcd18a01d8 [Preferences Refactor] In vanity->tags, remove color swatch disable logic since it doesn't make much sense anymore and isn't refreshing soon enough. 2014-06-12 07:26:04 -04:00
Inusaito Sayori
53a4931974 Group feature request: add ability to not turn when right clicking on objects
Adds RightClickTurnsAvatar to debug settings, defaults to true.
2014-06-12 06:13:33 -04:00
Inusaito Sayori
1f7751618e Solve Issue 1541: Remove old Logins
Little trash button next to the username box added, as its tooltip explains, if you have a valid entry selected and you click it, that entry will be removed.
My test avatar was a fake entry by the name Garbage Tax
Just thought I'd give that to the googles... enjoy~
2014-06-12 01:27:54 -04:00
Inusaito Sayori
497babe8e9 Fix Issue 1540: SLURLs not openable from chat? 2014-06-11 20:52:47 -04:00
Inusaito Sayori
973a90a34d Address Issue 1063: Compatibility azerty
It's dynamic, no need to relog!
Look under input preferences for "Use azerty layout instead of qwerty layout"
2014-06-11 20:02:34 -04:00
Inusaito Sayori
3cff5cd1a8 Only determine DumpDir in one place, LLDir::getDumpDir, not in llcrashlogger.
Also spaces tabs in getDumpDir
2014-06-11 14:36:41 -04:00
Inusaito Sayori
8766335708 Up the maximum field of view to 320, from 175, on request from Tazy Scientist
Better for reallllly wide screens and multiscreen setups, apparently.

Also, let's merge with v-r while we're at it, since llcamera.h requires a large-ish recompile
Nothing functional though.
And some license updates to some identical files in llmath.
2014-06-11 03:24:46 -04:00
Inusaito Sayori
908fc939b1 Feature Request: Next owner perms for scripts
In System->Building preferences, on the top right side.
2014-06-10 11:23:27 -04:00
Inusaito Sayori
73c4557a45 STORM-1117 does not affect us, allow calling cards in prims
Issue was due to v2 name resolution, our calling cards are old school and don't do this.
2014-06-10 08:51:09 -04:00
Inusaito Sayori
accfcbbf5c Restore the old behavior of not derendering muted people
This can be switched off with LiruLegacyDisplayMuteds in debug settings.
People have been annoyed that muted avatars disappear, and since we have the derender system anyway..

Also Sync llvoavatar.cpp with v-r a bit
(okay, fine, alot)
2014-06-09 10:10:03 -04:00
Inusaito Sayori
5a36450e01 Allow multi-select for participant lists, for multi-user operations via right click menu. 2014-06-09 06:54:53 -04:00
Inusaito Sayori
839f4eab7e Feature Request: chatbar as commandline "/regionsay msg" to do region-wide messages without needing to go through the region/estate floater. 2014-06-09 06:50:48 -04:00
Inusaito Sayori
fec0559d11 Introduce debug setting, LiruNewMessageSoundIMsOn, for defaulting ding of new IMs on.
This setting is off by default and I don't intend to give it a gui yet.
It probably will go in Chat UI, eventually.
2014-06-09 00:02:54 -04:00
Inusaito Sayori
e46fc0a805 Portability Mode!
Just add --portable to the shortcut
or use the provided shortcut as a template,
though it's likely the provided shortcut will not work on other computers, because the drive letter will change
2014-06-09 00:00:43 -04:00
Inusaito Sayori
fb7751360c Update Windows 64-bit Hunspell, thankies Drake~ 2014-06-08 20:42:26 -04:00
Inusaito Sayori
0c2e7d7028 Pressing up on right stick should turn the camera up in flycam, logically. (xbox controller) 2014-06-08 09:05:39 -04:00
Inusaito Sayori
fe2e68b410 These defaults seem more effective for my DS3 in flycam.
If anyone has a real XBox 360 controller and doesn't like them, let me know, we can totally work together on this
2014-06-08 08:23:48 -04:00
Inusaito Sayori
166c4df0b3 No more gross grey bars on the sides of snapshot thumbnails!!
Also random snapshot floater code sync with upstream in small places because it'll need doing at some point..
2014-06-07 11:50:31 -04:00
Inusaito Sayori
68684855c6 Bump link num starting point from 0 to 1
Based on script testing, and the fact that the root prim is 1, not 0.
2014-06-07 06:30:52 -04:00
Inusaito Sayori
fa0de18ffe [Voice Update] Small sync, less warning spam is likely
Should fix group chats sometimes not showing anyone. (Seemed to for me! ^*^)
2014-06-07 06:27:36 -04:00
Shyotl
24ca32f9f7 Replace gluProjectf/gluUnprojectf with own versions. Also changed gGLModelView/gGLProjection and other related matrices to LLMatrix4a. 2014-06-06 01:59:04 -05:00
Inusaito Sayori
f63de0d0cc Feature Request: Make Inspect button a toggler~ 2014-06-05 23:54:15 -04:00
Inusaito Sayori
f6db6058e1 Mass fixup to appearance mode ui overhead!
Should contain no functional changes, ust that all ui in appearance mode is now cached instead of calling getChild per frame.
Switches from hiding min/max param text every frame to force-drawing in draw call and setting invisible (llscrollingpanelparam.cpp/the corresponding xml)
Cleans up some old commented out code.
Moves some simple, one-call functions into their calling bodies.
Also, for some reason I had to adjust the alpha checkboxes, totally confused why they were out of line... maybe they had been already? I don't see a changed line that did positioning.

Contains spaces to tabs fixes, please view without space changes (You have been warned!)
2014-06-05 21:41:59 -04:00
Inusaito Sayori
d23632ef46 [RLVa] Yay updates~
e4a6e0d257c1 - fixed : @recvim=n isn't actually blocking the incoming message
35869fc884e9 - internal : minor refactoring of the process of updating the navigation and top info bars when toggling @showloc

9688630000ad - changed : show a limited context menu in the nearby people panel when @shownames restricted
    -> "Offer/Request Teleport" (filtered)
    $ Singu Change: Adds Recording of teleport offers to chat (if sending less than 10), one day I'll get around to doing this right into IMs

Noticed RLV.EnableIfNot was not being used, so I plugged it in for windlight.
Future Note: This brings us up to 417d759f0fa9 on the RLVa tree.
2014-06-03 20:29:55 -04:00
Inusaito Sayori
1048f213c7 Fix maximized windows being repositioned to no longer maximized when applying graphics settings. 2014-06-03 00:56:24 -04:00
Inusaito Sayori
98d88bff94 [Preferences Refactor] Oops, that shouldn't be there. 2014-06-02 23:41:03 -04:00
Inusaito Sayori
861fccd2d6 Address Issue 1301: Depth of Field preferences
Thanks a lot to Niran for assistance in this. Tooltips are from Black Dragon's machinima panel.
Note: Moves Depth of Field checkbox into the new Depth of Field tab.
2014-06-02 23:40:35 -04:00
Inusaito Sayori
715c3b8510 [Preferences Refactor] Cleanup on llfloaterpreferences
Moves to calling refreshEnabledState directly from LLPanelDisplay instead of bouncing around in LLFloaterPreferences first or using static proxy functions
Cleans up unused cached button pointers and old style static callbacks.
2014-06-02 23:24:25 -04:00
Inusaito Sayori
3c6c7c4138 [Preferences Refactor] Further cleanup
Moves to visibility_control and enabled_control instead of using callbacks, this lightens the load on opening preferences, and makes them responsive even to debug settings changes
Removes the moving m for meter text with draw distance, I don't think anyone cares if it's a little to the side of the number.
Adjustment of tabs to spaces in xml.
Return early when disabling unavailable settings if shaders are unavailable.
Cuts back on single-call functions in favor of direct binds.
2014-06-02 23:20:30 -04:00
Inusaito Sayori
95106ca1c2 [Preferences Refactor] Handle Hardware tab earlier to avoid early return when custom isn't displayed 2014-06-02 20:25:01 -04:00
Inusaito Sayori
ac106b0aff [Preferences Refactor] Remove window size combo box from graphics preferences
Windows can be resized on their own, we do not need this box
This should also fix window resizing when applying preferences.
2014-06-02 20:22:15 -04:00
Inusaito Sayori
001e45627b Feature Request: Add an option to toggle Animating when going into Appearance Mode, option is in vanity->main preferences 2014-05-30 06:38:13 -04:00
Inusaito Sayori
b8c3457644 Set RenderTextureMemoryMultiple to 1.0 on Macs, because the people asked for it.
If this explodes, I'm sure we'll see issues reported against it soon,
but in private testing we've yielded nothing but good results.
2014-05-29 22:43:55 -04:00
Inusaito Sayori
5f6dcfa82a [UI Overhaul] Restore LLContextMenu::appendContextSubMenu definition, lost in last commit. (Thannks for catching this, Tazy!) 2014-05-29 20:12:31 -04:00
Inusaito Sayori
f2dd944acd [UI Overhaul] Migrate LLContextMenu (and LLPieMenu) to the bottom of llmenugl.cpp to better diff with upstream. 2014-05-28 23:33:53 -04:00
Inusaito Sayori
d0f69ebb75 [UI Overhaul] LLMenuGL sync: doIt() --> onCommit() 2014-05-28 23:03:00 -04:00
Inusaito Sayori
04737fb0e8 [UI Overhaul] Missed this in c640585 2014-05-28 22:59:52 -04:00
Inusaito Sayori
d78550e83e Introduce APP_SITE for easy rebranding of viewer website from strings.xml. 2014-05-28 22:54:40 -04:00
Inusaito Sayori
c640585bc3 [UI Overhaul] Introduce LLMenuGL::insert from upstream and remove append/addChild wrappers in favor of insert 2014-05-28 22:52:29 -04:00
Inusaito Sayori
a926cdc5be [UI Overhaul] LLMenuGL sync 2014-05-28 22:08:01 -04:00
Inusaito Sayori
43e66b57a0 [UI Overhaul] Scrollable Menus.. just the implementation for now, not actually used.
This worked initially(early testing yesterday), but since then it seems not to, either way, implementation part is out of the way, so committing.
2014-05-28 21:50:18 -04:00
Shyotl
ee60a9801b Appease some nVidia cards/driversets regarding skinned shaders. 2014-05-27 20:18:48 -05:00
Inusaito Sayori
fb69220b95 Merge branch 'master' of git://github.com/lkalif/SingularityViewer 2014-05-27 12:57:45 -04:00
Inusaito Sayori
1cf7f67af5 Viewer name branding fixes, make rebranding way easier.
Also fix up french menu leaving functions around..
2014-05-27 12:54:33 -04:00
Latif Khalifa
8497ba1898 Use @style@ cmake escapes for the linux wrapper script
This avoids cmake messing up shell variables
2014-05-27 17:39:37 +02:00
Lirusaito
234259da91 Fix Issue 1299: Default Build settings for transfer permission not applied to a newly rezzed box
Mostly a workaround for next owner transfer being on by default
2014-05-26 13:51:41 -04:00
Lirusaito
ef7f309012 Redundant check is redundant 2014-05-26 09:32:50 -04:00
Lirusaito
d372fa1a0f Whoops, fixup locally experienced crash with lookat beacons. 2014-05-25 14:47:45 -04:00
Lirusaito
ea9005868b Switch out bumpers being roll for bumpers being y axis (up/down) with the xbox controller
This seems more widely used, and roll does nothing in Avatar movement so this is more useful
If people want it the other way, they can just switch it themselves.
2014-05-25 12:57:48 -04:00
Lirusaito
0a3a4a51bd Feature Request: Add an option to "Make rightclick zoom instantaneous, not smooth" (in Input & Camera preferences) 2014-05-25 12:44:48 -04:00
Latif Khalifa
1dbd913d9d Branding: generate wrapper script with cmake 2014-05-25 18:18:47 +02:00
Latif Khalifa
22cded7ccc Made breakpad symbols generation branding neutral 2014-05-25 08:27:00 +02:00
Latif Khalifa
4851f1ad48 Branding support for Linux packaging 2014-05-25 04:07:34 +02:00
Inusaito Sayori
0d94dd7bf8 Pick up a few changes from Alchemy for LookAt beacons
Implements lines from avatar to their lookat beacons
Implements namesystem so that Display Names can also be shown with beacons instead of just legacy

New options are available in the Security & Privacy tab of System preferences
2014-05-24 05:26:32 -04:00
Inusaito Sayori
bbe7f6adfb Enable Multiselect in groups, and enable EditMenuHandler when a scrollable list is focused!
Allows Ctrl-A to select all in a list (Like for selecting all groups and unticking chat with a single click)
Ctrl-E to deselect
Ctrl-X/Ctrl-C to copy a list (useful for saving ban lists and such!)
2014-05-23 19:37:32 -04:00
Inusaito Sayori
828941a204 Meeting Request: Pick up LL's changes to land impact (Also introduces Land Impact floater)
Small change to lltextbox allowing us to use value attribute with <text/>'s YAY!!

Cleaned up in llfloatertools as well to better diff.
2014-05-23 06:19:43 -04:00
Inusaito Sayori
2ce3f2c131 Meeting Request: Display date not just time in Teleport History
Will not change old entries because of the stupid way teleport history is saved.
Seriously, this floater needs a rewrite... we should just use v3.
2014-05-23 03:39:35 -04:00
Inusaito Sayori
8943552c1c Meeting Request: Change System Preferences' Security tab to Security & Privacy 2014-05-22 19:58:16 -04:00
Inusaito Sayori
dadbb00b85 Introduce a setting for Automatically scrolling to the bottom of a chat when the chat gains focus
Preferences->Adv. Chat->Chat UI, Autoscroll to the end of chats when they regain focus.
This defaults to false, unlike the legacy behavior.

Partial revert of "Feature Removal!: Do not scroll to the end of chats when the corresponding chatbar regains focus!"
2014-05-22 19:46:15 -04:00
Inusaito Sayori
852a8407c8 Feature Removal!: Do not scroll to the end of chats when the corresponding chatbar regains focus!
Focus is given to chatbar on floater focus, so this got in the way.
This feature was never really worth it.
2014-05-21 22:57:08 -04:00
Inusaito Sayori
bfbbcad8e5 Feature Touchup: Add backup destination to Emergency Teleport out of region within last 20 seconds before restart feature
Falls back if first landmark is not in inventory or invalid, region is offline, or the current region is your location
Item drop target is right below the original one in System->Security prefs.

Thanks again to the citizens of Fluffy for enduring these restart tests.
2014-05-21 19:07:11 -04:00
Inusaito Sayori
c684987908 Fix bugs introduced in 77a13963bb
Fixes Shiny/Bumpy combo boxes being broken
Fixes UI warning for "label glossy" not existing, it was "label glossiness".
2014-05-20 23:37:59 -04:00
Melanie
d0c66e5efb Actually hide the export box on SL. Must have been asleep when I coded that. 2014-05-19 14:59:07 +02:00
Shyotl
53b8f70de8 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git 2014-05-17 18:26:07 -05:00
Shyotl
a1eb30ae87 Keep old non-swizzle method around since GL_ARB_texture_swizzle has poor support prior to 3.3 (on osx especially) 2014-05-17 18:25:21 -05:00
Shyotl
c4cb9de44b Merge branch 'master' of git@github.com:singularity-viewer/SingularityViewer.git 2014-05-17 16:30:21 -05:00
Shyotl
0a89503edd Renamed glUniformMatrix3x4fvARB to glUniformMatrix3x4fv, since I don't think it ever had the ARB postfix. Also use its the properly named (although identical to the current) function pointer signature. 2014-05-17 04:04:33 -05:00
Shyotl
f12bd741e2 Merge branch 'master' of git@github.com:Shyotl/SingularityViewer.git
Conflicts:
	indra/newview/llvopartgroup.cpp
2014-05-17 03:40:10 -05:00
Shyotl
e35039faf7 Remove deprecated gl call in renderComplexityDisplay. 2014-05-17 03:34:33 -05:00
Shyotl
a756943628 Fix a LLVertexBuffer::validateRange call that I hosed up pretty badly. 2014-05-17 03:33:33 -05:00
Shyotl
a9c3e13e5e Removed some diagnostic spam pertaining to shaders. 2014-05-17 03:32:40 -05:00
Shyotl
67c8ac2b04 Skinned shaders were exceeding maximum amount of vertex uniforms on amd hardware.
-Changed the transform matrix uniform to a 3x4 matrix and packed translation into it to free up uniforms. (3x3 is converted to 3x4 internally, so we were needlessly eating 3*52 extra uniform slots. translationPalette might also have been treated as a vec4 internally too, wasting 52 more slots.)
-matrix3x4 requires opengl2.1 and newer, so added a new featuretable mask.
-Also added a featuretable mask to disable hardware skinning and deferred shading on hardware with less than 1024 vertex uniforms.
NOTE: On old old old amd hardware, evidently a 3x4 matrix might be upgraded to 4x4. I'm unsure, but I doubt such hardware has 1024+ uniform components available to begin with. 4x3 supposedly doesn't do this, but opengl is column-major, so this makes little sense.
2014-05-17 03:31:45 -05:00
Inusaito Sayori
82044399e4 Brought in Realistic Mouselook option from Black Dragon
Look at the top area of Input & Camera preferences
Aside from tweaks to the code, all credit to Niran.
2014-05-15 21:01:11 -04:00
Shyotl
fdcf2eda5a Decouple vbo validation from LLDrawInfo. Such required vbo's to be initialized before drawinfo creation/modification, which is no longer the case with llvovolume. ('RenderDelayVBUpdate'[although removed in Singu] also fails the same assumption.) 2014-05-15 18:44:10 -05:00
Shyotl
e0997f1f04 Decouple vbo validation from LLDrawInfo. Such required vbo's to be initialized before drawinfo creation/modification, which is no longer the case with llvovolume. ('RenderDelayVBUpdate'[although removed in Singu] also fails the same assumption.) 2014-05-15 18:39:35 -05:00
Inusaito Sayori
58859ee709 Minor touchups to spanish translation 2014-05-15 17:36:33 -04:00
Shyotl
c3771e2fd5 Removed unused preprocessor definition in objectSkinV.glsl 2014-05-15 16:23:14 -05:00
Inusaito Sayori
2e49365b0f Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2014-05-15 15:37:42 -04:00
Inusaito Sayori
cd87aadab3 Missed a spot. 2014-05-15 00:42:22 -04:00
Inusaito Sayori
e58f8856f4 Add support for Controller Keys, inspired by similar code by CtrlAltStudio Viewer
Dear Alpha Users who are curious about this:
A = Alt
B = Shift
X = Ctrl
Y = Escape
Back = Toggle Flycam mode (Use this, it's fun!!!)
Start = Toggle Cursor mode
Right Stick Click = Toggle Mouselook
Left Stick Click = Jump/Fly

Enjoy, I know I do!
2014-05-14 23:48:27 -04:00
Inusaito Sayori
18a48e6609 Fix the inverted mouse issue. 2014-05-14 23:16:55 -04:00
Inusaito Sayori
929b75989c Sync with alchemy/v-r for flying instead of jumping on button press (Left Stick Click) 2014-05-14 22:58:16 -04:00
Shyotl
7d98030edc Use the right diffuse shader for skinned deferred diffuse simple object shader. 2014-05-14 19:43:03 -05:00
Shyotl
846d573dd0 Kill stray #endif that snuck into commit. 2014-05-14 16:45:55 -05:00
Shyotl
5805fe636a Determine if to stuff shiny data into alpha component a bit differently. Cuts out a lot of crazy logic and lets us choose based off of target renderpass. 2014-05-14 03:38:16 -05:00
Shyotl
3db9c6a9ff Try mask-based object shader configuration, instead of a bazillion hard-coded shader globals. Should be a bit more consistent. (non-deferred only, for now)
Also abuse discard in alpha shaders, instead of processing invisible fragments.
2014-05-14 03:30:02 -05:00
Shyotl
22bcf83cb9 Toyed with gl init ordering. Fixes adaptive vsync. May explode on linux, not that adaptive vsync works there, but it should in theory work there if we ever port to sdl2. If it does explode, I'll know shortly... probably. 2014-05-14 03:10:34 -05:00
Shyotl
117eca3c98 Try some swizzling instead of forcing everything to rgba8 with core profile. Avoids manual conversions with scratch buffers. Works for all pixel datatypes. Cleaner. Uses less vram.
Also, fixed textures when running core pofile.
2014-05-14 03:05:53 -05:00
Inusaito Sayori
81affe719f Add a setting to automatically decline and leave incoming conferences
Look under Communication preferences for "Block incoming conference chats" to activate.
2014-05-14 03:34:32 -04:00
Inusaito Sayori
3febec4aa4 Merge up CtrlAltStudio and Alchemy for XBox360 support
Can't seem to get scrollies working in cursor mode, odd.. need to look into that.
I need to figure out if inverted Y axis is just for me on my Dual Shock 3, though it seems to work usually... if this is the case I might flip it in the code.
More work needs to be done to get ctrl/alt/shift support from CAS, too.

I just wanted to get today's work out of the way and wrapped up, so here it is.
2014-05-14 02:23:55 -04:00
Inusaito Sayori
a78c6072ce Sync llviewerjoystick with upstream sources.
Replaces old constant of dividing by 3 with debug setting for multiplying: FlycamBuildModeScale
Relicenses to lgpl.
2014-05-13 21:27:18 -04:00
Lirusaito
aa6a57be63 Remove "wanna->want to" from auto replace, it is stylistic. 2014-05-12 19:26:16 -04:00
Inusaito Sayori
fd29dd9508 Spaces to Tabs for Last commit 2014-05-09 22:19:52 -04:00
Bob Shaffer II
5080ebf88f reverting some changes to llvovolume that seems to break animated textures
Signed-off-by: Siana Gearz <siana.sg@live.de>
2014-05-10 03:13:15 +02:00
Siana Gearz
873df7805b Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2014-05-10 03:12:32 +02:00
Inusaito Sayori
009fb10927 Feature Request: Add AutoresponseOnlyIfAway to send autoresponses only if in AFK or FakeAway modes 2014-05-09 20:32:38 -04:00
Inusaito Sayori
3898d29741 [Preferences Refactor] Touchup on voice prefs borkage. 2014-05-09 20:31:05 -04:00
Siana Gearz
1c521a3743 Merge branch 'master' of https://github.com/lkalif/SingularityViewer 2014-05-09 22:18:10 +02:00
Siana Gearz
098d1b30ff Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2014-05-09 22:15:38 +02:00
Siana Gearz
484108dafc Fix VS2012 64-bit debug build 2014-05-09 22:14:47 +02:00
Inusaito Sayori
029d260ad8 Feature Request: Persistent setting for AllowSelectAvatar (su useful!) 2014-05-09 10:39:07 -04:00
Inusaito Sayori
e6bc8f8583 Enable custom and window resolution for snapshots to inventory and set the max size to 1024, not 512. -- on request of Vivena (and the in-world group as a whole) 2014-05-09 09:30:13 -04:00
Inusaito Sayori
77a13963bb Joint effort with Alchemy Viewer to make build floater a lot lighter on FPS
Gets rid of all those pointless callbacks and static workarounds for legacy callback system.
Should massively improve FPS while build floater is open
Fixes getChild UI Warnings
Removes dumb func
2014-05-09 06:40:53 -04:00
Inusaito Sayori
656eacbb09 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2014-05-08 19:57:01 -04:00
Shyotl
98f9a09b39 sunlight_color_copy need only be vec3. 2014-05-08 16:39:41 -05:00
Shyotl
7e8e8bdb26 Disable some diagnostic gunk eating memory. 2014-05-08 16:35:12 -05:00
Shyotl
e2a0f801b9 Have LLRender::color4ub fall back to uniform if bound vbo lacks color attribute. Fixed fixed-function call in LLFacePool::LLOverrideFaceColor::setColor. 2014-05-08 16:29:53 -05:00
Shyotl
75b31b4151 Fix a nullptr usage. 2014-05-08 16:24:24 -05:00
Shyotl
f0763fd31c Tweaked context-recreation logic to force a 0xAA context when fbos are in use. Should also handle toggling of fbo checkbox a bit gracefully as well. 2014-05-08 15:48:08 -05:00
Shyotl
162e7b7699 Fixed a silly mistake that was causing vsync to be enabled when it should have been. Also fix typo in objectSkinV.glsl previous commit 2014-05-08 15:30:02 -05:00
Shyotl
7158a3c83d Fixed an annoying showstopper regarding rigged attachment vertex corruption. Rigged meshes have can have poor weighting, causing potential div-by-zero issues. 2014-05-08 15:11:12 -05:00
Inusaito Sayori
1fa30dd337 Fix Issue 1502: The Builders' Brewery says our prim torture behavior is nonstandard
Our uictrl limits were in need of a quick tune-up.
2014-05-07 06:54:17 -04:00
Inusaito Sayori
250049537f Feature Request: Add option to autominimize the region restart floater And Allow changing/shutting off its sound (from gui)
These new options are at the bottom of System->Security preferences.
2014-05-07 06:53:35 -04:00
Inusaito Sayori
76e5311320 [Preferences Refactor] Cleanup of voice prefs code
Also attempt to add a local enablement control, it's not quite clear where these are supposed to hook in, so it's unused for now, but it would have replaced onCommitEnableVoiceCheck.
Also fix the location of the voice is disabled textytext, it was too on top of the next checkbox.
2014-05-07 03:52:14 -04:00
Inusaito Sayori
11098cd6d4 [Preferences Refactor] Clean up of useless code for enablement and callbacks.
This tag will be used for refactor and updating of most of our preferences panels:
  This will include code changes that remove or condense old code
  This will include preferences being moved around to more logical locations
  This may include splitting up and/or condensing of tabs and/or subtabs for more logical placement of preferences
  This may include code changes that allow making changes to preferences faster and easier
  This will not include adding preferences
2014-05-07 03:20:04 -04:00
Siana Gearz
78a0b347fc Fix 64-bit project generation under Cygwin 2014-05-04 08:05:05 +02:00
Latif Khalifa
08a23de051 Restore compiler warnings flags.
Previous work on enabling the build on the latest Mac OS and
Xcode compiler mistakenly took out compiler warning flags.

This restores previously used flags.

Issue noticed by Sovereign Engineer.
2014-04-30 07:29:23 -07:00
Inusaito Sayori
a02ad53c73 Fix bulk import of notes, scripts and gestures, and clarify file menu 2014-04-28 20:36:46 -04:00
Inusaito Sayori
9400701c96 Synced up llviewerobjectbackup with Cool VL Viewer
Benefits:
-Support for exporting Materials (Normal and Specular textures)
-Fixed support for Object Physics export
-Fixed support for Light Image export
-Switch to use of Boost unordered containers
-Checking for invalid perms on textures is now optimized by saving invalid ids to a container
-GravityMultiplier parameter is now Gravity because that just makes way more sense.
-We support export of legacy flag parameters again to be compatible with older viewers
-Code comments are now a little clearer
-We now wait a little if objects haven't loaded yet when we try to export them
-We no longer allow changing default texture ids via debug settings on opensim regions that support the export permission
-Bit of reordering to better diff with Cool VL Viewer, since it's essentially our only upstream.
-Removes dead code/commented codestuffs

Please view the diff without space changes, otherwise you'll lose your mind.

Merci Henri!
2014-04-28 17:48:39 -04:00
Latif Khalifa
aa983108e8 Possible fox for crash signature 5284 by Aleric 2014-04-28 21:12:37 +02:00
Damian Zhaoying
7dca333166 Update spanish translations. Add translations for news floaters, dinamyc toolbars, RLVa and autoreplace. 2014-04-28 15:51:48 -03:00
Lirusaito
0f1ecf66ab Possible Fix for Issue 1499: Login screen disappears on non-SL grids after logging failure
Also should fix when this would happen on poor/dead connections.
2014-04-27 18:50:37 -04:00
Lirusaito
74984b5a3c Further cleanup of im floater draw call due to last commit 2014-04-27 18:46:50 -04:00
Latif Khalifa
c5d5984885 Checking for ChatSessionRequest cap is not neccessary for establishing private voice calls.
Addresses issue 1293
2014-04-27 21:37:52 +02:00
Damian Zhaoying
c1ccfcb988 Merge remote-tracking branch 'Liru/master' 2014-04-27 13:53:47 -03:00
Lirusaito
51dc0550d5 Minimap mark colors touchup
Now shown in tag without tag color statuses needing to show.
2014-04-27 11:18:31 -04:00
Lirusaito
ac9e36549b Fix right clicking dots no longer working on the minimap, broken {} pair that slipped my eyes. 2014-04-26 18:08:19 -04:00
Lirusaito
009e9a598a Introduce ExodusMapRolloverCircleColor for controlling the color of the new minimap selection circle, turn the alpha to zero to make it disappear completely (it's already quite light now) 2014-04-26 18:07:28 -04:00
Lirusaito
1502ef2661 Fix for an internal crash, could only happen if settings were copied into install improperly, but better safe than sorry. 2014-04-26 10:19:04 -04:00
Lirusaito
40f9e12bdf Fix for Issue 1472, prevent what was probably a null pointer in a bind
Oddly, this only happened to some people, but on any OS, which leads me to believe that initialization order may need some looking at, but that's not terribly important now.

Removes toolbar toggle from floater dictionary, in favor of using setting toggle
Since we could always just hook up a control to a button if we wanted to add such a button somewhere anyhow, this has no effect on future either.
2014-04-26 10:17:47 -04:00
Lirusaito
2fc783e67e The people want link parsing on! Let them have links in all text editors that aren't allow_html="false"! 2014-04-26 09:47:56 -04:00
Inusaito Sayori
4f8e6a188a Bypass canClose check for new groups by calling onClose directly. (Fixes making new groups!) 2014-04-25 11:52:25 -04:00
Inusaito Sayori
b0e44ad1bd Solve Issue 624: minimap multiple selection tool
Adds a circle when you mouse over the minimap, beneath your cursor
-This circle is the effect range of your right click+mark
-Shift+scroll to change the size of this circle (ExodusMinimapAreaEffect)
-- Set the debug to 1 to have basically the same range as before (unless dots are stacked)
-This circle is also how many avatars are shown in the tooltip
-When this circle is over avatar dots, they change color (ExodusMapRolloverColor)
The menu functions still only work on the closest dot to your cursor on right click...
Thanks to Exodus for the majority of this code, the rest is my work and updates to be closer to LL in places.
2014-04-25 04:11:35 -04:00
Inusaito Sayori
4a630b1780 Make it clear that item drop targets are for items. 2014-04-24 22:12:20 -04:00
Inusaito Sayori
ffa5e6099d Address Issue 1290: Bumps recorded in chat window
Adds debug setting AnnounceBumps and a toggle in Preferences->System->Security
2014-04-24 21:46:57 -04:00
Inusaito Sayori
8d1cd7008f Fix bug of being unable to change group owned parcel's visibility in search. 2014-04-24 19:48:27 -04:00
Inusaito Sayori
31b5c5e9dd Enter Export subpiemenu, no longer part of Tools 2014-04-24 19:47:17 -04:00
Inusaito Sayori
0e21a16c1c [STORM-1980] Singu Special: Emergency Teleport out of region within last 20 seconds before restart
Look in System preferences under the Security tab, at the bottom.
Debug setting is EmergencyTeleportLandmark, reset to turn off.

Also, thanks to everyone in Fluffy who put up with the tests of region restart notifications today,
I know it was annoying, thanks especially to the EMs for allowing me a testbed.
2014-04-24 01:33:04 -04:00
Inusaito Sayori
f666384a1d [STORM-1980] Part 3: Region Restarting camera shake reset also pokies at sound trigger
Don't send sound through the region, it's logically a UI sound. What even is that otherwise?
2014-04-24 01:25:52 -04:00
Inusaito Sayori
afacfcee94 [STORM-1980] Part 2: Floater and shakeyshake
Shake is off by default, turn on AlchemyRegionRestartShake to activate
2014-04-23 23:54:59 -04:00
Inusaito Sayori
7262bf96b8 [STORM-1980] Part 1: Notifications with timestamp and sound 2014-04-23 10:58:14 -04:00
Inusaito Sayori
3db489f4df Feature Request: When someone is marked on the minimap have that color persist on the radar and their tags
Jus' look at dat color~
2014-04-23 02:50:51 -04:00
Inusaito Sayori
6526c28e47 Fixup for "Feature Request: On login, open Local Chat, Communicate, and/or Contacts" 2014-04-23 01:35:52 -04:00
Inusaito Sayori
e473b9bf10 Fix a common crash when people would upload invalid xmls
Ill-gotten xmls just don't parse the same way...
2014-04-23 01:05:32 -04:00
Inusaito Sayori
0bde458c27 Allow minimum Sun Size of 0.01 instead of 1, like Black Dragon. 2014-04-22 22:20:46 -04:00
Inusaito Sayori
66739ac820 Preferences touchup now that we have log launching on mac 2014-04-21 18:59:49 -04:00
Inusaito Sayori
4a3763d8d1 Feature Request/Bug Fix: On login, open Local Chat, Communicate, and Contacts if they were open last session. 2014-04-21 18:31:41 -04:00
Cinder
4230127459 De-brand currency exchange 2014-04-21 18:09:08 -04:00
Cinder
a4c672252d Launch transcripts in external text editor on mac too 2014-04-21 18:05:45 -04:00
Lirusaito
d5d0473487 [LLMeshRepo sync] Fix mesh not loading 2014-04-19 01:09:12 -04:00
Lirusaito
9bbad1f8f0 [Warnings] Fix trigraph warning. 2014-04-19 00:47:02 -04:00
Lirusaito
0523965822 [LLMeshRepo sync] relwithdebinfo compile fixes 2014-04-19 00:25:11 -04:00
Lirusaito
cb8cd702e1 [LLMeshRepo sync] Linux compile fixy
Note to self: Windows compiler does not care about file casing, be more careful.
2014-04-18 23:51:52 -04:00
Liru
86b5737d51 [Floater Flexibility] French Translation~ Danke Nomade. 2014-04-18 09:17:41 -04:00
Liru
4027ec7a67 [Floater Flexibility] Fix yet another broken button, this time group titles, thanks again to the french singularity group 2014-04-18 04:58:49 -04:00
Liru
c2748a2246 [LLMeshRepo sync] The rest of the changes from upstream 2014-04-18 04:43:46 -04:00
Inusaito Sayori
5c06afc977 [LLMeshRepo sync] AICurl updates toward LLCurl
LLHTTPClient::getByteRange no longer throws AICurlNoEasyHandle, instead it returns whether or not it threw, to match the true/false convention of LLCurl.
- In addition, the header param has been shifted to earlier in this function to ease diffings.
ResponderBase now has static bool isGoodStatus, introduced into the Responder base class of LLCurl
2014-04-17 20:23:48 -04:00
Inusaito Sayori
4c82a5660f [LLMeshRepo sync] Change camelcase LLConvexDecomp to lowercase, so mergetool is happy~ 2014-04-17 18:20:34 -04:00
Inusaito Sayori
beacb5c701 [Floater Flexibility] Fix that the preferences button wasn't working, thanks Nomade for pointing this one out. 2014-04-17 15:47:50 -04:00
Damian Zhaoying
8355331cbe Merge remote-tracking branch 'Liru/master' 2014-04-17 02:18:56 -03:00
Inusaito Sayori
dc9cb07a81 [Floater Flexibility] Part four: Added a floater to change buttons shown on the toolbar
View->Change toolbar buttons

Reuses the old FloaterUploadRect because I'm allowed to be lazy after creating this large control panel
2014-04-16 19:03:07 -04:00
Inusaito Sayori
57fe7d9ad0 [Radar] WHAT?! Why wasn't this committed last night? I know it was... what the heck... 2014-04-16 16:08:20 -04:00
Latif Khalifa
00336de59a Merge branch 'osx_xcode5' of github.com:lkalif/SingularityViewer 2014-04-16 16:44:31 +02:00
Inusaito Sayori
b37b48f039 [Radar] Code overhaul
Brings a new "voice status" column, showing voice use as active speakers floater does.
- Shown by default, look in Extras tab to hide it
Attempt to blend and fix the visibility of the yellow for shout range.
- Requires user feedback, looks good on default and gemini to me

Refactors pretty much all of the code in the avatar list
-Less duplicate vars, less wasted space, more consistent spacing conventions, eradication of BOOL use.
We no longer add (or even evaluate what should be in) icon columns that are hidden
- This prevents icons from showing up even when their columns are hidden.
Minor work on focusing out of draw avatars, though that still won't work, sadly.
2014-04-16 05:30:19 -04:00
Latif Khalifa
42ca1a8994 [clang] Force build with SDK 10.6 2014-04-16 10:55:36 +02:00
Latif Khalifa
db678238ef Merge branch 'master' into osx_xcode5 2014-04-16 09:56:57 +02:00
Lirusaito
861f88dd30 Awesomeness, yayayay! (allows XML changes in indra/newview/skins/ to count for viewer running from a directory in indra on Windows) 2014-04-15 20:06:08 -04:00
Lirusaito
77d42f1eb9 Attempt to cure stupid people being unable to untar properly over old versions without causing massive issues
(Gawd, that is not even proper installation process.... I need a drink)
2014-04-15 20:03:24 -04:00
Inusaito Sayori
364a13017c Merge remote-tracking branch 'fairydust/master' 2014-04-15 19:57:31 -04:00
Latif Khalifa
8183deeb30 [xcode5] WIP: rebuilt clang friendly boost 2014-04-14 21:17:22 +02:00
Latif Khalifa
bb56d0a752 [xcode5] WIP: clang build fix 2014-04-14 21:16:24 +02:00
Latif Khalifa
41eafa4ede [xcode5] WIP: build system changes 2014-04-14 21:14:42 +02:00
Inusaito Sayori
ce7629200f Object Import/Export improvements
Support exporting "material" "clickaction" "flags" and "ExtraPhysics"
Support export of Light Texture feature, the expansion to Light feature.
Initial work to support firestorm's format.
Switched from exporting individual flags fields in favor of exporting one U32 field
- We still support the old single flag fields though we no longer export them.
2014-04-09 20:24:15 -04:00
Inusaito Sayori
5dca06d3d4 So then I said, "Compile, are you crazy?!" 2014-04-08 04:51:18 -04:00
Inusaito Sayori
b1d18c7f29 Address Issue 1298: Add Auto-replace text feature, borrowed from LL~ 2014-04-08 02:12:51 -04:00
Inusaito Sayori
0b2d019e61 Latif's requested touch-ups for IM windows in concise mode.
Profile option for concise flyout.
Fix for ding in multi-user chats breaking button alignment.
2014-04-08 01:07:19 -04:00
Inusaito Sayori
ab0dde7fe8 [Floater Flexibility] Part three and a half: Toolbar code cleanup, toolbar in mouselook option
Go into Preferences->Input and Camera, to find the new option~

Thanks to Cinder for checking that the mac changes build and look nice.
2014-04-08 00:36:44 -04:00
Inusaito Sayori
ef01d2af82 Fix "zombie" lie and tabs/spaces inconsistency in xml. 2014-04-07 16:06:33 -04:00
Damian Zhaoying
08084799b9 Merge remote-tracking branch 'Liru/master' 2014-04-06 14:42:00 -03:00
Inusaito Sayori
3642e401da Fix About and Toolbar prefs buttons being mushed together, thanks for the heads-up Friti! 2014-04-04 19:57:32 -04:00
Inusaito Sayori
094d284e62 Missed a git mv, mac should build after this. 2014-04-04 17:28:19 -04:00
Latif Khalifa
2c7459e08d Supress bool/BOOL comparison warning 2014-04-04 21:29:41 +02:00
Latif Khalifa
315d2c4daf Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2014-04-04 21:21:00 +02:00
Aleric Inglewood
e61cabf1ce Remove compiler warning. 2014-04-04 21:13:57 +02:00
Aleric Inglewood
994f409291 Attempt 2 2014-04-04 21:06:30 +02:00
Aleric Inglewood
7d124012c2 First attempt to fix windows compile errors. 2014-04-04 20:58:33 +02:00
Latif Khalifa
4d3c80e273 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2014-04-04 20:08:19 +02:00
Aleric Inglewood
a332a7fc35 Compile fix for motions backport. 2014-04-04 17:33:45 +02:00
Aleric Inglewood
2fb945a489 Fix floating point round off error bug that caused mAnimTime to be decreased in value.
Conflicts:
	indra/llcharacter/llmotioncontroller.cpp
2014-04-04 15:22:18 +02:00
Aleric Inglewood
4d2517d163 Freeze also synchronized avatars when editing an attachment.
On the removal of permYouOwner():

Calling permYouOwner() to determine if an attachment is yours is
not correct: grid gods (and that includes BEFORE requesting admin
status) are marked as owner of everything in their sim.

The reason for that is that otherwise,
  <Melanie_T> if they only had it when actually godding u, the viewer
  would have to have an option to either show the proper menus (it
  doesn't) or allow the sim to refresh the object flags without full
  object updates (it hasn't).
  <Melanie_T> gods often have to act fast, for instance with griefers.
  Having transition to god mode take as long as a full rez just isn't an
  option, apart from the sim load caused by resending all objects.
  <Melanie_T> Then i tried resending only the object that was selected
  but there the arriving object update would close the pie menu.
  So you right-click a prim and the pie menu would close again.

The result has always been that if you are on your own sim, in opensim,
and select an attachment on another avatar, then YOU would freeze, not
the selected avatar. This patch fixes that "opensim related" bug as
well.
2014-04-04 15:19:50 +02:00
Aleric Inglewood
b4848f308f Compile fix for Release 2014-04-04 15:19:39 +02:00
Aleric Inglewood
1c8876cead Synchronize looping animations that start at the same moment. 2014-04-04 15:19:28 +02:00
Aleric Inglewood
1bcb6ad20d Version 2 of AISyncClient et al.
A tool to synchronize objects:
Objects derived from AISyncClient can signal that they are
'ready' or 'not ready' for up to 32 events (using a bitmask)
at a time. Clients that are created at roughly the same time
as other clients, and which return the same 'key' (a virtual
function returning an AISyncKey object) will be grouped together
and receive events (by means of virtual functions being called)
to notify them of all clients being ready or not for one of the
events (the least significant bit)). The other events can be polled.

This new version does away with all the templates and explicitly
remembers what events each client is ready for instead of just
updating a counter of the number of clients. This was necessary
because a client is removed then the server needs to know if it
was ready or not when it has to be able to update those counters.
This time I chose to just run over all stored clients and AND
and OR the per-client-ready-masks because 1) that information
is available now and 2) the lists will normally contain only
one or two clients, so it's fast enough.
The new version also allows for real key comparison (and derived
keys) instead of just using "hash" value that is compared.
2014-04-04 15:19:18 +02:00
Aleric Inglewood
66aaa9cf80 Add LLMotionController* LLMotion::mMotionController
This is needed for synchronization: motions will have to start
(with a specific start time offset) from a point in the code where
only the motion object is available.

I added/used LLMotionController& in a previous commit, this was
now changed into a pointer. There is (obviously) not much reason
for that, but also no disadvantage: the diff relative to LLs code
doesn't get larger since the references where already added, too.

Conflicts:
	indra/llcharacter/llkeyframemotion.cpp
	indra/llcharacter/llkeyframemotion.h
2014-04-04 15:19:02 +02:00
Aleric Inglewood
61d365e957 Removed this again... 2014-04-04 15:15:36 +02:00
Aleric Inglewood
006b319c3a Add AISyncClient<> (and AISyncServer).
A tool to synchronize objects:
Objects derived from AISyncClient can signal that they are
'ready' or 'not ready' for up to 4 events (using a bitmask)
at a time. Clients that signal to be ready for anything
at roughly the same time as other clients, and which return
the same 'hash' (a virtual function returning a 64bit value)
will be grouped together and receive events (by means of
virtual functions being called) to notify them of all clients
being ready or not for one of the events (syncevent1).
The other three events can be polled.

The memory usage is low (one pointer per client that points
to its AISyncServer object), servers are released to a cache
after about 100 ms (unless there is actual need for synchronization),
so there aren't much of those either.

The CPU usage is extremely low: all events are handled in
parallel in a 32 bit value (6 bits per event to count the
number of registered clients and the number of ready clients
for each event, and the remaining 8 bits to count the
number of reference pointers (which should only be a constant
higher, so that is overkill). To signal to a server that
a client has become ready or not is mostly a function call,
which then takes 1 clock cycle or so before returning.
Registration of a client is slightly more expensive as it
requires a pointer to be added to the end of a std::list.
This tool could easily be used as part of the graphics engine
(not that I intend to do that :p).
2014-04-04 15:15:26 +02:00
Aleric Inglewood
e38ec797fd Fix lookat and pointat shared experience.
There was a bug that when people turned off sending viewer effects,
they'd also turn off sending LookAt, while there is a seperate
checkbox to turn THAT off, while still seeing their own avatar
happily look around, breaking shared experience (most notably, most
people will be complete oblivious of the fact that they look like
zombies to others and that their friends do not see the same thing
on their screen).

This patch fixes this: both parties now see the same thing. Lookat
and PointAt are only turned off by their respective checkboxes,
and no longer silently influenced by turning off other viewer
effects.
2014-04-04 15:15:15 +02:00
Aleric Inglewood
94b42e7a9b Speed up of particular inefficient part related to motions.
For these standard motions, the viewer likes to very frequently
flood-call startMotion/stopMotion sometimes, which at the very
least needs a LLUUID lookup in a std::map. In particular, this
is done for two of them for every avatar in the sim every frame.
This code makes it possible to test if that makes sense by
merely doing a bit test.

Conflicts:
	indra/llcharacter/llkeyframemotion.h
2014-04-04 15:14:54 +02:00
Aleric Inglewood
61097dac72 Auto clean up motion cache.
Conflicts:
	indra/llcharacter/llkeyframemotion.cpp
	indra/llcharacter/llkeyframemotion.h
	indra/newview/llfloaterbvhpreview.cpp
2014-04-04 15:10:52 +02:00
Aleric Inglewood
116fe01dee Add AIDebugInstanceCounter
Prints number of instances upon construction and destruction.
Usage:

class LLSomething : public AIDebugInstanceCounter<LLSomething>
...
2014-04-04 14:57:55 +02:00
Aleric Inglewood
ba2bf9f366 Get rid of unused and irrepairable code. 2014-04-04 14:57:41 +02:00
Aleric Inglewood
a5b68f2da2 Changes to llkeyframemotionparam.cpp as result of audit.
These changes were the result of my Motion leak audit.
However, there is a serious problem with LLKeyframeMotionParam
in that it stores plain pointers to objects that can and will be deleted
by other objects. Its the classicial LL example of coding
non-Object-Oriented badly maintainable and instable code.

I cannot make sure this won't go wrong for the simple fact
that LLKeyframeMotionParam is not used at ALL in our code.
Hence, the next commit will rather delete this file.
This commit is merely to have a record of this finding.
2014-04-04 14:57:31 +02:00
Inusaito Sayori
97edb0f954 [Floater Flexibility] Part three: Create the flexible toolbar and create the temporary settings for button visibility
Look in debug settings for settings that start with ToolbarVisible
This will have an official interface by part four.
2014-04-03 14:36:20 -04:00
Inusaito Sayori
a3531b931b Feature Request: Ding for groups and conference chats. 2014-04-03 01:27:27 -04:00
Aleric Inglewood
0438f070f7 Merge remote-tracking branch 'singu/master' 2014-04-01 01:28:55 +02:00
Inusaito Sayori
f53e36c430 Fix not being able to buy land because of inversed RLVa logic. 2014-03-31 13:12:33 -04:00
Inusaito Sayori
8889e2de64 Fix icon packaging on mac. 2014-03-31 12:22:12 -04:00
Shyotl
2d0b310e19 Framerate llinfos spew was clobbering cout decimal precision. 2014-03-29 02:19:14 -05:00
Shyotl
dfb465a11b Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2014-03-29 02:13:26 -05:00
Shyotl
9ed2dc755c Always set materials mask if deferred for materials/alpha pools. Fixes potential crash in LLDrawPoolAlpha::renderAlpha 2014-03-28 17:14:57 -05:00
Latif Khalifa
e70342b356 Removed duplicate check introduced in the last change 2014-03-28 16:42:27 +01:00
Latif Khalifa
ba0fd794d7 Compile fix 2014-03-28 16:20:38 +01:00
Latif Khalifa
dbd7de628f Fix compilation with gcc 2014-03-28 08:50:02 +01:00
Shyotl
d6fdaa93a4 Added adaptive vsync support (selectable in preferences->graphics->hardware, provided the driver supports it). Also hide 16x fsaa on amd hardware, as it is not supported on said hardware (unsure about intel). 2014-03-28 02:34:03 -05:00
Latif Khalifa
80076833d1 Fix compilation with gcc 2014-03-28 08:30:22 +01:00
Latif Khalifa
dc9d3fbf96 Fix build with SDL prior to 1.3.0 2014-03-28 08:29:30 +01:00
Latif Khalifa
e12548ab8c Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2014-03-28 08:45:40 +01:00
Shyotl
894261862d Tweaks to stencil handling to allow masking out of sky (or geometry).
Reset stencil clear value to 0 after done clearing.
2014-03-27 22:31:47 -05:00
Shyotl
07a261a259 A little bit of cleanup. 2014-03-27 22:04:30 -05:00
Shyotl
34a7bf4dbb Comment out unused shader. 2014-03-27 21:30:23 -05:00
Shyotl
5988f6cf88 Updated rigged mesh face batch/pool handling.
Fixed issue with fullbright and glow occlusion.
RenderTransparentWater toggling should work more gracefully.
Fixed some bugs in general drawpool classification for faces. Bump pool was superceding more than it should have.
2014-03-27 21:27:40 -05:00
Inusaito Sayori
039be1f8e9 Fix Issue 1413: Local Texture Default Texture Update Settings, Also fix the side issue of the More section not having visible ui at first.
Also I got fed up with the bad code and leaks so I did some refactoring of floaterlocalassetbrowse.*, but just a bit.
2014-03-27 21:33:21 -04:00
Inusaito Sayori
70e92a1cea More helpful fixes and touchups from Cinder 2014-03-27 20:10:06 -04:00
Inusaito Sayori
2af2e37dcd Right clicking folder with only gestures (no worn items) should still offer remove from outfit if any gesture in that folder is active.
Also follow linked folders when wearing folders, this will make linked folders a lot more useful!
Also fixes a warning and some spacing issues
2014-03-27 20:02:12 -04:00
Inusaito Sayori
a6559b1e51 [Floater Flexibility] Part two: Move floater dictionary into menu commands and use a common function to ShowFloaters between LLToolBar and menus. 2014-03-27 00:31:32 -04:00
Inusaito Sayori
361b8852df Fix Issue 1419: Moving a link to an inventory folder moves the pointed folder and not the link 2014-03-25 19:56:41 -04:00
Inusaito Sayori
ff201ce3f9 Fix Issue 1448: Hard crash when emptying the mute list. 2014-03-25 19:51:49 -04:00
Inusaito Sayori
de2ce83a8d Touchups to namesystem update 2014-03-25 19:39:02 -04:00
Inusaito Sayori
f37d83abe1 [Floater Flexibility] Part one: Refactor all floaters to work with the dictionary in one way or another. 2014-03-25 00:23:56 -04:00
Inusaito Sayori
ee610ceb3f The Name System update!
Adds name list specific name settings, Removes boolean for having lists of speakers with legacy names in favor of having a more flexible setting for them
Have a look at the combo boxes on Adv. Chat->Chat UI to customize these new settings.

There is now a fourth option for name display: LegaCy Name (D is play Name)
2014-03-24 17:52:13 -04:00
Inusaito Sayori
5affacab70 Fixes, mainly for Clang/Mac, from Cinder. 2014-03-24 16:56:10 -04:00
Latif Khalifa
924011f36e Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2014-03-23 14:24:47 +01:00
Inusaito Sayori
70b5a6f05b Prevent Issue 1445, reassess enablement of asset browser buttons when selection may have changed 2014-03-23 06:03:20 -04:00
Inusaito Sayori
05c7270dcf Merge changes for STORM-2008
"Remove from outfit" should deactivate gestures in a folder as well as take off items
Credit to Lance Corrimal
2014-03-20 03:53:11 -04:00
Inusaito Sayori
a75e34d1c2 Feature Request: Allow "wear_folder" SLapps 2014-03-20 03:34:17 -04:00
Inusaito Sayori
f7139ac20e Fix Issue 1406: Create Landmark shows name twice, not description 2014-03-18 19:45:18 -04:00
Inusaito Sayori
e43d718e0f Sappadilli's fix for the mini button 2014-03-18 19:18:57 -04:00
Inusaito Sayori
cc0b5e660d Touch missed spots for picking rigged mesh 2014-03-18 18:38:30 -04:00
Latif Khalifa
8f525a37da Typofix 2014-03-17 00:20:32 +01:00
Latif Khalifa
5e62d2b104 Revert to using Vivox SDK 2 on Linux 2014-03-16 22:44:30 +01:00
Damian Zhaoying
6c373ee31e Update Spanish languages files 2014-03-15 05:14:07 -03:00
Lirusaito
d98c46beb0 Extend SGAllowRiggedMeshSelection to work in inspect and on others 2014-03-13 01:31:11 -04:00
Lirusaito
850772a4ce [RLVa] About floater version display adjustment 2014-03-12 22:21:55 -04:00
Latif Khalifa
08be65e649 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2014-03-13 02:04:59 +01:00
Lirusaito
ed8e37ed89 [RLVa] Updates thanks to Kitty
1ea7389, 49be412, ed4c8e6 & 7ce9521
- changed : "Give to #RLV" agent-to-agent and script-to-agent offers can contain subfolders
-> limited to 3 levels (e.g. #RLV/~FolderA/FolderB/FolderC)
-> #RLV folder is auto-created if it doesn't currently exist

8780d84 - Incremented version number to RLVa-1.4.10
f078067 - internal : boolean (custom) debug settings should have a boolean type
72a8ad8 & 401ca14 - internal : added supporting code for "Detach Folder" RLVa lock checks

05718b5
- fixed : RenderResolutionDivisor is non-functional
-> RenderResolutionDivisor isn't actually taken into account when checking the new screen resolution against the current screen buffer size

4fa138b
- fixed : viewer clips mouse to its rectangle when switching into mouselook while it's not the active application
-> Repro:
* rez a prim with a script to llForceMouseLook(TRUE) and force-sit when clicked (with a slight delay)
* click the prim and give focus to another application
=> the viewer will center the mouse cursor on itself and restrict movement to within its own rectangle (requires alt-tab to escape)
+ Singu Note: Thanks to Kitty for this, it is possible that this would happen in our last release

14132c9
- fixed : region name and global coordinates are shown on the About floater when @showloc restricted
+ Singu Note: RLV version is now shown in help->about

9a2af62 - changed : llRegionSayTo messages are no longer subject to @recvchat(from) or @recvemote(from)

2dc4b89
- fixed : @getstatus and @getstatusall should specify an (optional) separator
-> added support for both @getstatus:tp;|=123 and @getstatus:;|=123

fbb3fb1 - Incremented API version number to 2.8.0
92c39b9 - internal : quick and dirty hack fix for RlvUtil::filterNames() but there's no time to do a proper backport from RLVa-1.5
2580f1c - internal : remove hack for legacy viewers without multi-attachment support
2014-03-12 19:41:15 -04:00
Latif Khalifa
1732d6d427 [Voice Update] Sync default voice debug level with upstream. 2014-03-12 23:48:07 +01:00
Latif Khalifa
bb9a958a1e [Voice Update] Update SLVoice prebuilds and packaging script 2014-03-12 22:50:43 +01:00
Latif Khalifa
f1b8c36a28 Merge branch 'VoiceUpdate' of git://github.com/Lirusaito/SingularityViewer 2014-03-12 22:21:43 +01:00
Aleric Inglewood
03ed12a9b1 Merge remote-tracking branch 'singu/master' 2014-03-12 20:36:12 +01:00
Lirusaito
30f5a3a162 Update qtoolalign (Fixes issue 704)
- Removes shortcut ctrl-a for align tool
-- to avoid ctrl-a for select all text in UI controls messing up prim selection
- Adds llselectmgr select all function
-- to replace ctrl-a select all prims functionality that was a side effect of qtoolalign having this shortcut
- Adds toggle button (up/down arrow) to build floater for toggling display of the lower tab container area
-- This is to satisfy users who relied on ctrl-a to use align while the build floater was minimized and out of the way
- Syncs qtoolalign from Alchemy
2014-03-09 19:00:52 -04:00
Latif Khalifa
e4a3f76f55 Fixed an artifact of Root->Avatar Center rename (Sappadilli) 2014-03-02 20:05:49 +01:00
Drake Arconis
f5bdb56a7c Crash fixes in model upload 2014-03-01 18:53:51 -05:00
Drake Arconis
64d4a9e240 Add missing header guards 2014-03-01 18:00:59 -05:00
Drake Arconis
71d9084a95 Clean out old OGPX stuff 2014-03-01 17:34:22 -05:00
Latif Khalifa
9d6092faaa Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2014-02-21 09:30:08 +01:00
Shyotl
bb0f17ae6f Fix poor batching with mac/ancient drivers. Also, some minor tweaks to sorting algorithm. 2014-02-21 02:24:42 -06:00
Latif Khalifa
ebb46999d8 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2014-02-20 10:31:47 +01:00
Shyotl
1c48aa8f97 Added missing can_batch_texture check. Fixes unbatchable faces occasionally getting batched with the last batchable face batch. This was mostly noticeable with animated faces. 2014-02-19 22:35:43 -06:00
Shyotl
bdc0ad2b8f Experimental volume face batching changes (Cursory testing shows: +~10% larger mean batch size).
-Drive pass selection by face pools. Doing such removes a fair bit of redundant (and often buggy) code.
-Ignore irrelivant batch breakers depending on pass/pool type.
-Face sorting algorithm modified to potentially allow larger batches.
-Removed a few unused/broken things (bake_sunlight/no_materials)
-Fullbright handling should hopefully be a little more consistent.
-Prevent fullbright faces from being placed in 'simple' pool. (They are already simple-er)

Fixed attribute error that popped up with bump faces when batching was disabled.
2014-02-18 11:43:50 -06:00
Shyotl
ac8d5e5ab3 Let shaders dictate vertex buffer attributes for alpha faces (if shaders are enabled) 2014-02-18 09:21:31 -06:00
Latif Khalifa
41416dcffe Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2014-02-11 03:23:21 +01:00
Shyotl
dda7cb5791 Lazy workaround avoiding undefined behavior for rigged meshes with invalid joints. 2014-02-10 20:20:03 -06:00
Shyotl
f7fdeeea9b Be super sure not to let rigged vert weights extend beyond actual joint count. 2014-02-10 20:18:39 -06:00
Shyotl
9d7d7590a7 Prevent debug visualizations from writing to the z-buffer (caused occlusion weirdness) 2014-02-09 23:40:03 -06:00
Inusaito Sayori
77848afc94 Tiny patch for Issue 1385: Use normal folders for outfits while still creating links for everything
Adds debug setting LiruLegacyOutfitAllLinks which overrides legacy outfit settings and forces the resulting folder to consist of only links
2014-02-09 14:42:19 -05:00
Inusaito Sayori
8f7e96e2a5 Minimap enhancements!!
Much of this patch comes from upstream and Kitty Barnett, or is inspired from their works
This commit applies the World-Minimap patches from Catznip.

Catznip stuffs:
- Issue 1383: Parcel lines on mini map
 - Show parcels on the minimap
 - Minimap menu: "Show" submenu: "Property Lines" "Parcels for Sale"
- Option to have world map textures on the minimap
 - Minimap menu: "World Map Textures"
 - Singular touch: Made this comply with hypergridding.

The minimap will now scroll zoom based on where your mouse is if centering on camera is off.

A lot of cruft was cleaned up in this merge, a lot of gSavedSettings lookups in draw were converted to LLCachedControls, some license updates were performed.

Finally: By myself, but inspired by upstream and requested in the group before:
- Option to show tracking circles around people selected on the radar while the radar is visible
 - Minimap menu: "Show" submenu: "Radar Tracking Circles"
2014-02-08 18:26:18 -05:00
Shyotl
eab807daeb Fix fullbright alpha in fixed-function. 2014-02-08 01:47:22 -06:00
Inusaito Sayori
c4bfdcbeac Address Issue 1381: Mouse look cross hair coloration
Adds debug setting LiruCrosshairColor
2014-02-07 14:59:03 -05:00
Inusaito Sayori
3801949887 Little bit more touching up to the italian XML, this time for overlay bar 2014-02-06 17:27:53 -05:00
Inusaito Sayori
29d5c951c5 [STORM-1981] Change tracking beacons to extend to the ground and (optionally) vertically indicate direction
Jonathan Yap's beacon enhancements, with a Singular twist!
2014-02-06 17:23:28 -05:00
Inusaito Sayori
eb4b0d630f [MAINT-2287] The rest of the updates so far to outbox. 2014-02-06 14:53:13 -05:00
Inusaito Sayori
b6225d1d9a [MAINT-2287] Handle refactor 2014-02-06 14:51:36 -05:00
Inusaito Sayori
32ec2be0b6 SimFeatures spew demoted to logcontrol debugs. 2014-02-05 21:39:50 -05:00
Inusaito Sayori
d7dfa91f6f Remove incorrect "You should upgrade your viewer." spew, and demote it to lldebugs. 2014-02-05 20:59:10 -05:00
Inusaito Sayori
c4cc9dd417 Stop leaking in object import! 2014-02-05 15:17:44 -05:00
Inusaito Sayori
884b707385 Hey toolbar, toolbar italiano! 2014-02-04 18:41:10 -05:00
Inusaito Sayori
acbc81c1ea Further Italian Translation purification, fixup, and touches. 2014-02-04 18:33:02 -05:00
Inusaito Sayori
cc60dcc8a4 Languages preferences in order with actual languages in the right place above, please, thank you? 2014-02-04 16:20:24 -05:00
Inusaito Sayori
275f85e7a6 Fix god chat not showing up in god color if the god is using a display name. 2014-02-04 15:21:13 -05:00
Latif Khalifa
24f99a2920 Merge remote-tracking branch 'lirusaito/master' 2014-02-04 01:40:42 +01:00
Inusaito Sayori
2acfbf12ed Fix Issue 1368: Camera viewing angle resets after mouselook.
Only reset FOV when right click was held or released just before leaving, now.
2014-02-03 17:20:25 -05:00
Inusaito Sayori
b0972de510 Address Issue 1371: Enhancement: in Edit object Positions X & Y for OpenSim VarRegion 2014-02-02 16:53:55 -05:00
Inusaito Sayori
af58636c7c Fix the Login Panel such that it persists until a successful login and maintains ui values between failed logins
When the login panel used to die, it now hides instead, we only truly kill it upon successful login.
Much of the opening and setting behaviors have been cleaned up to ensure fields are autofilled by the viewer without any user action once
Everything else like changing saved logins will still work the same.
2014-02-02 16:45:37 -05:00
Inusaito Sayori
7341ad5e6e Support the Script Message API 2014-02-02 16:36:05 -05:00
Inusaito Sayori
744e6c63b6 Fix Issue 1237: Last online says 01/01/1970 for group members
For real this time!
2014-02-02 16:29:06 -05:00
Inusaito Sayori
31aa30e3d0 Group Feature Request: Option to Copy SLURL for an avatar's profile
Added to avatar list menus and instant message drop down menu.
2014-02-02 16:27:20 -05:00
Aleric Inglewood
ebb4489c01 Merge remote-tracking branch 'singu/master' 2014-02-01 22:34:13 +01:00
Inusaito Sayori
31b3ae584e Feature request: menus on the region estate panel's scroll lists. 2014-01-31 00:52:59 -05:00
Inusaito Sayori
151afe4663 Translations fix ups 2014-01-31 00:52:16 -05:00
Inusaito Sayori
b03f7c1504 [RLVa] Version 1.4.9
Thanks to Trinity and, of course, her Kitty!
2014-01-31 00:50:45 -05:00
Inusaito Sayori
bceaee6e41 [RLVa] rlva strings floater!
Generalized toggle() visible() call pattern of rlv floaters to a template struct.
2014-01-31 00:47:19 -05:00
Latif Khalifa
2a812e0e81 Revert "Limit avatar physics to 20-40 simulation steps per second to avoid wonky integration"
This reverts commit cde5b23353.
2014-01-28 23:59:05 +01:00
Shyotl
58b7fe5fef Avoid potential buffer over-read in shader, overrun in application. 2014-01-28 16:28:03 -06:00
Latif Khalifa
c4a82fe0d1 Version 1.8.5 2014-01-28 18:12:23 +01:00
Inusaito Sayori
0c33c0de2e [RLVa] rlva_strings update.
rlva strings floater coming soon!

I highly doubt the translations work anymore
If they still can be translated, I leave it up to translators to decide if they should be
Contact me if you need translation code improved here.
2014-01-28 04:41:16 -05:00
Inusaito Sayori
1b32c79a5e [RLVa] Miscellaneous other touches to rlva code 2014-01-28 04:38:05 -05:00
Inusaito Sayori
dd35f1bd68 [RLVa] Missed sections of canStand update in that last commit. 2014-01-28 04:35:43 -05:00
Inusaito Sayori
9c0d8bbeb1 [RLVa] "blocked_wireframe"? Seems half baked, but it compiles. 2014-01-28 04:34:12 -05:00
Inusaito Sayori
02753bfc7d [RLVa] gRlvHandler.canStand --> RlvActions::canStand 2014-01-28 04:31:34 -05:00
Inusaito Sayori
88ae36f4e1 [RLVa] Forced TPRequest response is now supported! 2014-01-28 04:27:38 -05:00
Inusaito Sayori
4dcf8f3f45 [RLVa] Removal of z offset restrictions 2014-01-28 03:16:35 -05:00
Inusaito Sayori
9e82297303 [RLVa] rlvfloaterbehaviour.* -> rlvfloaters.* 2014-01-28 00:31:40 -05:00
Inusaito Sayori
14a885f8d0 [RLVa] Modernizations
License updates, comment updates, settings cleanup, macros cleanup, dead code removal, etc.
2014-01-27 23:43:16 -05:00
Inusaito Sayori
94aee52c64 [RLVa] b15fdd026026 ported
- internal : reviewed @recvim and @sendim for CHUI (SL-3.5)

Singu changes:
- Updated busy to be referred to as do_not_disturb in llviewermessage.cpp
- Don't send autoresponse if we can't send an IM by rlva
- Updated checks for from name being system to be to_id and from_id null checks.
- Minor compile fix in rlvui.cpp for last commit.
2014-01-27 23:42:09 -05:00
Inusaito Sayori
755d3be89b [RLVa] Disallow inventory floaters when inventory restricted.
Formatting eases the diff with rlva upstream
2014-01-27 20:14:02 -05:00
Inusaito Sayori
6a3ee5fac4 [RLVa] f9f8dbe23ec3 ported
- internal : reviewed @startim for CHUI (SL-3.5)
    -> fixed : "Start Conference Chat" on a selection of multiple calling cards opens an IM session
    -> fixed : actions that would result in an IM window opening shouldn't be blocked if the session is already open
    -> added : RlvActions class to mimick LLAvatarActions and lowering the rlvhandler.h include dependency
2014-01-27 13:54:13 -05:00
Latif Khalifa
63ff4e281b Revert "focusFirstItem was no longer being overridden here, this function has proven not needed, thus."
This reverts commit 655081365f.
2014-01-25 22:31:08 +01:00
Inusaito Sayori
d1cfe54bd9 Fix Issue 1344: Weird mesh distorted bug
Animations require consistent names for points like Avatar Center between viewers
To fix this, we now use Avatar Center instead of Root at the lower levels,
but this is okay, we translate Avatar Center into Root at UI level!
2014-01-25 22:07:39 +01:00
Latif Khalifa
838266d710 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2014-01-25 21:22:49 +01:00
Aleric Inglewood
6547452136 Merge remote-tracking branch 'singu/master' 2014-01-25 20:29:46 +01:00
Aleric Inglewood
095f2d2255 Allow users to join a new grid with Singularity without first having to install another viewer.
I've seen this in other grids (InWorldz and OpenGrid) and is a problem
on DreamNation with every new user: they can't put on a shape or skin
until they first logged in with another viewer. See comments in code.

Tested, and now could successfully add shape, skin, eyes and hair.
2014-01-25 20:20:52 +01:00
Inusaito Sayori
42bf70849c Fix Issue 1344: Weird mesh distorted bug
Animations require consistent names for points like Avatar Center between viewers
To fix this, we now use Avatar Center instead of Root at the lower levels,
but this is okay, we translate Avatar Center into Root at UI level!
2014-01-25 09:44:42 -05:00
Inusaito Sayori
236fa2a284 Fix Issue 870: Crouch toggle not reset when pressing "Fly" button, causes avatar to run/fly downhill.
Reimplements crouch toggle such that crouch is now tracked by the agent object
Fixes crouch being reset when restoring focus to the viewer window, as well.
2014-01-24 22:57:19 -05:00
Inusaito Sayori
2450b435a7 Combine commonly created scroll list menus into single menus identified by menu_num instead of their menu_file
sScrollListMenus is an array such that it will hold more menus in the future, such as groups.
fmenu_file still exists and will still exhibit its old behavior if used.
2014-01-24 21:41:56 -05:00
Latif Khalifa
aaf06fa2cc FITMESH-6, FITMESH-20 Fix for some objects disappearing when hardware skinning enabled and ALM disabled.
NOTE: There appears to be a driver bug on some AMD systems that will cause hardware skinning to break given different combinations of shaders. Users should be advised that if they see improper skinning on their avatars, they should either enable advanced lighting model, or disable atmospheric shaders or hardware skinning.

davep
2014-01-24 12:26:43 +01:00
Latif Khalifa
de29ea779a Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2014-01-24 12:24:14 +01:00
Inusaito Sayori
282df98d09 Complete resize-friendly appearance mode UI 2014-01-24 01:29:38 -05:00
Latif Khalifa
cc9f6b7b7b Fitted mesh fixup: change in llvoavatar.cpp enabled extra information
for avatar look at targets which is not something users expect, disabling for now
2014-01-24 05:51:26 +01:00
Inusaito Sayori
e3c91a3ba1 Added lsl functions from Second Life RC LeTigre 13.12.20.285035 2014-01-23 21:19:40 -05:00
Latif Khalifa
8ea156d128 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2014-01-24 02:20:37 +01:00
Latif Khalifa
99db9edfef Fitted mesh: hookup debug display to Advanced -> Charachter -> Show Avatar Joins 2014-01-24 02:20:25 +01:00
Shyotl
a0c7b1f8ac Try manually nulling out vbo data if its entire contents are to be overwritten. Rumored intel/nvidia optimization. 2014-01-23 19:06:52 -06:00
Shyotl
97d57d81b0 Skip particle-glow vbo logic if shaders aren't enabled. 2014-01-23 19:02:43 -06:00
Shyotl
66ebe45b5e Give 'gDeferredNonIndexedDiffuseAlphaMaskProgram' a unique 'name' 2014-01-23 19:01:49 -06:00
Shyotl
7516871b16 Avoid wasting particles on incredibly small/zero length ribbon segments. 2014-01-23 19:00:30 -06:00
Inusaito Sayori
30bd505eab French update touchup, by Nomade Zhao. 2014-01-23 19:58:45 -05:00
Inusaito Sayori
17f7967e39 Issue 97: Disable Leaving Mouselook when viewer window loses focus 2014-01-23 19:39:38 -05:00
Inusaito Sayori
ab55c61dc3 Feature Request: Add option to reset angles/offsets adjustments made to current camera preset.
Adds "Reset Camera Preset Angle to Default" to view menu
Wasn't quite sure where to hook this up, menu seemed the best for the moment, but really it's more of a preferences button function.
2014-01-23 19:35:17 -05:00
Latif Khalifa
066d0221b8 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2014-01-24 01:16:32 +01:00
Latif Khalifa
269deb56e6 Fitted mesh 2014-01-24 01:11:27 +01:00
Lirusaito
7572674fdb Enforce xml follows flags in scroll containers, and allow the appearance floater to resize, enforcing minimum dimensions of its default size
It was requested to let people resize the height to easily display more sections, and well, this is the easiest fix, if width changes in a nasty way, it can just be fixed since default is min.
2014-01-23 19:07:53 -05:00
Lirusaito
63379105b5 Fix the local chat focu bug, yay! 2014-01-23 19:06:33 -05:00
Lirusaito
655081365f focusFirstItem was no longer being overridden here, this function has proven not needed, thus. 2014-01-23 17:42:08 -05:00
Lirusaito
7ac0330e4b Fix a rare glitch where mouselook zoomed field of view would be maintained upon leaving mouselook 2014-01-22 00:57:15 -05:00
Latif Khalifa
bbb1d15b8e Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2014-01-16 08:18:04 +01:00
Latif Khalifa
b7c54301fb Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2014-01-16 08:17:54 +01:00
Inusaito Sayori
75109e14c3 Italics hotfix
Restores use of the old slant_amt offset for italicizing fonts by slanting quads.
Note that this is the wrong way to fix the issue and should eventually be removed.
2014-01-15 20:15:53 -05:00
Latif Khalifa
3446f708ff Syncronized max bandwith const with prefs panel max 2014-01-06 20:27:17 +01:00
Aleric Inglewood
9bce3b38d4 Do not erase cache every login forever, when NewCacheLocation is set a non-existing directory!
I can't believe that I have not have gotten a cache for two years
because of this... I knew I didn't, but didn't really want to fix
it while I working on the network code (AICurl) ;). It kinda made
for a good testing. Bet my ISP is glad I fixed it though.
2013-12-31 23:37:10 +01:00
Aleric Inglewood
93736308c9 Add missing ft2build.h to linux64 freetype package. 2013-12-30 19:38:41 +01:00
Aleric Inglewood
ba9c5c366b Avoid duplicated entries in mAttachedObjectsVector
This fixes Top Crasher signatures 2 and 50.
http://crash.singularityviewer.org/crashes.php?signature_id=2
http://crash.singularityviewer.org/crashes.php?signature_id=50
2013-12-30 03:24:46 +01:00
Aleric Inglewood
e523aadc4a Do not destruct running Responders upon viewer exit.
This hopefully saves some crashes.
2013-12-29 21:50:10 +01:00
Aleric Inglewood
4416dafe73 Erata for last commit (issue 1113). 2013-12-29 01:49:33 +01:00
Aleric Inglewood
2062431f23 Bug fix.
singularity-do-not-run-directly: /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llcommon/llmemory.h:219: void ll_memcpy_nonaliased_aligned_16(char*, const char*, size_t): Assertion `src != __null' failed.

 Program received signal SIGABRT, Aborted.
 [Switching to Thread 0x7fff3342f700 (LWP 18001)]
 0x00007ffff0f951d5 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
 56      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
 (gdb) bt
 #0  0x00007ffff0f951d5 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
 #1  0x00007ffff0f98388 in __GI_abort () at abort.c:90
 #2  0x00007ffff0f8e252 in __assert_fail_base (fmt=0x7ffff10cc080 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x2c7ca97 "src != __null",
     file=file@entry=0x2c7ca40 "/opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llcommon/llmemory.h", line=line@entry=219,
     function=function@entry=0x2c7dc60 "void ll_memcpy_nonaliased_aligned_16(char*, const char*, size_t)") at assert.c:92
 #3  0x00007ffff0f8e302 in __GI___assert_fail (assertion=0x2c7ca97 "src != __null", file=0x2c7ca40 "/opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llcommon/llmemory.h",
     line=219, function=0x2c7dc60 "void ll_memcpy_nonaliased_aligned_16(char*, const char*, size_t)") at assert.c:101
 #4  0x0000000001b3ebd9 in ll_memcpy_nonaliased_aligned_16 (dst=0x7fff2c39f440 "\001", src=0x0, bytes=0)
     at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llcommon/llmemory.h:219
 #5  0x0000000001e09d93 in LLVector4a::memcpyNonAliased16 (dst=0x7fff2c39f440, src=0x0, bytes=0)
     at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llmath/llvector4a.cpp:44
 #6  0x0000000001e2a13c in LLVolumeFace::pushVertex (this=0x7fff3342daf0, pos=..., norm=..., tc=...)
     at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llmath/llvolume.cpp:6106
 #7  0x0000000001e2a03f in LLVolumeFace::pushVertex (this=0x7fff3342daf0, cv=...) at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llmath/llvolume.cpp:6080
 #8  0x0000000001e20498 in LLVolumeFace::optimize (this=0x7fff2c39ee20, angle_cutoff=2) at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llmath/llvolume.cpp:4841
 #9  0x0000000001aa61d4 in LLModel::optimizeVolumeFaces (this=0x7fff2c39e100) at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llprimitive/llmodel.cpp:866
 #10 0x0000000001aa5f28 in LLModel::createVolumeFacesFromDomMesh (this=0x7fff2c39e100, mesh=0x7fff2c36cc90)
     at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llprimitive/llmodel.cpp:829
 #11 0x0000000001aa8324 in LLModel::loadModelFromDomMesh (mesh=0x7fff2c36cc90) at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llprimitive/llmodel.cpp:1402
 #12 0x0000000000a9bc11 in LLModelLoader::doLoadModel (this=0x7fff4f74d480) at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/newview/llfloatermodelpreview.cpp:1535
 #13 0x0000000000a9b100 in LLModelLoader::run (this=0x7fff4f74d480) at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/newview/llfloatermodelpreview.cpp:1395
 #14 0x00007ffff5e52e9a in LLThread::staticRun (apr_threadp=0x7ffff7e572e0, datap=0x7fff4f74d480)
     at /opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/llcommon/llthread.cpp:93
 #15 0x00007ffff7bc6e0e in start_thread (arg=0x7fff3342f700) at pthread_create.c:311
 #16 0x00007ffff10490fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

This happened while loading some .dae.
2013-12-28 20:52:11 +01:00
Aleric Inglewood
a4b2ecc4f7 Fix issue 1113, "detaching editted attachment does not unfreeze avatar"
Detaching an attachment didn't reset the select managers pause request
for the avatar.
2013-12-28 18:59:20 +01:00
Aleric Inglewood
c8017c7945 Merge remote-tracking branch 'singu/master' 2013-12-27 17:59:00 +01:00
Aleric Inglewood
f81f5e2374 Show the part of an animation after the loop out point when previewing. 2013-12-27 17:57:45 +01:00
Aleric Inglewood
19a36a6e12 Don't assert at exit.
It's perfectly ok when a responder is being deleted before it finished,
when the application is exiting.
2013-12-27 17:55:49 +01:00
Latif Khalifa
9768b3e42f Build fix 2013-12-25 18:53:29 +01:00
Latif Khalifa
bc6348bb34 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-12-25 18:08:42 +01:00
Shyotl
3da9fe0e94 Avoid calling a few deprecated gl functions when shaders are enabled. 2013-12-25 02:09:36 -06:00
Shyotl
75f94d346d Fixed Alerics favorite assertion. 2013-12-24 20:21:55 -06:00
Shyotl
4eb9dc5191 Use GL_STREAM_DRAW_ARB for post-process fullscreen quad. 2013-12-24 20:17:05 -06:00
Shyotl
e00e704cbd Fix minor error in shader which prevented ssao from working with shadows enabled. 2013-12-24 20:16:05 -06:00
Shyotl
033880c8f9 Kill some vertex attribute / shader attribute inconsistencies. (Issue 1287, 1281) Also hopefully improved face edit overlay behavior when editing normal/specular texture/scale/offset/rotation. 2013-12-24 20:15:29 -06:00
Aleric Inglewood
1f80dac4c0 Don't cause undefined behavior by calling std::vector<>::front() for empty container. 2013-12-24 20:03:27 +01:00
Aleric Inglewood
a17eca6300 Merge remote-tracking branch 'singu/master' 2013-12-23 20:34:11 +01:00
Latif Khalifa
4a2168cf48 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-12-20 04:59:59 +01:00
Latif Khalifa
facd5a76c5 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-12-20 04:59:48 +01:00
Latif Khalifa
85c875e856 Link boost dynamically, bundle its libs. Addresses issue 1152.
Rebuild collada to also use dynamic boost.
SV-1152 #close Fixed by linking boost dynamically
2013-12-20 03:02:17 +01:00
Aleric Inglewood
302bebd80f Merge remote-tracking branch 'singu/master' 2013-12-19 23:03:22 +01:00
Inusaito Sayori
85943b8a03 Rename zmm_mlfov to ExodusAlternativeFOV 2013-12-19 11:57:58 -05:00
Aleric Inglewood
8f2781ca3b Fix bug with adding a new grid. 2013-12-19 03:13:33 +01:00
Inusaito Sayori
101c65098d Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2013-12-17 00:28:20 -05:00
Inusaito Sayori
195c962d8c Feature request from Issue 1285: Cost per sq. m. display on map. 2013-12-15 09:51:16 -05:00
Siana Gearz
2bb2e05ef9 Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2013-12-15 14:56:20 +01:00
Siana Gearz
679019f2de Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer 2013-12-15 14:09:29 +01:00
Inusaito Sayori
649c29674c Feature Request: User control over which UI will become hidden when going into mouselook.
Adds three checkboxes to input and camera preferences: Floaters, Notices, and Menubar
Should satisfy Issue 462.
SV-462 #close Done~
2013-12-14 20:48:48 -05:00
Inusaito Sayori
b22cc2c2fa [Warnings] Fixed warning: "_FORTIFY_SOURCE" redefined [enabled by default] 2013-12-14 00:05:10 -05:00
Inusaito Sayori
2642a1c3ff [Warnings] Fix class/struct inconsistency. 2013-12-14 00:00:52 -05:00
Shyotl
9014d56957 Fix 'setBuffer: Shader consumption mismatches data provision.' error in LLPipeline::updateCull. Issue caused by LLDrawPoolAlpha not unbinding shaders when only basic shaders are enabled. https://code.google.com/p/singularity-viewer/issues/detail?id=1281 2013-12-13 02:21:54 -06:00
Shyotl
7da8b012e6 Pulled SSAO out into its own shader to support running at a lower-than-native framebuffer resolution (defaults at half-resolution [SHRenderSSAOResolutionScale=.5] ). This doesn't improve the slow ssao/shadow softening, however, as that bit remains unchanged. 2013-12-13 02:19:57 -06:00
Inusaito Sayori
edabdcf724 log_sStringTemplates_accesses now spews lldebugs, not llinfos 2013-12-11 15:57:05 -05:00
Siana Gearz
c5adb01ed9 Stop occasional crash during shutdown 2013-12-10 23:11:07 +01:00
Inusaito Sayori
13f26e6b5a Feature request: Add EnableNongestureSounds as an opposite to gesture mute 2013-12-10 15:56:07 -05:00
Siana Gearz
64e7be0321 This should make the cache-full situation a lot more benign
I should be ashamed of myself, i took ugly, terrible code and uglied it up even more.
2013-12-09 08:35:21 +01:00
Siana Gearz
e182173ee2 Fatal paranoia cure 2013-12-09 03:39:47 +01:00
Inusaito Sayori
a59940c592 Fix Issue 1273: Typing in Group Chat opens IM Window for other participants
Broken logic, my bad.
2013-12-08 14:21:39 -05:00
Inusaito Sayori
36d8df602c [Radar] Feature request: Have Focus Next/Prev wrap around when it reaches the end 2013-12-06 13:10:12 -05:00
Inusaito Sayori
062973aaaf Default SinguOffsetScrollKeys to false and expose it in Camera prefs.
Adds "Scrolling with control and/or shift held adjusts camera position" to Input & Camera prefs
2013-12-06 08:43:28 -05:00
Inusaito Sayori
be369b5500 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2013-12-04 14:05:46 -05:00
Aleric Inglewood
ed0628774a Turn noisy AudioEngine debug output into Debug Level. 2013-12-04 01:21:18 +01:00
Inusaito Sayori
f988cd36b6 Attempt to fix Issue 1264: Vacant lines in Friends list 2013-12-02 22:45:44 -05:00
Inusaito Sayori
8fb2812899 LLIconCtrl Params 2013-12-02 20:45:07 -05:00
Inusaito Sayori
b4d0896507 Fixups to mistakes of the past. 2013-12-02 20:30:59 -05:00
Inusaito Sayori
4116ac75f6 LLUICtrl Params
Also adds support for requests_front boolean attribute to lluictrl from upstream
2013-12-02 20:17:48 -05:00
Inusaito Sayori
23958965aa LLInitParam/LLUI Params enhancement
Specialized param handling for common linden types
And pre-viewer-interesting modernized llinitparam.* (includes llsdparam.cpp update)
2013-12-02 00:27:50 -05:00
Inusaito Sayori
9723a45e72 Modernize LLIconCtrl
Adds min_height and min_width attributes
Adds mPriority for controlling priority with which to call LLUI::getUIImage*
Moves specialized setImage()s into setValue
Removes mImageName and mImageID, value is stored in base as LLSD now
2013-12-01 15:58:24 -05:00
Inusaito Sayori
bbb55b0b4d LLUICtrl support for "enabled_control" and "disabled_control" attributes from upstream. 2013-12-01 11:56:45 -05:00
Inusaito Sayori
f3ca4b6e34 Fix Issue 1222 by changing the default Field of View for mouselook zoom
Smooth scroll changes the meaning of the numbers, unfortunately.. so for those who haven't figured out how to customize their mouselook zoom, this'll hafta do.
Also clarified the description of the debug.
SV-1222 #close Fixed up, will require a reset of the debug setting "zmm_mlfov", clean install, or just scroll to modify it.
2013-12-01 00:33:04 -05:00
Aleric Inglewood
1dfd9a9c75 Merge remote-tracking branch 'singu/master' 2013-11-30 18:44:58 +01:00
Latif Khalifa
340286f918 Merge branch 'master' of https://github.com/siana/SingularityViewer 2013-11-29 16:24:36 +01:00
Latif Khalifa
e41b346046 Added CrashReportID debug setting that will be set to the ID of the last crash that was sent to the crash tracker 2013-11-29 16:22:06 +01:00
Latif Khalifa
d8fa14cac5 Notifying users about crash report ID on login creates confusion.
Revert "Added notification that chat report has been sent after the user logs in."

This reverts commit 4e79bce3e2.
2013-11-29 16:09:58 +01:00
Latif Khalifa
2c99e07b93 Fallback to old method of bundling MS C runtime, if automatic one fails 2013-11-29 16:06:56 +01:00
Latif Khalifa
f1ee3a0834 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-11-29 15:33:54 +01:00
Siana Gearz
ff3f6eccf7 One handed walking and running - LMB+RMB on your avatar 2013-11-29 11:33:59 +01:00
Siana Gearz
b7e9a94744 Fix closing the pay floater, reported in chat by Margot 2013-11-29 10:05:17 +01:00
Siana Gearz
faf5a8e694 Translation and debranding fixes 2013-11-29 08:47:25 +01:00
Siana Gearz
8a13599436 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer 2013-11-29 06:27:05 +01:00
Siana Gearz
767597ffe3 Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer 2013-11-29 06:25:10 +01:00
Siana Gearz
919fdafad5 Language properties clean-up 2013-11-29 06:24:55 +01:00
Shyotl
78e3d61b98 Remove ambient occlusion darkening from all deferred shaders except the one that actually calculates occlusion values.. (aka every shader except class2/softenLightF.glsl) 2013-11-28 21:07:25 -06:00
Inusaito Sayori
fd21afa0b3 French ALM words 2013-11-28 20:47:51 -05:00
Inusaito Sayori
5491ff8a51 [LLIMMgr/LLIMPanel] Fix Issue 1254: bug voice in conference
Conference ids are subject to change, switched to boost::ref to bind the real one.
SV-1247 #close Fixed nao~
2013-11-28 20:18:29 -05:00
Inusaito Sayori
909ce355e2 [LLIMMgr/LLIMPanel] Switched from dialog checks for nothing special to generic P2P session checking 2013-11-28 20:08:57 -05:00
Inusaito Sayori
63a9555d17 Use Links.SingularityViewer for Issue Tracker link. 2013-11-27 12:27:03 -05:00
Aleric Inglewood
e85241d9ab Merge remote-tracking branch 'singu/master' 2013-11-26 22:15:00 +01:00
Aleric Inglewood
38957ff531 Reduce calls to LLHoverView::updateText
Basically to avoid calling LLTrans::getString 250 times per second,
and seeing
INFO: log_sStringTemplates_accesses: LLTrans::getString/findString called 19000 in total.
INFO: log_sStringTemplates_accesses: LLTrans::getString/findString called 20000 in total.
etc, every 40 seconds in the log.
2013-11-26 22:09:46 +01:00
Aleric Inglewood
8357a2b90b Speed up ll_assert_aligned
Although only used in Debug mode, this showed up in a profiling
with a very significant amount of CPU cycles (in a state when
the viewer bogged down to 1 FPS because of drawing terrain,
but still - significant compared to the code that was being
executed (ie, 10%)).

This patch should bring that down from a few hunderd to one clock
cycle.
2013-11-26 17:52:24 +01:00
Salvatore La Bua
dad7228d56 Add Italian skin translation provided by druskus 2013-11-26 11:20:18 +01:00
Latif Khalifa
e2c8e4950d Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-11-26 11:15:48 +01:00
Inusaito Sayori
342c812121 Add initial_mime_type param to LLFloaterWebContent, defaulted to "text/html" 2013-11-26 05:13:02 -05:00
Inusaito Sayori
4c1880acac Default legacy log launch to on, and limit it to platforms it works on(windows) at compile time. 2013-11-26 04:49:37 -05:00
Inusaito Sayori
7383b0a974 Sync mats translation, thanks Nomade. 2013-11-26 04:35:00 -05:00
Inusaito Sayori
748d55ddd0 French Materials! (and cleanup\inclusion of old stuff) 2013-11-26 01:19:48 -05:00
Inusaito Sayori
7fd61c3bf1 Fix delete not working in text editors 2013-11-25 21:03:36 -05:00
Latif Khalifa
48850b2af0 Compile fix.
This appears to be committed blindly without testing even if it build.
ll_sd_from_color4() / ll_color4_from_sd() need to be used to store and get color from LLSD.
2013-11-26 01:03:10 +01:00
Latif Khalifa
4e79bce3e2 Added notification that chat report has been sent after the user logs in.
This will also add a line in the chat log with the report id
2013-11-26 00:38:00 +01:00
Latif Khalifa
362415fe8a Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-11-26 00:36:53 +01:00
Latif Khalifa
38248ac5b3 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-11-26 00:36:43 +01:00
Inusaito Sayori
98d5e4bea8 Possibly fix and restore Report Abuse to avs list menus 2013-11-25 03:44:07 -05:00
Inusaito Sayori
201ca35afb Possible fix for Mute/Unmute from lists of avatars not working 2013-11-25 03:33:13 -05:00
Inusaito Sayori
26655aefe0 Fix last online unknown showing up as zeroed out date.
Adds group_member_status_unknown to strings.xml
SV-1237 #close Fixed~
2013-11-25 03:24:40 -05:00
Aleric Inglewood
f8d9bcf487 Don't reset easy handles after using them.
We create a new easy handle every time.
2013-11-24 19:15:48 +01:00
Aleric Inglewood
ec436b0e3b Improve upload_finished detection for HTTP requests.
We detect the end of an upload when libcurl informs us
that it is no longer interested in knowing if a socket
is writable (which it tells us cause we're doing the call
to select(), by means of a call to MultiHandle::socket_callback).

However, this does not *always* work.
The debug output might look like this:

[...initialization and first part of a TLS handshake...]
0x7f759f0ad700   CURL        :   select(55, {17, 39, 46, 47, 48, 49, 50, 51, 52, 54}, NULL, NULL, timeout = 1 ms) = 7
0x7f759f0ad700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f758c002920, 46, CURL_CSELECT_IN, <unfinished>	<--- Calling curl_multi_socket_action (socket 46 is readable)
0x7f759f0ad700   CURLIO      0x13fce7b0       * SSLv3, TLS change cipher, Client hello (1):
0x7f759f0ad700   CURLIO      0x13fce7b0       S> 1 bytes
0x7f759f0ad700   CURLIO      0x13fce7b0       * SSLv3, TLS handshake, Finished (20):
0x7f759f0ad700   CURLIO      0x13fce7b0       S> 16 bytes
0x7f759f0ad700   CURLIO      0x13fce7b0       * SSL connection using AES256-SHA
0x7f759f0ad700   CURLIO      0x13fce7b0       * Server certificate:
0x7f759f0ad700   CURLIO      0x13fce7b0       *          subject: C=US; ST=California; L=San Francisco; O=Linden Lab, Inc.; CN=*.agni.lindenlab.com; emailAddress=root@lindenlab.com
0x7f759f0ad700   CURLIO      0x13fce7b0       *          start date: 2012-09-20 22:55:47 GMT
0x7f759f0ad700   CURLIO      0x13fce7b0       *          expire date: 2015-09-20 22:55:47 GMT
0x7f759f0ad700   CURLIO      0x13fce7b0       *          issuer: C=US; ST=California; L=San Francisco; O=Linden Lab, Inc.; OU=Linden Lab Certificate Authority; CN=Linden Lab Certificate Authority; emailAddress=ca@lindenlab.com
0x7f759f0ad700   CURLIO      0x13fce7b0       *          SSL certificate verify ok.
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: PROTOCONNECT => DO handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURLIO      0x13fce7b0       H< POST /cap/d67d4540-4504-b3d1-1d26-112010e88bd8 HTTP/1.1\r\nHost: sim10480.agni.lindenlab.com:12043\r\nAccept: */*\r\nAccept-Encoding: deflate, gzip\r\nContent-Type: application/llsd+xml\r\nX-SecondLife-UDP-Listen-Port: 32837\r\nConnection: keep-alive\r\nKeep-alive: 300\r\nContent-Length: 333\r\n\r\n
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: DO => DO_DONE handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)	<=== THIS IS NEW: total to upload: 333 bytes, total uploaded: 0 bytes.
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: DO_DONE => WAITPERFORM handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURLIO      0x13fce7b0       * STATE: WAITPERFORM => PERFORM handle 0x7f758d62d810; (connection #2)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 0)
0x7f759f0ad700   CURLTR      :       curl_easy_getinfo((CURL*)0x13fcf320, CURLINFO_PRIVATE, 0x7f759f0abdb0) = CURLE_OK
0x7f759f0ad700   CURL        :       Entering MultiHandle::socket_callback((CURL*)0x13fcf320, 46, CURL_POLL_INOUT, 0x7f758c001508, 0x7f758c2ce4e0) [CURLINFO_PRIVATE = 0x13fce7b0]
0x7f759f0ad700   CURL        :         CurlSocketInfo::set_action(CURL_POLL_IN --> CURL_POLL_INOUT) [0x13fce7b0]	<=== WATING FOR WRITING BUT ALREADY WAITING FOR INPUT!
0x7f759f0ad700   CURL        0x13fce7b0          reset_lowspeed: mLowSpeedClock = 138530973390; mStalled = -1
0x7f759f0ad700   CURLTR      :   <continued> {11}) = 0									<--- Returning from curl_multi_socket_action
0x7f759f0ad700   CURL        :   select(58, {17, 39, 46, 47, 48, 49, 50, 51, 52, 54}, {36, 46, 57}, NULL, timeout = 756 ms) = 5
0x7f759f0ad700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f758c002920, 46, CURL_CSELECT_OUT, <unfinished>	<=== SOCKET AVAILABLE FOR WRITING
0x7f759f0ad700   CURLIO      0x13fce7b0       * additional stuff not fine transfer.c:1037: 0 0
0x7f759f0ad700   CURLIO      0x13fce7b0       D< 333 bytes: "<llsd><map><key>folders</key><array><map><key>fetch_folders</key>...etc"	<=== WRITING *ALL* DATA
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 333)	<=== THIS IS NEW, DETECT END OF UPLOAD
0x7f759f0ad700   CURL        0x13fce7b0          upload_finished: mStalled set to Time_10ms (138530973390) + 6000 (60 seconds)
0x7f759f0ad700   CURL        :       Entering BufferedCurlEasyRequest::curlProgressCallback(0x13fce7b0, 0, 0, 333, 333)
0x7f759f0ad700   CURL        :   select(58, {17, 39, 46, 47, 50, 52, 54}, {36, 46, 57}, NULL, timeout = 0 ms) = 8
0x7f759f0ad700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f758c002920, 46, CURL_CSELECT_IN|CURL_CSELECT_OUT, <unfinished>
0x7f759f0ad700   CURLIO      0x13fce7b0       * HTTP 1.1 or later with persistent connection, pipelining supported
0x7f759f0ad700   CURLIO      0x13fce7b0       H> HTTP/1.1 200 OK\r\n

...and the server already replies without a call to MultiHandle::socket_callback between
writing and reading, because the socket was still (already) waiting for input anyway
(since it was waiting for the SSL/TLS handshake before in this case, but
it also happens when the data has to be written in more than one writes).

Using the progress callback however, we are able to detect the end of the upload right
after writing, anyway.
2013-11-24 19:13:17 +01:00
Aleric Inglewood
6714d3585d Improve CURLTR debug output.
It was very confusing that only *after* a call to a libcurl function
it was written to debug output that it was called.
Now it prints it before calling it, and when that leads to additional
debug output while inside the function, it prints that before giving
the return value.

For example:

0x7f529ea15700   CURLTR      :   curl_multi_socket_action((CURLM*)0x7f528c002920, CURL_SOCKET_TIMEOUT, 0, <unfinished>
0x7f529ea15700   CURLIO      0xea8ef30       * About to connect() to login.agni.lindenlab.com port 443 (#0)
0x7f529ea15700   CURLIO      0xea8ef30       *   Trying 216.82.16.97...
0x7f529ea15700   CURLIO      0xea8ef30       * 0xe3240e0 is at send pipe head!
0x7f529ea15700   CURLIO      0xea8ef30       * STATE: CONNECT => WAITCONNECT handle 0x7f528c001df0; (connection #0)
0x7f529ea15700   CURLTR      :       curl_easy_getinfo((CURL*)0xe3240e0, CURLINFO_PRIVATE, 0x7f529ea13db0) = CURLE_OK
0x7f529ea15700   CURL        :       Entering MultiHandle::socket_callback((CURL*)0xe3240e0, 36, CURL_POLL_OUT, 0x7f528c001508, 0) [CURLINFO_PRIVATE = 0xea8ef30]
0x7f529ea15700   CURLTR      :         curl_easy_getinfo((CURL*)0xe3240e0, CURLINFO_PRIVATE, 0x7f529ea13d58) = CURLE_OK
0x7f529ea15700   CURLTR      :         curl_multi_assign((CURLM*)0x7f528c002920, 36, 0x7f528c031680) = 0
0x7f529ea15700   CURL        :         CurlSocketInfo::set_action(CURL_POLL_NONE --> CURL_POLL_OUT) [0xea8ef30]
0x7f529ea15700   CURL        :       MultiHandle::timer_callback(): timeout set to 1 ms.
0x7f529ea15700   CURLTR      :   <continued> {1}) = 0

Unfortunately, this breaks defining DEBUG_CURLIO without using libcwd,
but that was unusable already anyway (even though it compiled).
2013-11-24 18:24:09 +01:00
Inusaito Sayori
44d1b4f1fb A start on the group's feature request to have indication of mute in friends list
We may need to trick the friends list into refreshing when someone is muted to complete this feature...
probably need mutelist callbacks if those exist
2013-11-22 20:21:47 -05:00
Inusaito Sayori
7d98cf1891 [LLIMMgr/LLIMPanel] Woops, only allow invites to Adhocs!! 2013-11-22 18:41:34 -05:00
Inusaito Sayori
2d66022727 [LLIMMgr/LLIMPanel] Clean up the now redundant usage of isInviteAllowed() 2013-11-22 18:18:05 -05:00
Inusaito Sayori
15fefc231b [LLIMMgr/LLIMPanel] isInviteAllowed should return based on mSessionType, not on mDialog. 2013-11-22 18:09:13 -05:00
Inusaito Sayori
53969d05d8 [LLIMMgr/LLIMPanel] Always allow Drag and Drop sharing of any inventory regardless of mDialog so long as mSessionType is P2P_SESSION 2013-11-22 18:00:58 -05:00
Inusaito Sayori
209e64b136 Merge llfloatertools.cpp with upstream to fix MATBUG-240
MATBUG-240: Unable to change media settings for an already applied media texture unless media texture is removed and reapplied.
2013-11-22 17:35:11 -05:00
Inusaito Sayori
f3f1727b49 Actually fix SV-1226
It happened because we filtered mFromName which started out as from_name, and inconsistently used the two after that...
This change switches to just using mFromName after that point..
SV-1226 #close Fixed it~
2013-11-22 00:49:47 -05:00
Inusaito Sayori
15dbce00ee Prevent any RLVa filtering of music information as mentioned in SV-1226 2013-11-21 23:09:13 -05:00
Aleric Inglewood
2a7b96fab2 Increase connect time outs for SSL/TLS connections to 30 seconds.
On (very) slow machines this might improve the experience.
This only has effect on Second Life, since that's currently the only
grid that uses https for capabilities (all of them, except GetMesh,
GetMesh2 and GetTexture).

When linking the viewer with libmemleak, which significantly slows
down calls to malloc (and calloc, realloc, new, memalign and so on)
and free (delete), I no longer could download my inventory.
With this patch this was solved. The reason was that completing
the SSL/TLS handshake took more than 10 seconds (15 to 20).
2013-11-21 19:47:25 +01:00
Aleric Inglewood
1aa0a9be67 Minor bug fix. 2013-11-21 01:28:34 +01:00
Aleric Inglewood
53e26d4909 Compile fix for -DDEBUG_CURLIO
Since that fakes the libcwd macros, this is needed to compile
the recent change that allows to only turn on debugging output
for certain statemachine objects when DEBUG_CURLIO is defined,
but libcwd is not used (CWDEBUG is undefined).
2013-11-21 01:28:16 +01:00
Aleric Inglewood
bdef8dc185 Merge remote-tracking branch 'singu/master' 2013-11-20 15:13:25 +01:00
Siana Gearz
9c29488044 If the text is too skinny to render, don't crash 2013-11-20 10:33:15 +01:00
Siana Gearz
060628397b Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2013-11-20 05:50:03 +01:00
Siana Gearz
f23dc157be Prevent accidental modification of vital stock grid 2013-11-20 05:49:43 +01:00
Shyotl
3715b7439d Doer fonts fast(er)! (better batching for font glyph rendering) 2013-11-19 19:40:29 -06:00
Siana Gearz
cde5b23353 Limit avatar physics to 20-40 simulation steps per second to avoid wonky integration 2013-11-20 02:22:16 +01:00
Siana Gearz
07736106b1 Suppress asserts in fallback font loading 2013-11-20 02:20:58 +01:00
Siana Gearz
01744730a1 Merge branch 'master' of https://github.com/AlericInglewood/SingularityViewer 2013-11-20 01:11:13 +01:00
Siana Gearz
c162b470b2 Merge branch 'master' of https://github.com/Shyotl/SingularityViewer 2013-11-20 01:09:10 +01:00
Shyotl
5d2511e39e More font cleanup and updating. 2013-11-19 17:56:27 -06:00
Aleric Inglewood
483b97a608 Merge remote-tracking branch 'singu/master' 2013-11-19 22:13:57 +01:00
Aleric Inglewood
ea0e25b92b Make entering a Login URI in the grid manager more robust.
Before, when anything but the exact correct Login URI was entered, the
user would either get no error, or a pop up saying "Cannot retrieve grid
info from server."

With this patch, that pop up includes what went wrong and stresses that
they check if they entered the correct Login URI and where to find it.

I was motivated to write this after looking at crash report 8405 where
a user who had downloaded Singularity for the very first time crashed
twice when entering things like "aviworlds" and " aviworlds.com:8002"
(not the space), and "http:aviworlds.com:8002" (missing '//').

Especially in the light of FS accepting Login URI without the 'http://',
a lot of grid websites (like that of aviworlds) might instruct users
to enter the url without http://. Ie, this user was told to enter
just "aviworlds.com:8002", and when that failed was instructed to
add 'http' in front of it...

Now the code accepts also really WEIRD things, but will never mess
up a good entry. For example, if you enter "pssshht:aviworlds.com:8002"
then that will work, as a side effect. The real objective however is
of course to let things work like: "aviworlds.com:8002  ",
"http:aviworlds.com:8002", " http:/aviworlds.com:8002", and to give
a usable error message when there is a typo in the hostname (Cannot
resolve hostname) or they forget to add a port number (404, or
connection refused), plus the text "Make sure you entered the correct
Login URI. An example of a Login URI is: \"http://cool.grid.com:8002/\",
this url can usually be found on the website of the grid."
2013-11-19 22:00:34 +01:00
Aleric Inglewood
06bebcc5c4 Bug fix for BlockingResponder.
Blocking http requests (code using responders derived from
BlockingResponder) *do* call getRaw() and getLLSD to get the body of
server error messages. It is therefore perfectly ok if mStatus !=
HTTP_OK.
2013-11-19 21:16:12 +01:00
Aleric Inglewood
63a6ed4f43 Fix floater xmls: tooltip must be tool_tip. 2013-11-19 20:26:55 +01:00
Latif Khalifa
26ca140e4b Fixed symbol generation on Mac with channel specific packages 2013-11-19 08:47:18 +01:00
Latif Khalifa
054d67669f Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-19 06:28:45 +01:00
Shyotl
503e5287cd Fix minor oversight that broke openal audio impl. 2013-11-18 23:27:29 -06:00
Latif Khalifa
7187ceb0ac Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-19 05:14:46 +01:00
Latif Khalifa
594eacb480 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-19 04:44:55 +01:00
Latif Khalifa
f21bec1ab9 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-11-19 04:44:47 +01:00
Latif Khalifa
e6977de12f Mac build changes to create specific channel installers 2013-11-19 04:19:48 +01:00
Latif Khalifa
c99f54367d Use viewer channel as the basis for installer file names 2013-11-19 00:50:06 +01:00
Latif Khalifa
c6ec03ab19 Re-enable generating tarballs when packaging on Linux 2013-11-19 00:52:59 +01:00
Latif Khalifa
cce3809a26 Autogenerate version numbers on Mac too 2013-11-19 00:28:05 +01:00
Latif Khalifa
7183797e05 Autogenerated versioned windows resource files 2013-11-19 00:12:34 +01:00
Aleric Inglewood
7b9f854c66 Fix for 'with active responder' llerrs crash.
This fixes at least one case (crash report 8407), which comes
down to not cleanly informing a responder of failure when the
request url is empty (or so badly formed that it isn't a valid
url). As a result, the statemachine would abort() without
informing the responder - which is bad, sort of.

The previous cases where the responder needed to be informed
of a failure, namely "statemachine timed_out()" and "bad_socket()"
when a socket suddenly becomes bad for unknown reason, have been
replaced with the more general 'aborted()' function, which must
be called before the statemachine calls abort(). Clearly this
has been done for all cases of abort() now, so that if the
llerrs fires again in the future then that would have to be
after the statemachine calls finish(), which is still as "impossible"
as it was - hence the llerrs is still there to make sure.

The reason that this seldom happened on SL, and more often on
opensim, even more often on home-brew test grids, seems plausible:
malformed urls happen more in those cases.

I also took the opportunity to improve the robustness of cases
where the curl error code is checked: it makes no sense to check
what curl gives as error code when an internal error occurred.
2013-11-18 18:16:26 +01:00
Shyotl
b9d2ad3132 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2013-11-18 10:38:39 -06:00
Shyotl
8aa4d0fd27 Removed fasttimer that was hurting perf a tiny bit. 2013-11-18 09:58:21 -06:00
Shyotl
030588caaf Underwater shadows. 2013-11-18 09:57:35 -06:00
Shyotl
be249ac8a1 Font update. Minor refactor, and removed some pointless code that was leaking. 2013-11-18 09:56:49 -06:00
Shyotl
2badc1c79c Initialize LLListener_OpenAL::mRolloffFactor just to be safe. 2013-11-18 09:55:15 -06:00
Siana Gearz
3b8fbbc827 Clean up shaders on package and no longer final-package by default on Linux 2013-11-18 07:45:25 +01:00
Siana Gearz
a5103a1fc1 Sprinkle some Intel GPU support on Linux 2013-11-18 04:22:21 +01:00
Siana Gearz
749d0eec28 Merge https://github.com/abaph/SingularityViewer
Brings in support for MESA accelerators.
2013-11-17 16:38:06 +01:00
Latif Khalifa
0af470b2a9 Merge branch 'master' of git://github.com/LightDrake/SingularityViewer 2013-11-17 12:45:32 +01:00
Latif Khalifa
97c505f941 Reset 'MotionResetsCamera' on camera reset 2013-11-17 12:45:14 +01:00
Latif Khalifa
c6ec2a531f Alow alt-camming and terrian parcel selection from farther away.
Thanks to Liru for finding the sport
2013-11-17 12:28:06 +01:00
Drake Arconis
3e2f1a8fd9 Changed singularity prebuilt cache dir to sg.install.cache 2013-11-16 14:28:25 -05:00
Drake Arconis
7fa5abd4d1 Added NVAPI support on windows 2013-11-16 14:01:09 -05:00
Drake Arconis
924908f2ad Imported new revoke anim perms code and refactored related bits 2013-11-15 19:51:21 -05:00
Aleric Inglewood
bddb1ba48c Merge remote-tracking branch 'singu/master' 2013-11-15 18:00:49 +01:00
Aleric Inglewood
a8cded0cf6 Allow calling LLNotificationsUtil::add from any thread.
This makes LLStringUtil thread-safe by removing a rather unnecessary
LLFastTimer from LLStringUtil::format.

Same thing for LLTrans::getString and LLTrans::findString, where
even a comment stated that the author wasn't interested in measuring
cpu time at all. In this case I added some code back to make sure
that we're not calling LLTrans::getString() in an inner loop, which
was the reason that the LLFastTimer was added.

Made one string static to avoid 45000 look ups during login, which
kinda triggered the above test.

Finally, LLNotificationsUtil::add is made thread-safe by making
LLNotificationChannelBase::mItems thread-safe and defering a call
to LLNotifications::updateItem to the main thread when called
from another thread (using a little statemachine).
2013-11-15 17:52:52 +01:00
Latif Khalifa
14c43aa9a2 Fixed camera pan 2013-11-14 20:36:07 +01:00
Latif Khalifa
f273d3ff59 Singularity 1.8.4 2013-11-14 12:51:41 +01:00
Latif Khalifa
1bd78c5398 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-14 02:51:36 +01:00
Shyotl
fc4f0eaa82 Particle glow tweak excluded more faces from glow than intended. 2013-11-13 19:39:14 -06:00
Salvatore La Bua
8ad3b87c0e Fix a render issue with Hightlight Transparent
The smoke texture is currently not applied to transparent objects.
This commit tweaks the red alpha overlay as a workaround for that.
2013-11-13 21:16:58 +01:00
Latif Khalifa
133dffb326 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-13 20:12:25 +01:00
Shyotl
01e27eac76 Kill a tiny bit of dead code. 2013-11-13 13:06:47 -06:00
Shyotl
d4a3cb168c Altered the deferred alpha fragment shader to handle alphamasking when drawing avatar hair/skirts. (Special handling for these two seems weird, considering all other mesh parts are also alphamasked.. It also prevents skirts from casting shadows. Future alteration may be desired.) 2013-11-13 12:59:21 -06:00
Shyotl
f03376cd2a Remove hack for nvidia on osx. 2013-11-13 12:53:43 -06:00
Inusaito Sayori
6bd9649277 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-11-13 13:03:27 -05:00
Damian Zhaoying
6e05e49a45 update spanish translations in strings.xml and floater_model_preview.xml files 2013-11-13 12:56:38 -03:00
Latif Khalifa
fcf061d06b Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-13 13:01:21 +01:00
Latif Khalifa
a3b232f389 Merge remote-tracking branch 'lightdrake/master' 2013-11-13 12:51:31 +01:00
Shyotl
3416b837dc Added setting 'SHAlwaysSoftenShadows' to soften shadows when ssao isn't enabled. Removed a couple dead settings. 2013-11-13 02:31:55 -06:00
Shyotl
ba84bf1461 Avoid needless second pass on non-glow particles. 2013-11-13 02:27:01 -06:00
Shyotl
3ed249cba5 Retain cubemap reflection on shiny faces while in shadowed, but don't bloom the sun reflection. 2013-11-13 01:35:31 -06:00
Shyotl
584e5176a4 Err closer to LL regarding shadows, however also fixed alpha face shadows to look like all other shadows. 2013-11-13 01:30:45 -06:00
Drake Arconis
e5fcd54c92 Add option to disable scroll offset changing modifier 2013-11-12 23:47:28 -05:00
Damian Zhaoying
899a21ca24 Merge remote-tracking branch 'Liru/master' 2013-11-12 16:09:05 -03:00
Inusaito Sayori
29a07f4b5c Actually fix the french translations (codepage borks yay) Thanks Nomade 2013-11-12 03:03:20 -05:00
Inusaito Sayori
2e7d80e9ba Let shift-left-clicking in the middle of subpiemenus move back to the parent piemenu! 2013-11-12 02:02:16 -05:00
Inusaito Sayori
d678735cf6 Code cleanup in pie menu
Cleaned up hover logic and slice from x and y code duplication
(Best viewed without space changes)
2013-11-12 02:00:21 -05:00
Latif Khalifa
6b5875c008 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-12 02:00:53 +01:00
Shyotl
203ae9dfa3 Fix uninitialized variable warning in alphaF.glsl. Also made USE_VERTEX_COLOR actually work if FOR_IMPOSTOR is set. 2013-11-11 18:56:16 -06:00
Latif Khalifa
00b57dd40e Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-12 01:01:10 +01:00
Latif Khalifa
f10402cbdb Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-11-12 01:01:01 +01:00
Shyotl
32ecf444bd Attempt to resolve shader compilation errors on osx since it's particularly picky. 2013-11-11 17:48:54 -06:00
Latif Khalifa
3430a31e9d Fixed fetching inventory when UseHTTPInventory is disabled 2013-11-11 11:50:07 +01:00
Inusaito Sayori
943f77eed0 Fix the UI Warnings in LLFloaterModelPreview
Adds the green check and red x icons
Adds Price Breakdown text to the mesh upload floater, quite useful!

Removes useless ui element references in only code
Comments out ui element references in only code that we don't have and don't have a clear place
2013-11-10 19:12:20 -05:00
Damian Zhaoying
801723813a update spanish traslation to reflect new materials feature options 2013-11-10 17:39:51 -03:00
Inusaito Sayori
69f2203d11 The rest of the french updates from Nomade Zhao 2013-11-10 13:05:58 -05:00
Latif Khalifa
7879509727 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-10 11:14:08 +01:00
Latif Khalifa
c6a7ae51e6 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-11-10 11:13:55 +01:00
Inusaito Sayori
91ed289a93 [Warnings] Fix signed/unsigned mismatch in llpartdata.cpp 2013-11-10 02:51:30 -05:00
Inusaito Sayori
be7c33e3c7 [LLScrollColumnHeader] Fix the ImageOverlay icons being overwritten every draw and thus destroying our image_overlay parameter!
Seriously, whose idea was that?
Ignore space changes and this will be a lot easier for all of us.
2013-11-10 02:49:10 -05:00
Inusaito Sayori
a510af9480 [LLScrollColumnHeader] Fix icons disappearing in certain states, such as click. 2013-11-10 02:46:23 -05:00
Shyotl
297cd58295 Revert upstream change to particle index accounting. (Fixes flicker issues) 2013-11-09 22:23:48 -06:00
Aleric Inglewood
5f9c6f1b08 AIAlert fixup. 2013-11-09 15:43:58 +01:00
Shyotl
0d1c98b5f7 Fix shadow dithering. It's still pretty ugly tho, but looks okay if ssao is enabled. May add random kern in the future. 2013-11-08 02:03:21 -06:00
Aleric Inglewood
a7e72ceb32 AIFile bug fixes.
Compare with errno instead of rc.
Make sure errno is preserved.
2013-11-07 18:20:49 +01:00
Latif Khalifa
c629d2625c Fixed Mac build 2013-11-07 04:35:39 +01:00
Latif Khalifa
27322c07db Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-11-07 02:01:35 +01:00
Aleric Inglewood
caa82cf5e4 Workaround for window min/max macros 2013-11-07 02:00:24 +01:00
Aleric Inglewood
ee1ca0ed99 Compile fixes for windows(?) 2013-11-07 01:44:57 +01:00
Latif Khalifa
a7a2b0c227 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-11-07 01:07:21 +01:00
Latif Khalifa
1ab5c6a32a Merge branch 'master' of git://github.com/LightDrake/SingularityViewer 2013-11-07 01:07:14 +01:00
Latif Khalifa
2234e95d5c Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-11-07 01:06:53 +01:00
Inusaito Sayori
511b0cfb9c ContextMenu Support!
LLContextMenu functionality pulled out of LLPieMenu, PieMenu is now derived from LLContextMenu
- The more attribute boolean of pie_menu element determines whether or not to have an actual submenu if it's not a pie, defaults to false which means actual submenu..
-- in the future we may want to have more more="true" depending on feedback
- Pie menu labels now dynamically get " >" appended to them (avoids stupid looking context menus)
- Positioning logic combined in part, mostly conditional still, in the future we could probably combine it more.
- handleHoverOver function combines common functionality between context and pies given an item and hover mouse coords.

LiruUseContextMenus debug setting determines which to use, default is pie, of course
- Context(/Pie) Menus are rebuilt when the setting changes value
-- this is safe at any point because all startup states have been accounted for
- "Use context menus instead of pie menus" added to System->General preferences (it's close to the bottom)
2013-11-06 18:47:02 -05:00
Inusaito Sayori
f41c4dd273 Don't open disabled submenus! 2013-11-06 17:44:11 -05:00
Inusaito Sayori
cb0cc571ee Mats UI.
Includes Chalice Yao's pause agent on attachment selection in LLSelectMgr::updateSelectionCenter()
Includes some of Cinder Roxley's enhancements to the build floater for materials (flip buttons, sync materials, consistent control hiding)
Includes Ansariel Hiller's fix for FIRE-8298 [BUG-869] [MAINT-1961], since this updates lltexturectrl.* to have related behaviors.
Switches from using MIN_MANHATTAN_DIST for threshold in LLToolDragAndDrop to using the existing DragAndDropDistanceThreshold debug, like upstream.

Translators:
panel_tools_texture.xml should now be translated, floater_tools.xml should have the old panel removed.
strings.xml now has "use_texture" string.
notifications.xml Now has "LivePreviewUnavailable" alert. (don't forget to translate the ignoretext)
2013-11-06 17:39:04 -05:00
Inusaito Sayori
06186e6c7e [VarRegions] Pseudosupport for region_size_y. 2013-11-06 15:53:15 -05:00
Inusaito Sayori
659874dce0 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-06 01:10:47 -05:00
Shyotl
322ceceb60 Added shaders needed to display texture 'edit' overlay using the specular/normalmap texcoords. 2013-11-05 23:51:09 -06:00
Aleric Inglewood
254396596c Merge remote-tracking branch 'singu/master' 2013-11-05 22:40:08 +01:00
Aleric Inglewood
c516a71804 Move AIAlert* into namespace AIAlert and rename classes.
Instead of having several AI* classes, it turned out to be easier to
have a namespace: this allows me to define the classes in llcommon but
add (new) 'add' and 'add_modal' functions to 'AIAlert' in llui.
This is needed to avoid a collision with the 'add' functions in
LLNotificationsUtil.

The new add/add_modal makes it a lot easier to just show a caught
alert, prepending or appending new text: it turns out that that is
way more common then a re-throw.

Adjusted code as appropriate.
2013-11-05 22:30:02 +01:00
Aleric Inglewood
8ab9039ff6 Use " and ' instead of &quot; and &apos; for new msgs in strings.xml.
Since it works... this might actually be better readable and therefore
easier to work with for the translators.
2013-11-05 18:10:05 +01:00
Aleric Inglewood
b5b51bd73b Typo fix in example code. 2013-11-05 15:11:18 +01:00
Latif Khalifa
d8db37f3fb Simplify tag decoding,
Disable showing other's tags by default as it appears broken in most viewers
2013-11-05 07:25:11 +01:00
Inusaito Sayori
5a2ec28ddf Refactor panel_tools_texture.xml file in preparation to merge (nothing changed yet)
Pulled out defaulted/dead attributes, switched to v3 markup stylings.  Merged in some norspec comments.
2013-11-04 23:00:15 -05:00
Inusaito Sayori
31e2fdc16e Allow v3 xui alternative naming of combo_item as combo_box.item 2013-11-04 22:56:36 -05:00
Inusaito Sayori
f935453859 Allow v3 xui style strings for anything panel derived. <panel.string/> 2013-11-04 22:54:44 -05:00
Aleric Inglewood
1a9cf9b013 Bug fix for 54b43f1ad7
Initialize mLastSimAccess.
2013-11-05 03:55:40 +01:00
Aleric Inglewood
2453c13e11 Add AIXMLLindenGenepool - redo of archetype export/import using AIXML*.
In order to remove code duplication, and as prove of concept,
I redid the linden_genepool archetype export and import (from the Edit
Appearance Floater), using AIXML and AIAlert.

The import/export code did shrink significantly, and became a lot
simpler. Although a new file pair (aixmllindengenepool.{cpp,h}) is
added to define the (de)serialization of the linden_genepool XML format,
that code is now centralized in one place, and still a lot simpler.

As a bonus however, every possible error is now semi-automatically
reported to the user with all details that might help to overcome
the problem, like file names and system errors.
2013-11-05 03:01:49 +01:00
Aleric Inglewood
d174b7fcf8 Add AIXMLRootElement, AIXMLElement, AIXMLParser and AIXMLElementParser
The AIXML* classes provide an Object Oriented way to serialize objects
to and from an XML file. Documentation is added at the top of aixml.cpp

These classes will be used by AIMultiGrid.
2013-11-05 03:01:48 +01:00
Aleric Inglewood
d549e549d8 Fix xml parser.
This fixes quoted strings, like <tag>"Hello \"World\""</tag>,
which otherwise might not be processed correctly because
the XML_CharacterDataHandler isn't guaranteed to be called
exactly once per element. It certainly isn't when a string
contains entities, ie: <tag>"&apos;Hello \"World\"&apos;"</tag>
certainly fails to be unescaped with the old code.
Moreover, the old unescape code things that a singly quote
is actually a quoted string (not noting that begin and end
quote are the same) and destructs all &quot; entities; also
fixed with this commit.
2013-11-05 03:01:47 +01:00
Aleric Inglewood
78673e4a94 Add AIFile - LLFile but throws AIAlertCode exceptions on error.
The code is the current errno.
2013-11-05 03:01:47 +01:00
Aleric Inglewood
193010e947 Add THROW_[MF]ALERT[EC] (AIArgs, AIAlert, AIAlertCode, AIAlertPrefix, AIAlertLine)
A system to throw errors that allow for easy error reporting to the user
by showing a translated pop-up alert box with the error message.

The messages use strings.xml for translation and allow the usual
replacement args (ie [FILE] is replaced with a filename).

The exceptions can be cascaded, by adding more (translated) text
when caught and then re-throwing the result.

Macros are being used to support adding a function name prefix
to a message of the current function that the exception is thrown
from.

The syntax is:

  <macro>(<line>);		to show 'line'
  <macro>(<alert>, <line>);	to append 'line' to a caught alert.
  <macro>(<line>, <alert>);	to prepend 'line' to a caught alert.

  where <macro> is one of:
  THROW_ALERT, THROW_MALERT, THROW_FALERT, THROW_FMALERT,
  THROW_ALERTE, THROW_MALERTE, THROW_FALERTE, THROW_FMALERTE, where
  M = modal, F = Function name.
  and where <line> is one of:

  <xmldesc>
  <xmldesc>, AIArgs<args>

  where <xmldesc> is a string literal that will be looked up
  in strings.xml, and <args> is:

  (<key>, <replacement>)[<args>]

  There are more variations of the macros to throw an arbitrary
  class (append _CLASS), include an int code (append C) or
  to store the current errno as code (append E).

  For example, THROW_MALERTC(code, ...), or THROW_FALERT_CLASS(Foobar, ...),
  where the ... is the same as for the macros above.

Documentation and example usage has been added to aialert.h.
2013-11-05 03:01:47 +01:00
Aleric Inglewood
b7d2683b76 Removed LLXMLNode::writeHeaderToFile
Isn't used. This header is written else where already,
and will be written from now on (also) by AIXML*, which
will be committed next.
2013-11-05 03:01:46 +01:00
Aleric Inglewood
2f53f7232b Minor LLMD5 extension and cleanup.
* Add LLMD5::clone(unsigned char const*), the inverse of LLMD5::raw_digest.
* Add LLMD5::clone(std::string const&), the inverse of LLMD5::hex_digest.
* Add LLMD5::isFinalized(), returns true if the object is finalized.
* Turn all binary operators into inline friends in the class.
* Fix operator<< to take a LLMD5 const& instead of a LLMD5&.

These changes are needed for / used by AIMultiGrid.
2013-11-05 03:01:46 +01:00
Aleric Inglewood
b424d0232b Make #includes in llcommon header files more complete.
These includes are needed. The current code includes them
in .cpp files *before* including these include files, but
that is not very clean, and not useful.

Actually including what a header file needs makes it more
clear what it drags in, it doesn't drag in more then before.
It also allows to include these headers without having to
includes needed for the included header file in a specific
order, in every .cpp file.
2013-11-05 03:01:46 +01:00
Aleric Inglewood
54b43f1ad7 Cache the lookup of the sim access level.
Being part of the state line, it is called every frame, causing a
translation lookup every frame.
2013-11-05 03:01:46 +01:00
Latif Khalifa
7ffb751ead In preparation to release, change defalt for crash reporting to 'Ask' 2013-11-05 02:35:08 +01:00
Inusaito Sayori
7129d97ee5 panel_tools_texture.xml splits off from floater_tools.xml (No real changes here, but this change will make life so nice for me) 2013-11-04 17:49:29 -05:00
Inusaito Sayori
ec55c53b62 French menu gets Motion Resets Camera courtesy of Nomade (more translation on the way) 2013-11-04 17:10:42 -05:00
Drake Arconis
e1356b7aaf Fix slight breakage in the osx cmake 2013-11-03 23:00:56 -05:00
Latif Khalifa
0cbaa752a6 At the request of LL, append more info to channel string sent to the login server
Send versio number bare, without channel name, as V3 does
2013-11-04 04:04:39 +01:00
Inusaito Sayori
2f80012ccd Feature Request: If EditLinkedParts is on, Copy Key should copy keys of any selected prim(s) 2013-11-03 20:51:48 -05:00
Drake Arconis
1553a90ebb Merged master 2013-11-03 20:15:41 -05:00
Latif Khalifa
7fe411cd85 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-11-03 21:48:21 +01:00
Inusaito Sayori
083aaffec7 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2013-11-03 15:28:01 -05:00
Andros Baphomet
997fdebb9f Re-fix shader compilation errors 2013-11-03 13:12:27 -05:00
Andros Baphomet
fe0a761ce6 Merge remote-tracking branch 'upstream/master'
Conflicts:
	indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
	indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyF.glsl
	indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
	indra/newview/app_settings/shaders/class1/deferred/giF.glsl
	indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
	indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
	indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
	indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
	indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
	indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
	indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
	indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
2013-11-03 12:17:50 -05:00
Latif Khalifa
232b1cf28c Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-03 04:56:31 +01:00
Shyotl
6bbb24b974 Revert occlusion changes to try and pinpoint flicker issue. 2013-11-02 22:43:11 -05:00
Shyotl
827bbc9b89 Fix up a few glowies. 2013-11-02 19:15:28 -05:00
Latif Khalifa
822b728adb Only build Quicktime on 32 bit Windows
Helps address issue 1180
2013-11-03 00:32:01 +01:00
Latif Khalifa
8ed527af24 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-02 12:46:16 +01:00
Shyotl
77eb928380 Add LLGLManager::mIsMobileGF 2013-11-02 03:33:21 -05:00
Shyotl
378dd14ade Return to our nice ssao. 2013-11-02 03:29:32 -05:00
Shyotl
e5d71560e8 Fix fullbright stuff in deferred. Have to re-assess old glow occlusion bugfixes. 2013-11-02 02:38:23 -05:00
Latif Khalifa
824f23082b Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-11-02 07:25:36 +01:00
Shyotl
af8f8bb040 Mats. 2013-11-02 01:20:05 -05:00
Inusaito Sayori
23e9eabedb These new icons need tooltips 2013-11-01 17:57:52 -04:00
Latif Khalifa
b9c487a0c7 Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer 2013-11-01 22:50:22 +01:00
Inusaito Sayori
96e8f37c81 The rest of some touchups to wlf xml for nicer alignment of elements 2013-11-01 17:43:32 -04:00
Inusaito Sayori
0fc9d540bf Feature Request: Add Camera preset switching functionality (part of quicksettings)
Hitting Escape will reset to the normal Back preset
Adds new Cam_Preset_*_(On|Off).png textures, these should probably be reskinned, any volunteers?
2013-11-01 17:35:12 -04:00
Latif Khalifa
1f587d1ad1 Don't crash when trying to export linked parts
Fixes issue #1176
2013-11-01 22:34:55 +01:00
Inusaito Sayori
2d421a27e1 Let Ctrl/Shift + scrollwheel changing the camera/focus offsets affect the current preset's setting, not the back preset. 2013-11-01 16:56:55 -04:00
Inusaito Sayori
3934e0c9d3 Fix Issue 1163: Mouselook zoom (silly control group confusion) 2013-11-01 11:18:12 -04:00
Inusaito Sayori
ba1a29aae2 French Translation updates! Provided by Nomade Zhao 2013-11-01 02:56:21 -04:00
Aleric Inglewood
66a43ea537 Make global strerr() functions in llfile.cpp static member functions of LLFile.
This is the cleanest way to make them available to the rest of the
viewer as exported functions.

This change is needed for / use by AIMultiGrid.
2013-11-01 00:47:47 +01:00
Latif Khalifa
3d47d6f0dc Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-10-31 16:39:08 +01:00
Latif Khalifa
5583445c4d Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-31 16:38:40 +01:00
Aleric Inglewood
198840f839 Merge remote-tracking branch 'singu/master' 2013-10-31 05:45:25 +01:00
Latif Khalifa
78843493cc Syntax error fix 2013-10-31 03:31:12 +01:00
Aleric Inglewood
4aa3863f17 Merge remote-tracking branch 'singu/master' 2013-10-31 02:54:00 +01:00
Latif Khalifa
fcfffbb322 breakpad filter signature is different on windows compated to other platforms 2013-10-31 02:51:58 +01:00
Aleric Inglewood
e4b35a050d This makes more sense 2013-10-31 02:38:23 +01:00
Aleric Inglewood
8506a16dcb Merge remote-tracking branch 'singu/master' 2013-10-31 02:19:37 +01:00
Latif Khalifa
8dab5df746 Revert "Prevent LLFace::getGeometryVolume from overwriting vbos past their end."
This reverts commit 02067f973e.
2013-10-31 02:10:57 +01:00
Aleric Inglewood
811191cc7c Merge remote-tracking branch 'singu/master' 2013-10-30 21:57:39 +01:00
Aleric Inglewood
a9972bbf02 Suppress spammy warning (debug mode) 2013-10-30 20:32:22 +01:00
Latif Khalifa
51d5984afa Allocate half a megabyte that is freed just before minidump is written in the breakpad exception handler (Siana) 2013-10-30 19:10:17 +01:00
Latif Khalifa
f1eab3f2c5 Added architecture fields to the crash report 2013-10-30 19:09:05 +01:00
Latif Khalifa
139aad333a Looks like the older version of freetype has more sever issues.
Revert "Downgraded freetype to 2.3.9 to avoid font issues in the newer version"

This reverts commit 3284b77df2.
2013-10-30 18:43:17 +01:00
Andros Baphomet
c009866d86 Merge remote-tracking branch 'upstream/master' 2013-10-30 09:42:58 -04:00
Inusaito Sayori
73cb43e71f [Warnings] Fix ..\..\libhacd\hacdRaycastMesh.cpp(109): warning C4334: '<<' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
All the other involved types are of size_t, so static_cast 1 should work here.
2013-10-30 08:40:47 -04:00
Inusaito Sayori
b34a8db34a Modernize constructor of LLPreviewSound and cure crash signature 314 2013-10-30 08:37:20 -04:00
Damian Zhaoying
9be72ffb47 add spanish translation for prefs editor open log in windows option 2013-10-30 05:01:12 -03:00
Latif Khalifa
e6f70a0864 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-10-30 05:24:53 +01:00
Latif Khalifa
0933b8c43d Merge branch 'master' of https://github.com/MelanieT/SingularityViewer 2013-10-30 05:24:31 +01:00
Melanie
dfc965954e Remove attachments from the avatar's attached list before destroying them.
This should prevent the idle callbacks from accessing deleted attachments when looking for the CCS signature.
2013-10-29 22:26:58 +01:00
Latif Khalifa
02067f973e Prevent LLFace::getGeometryVolume from overwriting vbos past their end.
Possible fix for a crash in LLFace::getGeometryVolume()
Patch by NickyD/Firestorm
Crash signature: 14 and 20
2013-10-29 16:29:59 +01:00
Inusaito Sayori
ec4679c2a8 Fix the bug in which right click and then delete key would no longer work to delete objects
Navigation handling without a currently selected menu entry now only happens if key is up or down arrow
(mind the space changes)
2013-10-29 06:25:22 -04:00
Latif Khalifa
bdcc4189be Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-28 22:22:29 +01:00
Latif Khalifa
6b2628db44 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-10-28 22:22:22 +01:00
Latif Khalifa
664d5ab7fc Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-28 22:22:14 +01:00
Latif Khalifa
3284b77df2 Downgraded freetype to 2.3.9 to avoid font issues in the newer version 2013-10-28 22:21:07 +01:00
Latif Khalifa
2c1512dcbe Try finding FMOD Ex from registry intall path instead of hard coded location 2013-10-28 20:38:51 +01:00
Latif Khalifa
d8728f17ee Don't install 64 bit viewer on 32 bit OS 2013-10-28 20:23:35 +01:00
Latif Khalifa
603221fa48 Rebuilt glod using VC11 runtime 2013-10-28 19:26:17 +01:00
Inusaito Sayori
8670f45287 Fix mouselook crosshair drawing properly 2013-10-28 12:22:58 -04:00
Aleric Inglewood
aa5bc7bc25 Compile fix (libcwd) 2013-10-27 15:14:11 +01:00
Shyotl
5e8c7264da Fix artifacts from local stash merge. 2013-10-26 19:58:54 -05:00
Shyotl
6474568125 Call updateLOD when geom enters rigged state. 2013-10-26 19:09:43 -05:00
Shyotl
c1feb11d98 SH-3860. Cloud on first load issue. I'm sure the inaccessible jira has more details... 2013-10-26 18:56:39 -05:00
Shyotl
edf75a7174 setCommitOnReturn moved to from llbutton to lluictrl, cleanup some focus/key handling, avoid needless reshape calls. 2013-10-26 18:12:56 -05:00
Shyotl
30c5b9514e Let the rendertarget dictate internal format when resizing. 2013-10-26 18:09:34 -05:00
Shyotl
8e55d5499e Occlusion FBOs in deferred. 2013-10-26 18:07:56 -05:00
Shyotl
574022ed2c Made a few more fullbright face types occlude any glow behind them. 2013-10-26 18:01:36 -05:00
Shyotl
fc04f6b2e1 Added handling of GL_LUMINANCE pixel format to setManualImage. Was missing, although GL_LUMINANCE_ALPHA and GL_ALPHA were handled.
Also added missing file hurr.
2013-10-26 16:42:41 -05:00
Shyotl
7c7c64bde3 Minor upstream catchup. Added LLImageRaw::duplicate and no_copy parameter to LLImageRaw::LLImageRaw 2013-10-26 16:39:31 -05:00
Shyotl
2a432f73da Try and squelch some warnings regarding nightvision post shader on amd gpus. 2013-10-26 16:36:38 -05:00
Shyotl
f4863527aa Migrate ui scale/translation transform matrix stacks to LLAlignedArray. 2013-10-26 16:29:38 -05:00
Shyotl
8441bc80a4 Use LLStaticHashedString for faster uniform lookup. 2013-10-26 16:26:46 -05:00
Latif Khalifa
3979ad46f6 Separate out the cache directory for windows 64 2013-10-24 10:24:18 +02:00
Latif Khalifa
f4f4a39c01 Revert accidental removal of tcmalloc for 32 bit 2013-10-24 09:53:51 +02:00
Inusaito Sayori
fcce986266 Fix crash signature 256 2013-10-24 02:38:47 -04:00
Latif Khalifa
bcfe5232fb Merge branch 'windows64' of github.com:lkalif/SingularityViewer 2013-10-24 01:37:45 +02:00
Latif Khalifa
6708019a40 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-24 01:37:27 +02:00
Latif Khalifa
8565616c9d Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-24 01:37:19 +02:00
Latif Khalifa
938736b77f Win64: moved prebuilts to their permanent location 2013-10-24 01:25:45 +02:00
Shyotl
8e94c43a54 Fix a tp crash, and rework sound preloading slightly. 2013-10-23 17:23:20 -05:00
Inusaito Sayori
2b7e78cb3b That commit where I touch all the ascentprefs headers to make them conform to standard because it's been annoying me too long. 2013-10-23 17:47:33 -04:00
Inusaito Sayori
41303d0c9c Added "Log button opens external text editor (Windows only)" to Adv. Chat UI 2013-10-23 17:44:27 -04:00
Inusaito Sayori
4821d02051 Sometimes UI get this syncing feeling... but then everything seems fine. 2013-10-22 23:59:50 -04:00
Inusaito Sayori
fd42029a61 LLViewerWindow::handleKey(): Partial Fix for Issue 704: Keyboard shortcuts that should be passed to focused text fields are instead passed to selected prims when building
All edit keys now work, but Ctrl-A still doesn't work right, it must be grabbed by something else...
Adds LLFocusMgr::keyboardFocusHasAccelerators()
Adds virtual bool LLView::hasAccelerators() which returns false by default, overrides returning true placed in LLPreviewScript and LLPreviewNotecard
Shortcut keys added to notecard and script menu xmls

I'm thinking Qarl's Align tool handling may be receiving the Ctrl-A, we do seem to handle it differently than Exodus and Firestorm something modern could have broken the old way..
Come to think of it, those two features(Align and Select all prims) have a longstanding shortcut conflict in shortcuts... that's pretty nasty
2013-10-22 23:35:53 -04:00
Inusaito Sayori
574d0dab8d LLViewerWindow::handleKey(): Also handle keys for navigating through the displayed menu 2013-10-22 22:39:15 -04:00
Inusaito Sayori
1aee941cb6 LLViewerWindow::handleKey(): The work in progress bits of the sync, commented out 2013-10-22 09:19:38 -04:00
Inusaito Sayori
75ee99f4d5 LLViewerWindow::handleKey(): More harmlessness (sync)
Handle Tabbing through elements/floaters earlier.
Combine g*Menu*View handleKey() checks.
2013-10-22 09:08:41 -04:00
Inusaito Sayori
45cd0157ef LLViewerWindow::handleKey(): Code cleanup, bit of harmless sync
Moved Notifications Console into the advanced menu for login, so it's not shoved in as a hack, also a bit easier to access
2013-10-22 08:16:12 -04:00
Latif Khalifa
b800e877f9 More manifest gymnastics 2013-10-22 14:01:46 +02:00
Inusaito Sayori
9ec10cf246 Reworked LLToolCompGun so piemenu in mouselook plays nicer with zoom feature
Switches to exodus implementation
Includes relicensing of LLViewerCamera and LLToolComp
Maintains use of the old saved zoomed setting
2013-10-22 07:47:43 -04:00
Latif Khalifa
f545952136 Copy vc++ runtime libs, ignore size_t related warnings in the release build on win64 2013-10-22 11:25:32 +02:00
Latif Khalifa
f7cea9ac74 Added a way to identify 64 bit viewer in help -> about 2013-10-22 01:08:39 +02:00
Latif Khalifa
22db8f56f1 WIP[win64]: installer 2013-10-22 00:59:26 +02:00
Latif Khalifa
5cd7f05851 VS2012 related changes 2013-10-22 00:58:05 +02:00
Inusaito Sayori
dde18dfc0f Added a setting, LiruMouselookMenu, in case people don't want this feature. 2013-10-21 16:01:31 -04:00
Inusaito Sayori
d95e1800e1 Miscellaneous touchups
Fixes chatbar not handling ctrl+shift+arrow for word selection
lltoolmgr.cpp sync
Removes some pointless dead code from llviewertexteditor.cpp
2013-10-21 15:15:17 -04:00
Latif Khalifa
73e1a9ad78 WIP[win64]: we haz 64 bit webkit 2013-10-21 20:42:31 +02:00
Latif Khalifa
ea6adb7ae4 WIP[win64]: Sync this snipped with upstream to avoid texture indexing issues on Windows 64 2013-10-21 15:56:13 +02:00
Latif Khalifa
93e62a375c WIP[win64]: Rebuilt jpeglib, libpng, fixed loading of fmodex 2013-10-20 20:17:03 +02:00
Latif Khalifa
52c8c68d12 Reduce unbearable notification span when a plugin fails to load 2013-10-20 20:16:21 +02:00
Latif Khalifa
f9531904f5 WIP[win64]: Rebuilt jpeglib 2013-10-20 18:07:23 +02:00
Latif Khalifa
17c59f25f5 WIP[win64]: it builds, runs. webkit disabled in cmake for now 2013-10-20 17:03:48 +02:00
Latif Khalifa
6bae4a8d92 WIP: native win64 support 2013-10-20 12:37:35 +02:00
Inusaito Sayori
a33efc61a2 Feature request by StephiDreamEvermore Doune: Implement the convenience of being able to set view offsets while modifier keys are held during scroll in third person camera (Play with camera position/angle) 2013-10-19 20:54:02 -04:00
Inusaito Sayori
bd4e988397 Fix crash signature 222 2013-10-19 20:38:50 -04:00
Latif Khalifa
32bed5660a WIP win64 support 2013-10-19 23:05:53 +02:00
Latif Khalifa
d03a012a41 Added support for Visual Studio 2012 to develop.py and VSTool 2013-10-19 21:10:24 +02:00
Andros Baphomet
c264607207 Merge remote-tracking branch 'upstream/master' 2013-10-19 10:03:17 -04:00
Latif Khalifa
290b3d7106 Added Windows 64 support to repackage.sh 2013-10-19 15:29:08 +02:00
Inusaito Sayori
65d2775e2a Address jonhboy's Request: Round land impact instead of chopping off the decimal 2013-10-18 08:58:13 -04:00
Inusaito Sayori
ef3f78175c Satisfy Issue 699: Let Alt-right clicking in mouselook bring up pie menu
Also lltoolpie.cpp cleanup
2013-10-18 08:28:39 -04:00
Inusaito Sayori
7813ca03da LLFloaterInspect: bit of cleanup and allow sorting by creation date regardless of format 2013-10-18 08:21:57 -04:00
Inusaito Sayori
ec5aaa2af8 Modernize LLSelectMgr and fix leaks 2013-10-18 08:20:19 -04:00
Latif Khalifa
4feb1985b0 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-18 09:28:19 +02:00
Shyotl
addd687bf8 What is this? Where am I? Oh god. (Fix mistake in openal audioimpl) 2013-10-18 02:27:09 -05:00
Latif Khalifa
153f783922 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-18 08:51:51 +02:00
Shyotl
e2954fdbfd Fixed a bug where multisampled renderbuffers were being attached to non-FBO-enabled LLRenderTargets. 2013-10-18 01:43:32 -05:00
Shyotl
6fd73ee8bb Use GL_RED instead of GL_LUMINANCE for post-process noise texture. 2013-10-17 22:07:58 -05:00
Shyotl
19d7186508 Merge branch 'master' of git://github.com/siana/SingularityViewer.git 2013-10-17 21:08:30 -05:00
Latif Khalifa
c67f848b5c Merge branch 'master' of https://github.com/siana/SingularityViewer 2013-10-17 05:25:14 +02:00
Latif Khalifa
683bd9375f Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-17 05:25:02 +02:00
Shyotl
d18fa5ba42 Modified LLRenderTarget to handle sCurFBO and mPreviousFBO as pointers instead of arbiturary indexes. 2013-10-16 21:35:04 -05:00
Shyotl
03c4535648 Made further refinements to the audioengine:
-Looping syncslaves are stopped when there is no syncmaster.
-Hardened against edge cases regarding soundsource priority sorting.
-Fixed issue with syncmasters being marked as having looped when instead they just started playing (caused double-start of syncslaves).
-Updated some comments.
2013-10-16 21:32:08 -05:00
Aleric Inglewood
811f670199 AIStateMachine fixes.
Things (one debug code only) that don't happen currently,
but that I ran into with AIMultiGrid.
2013-10-16 00:30:28 +02:00
Inusaito Sayori
9dd995a287 Old dead code poofpoof 2013-10-15 17:21:54 -04:00
Aleric Inglewood
e40d622b8c Merge remote-tracking branch 'singu/master' 2013-10-15 23:07:34 +02:00
Aleric Inglewood
09708b6318 Added AICondition.
AICondition is like AIThreadSafeSimpleDC (it is derived from it),
and wraps some variable, protecting it with a builtin mutex.

While in a statemachine, one can call wait(condition) to make
the state machine go idle, and call condition.signal() to
wake it (or another) up again.

While normally a condition variable is used as follows:

condition.lock();
while (!whatwerewaitingfor)
{
  condition.wait();
}
// Here the condition is guaranteed to be true and we're
// still in the critical area of the mutex.
condition.unlock();

where the thread blocks in wait(), the statemachine actually
returns CPU to the thread (the AIEngine), so there is no
while loop involved, and our wait() doesn't even unlock
the mutex: that happens because the state machine returns:

condition_wat condition_w(condition);		// Lock condition.
if (!condition_w->whatwerewaitingfor())		// The variable(s) involved can only be accessed when condition is locked.
{
  wait(condition);				// Causes the state machine to go idle. This does not block.
  break;					// Leave scope (unlock condition) and return to the mainloop - but as idle state machine.
}
// Here the condition is guaranteed to be true and we're
// still in the critical area of the condition variable.

In this case, when condition.signal() is called, the thread
doesn't return from wait() with a locked mutex - but the
statemachine executes the same state again, and enters from
the top: locking the condition and doing the test again,
just like it would be when this was a while loop.
2013-10-15 22:30:53 +02:00
Aleric Inglewood
9114f04ef6 Add AIStateMachine::yield_if_not
This can be used to switch to a specific engine.
If the state machine is not running in the passed engine,
then it performs a yield to that engine, otherwise it keeps
running. Hence, putting this at the top of a state
guarantees that it runs in that engine.

For example:

    case FrontEnd_done:
    {
      // Unlock must be called by the same thread that locked it.
      if (yield_if_not(&gStateMachineThreadEngine))
      {
        break;
      }
      // Here we are running in gStateMachineThreadEngine.
    ...
2013-10-15 22:30:16 +02:00
Aleric Inglewood
9db6bc0557 Add AIStateMachine::mSMDebug
The patch is exclusively libcwd related.

Turns off output from statemachines to dc::statemachine by default.
Allows to turn on the debug output on a per statemachine basis (at
compile time).
2013-10-15 22:29:52 +02:00
Inusaito Sayori
9ea59b06d5 Fix crash signature 140 2013-10-15 08:58:32 -04:00
Latif Khalifa
897392f7e0 Don't log debug level info during shader loading 2013-10-15 07:23:23 +02:00
Latif Khalifa
7f52f78517 Breaking pad: restore 'Ask' preference for sending reports, cleanup remaining out-of-process bits 2013-10-15 07:20:57 +02:00
Latif Khalifa
bb7793283d Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-15 07:18:58 +02:00
Inusaito Sayori
43f25fed9b [Warnings] Fix linux32 warnings again (missed some spots) 2013-10-14 19:42:08 -04:00
Shyotl
4da896682d Fixed a couple obscure crashes. 2013-10-13 19:37:01 -05:00
Shyotl
6155e64086 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2013-10-13 19:27:03 -05:00
Shyotl
dbfd0cb7a6 Fixed a shutdown crash in LLAudioEngine::assetCallback, and fixed behavior when soundsource re-issues a sound whilst a sound is currently playing for same source. (LLAudioChannel[Impl]::play now re-starts sound if already playing) 2013-10-13 16:22:24 -05:00
Siana Gearz
19625ea6b8 MAINT-2968 disable client GL namegen, go spec 2013-10-13 17:07:45 +02:00
Andros Baphomet
e363aeb618 Merge remote-tracking branch 'upstream/master' 2013-10-12 21:23:07 -04:00
Latif Khalifa
aa077032b7 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-12 22:45:05 +02:00
Aleric Inglewood
1389bf76ce Bug fix. 2013-10-12 22:36:27 +02:00
Latif Khalifa
f096f181f3 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-12 22:09:37 +02:00
Aleric Inglewood
1df09dec35 Remove assert that 100% reproducible fired - stopping me from logging in.
I wanted to fix the problem, but:
[21:45] <Aleric> Talking about dense - you guys want this to be fixed or not???
[21:45] <lkalif> no
2013-10-12 21:48:51 +02:00
Aleric Inglewood
8e0e532ea8 Merge remote-tracking branch 'singu/master' 2013-10-12 21:48:32 +02:00
Shyotl
daa07d031c Fixed a couple of compilation errors when using GCC. 2013-10-12 12:13:58 -05:00
Andros Baphomet
ffb4abebdd Merge remote-tracking branch 'upstream/master' 2013-10-12 12:59:26 -04:00
Latif Khalifa
cb12a35102 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/llaudio/llaudioengine.cpp
2013-10-12 10:04:05 +02:00
Latif Khalifa
e8c286308d Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-12 10:01:52 +02:00
Shyotl
7fb05e6a48 Audio engine changes:
-Idle tick is now responsible for dispatching all pending sound sources, as such improves priority sorting.
-Added ui sound precache mechanisms (to fetch sounds without associated soundsources)
-Audio engine no logner available pre-login or upon disconnect, for simplicity.
-General cleanup to the audio engine/impl.
-Fixed some gAudiop calls that were lacking prerequisite null checks.
-Added 'isUpstreamOK' procuedure to LLAssetStorage to allow avoidance of making requests when there is no upstream host connection.
2013-10-12 02:49:11 -05:00
Andros Baphomet
12abca8954 Merge remote-tracking branch 'upstream/master' 2013-10-12 01:50:26 -04:00
Aleric Inglewood
3b2393dbda Merge remote-tracking branch 'singu/master' 2013-10-11 13:42:06 +02:00
Aleric Inglewood
0261eac2a4 Fix for crash report 1272 2013-10-11 13:35:32 +02:00
Latif Khalifa
69f273eb0e Don't crash if pay floater is closed before reply arrives from the server
Fix from upstream
Potentially fixes http://crash.singularityviewer.org/crashes.php?stacktrace=processPayPriceReply
2013-10-11 13:14:59 +02:00
Inusaito Sayori
477daff92f [Warnings] Fix linux32's "format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘size_t’" 2013-10-11 05:53:57 -04:00
Latif Khalifa
926e76adea Dump the whole login response to the log file only in the debug builds 2013-10-11 10:12:35 +02:00
Inusaito Sayori
9429b875aa Demote common "Splitting" warning to debugs 2013-10-11 04:06:38 -04:00
Inusaito Sayori
f268c26a3a [LLIMMgr/LLIMPanel] Fix the crashes in notifyParticularFriendObservers()
Forgot to write this line amidst everything else, my bad.
2013-10-11 03:25:32 -04:00
Inusaito Sayori
aa86730df2 [LLIMMgr/LLIMPanel] Fix race condition between name lookup and title setting 2013-10-11 00:45:23 -04:00
Inusaito Sayori
80bb529220 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-10-10 22:16:39 -04:00
Damian Zhaoying
7cc99ebf72 update spanish messages in IM floaters 2013-10-10 23:15:33 -03:00
Inusaito Sayori
be5727548b Fix a warning typo and a minor bug I thought I'd fixed long ago indicated by some getString warning spam 2013-10-10 20:25:15 -04:00
Inusaito Sayori
54c08b3ea0 Localize the new Silent Accept/Decline messages 2013-10-10 18:28:06 -04:00
Inusaito Sayori
8964cfd58b [LLIMMgr/LLIMPanel Revision] Compile Fixies
How did these even
2013-10-10 17:01:18 -04:00
Latif Khalifa
cf214e4f9e Silence compiler warnings 2013-10-10 22:07:43 +02:00
Latif Khalifa
2a830c3184 Merge branch 'master' of https://github.com/slabua/SingularityViewer 2013-10-10 21:58:25 +02:00
Latif Khalifa
c313d5fe28 Merge branch 'master' of https://github.com/AdeonWriter/SingularityViewer 2013-10-10 21:58:19 +02:00
Inusaito Sayori
390c097c6a Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-10-10 15:53:32 -04:00
Salvatore La Bua
ebc839d540 Rearrange silent keep/discard inventory offer buttons 2013-10-10 21:49:49 +02:00
Salvatore La Bua
20ee6cdb72 Add silent keep/discard inventory offer buttons
Adapted from Phoenix code
2013-10-10 20:21:46 +02:00
Inusaito Sayori
d503662b58 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer 2013-10-10 04:41:08 -04:00
Inusaito Sayori
91f6a4efa3 [OpenSim] Feature Request: Don't clamp max_import_scale to 240 on NonSL grids, and make max_import_scale start off based on the hippolimits' MaxPrimScale, not the SL-constant 2013-10-10 04:36:47 -04:00
Inusaito Sayori
13e25cfe6a Feature Request: Add MiniMapPrimMaxAltitudeDelta and MiniMapPrimMaxAltitudeDeltaOwn to debug settings for users to configure how much altitude difference prims can have to be shown on the minimap 2013-10-10 04:29:12 -04:00
Inusaito Sayori
3fad577f2b Fix spammy Texture WARNS to be DEBUGS as they should, also spellind fix 2013-10-10 04:22:48 -04:00
Inusaito Sayori
2f334b021f [LLIMMgr/LLIMPanel Revision] Two last things
Handle display of popped out IM floaters better
send_start_session_messages(): cut early if ids is empty, fallback on UDP if there is a region but there isn't ChatSessionRequest Cap
2013-10-10 04:21:19 -04:00
Inusaito Sayori
363fa450fb [LLIMMgr/LLIMPanel Revision] More Miscellaneous Code Cleanup 2013-10-10 04:18:08 -04:00
Inusaito Sayori
b049353178 [LLIMMgr/LLIMPanel Revision] Clean up construction of IM Floaters, so much redundant code!!
Removes mProfileButtonEnabled and lookupName()
2013-10-10 04:14:09 -04:00
Inusaito Sayori
0a874b0768 [LLIMMgr/LLIMPanel Revision] Don't let new messages ever change the active communications tab (perhaps fixes StockMaster's issue?) 2013-10-10 04:10:02 -04:00
Inusaito Sayori
a179f95057 [LLIMMgr/LLIMPanel Revision] Clean up ignored groups logic 2013-10-10 04:08:01 -04:00
Inusaito Sayori
402f4f7068 [LLIMMgr/LLIMPanel Revision] Feature Request: Friendship operations from IM
Also adds the toggle mute option, but this was deemed too risky and has been left commented out for future projects to decide for themselves on
2013-10-10 04:03:41 -04:00
Inusaito Sayori
42d9b425e9 [LLIMMgr/LLIMPanel Revision] Dynamic dropdown entries handling functions
Adds addDynamics(), removeDynamics(), rebuildDynamics()
2013-10-10 03:48:17 -04:00
Inusaito Sayori
d15ec04dba [LLIMMgr/LLIMPanel Revision] Missed function declaration for closeIfNotPinned in a past commit, it's here 2013-10-10 03:40:15 -04:00
Inusaito Sayori
0cc5484b60 [LLIMMgr/LLIMPanel Revision] Add convert_roleplay_text() to centralize roleplay chat preprocessing
Unifies CAPSLock /ME handling
Unifies AutoCloseOOC impls so they share full common functionality
Adds AutoCloseOOC functionality to do /me ((autocompleted out of character action))

Also, RP Mode now uses parentheses rather than square brackets, by popular demand
2013-10-10 03:35:54 -04:00
Inusaito Sayori
d04820507c [LLIMMgr/LLIMPanel Revision] LLFloaterIMPanel constructor combination and removal of LLFloaterIMPanel::init()
Also changes Session Label to Log Label because that's really what it is at this point
Also rearranges members in LLFloaterIMPanel, and war on BOOLs
Also removes mSessionInitialTargetIDs because it's no longer needed outside of the constructor
2013-10-10 03:26:51 -04:00
Inusaito Sayori
260723f2a4 [LLIMMgr/LLIMPanel Revision] Fix PinTalkViewOpen=false mechanics
If the user is holding a modifier key with enter, it bypasses the unpinned setting
If a chat is popped out, this setting now only minimizes that chat, not toggles the main communications floater.
LLIMPanel::closeIfNotPinned() now condenses the logic.

Also makes LLIMMgr::toggle() non-static and requiring no args.
2013-10-10 02:49:02 -04:00
Inusaito Sayori
9e312a3808 [LLIMMgr/LLIMPanel Revision] Cleanup of unused/useless classes, functions, members and xmls 2013-10-10 02:27:26 -04:00
Latif Khalifa
5f0b1ab05b Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-10-10 05:17:41 +02:00
Shyotl
3132d2b0d0 Avoid perpetual re-entry for LLOctreeNode::octree_pool_alloc::malloc if LL_USE_TCMALLOC is defined. 2013-10-09 22:16:19 -05:00
Latif Khalifa
c3226b25fe Fixed Windows build 2013-10-10 00:18:47 +02:00
Latif Khalifa
d98402b13f Merge branch 'master' of git://github.com/Shyotl/SingularityViewer
Conflicts:
	indra/newview/llvotree.h
2013-10-10 00:03:36 +02:00
Latif Khalifa
b2979ca3a4 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-10 00:01:56 +02:00
Shyotl
7a913af2c7 Use camera enums instead of magic numbers. 2013-10-09 16:09:09 -05:00
Shyotl
e324ffd9ad In render_disconnected_background don't bind a shader or flush unless a disconnect image is actually being drawn. 2013-10-09 16:05:15 -05:00
Shyotl
e96caa78a1 Removed a little bit of unnecessary code from pipeline.cpp 2013-10-09 15:45:33 -05:00
Shyotl
b6bf5545c9 Change lightfunc from GL_R8 to GL_R16F/R32F 2013-10-09 15:44:15 -05:00
Shyotl
f25eb07fab Unstaged changes cleanup. Further vectorization. Change in binormal/bitangent calculation. 2013-10-09 15:43:23 -05:00
Adeon Writer
9f6b89ff18 Don't shorten avatar skeleton while in mouselook 2013-10-08 18:17:51 -04:00
Damian Zhaoying
24463b7d04 update panel_login.xml and menu_minimap.xml files and fix labels in master language file menu-minimap.xml to make translations works 2013-10-08 17:49:52 -03:00
Aleric Inglewood
909be9e169 Add AITESTPLUGIN
Usage:

nc -l -p 61916
AITESTPLUGIN=1 LL_WRAPPER='gdb --args' ./singularity

Then paste into nc:

<llsd>
    <map>
        <key>class</key>
            <string>internal</string>
        <key>name</key>
            <string>load_plugin</string>
        <key>params</key>
            <map>
                <key>dir</key>
                    <string>/opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/viewer-linux-x86_64-debug/newview/packaged/bin/llplugin</string>
                <key>file</key>
                    <string>/opt/secondlife/viewers/singularity/SingularityViewer/linden/indra/viewer-linux-x86_64-debug/newview/packaged/bin/llplugin/libbasic_plugin_filepicker.so</string>
            </map>
    </map>
</llsd>

and press control-v control-shift-2

Where the path should match the library you want to load.
2013-10-08 15:34:22 +02:00
Drake Arconis
010723eea6 Merge branch 'master' of https://github.com/LightDrake/SingularityViewer 2013-10-07 23:24:04 -04:00
Drake Arconis
a4fa66655e Unbreak OSX Make File builds 2013-10-07 23:23:51 -04:00
Drake Arconis
610f7ac5de Fix a Clang error 2013-10-07 23:23:40 -04:00
Adeon Writer
be10c2d7fb Focus depth of field under cursor in flycam 2013-10-07 22:28:26 -04:00
Aleric Inglewood
e3ce473639 Compiler warning fix.
My guess is that this fixes the warning:

/singularity/singularity-master/indra/newview/llfloaterdirectory.cpp: In
function ‘void* createWebPanel(void*)’:
/singularity/singularity-master/indra/newview/llfloaterdirectory.cpp:167:
warning: ‘createWebPanel(void*)::LLPanelDirWeb’ declared with
greater visibility than the type of its field
‘createWebPanel(void*)::LLPanelDirWeb::<anonymous>’
/singularity/singularity-master/indra/newview/llfloaterdirectory.cpp:167:
warning: ‘createWebPanel(void*)::LLPanelDirWeb’ declared with
greater visibility than its base ‘LLPanelDirFind’

That I see in https://files.streamgrid.net/singularity/linux-i686.log
2013-10-08 02:06:28 +02:00
Drake Arconis
008eac5a8d Merge branch 'master' of https://github.com/LightDrake/SingularityViewer 2013-10-07 17:46:37 -04:00
Damian Zhaoying
08dd2f72ec Merge remote-tracking branch 'Liru/master' 2013-10-07 14:22:25 -03:00
Latif Khalifa
c7ff14f224 Address issue #1128 2013-10-07 17:06:14 +02:00
Latif Khalifa
942f4ce225 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-07 16:59:20 +02:00
Latif Khalifa
7aed929af5 Attempted fix in Linux build and Linux32 packaging 2013-10-07 15:11:54 +02:00
Inusaito Sayori
99f81daa99 Feature Request: Add a debug setting, LiruLegacyLogLaunch, to use the old, non-browser method to open chat logs. 2013-10-07 05:43:56 -04:00
Drake Arconis
a1751dcc1e Warning fix 2013-10-06 22:55:30 -04:00
Drake Arconis
817c01595f I really really hate you microsoft. More windows sdk cmake poke 2013-10-06 22:55:21 -04:00
Drake Arconis
128503fd7f Attempt to fix linking issues 2013-10-06 22:54:38 -04:00
Sean Devin
cf100fc36c Do not use pcre on linux64
Conflicts:
	indra/newview/viewer_manifest.py

Merged with a patch that I wrote.

The linux pcre prebuilts can also be removed from install.xml,
but for now leaving them there because the prebuilts are still
in use by the libcollada prebuilt (probably should just move
them into that git repository).
2013-10-06 21:56:11 +02:00
Aleric Inglewood
64513e7229 Fix boost upgrade for standalone 2013-10-06 19:42:58 +02:00
Aleric Inglewood
8262e899f8 Merge remote-tracking branch 'singu/master' 2013-10-06 17:11:58 +02:00
Latif Khalifa
a1c43e3539 Fixed mac build. How the heck did this get there? 2013-10-06 16:34:56 +02:00
Andros Baphomet
7ab20726e4 Merge remote-tracking branch 'upstream/master'
Conflicts:
	indra/llrender/llshadermgr.cpp (resolved)
2013-10-06 10:32:23 -04:00
Aleric Inglewood
f7614dced3 Fix possible problem with negative mQueuedCommands
mQueuedCommands was unsigned, but can become shortly negative.
Unfortunately this means I had to remove the assert that
keeps track of possible errors, but I believe that already
has been proven that it works anyway.

The reason it can become negative is because its meaning is
"Number of added ADD (request) commands minus number of REMOVE (request)
commands". Hence, it is incremented when an ADD command is added to the
queue and decremented when that ADD command is removed from the queue.
However, it is first decremented when a REMOVE command is added to the
queue and then incremented again when that REMOVE command is removed
again from the queue. Such a remove command is current extremely rare:
it only happens when curl fails to time out - and the backup timeout of
the statemachine fires after 10 minutes of a curl request being idle.
That should normally only happen if a request never reached curl of
course, and is queued in the curl thread, waiting to be added to curl,
aka: -0-0-1,{...} for 10 minutes...

Now that, in turn should be impossible (since the "don't count long poll
connections) unless the Curl* Debug Setting variables are changed to
wrong values.. but ok, can only guess here.
2013-10-06 15:27:40 +02:00
Aleric Inglewood
cfad646748 Removed left over debug output. 2013-10-06 11:54:11 +02:00
Latif Khalifa
85f4fa9000 Merge branch 'boost152' 2013-10-06 08:13:31 +02:00
Latif Khalifa
dd680f27d4 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-06 08:13:11 +02:00
Latif Khalifa
2c091a954f Breaking pad: try to send the correct log file 2013-10-06 08:12:17 +02:00
Latif Khalifa
26f4c4a773 Boost throws exceptions 2013-10-06 08:11:07 +02:00
Latif Khalifa
ee007f322b Rebuilt Collada with new boost from https://github.com/singularity-viewer/3p-colladadom/commits/singularity 2013-10-06 07:50:38 +02:00
Latif Khalifa
aece3c7069 Don't copy pcre on linux64 2013-10-06 07:49:38 +02:00
Latif Khalifa
9f0af64963 More boosted fun 2013-10-06 01:55:12 +02:00
Inusaito Sayori
337c0d9cbb [Warnings] Remove warning suppressions for colladadom
I have fixed the warnings internally, so this wraps up my work
But our colladadom source and our prebuilds must be updated with my changes before this change is tolerable
2013-10-05 19:02:17 -04:00
Inusaito Sayori
4423bef896 [Warnings] Reduce collada includes to bare minimum to lessen Mac warnings 2013-10-05 18:33:07 -04:00
Inusaito Sayori
23e72f3978 [Warnings] Fix signed/unsigned mismatches rather than disabling 4018 2013-10-05 18:23:13 -04:00
Andros Baphomet
f6861cd5ba Fix shader compilation/out-of-spec issues 2013-10-05 17:33:34 -04:00
Andros Baphomet
988009d84d Don't explicitly set LIBGL_DRIVERS_PATH by default; breaks autodetection 2013-10-05 17:32:42 -04:00
Latif Khalifa
200b812182 Link boost statically 2013-10-05 22:09:54 +02:00
Latif Khalifa
4118afc146 Boost upgrade to 1.52 2013-10-05 20:27:20 +02:00
Aleric Inglewood
034ff0a305 Fix google breakpad for standalone.
The normal usage is to include the src/ directory of google breakpad
in your application and then include client/ARCH/handler/exception_handler.h
where ARCH is windows, mac or linux.

However, Linden Lab for some reason packaged the breakpad prebuilt
with exception_handler.h installed in ../google_breakpad/exception_handler.h
where "../google_breakpad" is the 'root' of the include tree comparable
with 'src' in the source tree of google breakpad.

Hence, instead of including 'src' one now must include '../include/google_breakpad'
which was already done correctly for non-standable, but not for
standalone (BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR was set to '../include'
with the 'google_breakpad' and is subsequently never used: instead
BREAKPAD_INCLUDE_DIRECTORIES is used (which is set for non-standalone)).

Therefore one much not include "google_breakpad/exception_handler.h",
but just "exception_handler.h" or you rely on somehow the directory
*below* BREAKPAD_INCLUDE_DIRECTORIES to be part of the include path as
well.

Finally LL packages the prebuilt if another duplicate minidump_descriptor.h
in the include root. Also here including "minidump_descriptor.h" would
be better correct, but following the instructions by Google this time
we might as well include the original "client/linux/handler/minidump_descriptor.h".

My repo (http://github.com/AlericInglewood/3p-google-breakpad) doesn't
even put minidump_descriptor.h in the root anymore, only
exception_handler.h. The rest is an exact copy of the 'src' tree with
regard to the headers.

Tested to compile both standalone and non-standalone.
2013-10-05 19:44:37 +02:00
Inusaito Sayori
eeeca2197e Revert "Harden agains network packet overruns"
This reverts commit 6c1ea557b5.
2013-10-05 04:31:57 -04:00
Inusaito Sayori
16a8b92d84 [OpenSimExtras] Added callback setters to for the new chat ranges
Though they're not in use yet.. they should be in use soon, either way should exist.
2013-10-05 03:39:59 -04:00
Inusaito Sayori
de1a459bcb [OpenSimExtras] Variable chat ranges viewer awareness, thanks Diva Canto!! 2013-10-05 03:20:25 -04:00
Inusaito Sayori
7448ca1046 Bit of cleanup for simfeature handler 2013-10-05 03:04:58 -04:00
Inusaito Sayori
8f5337cc67 Tooltip for grids combo box to clarify its new uses for unfamiliar users 2013-10-04 21:01:02 -04:00
Inusaito Sayori
d7782383f1 Brokepad Mountain: Fix mac compiler warning by removing unused function and its unused static variable 2013-10-04 18:29:25 -04:00
Latif Khalifa
5f5943548b Merge branch 'master', remote-tracking branch 'origin' 2013-10-04 23:06:24 +02:00
Latif Khalifa
4cd3291bd1 Merge branch 'master' of https://github.com/slabua/SingularityViewer 2013-10-04 23:05:52 +02:00
Latif Khalifa
d595eb3314 Breaking pad: link SLPlugin.app with the exacption handler
Fixes loading of SLPlugin on OS X
2013-10-04 23:00:48 +02:00
Inusaito Sayori
f770cb1a29 There's no such thing as ATI Geforce... this seems to have been added because of VWR-29593, but there's no such thing... 2013-10-04 04:43:14 -04:00
Inusaito Sayori
36d658c4c4 Feature Request: Make Log viewing cross platform by opening in a browser window
INB4 Windows users express discomfort.
2013-10-03 19:59:11 -04:00
Inusaito Sayori
cfeb50ae4d Breaking pad: warning: 'OSStatus CarbonEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*)' defined but not used 2013-10-03 13:46:16 -04:00
Inusaito Sayori
2b61394234 Fix /singularity/singularity-master/indra/plugins/filepicker/llfilepicker.cpp:762:61: warning: multi-character character constant
OSTypes are four byte sequences, therefore we should use 'JP2 ' instead of 'JP2'
2013-10-03 13:20:47 -04:00
Inusaito Sayori
1c96fa09fd Fix a few signed unsigned mismatches 2013-10-03 12:41:10 -04:00
Damian Zhaoying
1c93ca6360 Merge remote-tracking branch 'Liru/master' 2013-10-03 12:44:11 -03:00
Salvatore La Bua
5183adbcaa Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-10-03 11:47:23 +02:00
Salvatore La Bua
6abffb2ce4 Merge branch 'master' of github.com:DamianZhaoying/SingularityViewer 2013-10-03 11:47:01 +02:00
Latif Khalifa
8bdc92c99b Breaking pad: don't add special pre-copy files to build dir 2013-10-03 07:53:43 +02:00
Latif Khalifa
8da3e86250 Don't copy files unless we need to extract the debug symbols 2013-10-03 07:19:14 +02:00
Inusaito Sayori
f3df986647 Merge branch 'master' of https://github.com/abaph/SingularityViewer 2013-10-03 00:53:44 -04:00
Latif Khalifa
2a8b424b85 Merge branch 'breakpad3' 2013-10-03 06:38:41 +02:00
Latif Khalifa
7e02a5825e Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-10-03 06:37:57 +02:00
Latif Khalifa
c49907e5a4 Breaking pad: typofix 2013-10-03 06:20:14 +02:00
Latif Khalifa
60cd95b31f Breaking pad: more cmake fun 2013-10-03 06:09:49 +02:00
Andros Baphomet
c39d66b547 Improved X log parser to handle VirtualGL systems, removed old X log parser 2013-10-02 21:35:17 -04:00
Inusaito Sayori
a5928f4dbf Chatbar as cmdline, return false to avoid chatting certain commands 2013-10-02 20:34:20 -04:00
Latif Khalifa
9d4b978474 Breaking pad: Linux symbol dumping 2013-10-03 02:18:53 +02:00
Latif Khalifa
3447e9bd78 Brealpad: fixed symbol extraction on Mac 2013-10-03 00:26:54 +02:00
Latif Khalifa
a27dad4db0 Breakpad: added symbol extraction to the build.
Add -DRELEASE_CRASH_REPORTING:BOOL=ON to enable symbol extraction
on build time. Viewer without this set won't sent crash
reports to the crash server
2013-10-02 18:23:19 +02:00
Latif Khalifa
ba1b482025 Also repackage bin folder 2013-10-02 17:49:57 +02:00
Andros Baphomet
f6f9e5b802 Rewrote X log parser in VRAM detection code 2013-10-02 00:17:45 -04:00
Damian Zhaoying
d57dcd2a9c Merge remote-tracking branch 'Liru/master' 2013-10-02 01:03:09 -03:00
Latif Khalifa
399a0038cb Breakpad: now working Mac OS X 2013-10-02 04:14:58 +02:00
Latif Khalifa
c8cb600ba6 Breakpad: workaround for boost crash on Linux 2013-10-02 02:59:40 +02:00
Inusaito Sayori
a415b34c28 Fix a crash noticed while working on the last commit, when asserts aren't always, we should return before using null pointers. 2013-10-01 20:02:45 -04:00
Inusaito Sayori
ffd32542cc [VarRegions] Prevent crashing on regions at the edge of reality itself (such as Null, Null)
Demotes "Asking for patch out of bounds" to llwarns to prevent crashies, guards against some seemingly potent cases.
2013-10-01 20:00:54 -04:00
Latif Khalifa
90e71db462 Breakpad: removed merge artifact, fixes Linux build 2013-10-02 01:26:27 +02:00
Latif Khalifa
b125ec8d51 Breakpad: untested update to linux/mac specific parts of llappviewer 2013-10-02 00:51:29 +02:00
Latif Khalifa
d20b7815df Check user pref for sending logs 2013-10-02 00:39:11 +02:00
Latif Khalifa
98d7721ab2 Breakpad: Commence nuclear bombardment of the unused stuff
Windows breakpad crash reports implemented and uploaded
TODO: llappviewer linux and mac port of breakpad3
2013-10-01 23:41:38 +02:00
Latif Khalifa
81fa147450 Breakpad: don't fork logger process on startup. Use singularity-debug as the dir for dumps 2013-10-01 21:47:12 +02:00
Aleric Inglewood
9f50b6942e Fix random crashes when opening HTTP debug console. 2013-10-01 18:49:53 +02:00
Latif Khalifa
c87f7b0576 Breakpad3: WIP, minidump files created
TODO: re-work sending crash logs
get rid of standalone loggers
2013-10-01 13:43:45 +02:00
Latif Khalifa
6c45bf0353 Breakpad3: Added linux64 prebuild thanks to Kokua 2013-10-01 06:18:08 +02:00
Latif Khalifa
428a3bafb8 Breakpad3: cmake and prebuilds 2013-10-01 06:04:17 +02:00
Salvatore La Bua
9233f873ef Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-10-01 03:39:00 +02:00
Salvatore La Bua
aa54d82c5a Fix a render issue with Hightlight Transparent
The smoke texture is currently not applied to transparent objects.
This commit tweaks the red alpha overlay as a workaround for that.
2013-10-01 03:33:49 +02:00
Latif Khalifa
bc64e3aa29 Don't display both username and display name if they're the same.
This is issue especially on Aurora based grids.
Patch by  Liru
2013-10-01 03:29:57 +02:00
Damian Zhaoying
db2fb32dd8 Merge remote-tracking branch 'Liru/master' 2013-09-30 21:42:46 -03:00
Damian Zhaoying
4f863689a9 update floater_tools.xml and other minor fixes 2013-09-30 21:40:37 -03:00
Salvatore La Bua
214ed0403d Add toggle for RenderAnimateTrees in Advanced > Rendering 2013-10-01 02:08:59 +02:00
Latif Khalifa
e4202c361b Don't skip transparent faces by default in Collada export 2013-09-30 23:35:51 +02:00
Latif Khalifa
b90512fea0 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-09-30 23:24:11 +02:00
Latif Khalifa
f7c19ed3fb Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-30 23:24:04 +02:00
Inusaito Sayori
77d52d0435 Correct git's var region merge botch, fixes dark streaks on terrain 2013-09-30 17:19:53 -04:00
Inusaito Sayori
2333a684a3 Feature Request: Allow typing login uris into the grids combo box on the login screen
Furthermore, users may now type in grid name, grid nick, or grid login uri into the box and it will resolve to an existing grid they've used before, or (for uris only) try to add the new grid with the data it provides.
Input will have trailing and leading spaces trimmed.

Thanks to Diva Canto for this brilliant request!
2013-09-30 17:18:41 -04:00
Salvatore La Bua
bed0ed73d9 Remove unused userdata fields from the MiniMap menu 2013-09-30 22:45:50 +02:00
Salvatore La Bua
c975339641 Fix copy/paste clumsiness in settings.xml 2013-09-30 22:36:08 +02:00
Salvatore La Bua
c0961e9760 Remove unnecessary listeners for the MiniMap
New class ToggleControl is used in place of the removed listeners.
Much cleaner code for the MiniMap chat rings.
Remove redundant debug setting: MiniMapChatRings.

-Thanks Liru for the advices.
2013-09-30 22:21:11 +02:00
Inusaito Sayori
705de655a9 Enable grids button portuguese translation 2013-09-30 14:42:02 -04:00
Aleric Inglewood
723f4963e0 Do not count long poll connections against CurlConcurrentConnectionsPerService
This is necessary for opensim mega regions that can have up to 16 long
poll connections for a single service, while upping the maximum number
of connections per service just for that is clearly nonsense.

I also changed that long poll connections do not "use" the "Other"
capability type (which shows that the debug info in the HTTP debug
console for the Other capability type turns grey when it only has event
poll connections). As a result additional connections become available
for textures, mesh and the inventory (the other capability types) on
opensim, which has all types on the same service, because now Other
does no longer constantly reserves a full share of the available
connections. This makes the actual number of connections used for
textures and mesh a lot more like it is on Second Life.
2013-09-30 17:39:17 +02:00
Salvatore La Bua
ddae988aa5 Minor change in class listing order in llnetmap.h 2013-09-30 12:27:33 +02:00
Inusaito Sayori
979d139af1 Address Issue 352: Ctrl-Backspace in editable text fields 2013-09-29 19:14:56 -04:00
Inusaito Sayori
ca84e68da0 Bug fix? Prevent squares showing up on windows by only using spaces in keywords.ini
There were, and may still be, squares showing up in some tooltips in script editor... this in effort to prevent them
2013-09-29 13:33:44 -04:00
Latif Khalifa
5817040956 Merge branch 'master' of https://github.com/slabua/SingularityViewer 2013-09-29 17:34:55 +02:00
Salvatore La Bua
8f9de319bf Use correct matrixMode to draw chat rings, thanks LightDrake 2013-09-29 17:31:17 +02:00
Inusaito Sayori
aa14bcc754 [VarRegions] Permanently guard against Issue 1125 sneaking back in, as best we can. 2013-09-29 11:14:57 -04:00
Inusaito Sayori
da0a092d42 [VarRegions] Fix Issue 1125: Chat Window Links open up browser 2013-09-29 11:14:00 -04:00
Aleric Inglewood
227c621dad Merge remote-tracking branch 'slb/master'
Conflicts:
	indra/newview/llnetmap.cpp
	indra/newview/llnetmap.h
	indra/newview/skins/default/xui/en-us/menu_mini_map.xml
2013-09-29 16:56:55 +02:00
Sean Devin
ffc44a7010 Implemented right click option on MiniMap to hide or show objects 2013-09-29 15:56:38 +02:00
Salvatore La Bua
af1480615f Add optional chat ranges rings on MiniMap
Ability to show Whisper, Chat and Shout range circles on the MiniMap.
Range values are at the moment hardcoded as [10, 20, 100].

Each ring is binded to the following Debug Settings:
Whisper ring:	MiniMapWhisperRing
Chat Ring:	MiniMapChatRing
Shout Ring:	MiniMapShoutRing

Each ring colour can be customised through the following Debug Settings:
Whisper ring:	MiniMapWhisperRingColor
Chat Ring:	MiniMapChatRingColor
Shout Ring:	MiniMapShoutRingColor

The following Debug Setting is used to enable/disable all the rings at once:
MiniMapChatRings
2013-09-29 14:53:51 +02:00
Salvatore La Bua
6b26561605 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-09-29 02:06:32 +02:00
Latif Khalifa
1e7f984ce6 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-29 01:34:00 +02:00
Aleric Inglewood
1ef90525b7 Add support for GetMesh2
Tested that it's actually being used - and it seems to download
everything at high speed. Certainly an improvement.

Textures are still *requested* in the wrong order though; for
example - baked textures are simply not requested for a long time -
while they are even downloaded from another service!
2013-09-29 01:00:30 +02:00
Salvatore La Bua
aa4bee448d Remove unnecessary CommitCallback 2013-09-29 00:01:11 +02:00
Aleric Inglewood
1c0f87d82f Let curl follow redirects by default.
Turns out that the only responders that want to get the redirect
status codes themselves are the ones that already had a
redirect_status_ok() exception.
2013-09-28 20:41:10 +02:00
Inusaito Sayori
af36d63975 Remove duplicate entries from message_prehash.h 2013-09-28 11:34:57 -04:00
Aleric Inglewood
243b499b95 Merge remote-tracking branch 'singu/master' 2013-09-28 16:52:37 +02:00
Latif Khalifa
b5ba5b8d3a Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-09-28 16:23:28 +02:00
Salvatore La Bua
b4cdd2c175 Enable Client tags on a new line by default
Change default value for SLBDisplayClientTagOnNewLine to 1
2013-09-28 16:18:52 +02:00
Salvatore La Bua
792cc12ebc Comment out an unused variable e_state_name[] in lltexturefetch.cpp 2013-09-28 05:38:09 +02:00
Salvatore La Bua
df7c60de35 Add option to show Client tags on a new line
The checkbox is available in Preferences > Vanity > Tags/Colors.
Debug Setting: SLBDisplayClientTagOnNewLine
2013-09-28 05:32:54 +02:00
Salvatore La Bua
afe0f7ef3d Revert "Trees shadow parameters use actual debug settings"
This reverts commit 3c5a0efb8d.
2013-09-28 05:15:45 +02:00
Inusaito Sayori
da38d4bc48 [VarRegions] Fix copy slurl on map to take the fmod of the x and y against the width of the region in question, instead of 256 2013-09-27 13:41:45 -04:00
Inusaito Sayori
fe29521298 [VarRegions] Made the radar aware that region width may not be 256 always anymore 2013-09-27 11:58:03 -04:00
Inusaito Sayori
4725db2d2f Merge branch 'VarRegion' of https://github.com/Lirusaito/SingularityViewer into aurora-sim
Merged cleanly:
	indra/llkeyframewalkmotion.cpp - 36e6946c96 - worked around a bug in Aurora walking motion
	indra/llrender/llimagegl.cpp - fa8e1f033b - An llerrs here becomes an llwarns, to avoid bothering the user with non power of two dimensioned images
	indra/newview/llmanip.cpp, indra/newview/llmanipscale.cpp - "Changed hardcoded 256 constants and such to width functions" - a50f0008b2
	indra/newview/llpatchvertexarray.cpp - fa8e1f033b - Support patches of non power of two width
	indra/newview/llworldmap.h - conflict

Conflicts:
	indra/llmessage/patch_code.cpp - My version cleaned up a bit of code duplication, so this was applied, within the new tags
	indra/llmessage/patch_code.h - b_large_patch in decode_patch_header defaults to false, indra/newview/llcloud.cpp patch removed.
	indra/llmessage/patch_dct.h - false positive
	indra/newview/llagent.cpp - false positive
	indra/newview/llfloaterregioninfo.cpp - nonsl wacky textures support meets the refactor.
	indra/newview/llfloaterworldmap.cpp - false positive
	indra/newview/llglsandbox.cpp - false positive
	indra/newview/llnetmap.cpp - small changes for type consistency brought into FS' patch, nothing important; also adds change to LLNetMap:draw removing getRegionWidthInMeters to keep using the constant REGION_WIDTH
	indra/newview/llpanelobject.cpp - Get the region width of the object we're editing for maximum pasted x/y coords
	indra/newview/llstartup.cpp - [Fixes old issues] My old patch did not fully use first_sim_size_x here, this has been fixed.  The unused first_sim_size_y has been removed.
	indra/newview/llsurface.cpp - rebuildWater isn't used, removed for now.  Styling conflicts otherwise.
	indra/newview/llsurfacepatch.cpp - remove FS patch that comments out code that isn't even in the modern source; cleaned up a mess of tags with more clear explanation, perhaps it can be expanded upon though.  Some styling conflicts.
	indra/newview/llviewermessage.cpp - Fix the problem? setRegionWidth by number.
	indra/newview/llviewerobject.cpp - false positive
	indra/newview/llviewerparcelmgr.cpp - just styling conflicts
	indra/newview/llviewerparcelmgr.h - false positive
	indra/newview/llviewerparceloverlay.cpp - false positive
	indra/newview/llviewerparceloverlay.h - false positive
	indra/newview/llviewerregion.cpp - cleaned up LLViewerRegion::getCompositionXY patches, they're more in the way than they're worth; removed DispatchOpenRegionSettings capability mention for now, it's not related to variable regions.  Also remove rebuildWater, it's not used right now.
	indra/newview/llvowater.cpp - false positive
	indra/newview/llwind.cpp - remove decode_patch_header patches for false, since we have a default; otherwise false positive.
	indra/newview/llworld.*
		- [Fixes old issues] Remove setRegionWidth by LLMessageSystem as the messages used are not always the same, the by number one remains of course.
		- Retained separation of connecting neighbors through the old method when the width is 256
		- updateLimits() would never have been merged in, we have an entirely different grid manager, therefore it's removed.
		- Fix the stupidity passed on over the years wherein a static constant variable would hold the same value as the first call to setLandFarClip..
	indra/newview/llworldmap.cpp - 36e6946c96 Aurora map workaround stuffs, parts removed; rework of LLWorldMap::simInfoFromHandle
	indra/newview/llworldmap.h - Cleaned up organization, avoid making members public, and fixed tagging
2013-09-27 09:51:39 -04:00
Latif Khalifa
d08c34cc2e Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-09-27 03:22:26 +02:00
Latif Khalifa
ad8ea07a7a Aurora var region support
Firestorm patch by Cinders
Adopted from Angstrom viewer with assistance of nhede Core
and Revolution Smythe.
2013-09-27 03:14:51 +02:00
Inusaito Sayori
2cc1658eda Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-09-26 04:39:55 -04:00
Inusaito Sayori
e58180a59e Revert "Revert OCD commit tick."
This reverts commit 7346931f7f.
2013-09-26 04:34:55 -04:00
Inusaito Sayori
0a67fa3520 Satisfy Issue 1115: Make clock on top status line toggleable
Click the clock to change from server time to local~
2013-09-26 04:34:17 -04:00
Latif Khalifa
6c1ea557b5 Harden agains network packet overruns
Patch by NickyD from Firestorm
2013-09-26 04:09:01 +02:00
Latif Khalifa
3066dcac58 Merge branch 'master' of https://github.com/slabua/SingularityViewer 2013-09-26 02:45:48 +02:00
Inusaito Sayori
34738593eb Allow species selection for plant creation
Fixes hardcoded "Random" string for translation of this new combobox.
2013-09-25 17:04:44 -04:00
Damian Zhaoying
0eba360416 update spanish language file floater_dae_export.xml 2013-09-25 13:30:03 -03:00
Damian Zhaoying
116a4048b7 Merge remote-tracking branch 'Liru/master' 2013-09-24 04:14:07 -03:00
Salvatore La Bua
2bc9b8a1b9 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-09-24 01:43:28 +02:00
Latif Khalifa
18859e44c7 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-09-24 01:39:58 +02:00
Shyotl
b473661cf4 ilu gcc (fix preprocessor macro typo that VS thought was dandy for some reason.) 2013-09-23 18:38:48 -05:00
Salvatore La Bua
dad4f4f9a0 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-09-24 01:20:35 +02:00
Latif Khalifa
7263b87e62 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-09-24 00:57:47 +02:00
Shyotl
3fcc92ccad FOLDERID_LocalAppData should have been FOLDERID_RoamingAppData 2013-09-23 17:55:32 -05:00
Latif Khalifa
c06c909700 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-24 00:26:35 +02:00
Shyotl
c47f6405d2 Texfetch/cache changes:
Added SEND_UDP_REQ and	WAIT_UDP_REQ fetch states.
Parse 'content-range' from headers.
Purge 'complete' textures from the cache if they lack 'end of codestream' marker.
Added boostlevel/category to textureview display.
More diagnostic output.
Discard handling tweaks/bugfixes from v3.
2013-09-23 17:19:44 -05:00
Shyotl
55f43c5fcd Missed a SHGetSpecialFolderPath call. 2013-09-23 16:16:18 -05:00
Salvatore La Bua
3c5a0efb8d Trees shadow parameters use actual debug settings
Use RenderDeferredTreeShadowOffset, RenderDeferredTreeShadowBias,
RenderDeferredSpotShadowOffset and RenderDeferredSpotShadowBias
in place of hard coded values.
2013-09-23 22:34:41 +02:00
Aleric Inglewood
c448908200 Merge remote-tracking branch 'singu/master' 2013-09-23 20:24:33 +02:00
Inusaito Sayori
13077bc132 Fix group search's copy uri button copying the link for a personal group always.. Thanks to Malakina Gummibaum for pointing this out~ 2013-09-23 14:07:14 -04:00
Aleric Inglewood
f0c7dadfa6 Fix crash when previewing an animation.
When uploading an animation, playing the to-be-uploaded
animation on ones own avatar while ground sitting would
crash the viewer.

This fixes that, and makes the avatar cleanly stand up first.
Rationale: the alternative is to make the user learn by
means of crashing, being frozen or just not seeing the right
animation that they have to stand before uploading an animation.
There is no reason not to automate that.
2013-09-23 20:05:56 +02:00
Latif Khalifa
b6dfea6e5f Merge branch 'master' of git://github.com/LightDrake/SingularityViewer 2013-09-23 01:56:29 +02:00
Aleric Inglewood
5df5074090 Merge remote-tracking branch 'singu/master' 2013-09-23 01:43:52 +02:00
Aleric Inglewood
e3939c3632 Avoid long viewer freezes when region doesn't have reverse DNS.
Some opensim servers might not have a reverse DNS, which causes
a stall of up to 5 seconds for each call. This means that
every time you up the parcel music stream (or any other media)
the viewer would freeze six times 5 seconds.. 30 seconds.

With this patch it only freeze once ;) (when you enter a region).
It already did that before (too), but after that opening the
parcel media doesn't freeze the viewer at all anymore.
2013-09-23 01:41:11 +02:00
Aleric Inglewood
12d3873aa7 Crash fix for empty media URL.
Apparently LLViewerMediaImpl::navigateInternal could be called with
an empty url. That lead to a curl request with an empty url, which
failed because that leads to an empty 'service' string, which is
not allowed.

Patched the code to ignore empty media urls and hardened AICurl
to deal with any remaining cases.
2013-09-22 23:25:40 +02:00
Salvatore La Bua
083d569e35 Reverted Objects LOD slider max value to 2 and fixed presets values for the Trees LOD slider according to the new maximum 2013-09-22 22:33:09 +02:00
Salvatore La Bua
da942d4968 Increased in Preferences > Graphics the maximum value for the Objects LOD slider from 2 to 4 and for the Trees LOD slider from 1 to 2 2013-09-22 19:13:21 +02:00
Drake Arconis
681f10d8b7 Make ubuntu cmake hack do yes up go now 2013-09-22 12:33:10 -04:00
Salvatore La Bua
4db8234da5 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-09-22 06:24:06 +02:00
Salvatore La Bua
da4196c246 Re-enabled RenderAnimateTrees. Fixes issue 1101: http://goo.gl/YIvqSY 2013-09-22 05:52:35 +02:00
Latif Khalifa
67142f3080 Merge branch 'master' of https://github.com/slabua/SingularityViewer 2013-09-22 02:04:52 +02:00
Salvatore La Bua
67720c6a6a Fixed position of ui element Show FPS to the bottom right corner 2013-09-22 01:14:47 +02:00
Salvatore La Bua
df6aa397f9 Added a menu toggle item at Advanced > UI > Show FPS to show fps as an ui element. The related Debug Setting is: SLBShowFPS 2013-09-22 00:11:54 +02:00
Latif Khalifa
791b64f74b Merge branch 'patch-1' of https://github.com/aragornarda/SingularityViewer 2013-09-21 18:37:55 +02:00
Latif Khalifa
f4f888c172 Potential fix for a crash on HG OpenSim teleports by Liru 2013-09-21 18:22:59 +02:00
Damian Zhaoying
68aa60595e update string.xml file for user status in panel avatar 2013-09-20 16:17:01 -03:00
Damian Zhaoying
2ec2b92bc5 Merge remote-tracking branch 'Liru/master' 2013-09-20 14:19:58 -03:00
Latif Khalifa
992d8e960c Copypasta typo fix. Spotted by Cinder Biscuits 2013-09-20 13:51:38 +02:00
Latif Khalifa
9f48485b9c Strip newline chars from the end of the log line string 2013-09-20 13:34:17 +02:00
Inusaito Sayori
e9ca27322b Run trim on input start locations, in case copy paste brought some spaces along for the ride 2013-09-19 23:40:14 -04:00
Inusaito Sayori
104099aed5 [Issue 1105] Fix Last Login row in groups not sorting properly
Updated llgroupmgr.cpp's formatDateString() from upstream
 -Corrected it to actually use ISO 8601 format.

Also fixes notices tab to use the new format parameter to sort properly.
2013-09-19 23:37:58 -04:00
Inusaito Sayori
892d224b9c [Issue 1105] Add Parameter "format" to scroll list cells to define how a date cell will format its displayed date
Defaults to use RFC1123 to maintain expected behavior
2013-09-19 23:29:36 -04:00
Latif Khalifa
ae38835959 Version 1.8.3 2013-09-18 06:55:30 +02:00
Damian Zhaoying
fb88ad737f Merge remote-tracking branch 'Liru/master' 2013-09-17 23:43:37 -03:00
Inusaito Sayori
a4c0cab6a0 Fix 1098 (caused by silly mistake in filepicker bit for windows) 2013-09-17 18:32:54 -04:00
Latif Khalifa
dd1cb4921f Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-17 21:41:58 +02:00
Aleric Inglewood
9ac7a139af Rewrite of LLLogChat::loadHistory.
Tested to work.
2013-09-17 21:41:49 +02:00
Damian Zhaoying
652e498cc5 added new floater_dae_export.xml translation file and other minor changes 2013-09-17 03:16:05 -03:00
Drake Arconis
eeeaaa3535 Translation poking for my last commit 2013-09-17 01:58:48 -04:00
Drake Arconis
08654cc859 Fixed profile floater not displaying custom account type strings from server 2013-09-17 01:31:54 -04:00
Damian Zhaoying
2f2d140be5 Merge remote-tracking branch 'Liru/master' 2013-09-17 00:30:42 -03:00
Latif Khalifa
3f1d05b839 Re-apply warning fix after the previous revert 2013-09-17 05:04:44 +02:00
Latif Khalifa
7346931f7f Revert OCD commit tick.
Revert "Appease VS2010 warning and make ui code more consistent with the modern standard in daeexport.cpp"

This reverts commit cb6dec62ec.
2013-09-17 04:59:25 +02:00
Inusaito Sayori
132574f53c Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-09-16 22:46:32 -04:00
Inusaito Sayori
37c2bb0a6e Merge branch 'master' of git://github.com/lkalif/SingularityViewer 2013-09-16 22:46:21 -04:00
Inusaito Sayori
9b33e592fa Fix log being read from the top, woops 2013-09-16 22:44:31 -04:00
Inusaito Sayori
69a6968775 Request: Add menu item separator between replace and remove. 2013-09-16 22:36:48 -04:00
Latif Khalifa
afec67e596 Kill a compiler warning 2013-09-17 01:48:39 +02:00
Latif Khalifa
97c8218463 Don't crash when chanelp returned is null 2013-09-17 01:48:11 +02:00
Inusaito Sayori
f73caef7a5 Fix log timestamp inconsistency when including seconds 2013-09-16 14:31:58 -04:00
Damian Zhaoying
d16e93f62f Merge remote-tracking branch 'Liru/master' 2013-09-16 13:28:04 -03:00
Inusaito Sayori
cb6dec62ec Appease VS2010 warning and make ui code more consistent with the modern standard in daeexport.cpp 2013-09-15 18:01:21 -04:00
Latif Khalifa
a2b2af6eb7 Don't pass std::string to llformat 2013-09-15 10:40:16 +02:00
Latif Khalifa
a5aedfb783 Typo fix 2013-09-15 10:29:52 +02:00
Latif Khalifa
b4697bf732 Made texture export on by default when exporting Collada. 2013-09-15 09:26:49 +02:00
Latif Khalifa
b2ae9feda0 Collada export, now with more awesome
* Added support for exporting textures
* Added support for applying texture parameters
* Added support for merging faces with same textures
* Added support for skipping transparent faces
2013-09-15 09:19:21 +02:00
Latif Khalifa
0de1e27470 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-15 09:14:23 +02:00
Inusaito Sayori
e5f2d5f76e Fix Save Preview As... for textures, now save as any type we can encode to!
Removes the previous method and condenses the menu entries back into one.
 - Translations have been updated except for German, German will need to update the translation for "Save Preview As..." since the name hasn't changed.
Adds FFSAVE_IMAGE to the filepicker enums
Crossplatformity:
 - The Windows version works nicely
 - The Linux version may not work or even compile but it should..
 - The Mac version hasn't been added, instead it will default to accept any(all filter), should the provided file extension be invalid a notification will display.
2013-09-14 21:21:36 -04:00
Inusaito Sayori
42f8875d69 Group chat seems to want script reset from object inventory, so here you go. 2013-09-14 21:07:01 -04:00
Inusaito Sayori
0d1c4def2d Feature Request: Add a debug setting to prevent double clicking on the world map resulting in a teleport
Adds DoubleClickTeleportMap to debug settings.
2013-09-14 20:59:12 -04:00
Inusaito Sayori
0b20babd35 Feature Request: Add a debug setting for how many lines of history to show when LogShowHistory
LogShowHistoryLines is the setting
This change cleans up some very C code in lllogchat.cpp
2013-09-14 20:55:19 -04:00
Inusaito Sayori
9b984d425d Feature Request: Add an option to show the grid name in title
LiruGridInTitle is the debug
2013-09-14 20:51:03 -04:00
Inusaito Sayori
461f6f6ade Since views cleanup their children, drop target's destructor doesn't need to. 2013-09-13 19:08:52 -04:00
Damian Zhaoying
701d8ba37b fix typo and update text for new option in avatar menu 2013-09-13 14:16:49 -03:00
Aleric Inglewood
dcbcc7ea3c Avoid compile error when using glh and boost at the same time.
Defining a macro in a header that doesn't have any namespace prefix
like GLH_ ugh. Very bad.

Changed the macro into an inline function inside namespace glh.
2013-09-13 17:22:56 +02:00
Inusaito Sayori
a0a51fb762 Max prim scale on opensim is now 8192 (server restrictions may apply, limit one per customer) 2013-09-12 22:35:31 -04:00
Inusaito Sayori
5058e3e87d Don't changeCameraToDefault when notecards open. 2013-09-12 18:44:30 -04:00
Inusaito Sayori
c6e2559d3e Correct a typo in setting name for preferences panel 2013-09-12 17:11:26 -04:00
Latif Khalifa
c14d46074c Re initiate spatial partitions in the main region after a long teleport jump.
Also kill objects in the regions we left behind.
Restore max octree range to 1024 * 1024
2013-09-12 09:42:55 +02:00
Inusaito Sayori
5b73586b95 Display the current region's grid coordinates in Help->About Singularity 2013-09-12 00:42:03 -04:00
Latif Khalifa
5573499b9d Reduce max size of octree root to 2048^2 in an attempt to avoid float errors leading to crashes on very long teleports 2013-09-12 03:09:51 +02:00
Inusaito Sayori
5575ff2b90 Default all available items to be included in new outfits 2013-09-11 18:54:27 -04:00
Latif Khalifa
3d6b94d2ed Avoid infinite recursion crashes with wider octree range 2013-09-11 23:28:26 +02:00
Inusaito Sayori
312a58584e Fix some cases where busy and muted were not evaluated properly for automated handling of incoming messages 2013-09-11 15:38:35 -04:00
Latif Khalifa
170d9c7983 Made max octree range power of two.
Fixes crashes observed in "Forum" region in SL where some
avatars seem to be flying millions of meters up in the air.
2013-09-11 19:58:02 +02:00
Inusaito Sayori
9786bc47fb Clear out comment text when saving to solve Issue 1078
Thanks to Zi Ree for this fix
2013-09-11 03:11:10 -04:00
Latif Khalifa
3045f93f62 Increased octree limit to 32k. Addresses "4096 bug" in Opensim
Thanks to NickyD for tracking down the cause.

Refereces:

https://jira.secondlife.com/browse/SVC-2941
http://redmine.kokuaviewer.org/issues/465
http://jira.phoenixviewer.com/browse/FIRE-11593
2013-09-10 19:19:05 +02:00
Latif Khalifa
56af88fb94 Revert "Removed internal limit 2^20 for lloctree"
This reverts commit 7376c833c7.
2013-09-10 19:16:02 +02:00
Latif Khalifa
7376c833c7 Removed internal limit 2^20 for lloctree
This addresses "4096 bug" affecting long Opensim teleports

Patch by NickyD (Firestorm)

Refereces:

https://jira.secondlife.com/browse/SVC-2941
http://redmine.kokuaviewer.org/issues/465
http://jira.phoenixviewer.com/browse/FIRE-11593
2013-09-10 13:22:01 +02:00
Latif Khalifa
0d893c5217 Revert "Possible fix for "4096 bug" affecting long Opensim teleports"
This reverts commit f7cf69ec95.
2013-09-10 13:02:38 +02:00
Latif Khalifa
8a69b9e50d Revert "Patch tool completely misplaced a hunk in previous commit"
This reverts commit 99893ee992.
2013-09-10 13:02:17 +02:00
Latif Khalifa
99893ee992 Patch tool completely misplaced a hunk in previous commit 2013-09-10 04:19:01 +02:00
Latif Khalifa
f7cf69ec95 Possible fix for "4096 bug" affecting long Opensim teleports
Patch by Tonya Souther (Firestorm)
Refereces:

https://jira.secondlife.com/browse/SVC-2941
http://redmine.kokuaviewer.org/issues/465
http://jira.phoenixviewer.com/browse/FIRE-11593
2013-09-10 03:53:03 +02:00
Inusaito Sayori
27b2f14193 Fix for STORM-1948; modified version of viewer-release's 683b1ecc6ce8255d31cad3c674ffaf87353c6469
To maintain compatibility with grids that still use the old home position set notification method, a common function is called.
The fix has also been applied for the special case of death teleports.
2013-09-09 21:27:33 -04:00
Inusaito Sayori
e36c0095e0 Add NewIMsPerConversationReset to reset the visibility of the New IMs button when the communicate floater has been opened and closed and NewIMsPerConversation is in use
(this is now the default behavior of NewIMsPerConversation)
2013-09-09 21:08:38 -04:00
Inusaito Sayori
0b1a172a91 Fix up spanish translation for the IM flyout button 2013-09-09 21:03:41 -04:00
Inusaito Sayori
b5cc29ebbc Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-09-09 20:56:07 -04:00
Inusaito Sayori
88af3cabc3 Fix the issue of system messages being counted towards unread IMs 2013-09-09 20:55:21 -04:00
Latif Khalifa
f838c235cb Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-09-09 10:24:29 +02:00
Inusaito Sayori
0e5085e6bc Fix owner mask being displayed in the debug permissions for everyone mask 2013-09-08 10:50:16 -04:00
Inusaito Sayori
380642044f Revert "Mewmew"
This reverts commit 27dcbef8fa.
2013-09-06 15:42:14 -04:00
Inusaito Sayori
22fee625e5 Revert "You, my friend, are a victim of disorganized thinking."
This reverts commit d956f60c0b.
2013-09-06 15:39:00 -04:00
Damian Zhaoying
7d4c633514 Update changes in floater IMs 2013-09-02 18:12:31 -03:00
Latif Khalifa
c7d5ef31c0 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-09-01 02:26:05 +02:00
Aleric Inglewood
fc70dd436f Fix of issue 1055
Thanks to sappadillidallagio and warctor/Parker for reporting.
2013-08-31 22:56:37 +02:00
Inusaito Sayori
d9bff43dd8 At the Singularity group's request: Another attempt to mute voice upon reconnecting to local voice if the setting requests such 2013-08-29 14:05:24 -04:00
Inusaito Sayori
50a85109a0 Improvements to NewIMsPerConversation mechaics and includes cleanup in lloverlaybar.cpp 2013-08-29 14:01:23 -04:00
Inusaito Sayori
adeb340e93 Includes cleanup in llimpanel.* and llimview.cpp 2013-08-29 13:57:54 -04:00
Inusaito Sayori
539eb2e348 Add buttons back to the IM floater, taking the space that RP Mode once occupied
Also fix concise IM buttons from looking awful, concise stays concise, only the dropdown button there.
2013-08-29 13:56:14 -04:00
Inusaito Sayori
b3f414c4ad Move RP Mode check into the Profile button dropdown 2013-08-29 13:45:24 -04:00
Inusaito Sayori
83c66c978b Option to ding on each new IM for given private IM sessions
Ding noises configurable via LiruNewMessageSound* debug settings
2013-08-29 13:35:35 -04:00
Inusaito Sayori
344909c0a3 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-08-28 03:38:02 -04:00
Damian Zhaoying
ce1c554fa3 Spanish Translation. Added new option in voice control panel. Added new option web profile in calling card options in menu inventory 2013-08-28 04:34:08 -03:00
Inusaito Sayori
e032c53bc6 Feature Request: Make the map dot color for everyone else customizable
Switches MapAvatar from being part of a skin's colors.xml to being a user setting (optionally vanity per account)
This makes sense because all the other dots were at the user's control already.
2013-08-28 03:29:57 -04:00
Inusaito Sayori
e08c05fbd6 Feature Request: Add debug setting ResetViewTurnsAvatar to solve the problem described in Issue 715 Comment 10
Solves https://jira.secondlife.com/browse/VWR-27956
2013-08-28 01:12:03 -04:00
Latif Khalifa
64c6a8a3ed Bump version to 1.8.2 2013-08-28 06:44:35 +02:00
Inusaito Sayori
c57191b951 Feature Request: Ability to have the New IMs button display the amount of unread conversations instead of the amount of new IMs therein
Set NewIMsPerConversation true to activate.
2013-08-28 00:35:31 -04:00
Inusaito Sayori
9c80f58d34 Fix tabs and spaces mixup and typo in llvoicevivox. 2013-08-27 23:27:09 -04:00
Inusaito Sayori
e571b9a585 Merge branch 'master' of git://github.com/TighMacFanatic/SingularityViewer 2013-08-27 23:18:45 -04:00
Inusaito Sayori
9df7808dc8 Add Web Profile option to calling card inventory menu
Only shown when web profiles are available and web profiles aren't used by default
2013-08-27 21:37:08 -04:00
Latif Khalifa
27480c1718 Issue #1049, additional checks for sculpt prims 2013-08-27 21:21:12 +02:00
Inusaito Sayori
01e31cc711 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-08-27 10:04:40 -04:00
Latif Khalifa
bd8a44ad21 Merge branch 'master' of git://github.com/Lirusaito/SingularityViewer 2013-08-27 15:19:36 +02:00
Latif Khalifa
8ff867e792 Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-08-27 14:47:50 +02:00
Damian Zhaoying
302d9e1e50 Update notifications.xml and other files and add new file floater_inv_panel.xml 2013-08-26 17:51:51 -03:00
Inusaito Sayori
67180f40fc Merge branch 'master' of https://github.com/LightDrake/SingularityViewer 2013-08-25 14:24:56 -04:00
Drake Arconis
fdc855cd37 Trivial changes to better sync with viewer 3 2013-08-25 14:14:51 -04:00
Drake Arconis
cdeea281cd Fix debugging info left on from win8 fixes 2013-08-25 03:04:47 -04:00
Drake Arconis
4ec56904e7 Make perlin nosie repeatable for consistent ground textures 2013-08-25 03:02:59 -04:00
Drake Arconis
01bba31c8d Crash fixes to deal with janky FBX to DAE converters 2013-08-25 03:02:40 -04:00
Drake Arconis
5968708207 Fixed non-localizable strings in world map 2013-08-25 02:45:00 -04:00
Drake Arconis
5bf7281525 Fixes to build against windows 8 sdk 2013-08-25 02:16:35 -04:00
Inusaito Sayori
a2b0731dd0 Satisfy Issue 613: TIme-stamp when viewing old notices in groups
To activate set LiruGroupNoticeTimes to true via debug settings
Depending on your date and time settings, you may need to resize the date column of the scroll list and hit refresh to see the times, alternatively, the tooltips will display the whole time always.
2013-08-24 21:57:42 -04:00
Inusaito Sayori
c9482ecac5 Feature request: Add an option to open inventory folders in a new separate window 2013-08-24 21:52:53 -04:00
Inusaito Sayori
c3b7c6999f Implemented decrement and distance_to for LLInstanceTracker::instance_iter and LLInstanceTracker::key_iter
Technically, both nested iterator classes in llinstance tracker should be derived from a common base implementation of boost::iterator_facade for std::maps(LLInstanceTracker::InstanceMap), they'd only need to implement dereference individually
2013-08-24 21:49:01 -04:00
Inusaito Sayori
323adeb224 Increment unread message count for IM floaters that are popped out but not focused. 2013-08-24 21:35:14 -04:00
Inusaito Sayori
74698fa3d8 Yet another attempt to solve Issue 929, bridge autodetach
This time we go through with the bridge attach but we setup a callback to detach once attachment process has gone through
2013-08-24 21:24:23 -04:00
Inusaito Sayori
8fc74855da Solve Issue 925: Add "Show on Map" to right-click menu for landmarks in inventory 2013-08-24 19:41:39 -04:00
Inusaito Sayori
e9d8ceaa38 Finish Singu TODO: Texture Save As from inventory menu. 2013-08-24 19:35:30 -04:00
Inusaito Sayori
cde66a4169 Fix for Issue 598: shortcut ctrl+alt+F1(disable UI) conflicts with linux (switch to other tty)
Reload personal setting overrides no longer has a shortcut.
On Linux, ctrl-shift-F# is now used instead of ctrl-alt-F#
On other platforms, nothing else changes.
2013-08-24 19:28:32 -04:00
Inusaito Sayori
0c40a38a45 Append the count of unread IMs to the IM session's name in the communicate button's flyout list
ShowUnreadIMsCount can be set false to turn this off
2013-08-24 19:20:56 -04:00
Inusaito Sayori
a4802a4511 Set MeshMaxConcurrentRequests default back down to 32
The Lindens prefer it be this low and our users have found that lower is better lately.
2013-08-24 16:09:15 -04:00
Inusaito Sayori
fea628fd82 Fix a conflict with the inventory offer button enum and the profile button's index 2013-08-22 10:09:12 -04:00
Inusaito Sayori
f90752e81c Correct a potential memory leak
Thanks to Ratany for drawing my attention to it.
2013-08-22 10:06:34 -04:00
Inusaito Sayori
4607bb6ea0 Feature request: Hang onto last values for Ease In and Ease Out for future animation uploads (Issue 984) 2013-08-20 06:09:07 -04:00
Inusaito Sayori
241b153aaf Restore Legacy Behavior: Display tooltips on scrolllisttext cells as long as there's text there, not just if that text is truncated 2013-08-19 22:59:57 -04:00
TighMacFanatic
7783b835f0 Fix swapped enum so I don't break anything unexpected. 2013-08-18 02:07:12 -04:00
Aleric Inglewood
cc9fc6b868 First attempt to deal with broken (pre multiwear) inventory items.
Since multiwear, the low 8 bit of inventory items, if they are of type
IT_WEARABLE, is used for the wearable type (WT_*). Older viewers and
bots (like Second Inventory) create inventory items with 0 in those
bits. This causes all those item to appear as shapes in multi-wear
capable viewers.

This gives rise to many problems:
1) You can't wear them, because the inventory and asset wearable type
mismatch, which makes Singularity just abort.
2) Before it aborts, it already removed your old shape, thinking you
are about to wear another shape - and told the server that you are
wearing this broken item now. The result is that you see no change,
until you relog when you are suddenly wearing the broken "shape"
and stay a cloud forever.

This commit detects the problem for AT_CLOTHING wearables, because
they are not compatible with the type 'shape' after all (which is
is AT_BODYPART). It still doesn't know what the wearable type is, but
sets the type temporarily to the new value WT_UNKNOWN. Since this is
at least not a shape anymore, it doesn't cause you shape to be removed
when wearing it. Moreover, once the asset is downloaded, the mismatch
is detected and corrected: you can now wear -say- pants, or other
clothing.

Inventory clothing items with an unknown wearable type now have a
red question mark icon in the inventory.

What does NOT work yet:

1) If you copy such an item and paste it, then the new copy has
a shape icon again (and all the previously mentioned problems).

2) If you wear broken hair, skin or eyes (which still show as
shapes in the inventory) then your shape is still removed, and
wearing them fails because they are not multiwear capable and you
are already wearing such a body part. What should be done here
is that the removed shape is added back and the real body part
that you're trying to wear is removed.

3) Although this code attempts to fix the mFlags in the inventory,
the icon in the inventory doesn't change from question mark to the
right thing.
2013-08-18 02:50:31 +02:00
TighMacFanatic
9fc7c84f74 Added a third option to hear voice from everywhere so position does not affect volume/panning. 2013-08-17 12:20:03 -04:00
Inusaito Sayori
51532aa22c Fix Issue 1012: Private voice call
The original purpose of the patch removed here was to fix this very bug, though I could not reproduce it at that time...
There must still be an edge case where this bug will reproduce but I tweaked the involved settings around quite a bit and could not reproduce it
2013-08-16 00:49:34 -04:00
Inusaito Sayori
6910a2feca User-configurable log filename date formatting (When using "Append date to log filename")
The old defaults remain the same, so no worries for old users of this feature
Modify LogFileLocalChatDateFormat and LogFileIMsDateFormat in debug settings, use strftime's format specifiers.
The above mentioned settings are per account.

Inspired by irssi
2013-08-15 23:25:00 -04:00
Inusaito Sayori
a5287ee975 Adjust chat log opening functions to use LLLogChat functions to determine log file
This eliminates the possibility of the history button not opening the log file, which has been reported in the past.
This also corrects cases where log files named with date would not be opened.
2013-08-15 21:52:40 -04:00
Damian Zhaoying
1e64d41bdc Fixed typos and Syntax errors in notifications.xml and strings.xml files, update other strings 2013-08-15 20:35:04 -03:00
Inusaito Sayori
03b384334c Feature Request: Show profile from inventory offer notifications 2013-08-15 01:36:07 -04:00
Inusaito Sayori
a5705bd459 IRC Feature Request: Ability to show only legacy names for speakers (in Adv. Chat->Chat UI preferences) 2013-08-15 00:06:09 -04:00
Inusaito Sayori
0b9f14fff7 Feature request: Show profile on Teleport Offer notifications 2013-08-14 22:02:15 -04:00
Inusaito Sayori
b00e39f211 Continuation of the ongoing effort to change intrusive notifications into notifytips 2013-08-14 21:32:54 -04:00
Inusaito Sayori
75e5f87998 Fix Issue 1011: Intrusive on death teleport notification 2013-08-14 21:19:56 -04:00
Inusaito Sayori
e21a631b87 Feature Request: Parse periods in query as spaces in legacy people search 2013-08-14 21:00:10 -04:00
Latif Khalifa
c07646ff38 Include winmm.dll in the Windows installer 2013-08-14 22:41:43 +02:00
Inusaito Sayori
709c3ec877 Fix the crash upon opening Bumps, Pushes & Hits Floater
There are two types of font names, the camelcase and the all uppercase
Since mostly uppercase is used for scroll lists, this issue went undetected
but both types are used upstream, so we now look for camelcase if we couldn't get an uppercase one
The crash itself is avoided by falling back on SansSerifSmall if no known font has the name provided.
2013-08-14 14:25:59 -04:00
Inusaito Sayori
07e09be280 Modernization of LLFloaterBump that took place while working on the issue solved in next commit 2013-08-14 14:17:08 -04:00
Inusaito Sayori
56a6c91aac Fix the issue of script limits floater popping up after it was closed 2013-08-14 11:13:00 -04:00
Inusaito Sayori
7aaef519d4 Cleanup translations (mainly to not have control names and blank labels copied over) 2013-08-13 18:03:58 -04:00
Inusaito Sayori
04c91a1393 Touchup to conform to format standard 2013-08-13 17:20:00 -04:00
Inusaito Sayori
2dc63a3463 Merge branch 'master' of https://github.com/DamianZhaoying/SingularityViewer 2013-08-13 17:18:35 -04:00
Latif Khalifa
20687aee86 Merge branch 'master' of git://github.com/Shyotl/SingularityViewer 2013-08-13 03:17:24 +02:00
Shyotl
2f7b1e3d9b Added bits required for webkit volume adjustment to work on windows (xp included). 2013-08-12 20:15:57 -05:00
Latif Khalifa
4b1329095e Merge branch 'master' of https://github.com/MelanieT/SingularityViewer 2013-08-13 02:53:13 +02:00
Latif Khalifa
d0a6531bbf Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer 2013-08-13 02:52:47 +02:00
Aleric Inglewood
d7d361004a Allow export full perm item on opensim if it doesn't support the export bit.
This addresses
https://code.google.com/p/singularity-viewer/issues/detail?id=1003
2013-08-13 02:31:30 +02:00
Melanie
c6661cf789 Merge branch 'master' of github.com:singularity-viewer/SingularityViewer 2013-08-13 01:38:35 +02:00
Melanie
c8d301f05d Replace FIRST LAST markers with NAME 2013-08-13 01:38:12 +02:00
Damian Zhaoying
62e0db83bd Merge remote-tracking branch 'Liru/master' 2013-08-10 20:11:47 -03:00
Damian Zhaoying
412459ec3d Update Spanish Translations. 2013-08-09 13:30:59 -03:00
Damian Zhaoying
aa818eb32e Merge remote-tracking branch 'Liru/master' 2013-08-09 10:17:00 -03:00
Damian Zhaoying
ca61a11825 Merge remote-tracking branch 'Liru/master' 2013-08-08 13:43:19 -03:00
Damian Zhaoying
2679148aec Merge remote-tracking branch 'Liru/master' 2013-08-07 04:32:26 -03:00
Damian Zhaoying
8f16460bdb update spanish translation: fix in panel_login.xml file 2013-08-06 16:05:23 -03:00
Damian Zhaoying
1a59de0db8 Merge remote-tracking branch 'Liru/master' 2013-08-06 15:26:08 -03:00
Damian Zhaoying
67a57bd35f update spanish translation: add New menu avatar floater, Multiple voice support checkbox in preferences 2013-08-03 22:51:02 -03:00
Inusaito Sayori
353e2977d6 [Voice Update] Further sync llvoiceclient and llvoicevivox with upstream
Mainly tiny motions to ease merging as viewer-vivox2 work continues
Condenses MultiVoice block
2013-07-27 16:48:35 -04:00
Inusaito Sayori
641067c399 [Voice Update] Apply updates from Viewer-Vivox2
Applies the following commits:
 4c13e7c - Interim version with SLIM removed from voice.
   4c13e7c753
 9cad21a - Thanks mercurial.
   9cad21adc1
   Only the changes that should have been in 4c13e7c (removal of LLVivoxVoiceClient::accountListBlockRulesSendMessage() and LLVivoxVoiceClient::accountListAutoAcceptRulesSendMessage())
 9c94b96 - Removed debugging.
   9c94b96ed3
 ec77595 - Turn off logging.
   ec775958ef
 857cab1 - Kill all the vivox logs
   857cab153e
2013-07-27 16:41:08 -04:00
aragornarda
f7e45332bd small typo fix 2013-05-25 18:26:42 +03:00
Lirusaito
36e6946c96 AuroraSim: More tiny bits to help life be normal on the grid. 2013-01-21 21:32:37 -05:00
Lirusaito
fa8e1f033b AuroraSim: non-power-of-two support. 2013-01-21 21:32:06 -05:00
Lirusaito
415bcd2b6c Merge branch 'master' into VarRegion 2013-01-21 21:31:34 -05:00
Lirusaito
a50f0008b2 Variable Size Regions! Support for prehash RegionSizeX and large patches. (WIP)
Mostly from Ukando, tweaked a bit to be cleaner, and a little less dramatic.

decode_patch_header now takes a bool optionally, as third argument.
_PREHASH_RegionSizeX is the only used of the two _PREHASH_RegionSize*.
llsurface.cpp: Copy the connectNeighbor for variable size regions almost directly from Ukando
llsurfacepatch.cpp: Patch code from ukando and voodoo.
Changed hardcoded 256 constants and such to width functions in: llglsandbox.cpp, llsurface.cpp, llviewerregion.cpp, llviewerparcelmanager, llviewerparcelmgr.cpp, llvowater.cpp, llworld.cpp
Use region specific width in: llagent.cpp, llglsandbox.cpp, llmanip.cpp, llmanipscale.cpp, llpanelobject.cpp, llviewerbject.cpp, llwind.cpp
Use 256 in llnetmap.cpp in places...
llfloaterregioninfo.cpp: Aurora grid has wacky textures.
Add LLViewerParcelMgr::widthUpdate() for updating mParcelsPerEdge given a region's width. Used in llstartup now.
Add LLWorld::setWidth() for getting a region's size from LLMessageSystem pointers and setting mWidth and mWidthInMeters, accordingly. Called in llviewermessage.cpp as well.
2013-01-03 05:57:55 -05:00
2263 changed files with 107511 additions and 61835 deletions

9
.gitignore vendored
View File

@@ -26,3 +26,12 @@ qtcreator-build/
/.pc
/build-*
/viewer-*
/indra/newview/res/viewerRes.rc
/indra/newview/res/viewerRes_bc.rc
/indra/newview/English.lproj/InfoPlist.strings
/indra/newview/linux_tools/handle_secondlifeprotocol.sh
/indra/newview/linux_tools/install.sh
/indra/newview/linux_tools/refresh_desktop_app_entry.sh
/indra/newview/linux_tools/wrapper.sh

View File

@@ -0,0 +1,29 @@
INTEL LICENSE AGREEMENT
IMPORTANT - READ BEFORE COPYING OR USING.
Do not use or load this library and any associated materials (collectively,
the "Software") until you have read the following terms and conditions. By
loading or using the Software, you agree to the terms of this Agreement. If
you do not wish to so agree, do not use the Software.
LICENSE: Subject to the restrictions below, Intel Corporation ("Intel")
grants to you the permission to use, copy, distribute and prepare derivative
works of this Software for any purpose and without fee, provided, that
Intel's copyright notice appear in all copies of the Software files.
The distribution of derivative works of the Software is also subject to the
following limitations: you (i) are solely responsible to your customers for
any liability which may arise from the distribution, (ii) do not make any
statement that your product is "certified", or that its performance is
guaranteed, by Intel, and (iii) do not use Intel's name or trademarks to
market your product without written permission.
EXCLUSION OF ALL WARRANTIES. The Software is provided "AS IS" without any
express or implies warranty of any kind including warranties of
merchantability, noninfringement, or fitness for a particular purpose.
Intel does not warrant or assume responsibility for the accuracy or
completeness of any information contained within the Software.
As this Software is given free of charge, in no event shall Intel be liable
for any damages whatsoever arising out of the use of or inability to use the
Software, even if Intel has been adviced of the possibility of such damages.
Intel does not assume any responsibility for any errors which may appear in
this Software nor any responsibility to update it.

4
README
View File

@@ -15,8 +15,8 @@ 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
Singularity is maintained by a small group of volunteers who can be contacted
both, in-world (SingularityViewer group) as well as 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...)

View File

@@ -4,7 +4,7 @@
# other commands to guarantee full compatibility
# with the version specified
cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
# Eventually the third-party support modules (cmake/*.cmake) should
# know the full path to all libraries. Until that happens we need
@@ -15,7 +15,7 @@ cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
# CMP0003 to OLD and link to one library (apr) on a per-configuration
# basis to convince CMake to add the proper link directory. This line
# can be removed when we use full paths for all libraries.
cmake_policy(SET CMP0003 OLD)
#cmake_policy(SET CMP0003 OLD)
set(ROOT_PROJECT_NAME "Singularity" CACHE STRING
"The root project/makefile/solution name. Defaults to Singularity.")
@@ -27,7 +27,6 @@ include(Variables)
# Load versions now. Install locations need them.
include(BuildVersion)
include(UnixInstall)
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
@@ -41,6 +40,9 @@ if(NOT STANDALONE)
# We prepare prebuilt binaries when not building standalone.
set(prepare_depends ${CMAKE_BINARY_DIR}/prepare/prebuilt)
endif(NOT STANDALONE)
if(WINDOWS)
set(prepare_depends ${prepare_depends} copy_win_libs)
endif(WINDOWS)
add_custom_target(prepare DEPENDS ${prepare_depends})
add_subdirectory(cmake)
@@ -75,7 +77,6 @@ if (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
endif (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
add_custom_target(viewer)
add_subdirectory(${LIBS_OPEN_PREFIX}llcrashlogger)
add_subdirectory(${LIBS_OPEN_PREFIX}llplugin)
add_subdirectory(${LIBS_OPEN_PREFIX}llui)
@@ -87,28 +88,6 @@ add_subdirectory(${LIBS_OPEN_PREFIX}plugins)
# 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)
@@ -130,3 +109,16 @@ add_custom_command(
DEPENDS ${CMAKE_SOURCE_DIR}/../install.xml
${CMAKE_BINARY_DIR}/DownloadPrebuilt.cmake
)
if(WINDOWS)
configure_file(${CMAKE_SOURCE_DIR}/cmake/CopyWinLibs.cmake.in
${CMAKE_BINARY_DIR}/CopyWinLibs.cmake @ONLY)
add_custom_command(
COMMENT "Copying prebuilt libraries to viewer executable directory"
OUTPUT ${CMAKE_BINARY_DIR}/CopyWinLibs
COMMAND ${CMAKE_COMMAND} -DCUR_CONFIG:STRING=${CMAKE_CFG_INTDIR} -P ${CMAKE_BINARY_DIR}/CopyWinLibs.cmake
DEPENDS ${CMAKE_BINARY_DIR}/prepare/prebuilt ${CMAKE_BINARY_DIR}/CopyWinLibs.cmake
)
add_custom_target(copy_win_libs DEPENDS ${CMAKE_BINARY_DIR}/CopyWinLibs)
endif(WINDOWS)

View File

@@ -21,6 +21,7 @@ set(aistatemachine_SOURCE_FILES
aistatemachine.cpp
aistatemachinethread.cpp
aitimer.cpp
aicondition.cpp
)
set(aistatemachine_HEADER_FILES
@@ -29,6 +30,7 @@ set(aistatemachine_HEADER_FILES
aistatemachine.h
aistatemachinethread.h
aitimer.h
aicondition.h
)
set_source_files_properties(${aistatemachine_HEADER_FILES}

View File

@@ -0,0 +1,89 @@
/**
* @file aicondition.cpp
* @brief Implementation of AICondition
*
* 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.
*
* 14/10/2013
* Initial version, written by Aleric Inglewood @ SL
*/
#include "sys.h"
#include "aicondition.h"
#include "aistatemachine.h"
void AIConditionBase::wait(AIStateMachine* state_machine)
{
// The condition must be locked before calling AIStateMachine::wait().
llassert(mutex().isSelfLocked());
// Add the new state machine at the end.
mWaitingStateMachines.push_back(state_machine);
}
void AIConditionBase::remove(AIStateMachine* state_machine)
{
mutex().lock();
// Remove all occurances of state_machine from the queue.
queue_t::iterator const end = mWaitingStateMachines.end();
queue_t::iterator last = end;
for (queue_t::iterator iter = mWaitingStateMachines.begin(); iter != last; ++iter)
{
if (iter->get() == state_machine)
{
if (--last == iter)
{
break;
}
queue_t::value_type::swap(*iter, *last);
}
}
// This invalidates all iterators involved, including end, but not any iterators to the remaining elements.
mWaitingStateMachines.erase(last, end);
mutex().unlock();
}
void AIConditionBase::signal(int n)
{
// The condition must be locked before calling AICondition::signal or AICondition::broadcast.
llassert(mutex().isSelfLocked());
// Signal n state machines.
while (n > 0 && !mWaitingStateMachines.empty())
{
LLPointer<AIStateMachine> state_machine = mWaitingStateMachines.front();
bool success = state_machine->signalled();
// Only state machines that are actually still blocked should be in the queue:
// they are removed from the queue by calling AICondition::remove whenever
// they are unblocked for whatever reason...
llassert(success);
if (success)
{
++n;
}
else
{
// We never get here...
remove(state_machine.get());
}
}
}

View File

@@ -0,0 +1,110 @@
/**
* @file aicondition.h
* @brief Condition variable for statemachines.
*
* 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.
*
* 14/10/2013
* Initial version, written by Aleric Inglewood @ SL
*/
#ifndef AICONDITION_H
#define AICONDITION_H
#include <deque>
#include <llpointer.h>
#include "aithreadsafe.h"
class AIStateMachine;
class LLMutex;
// class AICondition
//
// Call AIStateMachine::wait(AICondition&) in the multiplex_impl of a state machine to
// make the state machine go idle until some thread calls AICondition::signal().
//
// If the state machine is no longer running or wasn't waiting anymore because
// something else woke it up, then AICondition::signal() will wake up another
// state machine (if any).
//
// Usage:
//
// struct Foo { bool met(); }; // Returns true when the condition is met.
// AICondition<Foo> Condition_t;
// AIAccess<Foo> Condition_wat;
//
// // Some thread-safe condition variable.
// Condition_t condition;
//
// // Inside the state machine:
// {
// ...
// state WAIT_FOR_CONDITION:
// {
// // Lock condition and check it. Wait if condition is not met yet.
// {
// Condition_wat condition_w(condition);
// if (!condition_w->met())
// {
// wait(condition);
// break;
// }
// }
// set_state(CONDITION_MET);
// break;
// }
// CONDITION_MET:
// {
//
class AIConditionBase
{
public:
virtual ~AIConditionBase() { }
void signal(int n = 1); // Call this when the condition was met to release n state machines.
void broadcast(void) { signal(mWaitingStateMachines.size()); } // Release all blocked state machines.
private:
// These functions are called by AIStateMachine.
friend class AIStateMachine;
void wait(AIStateMachine* state_machine);
void remove(AIStateMachine* state_machine);
protected:
virtual LLMutex& mutex(void) = 0;
protected:
typedef std::deque<LLPointer<AIStateMachine> > queue_t;
queue_t mWaitingStateMachines;
};
template<typename T>
class AICondition : public AIThreadSafeSimpleDC<T>, public AIConditionBase
{
protected:
/*virtual*/ LLMutex& mutex(void) { return this->mMutex; }
};
#endif

View File

@@ -33,6 +33,7 @@
#include "linden_common.h"
#include "aistatemachine.h"
#include "aicondition.h"
#include "lltimer.h"
//==================================================================
@@ -283,7 +284,7 @@ char const* HelloWorld::state_str_impl(state_type run_state) const
void AIEngine::add(AIStateMachine* state_machine)
{
Dout(dc::statemachine, "Adding state machine [" << (void*)state_machine << "] to " << mName);
Dout(dc::statemachine(state_machine->mSMDebug), "Adding state machine [" << (void*)state_machine << "] to " << mName);
engine_state_type_wat engine_state_w(mEngineState);
engine_state_w->list.push_back(QueueElement(state_machine));
if (engine_state_w->waiting)
@@ -292,7 +293,36 @@ void AIEngine::add(AIStateMachine* state_machine)
}
}
extern void print_statemachine_diagnostics(U64 total_clocks, U64 max_delta, AIEngine::queued_type::const_reference slowest_state_machine);
#if STATE_MACHINE_PROFILING
// Called from AIStateMachine::mainloop
void print_statemachine_diagnostics(U64 total_clocks, AIStateMachine::StateTimerBase::TimeData& slowest_timer, AIEngine::queued_type::const_reference slowest_element)
{
AIStateMachine const& slowest_state_machine = slowest_element.statemachine();
F64 const tfactor = 1000 / calc_clock_frequency();
std::ostringstream msg;
U64 max_delta = slowest_timer.GetDuration();
if (total_clocks > max_delta)
{
msg << "AIStateMachine::mainloop did run for " << (total_clocks * tfactor) << " ms. The slowest ";
}
else
{
msg << "AIStateMachine::mainloop: A ";
}
msg << "state machine " << "(" << slowest_state_machine.getName() << ") " << "ran for " << (max_delta * tfactor) << " ms";
if (slowest_state_machine.getRuntime() > max_delta)
{
msg << " (" << (slowest_state_machine.getRuntime() * tfactor) << " ms in total now)";
}
msg << ".\n";
AIStateMachine::StateTimerBase::DumpTimers(msg);
llwarns << msg.str() << llendl;
}
#endif
// MAIN-THREAD
void AIEngine::mainloop(void)
@@ -304,33 +334,38 @@ void AIEngine::mainloop(void)
queued_element = engine_state_w->list.begin();
}
U64 total_clocks = 0;
#ifndef LL_RELEASE_FOR_DOWNLOAD
U64 max_delta = 0;
#if STATE_MACHINE_PROFILING
queued_type::value_type slowest_element(NULL);
AIStateMachine::StateTimerRoot::TimeData slowest_timer;
#endif
while (queued_element != end)
{
AIStateMachine& state_machine(queued_element->statemachine());
U64 start = get_clock_count();
if (!state_machine.sleep(start))
AIStateMachine::StateTimerBase::TimeData time_data;
if (!state_machine.sleep(get_clock_count()))
{
state_machine.multiplex(AIStateMachine::normal_run);
AIStateMachine::StateTimerRoot timer(state_machine.getName());
state_machine.multiplex(AIStateMachine::normal_run);
time_data = timer.GetTimerData();
}
U64 delta = get_clock_count() - start;
state_machine.add(delta);
total_clocks += delta;
#ifndef LL_RELEASE_FOR_DOWNLOAD
if (delta > max_delta)
if (U64 delta = time_data.GetDuration())
{
max_delta = delta;
slowest_element = *queued_element;
}
state_machine.add(delta);
total_clocks += delta;
#if STATE_MACHINE_PROFILING
if (delta > slowest_timer.GetDuration())
{
slowest_element = *queued_element;
slowest_timer = time_data;
}
#endif
}
bool active = state_machine.active(this); // This locks mState shortly, so it must be called before locking mEngineState because add() locks mEngineState while holding mState.
engine_state_type_wat engine_state_w(mEngineState);
if (!active)
{
Dout(dc::statemachine, "Erasing state machine [" << (void*)&state_machine << "] from " << mName);
Dout(dc::statemachine(state_machine.mSMDebug), "Erasing state machine [" << (void*)&state_machine << "] from " << mName);
engine_state_w->list.erase(queued_element++);
}
else
@@ -339,8 +374,8 @@ void AIEngine::mainloop(void)
}
if (total_clocks >= sMaxCount)
{
#ifndef LL_RELEASE_FOR_DOWNLOAD
print_statemachine_diagnostics(total_clocks, max_delta, slowest_element);
#if STATE_MACHINE_PROFILING
print_statemachine_diagnostics(total_clocks, slowest_timer, slowest_element);
#endif
Dout(dc::statemachine, "Sorting " << engine_state_w->list.size() << " state machines.");
engine_state_w->list.sort(QueueElementComp());
@@ -372,7 +407,7 @@ void AIEngine::setMaxCount(F32 StateMachineMaxTime)
sMaxCount = calc_clock_frequency() * StateMachineMaxTime / 1000;
}
#if defined(CWDEBUG) || defined(DEBUG_CURLIO)
#ifdef CWDEBUG
char const* AIStateMachine::event_str(event_type event)
{
switch(event)
@@ -392,7 +427,7 @@ void AIStateMachine::multiplex(event_type event)
// If this fails then you are using a pointer to a state machine instead of an LLPointer.
llassert(event == initial_run || getNumRefs() > 0);
DoutEntering(dc::statemachine, "AIStateMachine::multiplex(" << event_str(event) << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::multiplex(" << event_str(event) << ") [" << (void*)this << "]");
base_state_type state;
state_type run_state;
@@ -405,9 +440,9 @@ void AIStateMachine::multiplex(event_type event)
// our need to run (by us having set need_run), so there is no need to run
// ourselves.
llassert(!mMultiplexMutex.isSelfLocked()); // We may never enter recursively!
if (!mMultiplexMutex.tryLock())
if (!mMultiplexMutex.try_lock())
{
Dout(dc::statemachine, "Leaving because it is already being run [" << (void*)this << "]");
Dout(dc::statemachine(mSMDebug), "Leaving because it is already being run [" << (void*)this << "]");
return;
}
@@ -421,7 +456,7 @@ void AIStateMachine::multiplex(event_type event)
// we should indeed run, again.
if (event == schedule_run && !sub_state_type_rat(mSubState)->need_run)
{
Dout(dc::statemachine, "Leaving because it was already being run [" << (void*)this << "]");
Dout(dc::statemachine(mSMDebug), "Leaving because it was already being run [" << (void*)this << "]");
return;
}
@@ -440,9 +475,9 @@ void AIStateMachine::multiplex(event_type event)
{
#ifdef CWDEBUG
if (state == bs_multiplex)
Dout(dc::statemachine, "Running state bs_multiplex / " << state_str_impl(run_state) << " [" << (void*)this << "]");
Dout(dc::statemachine(mSMDebug), "Running state bs_multiplex / " << state_str_impl(run_state) << " [" << (void*)this << "]");
else
Dout(dc::statemachine, "Running state " << state_str(state) << " [" << (void*)this << "]");
Dout(dc::statemachine(mSMDebug), "Running state " << state_str(state) << " [" << (void*)this << "]");
#endif
#ifdef SHOW_ASSERT
@@ -503,7 +538,7 @@ void AIStateMachine::multiplex(event_type event)
// run of bs_reset is not a problem because it happens to be a NoOp.
state = (state == bs_initialize) ? bs_reset : bs_abort;
#ifdef CWDEBUG
Dout(dc::statemachine, "Late abort detected! Running state " << state_str(state) << " instead [" << (void*)this << "]");
Dout(dc::statemachine(mSMDebug), "Late abort detected! Running state " << state_str(state) << " instead [" << (void*)this << "]");
#endif
}
#ifdef SHOW_ASSERT
@@ -665,7 +700,7 @@ void AIStateMachine::multiplex(event_type event)
#ifdef CWDEBUG
if (state != state_w->base_state)
Dout(dc::statemachine, "Base state changed from " << state_str(state) << " to " << state_str(state_w->base_state) <<
Dout(dc::statemachine(mSMDebug), "Base state changed from " << state_str(state) << " to " << state_str(state_w->base_state) <<
"; need_new_run = " << (need_new_run ? "true" : "false") << " [" << (void*)this << "]");
#endif
}
@@ -699,11 +734,15 @@ void AIStateMachine::multiplex(event_type event)
// Mark that we're added to this engine, and at the same time, that we're not added to the previous one.
state_w->current_engine = engine;
}
#ifdef SHOW_ASSERT
// We are leaving the loop, but we're not idle. The statemachine should re-enter the loop again.
mDebugShouldRun = true;
#endif
}
else
{
// Remove this state machine from any engine.
// Cause the engine to remove us.
// Remove this state machine from any engine,
// causing the engine to remove us.
state_w->current_engine = NULL;
}
@@ -723,7 +762,7 @@ void AIStateMachine::multiplex(event_type event)
//=========================================
// Release the lock on mMultiplexMutex *first*, before releasing the lock on mState,
// to avoid to ever call the tryLock() and fail, while this thread isn't still
// to avoid to ever call the try_lock() and fail, while this thread isn't still
// BEFORE the critical area of mState!
mMultiplexMutex.unlock();
@@ -747,9 +786,25 @@ void AIStateMachine::multiplex(event_type event)
}
}
#if STATE_MACHINE_PROFILING
std::vector<AIStateMachine::StateTimerBase*> AIStateMachine::StateTimerBase::mTimerStack;
AIStateMachine::StateTimerBase::TimeData AIStateMachine::StateTimerBase::TimeData::sRoot("");
void AIStateMachine::StateTimer::TimeData::DumpTimer(std::ostringstream& msg, std::string prefix)
{
F64 const tfactor = 1000 / calc_clock_frequency();
msg << prefix << mName << " " << (mEnd - mStart)*tfactor << "ms" << std::endl;
prefix.push_back(' ');
std::vector<TimeData>::iterator it;
for (it = mChildren.begin(); it != mChildren.end(); ++it)
{
it->DumpTimer(msg, prefix);
}
}
#endif
AIStateMachine::state_type AIStateMachine::begin_loop(base_state_type base_state)
{
DoutEntering(dc::statemachine, "AIStateMachine::begin_loop(" << state_str(base_state) << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::begin_loop(" << state_str(base_state) << ") [" << (void*)this << "]");
sub_state_type_wat sub_state_w(mSubState);
// Honor a subsequent call to idle() (only necessary in bs_multiplex, but it doesn't hurt to reset this flag in other states too).
@@ -759,7 +814,7 @@ AIStateMachine::state_type AIStateMachine::begin_loop(base_state_type base_state
// Honor previous calls to advance_state() (once run_state is initialized).
if (base_state == bs_multiplex && sub_state_w->advance_state > sub_state_w->run_state)
{
Dout(dc::statemachine, "Copying advance_state to run_state, because it is larger [" << state_str_impl(sub_state_w->advance_state) << " > " << state_str_impl(sub_state_w->run_state) << "]");
Dout(dc::statemachine(mSMDebug), "Copying advance_state to run_state, because it is larger [" << state_str_impl(sub_state_w->advance_state) << " > " << state_str_impl(sub_state_w->run_state) << "]");
sub_state_w->run_state = sub_state_w->advance_state;
}
#ifdef SHOW_ASSERT
@@ -789,7 +844,7 @@ AIStateMachine::state_type AIStateMachine::begin_loop(base_state_type base_state
void AIStateMachine::run(AIStateMachine* parent, state_type new_parent_state, bool abort_parent, bool on_abort_signal_parent, AIEngine* default_engine)
{
DoutEntering(dc::statemachine, "AIStateMachine::run(" <<
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::run(" <<
(void*)parent << ", " <<
(parent ? parent->state_str_impl(new_parent_state) : "NA") <<
", abort_parent = " << (abort_parent ? "true" : "false") <<
@@ -839,7 +894,7 @@ void AIStateMachine::run(AIStateMachine* parent, state_type new_parent_state, bo
void AIStateMachine::run(callback_type::signal_type::slot_type const& slot, AIEngine* default_engine)
{
DoutEntering(dc::statemachine, "AIStateMachine::run(<slot>, default_engine = " << default_engine->name() << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::run(<slot>, default_engine = " << default_engine->name() << ") [" << (void*)this << "]");
#ifdef SHOW_ASSERT
{
@@ -874,7 +929,7 @@ void AIStateMachine::run(callback_type::signal_type::slot_type const& slot, AIEn
void AIStateMachine::callback(void)
{
DoutEntering(dc::statemachine, "AIStateMachine::callback() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::callback() [" << (void*)this << "]");
bool aborted = sub_state_type_rat(mSubState)->aborted;
if (mParent)
@@ -920,7 +975,7 @@ void AIStateMachine::force_killed(void)
void AIStateMachine::kill(void)
{
DoutEntering(dc::statemachine, "AIStateMachine::kill() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::kill() [" << (void*)this << "]");
#ifdef SHOW_ASSERT
{
multiplex_state_type_rat state_r(mState);
@@ -937,7 +992,7 @@ void AIStateMachine::kill(void)
void AIStateMachine::reset()
{
DoutEntering(dc::statemachine, "AIStateMachine::reset() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::reset() [" << (void*)this << "]");
#ifdef SHOW_ASSERT
mDebugAborted = false;
mDebugContPending = false;
@@ -960,6 +1015,8 @@ void AIStateMachine::reset()
sub_state_w->reset = true;
// Start running.
sub_state_w->idle = false;
// We're not waiting for a condition.
sub_state_w->blocked = NULL;
// Keep running till we reach at least bs_multiplex.
sub_state_w->need_run = true;
}
@@ -972,7 +1029,7 @@ void AIStateMachine::reset()
void AIStateMachine::set_state(state_type new_state)
{
DoutEntering(dc::statemachine, "AIStateMachine::set_state(" << state_str_impl(new_state) << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::set_state(" << state_str_impl(new_state) << ") [" << (void*)this << "]");
#ifdef SHOW_ASSERT
{
multiplex_state_type_rat state_r(mState);
@@ -983,6 +1040,8 @@ void AIStateMachine::set_state(state_type new_state)
}
#endif
sub_state_type_wat sub_state_w(mSubState);
// It should never happen that set_state() is called while we're blocked.
llassert(!sub_state_w->blocked);
// Force current state to the requested state.
sub_state_w->run_state = new_state;
// Void last call to advance_state.
@@ -999,13 +1058,13 @@ void AIStateMachine::set_state(state_type new_state)
void AIStateMachine::advance_state(state_type new_state)
{
DoutEntering(dc::statemachine, "AIStateMachine::advance_state(" << state_str_impl(new_state) << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::advance_state(" << state_str_impl(new_state) << ") [" << (void*)this << "]");
{
sub_state_type_wat sub_state_w(mSubState);
// Ignore call to advance_state when the currently queued state is already greater or equal to the requested state.
if (sub_state_w->advance_state >= new_state)
{
Dout(dc::statemachine, "Ignored, because " << state_str_impl(sub_state_w->advance_state) << " >= " << state_str_impl(new_state) << ".");
Dout(dc::statemachine(mSMDebug), "Ignored, because " << state_str_impl(sub_state_w->advance_state) << " >= " << state_str_impl(new_state) << ".");
return;
}
// Ignore call to advance_state when the current state is greater than the requested state: the new state would be
@@ -1014,7 +1073,7 @@ void AIStateMachine::advance_state(state_type new_state)
// the state change is and should be being ignored: the statemachine would start running it's current state (again).
if (sub_state_w->run_state > new_state)
{
Dout(dc::statemachine, "Ignored, because " << state_str_impl(sub_state_w->run_state) << " > " << state_str_impl(new_state) << " (current state).");
Dout(dc::statemachine(mSMDebug), "Ignored, because " << state_str_impl(sub_state_w->run_state) << " > " << state_str_impl(new_state) << " (current state).");
return;
}
// Increment state.
@@ -1023,6 +1082,13 @@ void AIStateMachine::advance_state(state_type new_state)
sub_state_w->idle = false;
// Ignore a call to idle if it occurs before we leave multiplex_impl().
sub_state_w->skip_idle = true;
// No longer say we woke up when signalled() is called.
if (sub_state_w->blocked)
{
Dout(dc::statemachine(mSMDebug), "Removing statemachine from condition " << (void*)sub_state_w->blocked);
sub_state_w->blocked->remove(this);
sub_state_w->blocked = NULL;
}
// Mark that a re-entry of multiplex() is necessary.
sub_state_w->need_run = true;
#ifdef SHOW_ASSERT
@@ -1048,7 +1114,7 @@ void AIStateMachine::advance_state(state_type new_state)
void AIStateMachine::idle(void)
{
DoutEntering(dc::statemachine, "AIStateMachine::idle() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::idle() [" << (void*)this << "]");
#ifdef SHOW_ASSERT
{
multiplex_state_type_rat state_r(mState);
@@ -1066,7 +1132,7 @@ void AIStateMachine::idle(void)
// Ignore call to idle() when advance_state() was called since last call to set_state().
if (sub_state_w->skip_idle)
{
Dout(dc::statemachine, "Ignored, because skip_idle is true (advance_state() was called last).");
Dout(dc::statemachine(mSMDebug), "Ignored, because skip_idle is true (advance_state() was called last).");
return;
}
// Mark that we are idle.
@@ -1075,13 +1141,54 @@ void AIStateMachine::idle(void)
mSleep = 0;
}
// This function is very much like idle().
void AIStateMachine::wait(AIConditionBase& condition)
{
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::wait(" << (void*)&condition << ") [" << (void*)this << "]");
#ifdef SHOW_ASSERT
{
multiplex_state_type_rat state_r(mState);
// wait() may only be called multiplex_impl().
llassert(state_r->base_state == bs_multiplex);
// May only be called by the thread that is holding mMultiplexMutex.
llassert(mThreadId.equals_current_thread());
}
// wait() following set_state() cancels the reason to run because of the call to set_state.
mDebugSetStatePending = false;
#endif
sub_state_type_wat sub_state_w(mSubState);
// As wait() may only be called from within the state machine, it should never happen that the state machine is already idle.
llassert(!sub_state_w->idle);
// Ignore call to wait() when advance_state() was called since last call to set_state().
if (sub_state_w->skip_idle)
{
Dout(dc::statemachine(mSMDebug), "Ignored, because skip_idle is true (advance_state() was called last).");
return;
}
// Register ourselves with the condition object.
condition.wait(this);
// Mark that we are idle.
sub_state_w->idle = true;
// Mark that we are waiting for a condition.
sub_state_w->blocked = &condition;
// Not sleeping (anymore).
mSleep = 0;
}
void AIStateMachine::cont(void)
{
DoutEntering(dc::statemachine, "AIStateMachine::cont() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::cont() [" << (void*)this << "]");
{
sub_state_type_wat sub_state_w(mSubState);
// Void last call to idle(), if any.
sub_state_w->idle = false;
// No longer say we woke up when signalled() is called.
if (sub_state_w->blocked)
{
Dout(dc::statemachine(mSMDebug), "Removing statemachine from condition " << (void*)sub_state_w->blocked);
sub_state_w->blocked->remove(this);
sub_state_w->blocked = NULL;
}
// Mark that a re-entry of multiplex() is necessary.
sub_state_w->need_run = true;
#ifdef SHOW_ASSERT
@@ -1095,15 +1202,56 @@ void AIStateMachine::cont(void)
}
}
// This function is very much like cont(), except that it has no effect when we are not in a blocked state.
// Returns true if the state machine was unblocked, false if it was already unblocked.
bool AIStateMachine::signalled(void)
{
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::signalled() [" << (void*)this << "]");
{
sub_state_type_wat sub_state_w(mSubState);
// Test if we are blocked or not.
if (sub_state_w->blocked)
{
Dout(dc::statemachine(mSMDebug), "Removing statemachine from condition " << (void*)sub_state_w->blocked);
sub_state_w->blocked->remove(this);
sub_state_w->blocked = NULL;
}
else
{
return false;
}
// Void last call to wait().
sub_state_w->idle = false;
// Mark that a re-entry of multiplex() is necessary.
sub_state_w->need_run = true;
#ifdef SHOW_ASSERT
// From this moment.
mDebugContPending = true;
#endif
}
if (!mMultiplexMutex.isSelfLocked())
{
multiplex(schedule_run);
}
return true;
}
void AIStateMachine::abort(void)
{
DoutEntering(dc::statemachine, "AIStateMachine::abort() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::abort() [" << (void*)this << "]");
bool is_waiting = false;
{
multiplex_state_type_rat state_r(mState);
sub_state_type_wat sub_state_w(mSubState);
// Mark that we are aborted, iff we didn't already finish.
sub_state_w->aborted = !sub_state_w->finished;
// No longer say we woke up when signalled() is called.
if (sub_state_w->blocked)
{
Dout(dc::statemachine(mSMDebug), "Removing statemachine from condition " << (void*)sub_state_w->blocked);
sub_state_w->blocked->remove(this);
sub_state_w->blocked = NULL;
}
// Mark that a re-entry of multiplex() is necessary.
sub_state_w->need_run = true;
// Schedule a new run when this state machine is waiting.
@@ -1114,7 +1262,7 @@ void AIStateMachine::abort(void)
multiplex(insert_abort);
}
// Block until the current run finished.
if (!mRunMutex.tryLock())
if (!mRunMutex.try_lock())
{
llwarns << "AIStateMachine::abort() blocks because the statemachine is still executing code in another thread." << llendl;
mRunMutex.lock();
@@ -1128,7 +1276,7 @@ void AIStateMachine::abort(void)
void AIStateMachine::finish(void)
{
DoutEntering(dc::statemachine, "AIStateMachine::finish() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::finish() [" << (void*)this << "]");
#ifdef SHOW_ASSERT
{
multiplex_state_type_rat state_r(mState);
@@ -1147,7 +1295,7 @@ void AIStateMachine::finish(void)
void AIStateMachine::yield(void)
{
DoutEntering(dc::statemachine, "AIStateMachine::yield() [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::yield() [" << (void*)this << "]");
multiplex_state_type_rat state_r(mState);
// yield() may only be called from multiplex_impl().
llassert(state_r->base_state == bs_multiplex);
@@ -1160,7 +1308,7 @@ void AIStateMachine::yield(void)
void AIStateMachine::yield(AIEngine* engine)
{
llassert(engine);
DoutEntering(dc::statemachine, "AIStateMachine::yield(" << engine->name() << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::yield(" << engine->name() << ") [" << (void*)this << "]");
#ifdef SHOW_ASSERT
{
multiplex_state_type_rat state_r(mState);
@@ -1173,9 +1321,19 @@ void AIStateMachine::yield(AIEngine* engine)
mYieldEngine = engine;
}
bool AIStateMachine::yield_if_not(AIEngine* engine)
{
if (engine && multiplex_state_type_rat(mState)->current_engine != engine)
{
yield(engine);
return true;
}
return false;
}
void AIStateMachine::yield_frame(unsigned int frames)
{
DoutEntering(dc::statemachine, "AIStateMachine::yield_frame(" << frames << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::yield_frame(" << frames << ") [" << (void*)this << "]");
mSleep = -(S64)frames;
// Sleeping is always done from the main thread.
yield(&gMainThreadEngine);
@@ -1183,7 +1341,7 @@ void AIStateMachine::yield_frame(unsigned int frames)
void AIStateMachine::yield_ms(unsigned int ms)
{
DoutEntering(dc::statemachine, "AIStateMachine::yield_ms(" << ms << ") [" << (void*)this << "]");
DoutEntering(dc::statemachine(mSMDebug), "AIStateMachine::yield_ms(" << ms << ") [" << (void*)this << "]");
mSleep = get_clock_count() + calc_clock_frequency() * ms / 1000;
// Sleeping is always done from the main thread.
yield(&gMainThreadEngine);
@@ -1233,7 +1391,7 @@ void AIEngine::threadloop(void)
engine_state_type_wat engine_state_w(mEngineState);
if (!active)
{
Dout(dc::statemachine, "Erasing state machine [" << (void*)&state_machine << "] from " << mName);
Dout(dc::statemachine(state_machine.mSMDebug), "Erasing state machine [" << (void*)&state_machine << "] from " << mName);
engine_state_w->list.erase(queued_element++);
}
else

View File

@@ -36,9 +36,11 @@
#include "aithreadsafe.h"
#include <llpointer.h>
#include "lltimer.h"
#include <list>
#include <boost/signals2.hpp>
class AIConditionBase;
class AIStateMachine;
class AIEngine
@@ -97,11 +99,143 @@ class AIEngine
extern AIEngine gMainThreadEngine;
extern AIEngine gStateMachineThreadEngine;
#ifndef STATE_MACHINE_PROFILING
#ifndef LL_RELEASE_FOR_DOWNLOAD
#define STATE_MACHINE_PROFILING 1
#endif
#endif
class AIStateMachine : public LLThreadSafeRefCount
{
public:
typedef U32 state_type; //!< The type of run_state
// A simple timer class that will calculate time delta between ctor and GetTimerData call.
// Time data is stored as a nested TimeData object.
// If STATE_MACHINE_PROFILING is defined then a stack of all StateTimers from root is maintained for debug output.
class StateTimerBase
{
public:
class TimeData
{
friend class StateTimerBase;
public:
TimeData() : mStart(-1), mEnd(-1) {}
U64 GetDuration() { return mEnd - mStart; }
private:
U64 mStart, mEnd;
#if !STATE_MACHINE_PROFILING
TimeData(const std::string& name) : mStart(get_clock_count()), mEnd(get_clock_count()) {}
#else
TimeData(const std::string& name) : mName(name), mStart(get_clock_count()), mEnd(get_clock_count()) {}
void DumpTimer(std::ostringstream& msg, std::string prefix);
std::vector<TimeData> mChildren;
std::string mName;
static TimeData sRoot;
#endif
};
#if !STATE_MACHINE_PROFILING
StateTimerBase(const std::string& name) : mData(name) {}
~StateTimerBase() {}
protected:
TimeData mData;
// Return a copy of the underlying timer data.
// This allows the data live beyond the scope of the state timer.
public:
const TimeData GetTimerData()
{
mData.mEnd = get_clock_count(); //set mEnd to current time, since GetTimerData() will always be called before the dtor, obv.
return mData;
}
#else
protected:
// Ctors/dtors are hidden. Only StateTimerRoot and StateTimer are permitted to access them.
StateTimerBase() : mData(NULL) {}
~StateTimerBase()
{
// If mData is null then the timer was not registered due to being in the wrong thread or the root timer wasn't in the expected state.
if (!mData)
return;
mData->mEnd = get_clock_count();
mTimerStack.pop_back();
}
// Also hide internals from everything except StateTimerRoot and StateTimer
bool AddAsRoot(const std::string& name)
{
if (!is_main_thread())
return true; //Ignoring this timer, but pretending it was added.
if (!mTimerStack.empty())
return false;
TimeData::sRoot = TimeData(name);
mData = &TimeData::sRoot;
mData->mChildren.clear();
mTimerStack.push_back(this);
return true;
}
bool AddAsChild(const std::string& name)
{
if (!is_main_thread())
return true; //Ignoring this timer, but pretending it was added.
if (mTimerStack.empty())
return false;
mTimerStack.back()->mData->mChildren.push_back(TimeData(name));
mData = &mTimerStack.back()->mData->mChildren.back();
mTimerStack.push_back(this);
return true;
}
TimeData* mData;
static std::vector<StateTimerBase*> mTimerStack;
public:
// Debug spew
static void DumpTimers(std::ostringstream& msg)
{
TimeData::sRoot.DumpTimer(msg, "");
}
// Return a copy of the underlying timer data.
// This allows the data live beyond the scope of the state timer.
const TimeData GetTimerData() const
{
if (mData)
{
TimeData ret = *mData;
ret.mEnd = get_clock_count(); //set mEnd to current time, since GetTimerData() will always be called before the dtor, obv.
return ret;
}
return TimeData();
}
#endif
};
public:
#if !STATE_MACHINE_PROFILING
typedef StateTimerBase StateTimerRoot;
typedef StateTimerBase StateTimer;
#else
class StateTimerRoot : public StateTimerBase
{ //A StateTimerRoot can become a child if a root already exists.
public:
StateTimerRoot(const std::string& name)
{
if(!AddAsRoot(name))
AddAsChild(name);
}
};
class StateTimer : public StateTimerBase
{ //A StateTimer can never become a root
public:
StateTimer(const std::string& name)
{
AddAsChild(name);
}
};
#endif
protected:
// The type of event that causes multiplex() to be called.
enum event_type {
@@ -132,6 +266,7 @@ class AIStateMachine : public LLThreadSafeRefCount
struct sub_state_type {
state_type run_state;
state_type advance_state;
AIConditionBase* blocked;
bool reset;
bool need_run;
bool idle;
@@ -195,20 +330,36 @@ class AIStateMachine : public LLThreadSafeRefCount
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
#ifdef CWDEBUG
protected:
bool mSMDebug; // Print debug output only when true.
#endif
private:
U64 mRuntime; // Total time spent running in the main thread (in clocks).
public:
AIStateMachine(void) : mCallback(NULL), mDefaultEngine(NULL), mYieldEngine(NULL),
AIStateMachine(CWD_ONLY(bool debug)) : 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
#ifdef CWDEBUG
mSMDebug(debug),
#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); }
// 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. Deleting it directly before calling run() is
// ok however.
virtual ~AIStateMachine()
{
#ifdef SHOW_ASSERT
base_state_type state = multiplex_state_type_rat(mState)->base_state;
llassert(state == bs_killed || state == bs_reset);
#endif
}
public:
// These functions may be called directly after creation, or from within finish_impl(), or from the call back function.
@@ -224,11 +375,13 @@ class AIStateMachine : public LLThreadSafeRefCount
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 wait(AIConditionBase& condition); // The same as idle(), but wake up when AICondition<T>::signal() is 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.
bool yield_if_not(AIEngine* engine); // Do not really yield, unless the current engine is not 'engine'. Returns true if it switched engine.
public:
// This function can be called from multiplex_imp(), but also by a child state machine and
@@ -236,11 +389,12 @@ class AIStateMachine : public LLThreadSafeRefCount
// 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.
// These are the only three 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.
bool signalled(void); // Call cont() iff this state machine is still blocked after a call to wait(). Returns false if it already unblocked.
public:
// Accessors.
@@ -274,19 +428,23 @@ class AIStateMachine : public LLThreadSafeRefCount
// Return stringified state, for debugging purposes.
char const* state_str(base_state_type state);
#if defined(CWDEBUG) || defined(DEBUG_CURLIO)
#ifdef CWDEBUG
char const* event_str(event_type event);
#endif
void add(U64 count) { mRuntime += count; }
U64 getRuntime(void) const { return mRuntime; }
// For diagnostics. Every derived class must override this.
virtual const char* getName() const = 0;
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;
virtual void force_killed(void); // Called from AIEngine::flush().
private:
void reset(void); // Called from run() to (re)initialize a (re)start.
@@ -303,7 +461,6 @@ class AIStateMachine : public LLThreadSafeRefCount
mSleep = 0;
return mSleep != 0;
}
void force_killed(void); // Called from AIEngine::flush().
friend class AIEngine; // Calls multiplex() and force_killed().
};

View File

@@ -181,7 +181,11 @@ class AIStateMachineThreadBase : public AIStateMachine {
static state_type const max_state = wait_stopped + 1;
protected:
AIStateMachineThreadBase(void) { }
AIStateMachineThreadBase(CWD_ONLY(bool debug))
#ifdef CWDEBUG
: AIStateMachine(debug)
#endif
{ }
private:
// Handle initializing the object.
@@ -217,7 +221,10 @@ class AIStateMachineThread : public AIStateMachineThreadBase {
public:
// Constructor.
AIStateMachineThread(void)
AIStateMachineThread(CWD_ONLY(bool debug))
#ifdef CWDEBUG
: AIStateMachineThreadBase(debug)
#endif
{
*AIThreadImpl::StateMachineThread_wat(mThreadImpl.mStateMachineThread) = this;
}
@@ -225,6 +232,13 @@ class AIStateMachineThread : public AIStateMachineThreadBase {
// Accessor.
THREAD_IMPL& thread_impl(void) { return mThreadImpl; }
/*virtual*/ const char* getName() const
{
#define STRIZE(arg) #arg
return "AIStateMachineThread<"STRIZE(THREAD_IMPL)">";
#undef STRIZE
}
protected:
/*virtual*/ AIThreadImpl& impl(void) { return mThreadImpl; }
};

View File

@@ -76,7 +76,11 @@ class AITimer : public AIStateMachine {
F64 mInterval; //!< Input variable: interval after which the event will be generated, in seconds.
public:
AITimer(void) : mInterval(0) { DoutEntering(dc::statemachine, "AITimer(void) [" << (void*)this << "]"); }
AITimer(CWD_ONLY(bool debug = false)) :
#ifdef CWDEBUG
AIStateMachine(debug),
#endif
mInterval(0) { DoutEntering(dc::statemachine(mSMDebug), "AITimer(void) [" << (void*)this << "]"); }
/**
* @brief Set the interval after which the timer should expire.
@@ -94,9 +98,11 @@ class AITimer : public AIStateMachine {
*/
F64 getInterval(void) const { return mInterval; }
/*virtual*/ const char* getName() const { return "AITimer"; }
protected:
// Call finish() (or abort()), not delete.
/*virtual*/ ~AITimer() { DoutEntering(dc::statemachine, "~AITimer() [" << (void*)this << "]"); mFrameTimer.cancel(); }
/*virtual*/ ~AITimer() { DoutEntering(dc::statemachine(mSMDebug), "~AITimer() [" << (void*)this << "]"); mFrameTimer.cancel(); }
// Handle initializing the object.
/*virtual*/ void initialize_impl(void);

View File

@@ -12,11 +12,25 @@ include(Variables)
set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1")
set(CMAKE_CXX_FLAGS_RELEASE
"-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=1 -DNDEBUG")
"-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -D_SECURE_SCL=0 -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-DLL_RELEASE=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1")
"-DLL_RELEASE=1 -D_SECURE_SCL=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1")
# Configure crash reporting
set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds")
set(NON_RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in developer builds")
if(RELEASE_CRASH_REPORTING)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DLL_SEND_CRASH_REPORTS=1")
endif()
if(NON_RELEASE_CRASH_REPORTING)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLL_SEND_CRASH_REPORTS=1")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DLL_SEND_CRASH_REPORTS=1")
endif()
# Don't bother with a MinSizeRel build.
@@ -31,11 +45,17 @@ if (WINDOWS)
if (MSVC10)
set(MSVC_DIR 10.0)
set(MSVC_SUFFIX 100)
elseif (MSVC12)
set(MSVC_DIR 12.0)
set(MSVC_SUFFIX 120)
endif (MSVC10)
# Remove default /Zm1000 flag that cmake inserts
string (REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
# Always use /Zm140
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm140")
# Don't build DLLs.
set(BUILD_SHARED_LIBS OFF)
@@ -64,15 +84,27 @@ if (WINDOWS)
/W3
/c
/Zc:forScope
/Zc:wchar_t-
/Zc:wchar_t-
/nologo
/Oy-
/arch:SSE2
)
# SSE2 is implied on win64
if(WORD_SIZE EQUAL 32)
add_definitions(/arch:SSE2 /D_ATL_XP_TARGETING)
else(WORD_SIZE EQUAL 32)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4267 /wd4250 /wd4244")
endif(WORD_SIZE EQUAL 32)
# 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 (MSVC12)
# configure win32 API for windows vista+ compatibility
set(WINVER "0x0600" 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}")
else (MSVC12)
# 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}")
endif (MSVC12)
# Are we using the crummy Visual Studio KDU build workaround?
if (NOT DISABLE_FATAL_WARNINGS)
@@ -103,7 +135,7 @@ if (LINUX)
-pthread
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_FORTIFY_SOURCE=2 ")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 ")
# Don't catch SIGCHLD in our base application class for the viewer
# some of our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh!
@@ -222,30 +254,28 @@ endif (LINUX)
if (DARWIN)
add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE)
set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first")
add_definitions(-DLL_DARWIN=1)
set(CMAKE_CXX_LINK_FLAGS "-Wl,-no_compact_unwind -Wl,-headerpad_max_install_names,-search_paths_first")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
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_CXX_COMPILER_ID}" STREQUAL "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()
set(DARWIN_extra_cstar_flags "-g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags} -ftemplate-depth=256")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}")
# 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 "-O0 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS SSE3)
set(CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL -O3)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -msse3 ${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_C_FLAGS_RELEASE "-O3 -msse3 ${CMAKE_C_FLAGS_RELEASE}")
if (XCODE_VERSION GREATER 4.2)
set(ENABLE_SIGNING TRUE)
set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")
endif (XCODE_VERSION GREATER 4.2)
endif (DARWIN)
if (LINUX OR DARWIN)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_definitions(-DLL_GNUC=1)
@@ -253,13 +283,11 @@ if (LINUX OR DARWIN)
set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS} -Wno-reorder -Wno-non-virtual-dtor -Woverloaded-virtual")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_definitions(-DLL_CLANG=1)
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_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs -Wno-tautological-compare -Wno-char-subscripts -Wno-gnu -Wno-logical-op-parentheses -Wno-logical-not-parentheses -Wno-non-virtual-dtor -Wno-deprecated")
set(UNIX_WARNINGS "${UNIX_WARNINGS} -Woverloaded-virtual -Wno-parentheses-equality -Wno-reorder -Wno-unused-function -Wno-unused-value -Wno-unused-variable -Wno-unused-private-field -Wno-parentheses")
set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS}")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
add_definitions(-DLL_ICC=1)
set(UNIX_WARNINGS "-wd327 -wd597 -wd858")
set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS}")
endif ()
if (NOT DISABLE_FATAL_WARNINGS)

View File

@@ -14,25 +14,25 @@ else (STANDALONE)
use_prebuilt_binary(apr_suite)
if (WINDOWS)
set(APR_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.lib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.lib
debug libapr-1.lib
optimized libapr-1.lib
)
set(APRICONV_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapriconv-1.lib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapriconv-1.lib
debug libapriconv-1.lib
optimized libapriconv-1.lib
)
set(APRUTIL_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.lib ${APRICONV_LIBRARIES}
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.lib ${APRICONV_LIBRARIES}
debug libaprutil-1.lib
optimized libaprutil-1.lib
)
elseif (DARWIN)
set(APR_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.0.dylib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.0.dylib
debug libapr-1.0.dylib
optimized libapr-1.0.dylib
)
set(APRUTIL_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libaprutil-1.dylib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.dylib
set(APRUTIL_LIBRARIES
debug libaprutil-1.dylib
optimized libaprutil-1.dylib
)
set(APRICONV_LIBRARIES iconv)
else (WINDOWS)
@@ -40,7 +40,10 @@ else (STANDALONE)
set(APRUTIL_LIBRARIES aprutil-1)
set(APRICONV_LIBRARIES iconv)
endif (WINDOWS)
set(APR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/apr-1)
set(APR_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/include/apr-1
${LIBS_PREBUILT_LEGACY_DIR}/include/apr-1
)
if (LINUX)
list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES})

View File

@@ -9,7 +9,10 @@ if (STANDALONE)
pkg_check_modules(VORBISFILE REQUIRED vorbisfile)
else (STANDALONE)
use_prebuilt_binary(ogg-vorbis)
set(VORBIS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(VORBIS_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
set(VORBISENC_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
set(VORBISFILE_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})

View File

@@ -13,5 +13,8 @@ else (STANDALONE)
else (LINUX)
set(DB_LIBRARIES db-4.2)
endif (LINUX)
set(DB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(DB_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (STANDALONE)

View File

@@ -8,34 +8,80 @@ if (STANDALONE)
include(FindBoost)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost 1.40.0 COMPONENTS date_time filesystem program_options regex system thread wave)
find_package(Boost 1.51.0 COMPONENTS date_time filesystem program_options regex system thread wave context)
else (STANDALONE)
use_prebuilt_binary(boost)
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(Boost_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
set(Boost_VERSION "1.52")
if (WINDOWS)
set(BOOST_VERSION 1_45)
set(BOOST_OPTIM_SUFFIX mt)
set(BOOST_DEBUG_SUFFIX mt-gd)
set(Boost_CONTEXT_LIBRARY
optimized libboost_context-mt
debug libboost_context-mt-gd)
set(Boost_FILESYSTEM_LIBRARY
optimized libboost_filesystem-mt
debug libboost_filesystem-mt-gd)
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})
optimized libboost_program_options-mt
debug libboost_program_options-mt-gd)
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)
set(Boost_PROGRAM_OPTIONS_LIBRARY boost_program_options)
set(Boost_REGEX_LIBRARY boost_regex)
set(Boost_SYSTEM_LIBRARY boost_system)
set(Boost_DATE_TIME_LIBRARY boost_date_time)
optimized libboost_regex-mt
debug libboost_regex-mt-gd)
set(Boost_SIGNALS_LIBRARY
optimized libboost_signals-mt
debug libboost_signals-mt-gd)
set(Boost_SYSTEM_LIBRARY
optimized libboost_system-mt
debug libboost_system-mt-gd)
set(Boost_THREAD_LIBRARY
optimized libboost_thread-mt
debug libboost_thread-mt-gd)
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_DATE_TIME_LIBRARY boost_date_time-mt)
set(Boost_CONTEXT_LIBRARY
optimized boost_context-mt
debug boost_context-mt-d)
set(Boost_FILESYSTEM_LIBRARY
optimized boost_filesystem-mt
debug boost_filesystem-mt-d)
set(Boost_PROGRAM_OPTIONS_LIBRARY
optimized boost_program_options-mt
debug boost_program_options-mt-d)
set(Boost_REGEX_LIBRARY
optimized boost_regex-mt
debug boost_regex-mt-d)
set(Boost_SIGNALS_LIBRARY
optimized boost_signals-mt
debug boost_signals-mt-d)
set(Boost_SYSTEM_LIBRARY
optimized boost_system-mt
debug boost_system-mt-d)
set(Boost_THREAD_LIBRARY
optimized boost_thread-mt
debug boost_thread-mt-d)
elseif (DARWIN)
set(Boost_CONTEXT_LIBRARY
optimized boost_context-mt
debug boost_context-mt-d)
set(Boost_FILESYSTEM_LIBRARY
optimized boost_filesystem-mt
debug boost_filesystem-mt-d)
set(Boost_PROGRAM_OPTIONS_LIBRARY
optimized boost_program_options-mt
debug boost_program_options-mt-d)
set(Boost_REGEX_LIBRARY
optimized boost_regex-mt
debug boost_regex-mt-d)
set(Boost_SIGNALS_LIBRARY
optimized boost_signals-mt
debug boost_signals-mt-d)
set(Boost_SYSTEM_LIBRARY
optimized boost_system-mt
debug boost_system-mt-d)
set(Boost_THREAD_LIBRARY
optimized boost_thread-mt
debug boost_thread-mt-d)
endif (WINDOWS)
endif (STANDALONE)

View File

@@ -33,13 +33,49 @@ configure_file(
${CMAKE_SOURCE_DIR}/llcommon/llversionviewer.h
)
# Compose the version.
set(viewer_VERSION "${vMAJOR}.${vMINOR}.${vPATCH}.${vBUILD}")
if (viewer_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$")
message(STATUS "Version is ${viewer_VERSION}")
else (viewer_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$")
message(FATAL_ERROR "Could not determine version (${viewer_VERSION})")
endif (viewer_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$")
if (WINDOWS)
configure_file(
${CMAKE_SOURCE_DIR}/newview/res/viewerRes.rc.in
${CMAKE_SOURCE_DIR}/newview/res/viewerRes.rc
)
endif (WINDOWS)
if (DARWIN)
configure_file(
${CMAKE_SOURCE_DIR}/newview/English.lproj/InfoPlist.strings.in
${CMAKE_SOURCE_DIR}/newview/English.lproj/InfoPlist.strings
)
endif (DARWIN)
if (LINUX)
configure_file(
${CMAKE_SOURCE_DIR}/newview/linux_tools/wrapper.sh.in
${CMAKE_SOURCE_DIR}/newview/linux_tools/wrapper.sh
@ONLY
)
configure_file(
${CMAKE_SOURCE_DIR}/newview/linux_tools/handle_secondlifeprotocol.sh.in
${CMAKE_SOURCE_DIR}/newview/linux_tools/handle_secondlifeprotocol.sh
@ONLY
)
configure_file(
${CMAKE_SOURCE_DIR}/newview/linux_tools/install.sh.in
${CMAKE_SOURCE_DIR}/newview/linux_tools/install.sh
@ONLY
)
configure_file(
${CMAKE_SOURCE_DIR}/newview/linux_tools/refresh_desktop_app_entry.sh.in
${CMAKE_SOURCE_DIR}/newview/linux_tools/refresh_desktop_app_entry.sh
@ONLY
)
endif (LINUX)
# Compose the version.
set(${ROOT_PROJECT_NAME}_VERSION "${vMAJOR}.${vMINOR}.${vPATCH}.${vBUILD}")
if (${ROOT_PROJECT_NAME}_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$")
message(STATUS "Version is ${${ROOT_PROJECT_NAME}_VERSION}")
else (${ROOT_PROJECT_NAME}_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$")
message(FATAL_ERROR "Could not determine version (${${ROOT_PROJECT_NAME}_VERSION})")
endif (${ROOT_PROJECT_NAME}_VERSION MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$")
# Report version to caller.
#set(viewer_VERSION "${viewer_VERSION}" PARENT_SCOPE)

View File

@@ -13,12 +13,15 @@ else (STANDALONE)
add_definitions("-DCARES_STATICLIB")
set(CARES_LIBRARIES areslib)
elseif (DARWIN)
set(CARES_LIBRARIES
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libcares.a
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libcares.a
set(CARES_LIBRARIES
debug libcares.a
optimized libcares.a
)
else (WINDOWS)
set(CARES_LIBRARIES cares)
endif (WINDOWS)
set(CARES_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/ares)
set(CARES_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include/ares
${LIBS_PREBUILT_LEGACY_DIR}/include/ares
)
endif (STANDALONE)

View File

@@ -29,14 +29,15 @@ set(cmake_SOURCE_FILES
ELFIO.cmake
EXPAT.cmake
ExamplePlugin.cmake
FMOD.cmake
FMODEX.cmake
FMODSTUDIO.cmake
FindAPR.cmake
FindBerkeleyDB.cmake
FindCARes.cmake
FindColladadom.cmake
FindELFIO.cmake
FindGLOD.cmake
FindGoogleBreakpad.cmake
FindGooglePerfTools.cmake
FindHunSpell.cmake
FindJsonCpp.cmake
@@ -50,6 +51,7 @@ set(cmake_SOURCE_FILES
GStreamer010Plugin.cmake
Glui.cmake
Glut.cmake
GoogleBreakpad.cmake
GooglePerfTools.cmake
Hunspell.cmake
JPEG.cmake
@@ -59,7 +61,6 @@ set(cmake_SOURCE_FILES
LLAudio.cmake
LLCharacter.cmake
LLCommon.cmake
LLCrashLogger.cmake
LLImage.cmake
LLImageJ2COJ.cmake
LLInventory.cmake
@@ -69,6 +70,7 @@ set(cmake_SOURCE_FILES
LLPlugin.cmake
LLPrimitive.cmake
LLPhysicsExtensions.cmake
LLSharedLibs.cmake
LLQtWebkit.cmake
LLRender.cmake
LLUI.cmake
@@ -79,6 +81,7 @@ set(cmake_SOURCE_FILES
Linking.cmake
MediaPluginBase.cmake
NDOF.cmake
NVAPI.cmake
OPENAL.cmake
OpenGL.cmake
OpenJPEG.cmake

View File

@@ -18,5 +18,8 @@ else (STANDALONE)
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)
set(CURL_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (STANDALONE)

View File

@@ -1,6 +1,7 @@
# -*- cmake -*-
include(Prebuilt)
include(Boost)
set(COLLADADOM_FIND_QUIETLY OFF)
set(COLLADADOM_FIND_REQUIRED ON)
@@ -10,36 +11,47 @@ if (STANDALONE)
else (STANDALONE)
use_prebuilt_binary(colladadom)
if (NOT WINDOWS)
if (NOT WINDOWS AND NOT LINUX)
use_prebuilt_binary(pcre)
endif (NOT WINDOWS)
endif (NOT WINDOWS AND NOT LINUX)
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
)
${LIBS_PREBUILT_DIR}/include/collada
${LIBS_PREBUILT_DIR}/include/collada/1.4
${LIBS_PREBUILT_LEGACY_DIR}/include/collada
${LIBS_PREBUILT_LEGACY_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
if(MSVC12)
use_prebuilt_binary(pcre)
use_prebuilt_binary(libxml)
set(COLLADADOM_LIBRARIES
debug libcollada14dom23-sd
optimized libcollada14dom23-s
libxml2_a
debug pcrecppd
optimized pcrecpp
debug pcred
optimized pcre
${BOOST_SYSTEM_LIBRARIES}
)
else(MSVC12)
add_definitions(-DDOM_DYNAMIC)
set(COLLADADOM_LIBRARIES
debug libcollada14dom22-d
optimized libcollada14dom22
)
endif(MSVC12)
else (WINDOWS)
set(COLLADADOM_LIBRARIES
collada14dom
minizip
xml2
pcrecpp
pcre
)
endif (WINDOWS)
endif (STANDALONE)

View File

@@ -14,7 +14,7 @@ IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")
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_GUESS /usr/lib/x86_64-linux-gnu)
SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu)
endif (WORD_SIZE EQUAL 32)

View File

@@ -2,7 +2,7 @@
# Copies a binary back to the source directory
MACRO(COPY_BACK_TO_SOURCE target)
GET_TARGET_PROPERTY(FROM ${target} LOCATION)
SET(FROM $<TARGET_FILE:${target}>)
SET(TO ${CMAKE_CURRENT_SOURCE_DIR})
#MESSAGE("TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${FROM} ${TO}")
ADD_CUSTOM_COMMAND(

View File

@@ -1,395 +0,0 @@
# -*- cmake -*-
# The copy_win_libs folder contains file lists and a script used to
# copy dlls, exes and such needed to run the SecondLife from within
# VisualStudio.
include(CMakeCopyIfDifferent)
set(vivox_src_dir "${CMAKE_SOURCE_DIR}/newview/vivox-runtime/i686-win32")
set(vivox_files
SLVoice.exe
alut.dll
vivoxsdk.dll
ortp.dll
wrap_oal.dll
)
copy_if_different(
${vivox_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/Debug"
out_targets
${vivox_files}
)
set(all_targets ${all_targets} ${out_targets})
set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug")
set(debug_files
libhunspell.dll
libapr-1.dll
libaprutil-1.dll
libapriconv-1.dll
libeay32.dll
ssleay32.dll
libcollada14dom22-d.dll
glod.dll
)
copy_if_different(
${debug_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/Debug"
out_targets
${debug_files}
)
set(all_targets ${all_targets} ${out_targets})
# Debug config runtime files required for the plugin test mule
set(plugintest_debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug")
set(plugintest_debug_files
libeay32.dll
qtcored4.dll
qtguid4.dll
qtnetworkd4.dll
qtopengld4.dll
qtwebkitd4.dll
ssleay32.dll
)
copy_if_different(
${plugintest_debug_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/Debug"
out_targets
${plugintest_debug_files}
)
set(all_targets ${all_targets} ${out_targets})
# Debug config runtime files required for the plugin test mule (Qt image format plugins)
set(plugintest_debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug/imageformats")
set(plugintest_debug_files
qgifd4.dll
qicod4.dll
qjpegd4.dll
qmngd4.dll
qsvgd4.dll
qtiffd4.dll
)
copy_if_different(
${plugintest_debug_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/Debug/imageformats"
out_targets
${plugintest_debug_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_debug_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/llplugin/imageformats"
out_targets
${plugintest_debug_files}
)
set(all_targets ${all_targets} ${out_targets})
# Release & ReleaseDebInfo config runtime files required for the plugin test mule
set(plugintest_release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release")
set(plugintest_release_files
libeay32.dll
qtcore4.dll
qtgui4.dll
qtnetwork4.dll
qtopengl4.dll
qtwebkit4.dll
ssleay32.dll
)
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/Release"
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"
out_targets
${plugintest_release_files}
)
set(all_targets ${all_targets} ${out_targets})
# Release & ReleaseDebInfo config runtime files required for the plugin test mule (Qt image format plugins)
set(plugintest_release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release/imageformats")
set(plugintest_release_files
qgif4.dll
qico4.dll
qjpeg4.dll
qmng4.dll
qsvg4.dll
qtiff4.dll
)
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/../test_apps/llplugintest/Release/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"
out_targets
${plugintest_release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${plugintest_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/Release/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"
out_targets
${plugintest_release_files}
)
set(all_targets ${all_targets} ${out_targets})
# Debug config runtime files required for the plugins
set(plugins_debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug")
set(plugins_debug_files
libeay32.dll
qtcored4.dll
qtguid4.dll
qtnetworkd4.dll
qtopengld4.dll
qtwebkitd4.dll
ssleay32.dll
)
copy_if_different(
${plugins_debug_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/Debug/llplugin"
out_targets
${plugins_debug_files}
)
set(all_targets ${all_targets} ${out_targets})
# Release & ReleaseDebInfo config runtime files required for the plugins
set(plugins_release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release")
set(plugins_release_files
libeay32.dll
qtcore4.dll
qtgui4.dll
qtnetwork4.dll
qtopengl4.dll
qtwebkit4.dll
ssleay32.dll
)
copy_if_different(
${plugins_release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/Release/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"
out_targets
${plugins_release_files}
)
set(all_targets ${all_targets} ${out_targets})
set(release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release")
set(release_files
libtcmalloc_minimal.dll
libhunspell.dll
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}"
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}/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
${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}/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(
${release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/Release"
out_targets
${release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${vivox_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/Release"
out_targets
${vivox_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${release_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo"
out_targets
${release_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${vivox_src_dir}
"${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo"
out_targets
${vivox_files}
)
set(all_targets ${all_targets} ${out_targets})
# Copy MS C runtime dlls, required for packaging.
# *TODO - Adapt this to support VC9
if (MSVC80)
FIND_PATH(debug_msvc8_redist_path msvcr80d.dll
PATHS
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT
NO_DEFAULT_PATH
NO_DEFAULT_PATH
)
if(EXISTS ${debug_msvc8_redist_path})
set(debug_msvc8_files
msvcr80d.dll
msvcp80d.dll
Microsoft.VC80.DebugCRT.manifest
)
copy_if_different(
${debug_msvc8_redist_path}
"${CMAKE_CURRENT_BINARY_DIR}/Debug"
out_targets
${debug_msvc8_files}
)
set(all_targets ${all_targets} ${out_targets})
set(debug_appconfig_file ${CMAKE_CURRENT_BINARY_DIR}/Debug/${VIEWER_BINARY_NAME}.exe.config)
add_custom_command(
OUTPUT ${debug_appconfig_file}
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/build_win32_appConfig.py
${CMAKE_CURRENT_BINARY_DIR}/Debug/Microsoft.VC80.DebugCRT.manifest
${CMAKE_CURRENT_SOURCE_DIR}/SecondLifeDebug.exe.config
${debug_appconfig_file}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Debug/Microsoft.VC80.DebugCRT.manifest
COMMENT "Creating debug app config file"
)
endif (EXISTS ${debug_msvc8_redist_path})
FIND_PATH(release_msvc8_redist_path msvcr80.dll
PATHS
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC80.CRT
NO_DEFAULT_PATH
NO_DEFAULT_PATH
)
if(EXISTS ${release_msvc8_redist_path})
set(release_msvc8_files
msvcr80.dll
msvcp80.dll
Microsoft.VC80.CRT.manifest
)
copy_if_different(
${release_msvc8_redist_path}
"${CMAKE_CURRENT_BINARY_DIR}/Release"
out_targets
${release_msvc8_files}
)
set(all_targets ${all_targets} ${out_targets})
copy_if_different(
${release_msvc8_redist_path}
"${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo"
out_targets
${release_msvc8_files}
)
set(all_targets ${all_targets} ${out_targets})
set(release_appconfig_file ${CMAKE_CURRENT_BINARY_DIR}/Release/${VIEWER_BINARY_NAME}.exe.config)
add_custom_command(
OUTPUT ${release_appconfig_file}
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/build_win32_appConfig.py
${CMAKE_CURRENT_BINARY_DIR}/Release/Microsoft.VC80.CRT.manifest
${CMAKE_CURRENT_SOURCE_DIR}/SecondLife.exe.config
${release_appconfig_file}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Release/Microsoft.VC80.CRT.manifest
COMMENT "Creating release app config file"
)
set(relwithdebinfo_appconfig_file ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/${VIEWER_BINARY_NAME}.exe.config)
add_custom_command(
OUTPUT ${relwithdebinfo_appconfig_file}
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/build_win32_appConfig.py
${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/Microsoft.VC80.CRT.manifest
${CMAKE_CURRENT_SOURCE_DIR}/SecondLife.exe.config
${relwithdebinfo_appconfig_file}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/Microsoft.VC80.CRT.manifest
COMMENT "Creating relwithdebinfo app config file"
)
endif (EXISTS ${release_msvc8_redist_path})
endif (MSVC80)
add_custom_target(copy_win_libs ALL
DEPENDS
${all_targets}
${release_appconfig_file}
${relwithdebinfo_appconfig_file}
${debug_appconfig_file}
)
add_dependencies(copy_win_libs prepare)

View File

@@ -0,0 +1,181 @@
# -*- cmake -*-
# The copy_win_libs folder contains file lists and a script used to
# copy dlls, exes and such needed to run the SecondLife from within
# VisualStudio.
set(LIBS_PREBUILT_DIR "@LIBS_PREBUILT_DIR@")
set(LIBS_PREBUILT_LEGACY_DIR "@LIBS_PREBUILT_LEGACY_DIR@")
set(MSVC10 "@MSVC10@")
set(WORD_SIZE "@WORD_SIZE@")
set(LIBS_RELEASE_DIR
${LIBS_PREBUILT_DIR}/lib/release
${LIBS_PREBUILT_LEGACY_DIR}/lib/release
)
set(LIBS_DEBUG_DIR
${LIBS_PREBUILT_DIR}/lib/debug
${LIBS_PREBUILT_LEGACY_DIR}/lib/debug
)
function(copy_files paths names dest)
string(FIND ${dest} ${CUR_CONFIG} idx)
if(${idx} LESS 0)
return()
endif(${idx} LESS 0)
foreach(f ${names})
foreach(p ${paths})
set(from_file "${p}/${f}")
set(to_dest "${CMAKE_BINARY_DIR}/newview/${dest}/")
if(EXISTS ${from_file})
message("Copying ${from_file} to ${to_dest}")
if(NOT EXISTS ${to_dest})
execute_process(COMMAND md "${to_dest}")
endif(NOT EXISTS ${to_dest})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${from_file}" "${to_dest}${f}" RESULT_VARIABLE result)
if(${result})
message(SEND_ERROR "Unsuccessful.")
endif(${result})
set(found 1)
break()
endif(EXISTS ${from_file})
endforeach(p)
if(NOT found)
message(SEND_ERROR "Failed to find library: ${f}")
endif(NOT found)
endforeach(f)
endfunction(copy_files)
set(vivox_files
ca-bundle.crt
libsndfile-1.dll
ortp.dll
SLVoice.exe
vivoxoal.dll
vivoxplatform.dll
vivoxsdk.dll
zlib1.dll
)
copy_files("${LIBS_RELEASE_DIR}" "${vivox_files}" "Release" )
copy_files("${LIBS_RELEASE_DIR}" "${vivox_files}" "RelWithDebInfo")
copy_files("${LIBS_DEBUG_DIR}" "${vivox_files}" "Debug")
set(release_files
libhunspell.dll
libapr-1.dll
libaprutil-1.dll
libapriconv-1.dll
libeay32.dll
ssleay32.dll
glod.dll
qtcore4.dll
)
copy_files("${LIBS_RELEASE_DIR}" "${release_files}" "Release")
copy_files("${LIBS_RELEASE_DIR}" "${release_files}" "RelWithDebInfo")
copy_files("${LIBS_DEBUG_DIR}" "${release_files}" "Debug")
if(MSVC10)
copy_files("${LIBS_DEBUG_DIR}" "libcollada14dom22-d.dll" "Debug")
endif(MSVC10)
if(WORD_SIZE EQUAL 32)
set(release_files
libcollada14dom22.dll
libtcmalloc_minimal.dll
)
copy_files("${LIBS_RELEASE_DIR}" "${release_files}" "Release")
copy_files("${LIBS_RELEASE_DIR}" "${release_files}" "RelWithDebInfo")
endif(WORD_SIZE EQUAL 32)
set(plugins_release_files
libeay32.dll
qtcore4.dll
qtgui4.dll
qtnetwork4.dll
qtopengl4.dll
qtwebkit4.dll
ssleay32.dll
qtxmlpatterns4.dll
)
copy_files("${LIBS_RELEASE_DIR}" "${plugins_release_files}" "Release/llplugin")
copy_files("${LIBS_RELEASE_DIR}" "${plugins_release_files}" "RelWithDebInfo/llplugin")
if(0)
copy_files("${LIBS_RELEASE_DIR}" "${plugin_release_files}" "../test_apps/llplugintest/Release")
copy_files("${LIBS_RELEASE_DIR}" "${plugin_release_files}" "../test_apps/llplugintest/RelWithDebInfo")
endif(0)
# Debug config runtime files required for the plugins
set(plugins_debug_files
libeay32.dll
qtcored4.dll
qtguid4.dll
qtnetworkd4.dll
qtopengld4.dll
qtwebkitd4.dll
ssleay32.dll
qtxmlpatternsd4.dll
)
copy_files("${LIBS_DEBUG_DIR}" "${plugins_debug_files}" "Debug/llplugin")
if(0)
copy_files("${LIBS_DEBUG_DIR}" "${plugins_debug_files}" "../test_apps/llplugintest/Debug")
endif(0)
# Release & ReleaseDebInfo config runtime files required for the plugin test mule (Qt image format plugins)
set(plugin_image_release_files
qgif4.dll
qico4.dll
qjpeg4.dll
qmng4.dll
qsvg4.dll
qtiff4.dll
)
copy_files("${LIBS_RELEASE_DIR}/imageformats" "${plugin_image_release_files}" "Release/llplugin/imageformats")
copy_files("${LIBS_RELEASE_DIR}/imageformats" "${plugin_image_release_files}" "RelWithDebInfo/llplugin/imageformats")
if(0)
copy_files("${LIBS_RELEASE_DIR}/imageformats" "${plugin_image_release_files}" "../test_apps/llplugintest/imageformats/Release")
copy_files("${LIBS_RELEASE_DIR}/imageformats" "${plugin_image_release_files}" "../test_apps/llplugintest/imageformats/RelWithDebInfo")
endif(0)
# Debug config runtime files required for the plugin test mule (Qt image format plugins)
set(plugin_image_debug_files
qgifd4.dll
qicod4.dll
qjpegd4.dll
qmngd4.dll
qsvgd4.dll
qtiffd4.dll
)
copy_files("${LIBS_DEBUG_DIR}/imageformats" "${plugin_image_debug_files}" "Debug/llplugin/imageformats")
if(0)
copy_files("${LIBS_DEBUG_DIR}/imageformats" "${plugin_image_debug_files}" "../test_apps/llplugintest/imageformats/Debug")
endif(0)
# Release & ReleaseDebInfo config runtime files required for the plugin test mule (Qt image format plugins)
set(plugin_codec_release_files
qcncodecs4.dll
qjpcodecs4.dll
qkrcodecs4.dll
qtwcodecs4.dll
)
copy_files("${LIBS_RELEASE_DIR}/codecs" "${plugin_codec_release_files}" "Release/llplugin/codecs")
copy_files("${LIBS_RELEASE_DIR}/codecs" "${plugin_codec_release_files}" "RelWithDebInfo/llplugin/codecs")
if(0)
copy_files("${LIBS_RELEASE_DIR}/codecs" "${plugin_codec_release_files}" "../test_apps/llplugintest/codecs/Release")
copy_files("${LIBS_RELEASE_DIR}/codecs" "${plugin_codec_release_files}" "../test_apps/llplugintest/codecs/RelWithDebInfo")
endif(0)
# Debug config runtime files required for the plugin test mule (Qt image format plugins)
set(plugin_codec_debug_files
qcncodecsd4.dll
qjpcodecsd4.dll
qkrcodecsd4.dll
qtwcodecsd4.dll
)
copy_files("${LIBS_DEBUG_DIR}/codecs" "${plugin_codec_debug_files}" "Debug/llplugin/codecs")
if(0)
copy_files("${LIBS_DEBUG_DIR}/codecs" "${plugin_codec_debug_files}" "../test_apps/llplugintest/codecs/Debug")
endif(0)

View File

@@ -10,8 +10,9 @@ elseif (LINUX)
use_prebuilt_binary(dbusglib)
set(DBUSGLIB_FOUND ON FORCE BOOL)
set(DBUSGLIB_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/dbus
)
${LIBS_PREBUILT_DIR}/include/dbus
${LIBS_PREBUILT_LEGACY_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

View File

@@ -1,18 +1,67 @@
# -*- cmake -*-
include(Variables)
if (WINDOWS)
find_path(DIRECTX_INCLUDE_DIR dxdiag.h
"$ENV{DXSDK_DIR}/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (November 2007)/Include"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2007)/Include"
"C:/DX90SDK/Include"
"$ENV{PROGRAMFILES}/DX90SDK/Include"
if (WORD_SIZE EQUAL 32)
set (DIRECTX_ARCHITECTURE x86)
elseif (WORD_SIZE EQUAL 64)
set (DIRECTX_ARCHITECTURE x64)
else (WORD_SIZE EQUAL 32)
set (DIRECTX_ARCHITECTURE x86)
endif (WORD_SIZE EQUAL 32)
SET(program_files $ENV{ProgramW6432})
if(NOT program_files)
SET(program_files $ENV{ProgramFiles})
endif(NOT program_files)
SET(program_files_x86 "ProgramFiles(x86)")
SET(program_files_x86 $ENV{${program_files_x86}})
find_path(DIRECTX_ROOT_DIR Include/dxdiag.h
PATHS
"$ENV{DXSDK_DIR}"
"${program_files}/Microsoft DirectX SDK (June 2010)"
"${program_files_x86}/Microsoft DirectX SDK (June 2010)"
"${program_files}/Microsoft DirectX SDK (February 2010)"
"${program_files_x86}/Microsoft DirectX SDK (February 2010)"
"${program_files}/Microsoft DirectX SDK (March 2009)"
"${program_files_x86}/Microsoft DirectX SDK (March 2009)"
"${program_files}/Microsoft DirectX SDK (August 2008)"
"${program_files_x86}/Microsoft DirectX SDK (August 2008)"
"${program_files}/Microsoft DirectX SDK (June 2008)"
"${program_files_x86}/Microsoft DirectX SDK (June 2008)"
"${program_files}/Microsoft DirectX SDK (March 2008)"
"${program_files_x86}/Microsoft DirectX SDK (March 2008)"
"${program_files}/Microsoft DirectX SDK (November 2007)"
"${program_files_x86}/Microsoft DirectX SDK (November 2007)"
"${program_files}/Microsoft DirectX SDK (August 2007)"
"${program_files_x86}/Microsoft DirectX SDK (August 2007)"
)
if (DIRECTX_ROOT_DIR)
set (DIRECTX_INCLUDE_DIR "${DIRECTX_ROOT_DIR}/Include")
set (DIRECTX_LIBRARY_DIR "${DIRECTX_ROOT_DIR}/Lib/${DIRECTX_ARCHITECTURE}")
else (DIRECTX_ROOT_DIR)
find_path (WIN_KIT_ROOT_DIR Include/um/windows.h
PATHS
"${program_files}/Windows Kits/8.1"
"${program_files_x86}/Windows Kits/8.1"
"${program_files}/Windows Kits/8.0"
"${program_files_x86}/Windows Kits/8.0"
)
find_path (WIN_KIT_LIB_DIR dxguid.lib
"${WIN_KIT_ROOT_DIR}/Lib/winv6.3/um/${DIRECTX_ARCHITECTURE}"
"${WIN_KIT_ROOT_DIR}/Lib/Win8/um/${DIRECTX_ARCHITECTURE}"
)
if (WIN_KIT_ROOT_DIR AND WIN_KIT_LIB_DIR)
set (DIRECTX_INCLUDE_DIR "${WIN_KIT_ROOT_DIR}/Include/um" "${WIN_KIT_ROOT_DIR}/Include/shared")
set (DIRECTX_LIBRARY_DIR "${WIN_KIT_LIB_DIR}")
endif (WIN_KIT_ROOT_DIR AND WIN_KIT_LIB_DIR)
endif (DIRECTX_ROOT_DIR)
if (DIRECTX_INCLUDE_DIR)
include_directories(${DIRECTX_INCLUDE_DIR})
if (DIRECTX_FIND_QUIETLY)
@@ -22,19 +71,6 @@ if (WINDOWS)
message(FATAL_ERROR "Could not find DirectX SDK Include")
endif (DIRECTX_INCLUDE_DIR)
find_path(DIRECTX_LIBRARY_DIR dxguid.lib
"$ENV{DXSDK_DIR}/Lib/x86"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Lib/x86"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Lib/x86"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Lib/x86"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (November 2007)/Lib/x86"
"$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2007)/Lib/x86"
"C:/DX90SDK/Lib"
"$ENV{PROGRAMFILES}/DX90SDK/Lib"
)
if (DIRECTX_LIBRARY_DIR)
if (DIRECTX_FIND_QUIETLY)
message(STATUS "Found DirectX include: ${DIRECTX_LIBRARY_DIR}")

View File

@@ -2,7 +2,7 @@
# The top-level CMakeLists.txt configures packages and tool locations.
set(packages "@PREBUILT_PACKAGES@")
set(python "@PYTHON_EXECUTABLE@")
set(install_dir "@CMAKE_SOURCE_DIR@/..")
set(install_dir "@CMAKE_BINARY_DIR@/packages")
set(scp "@SCP_EXECUTABLE@")
set(scripts_dir "@SCRIPTS_DIR@")
set(sentinel_dir "@CMAKE_BINARY_DIR@/prepare")
@@ -20,7 +20,7 @@ foreach(package ${packages})
# This package is missing or out of date.
message(STATUS "Obtaining${proprietary_message} prebuilt '${package}'")
execute_process(
COMMAND ${python} install.py -p${prebuilt_type} --install-dir=${install_dir} ${scp_option} ${package}
COMMAND ${python} install.py -p${prebuilt_type} --install-dir=${install_dir} --installed-manifest=${install_dir}/installed.xml ${scp_option} ${package}
WORKING_DIRECTORY ${scripts_dir}
RESULT_VARIABLE result
)

View File

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

View File

@@ -9,9 +9,16 @@ if (STANDALONE)
else (STANDALONE)
use_prebuilt_binary(expat)
if (WINDOWS)
set(EXPAT_LIBRARIES libexpatMT)
if (MSVC12)
set(EXPAT_LIBRARIES expat)
else (MSVC12)
set(EXPAT_LIBRARIES libexpatMT)
endif (MSVC12)
else (WINDOWS)
set(EXPAT_LIBRARIES expat)
endif (WINDOWS)
set(EXPAT_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(EXPAT_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (STANDALONE)

View File

@@ -1,52 +0,0 @@
# -*- cmake -*-
include(Linking)
if(INSTALL_PROPRIETARY)
include(Prebuilt)
use_prebuilt_binary(fmod)
endif(INSTALL_PROPRIETARY)
find_library(FMOD_LIBRARY
NAMES fmod fmodvc fmod-3.75
PATHS
optimized ${ARCH_PREBUILT_DIRS_RELEASE}
debug ${ARCH_PREBUILT_DIRS_DEBUG}
)
if (NOT FMOD_LIBRARY)
set(FMOD_SDK_DIR CACHE PATH "Path to the FMOD SDK.")
if (FMOD_SDK_DIR)
find_library(FMOD_LIBRARY
NAMES fmodvc fmod-3.75 fmod
PATHS
${FMOD_SDK_DIR}/api/lib
${FMOD_SDK_DIR}/api
${FMOD_SDK_DIR}/lib
${FMOD_SDK_DIR}
)
endif (FMOD_SDK_DIR)
endif (NOT FMOD_LIBRARY)
find_path(FMOD_INCLUDE_DIR fmod.h
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include
${FMOD_SDK_DIR}/api/inc
${FMOD_SDK_DIR}/inc
${FMOD_SDK_DIR}
)
if (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
set(FMOD ON CACHE BOOL "Use closed source FMOD sound library.")
else (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
set(FMOD_LIBRARY "")
set(FMOD_INCLUDE_DIR "")
if (FMOD)
message(STATUS "No support for FMOD audio (need to set FMOD_SDK_DIR?)")
endif (FMOD)
set(FMOD OFF CACHE BOOL "Use closed source FMOD sound library.")
endif (FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
if (FMOD)
message(STATUS "Building with FMOD audio support")
endif (FMOD)

View File

@@ -2,71 +2,115 @@
include(Linking)
if (NOT FMODEX_LIBRARY)
set(FMODEX_SDK_DIR CACHE PATH "Path to the FMOD Ex SDK.")
if (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
PATHS
"${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)
endif(WINDOWS AND NOT FMODEX_LIBRARY)
endif (NOT FMODEX_LIBRARY)
if (FMODEX AND FMODSTUDIO)
message( FATAL_ERROR "You can not enable two FMOD variants at the same time." )
endif (FMODEX AND FMODSTUDIO)
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}"
)
unset(FMOD_LIBRARY_RELEASE CACHE)
unset(FMOD_LIBRARY_DEBUG CACHE)
unset(FMOD_INCLUDE_DIR CACHE)
if(DARWIN)
set(FMODEX_ORIG_LIBRARY "${FMODEX_LIBRARY}")
set(FMODEX_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/libfmodex.dylib")
endif(DARWIN)
set(FMOD_EXTERNAL_LIB OFF)
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)
set(FMODEX_LIBRARY "")
set(FMODEX_INCLUDE_DIR "")
if (FMODEX)
message(STATUS "No support for FMOD Ex audio (need to set FMODEX_SDK_DIR?)")
endif (FMODEX)
set(FMODEX OFF CACHE BOOL "Use closed source FMOD Ex sound library.")
if(STANDALONE OR WINDOWS)
if (NOT FMODEX_SDK_DIR AND WINDOWS)
GET_FILENAME_COMPONENT(REG_DIR [HKEY_CURRENT_USER\\Software\\FMOD\ Programmers\ API\ Windows] ABSOLUTE)
set(FMODEX_SDK_DIR ${REG_DIR} CACHE PATH "Path to the FMOD Ex SDK." FORCE)
endif (NOT FMODEX_SDK_DIR AND WINDOWS)
if(NOT FMODEX_SDK_DIR AND STANDALONE)
message(FATAL_ERROR "FMODEX_SDK_DIR not set!")
endif(NOT FMODEX_SDK_DIR AND STANDALONE)
endif(STANDALONE OR WINDOWS)
if(FMODEX_SDK_DIR)
set(fmod_lib_paths "${FMODEX_SDK_DIR}/api" "${FMODEX_SDK_DIR}/api/lib" )
set(fmod_inc_paths "${FMODEX_SDK_DIR}/api/inc")
if(WINDOWS)
set(CMAKE_FIND_LIBRARY_SUFFIXES_OLD ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES .dll)
endif(WINDOWS)
if(WORD_SIZE EQUAL 64)
find_library(FMOD_LIBRARY_RELEASE fmodex64 PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
find_library(FMOD_LIBRARY_DEBUG fmodexL64 PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
else(WORD_SIZE EQUAL 64)#Check if CMAKE_FIND_LIBRARY_PREFIXES is set to 'lib' for darwin.
find_library(FMOD_LIBRARY_RELEASE fmodex PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
find_library(FMOD_LIBRARY_DEBUG fmodexL PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
endif(WORD_SIZE EQUAL 64)
if(WINDOWS)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_OLD})
if(WORD_SIZE EQUAL 64)
find_library(FMOD_LINK_LIBRARY_RELEASE fmodex64_vc PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
find_library(FMOD_LINK_LIBRARY_DEBUG fmodexL64_vc PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
else(WORD_SIZE EQUAL 64)#Check if CMAKE_FIND_LIBRARY_PREFIXES is set to 'lib' for darwin.
find_library(FMOD_LINK_LIBRARY_RELEASE fmodex_vc PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
find_library(FMOD_LINK_LIBRARY_DEBUG fmodexL_vc PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
endif(WORD_SIZE EQUAL 64)
else(WINDOWS)
set(FMOD_LINK_LIBRARY_RELEASE ${FMOD_LIBRARY_RELEASE})
set(FMOD_LINK_LIBRARY_DEBUG ${FMOD_LIBRARY_DEBUG})
endif(WINDOWS)
find_path(FMOD_INCLUDE_DIR fmod.hpp ${fmod_inc_paths})
if(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
if(STANDALONE)
message(FATAL_ERROR "Provided FMODEX_SDK_DIR path not found '{$FMODEX_SDK_DIR}'")
else(STANDALONE)
message(STATUS "Provided FMODEX_SDK_DIR path not found '${FMODEX_SDK_DIR}'. Falling back to prebuilts")
endif(STANDALONE)
else(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
message(STATUS "Using system-provided FMOD Ex Libraries")
set(FMOD_EXTERNAL_LIB ON)
endif(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
endif (FMODEX_SDK_DIR)
if (NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
if(WINDOWS)
set(lib_suffix .dll)
elseif(DARWIN)
set(lib_suffix .dylib)
else(WINDOWS)
set(lib_suffix .so)
endif(WINDOWS)
if(WINDOWS)
if(WORD_SIZE EQUAL 64)
set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/fmodex64${lib_suffix})
set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/fmodexL64${lib_suffix})
else(WORD_SIZE EQUAL 64)
set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/fmodex${lib_suffix})
set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/fmodexL${lib_suffix})
endif(WORD_SIZE EQUAL 64)
else(WINDOWS)
if(WORD_SIZE EQUAL 64)
set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/libfmodex64${lib_suffix})
set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/libfmodex64L${lib_suffix})
else(WORD_SIZE EQUAL 64)
set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/libfmodex${lib_suffix})
set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/libfmodexL${lib_suffix})
endif(WORD_SIZE EQUAL 64)
endif(WINDOWS)
set(FMOD_LINK_LIBRARY_RELEASE ${FMOD_LIBRARY_RELEASE})
set(FMOD_LINK_LIBRARY_DEBUG ${FMOD_LIBRARY_DEBUG})
if(WINDOWS)
string(REPLACE ".dll" "_vc.lib" FMOD_LINK_LIBRARY_RELEASE ${FMOD_LIBRARY_RELEASE})
string(REPLACE ".dll" "_vc.lib" FMOD_LINK_LIBRARY_DEBUG ${FMOD_LIBRARY_DEBUG})
endif(WINDOWS)
use_prebuilt_binary(fmodex)
set(FMOD_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/include/fmodex)
endif(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
if(FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR)
set(FMOD ON)
if (NOT FMOD_LIBRARY_DEBUG) #Use release library in debug configuration if debug library is absent.
set(FMOD_LIBRARY_DEBUG ${FMOD_LIBRARY_RELEASE})
endif (NOT FMOD_LIBRARY_DEBUG)
else (FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR)
message(STATUS "No support for FMOD EX audio (need to set FMODEX_SDK_DIR?)")
set(FMOD OFF)
set(FMODEX OFF)
endif (FMODEX_LIBRARY AND FMODEX_INCLUDE_DIR)
endif (FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR)
if (FMODEX)
if (FMOD)
message(STATUS "Building with FMOD Ex audio support")
endif (FMODEX)
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX")
endif (FMOD)

View File

@@ -0,0 +1,112 @@
# -*- cmake -*-
include(Linking)
if (FMODEX AND FMODSTUDIO)
message( FATAL_ERROR "You can not enable two FMOD variants at the same time." )
endif (FMODEX AND FMODSTUDIO)
unset(FMOD_LIBRARY_RELEASE CACHE)
unset(FMOD_LIBRARY_DEBUG CACHE)
unset(FMOD_INCLUDE_DIR CACHE)
set(FMOD_EXTERNAL_LIB OFF)
if(STANDALONE OR WINDOWS)
if (NOT FMODSTUDIO_SDK_DIR AND WINDOWS)
#GET_FILENAME_COMPONENT(REG_DIR [HKEY_CURRENT_USER\\Software\\FMOD\ Studio\ API\ Windows] ABSOLUTE)
#set(FMODSTUDIO_SDK_DIR ${REG_DIR} CACHE PATH "Path to the FMOD Studio SDK." FORCE)
endif (NOT FMODSTUDIO_SDK_DIR AND WINDOWS)
if(NOT FMODSTUDIO_SDK_DIR AND STANDALONE)
message(FATAL_ERROR "FMODSTUDIO_SDK_DIR not set!")
endif(NOT FMODSTUDIO_SDK_DIR AND STANDALONE)
endif(STANDALONE OR WINDOWS)
if(FMODSTUDIO_SDK_DIR)
if(LINUX AND WORD_SIZE EQUAL 32)
set(fmod_lib_paths "${FMODSTUDIO_SDK_DIR}/api/lowlevel/lib/x86" )
elseif(LINUX)
set(fmod_lib_paths "${FMODSTUDIO_SDK_DIR}/api/lowlevel/lib/x86_64")
else(LINUX AND WORD_SIZE EQUAL 32)
set(fmod_lib_paths "${FMODSTUDIO_SDK_DIR}/api/lowlevel/lib")
endif(LINUX AND WORD_SIZE EQUAL 32)
set(fmod_inc_paths "${FMODSTUDIO_SDK_DIR}/api/lowlevel/inc")
if(WINDOWS)
set(CMAKE_FIND_LIBRARY_SUFFIXES_OLD ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES .dll)
endif(WINDOWS)
if(WORD_SIZE EQUAL 64 AND WINDOWS)
find_library(FMOD_LIBRARY_RELEASE fmod64 PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
find_library(FMOD_LIBRARY_DEBUG fmodL64 PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
else(WORD_SIZE EQUAL 64 AND WINDOWS)#Check if CMAKE_FIND_LIBRARY_PREFIXES is set to 'lib' for darwin.
find_library(FMOD_LIBRARY_RELEASE fmod PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
find_library(FMOD_LIBRARY_DEBUG fmodL PATHS ${fmod_lib_paths} NO_DEFAULT_PATH)
endif(WORD_SIZE EQUAL 64 AND WINDOWS)
if(WINDOWS)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_OLD})
string(REPLACE ".dll" "_vc.lib" FMOD_LINK_LIBRARY_RELEASE ${FMOD_LIBRARY_RELEASE})
string(REPLACE ".dll" "_vc.lib" FMOD_LINK_LIBRARY_DEBUG ${FMOD_LIBRARY_DEBUG})
else(WINDOWS)
set(FMOD_LINK_LIBRARY_RELEASE ${FMOD_LIBRARY_RELEASE})
set(FMOD_LINK_LIBRARY_DEBUG ${FMOD_LIBRARY_DEBUG})
endif(WINDOWS)
find_path(FMOD_INCLUDE_DIR fmod.hpp ${fmod_inc_paths})
if(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
if(STANDALONE)
message(FATAL_ERROR "Provided FMODSTUDIO_SDK_DIR path not found '{$FMODSTUDIO_SDK_DIR}'")
else(STANDALONE)
message(STATUS "Provided FMODSTUDIO_SDK_DIR path not found '${FMODSTUDIO_SDK_DIR}'. Falling back to prebuilts")
endif(STANDALONE)
else(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
message(STATUS "Using system-provided FMOD Studio Libraries")
set(FMOD_EXTERNAL_LIB ON)
endif(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
endif (FMODSTUDIO_SDK_DIR)
if (NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
if(WINDOWS)
set(lib_suffix .dll)
elseif(DARWIN)
set(lib_suffix .dylib)
else(WINDOWS)
set(lib_suffix .so)
endif(WINDOWS)
if(WINDOWS)
if(WORD_SIZE EQUAL 64)
set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/fmod64${lib_suffix})
set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/fmodL64${lib_suffix})
else(WORD_SIZE EQUAL 64)
set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/fmod${lib_suffix})
set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/fmodL${lib_suffix})
endif(WORD_SIZE EQUAL 64)
else(WINDOWS)
set(FMOD_LIBRARY_RELEASE ${LIBS_PREBUILT_DIR}/lib/release/libfmod${lib_suffix})
set(FMOD_LIBRARY_DEBUG ${LIBS_PREBUILT_DIR}/lib/debug/libfmodL${lib_suffix})
endif(WINDOWS)
set(FMOD_LINK_LIBRARY_RELEASE ${FMOD_LIBRARY_RELEASE})
set(FMOD_LINK_LIBRARY_DEBUG ${FMOD_LIBRARY_DEBUG})
if(WINDOWS)
string(REPLACE ".dll" "_vc.lib" FMOD_LINK_LIBRARY_RELEASE ${FMOD_LIBRARY_RELEASE})
string(REPLACE ".dll" "_vc.lib" FMOD_LINK_LIBRARY_DEBUG ${FMOD_LIBRARY_DEBUG})
endif(WINDOWS)
use_prebuilt_binary(fmodstudio)
set(FMOD_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/include/fmodstudio)
endif(NOT FMOD_LIBRARY_RELEASE OR NOT FMOD_INCLUDE_DIR)
if(FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR)
set(FMOD ON)
if (NOT FMOD_LIBRARY_DEBUG) #Use release library in debug configuration if debug library is absent.
set(FMOD_LIBRARY_DEBUG ${FMOD_LIBRARY_RELEASE})
endif (NOT FMOD_LIBRARY_DEBUG)
else (FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR)
message(STATUS "No support for FMOD Studio audio (need to set FMODSTUDIO_SDK_DIR?)")
set(FMOD OFF)
set(FMODSTUDIO OFF)
endif (FMOD_LIBRARY_RELEASE AND FMOD_INCLUDE_DIR)
if (FMOD)
message(STATUS "Building with FMOD Studio audio support")
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODSTUDIO")
endif (FMOD)

View File

@@ -0,0 +1,40 @@
# -*- cmake -*-
# - Find Google BreakPad
# Find the Google BreakPad includes and library
# This module defines
# BREAKPAD_INCLUDE_DIRECTORIES, where to find the Goole BreakPad includes.
# BREAKPAD_EXCEPTION_HANDLER_LIBRARIES, the libraries needed to use Google BreakPad.
# BREAKPAD_EXCEPTION_HANDLER_FOUND, If false, do not try to use Google BreakPad.
# also defined, but not for general use are
# BREAKPAD_EXCEPTION_HANDLER_LIBRARY, where to find the Google BreakPad library.
FIND_PATH(BREAKPAD_INCLUDE_DIRECTORIES common/using_std_string.h PATH_SUFFIXES google_breakpad)
SET(BREAKPAD_EXCEPTION_HANDLER_NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} breakpad_client)
FIND_LIBRARY(BREAKPAD_EXCEPTION_HANDLER_LIBRARY
NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES}
)
IF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_INCLUDE_DIRECTORIES)
SET(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES ${BREAKPAD_EXCEPTION_HANDLER_LIBRARY})
SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "YES")
ELSE (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_INCLUDE_DIRECTORIES)
SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "NO")
ENDIF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_INCLUDE_DIRECTORIES)
IF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
IF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
MESSAGE(STATUS "Found Google BreakPad: ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}")
ENDIF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
ELSE (BREAKPAD_EXCEPTION_HANDLER_FOUND)
IF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find Google BreakPad library")
ENDIF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
ENDIF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
MARK_AS_ADVANCED(
BREAKPAD_EXCEPTION_HANDLER_LIBRARY
BREAKPAD_INCLUDE_DIRECTORIES
)

View File

@@ -7,12 +7,17 @@ if (STANDALONE)
pkg_check_modules(FREETYPE REQUIRED freetype2)
else (STANDALONE)
use_prebuilt_binary(freetype)
if (LINUX)
if(MSVC12)
set(FREETYPE_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
else (LINUX)
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (LINUX)
${LIBS_PREBUILT_DIR}/include/freetype2
${LIBS_PREBUILT_LEGACY_DIR}/include/freetype2
)
else(MSVC12)
set(FREETYPE_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (MSVC12)
set(FREETYPE_LIBRARIES freetype)
endif (STANDALONE)

View File

@@ -8,6 +8,9 @@ if (STANDALONE)
include(FindGLOD)
else (STANDALONE)
use_prebuilt_binary(GLOD)
set(GLOD_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(GLOD_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
set(GLOD_LIBRARIES glod)
endif (STANDALONE)

View File

@@ -16,10 +16,13 @@ else (STANDALONE)
set(GSTREAMER010_FOUND ON FORCE BOOL)
set(GSTREAMER010_PLUGINS_BASE_FOUND ON FORCE BOOL)
set(GSTREAMER010_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/gstreamer-0.10
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/glib-2.0
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/libxml2
)
${LIBS_PREBUILT_DIR}/include/gstreamer-0.10
${LIBS_PREBUILT_DIR}/includeg/lib-2.0
${LIBS_PREBUILT_DIR}/include/libxml2
${LIBS_PREBUILT_LEGACY_DIR}/include/gstreamer-0.10
${LIBS_PREBUILT_LEGACY_DIR}/include/glib-2.0
${LIBS_PREBUILT_LEGACY_DIR}/include/libxml2
)
endif (STANDALONE)

View File

@@ -0,0 +1,26 @@
# -*- cmake -*-
include(Prebuilt)
if (STANDALONE)
set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED ON)
include(FindGoogleBreakpad)
else (STANDALONE)
use_prebuilt_binary(google_breakpad)
if (DARWIN)
set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES exception_handler)
endif (DARWIN)
if (LINUX)
set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES breakpad_client)
endif (LINUX)
if (WINDOWS)
set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES exception_handler crash_generation_client crash_generation_server common)
endif (WINDOWS)
# yes, this does look dumb, no, it's not incorrect
# I think it's incorrect: the second one should go --Aleric
set(BREAKPAD_INCLUDE_DIRECTORIES
${LIBS_PREBUILT_DIR}/include/google_breakpad
${LIBS_PREBUILT_LEGACY_DIR}/include/google_breakpad
${LIBS_PREBUILT_DIR}/include/google_breakpad/google_breakpad
${LIBS_PREBUILT_LEGACY_DIR}/include/google_breakpad/google_breakpad
)
endif (STANDALONE)

View File

@@ -25,7 +25,9 @@ else (STANDALONE)
set(TCMALLOC_LIBRARIES tcmalloc_minimal)
endif()
set(GOOGLE_PERFTOOLS_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (LINUX)
endif (STANDALONE)

View File

@@ -6,7 +6,10 @@ if (STANDALONE)
else (STANDALONE)
use_prebuilt_binary(hunspell)
set(HUNSPELL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/hunspell)
set(HUNSPELL_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/include/hunspell
${LIBS_PREBUILT_LEGACY_DIR}/include/hunspell
)
if (LINUX OR DARWIN)
set(HUNSPELL_LIBRARY hunspell-1.3)

View File

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

View File

@@ -10,13 +10,22 @@ if (STANDALONE)
else (STANDALONE)
use_prebuilt_binary(jsoncpp)
if (WINDOWS)
set(JSONCPP_LIBRARIES
debug json_vc${MSVC_SUFFIX}d
optimized json_vc${MSVC_SUFFIX})
if(MSVC12)
set(JSONCPP_LIBRARIES
debug json_vc${MSVC_SUFFIX}debug_libmt.lib
optimized json_vc${MSVC_SUFFIX}_libmt)
else(MSVC12)
set(JSONCPP_LIBRARIES
debug json_vc${MSVC_SUFFIX}d
optimized json_vc${MSVC_SUFFIX})
endif(MSVC12)
elseif (DARWIN)
set(JSONCPP_LIBRARIES json_linux-gcc-4.0.1_libmt)
elseif (LINUX)
set(JSONCPP_LIBRARIES jsoncpp)
endif (WINDOWS)
set(JSONCPP_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/jsoncpp)
set(JSONCPP_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/include/jsoncpp
${LIBS_PREBUILT_LEGACY_DIR}/include/jsoncpp
)
endif (STANDALONE)

View File

@@ -87,7 +87,7 @@ MACRO(ADD_BUILD_TEST_INTERNAL name parent libraries source_files)
${libraries}
)
GET_TARGET_PROPERTY(TEST_EXE ${name}_test LOCATION)
SET(TEST_EXE $<TARGET_FILE:${name}_test>)
SET(TEST_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}_test_ok.txt)
IF ("${wrapper}" STREQUAL "")
@@ -159,3 +159,23 @@ MACRO(ADD_VIEWER_COMM_BUILD_TEST name parent wrapper)
## MESSAGE(STATUS "ADD_VIEWER_COMM_BUILD_TEST ${name} wrapper = ${wrapper}")
ADD_COMM_BUILD_TEST("${name}" "${parent}" "${wrapper}" llviewerprecompiledheaders.cpp)
ENDMACRO(ADD_VIEWER_COMM_BUILD_TEST name parent wrapper)
MACRO(SET_TEST_PATH LISTVAR)
IF(WINDOWS)
# We typically build/package only Release variants of third-party
# libraries, so append the Release staging dir in case the library being
# sought doesn't have a debug variant.
set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR} ${SHARED_LIB_STAGING_DIR}/Release)
ELSEIF(DARWIN)
# We typically build/package only Release variants of third-party
# libraries, so append the Release staging dir in case the library being
# sought doesn't have a debug variant.
set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources ${SHARED_LIB_STAGING_DIR}/Release/Resources /usr/lib)
ELSE(WINDOWS)
# Linux uses a single staging directory anyway.
IF (STANDALONE)
set(${LISTVAR} ${CMAKE_BINARY_DIR}/llcommon /usr/lib /usr/local/lib)
ELSE (STANDALONE)
set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} /usr/lib)
ENDIF (STANDALONE)
ENDIF(WINDOWS)
ENDMACRO(SET_TEST_PATH)

View File

@@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLCRASHLOGGER_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llcrashlogger
)
set(LLCRASHLOGGER_LIBRARIES llcrashlogger)

View File

@@ -0,0 +1,70 @@
# ll_deploy_sharedlibs_command
# target_exe: the cmake target of the executable for which the shared libs will be deployed.
macro(ll_deploy_sharedlibs_command target_exe)
SET(OUTPUT_PATH $<TARGET_FILE:${target_exe}>)
if(DARWIN)
SET_TEST_PATH(SEARCH_DIRS)
get_target_property(IS_BUNDLE ${target_exe} MACOSX_BUNDLE)
if(IS_BUNDLE)
# If its a bundle the exe is not in the target location, this should find it.
set(OUTPUT_PATH ${OUTPUT_PATH}/../Resources)
endif(IS_BUNDLE)
elseif(WINDOWS)
SET_TEST_PATH(SEARCH_DIRS)
LIST(APPEND SEARCH_DIRS "$ENV{SystemRoot}/system32")
elseif(LINUX)
SET_TEST_PATH(SEARCH_DIRS)
set(OUTPUT_PATH ${OUTPUT_PATH}/lib)
endif(DARWIN)
add_custom_command(
TARGET ${target_exe} POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS
"-DBIN_NAME=\"$<TARGET_FILE:${target_exe}>\""
"-DSEARCH_DIRS=\"${SEARCH_DIRS}\""
"-DDST_PATH=\"${OUTPUT_PATH}\""
"-P"
"${CMAKE_SOURCE_DIR}/cmake/DeploySharedLibs.cmake"
)
endmacro(ll_deploy_sharedlibs_command)
# ll_stage_sharedlib
# Performs config and adds a copy command for a sharedlib target.
macro(ll_stage_sharedlib DSO_TARGET)
# target gets written to the DLL staging directory.
# Also this directory is shared with RunBuildTest.cmake, y'know, for the tests.
set_target_properties(${DSO_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${SHARED_LIB_STAGING_DIR})
if(NOT WINDOWS)
SET(DSO_PATH $<TARGET_FILE:${DSO_TARGET}>)
get_filename_component(DSO_FILE ${DSO_PATH} NAME)
if(DARWIN)
set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources)
else(DARWIN)
set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR})
endif(DARWIN)
# *TODO - maybe make this a symbolic link? -brad
add_custom_command(
TARGET ${DSO_TARGET} POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS
-E
copy_if_different
${DSO_PATH}
${SHARED_LIB_STAGING_DIR_CONFIG}/${DSO_FILE}
COMMENT "Copying llcommon to the staging folder."
)
endif(NOT WINDOWS)
if (DARWIN)
set_target_properties(${DSO_TARGET} PROPERTIES
BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path/../Resources"
)
endif(DARWIN)
endmacro(ll_stage_sharedlib)

View File

@@ -17,7 +17,10 @@ else (STANDALONE)
use_prebuilt_binary(mesa)
use_prebuilt_binary(SDL)
set (SDL_FOUND TRUE)
set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR})
set (SDL_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
if(WORD_SIZE EQUAL 64)
set (SDL_LIBRARY SDL)
else(WORD_SIZE EQUAL 64)

View File

@@ -5,22 +5,38 @@ set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
include(Variables)
if (NOT STANDALONE)
if (WINDOWS)
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)
elseif (LINUX)
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 ${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)
if(CMAKE_BUILD_TYPE)
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
endif(CMAKE_BUILD_TYPE)
if(WINDOWS OR ${CMAKE_GENERATOR} MATCHES "Xcode")
# the cmake xcode and VS generators implicitly append ${CMAKE_CFG_INTDIR} to the library paths for us
# fortunately both windows and darwin are case insensitive filesystems so this works.
set(ARCH_PREBUILT_LINK_DIRS
${LIBS_PREBUILT_DIR}/lib
${LIBS_PREBUILT_LEGACY_DIR}/lib
)
else(WINDOWS OR ${CMAKE_GENERATOR} MATCHES "Xcode")
# else block is for linux and any other makefile based generators
set(ARCH_PREBUILT_LINK_DIRS
${LIBS_PREBUILT_DIR}/lib/${CMAKE_BUILD_TYPE_LOWER}
${LIBS_PREBUILT_LEGACY_DIR}/lib/${CMAKE_BUILD_TYPE_LOWER}
)
endif(WINDOWS OR ${CMAKE_GENERATOR} MATCHES "Xcode")
if (NOT "${CMAKE_BUILD_TYPE_LOWER}" STREQUAL "release")
# When we're building something other than Release, append the
# packages/lib/release directory to deal with autobuild packages that don't
# provide (e.g.) lib/debug libraries.
list(APPEND ARCH_PREBUILT_LINK_DIRS
${LIBS_PREBUILT_DIR}/lib/release
${LIBS_PREBUILT_LEGACY_DIR}/lib/release
)
endif (NOT "${CMAKE_BUILD_TYPE_LOWER}" STREQUAL "release")
endif (NOT STANDALONE)
link_directories(${ARCH_PREBUILT_DIRS})
link_directories(${ARCH_PREBUILT_LINK_DIRS})
if (LINUX)
set(DL_LIBRARY dl)
@@ -30,7 +46,7 @@ else (LINUX)
set(PTHREAD_LIBRARY "")
endif (LINUX)
if (WINDOWS)
if (WINDOWS)
set(WINDOWS_LIBRARIES
advapi32
shell32

View File

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

21
indra/cmake/NVAPI.cmake Normal file
View File

@@ -0,0 +1,21 @@
# -*- cmake -*-
include(Prebuilt)
include(Variables)
set(NVAPI ON CACHE BOOL "Use NVAPI.")
if (NVAPI)
if (WINDOWS)
use_prebuilt_binary(nvapi)
if (WORD_SIZE EQUAL 32)
set(NVAPI_LIBRARY nvapi)
elseif (WORD_SIZE EQUAL 64)
set(NVAPI_LIBRARY nvapi64)
endif (WORD_SIZE EQUAL 32)
else (WINDOWS)
set(NVAPI_LIBRARY "")
endif (WINDOWS)
else (NVAPI)
set(NVAPI_LIBRARY "")
endif (NVAPI)

View File

@@ -2,6 +2,7 @@
include(Linking)
include(Prebuilt)
if(NOT FMOD)
if (LINUX)
set(OPENAL ON CACHE BOOL "Enable OpenAL")
else (LINUX)
@@ -21,9 +22,14 @@ if (OPENAL)
openal
alut
)
set(OPENAL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(OPENAL_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (OPENAL)
if (OPENAL)
message(STATUS "Building with OpenAL audio support")
set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL")
endif (OPENAL)
endif(NOT FMOD)

View File

@@ -3,5 +3,8 @@ include(Prebuilt)
if (NOT (STANDALONE OR DARWIN))
use_prebuilt_binary(glext)
set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(GLEXT_INCLUDE_DIR
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (NOT (STANDALONE OR DARWIN))

View File

@@ -13,9 +13,14 @@ else (STANDALONE OR USE_SYSTEM_OPENSSL)
else (WINDOWS)
set(OPENSSL_LIBRARIES ssl)
endif (WINDOWS)
set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
set(OPENSSL_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include
)
endif (STANDALONE OR USE_SYSTEM_OPENSSL)
if (LINUX OR DARWIN)
if (LINUX)
set(CRYPTO_LIBRARIES crypto dl)
elseif (DARWIN)
set(CRYPTO_LIBRARIES crypto)
endif (LINUX OR DARWIN)
endif (LINUX)

View File

@@ -9,11 +9,42 @@ if (STANDALONE)
else (STANDALONE)
use_prebuilt_binary(libpng)
if (WINDOWS)
set(PNG_LIBRARIES libpng15)
if(MSVC12)
set(PNG_LIBRARIES libpng16)
else(MSVC12)
set(PNG_LIBRARIES libpng15)
endif(MSVC12)
elseif(DARWIN)
set(PNG_LIBRARIES png15)
else(LINUX)
set(PNG_LIBRARIES png15)
if (CMAKE_SIZEOF_VOID_P EQUAL 4) # Singu TODO: update png
set(PNG_LIBRARIES png15)
else ()
#
# When we have updated static libraries in competition with older
# shared libraries and we want the former to win, we need to do some
# extra work. The *_PRELOAD_ARCHIVES settings are invoked early
# and will pull in the entire archive to the binary giving it
# priority in symbol resolution. Beware of cmake moving the
# achive load itself to another place on the link command line. If
# that happens, you can try something like -Wl,-lpng16 here to hide
# the archive. Also be aware that the linker will not tolerate a
# second whole-archive load of the archive. See viewer's
# CMakeLists.txt for more information.
#
set(PNG_PRELOAD_ARCHIVES -Wl,--whole-archive png16 -Wl,--no-whole-archive)
set(PNG_LIBRARIES png16)
endif ()
endif()
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/)
if (WINDOWS)
set(PNG_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include/${PNG_LIBRARIES}
${LIBS_PREBUILT_LEGACY_DIR}/include/${PNG_LIBRARIES}
)
else (WINDOWS)
set(PNG_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include/lib${PNG_LIBRARIES}
${LIBS_PREBUILT_LEGACY_DIR}/include/lib${PNG_LIBRARIES}
)
endif (WINDOWS)
endif (STANDALONE)

View File

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

View File

@@ -8,19 +8,30 @@ endif(INSTALL_PROPRIETARY)
if (DARWIN)
include(CMakeFindFrameworks)
find_library(QUICKTIME_LIBRARY QuickTime)
elseif (WINDOWS)
set(QUICKTIME_SDK_DIR "$ENV{PROGRAMFILES}/QuickTime SDK"
elseif (WINDOWS AND WORD_SIZE EQUAL 32)
SET(program_files "ProgramFiles(x86)")
SET(program_files $ENV{${program_files}})
if(NOT program_files)
SET(program_files $ENV{ProgramW6432})
endif(NOT program_files)
if(NOT program_files)
SET(program_files $ENV{ProgramFiles})
endif(NOT program_files)
set(QUICKTIME_SDK_DIR "${program_files}/QuickTime SDK"
CACHE PATH "Location of the QuickTime SDK.")
find_library(DEBUG_QUICKTIME_LIBRARY qtmlclient
PATHS
${ARCH_PREBUILT_DIRS_DEBUG}
${LIBS_PREBUILT_DIR}/lib/debug
${LIBS_PREBUILT_LEGACY_DIR}/lib/debug
"${QUICKTIME_SDK_DIR}\\libraries"
)
find_library(RELEASE_QUICKTIME_LIBRARY qtmlclient
PATHS
${ARCH_PREBUILT_DIRS_RELEASE}
${LIBS_PREBUILT_DIR}/lib/release
${LIBS_PREBUILT_LEGACY_DIR}/lib/release
"${QUICKTIME_SDK_DIR}\\libraries"
)
@@ -33,7 +44,8 @@ elseif (WINDOWS)
endif (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY)
include_directories(
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/quicktime
${LIBS_PREBUILT_DIR}/include/quicktime
${LIBS_PREBUILT_LEGACY_DIR}/include/quicktime
"${QUICKTIME_SDK_DIR}\\CIncludes"
)
endif (DARWIN)

View File

@@ -55,12 +55,18 @@ else (STANDALONE)
endif (LINUX)
include_directories (
${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}/packages/include
${LIBS_PREBUILT_DIR}/packages/include/cairo
${LIBS_PREBUILT_DIR}/packages/include/pixman-1
${LIBS_PREBUILT_LEGACY_DIR}/include
${LIBS_PREBUILT_LEGACY_DIR}/include/cairo
${LIBS_PREBUILT_LEGACY_DIR}/include/pixman-1
)
foreach(include ${${LL_ARCH}_INCLUDES})
include_directories(${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/${include})
include_directories(
${LIBS_PREBUILT_DIR}/include/${include}
${LIBS_PREBUILT_LEGACY_DIR}/include/${include}
)
endforeach(include)
endif (STANDALONE)

View File

@@ -11,6 +11,6 @@ if (INSTALL)
set(APP_BIN_DIR bin)
endif(NOT APP_BIN_DIR)
if(NOT APP_SHARE_DIR)
set(APP_SHARE_DIR share/secondlife-${viewer_VERSION})
set(APP_SHARE_DIR share/secondlife-${${ROOT_PROJECT_NAME}_VERSION})
endif(NOT APP_SHARE_DIR)
endif (INSTALL)

View File

@@ -32,15 +32,17 @@ set(DISABLE_TCMALLOC OFF CACHE BOOL "Disable linkage of TCMalloc. (64bit builds
set(LL_TESTS OFF CACHE BOOL "Build and run unit and integration tests (disable for build timing runs to reduce variation)")
set(DISABLE_FATAL_WARNINGS TRUE CACHE BOOL "Set this to FALSE to enable fatal warnings.")
set(LIBS_PREBUILT_DIR ${CMAKE_SOURCE_DIR}/../libraries CACHE PATH
"Location of prebuilt libraries.")
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WINDOWS ON BOOL FORCE)
set(ARCH i686)
set(LL_ARCH ${ARCH}_win32)
set(LL_ARCH_DIR ${ARCH}-win32)
set(WORD_SIZE 32)
if (WORD_SIZE EQUAL 32)
set(ARCH i686)
set(LL_ARCH ${ARCH}_win32)
set(LL_ARCH_DIR ${ARCH}-win32)
elseif (WORD_SIZE EQUAL 64)
set(ARCH x86_64)
set(LL_ARCH ${ARCH}_win)
set(LL_ARCH_DIR ${ARCH}-win)
endif (WORD_SIZE EQUAL 32)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
@@ -92,24 +94,54 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(DARWIN 1)
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_OSX_DEPLOYMENT_TARGET 10.6)
endif(${CMAKE_GENERATOR} MATCHES Xcode)
execute_process(
COMMAND sh -c "xcodebuild -version | grep Xcode | cut -d ' ' -f2 | cut -d'.' -f1-2"
OUTPUT_VARIABLE XCODE_VERSION )
string(REGEX REPLACE "(\r?\n)+$" "" XCODE_VERSION "${XCODE_VERSION}")
# # To support a different SDK update these Xcode settings:
# if (XCODE_VERSION GREATER 4.9) # (Which would be 5.0+)
# set(CMAKE_OSX_DEPLOYMENT_TARGET 10.8)
# set(CMAKE_OSX_SYSROOT macosx10.9)
# else (XCODE_VERION GREATER 4.9)
# if (XCODE_VERSION GREATER 4.5)
# set(CMAKE_OSX_DEPLOYMENT_TARGET 10.7)
# set(CMAKE_OSX_SYSROOT macosx10.8)
# else (XCODE_VERSION GREATER 4.5)
# if (XCODE_VERSION GREATER 4.2)
# set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
# set(CMAKE_OSX_SYSROOT macosx10.7)
# else (XCODE_VERSION GREATER 4.2)
# set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
# set(CMAKE_OSX_SYSROOT macosx10.7)
# endif (XCODE_VERSION GREATER 4.2)
# endif (XCODE_VERSION GREATER 4.5)
# endif (XCODE_VERSION GREATER 4.9)
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
# Hardcode SDK we build against until we can test and allow newer ones
# as autodetected in the code above
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
set(CMAKE_OSX_SYSROOT macosx10.6)
# Support for Unix Makefiles generator
if (CMAKE_GENERATOR STREQUAL "Unix Makefiles")
execute_process(COMMAND xcodebuild -version -sdk "${CMAKE_OSX_SYSROOT}" Path | head -n 1 OUTPUT_VARIABLE CMAKE_OSX_SYSROOT)
string(REGEX REPLACE "(\r?\n)+$" "" CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}")
endif (CMAKE_GENERATOR STREQUAL "Unix Makefiles")
# LLVM-GCC has been removed in Xcode5
if (XCODE_VERSION GREATER 4.9)
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
else (XCODE_VERSION GREATER 4.9)
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
endif (XCODE_VERSION GREATER 4.9)
set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
message(STATUS "Xcode version: ${XCODE_VERSION}")
message(STATUS "OSX sysroot: ${CMAKE_OSX_SYSROOT}")
message(STATUS "OSX deployment target: ${CMAKE_OSX_DEPLOYMENT_TARGET}")
# Build only for i386 by default, system default on MacOSX 10.6 is x86_64
set(CMAKE_OSX_ARCHITECTURES i386)
set(ARCH i386)
@@ -119,26 +151,35 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(LL_ARCH_DIR universal-darwin)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if (WINDOWS)
set(LIBS_PREBUILT_DIR ${CMAKE_BINARY_DIR}/packages CACHE PATH
"Location of prebuilt libraries.")
set(LIBS_PREBUILT_LEGACY_DIR ${CMAKE_BINARY_DIR}/packages/libraries/${LL_ARCH_DIR} CACHE PATH
"Legacy location of prebuilt libraries.")
if (WINDOWS AND WORD_SIZE EQUAL 32)
set(PREBUILT_TYPE windows)
elseif (WINDOWS AND WORD_SIZE EQUAL 64)
set(PREBUILT_TYPE windows64)
elseif(DARWIN)
set(PREBUILT_TYPE darwin)
elseif(LINUX AND WORD_SIZE EQUAL 32)
set(PREBUILT_TYPE linux)
elseif(LINUX AND WORD_SIZE EQUAL 64)
set(PREBUILT_TYPE linux64)
endif(WINDOWS)
endif(WINDOWS AND WORD_SIZE EQUAL 32)
# Default deploy grid
set(GRID agni CACHE STRING "Target Grid")
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_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)")
# *TODO: break out proper Branding-secondlife.cmake, Branding-snowglobe.cmake, etc
set(VIEWER_BRANDING_NAME "Singularity")
set(VIEWER_BRANDING_NAME_CAMELCASE "Singularity")
string(REGEX REPLACE " +" "" VIEWER_CHANNEL_ONE_WORD "${VIEWER_CHANNEL}")
set(VIEWER_BRANDING_NAME "${VIEWER_CHANNEL_ONE_WORD}")
set(VIEWER_BRANDING_NAME_CAMELCASE "${VIEWER_CHANNEL_ONE_WORD}")
set(STANDALONE OFF CACHE BOOL "Do not use Linden-supplied prebuilt libraries.")

View File

@@ -32,8 +32,8 @@ if (WINDOWS)
)
elseif (DARWIN)
set(WEBKIT_PLUGIN_LIBRARIES
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib
debug ${ARCH_PREBUILT_DIRS_DEBUG}/libllqtwebkit.dylib
debug libllqtwebkit.dylib
optimized libllqtwebkit.dylib
)
elseif (LINUX)
if (STANDALONE)
@@ -50,7 +50,6 @@ elseif (LINUX)
ssl
# qgif
# qjpeg
jscore
jpeg
fontconfig
X11
@@ -58,5 +57,8 @@ elseif (LINUX)
Xext
GL
)
if (CMAKE_SIZEOF_VOID_P EQUAL 4) # Singu TODO: update webkit
set(WEBKIT_PLUGIN_LIBRARIES ${WEBKIT_PLUGIN_LIBRARIES} jscore)
endif (CMAKE_SIZEOF_VOID_P EQUAL 4)
endif (STANDALONE)
endif (WINDOWS)

View File

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

View File

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

View File

@@ -28,95 +28,16 @@
#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
#error DEBUG_CURLIO is not supported without libcwd.
// In order to use DEBUG_CURLIO you must install and use libcwd.
// Download libcwd:
// git clone https://github.com/CarloWood/libcwd.git
#endif
#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>
@@ -144,6 +65,11 @@ extern LL_COMMON_API fake_channel const snapshot;
#define CWDEBUG_MARKER 0
#define BACKTRACE do { } while(0)
#ifdef DEBUG_CURLIO
#define CWD_ONLY(...) __VA_ARGS__
#else
#define CWD_ONLY(...)
#endif
#endif // !DOXYGEN
@@ -180,6 +106,7 @@ extern LL_COMMON_API fake_channel const snapshot;
#include <set>
#define CWD_API __attribute__ ((visibility("default")))
#define CWD_ONLY(...) __VA_ARGS__
//! Debug specific code.
namespace debug {
@@ -384,6 +311,40 @@ void InstanceTracker<T>::dump(void)
} // namespace debug
template<class T>
class AIDebugInstanceCounter
{
public:
static int sInstanceCount;
protected:
static void print_count(char const* name, int count, bool destruction);
AIDebugInstanceCounter()
{
print_count(typeid(T).name(), ++sInstanceCount, false);
}
AIDebugInstanceCounter(AIDebugInstanceCounter const&)
{
print_count(typeid(T).name(), ++sInstanceCount, false);
}
~AIDebugInstanceCounter()
{
print_count(typeid(T).name(), --sInstanceCount, true);
}
};
//static
template<class T>
int AIDebugInstanceCounter<T>::sInstanceCount;
//static
template<class T>
void AIDebugInstanceCounter<T>::print_count(char const* name, int count, bool destruction)
{
Dout(dc::notice, (destruction ? "Destructed " : "Constructing ") << name << ", now " << count << " instance" << ((count == 1) ? "." : "s."));
}
//! Debugging macro.
//
// Print "Entering " << \a data to channel \a cntrl and increment

View File

@@ -41,6 +41,7 @@ import shutil
import socket
import sys
import commands
import shlex
class CommandError(Exception):
pass
@@ -111,11 +112,15 @@ class PlatformSetup(object):
def build_dirs(self):
'''Return the top-level directories in which builds occur.
This can return more than one directory, e.g. if doing a
32-bit viewer and server build on Linux.'''
return ['build-' + self.platform()]
if(os.path.basename(os.path.normpath(os.getcwd())) == 'indra'):
prefix = '../'
else:
prefix = ''
return [prefix+'build-' + self.platform()]
def cmake_commandline(self, src_dir, build_dir, opts, simple):
'''Return the command line to run cmake with.'''
@@ -169,7 +174,7 @@ class PlatformSetup(object):
raise
def parse_build_opts(self, arguments):
opts, targets = getopt.getopt(arguments, 'o:', ['option='])
opts, targets = getopt.getopt(arguments, 'D:o:', ['option='])
build_opts = []
for o, a in opts:
if o in ('-o', '--option'):
@@ -221,6 +226,7 @@ class UnixSetup(PlatformSetup):
exe_suffixes = ('',)
def __init__(self):
PlatformSetup.__init__(self)
super(UnixSetup, self).__init__()
self.generator = 'Unix Makefiles'
@@ -263,6 +269,7 @@ class UnixSetup(PlatformSetup):
class LinuxSetup(UnixSetup):
def __init__(self):
UnixSetup.__init__(self)
super(LinuxSetup, self).__init__()
try:
self.debian_sarge = open('/etc/debian_version').read().strip() == '3.1'
@@ -273,9 +280,7 @@ class LinuxSetup(UnixSetup):
return 'linux'
def build_dirs(self):
platform_build = '%s-%s' % (self.platform(), self.build_type.lower())
return ['viewer-' + platform_build]
return [PlatformSetup.build_dirs(self)[0]+'-'+self.build_type.lower()]
def cmake_commandline(self, src_dir, build_dir, opts, simple):
args = dict(
@@ -384,6 +389,7 @@ class LinuxSetup(UnixSetup):
class DarwinSetup(UnixSetup):
def __init__(self):
UnixSetup.__init__(self)
super(DarwinSetup, self).__init__()
self.generator = 'Xcode'
@@ -396,6 +402,12 @@ class DarwinSetup(UnixSetup):
else:
return UnixSetup.arch(self)
def build_dirs(self):
if(self.generator == 'Xcode'):
return PlatformSetup.build_dirs(self)
else:
return [PlatformSetup.build_dirs(self)[0]+'-'+self.build_type.lower()]
def cmake_commandline(self, src_dir, build_dir, opts, simple):
args = dict(
dir=src_dir,
@@ -405,15 +417,17 @@ class DarwinSetup(UnixSetup):
word_size=self.word_size,
unattended=self.unattended,
project_name=self.project_name,
universal=self.universal,
type=self.build_type.upper(),
universal='',
type='',
)
if(self.generator != 'Xcode'):
args['type'] = '-DCMAKE_BUILD_TYPE=%s' % self.build_type.upper()
if self.universal == 'ON':
args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386;ppc\''
#if simple:
# return 'cmake %(opts)s %(dir)r' % args
return ('cmake -G %(generator)r '
'-DCMAKE_BUILD_TYPE:STRING=%(type)s '
'%(type)s '
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
@@ -422,6 +436,18 @@ class DarwinSetup(UnixSetup):
'%(opts)s %(dir)r' % args)
def run_build(self, opts, targets):
if(self.generator != 'Xcode'):
if targets:
targets = ' '.join(targets)
else:
targets = 'all'
for d in self.build_dirs():
cmd = 'make -C %r %s %s' % (d, ' '.join(opts), targets)
print 'Running %r' % cmd
self.run(cmd)
return
cwd = getcwd()
if targets:
targets = ' '.join(['-target ' + repr(t) for t in targets])
@@ -443,14 +469,21 @@ class WindowsSetup(PlatformSetup):
'vc100' : {
'gen' : r'Visual Studio 10',
'ver' : r'10.0'
},
'vc120' : {
'gen' : r'Visual Studio 12',
'ver' : r'12.0'
}
}
gens['vs2010'] = gens['vc100']
gens['vs2013'] = gens['vc120']
search_path = r'C:\windows'
exe_suffixes = ('.exe', '.bat', '.com')
def __init__(self):
PlatformSetup.__init__(self)
super(WindowsSetup, self).__init__()
self._generator = None
self.incredibuild = False
@@ -487,11 +520,24 @@ class WindowsSetup(PlatformSetup):
generator = property(_get_generator, _set_generator)
def get_gen_str(self, gen):
if gen is None:
gen = self._generator
return self.gens[gen.lower()]['ver']
def os(self):
return 'win32'
def build_dirs(self):
return ['build-' + self.generator]
if(os.path.basename(os.path.normpath(os.getcwd())) == 'indra'):
prefix = '../'
else:
prefix = ''
if self.word_size == 64:
return [prefix+'build-' + self.generator + '-Win64']
else:
return [prefix+'build-' + self.generator]
def cmake_commandline(self, src_dir, build_dir, opts, simple):
args = dict(
@@ -503,13 +549,16 @@ class WindowsSetup(PlatformSetup):
project_name=self.project_name,
word_size=self.word_size,
)
if self.word_size == 64:
args["generator"] += r' Win64'
#if simple:
# return 'cmake %(opts)s "%(dir)s"' % args
return ('cmake -G "%(generator)s" '
'-DSTANDALONE:BOOL=%(standalone)s '
'-DUNATTENDED:BOOL=%(unattended)s '
'-DWORD_SIZE:STRING=%(word_size)s '
'-DROOT_PROJECT_NAME:STRING=%(project_name)s '
'-DROOT_PROJECT_NAME:STRING=\"%(project_name)s\" '
'%(opts)s "%(dir)s"' % args)
def get_HKLM_registry_value(self, key_str, value_str):
@@ -521,34 +570,53 @@ class WindowsSetup(PlatformSetup):
return value
def find_visual_studio(self, gen=None):
if gen is None:
gen = self._generator
gen = gen.lower()
gen = self.get_gen_str(gen)
value_str = (r'EnvironmentDirectory')
key_str = (r'SOFTWARE\Microsoft\VisualStudio\%s\Setup\VS' %
self.gens[gen]['ver'])
gen)
print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' %
(key_str, value_str))
try:
return self.get_HKLM_registry_value(key_str, value_str)
except WindowsError, err:
key_str = (r'SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%s\Setup\VS' %
self.gens[gen]['ver'])
gen)
try:
return self.get_HKLM_registry_value(key_str, value_str)
except:
print >> sys.stderr, "Didn't find ", self.gens[gen]['gen']
return ''
def find_msbuild(self, gen=None):
gen = self.get_gen_str(gen)
key_str = (r'SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0')
print ('Checking MSBuild support for vs ver = %s' % gen)
if not self.get_HKLM_registry_value(key_str+'\\'+gen, "VCTargetsPath"):
return (None, None)
print ('Reading MSBuild location from HKEY_LOCAL_MACHINE\%s\MSBuildToolsPath' %
key_str)
print key_str
try:
return (self.get_HKLM_registry_value(key_str, 'MSBuildToolsPath'), gen)
except WindowsError, err:
key_str = (r'SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\%s' %
gen)
try:
return (self.get_HKLM_registry_value(key_str, 'MSBuildToolsPath'), gen)
except WindowsError, err:
print 'Didn\'t find msbuild'
return (None, None)
def find_visual_studio_express(self, gen=None):
if gen is None:
gen = self._generator
gen = gen.lower()
gen = self.get_gen_str(gen)
try:
import _winreg
key_str = (r'SOFTWARE\Microsoft\VCEXpress\%s\Setup\VC' %
self.gens[gen]['ver'])
gen)
value_str = (r'ProductDir')
print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' %
(key_str, value_str))
@@ -560,17 +628,15 @@ class WindowsSetup(PlatformSetup):
print 'Found: %s' % value
return value
except WindowsError, err:
print >> sys.stderr, "Didn't find ", self.gens[gen]['gen']
print >> sys.stderr, "Didn't find ", gen
return ''
def find_visual_studio_express_single(self, gen=None):
if gen is None:
gen = self._generator
gen = gen.lower()
gen = self.get_gen_str(gen)
try:
import _winreg
key_str = (r'SOFTWARE\Microsoft\VCEXpress\%s_Config\Setup\VC' %
self.gens[gen]['ver'])
gen)
value_str = (r'ProductDir')
print ('Reading VS environment from HKEY_CURRENT_USER\%s\%s' %
(key_str, value_str))
@@ -582,7 +648,7 @@ class WindowsSetup(PlatformSetup):
print 'Found: %s' % value
return value
except WindowsError, err:
print >> sys.stderr, "Didn't find ", self.gens[gen]['gen']
print >> sys.stderr, "Didn't find ", gen
return ''
def get_build_cmd(self):
@@ -591,31 +657,38 @@ class WindowsSetup(PlatformSetup):
if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0' ]:
config = '\"%s|Win32\"' % config
return "buildconsole %s.sln /build %s" % (self.project_name, config)
return "buildconsole \"%s.sln\" /build %s" % (self.project_name, config), None
environment = self.find_visual_studio()
if environment == '':
environment = self.find_visual_studio_express()
if environment == '':
environment = self.find_visual_studio_express_single()
if environment == '':
print >> sys.stderr, "Something went very wrong during build stage, could not find a Visual Studio?"
else:
build_dirs=self.build_dirs()
print >> sys.stderr, "\nSolution generation complete, it can can now be found in:", build_dirs[0]
print >> sys.stderr, "\nAs you are using an Express Visual Studio, the build step cannot be automated"
print >> sys.stderr, "\nPlease see https://wiki.secondlife.com/wiki/Microsoft_Visual_Studio#Extra_steps_for_Visual_Studio_Express_editions for Visual Studio Express specific information"
exit(0)
environment = self.find_visual_studio_express_single()
if environment == '':
print >> sys.stderr, "Something went very wrong during build stage, could not find a Visual Studio?"
else:
build_dirs=self.build_dirs()
print >> sys.stderr, "\nSolution generation complete, it can can now be found in:", build_dirs[0]
print >> sys.stderr, "\nAs you are using an Express Visual Studio, the build step cannot be automated"
print >> sys.stderr, "\nPlease see https://wiki.secondlife.com/wiki/Microsoft_Visual_Studio#Extra_steps_for_Visual_Studio_Express_editions for Visual Studio Express specific information"
exit(0)
msbuild_dir, tool_ver = self.find_msbuild()
if msbuild_dir is not None and tool_ver is not None:
return ('\"%smsbuild.exe\" \"%s.sln\" /p:configuration=%s /p:VisualStudioVersion=%s' %
(msbuild_dir, self.project_name, self.build_type, tool_ver)), True
# devenv.com is CLI friendly, devenv.exe... not so much.
return ('"%sdevenv.com" %s.sln /build %s' %
(self.find_visual_studio(), self.project_name, self.build_type))
return ('"%sdevenv.com" \"%s.sln\" /build %s' %
(self.find_visual_studio(), self.project_name, self.build_type)), None
def run(self, command, name=None):
'''Run a program. If the program fails, raise an exception.'''
ret = os.system(command)
ret = os.system('\"'+command+'\"')
if ret:
if name is None:
name = command.split(None, 1)[0]
name = os.path.normpath(shlex.split(command.encode('utf8'),posix=False)[0].strip('"'))
path = self.find_in_path(name)
if not path:
ret = 'was not found'
@@ -641,30 +714,40 @@ class WindowsSetup(PlatformSetup):
if prev_build == self.build_type:
# Only run vstool if the build type has changed.
continue
vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') +
' --solution ' +
os.path.join(build_dir,'Singularity.sln') +
' --config ' + self.build_type +
if(os.path.basename(os.path.normpath(os.getcwd())) == 'indra'):
tool_path = os.path.join('tools','vstool','VSTool.exe')
else:
tool_path = os.path.join('indra','tools','vstool','VSTool.exe')
vstool_cmd = (tool_path +
' --solution \"' +
os.path.join(build_dir,'%s.sln' % self.project_name) +
'\" --config ' + self.build_type +
' --startup secondlife-bin')
print 'Running %r in %r' % (vstool_cmd, getcwd())
print 'Running vstool %r in %r' % (vstool_cmd, getcwd())
self.run(vstool_cmd)
print >> open(stamp, 'w'), self.build_type
def run_build(self, opts, targets):
cwd = getcwd()
build_cmd = self.get_build_cmd()
build_cmd, msbuild = self.get_build_cmd()
for d in self.build_dirs():
try:
os.chdir(d)
if targets:
for t in targets:
cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts))
print 'Running %r in %r' % (cmd, d)
if msbuild:
cmd = '%s /target:%s %s' % (build_cmd, ';'.join(targets), ' '.join(opts))
print 'Running build(targets) %r in %r' % (cmd, d)
self.run(cmd)
else:
for t in targets:
cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts))
print 'Running build(targets) %r in %r' % (cmd, d)
self.run(cmd)
else:
cmd = '%s %s' % (build_cmd, ' '.join(opts))
print 'Running %r in %r' % (cmd, d)
print 'Running build %r in %r' % (cmd, d)
self.run(cmd)
finally:
os.chdir(cwd)
@@ -685,6 +768,8 @@ class CygwinSetup(WindowsSetup):
project_name=self.project_name,
word_size=self.word_size,
)
if self.word_size == 64:
args["generator"] += r' Win64'
#if simple:
# return 'cmake %(opts)s "%(dir)s"' % args
return ('cmake -G "%(generator)s" '
@@ -730,10 +815,12 @@ Commands:
Command-options for "configure":
We use cmake variables to change the build configuration.
-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)
-DRELEASE_CRASH_REPORTING:BOOL=ON Enable Google Breakpad crash reporting
-DFMODSTUDIO:BOOL=ON Use FMOD Studio audio libraries
-DFMODEX:BOOL=ON Use FMOD Ex audio libraries
Examples:
Set up a Visual Studio 2010 project with "package" target:

View File

@@ -2,19 +2,24 @@
@file __init__.py
@brief Initialization file for the indra module.
$LicenseInfo:firstyear=2006&license=internal$
$LicenseInfo:firstyear=2006&license=viewerlgpl$
Second Life Viewer Source Code
Copyright (C) 2006-2010, Linden Research, Inc.
Copyright (c) 2006-2009, Linden Research, Inc.
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;
version 2.1 of the License only.
The following source code is PROPRIETARY AND CONFIDENTIAL. Use of
this source code is governed by the Linden Lab Source Code Disclosure
Agreement ("Agreement") previously entered between you and Linden
Lab. By accessing, using, copying, modifying or distributing this
software, you acknowledge that you have been informed of your
obligations under the Agreement and agree to abide by those obligations.
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.
ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
COMPLETENESS OR PERFORMANCE.
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
$/LicenseInfo$
"""

View File

@@ -1,3 +1,25 @@
#!/usr/bin/python
##
## $LicenseInfo:firstyear=2011&license=viewerlgpl$
## Second Life Viewer Source Code
## Copyright (C) 2011, Linden Research, Inc.
##
## 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;
## version 2.1 of the License only.
##
## 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
##
## Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
## $/LicenseInfo$
from indra.base import llsd, lluuid
from datetime import datetime
import cllsd
@@ -10,7 +32,7 @@ values = (
'&<>',
u'\u81acj',
llsd.uri('http://foo<'),
lluuid.LLUUID(),
lluuid.UUID(),
llsd.LLSD(['thing']),
1,
myint(31337),

View File

@@ -1,72 +0,0 @@
"""\
@file lllog.py
@brief Logging for event processing
$LicenseInfo:firstyear=2008&license=mit$
Copyright (c) 2008-2009, Linden Research, Inc.
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.
$/LicenseInfo$
"""
from indra.base.llsd import format_notation
try:
import syslog
except ImportError:
# Windows
import sys
class syslog(object):
_logfp = sys.stderr
def syslog(msg):
_logfp.write(msg)
if not msg.endswith('\n'):
_logfp.write('\n')
syslog = staticmethod(syslog)
class Logger(object):
def __init__(self, name='indra'):
self._sequence = 0
try:
syslog.openlog(name, syslog.LOG_CONS | syslog.LOG_PID,
syslog.LOG_LOCAL0)
except AttributeError:
# No syslog module on Windows
pass
def next(self):
self._sequence += 1
return self._sequence
def log(self, msg, llsd):
payload = 'INFO: log: LLLOGMESSAGE (%d) %s %s' % (self.next(), msg,
format_notation(llsd))
syslog.syslog(payload)
_logger = None
def log(msg, llsd):
global _logger
if _logger is None:
_logger = Logger()
_logger.log(msg, llsd)

View File

@@ -72,8 +72,11 @@ BOOL_FALSE = ('0', '0.0', 'false', '')
def format_datestr(v):
""" Formats a datetime object into the string format shared by xml and notation serializations."""
return v.isoformat() + 'Z'
""" Formats a datetime or date object into the string format shared by xml and notation serializations."""
if hasattr(v, 'microsecond'):
return v.isoformat() + 'Z'
else:
return v.strftime('%Y-%m-%dT%H:%M:%SZ')
def parse_datestr(datestr):
"""Parses a datetime object from the string format shared by xml and notation serializations."""
@@ -183,6 +186,7 @@ class LLSDXMLFormatter(object):
unicode : self.STRING,
uri : self.URI,
datetime.datetime : self.DATE,
datetime.date : self.DATE,
list : self.ARRAY,
tuple : self.ARRAY,
types.GeneratorType : self.ARRAY,
@@ -234,7 +238,7 @@ class LLSDXMLFormatter(object):
def MAP(self, v):
return self.elt(
'map',
''.join(["%s%s" % (self.elt('key', key), self.generate(value))
''.join(["%s%s" % (self.elt('key', self.xml_esc(str(key))), self.generate(value))
for key, value in v.items()]))
typeof = type
@@ -347,6 +351,7 @@ class LLSDNotationFormatter(object):
unicode : self.STRING,
uri : self.URI,
datetime.datetime : self.DATE,
datetime.date : self.DATE,
list : self.ARRAY,
tuple : self.ARRAY,
types.GeneratorType : self.ARRAY,
@@ -924,12 +929,13 @@ def _format_binary_recurse(something):
(type(something), something))
def parse_binary(something):
header = '<?llsd/binary?>\n'
if not something.startswith(header):
raise LLSDParseError('LLSD binary encoding header not found')
return LLSDBinaryParser().parse(something[len(header):])
def parse_binary(binary):
if binary.startswith('<?llsd/binary?>'):
just_binary = binary.split('\n', 1)[1]
else:
just_binary = binary
return LLSDBinaryParser().parse(just_binary)
def parse_xml(something):
try:
return to_python(fromstring(something)[0])

View File

@@ -28,13 +28,12 @@ $/LicenseInfo$
import random, socket, string, time, re
import uuid
# *HACK: Necessary for python 2.4. Consider replacing this code wart
# after python >=2.5 has deployed everywhere. 2009-10-05
try:
# Python 2.6
from hashlib import md5
except ImportError:
from md5 import md5
# Python 2.5 and earlier
from md5 import new as md5
def _int2binstr(i,l):
s=''
@@ -73,7 +72,7 @@ class UUID(object):
ip = ''
try:
ip = socket.gethostbyname(socket.gethostname())
except(socket.gaierror):
except(socket.gaierror, socket.error):
# no ip address, so just default to somewhere in 10.x.x.x
ip = '10'
for i in range(3):
@@ -164,7 +163,7 @@ class UUID(object):
def setFromMemoryDump(self, gdb_string):
"""
We expect to get gdb_string as four hex units. eg:
0x147d54db 0xc34b3f1b 0x714f989b 0x0a892fd2
0x147d54db 0xc34b3f1b 0x714f989b 0x0a892fd2
Which will be translated to:
db547d14-1b3f4bc3-9b984f71-d22f890a
Returns self.
@@ -188,7 +187,7 @@ class UUID(object):
def getAsString(self):
"""
Return a different string representation of the form
AAAAAAAA-AAAABBBB-BBBBBBBB-BBCCCCCC (a 128-bit number in hex)
AAAAAAAA-AAAABBBB-BBBBBBBB-BBCCCCCC (a 128-bit number in hex)
where A=network address, B=timestamp, C=random.
"""
i1 = _binstr2int(self._bits[0:4])
@@ -234,7 +233,7 @@ NULL = UUID()
def printTranslatedMemory(four_hex_uints):
"""
We expect to get the string as four hex units. eg:
0x147d54db 0xc34b3f1b 0x714f989b 0x0a892fd2
0x147d54db 0xc34b3f1b 0x714f989b 0x0a892fd2
Which will be translated to:
db547d14-1b3f4bc3-9b984f71-d22f890a
"""

View File

@@ -29,25 +29,93 @@ $/LicenseInfo$
"""
import sys
from indra.base import llsd
try:
import syslog
except ImportError:
# Windows
import sys
class syslog(object):
# wrap to a lame syslog for windows
_logfp = sys.stderr
def syslog(msg):
_logfp.write(msg)
if not msg.endswith('\n'):
_logfp.write('\n')
syslog = staticmethod(syslog)
_sequence_id = 0
from indra.base.llsd import format_notation
def record_metrics(table, stats, dest=None):
def record_metrics(table, stats):
"Write a standard metrics log"
_log("LLMETRICS", table, stats, dest)
_log("LLMETRICS", table, stats)
def record_event(table, data, dest=None):
def record_event(table, data):
"Write a standard logmessage log"
_log("LLLOGMESSAGE", table, data, dest)
_log("LLLOGMESSAGE", table, data)
def _log(header, table, data, dest):
def set_destination(dest):
"""Set the destination of metrics logs for this process.
If you do not call this function prior to calling a logging
method, that function will open sys.stdout as a destination.
Attempts to set dest to None will throw a RuntimeError.
@param dest a file-like object which will be the destination for logs."""
if dest is None:
# do this check here in case sys.stdout changes at some
# point. as a default parameter, it will never be
# re-evaluated.
dest = sys.stdout
raise RuntimeError("Attempt to unset metrics destination.")
global _destination
_destination = dest
def destination():
"""Get the destination of the metrics logs for this process.
Returns None if no destination is set"""
global _destination
return _destination
class SysLogger(object):
"A file-like object which writes to syslog."
def __init__(self, ident='indra', logopt = None, facility = None):
try:
if logopt is None:
logopt = syslog.LOG_CONS | syslog.LOG_PID
if facility is None:
facility = syslog.LOG_LOCAL0
syslog.openlog(ident, logopt, facility)
import atexit
atexit.register(syslog.closelog)
except AttributeError:
# No syslog module on Windows
pass
def write(str):
syslog.syslog(str)
write = staticmethod(write)
def flush():
pass
flush = staticmethod(flush)
#
# internal API
#
_sequence_id = 0
_destination = None
def _next_id():
global _sequence_id
print >>dest, header, "(" + str(_sequence_id) + ")",
print >>dest, table, llsd.format_notation(data)
next = _sequence_id
_sequence_id += 1
return next
def _dest():
global _destination
if _destination is None:
# this default behavior is documented in the metrics functions above.
_destination = sys.stdout
return _destination
def _log(header, table, data):
log_line = "%s (%d) %s %s" \
% (header, _next_id(), table, format_notation(data))
dest = _dest()
dest.write(log_line)
dest.flush()

View File

@@ -39,6 +39,12 @@ except:
pass
_g_builder = None
def _builder():
global _g_builder
if _g_builder is None:
_g_builder = ServiceBuilder()
return _g_builder
def build(name, context={}, **kwargs):
""" Convenience method for using a global, singleton, service builder. Pass arguments either via a dict or via python keyword arguments, or both!
@@ -56,6 +62,11 @@ def build(name, context={}, **kwargs):
_g_builder = ServiceBuilder()
return _g_builder.buildServiceURL(name, context, **kwargs)
def build_path(name, context={}, **kwargs):
context = context.copy() # shouldn't modify the caller's dictionary
context.update(kwargs)
return _builder().buildPath(name, context)
class ServiceBuilder(object):
def __init__(self, services_definition = services_config):
"""\
@@ -73,12 +84,21 @@ class ServiceBuilder(object):
continue
if isinstance(service_builder, dict):
# We will be constructing several builders
for name, builder in service_builder.items():
for name, builder in service_builder.iteritems():
full_builder_name = service['name'] + '-' + name
self.builders[full_builder_name] = builder
else:
self.builders[service['name']] = service_builder
def buildPath(self, name, context):
"""\
@brief given the environment on construction, return a service path.
@param name The name of the service.
@param context A dict of name value lookups for the service.
@returns Returns the
"""
return russ.format(self.builders[name], context)
def buildServiceURL(self, name, context={}, **kwargs):
"""\
@brief given the environment on construction, return a service URL.
@@ -108,7 +128,7 @@ def on_in(query_name, host_key, schema_key):
@param schema_key Logical name of destination schema. Will
be looked up in indra.xml.
"""
host_name = config.get(host_key)
schema_name = config.get(schema_key)
return '/'.join( ('on', host_name, 'in', schema_name, query_name.lstrip('/')) )
return "on/config:%s/in/config:%s/%s" % (host_key.strip('/'),
schema_key.strip('/'),
query_name.lstrip('/'))

View File

@@ -1,3 +1,32 @@
"""\
@file siesta.py
@brief A tiny llsd based RESTful web services framework
$LicenseInfo:firstyear=2008&license=mit$
Copyright (c) 2008, Linden Research, Inc.
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.
$/LicenseInfo$
"""
from indra.base import config
from indra.base import llsd
from webob import exc
import webob
@@ -37,11 +66,11 @@ def mime_type(content_type):
return content_type.split(';', 1)[0].strip().lower()
class BodyLLSD(object):
'''Give a webob Request or Response an llsd property.
'''Give a webob Request or Response an llsd based "content" property.
Getting the llsd property parses the body, and caches the result.
Getting the content property parses the body, and caches the result.
Setting the llsd property formats a payload, and the body property
Setting the content property formats a payload, and the body property
is set.'''
def _llsd__get(self):
@@ -80,7 +109,7 @@ class BodyLLSD(object):
if hasattr(self, '_llsd'):
del self._llsd
llsd = property(_llsd__get, _llsd__set, _llsd__del)
content = property(_llsd__get, _llsd__set, _llsd__del)
class Response(webob.Response, BodyLLSD):
@@ -114,10 +143,10 @@ class Request(webob.Request, BodyLLSD):
Sensible content type and accept headers are used by default.
Setting the llsd property also sets the body. Getting the llsd
Setting the content property also sets the body. Getting the content
property parses the body if necessary.
If you set the body property directly, the llsd property will be
If you set the body property directly, the content property will be
deleted.'''
default_content_type = 'application/llsd+xml'
@@ -149,11 +178,11 @@ class Request(webob.Request, BodyLLSD):
body = property(webob.Request._body__get, _body__set,
webob.Request._body__del, webob.Request._body__get.__doc__)
def create_response(self, llsd=None, status='200 OK',
def create_response(self, content=None, status='200 OK',
conditional_response=webob.NoDefault):
resp = self.ResponseClass(status=status, request=self,
conditional_response=conditional_response)
resp.llsd = llsd
resp.content = content
return resp
def curl(self):
@@ -196,12 +225,18 @@ llsd_formatters = {
'application/xml': llsd.format_xml,
}
formatter_qualities = (
('application/llsd+xml', 1.0),
('application/llsd+notation', 0.5),
('application/llsd+binary', 0.4),
('application/xml', 0.3),
('application/json', 0.2),
)
def formatter_for_mime_type(mime_type):
'''Return a formatter that encodes to the given MIME type.
The result is a pair of function and MIME type.'''
try:
return llsd_formatters[mime_type], mime_type
except KeyError:
@@ -214,21 +249,19 @@ def formatter_for_request(req):
'''Return a formatter that encodes to the preferred type of the client.
The result is a pair of function and actual MIME type.'''
for ctype in req.accept.best_matches('application/llsd+xml'):
try:
return llsd_formatters[ctype], ctype
except KeyError:
pass
else:
ctype = req.accept.best_match(formatter_qualities)
try:
return llsd_formatters[ctype], ctype
except KeyError:
raise exc.HTTPNotAcceptable().exception
def wsgi_adapter(func, environ, start_response):
'''Adapt a Siesta callable to act as a WSGI application.'''
# Process the request as appropriate.
try:
req = Request(environ)
#print req.urlvars
resp = func(req, **req.urlvars)
if not isinstance(resp, webob.Response):
try:
@@ -281,7 +314,8 @@ def llsd_class(cls):
allowed = [m for m in http11_methods
if hasattr(instance, 'handle_' + m.lower())]
raise exc.HTTPMethodNotAllowed(
headers={'Allowed': ', '.join(allowed)}).exception
headers={'Allow': ', '.join(allowed)}).exception
#print "kwargs: ", kwargs
return handler(req, **kwargs)
def replacement(environ, start_response):
@@ -336,7 +370,7 @@ def curl(reqs):
route_re = re.compile(r'''
\{ # exact character "{"
(\w+) # variable name (restricted to a-z, 0-9, _)
(\w*) # "config" or variable (restricted to a-z, 0-9, _)
(?:([:~])([^}]+))? # optional :type or ~regex part
\} # exact character "}"
''', re.VERBOSE)
@@ -344,27 +378,37 @@ route_re = re.compile(r'''
predefined_regexps = {
'uuid': r'[a-f0-9][a-f0-9-]{31,35}',
'int': r'\d+',
'host': r'[a-z0-9][a-z0-9\-\.]*',
}
def compile_route(route):
fp = StringIO()
last_pos = 0
for match in route_re.finditer(route):
#print "matches: ", match.groups()
fp.write(re.escape(route[last_pos:match.start()]))
var_name = match.group(1)
sep = match.group(2)
expr = match.group(3)
if expr:
if sep == ':':
expr = predefined_regexps[expr]
# otherwise, treat what follows '~' as a regexp
if var_name == 'config':
expr = re.escape(str(config.get(var_name)))
else:
expr = '[^/]+'
expr = '(?P<%s>%s)' % (var_name, expr)
if expr:
if sep == ':':
expr = predefined_regexps[expr]
# otherwise, treat what follows '~' as a regexp
else:
expr = '[^/]+'
if var_name != '':
expr = '(?P<%s>%s)' % (var_name, expr)
else:
expr = '(%s)' % (expr,)
fp.write(expr)
last_pos = match.end()
fp.write(re.escape(route[last_pos:]))
return '^%s$' % fp.getvalue()
compiled_route = '^%s$' % fp.getvalue()
#print route, "->", compiled_route
return compiled_route
class Router(object):
'''WSGI routing class. Parses a URL and hands off a request to
@@ -372,21 +416,43 @@ class Router(object):
responds with a 404.'''
def __init__(self):
self.routes = []
self.paths = []
self._new_routes = []
self._routes = []
self._paths = []
def add(self, route, app, methods=None):
self.paths.append(route)
self.routes.append((re.compile(compile_route(route)), app,
methods and dict.fromkeys(methods)))
self._new_routes.append((route, app, methods))
def _create_routes(self):
for route, app, methods in self._new_routes:
self._paths.append(route)
self._routes.append(
(re.compile(compile_route(route)),
app,
methods and dict.fromkeys(methods)))
self._new_routes = []
def __call__(self, environ, start_response):
# load up the config from the config file. Only needs to be
# done once per interpreter. This is the entry point of all
# siesta applications, so this is where we trap it.
_conf = config.get_config()
if _conf is None:
import os.path
fname = os.path.join(
environ.get('ll.config_dir', '/local/linden/etc'),
'indra.xml')
config.load(fname)
# proceed with handling the request
self._create_routes()
path_info = environ['PATH_INFO']
request_method = environ['REQUEST_METHOD']
allowed = []
for regex, app, methods in self.routes:
for regex, app, methods in self._routes:
m = regex.match(path_info)
if m:
#print "groupdict:",m.groupdict()
if not methods or request_method in methods:
environ['paste.urlvars'] = m.groupdict()
return app(environ, start_response)
@@ -396,7 +462,7 @@ class Router(object):
allowed = dict.fromkeys(allows).keys()
allowed.sort()
resp = exc.HTTPMethodNotAllowed(
headers={'Allowed': ', '.join(allowed)})
headers={'Allow': ', '.join(allowed)})
else:
resp = exc.HTTPNotFound()
return resp(environ, start_response)

View File

@@ -39,6 +39,7 @@ import shutil
import sys
import tarfile
import errno
import subprocess
def path_ancestors(path):
drive, path = os.path.splitdrive(os.path.normpath(path))
@@ -192,6 +193,8 @@ def usage(srctree=""):
arg['description'] % nd)
def main():
print "cwd:", os.getcwd()
print " ".join(sys.argv)
option_names = [arg['name'] + '=' for arg in ARGUMENTS]
option_names.append('help')
options, remainder = getopt.getopt(sys.argv[1:], "", option_names)
@@ -266,7 +269,7 @@ class LLManifest(object):
__metaclass__ = LLManifestRegistry
manifests = {}
def for_platform(self, platform, arch = None):
if arch:
if arch and platform != "windows":
platform = platform + '_' + arch
return self.manifests[platform.lower()]
for_platform = classmethod(for_platform)
@@ -277,13 +280,14 @@ class LLManifest(object):
self.file_list = []
self.excludes = []
self.actions = []
self.src_prefix = [args['source']]
self.artwork_prefix = [args['artwork']]
self.build_prefix = [args['build']]
self.dst_prefix = [args['dest']]
self.src_prefix = list([args['source']])
self.artwork_prefix = list([args['artwork']])
self.build_prefix = list([args['build']])
self.alt_build_prefix = list([args['build']])
self.dst_prefix = list([args['dest']])
self.created_paths = []
self.package_name = "Unknown"
def default_grid(self):
return self.args.get('grid', None) == ''
def default_channel(self):
@@ -307,7 +311,7 @@ class LLManifest(object):
in the file list by path()."""
self.excludes.append(glob)
def prefix(self, src='', build=None, dst=None):
def prefix(self, src='', build=None, dst=None, alt_build=None):
""" Pushes a prefix onto the stack. Until end_prefix is
called, all relevant method calls (esp. to path()) will prefix
paths with the entire prefix stack. Source and destination
@@ -318,10 +322,15 @@ class LLManifest(object):
dst = src
if build is None:
build = src
if alt_build is None:
alt_build = build
self.src_prefix.append(src)
self.artwork_prefix.append(src)
self.build_prefix.append(build)
self.dst_prefix.append(dst)
self.alt_build_prefix.append(alt_build)
return True # so that you can wrap it in an if to get indentation
def end_prefix(self, descr=None):
@@ -334,25 +343,30 @@ class LLManifest(object):
src = self.src_prefix.pop()
artwork = self.artwork_prefix.pop()
build = self.build_prefix.pop()
alt_build_prefix = self.alt_build_prefix.pop()
dst = self.dst_prefix.pop()
if descr and not(src == descr or build == descr or dst == descr):
raise ValueError, "End prefix '" + descr + "' didn't match '" +src+ "' or '" +dst + "'"
def get_src_prefix(self):
""" Returns the current source prefix."""
return os.path.join(*self.src_prefix)
return os.path.relpath(os.path.normpath(os.path.join(*self.src_prefix)))
def get_artwork_prefix(self):
""" Returns the current artwork prefix."""
return os.path.join(*self.artwork_prefix)
return os.path.relpath(os.path.normpath(os.path.join(*self.artwork_prefix)))
def get_build_prefix(self):
""" Returns the current build prefix."""
return os.path.join(*self.build_prefix)
return os.path.relpath(os.path.normpath(os.path.join(*self.build_prefix)))
def get_alt_build_prefix(self):
""" Returns the current alternate source prefix."""
return os.path.relpath(os.path.normpath(os.path.join(*self.alt_build_prefix)))
def get_dst_prefix(self):
""" Returns the current destination prefix."""
return os.path.join(*self.dst_prefix)
return os.path.relpath(os.path.normpath(os.path.join(*self.dst_prefix)))
def src_path_of(self, relpath):
"""Returns the full path to a file or directory specified
@@ -369,42 +383,25 @@ class LLManifest(object):
relative to the destination directory."""
return os.path.join(self.get_dst_prefix(), relpath)
def ensure_src_dir(self, reldir):
"""Construct the path for a directory relative to the
source path, and ensures that it exists. Returns the
full path."""
path = os.path.join(self.get_src_prefix(), reldir)
self.cmakedirs(path)
return path
def ensure_dst_dir(self, reldir):
"""Construct the path for a directory relative to the
destination path, and ensures that it exists. Returns the
full path."""
path = os.path.join(self.get_dst_prefix(), reldir)
self.cmakedirs(path)
return path
def run_command(self, command):
""" Runs an external command, and returns the output. Raises
an exception if the command reurns a nonzero status code. For
debugging/informational purpoases, prints out the command's
output as it is received."""
print "Running command:", command
fd = os.popen(command, 'r')
fd = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
lines = []
while True:
lines.append(fd.readline())
lines.append(fd.stdout.readline())
if lines[-1] == '':
break
else:
print lines[-1],
print lines[-1].rstrip('\n'),
output = ''.join(lines)
status = fd.close()
if status:
if fd.returncode:
raise RuntimeError(
"Command %s returned non-zero status (%s) \noutput:\n%s"
% (command, status, output) )
% (command, fd.returncode, output) )
return output
def created_path(self, path):
@@ -482,29 +479,30 @@ class LLManifest(object):
if method is not None:
method(src, dst)
self.file_list.append([src, dst])
return 1
return [dst]
else:
sys.stdout.write(" (excluding %r, %r)" % (src, dst))
sys.stdout.flush()
return 0
return []
def process_directory(self, src, dst):
if not self.includes(src, dst):
sys.stdout.write(" (excluding %r, %r)" % (src, dst))
sys.stdout.flush()
return 0
return []
names = os.listdir(src)
self.cmakedirs(dst)
errors = []
found_files = []
count = 0
for name in names:
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
if os.path.isdir(srcname):
count += self.process_directory(srcname, dstname)
found_files.extend(self.process_directory(srcname, dstname))
else:
count += self.process_file(srcname, dstname)
return count
found_files.extend(self.process_file(srcname, dstname))
return found_files
def includes(self, src, dst):
if src:
@@ -584,25 +582,11 @@ class LLManifest(object):
if os.path.exists(f):
return f
# didn't find it, return last item in list
if len(list) > 0:
if list:
return list[-1]
else:
return None
def contents_of_tar(self, src_tar, dst_dir):
""" Extracts the contents of the tarfile (specified
relative to the source prefix) into the directory
specified relative to the destination directory."""
self.check_file_exists(src_tar)
tf = tarfile.open(self.src_path_of(src_tar), 'r')
for member in tf.getmembers():
tf.extract(member, self.ensure_dst_dir(dst_dir))
# TODO get actions working on these dudes, perhaps we should extract to a temporary directory and then process_directory on it?
self.file_list.append([src_tar,
self.dst_path_of(os.path.join(dst_dir,member.name))])
tf.close()
def wildcard_regex(self, src_glob, dst_glob):
src_re = re.escape(src_glob)
src_re = src_re.replace('\*', '([-a-zA-Z0-9._ ]*)')
@@ -613,12 +597,6 @@ class LLManifest(object):
i = i+1
return re.compile(src_re), dst_temp
def check_file_exists(self, path):
if not os.path.exists(path) and not os.path.islink(path):
raise RuntimeError("Path %s doesn't exist" % (
os.path.normpath(os.path.join(os.getcwd(), path)),))
wildcard_pattern = re.compile('\*')
def expand_globs(self, src, dst):
src_list = glob.glob(src)
@@ -628,40 +606,61 @@ class LLManifest(object):
d = src_re.sub(d_template, s.replace('\\', '/'))
yield os.path.normpath(s), os.path.normpath(d)
def path2basename(self, path, file):
"""
It is a common idiom to write:
self.path(os.path.join(somedir, somefile), somefile)
So instead you can write:
self.path2basename(somedir, somefile)
Note that this is NOT the same as:
self.path(os.path.join(somedir, somefile))
which is the same as:
temppath = os.path.join(somedir, somefile)
self.path(temppath, temppath)
"""
return self.path(os.path.join(path, file), file)
def path(self, src, dst=None):
sys.stdout.write("Processing %s => %s ... " % (src, dst))
sys.stdout.flush()
if src == None:
raise RuntimeError("No source file, dst is " + dst)
if dst == None:
dst = src
dst = os.path.join(self.get_dst_prefix(), dst)
sys.stdout.write("Processing %s => %s ... " % (src, dst))
count = 0
is_glob = False
found_files = []
# look under each prefix for matching paths
paths = set([os.path.join(self.get_src_prefix(), src),
os.path.join(self.get_artwork_prefix(), src),
os.path.join(self.get_build_prefix(), src)])
# look under each prefix for matching paths. Paths are normalized so './../blah' will match '../blah/../blah/'
paths = set([os.path.normpath(os.path.join(self.get_src_prefix(), src)),
os.path.normpath(os.path.join(self.get_artwork_prefix(), src)),
os.path.normpath(os.path.join(self.get_build_prefix(), src)),
os.path.normpath(os.path.join(self.get_alt_build_prefix(), src))]
)
for path in paths:
if self.wildcard_pattern.search(path):
is_glob = True
for s,d in self.expand_globs(path, dst):
assert(s != d)
count += self.process_file(s, d)
found_files.extend(self.process_file(s, d))
else:
# if it's a directory, recurse through it
if os.path.isdir(path):
count += self.process_directory(path, dst)
found_files.extend(self.process_directory(path, dst))
elif os.path.exists(path):
count += self.process_file(path, dst)
found_files.extend(self.process_file(path, dst))
# if we're specifying a single path (not a glob),
# we should error out if it doesn't exist
if count == 0 and not is_glob:
if not found_files and not is_glob:
raise RuntimeError("No files match %s\n" % str(paths))
print "%d files" % count
print "%d files" % len(found_files)
return found_files
def do(self, *actions):
self.actions = actions

View File

@@ -1,4 +1,28 @@
#!/usr/bin/python
#!/usr/bin/env python
"""\
@file llperformance.py
$LicenseInfo:firstyear=2010&license=viewerlgpl$
Second Life Viewer Source Code
Copyright (C) 2010-2011, Linden Research, Inc.
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;
version 2.1 of the License only.
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
$/LicenseInfo$
"""
# ------------------------------------------------
# Sim metrics utility functions.

View File

@@ -90,6 +90,17 @@ all the output, and get the result.
child.tochild.close()
result = child.poll()
if result != -1:
# At this point, the child process has exited and result
# is the return value from the process. Between the time
# we called select() and poll() the process may have
# exited so read all the data left on the child process
# stdout and stderr.
last = child.fromchild.read()
if last:
out.append(last)
last = child.childerr.read()
if last:
err.append(last)
child.tochild.close()
child.fromchild.close()
child.childerr.close()

View File

@@ -1,95 +0,0 @@
"""@file llversion.py
@brief Utility for parsing llcommon/llversion${server}.h
for the version string and channel string
Utility that parses svn info for branch and revision
$LicenseInfo:firstyear=2006&license=mit$
Copyright (c) 2006-2009, Linden Research, Inc.
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.
$/LicenseInfo$
"""
import re, sys, os, commands
# Methods for gathering version information from
# llversionviewer.h and llversionserver.h
def get_src_root():
indra_lib_python_indra_path = os.path.dirname(__file__)
return os.path.abspath(os.path.realpath(indra_lib_python_indra_path + "/../../../../../"))
def get_version_file_contents(version_type):
filepath = get_src_root() + '/indra/llcommon/llversion%s.h' % version_type
file = open(filepath,"r")
file_str = file.read()
file.close()
return file_str
def get_version(version_type):
file_str = get_version_file_contents(version_type)
m = re.search('const S32 LL_VERSION_MAJOR = (\d+);', file_str)
VER_MAJOR = m.group(1)
m = re.search('const S32 LL_VERSION_MINOR = (\d+);', file_str)
VER_MINOR = m.group(1)
m = re.search('const S32 LL_VERSION_PATCH = (\d+);', file_str)
VER_PATCH = m.group(1)
m = re.search('const S32 LL_VERSION_BUILD = (\d+);', file_str)
VER_BUILD = m.group(1)
version = "%(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s" % locals()
return version
def get_channel(version_type):
file_str = get_version_file_contents(version_type)
m = re.search('const char \* const LL_CHANNEL = "(.+)";', file_str)
return m.group(1)
def get_viewer_version():
return get_version('viewer')
def get_server_version():
return get_version('server')
def get_viewer_channel():
return get_channel('viewer')
def get_server_channel():
return get_channel('server')
# Methods for gathering subversion information
def get_svn_status_matching(regular_expression):
# Get the subversion info from the working source tree
status, output = commands.getstatusoutput('svn info %s' % get_src_root())
m = regular_expression.search(output)
if not m:
print "Failed to parse svn info output, resultfollows:"
print output
raise Exception, "No matching svn status in "+src_root
return m.group(1)
def get_svn_branch():
branch_re = re.compile('URL: (\S+)')
return get_svn_status_matching(branch_re)
def get_svn_revision():
last_rev_re = re.compile('Last Changed Rev: (\d+)')
return get_svn_status_matching(last_rev_re)

View File

@@ -40,7 +40,6 @@ from indra.base import llsd
from indra.base import config
DEBUG = False
NQ_FILE_SUFFIX = config.get('named-query-file-suffix', '.nq')
NQ_FILE_SUFFIX_LEN = len(NQ_FILE_SUFFIX)
@@ -52,6 +51,11 @@ def _init_g_named_manager(sql_dir = None):
This function is intended entirely for testing purposes,
because it's tricky to control the config from inside a test."""
global NQ_FILE_SUFFIX
NQ_FILE_SUFFIX = config.get('named-query-file-suffix', '.nq')
global NQ_FILE_SUFFIX_LEN
NQ_FILE_SUFFIX_LEN = len(NQ_FILE_SUFFIX)
if sql_dir is None:
sql_dir = config.get('named-query-base-dir')
@@ -65,11 +69,11 @@ def _init_g_named_manager(sql_dir = None):
_g_named_manager = NamedQueryManager(
os.path.abspath(os.path.realpath(sql_dir)))
def get(name):
def get(name, schema = None):
"Get the named query object to be used to perform queries"
if _g_named_manager is None:
_init_g_named_manager()
return _g_named_manager.get(name)
return _g_named_manager.get(name).for_schema(schema)
def sql(connection, name, params):
# use module-global NamedQuery object to perform default substitution
@@ -280,7 +284,10 @@ class NamedQuery(object):
So, we need a vendor (or extention) for LIKE_STRING. Anyone
want to write it?"""
utf8_value = unicode(value, "utf-8")
if isinstance(value, unicode):
utf8_value = value
else:
utf8_value = unicode(value, "utf-8")
esc_list = []
remove_chars = set(u"%_")
for glyph in utf8_value:
@@ -317,6 +324,8 @@ class NamedQuery(object):
def for_schema(self, db_name):
"Look trough the alternates and return the correct query"
if db_name is None:
return self
try:
return self._alternative[db_name]
except KeyError, e:
@@ -341,21 +350,21 @@ class NamedQuery(object):
cursor = connection.cursor(MySQLdb.cursors.DictCursor)
else:
cursor = connection.cursor()
statement = self.sql(connection, params)
full_query, params = self._construct_sql(params)
if DEBUG:
print "SQL:", statement
rows = cursor.execute(statement)
print "SQL:", self.sql(connection, params)
rows = cursor.execute(full_query, params)
# *NOTE: the expect_rows argument is a very cheesy way to get some
# validation on the result set. If you want to add more expectation
# logic, do something more object-oriented and flexible. Or use an ORM.
# logic, do something more object-oriented and flexible. Or use an ORM.
if(self._return_as_map):
expect_rows = 1
if expect_rows is not None and rows != expect_rows:
cursor.close()
raise ExpectationFailed("Statement expected %s rows, got %s. Sql: %s" % (
expect_rows, rows, statement))
raise ExpectationFailed("Statement expected %s rows, got %s. Sql: '%s' %s" % (
expect_rows, rows, full_query, params))
# convert to dicts manually if we're not using a dictcursor
if use_dictcursor:
@@ -381,11 +390,9 @@ class NamedQuery(object):
return result_set[0]
return result_set
def sql(self, connection, params):
""" Generates an SQL statement from the named query document
and a dictionary of parameters.
"""
def _construct_sql(self, params):
""" Returns a query string and a dictionary of parameters,
suitable for directly passing to the execute() method."""
self.refresh()
# build the query from the options available and the params
@@ -431,10 +438,23 @@ class NamedQuery(object):
new_params[self._build_integer_key(key)] = int(params[key])
params.update(new_params)
return full_query, params
def sql(self, connection, params):
""" Generates an SQL statement from the named query document
and a dictionary of parameters.
*NOTE: Only use for debugging, because it uses the
non-standard MySQLdb 'literal' method.
"""
if not DEBUG:
import warnings
warnings.warn("Don't use named_query.sql() when not debugging. Used on %s" % self._location)
# do substitution using the mysql (non-standard) 'literal'
# function to do the escaping.
sql = full_query % connection.literal(params)
return sql
full_query, params = self._construct_sql(params)
return full_query % connection.literal(params)
def refresh(self):
""" Refresh self from the file on the filesystem.

View File

@@ -3,20 +3,27 @@
@file simperf_oprof_interface.py
@brief Manage OProfile data collection on a host
$LicenseInfo:firstyear=2008&license=internal$
$LicenseInfo:firstyear=2008&license=mit$
Copyright (c) 2008-2009, Linden Research, Inc.
The following source code is PROPRIETARY AND CONFIDENTIAL. Use of
this source code is governed by the Linden Lab Source Code Disclosure
Agreement ("Agreement") previously entered between you and Linden
Lab. By accessing, using, copying, modifying or distributing this
software, you acknowledge that you have been informed of your
obligations under the Agreement and agree to abide by those obligations.
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:
ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
COMPLETENESS OR PERFORMANCE.
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.
$/LicenseInfo$
"""

View File

@@ -1,4 +1,31 @@
#!/usr/bin/python
#!/usr/bin/env python
"""\
@file simperf_proc_interface.py
@brief Utility to extract log messages from *.<pid>.llsd files containing performance statistics.
$LicenseInfo:firstyear=2008&license=mit$
Copyright (c) 2008-2009, Linden Research, Inc.
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.
$/LicenseInfo$
"""
# ----------------------------------------------------
# Utility to extract log messages from *.<pid>.llsd

View File

@@ -0,0 +1,146 @@
#!/usr/bin/env python
"""\
@file test_win32_manifest.py
@brief Test an assembly binding version and uniqueness in a windows dll or exe.
$LicenseInfo:firstyear=2009&license=viewerlgpl$
Second Life Viewer Source Code
Copyright (C) 2009-2011, Linden Research, Inc.
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;
version 2.1 of the License only.
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
$/LicenseInfo$
"""
import sys, os
import tempfile
from xml.dom.minidom import parse
class AssemblyTestException(Exception):
pass
class NoManifestException(AssemblyTestException):
pass
class MultipleBindingsException(AssemblyTestException):
pass
class UnexpectedVersionException(AssemblyTestException):
pass
class NoMatchingAssemblyException(AssemblyTestException):
pass
def get_HKLM_registry_value(key_str, value_str):
import _winreg
reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE)
key = _winreg.OpenKey(reg, key_str)
value = _winreg.QueryValueEx(key, value_str)[0]
#print 'Found: %s' % value
return value
def find_vc_dir():
supported_versions = (r'8.0', r'9.0')
supported_products = (r'VisualStudio', r'VCExpress')
value_str = (r'ProductDir')
for product in supported_products:
for version in supported_versions:
key_str = (r'SOFTWARE\Microsoft\%s\%s\Setup\VC' %
(product, version))
try:
return get_HKLM_registry_value(key_str, value_str)
except WindowsError, err:
x64_key_str = (r'SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%s\Setup\VS' %
version)
try:
return get_HKLM_registry_value(x64_key_str, value_str)
except:
print >> sys.stderr, "Didn't find MS %s version %s " % (product,version)
raise
def find_mt_path():
vc_dir = find_vc_dir()
mt_path = '\"%sbin\\mt.exe\"' % vc_dir
return mt_path
def test_assembly_binding(src_filename, assembly_name, assembly_ver):
print "checking %s dependency %s..." % (src_filename, assembly_name)
(tmp_file_fd, tmp_file_name) = tempfile.mkstemp(suffix='.xml')
tmp_file = os.fdopen(tmp_file_fd)
tmp_file.close()
mt_path = find_mt_path()
resource_id = ""
if os.path.splitext(src_filename)[1].lower() == ".dll":
resource_id = ";#2"
system_call = '%s -nologo -inputresource:%s%s -out:%s > NUL' % (mt_path, src_filename, resource_id, tmp_file_name)
print "Executing: %s" % system_call
mt_result = os.system(system_call)
if mt_result == 31:
print "No manifest found in %s" % src_filename
raise NoManifestException()
manifest_dom = parse(tmp_file_name)
nodes = manifest_dom.getElementsByTagName('assemblyIdentity')
versions = list()
for node in nodes:
if node.getAttribute('name') == assembly_name:
versions.append(node.getAttribute('version'))
if len(versions) == 0:
print "No matching assemblies found in %s" % src_filename
raise NoMatchingAssemblyException()
elif len(versions) > 1:
print "Multiple bindings to %s found:" % assembly_name
print versions
print
raise MultipleBindingsException(versions)
elif versions[0] != assembly_ver:
print "Unexpected version found for %s:" % assembly_name
print "Wanted %s, found %s" % (assembly_ver, versions[0])
print
raise UnexpectedVersionException(assembly_ver, versions[0])
os.remove(tmp_file_name)
print "SUCCESS: %s OK!" % src_filename
print
if __name__ == '__main__':
print
print "Running test_win32_manifest.py..."
usage = 'test_win32_manfest <srcFileName> <assemblyName> <assemblyVersion>'
try:
src_filename = sys.argv[1]
assembly_name = sys.argv[2]
assembly_ver = sys.argv[3]
except:
print "Usage:"
print usage
print
raise
test_assembly_binding(src_filename, assembly_name, assembly_ver)

View File

@@ -45,13 +45,6 @@ Typical usage:
This module works with Python 2.3 or higher."""
# *HACK: Necessary for python 2.4. Consider replacing this code wart
# after python >=2.5 has deployed everywhere. 2009-10-05
try:
from hashlib import md5
except ImportError:
from md5 import md5
__author__ = 'Ka-Ping Yee <ping@zesty.ca>'
__date__ = '$Date: 2006/06/12 23:15:40 $'.split()[1].replace('/', '-')
__version__ = '$Revision: 1.30 $'.split()[1]
@@ -453,6 +446,13 @@ def uuid1(node=None, clock_seq=None):
def uuid3(namespace, name):
"""Generate a UUID from the MD5 hash of a namespace UUID and a name."""
try:
# Python 2.6
from hashlib import md5
except ImportError:
# Python 2.5 and earlier
from md5 import new as md5
hash = md5(namespace.bytes + name).digest()
return UUID(bytes=hash[:16], version=3)

View File

@@ -138,7 +138,7 @@ namespace HACD
if (m_callBack)
{
char msg[1024];
sprintf(msg, "nCC %lu\n", m_graph.m_nCCs);
sprintf(msg, "nCC %zu\n", m_graph.m_nCCs);
(*m_callBack)(msg, 0.0, 0.0, m_graph.GetNVertices());
}
@@ -679,7 +679,7 @@ namespace HACD
{
if ((!condition1) && m_callBack)
{
sprintf(msg, "\n-> %lu\t%f\t%f\t%f\n", m_pqueue.size(), m_graph.m_vertices[v1].m_surf*100.0/m_area, m_graph.m_vertices[v2].m_surf*100.0/m_area, m_graph.m_edges[currentEdge.m_name].m_concavity);
sprintf(msg, "\n-> %zu\t%f\t%f\t%f\n", m_pqueue.size(), m_graph.m_vertices[v1].m_surf*100.0/m_area, m_graph.m_vertices[v2].m_surf*100.0/m_area, m_graph.m_edges[currentEdge.m_name].m_concavity);
(*m_callBack)(msg, progress, globalConcavity, m_graph.GetNVertices());
}
globalConcavity = std::max<double>(globalConcavity ,m_graph.m_edges[currentEdge.m_name].m_concavity);
@@ -879,7 +879,7 @@ namespace HACD
if (m_callBack)
{
char msg[1024];
sprintf(msg, "\t CH(%lu) \t %lu \t %lf \t %lu \t %f \t %lu\n", v, static_cast<unsigned long>(p), m_graph.m_vertices[v].m_concavity, m_graph.m_vertices[v].m_distPoints.Size(), m_graph.m_vertices[v].m_surf*100.0/m_area, m_graph.m_vertices[v].m_ancestors.size());
sprintf(msg, "\t CH(%zu) \t %zu \t %lf \t %zu \t %f \t %zu\n", v, p, m_graph.m_vertices[v].m_concavity, m_graph.m_vertices[v].m_distPoints.Size(), m_graph.m_vertices[v].m_surf*100.0/m_area, m_graph.m_vertices[v].m_ancestors.size());
(*m_callBack)(msg, 0.0, 0.0, m_nClusters);
p++;
}

View File

@@ -22,7 +22,9 @@
#include <set>
#include <vector>
#include <queue>
#if defined(_MSC_VER) && _MSC_VER >= 1700
#include <functional>
#endif
namespace HACD
{
const double sc_pi = 3.14159265;
@@ -315,7 +317,7 @@ namespace HACD
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 HACD * const CreateHACD(HeapManager * heapManager);
friend void DestroyHACD(HACD * const hacd);
};
inline HACD * const CreateHACD(HeapManager * heapManager)

View File

@@ -17,6 +17,10 @@
#include <assert.h>
#include <limits>
#include "hacdManifoldMesh.h"
#if _MSC_VER >= 1800
#include <algorithm>
#endif
namespace HACD
{
bool BBox::Raycast(const Vec3<Float> & origin, const Vec3<Float> & dir, Float & distMin) const
@@ -106,7 +110,7 @@ namespace HACD
m_nMaxNodes = 0;
for(size_t k = 0; k < maxDepth; k++)
{
m_nMaxNodes += (1 << maxDepth);
m_nMaxNodes += (static_cast<size_t>(1) << maxDepth);
}
m_nodes = new RMNode[m_nMaxNodes];
RMNode & root = m_nodes[AddNode()];

View File

@@ -7,7 +7,7 @@ include(00-Common)
include_directories(${LIBS_OPEN_DIR}/libhacd)
set (libndhacd_SOURCE_FILES
LLConvexDecomposition.cpp
llconvexdecomposition.cpp
nd_hacdConvexDecomposition.cpp
nd_hacdStructs.cpp
nd_hacdUtils.cpp
@@ -16,12 +16,12 @@ set (libndhacd_SOURCE_FILES
)
set (libndhacd_HEADER_FILES
LLConvexDecomposition.h
llconvexdecomposition.h
ndConvexDecomposition.h
nd_hacdConvexDecomposition.h
nd_hacdStructs.h
nd_StructTracer.h
LLConvexDecompositionStubImpl.h
llconvexdecompositionstubimpl.h
nd_EnterExitTracer.h
nd_hacdDefines.h
nd_hacdUtils.h

View File

@@ -1,5 +1,5 @@
/**
* @file LLConvexDecomposition.cpp
* @file llconvexdecomposition.cpp
* @author falcon@lindenlab.com
* @brief A stub implementation of LLConvexDecomposition interface
*
@@ -35,7 +35,7 @@
#include "nd_hacdConvexDecomposition.h"
#include "LLConvexDecomposition.h"
#include "llconvexdecomposition.h"
/*static */bool LLConvexDecomposition::s_isInitialized = false;

View File

@@ -1,5 +1,5 @@
/**
* @file LLConvexDecomposition.cpp
* @file llconvexdecomposition.cpp
* @brief LLConvexDecomposition interface definition
*
* $LicenseInfo:firstyear=2011&license=viewerlgpl$

View File

@@ -1,5 +1,5 @@
/**
* @file LLConvexDecompositionStubImpl.cpp
* @file llconvexdecompositionstubimpl.cpp
* @author falcon@lindenlab.com
* @brief A stub implementation of LLConvexDecomposition
*
@@ -28,7 +28,7 @@
#include <string.h>
#include <memory>
#include "LLConvexDecompositionStubImpl.h"
#include "llconvexdecompositionstubimpl.h"
LLConvexDecomposition* LLConvexDecompositionImpl::getInstance()
{

View File

@@ -1,5 +1,5 @@
/**
* @file LLConvexDecompositionStubImpl.h
* @file llconvexdecompositionstubimpl.h
* @author falcon@lindenlab.com
* @brief A stub implementation of LLConvexDecomposition
*
@@ -29,7 +29,7 @@
#ifndef LL_CONVEX_DECOMP_UTIL_H
#define LL_CONVEX_DECOMP_UTIL_H
#include "LLConvexDecomposition.h"
#include "llconvexdecomposition.h"
class LLConvexDecompositionImpl : public LLConvexDecomposition
{

View File

@@ -21,7 +21,7 @@
#include "ndConvexDecomposition.h"
#include "LLConvexDecomposition.h"
#include "llconvexdecomposition.h"
#include "nd_hacdStructs.h"
namespace ndStructTracer

View File

@@ -19,7 +19,7 @@
#ifndef ND_HACD_CONVEXDECOMP_H
#define ND_HACD_CONVEXDECOMP_H
#include "LLConvexDecomposition.h"
#include "llconvexdecomposition.h"
#include <map>
#include <vector>

View File

@@ -17,7 +17,6 @@
*/
#include "nd_hacdStructs.h"
#include "LLConvexDecomposition.h"
void DecompHull::clear()
{

View File

@@ -21,7 +21,7 @@
#include "nd_hacdDefines.h"
#include "hacdHACD.h"
#include "LLConvexDecomposition.h"
#include "llconvexdecomposition.h"
#include <vector>
struct LLCDHull;

View File

@@ -20,7 +20,6 @@
#define ND_HACD_UTILS_H
#include "nd_hacdStructs.h"
#include "LLConvexDecomposition.h"
tHACD* init( int nConcavity, int nClusters, int nMaxVerticesPerHull, double dMaxConnectDist, HACDDecoder *aData );
DecompData decompose( tHACD *aHACD );

View File

@@ -1,72 +0,0 @@
# -*- cmake -*-
project(linux_crash_logger)
include(00-Common)
include(LLCommon)
include(LLCrashLogger)
include(LLMath)
include(LLMessage)
include(LLVFS)
include(LLXML)
include(Linking)
include(UI)
include_directories(
${LLCOMMON_INCLUDE_DIRS}
${LLCRASHLOGGER_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
${LLVFS_INCLUDE_DIRS}
${LLXML_INCLUDE_DIRS}
)
set(linux_crash_logger_SOURCE_FILES
linux_crash_logger.cpp
llcrashloggerlinux.cpp
)
set(linux_crash_logger_HEADER_FILES
CMakeLists.txt
llcrashloggerlinux.h
)
set_source_files_properties(${linux_crash_logger_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND linux_crash_logger_SOURCE_FILES
${linux_crash_logger_HEADER_FILES}
)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
add_executable(linux-crash-logger ${linux_crash_logger_SOURCE_FILES})
target_link_libraries(linux-crash-logger
${LLCRASHLOGGER_LIBRARIES}
${LLVFS_LIBRARIES}
${LLXML_LIBRARIES}
${LLMESSAGE_LIBRARIES}
${LLUI_LIBRARIES}
${LLVFS_LIBRARIES}
${LLMATH_LIBRARIES}
${LLCOMMON_LIBRARIES}
${UI_LIBRARIES}
${DB_LIBRARIES}
${XMLRPCEPI_LIBRARIES}
${CURL_LIBRARIES}
${APR_LIBRARIES}
${APRUTIL_LIBRARIES}
${CRYPTO_LIBRARIES}
rt
)
add_custom_command(
OUTPUT linux-crash-logger-stripped
COMMAND strip
ARGS --strip-debug -o linux-crash-logger-stripped linux-crash-logger
DEPENDS linux-crash-logger
)
add_custom_target(linux-crash-logger-strip-target ALL
DEPENDS linux-crash-logger-stripped)

View File

@@ -1,45 +0,0 @@
/**
* @file linux_crash_logger.cpp
* @brief Linux crash logger implementation
*
* $LicenseInfo:firstyear=2003&license=viewergpl$
*
* Copyright (c) 2003-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("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 doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/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 doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/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.
* $/LicenseInfo$
*/
#include "llcrashloggerlinux.h"
int main(int argc, char **argv)
{
LLCrashLoggerLinux app;
app.parseCommandOptions(argc, argv);
app.init();
app.mainLoop();
app.cleanup();
return 0;
}

View File

@@ -1,148 +0,0 @@
/**
* @file llcrashloggerlinux.cpp
* @brief Linux crash logger implementation
*
* $LicenseInfo:firstyear=2003&license=viewergpl$
*
* Copyright (c) 2003-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("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 doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/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 doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/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.
* $/LicenseInfo$
*/
#include "llcrashloggerlinux.h"
#include <iostream>
#include "linden_common.h"
#include "boost/tokenizer.hpp"
#include "indra_constants.h" // CRASH_BEHAVIOR_ASK, CRASH_SETTING_NAME
#include "llerror.h"
#include "llfile.h"
#include "lltimer.h"
#include "llstring.h"
#include "lldir.h"
#include "llsdserialize.h"
#if LL_GTK
# include "gtk/gtk.h"
#endif // LL_GTK
#define MAX_LOADSTRING 100
// These need to be localized.
static const char dialog_text[] =
"Second Life appears to have crashed or frozen last time it ran.\n"
"This crash reporter collects information about your computer's hardware, operating system, and some Second Life logs, all of which are used for debugging purposes only.\n"
"\n"
"Send crash report?";
static const char dialog_title[] =
"Second Life Crash Logger";
#if LL_GTK
static void response_callback (GtkDialog *dialog,
gint arg1,
gpointer user_data)
{
gint *response = (gint*)user_data;
*response = arg1;
gtk_widget_destroy(GTK_WIDGET(dialog));
gtk_main_quit();
}
#endif // LL_GTK
static BOOL do_ask_dialog(void)
{
#if LL_GTK
gtk_disable_setlocale();
if (!gtk_init_check(NULL, NULL)) {
llinfos << "Could not initialize GTK for 'ask to send crash report' dialog; not sending report." << llendl;
return FALSE;
}
GtkWidget *win = NULL;
GtkDialogFlags flags = GTK_DIALOG_MODAL;
GtkMessageType messagetype = GTK_MESSAGE_QUESTION;
GtkButtonsType buttons = GTK_BUTTONS_YES_NO;
gint response = GTK_RESPONSE_NONE;
win = gtk_message_dialog_new(NULL,
flags, messagetype, buttons,
"%s", dialog_text);
gtk_window_set_type_hint(GTK_WINDOW(win),
GDK_WINDOW_TYPE_HINT_DIALOG);
gtk_window_set_title(GTK_WINDOW(win), dialog_title);
g_signal_connect (win,
"response",
G_CALLBACK (response_callback),
&response);
gtk_widget_show_all (win);
gtk_main();
return (GTK_RESPONSE_OK == response ||
GTK_RESPONSE_YES == response ||
GTK_RESPONSE_APPLY == response);
#else
return FALSE;
#endif // LL_GTK
}
LLCrashLoggerLinux::LLCrashLoggerLinux(void)
{
}
LLCrashLoggerLinux::~LLCrashLoggerLinux(void)
{
}
void LLCrashLoggerLinux::gatherPlatformSpecificFiles()
{
mFileMap["CrashLog"] = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log").c_str();
}
bool LLCrashLoggerLinux::mainLoop()
{
bool send_logs = true;
if(CRASH_BEHAVIOR_ASK == getCrashBehavior())
{
send_logs = do_ask_dialog();
}
else if(CRASH_BEHAVIOR_NEVER_SEND == getCrashBehavior())
{
send_logs = false;
}
if(send_logs)
{
sendCrashLogs();
}
return true;
}
void LLCrashLoggerLinux::updateApplication(const std::string& message)
{
LLCrashLogger::updateApplication(message);
}

View File

@@ -1,50 +0,0 @@
/**
* @file llcrashloggerlinux.h
* @brief Linux crash logger definition
*
* $LicenseInfo:firstyear=2003&license=viewergpl$
*
* Copyright (c) 2003-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("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 doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/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 doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/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.
* $/LicenseInfo$
*/
#ifndef LLCRASHLOGGERLINUX_H
#define LLCRASHLOGGERLINUX_H
#include "linden_common.h"
#include "llcrashlogger.h"
#include "llstring.h"
class LLCrashLoggerLinux : public LLCrashLogger
{
public:
LLCrashLoggerLinux(void);
~LLCrashLoggerLinux(void);
virtual bool mainLoop();
virtual void updateApplication(const std::string& = LLStringUtil::null);
virtual void gatherPlatformSpecificFiles();
};
#endif

View File

@@ -182,9 +182,6 @@ LLAvatarAppearance::LLAvatarAppearance(LLWearableData* wearable_data) :
}
mIsBuilt = FALSE;
mNumCollisionVolumes = 0;
mCollisionVolumes = NULL;
}
// virtual
@@ -294,7 +291,7 @@ LLAvatarAppearance::~LLAvatarAppearance()
mJointMap.clear();
clearSkeleton();
deleteAndClearArray(mCollisionVolumes);
clearCollisionVolumes();
std::for_each(mPolyMeshes.begin(), mPolyMeshes.end(), DeletePairedPointer());
mPolyMeshes.clear();
@@ -575,12 +572,12 @@ BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent
}
else // collision volume
{
if (volume_num >= (S32)mNumCollisionVolumes)
if (volume_num >= (S32)mCollisionVolumes.size())
{
llwarns << "Too many bones" << llendl;
return FALSE;
}
joint = (&mCollisionVolumes[volume_num]);
joint = (mCollisionVolumes[volume_num]);
joint->setName( info->mName );
}
@@ -983,19 +980,19 @@ BOOL LLAvatarAppearance::loadSkeletonNode ()
mRoot->addChild(mMeshLOD[MESH_ID_SKIRT]);
mRoot->addChild(mMeshLOD[MESH_ID_HEAD]);
LLAvatarJoint *skull = (LLAvatarJoint*)mRoot->findJoint("mSkull");
LLJoint *skull = mRoot->findJoint("mSkull");
if (skull)
{
skull->addChild(mMeshLOD[MESH_ID_HAIR] );
}
LLAvatarJoint *eyeL = (LLAvatarJoint*)mRoot->findJoint("mEyeLeft");
LLJoint *eyeL = mRoot->findJoint("mEyeLeft");
if (eyeL)
{
eyeL->addChild( mMeshLOD[MESH_ID_EYEBALL_LEFT] );
}
LLAvatarJoint *eyeR = (LLAvatarJoint*)mRoot->findJoint("mEyeRight");
LLJoint *eyeR = mRoot->findJoint("mEyeRight");
if (eyeR)
{
eyeR->addChild( mMeshLOD[MESH_ID_EYEBALL_RIGHT] );
@@ -1250,12 +1247,12 @@ LLVector3 LLAvatarAppearance::getVolumePos(S32 joint_index, LLVector3& volume_of
return LLVector3::zero;
}
if (joint_index > mNumCollisionVolumes)
if (joint_index > (S32)mCollisionVolumes.size())
{
return LLVector3::zero;
}
return mCollisionVolumes[joint_index].getVolumePos(volume_offset);
return mCollisionVolumes[joint_index]->getVolumePos(volume_offset);
}
//-----------------------------------------------------------------------------
@@ -1266,12 +1263,12 @@ LLJoint* LLAvatarAppearance::findCollisionVolume(U32 volume_id)
//SNOW-488: As mNumCollisionVolumes is a S32 and we are casting from a U32 to a S32
//to compare we also need to be sure of the wrap around case producing (S32) <0
//or in terms of the U32 an out of bounds index in the array.
if ((S32)volume_id > mNumCollisionVolumes || (S32)volume_id<0)
if ((S32)volume_id > (S32)mCollisionVolumes.size() || (S32)volume_id<0)
{
return NULL;
}
return &mCollisionVolumes[volume_id];
return mCollisionVolumes[volume_id];
}
//-----------------------------------------------------------------------------
@@ -1279,9 +1276,9 @@ LLJoint* LLAvatarAppearance::findCollisionVolume(U32 volume_id)
//-----------------------------------------------------------------------------
S32 LLAvatarAppearance::getCollisionVolumeID(std::string &name)
{
for (S32 i = 0; i < mNumCollisionVolumes; i++)
for (S32 i = 0; i < (S32)mCollisionVolumes.size(); i++)
{
if (mCollisionVolumes[i].getName() == name)
if (mCollisionVolumes[i]->getName() == name)
{
return i;
}
@@ -1530,21 +1527,34 @@ LLTexLayerSet* LLAvatarAppearance::getAvatarLayerSet(EBakedTextureIndex baked_in
return mBakedTextureDatas[baked_index].mTexLayerSet;
}
void LLAvatarAppearance::clearCollisionVolumes()
{
std::for_each(mCollisionVolumes.begin(), mCollisionVolumes.end(),
DeletePointer());
mCollisionVolumes.clear();
}
//-----------------------------------------------------------------------------
// allocateCollisionVolumes()
//-----------------------------------------------------------------------------
BOOL LLAvatarAppearance::allocateCollisionVolumes( U32 num )
{
deleteAndClearArray(mCollisionVolumes);
mNumCollisionVolumes = 0;
mCollisionVolumes.reserve(num);
mCollisionVolumes = new LLAvatarJointCollisionVolume[num];
if (!mCollisionVolumes)
LLAvatarJointCollisionVolume* cv;
for (U32 i = 0; i < num; ++i)
{
return FALSE;
cv = new LLAvatarJointCollisionVolume();
if (cv)
{
mCollisionVolumes.push_back(cv);
}
else
{
clearCollisionVolumes();
return false;
}
}
mNumCollisionVolumes = num;
return TRUE;
}

View File

@@ -337,9 +337,9 @@ protected:
// Collision volumes
//--------------------------------------------------------------------
public:
S32 mNumCollisionVolumes;
LLAvatarJointCollisionVolume* mCollisionVolumes;
std::vector<LLAvatarJointCollisionVolume*> mCollisionVolumes;
protected:
void clearCollisionVolumes();
BOOL allocateCollisionVolumes(U32 num);
/** Physics

View File

@@ -105,8 +105,9 @@ void LLAvatarJoint::setValid( BOOL valid, BOOL recursive )
for (child_list_t::iterator iter = mChildren.begin();
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = (LLAvatarJoint*)(*iter);
joint->setValid(valid, TRUE);
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
if (joint)
joint->setValid(valid, TRUE);
}
}
@@ -124,7 +125,8 @@ void LLAvatarJoint::setSkeletonComponents( U32 comp, BOOL recursive )
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
joint->setSkeletonComponents(comp, recursive);
if (joint)
joint->setSkeletonComponents(comp, recursive);
}
}
}
@@ -138,8 +140,9 @@ void LLAvatarJoint::setVisible(BOOL visible, BOOL recursive)
for (child_list_t::iterator iter = mChildren.begin();
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = (LLAvatarJoint*)(*iter);
joint->setVisible(visible, recursive);
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
if(joint)
joint->setVisible(visible, recursive);
}
}
}
@@ -150,7 +153,8 @@ void LLAvatarJoint::updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pix
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
joint->updateFaceSizes(num_vertices, num_indices, pixel_area);
if (joint)
joint->updateFaceSizes(num_vertices, num_indices, pixel_area);
}
}
@@ -160,7 +164,8 @@ void LLAvatarJoint::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind,
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
joint->updateFaceData(face, pixel_area, damp_wind, terse_update);
if (joint)
joint->updateFaceData(face, pixel_area, damp_wind, terse_update);
}
}
@@ -170,7 +175,8 @@ void LLAvatarJoint::updateJointGeometry()
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
joint->updateJointGeometry();
if (joint)
joint->updateJointGeometry();
}
}
@@ -184,6 +190,9 @@ BOOL LLAvatarJoint::updateLOD(F32 pixel_area, BOOL activate)
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
if (!joint)
continue;
F32 jointLOD = joint->getLOD();
if (found_lod || jointLOD == DEFAULT_AVATAR_JOINT_LOD)
@@ -213,7 +222,8 @@ void LLAvatarJoint::dump()
iter != mChildren.end(); ++iter)
{
LLAvatarJoint* joint = dynamic_cast<LLAvatarJoint*>(*iter);
joint->dump();
if (joint)
joint->dump();
}
}
@@ -260,7 +270,7 @@ void LLAvatarJointCollisionVolume::renderCollision()
updateWorldMatrix();
gGL.pushMatrix();
gGL.multMatrix( &mXform.getWorldMatrix().mMatrix[0][0] );
gGL.multMatrix( mXform.getWorldMatrix() );
gGL.diffuseColor3f( 0.f, 0.f, 1.f );

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