diff options
author | David Walter Seikel | 2013-07-15 03:59:58 +1000 |
---|---|---|
committer | David Walter Seikel | 2013-07-15 03:59:58 +1000 |
commit | c7f06e9e63a54874696fe89e2ef24c809bef51f3 (patch) | |
tree | 3eb207f344435fbeb82b142000980416d50690cd | |
parent | More Windlight refactoring, including moving the new stuff back to lightshare.c. (diff) | |
parent | Fix Align tool conflicts with Edit Linked Parts - http://redmine.kokuaviewer.... (diff) | |
download | meta-impy-c7f06e9e63a54874696fe89e2ef24c809bef51f3.zip meta-impy-c7f06e9e63a54874696fe89e2ef24c809bef51f3.tar.gz meta-impy-c7f06e9e63a54874696fe89e2ef24c809bef51f3.tar.bz2 meta-impy-c7f06e9e63a54874696fe89e2ef24c809bef51f3.tar.xz |
Merge remote-tracking branch 'origin/next' into WL-refactor
151 files changed, 3470 insertions, 1437 deletions
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index b2532be..55e04c3 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt | |||
@@ -4,6 +4,97 @@ | |||
4 | 4 | ||
5 | 5 | ||
6 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | 6 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
7 | =- 1.4.0 beta 2 -= | ||
8 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
9 | |||
10 | |||
11 | CHANGES | ||
12 | |||
13 | This version of Imprudence mostly contains bug fixes, as | ||
14 | Imprudence went into a feature freeze in anticipation of an RC | ||
15 | release to come later. | ||
16 | |||
17 | |||
18 | IMPROVEMENTS | ||
19 | |||
20 | * Selective cache clearing: now you can selectively delete | ||
21 | different types of disk cache separately. | ||
22 | |||
23 | BUG FIXES | ||
24 | |||
25 | Many bug fixes that are listed here - | ||
26 | |||
27 | http://wiki.kokuaviewer.org/wiki/Imprudence:Release_Notes/1.4.0_Beta_2 | ||
28 | |||
29 | |||
30 | |||
31 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
32 | =- 1.4.0 beta 1 -= | ||
33 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
34 | |||
35 | There was very many changes in 1.4.0 beta 1 compared to Imprudence | ||
36 | 1.3.2, this file only summarizes some of them. A more complete list | ||
37 | is here - | ||
38 | |||
39 | http://wiki.kokuaviewer.org/wiki/Imprudence:Release_Notes/1.4.0_Beta_1 | ||
40 | |||
41 | |||
42 | RELEASE HIGHLIGHTS | ||
43 | |||
44 | Compared to Imprudence 1.3, Imprudence 1.4 adds a mind-blowing | ||
45 | number of new features, UI improvements, and bug fixes. We | ||
46 | recommend Imprudence 1.3 users also upgrade to Imprudence 1.4 | ||
47 | soon, unless you require streaming audio support on Mac. | ||
48 | |||
49 | Here is a brief overview of some of the most notable new features, | ||
50 | grouped by category: | ||
51 | |||
52 | * General: Support for WindLight notecards; Updated Chinese, | ||
53 | French, German, and Japanese UIs; Derender object/avatar; Gestures | ||
54 | can use more keys; Reload $ Balance; Animation Overrider starts | ||
55 | working sooner. | ||
56 | |||
57 | * Communication: Spell Checking; AutoCorrect; Chat Translation; | ||
58 | Chatbar Commands; Display Names support; Highlight chat from | ||
59 | friends; Highlight chat mentioning your name or nickname(s); | ||
60 | Search bar in Friends and Groups lists. | ||
61 | |||
62 | * Content Creation: Support for Alpha and Tattoo layers; new Prim | ||
63 | Alignment tool; Local Textures (real-time preview of textures on | ||
64 | your computer without uploading); Object texture export from SL | ||
65 | (with TPVP-compliant permission checks); Upload support for | ||
66 | Photoshop PSD image files (available on Mac only); Copy/Paste | ||
67 | buttons in Build tools. | ||
68 | |||
69 | * Login, Grids, and OpenSim: Login name and password saved | ||
70 | per-grid; Support for variable sized regions (i.e. bigger than | ||
71 | 256m) when available; Support for the OpenRegionInfo capability. | ||
72 | |||
73 | * Map, Radar, and Teleport: Full Radar; Teleport History; Estate | ||
74 | Managers’ minimap radar distance is no longer limited; Right | ||
75 | clicking objects in Area Object Search to teleport to/cam to/edit | ||
76 | them. | ||
77 | |||
78 | * Media, Browser, and Networking: Media system revamped with | ||
79 | SLPlugin; Media Filters; Interaction and zoom with streaming | ||
80 | media/webpages; Improved XMLPRC and SOCKS5 proxy support; Parcel | ||
81 | media URLs are no longer hidden. | ||
82 | |||
83 | * Preferences: Reorganized Preferences window; New UI skins (Dark | ||
84 | and Gemini); Sliders for draw distance, etc. allow typing in exact | ||
85 | values; Search bar in Debug Settings. | ||
86 | |||
87 | * Texture Loading: Many, many texture loading improvements from | ||
88 | Robin Cornelius, Thickbrick Sleaford, and others; Various | ||
89 | improvements to help prevent unloaded (cloud) avatars. | ||
90 | |||
91 | * Development: Many, many, many code improvements and cleanup | ||
92 | under the hood. Special thanks to Aleric Inglewood and others for | ||
93 | their work on this. | ||
94 | |||
95 | |||
96 | |||
97 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
7 | =- 1.3.2 -= | 98 | =- 1.3.2 -= |
8 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | 99 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
9 | 100 | ||
diff --git a/linden/etc/message.xml b/linden/etc/message.xml index 8d34dd8..f86ca8b 100644 --- a/linden/etc/message.xml +++ b/linden/etc/message.xml | |||
@@ -702,6 +702,12 @@ | |||
702 | 702 | ||
703 | <key>FetchLib</key> | 703 | <key>FetchLib</key> |
704 | <boolean>true</boolean> | 704 | <boolean>true</boolean> |
705 | |||
706 | <key>ObjectMedia</key> | ||
707 | <boolean>false</boolean> | ||
708 | |||
709 | <key>ObjectMediaNavigate</key> | ||
710 | <boolean>false</boolean> | ||
705 | </map> | 711 | </map> |
706 | 712 | ||
707 | <key>messageBans</key> | 713 | <key>messageBans</key> |
diff --git a/linden/indra/cmake/00-Common.cmake b/linden/indra/cmake/00-Common.cmake index 81bfbdf..ea21ba0 100644 --- a/linden/indra/cmake/00-Common.cmake +++ b/linden/indra/cmake/00-Common.cmake | |||
@@ -24,6 +24,11 @@ list(REMOVE_DUPLICATES TYPES) | |||
24 | set(CMAKE_CONFIGURATION_TYPES ${TYPES} CACHE STRING "Supported build types." FORCE) | 24 | set(CMAKE_CONFIGURATION_TYPES ${TYPES} CACHE STRING "Supported build types." FORCE) |
25 | unset(TYPES) | 25 | unset(TYPES) |
26 | 26 | ||
27 | # Work around nmake / VS difference. | ||
28 | set(VIEWER_CFG_INTDIR ${CMAKE_CFG_INTDIR}) | ||
29 | if (NMAKE) | ||
30 | set(VIEWER_CFG_INTDIR ${CMAKE_BUILD_TYPE}) | ||
31 | endif(NMAKE) | ||
27 | 32 | ||
28 | # Determine the number of bits of this processor | 33 | # Determine the number of bits of this processor |
29 | 34 | ||
diff --git a/linden/indra/develop.py b/linden/indra/develop.py index 3760609..af633b2 100755 --- a/linden/indra/develop.py +++ b/linden/indra/develop.py | |||
@@ -408,7 +408,7 @@ class LinuxSetup(UnixSetup): | |||
408 | print 'Running %r' % cmd | 408 | print 'Running %r' % cmd |
409 | self.run(cmd) | 409 | self.run(cmd) |
410 | 410 | ||
411 | 411 | ||
412 | class DarwinSetup(UnixSetup): | 412 | class DarwinSetup(UnixSetup): |
413 | def __init__(self): | 413 | def __init__(self): |
414 | super(DarwinSetup, self).__init__() | 414 | super(DarwinSetup, self).__init__() |
@@ -485,6 +485,10 @@ class WindowsSetup(PlatformSetup): | |||
485 | 'vc100' : { | 485 | 'vc100' : { |
486 | 'gen' : r'Visual Studio 10', | 486 | 'gen' : r'Visual Studio 10', |
487 | 'ver' : r'10.0' | 487 | 'ver' : r'10.0' |
488 | }, | ||
489 | 'nmake' : { | ||
490 | 'gen' : r'NMake Makefiles', | ||
491 | 'ver' : r'' | ||
488 | } | 492 | } |
489 | } | 493 | } |
490 | gens['vs2003'] = gens['vc71'] | 494 | gens['vs2003'] = gens['vc71'] |
@@ -500,6 +504,41 @@ class WindowsSetup(PlatformSetup): | |||
500 | self._generator = None | 504 | self._generator = None |
501 | self.incredibuild = False | 505 | self.incredibuild = False |
502 | 506 | ||
507 | def find_visual_studio(self, gen=None): | ||
508 | if gen is None: | ||
509 | gen = self._generator | ||
510 | gen = gen.lower() | ||
511 | try: | ||
512 | import _winreg | ||
513 | key_str = (r'SOFTWARE\Microsoft\VisualStudio\%s\Setup\VS' % | ||
514 | self.gens[gen]['ver']) | ||
515 | value_str = (r'EnvironmentDirectory') | ||
516 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
517 | key = _winreg.OpenKey(reg, key_str) | ||
518 | value = _winreg.QueryValueEx(key, value_str)[0] | ||
519 | print 'Found: %s' % value | ||
520 | return value | ||
521 | except WindowsError, err: | ||
522 | return '' | ||
523 | |||
524 | def find_visual_studio_express(self, gen=None): | ||
525 | if gen is None: | ||
526 | gen = self._generator | ||
527 | gen = gen.lower() | ||
528 | try: | ||
529 | import _winreg | ||
530 | key_str = (r'SOFTWARE\Microsoft\VCExpress\%s\Setup\VC' % | ||
531 | self.gens[gen]['ver']) | ||
532 | value_str = (r'ProductDir') | ||
533 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
534 | key = _winreg.OpenKey(reg, key_str) | ||
535 | value = _winreg.QueryValueEx(key, value_str)[0]+"vcpackages" | ||
536 | print 'Found: %s' % value | ||
537 | self.using_express = True | ||
538 | return value | ||
539 | except WindowsError, err: | ||
540 | return '' | ||
541 | |||
503 | def _get_generator(self): | 542 | def _get_generator(self): |
504 | if self._generator is None: | 543 | if self._generator is None: |
505 | for version in 'vc80 vc90 vc100 vc71'.split(): | 544 | for version in 'vc80 vc90 vc100 vc71'.split(): |
@@ -508,9 +547,8 @@ class WindowsSetup(PlatformSetup): | |||
508 | print 'Building with ', self.gens[version]['gen'] | 547 | print 'Building with ', self.gens[version]['gen'] |
509 | break | 548 | break |
510 | else: | 549 | else: |
511 | print >> sys.stderr, 'Cannot find a Visual Studio installation, testing for express editions' | ||
512 | for version in 'vc80 vc90 vc100 vc71'.split(): | 550 | for version in 'vc80 vc90 vc100 vc71'.split(): |
513 | if self.find_visual_studio_express(version): | 551 | if self.find_visual_studio_express(version) != '': |
514 | self._generator = version | 552 | self._generator = version |
515 | self.using_express = True | 553 | self.using_express = True |
516 | print 'Building with ', self.gens[version]['gen'] , "Express edition" | 554 | print 'Building with ', self.gens[version]['gen'] , "Express edition" |
@@ -521,6 +559,8 @@ class WindowsSetup(PlatformSetup): | |||
521 | return self._generator | 559 | return self._generator |
522 | 560 | ||
523 | def _set_generator(self, gen): | 561 | def _set_generator(self, gen): |
562 | if gen == 'nmake': | ||
563 | self._get_generator() | ||
524 | self._generator = gen | 564 | self._generator = gen |
525 | 565 | ||
526 | generator = property(_get_generator, _set_generator) | 566 | generator = property(_get_generator, _set_generator) |
@@ -538,83 +578,58 @@ class WindowsSetup(PlatformSetup): | |||
538 | opts=quote(opts), | 578 | opts=quote(opts), |
539 | standalone=self.standalone, | 579 | standalone=self.standalone, |
540 | unattended=self.unattended, | 580 | unattended=self.unattended, |
541 | project_name=self.project_name | 581 | project_name=self.project_name, |
582 | type=self.build_type, | ||
583 | use_vstool='ON', | ||
584 | nmake='' | ||
542 | ) | 585 | ) |
586 | if self.generator == 'nmake': | ||
587 | args['use_vstool'] = 'OFF' | ||
588 | args['nmake'] = '-DNMAKE:BOOL=ON' | ||
589 | if self.using_express: | ||
590 | args['using_express'] = 'ON' | ||
591 | args['use_vstool'] = 'OFF' | ||
592 | else: | ||
593 | args['using_express'] = 'OFF' | ||
543 | # default to packaging disabled | 594 | # default to packaging disabled |
544 | # if simple: | 595 | # if simple: |
545 | # return 'cmake %(opts)s "%(dir)s"' % args | 596 | # return 'cmake %(opts)s "%(dir)s"' % args |
546 | return ('cmake -G "%(generator)s" ' | 597 | return ('cmake -G "%(generator)s" ' |
598 | '-DCMAKE_BUILD_TYPE:STRING=%(type)s ' | ||
547 | '-DSTANDALONE:BOOL=%(standalone)s ' | 599 | '-DSTANDALONE:BOOL=%(standalone)s ' |
548 | '-DUNATTENDED:BOOL=%(unattended)s ' | 600 | '-DUNATTENDED:BOOL=%(unattended)s ' |
549 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' | 601 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' |
550 | #'-DPACKAGE:BOOL=ON ' | 602 | '-DUSING_EXPRESS:BOOL=%(using_express)s ' |
603 | '-DUSE_VSTOOL:BOOL=%(use_vstool)s ' | ||
604 | '%(nmake)s ' | ||
551 | '%(opts)s "%(dir)s"' % args) | 605 | '%(opts)s "%(dir)s"' % args) |
552 | 606 | ||
553 | def find_visual_studio(self, gen=None): | ||
554 | if gen is None: | ||
555 | gen = self._generator | ||
556 | gen = gen.lower() | ||
557 | try: | ||
558 | import _winreg | ||
559 | key_str = (r'SOFTWARE\Microsoft\VisualStudio\%s\Setup\VS' % | ||
560 | self.gens[gen]['ver']) | ||
561 | value_str = (r'EnvironmentDirectory') | ||
562 | print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' % | ||
563 | (key_str, value_str)) | ||
564 | print key_str | ||
565 | |||
566 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
567 | key = _winreg.OpenKey(reg, key_str) | ||
568 | value = _winreg.QueryValueEx(key, value_str)[0] | ||
569 | print 'Found: %s' % value | ||
570 | return value | ||
571 | except WindowsError, err: | ||
572 | print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] | ||
573 | return '' | ||
574 | |||
575 | def find_visual_studio_express(self, gen=None): | ||
576 | if gen is None: | ||
577 | gen = self._generator | ||
578 | gen = gen.lower() | ||
579 | try: | ||
580 | import _winreg | ||
581 | key_str = (r'SOFTWARE\Microsoft\VCExpress\%s\Setup\VC' % | ||
582 | self.gens[gen]['ver']) | ||
583 | value_str = (r'ProductDir') | ||
584 | print ('Reading VS environment from HKEY_LOCAL_MACHINE\%s\%s' % | ||
585 | (key_str, value_str)) | ||
586 | print key_str | ||
587 | |||
588 | reg = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) | ||
589 | key = _winreg.OpenKey(reg, key_str) | ||
590 | value = _winreg.QueryValueEx(key, value_str)[0]+"IDE" | ||
591 | print 'Found: %s' % value | ||
592 | self.using_express = True | ||
593 | return value | ||
594 | except WindowsError, err: | ||
595 | print >> sys.stderr, "Didn't find ", self.gens[gen]['gen'] | ||
596 | return '' | ||
597 | |||
598 | def get_build_cmd(self): | 607 | def get_build_cmd(self): |
599 | if self.incredibuild: | 608 | if self.incredibuild: |
600 | config = self.build_type | 609 | config = self.build_type |
601 | if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0', r'10.0', r'7.1' ]: | 610 | if self.gens[self.generator]['ver'] in [ r'8.0', r'9.0', r'10.0', r'7.1' ]: |
602 | config = '\"%s|Win32\"' % config | 611 | config = '\"%s|Win32\"' % config |
603 | |||
604 | return "buildconsole %s.sln /build %s" % (self.project_name, config) | 612 | return "buildconsole %s.sln /build %s" % (self.project_name, config) |
605 | 613 | ||
606 | environment = self.find_visual_studio() | 614 | environment = self.find_visual_studio(self.generator) |
607 | if environment == '': | 615 | if environment == '': |
608 | environment = self.find_visual_studio_express() | 616 | environment = self.find_visual_studio_express(self.generator) |
609 | if environment == '': | 617 | if self.generator != 'nmake': |
610 | print >> sys.stderr, "Something went very wrong during build stage, could not find a Visual Studio?" | 618 | if environment == '': |
611 | else: | 619 | print >> sys.stderr, "Something went very wrong during build stage, could not find a Visual Studio?" |
612 | print >> sys.stderr, "\nSolution generation complete, as you are using an express edition the final\n stages will need to be completed by hand" | 620 | else: |
613 | build_dirs=self.build_dirs(); | 621 | build_dirs=self.build_dirs(); |
614 | print >> sys.stderr, "Solution can now be found in:", build_dirs[0] | 622 | return("\"\"%s\\vcbuild\" /useenv %s.sln \"%s|win32\"\"" % (environment, self.project_name, self.build_type)) |
615 | print >> sys.stderr, "Set %s as startup project" % self.project_name | 623 | |
616 | print >> sys.stderr, "Set build target is Release or RelWithDbgInfo" | 624 | if self.generator == 'nmake': |
617 | exit(0) | 625 | # Hack around a bug in cmake that I'm surprised did not hit GUI controlled builds. |
626 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /GS .*$|\1|" build-nmake/win_crash_logger/CMakeFiles/windows-crash-logger.dir/flags.make') | ||
627 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /GS .*$|\1|" build-nmake/newview/CMakeFiles/imprudence-bin.dir/flags.make') | ||
628 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /EHsc .*/Zm1000 \($\)|\1\2|" build-nmake/win_crash_logger/CMakeFiles/windows-crash-logger.dir/flags.make') | ||
629 | self.run(r'sed -i "s|\(^RC_FLAGS .* \) /EHsc .*/Zm1000 \($\)|\1\2|" build-nmake/newview/CMakeFiles/imprudence-bin.dir/flags.make') | ||
630 | # Evil hack. | ||
631 | self.run(r'touch newview/touched.bat') | ||
632 | return 'nmake' | ||
618 | 633 | ||
619 | # devenv.com is CLI friendly, devenv.exe... not so much. | 634 | # devenv.com is CLI friendly, devenv.exe... not so much. |
620 | return ('"%sdevenv.com" %s.sln /build %s' % | 635 | return ('"%sdevenv.com" %s.sln /build %s' % |
@@ -634,55 +649,29 @@ class WindowsSetup(PlatformSetup): | |||
634 | raise CommandError('the command %r %s' % | 649 | raise CommandError('the command %r %s' % |
635 | (name, ret)) | 650 | (name, ret)) |
636 | 651 | ||
637 | def run_cmake(self, args=[]): | ||
638 | '''Override to add the vstool.exe call after running cmake.''' | ||
639 | PlatformSetup.run_cmake(self, args) | ||
640 | if self.unattended == 'OFF': | ||
641 | if self.using_express == False: | ||
642 | self.run_vstool() | ||
643 | |||
644 | def run_vstool(self): | ||
645 | for build_dir in self.build_dirs(): | ||
646 | stamp = os.path.join(build_dir, 'vstool.txt') | ||
647 | try: | ||
648 | prev_build = open(stamp).read().strip() | ||
649 | except IOError: | ||
650 | prev_build = '' | ||
651 | if prev_build == self.build_type: | ||
652 | # Only run vstool if the build type has changed. | ||
653 | continue | ||
654 | vstool_cmd = (os.path.join('tools','vstool','VSTool.exe') + | ||
655 | ' --solution ' + | ||
656 | os.path.join(build_dir,'Imprudence.sln') + | ||
657 | ' --config ' + self.build_type + | ||
658 | ' --startup imprudence-bin') | ||
659 | print 'Running %r in %r' % (vstool_cmd, getcwd()) | ||
660 | self.run(vstool_cmd) | ||
661 | print >> open(stamp, 'w'), self.build_type | ||
662 | |||
663 | def run_build(self, opts, targets): | 652 | def run_build(self, opts, targets): |
664 | cwd = getcwd() | 653 | cwd = getcwd() |
665 | build_cmd = self.get_build_cmd() | 654 | build_cmd = self.get_build_cmd() |
666 | 655 | if build_cmd != "": | |
667 | for d in self.build_dirs(): | 656 | for d in self.build_dirs(): |
668 | try: | 657 | try: |
669 | os.chdir(d) | 658 | os.chdir(d) |
670 | if targets: | 659 | if targets: |
671 | for t in targets: | 660 | for t in targets: |
672 | cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts)) | 661 | cmd = '%s /project %s %s' % (build_cmd, t, ' '.join(opts)) |
662 | print 'Running %r in %r' % (cmd, d) | ||
663 | self.run(cmd) | ||
664 | else: | ||
665 | cmd = '%s %s' % (build_cmd, ' '.join(opts)) | ||
673 | print 'Running %r in %r' % (cmd, d) | 666 | print 'Running %r in %r' % (cmd, d) |
674 | self.run(cmd) | 667 | self.run(cmd) |
675 | else: | 668 | finally: |
676 | cmd = '%s %s' % (build_cmd, ' '.join(opts)) | 669 | os.chdir(cwd) |
677 | print 'Running %r in %r' % (cmd, d) | 670 | |
678 | self.run(cmd) | ||
679 | finally: | ||
680 | os.chdir(cwd) | ||
681 | |||
682 | class CygwinSetup(WindowsSetup): | 671 | class CygwinSetup(WindowsSetup): |
683 | def __init__(self): | 672 | def __init__(self): |
684 | super(CygwinSetup, self).__init__() | 673 | super(CygwinSetup, self).__init__() |
685 | self.generator = 'vc80' | 674 | self.generator = 'nmake' |
686 | 675 | ||
687 | def cmake_commandline(self, src_dir, build_dir, opts, simple): | 676 | def cmake_commandline(self, src_dir, build_dir, opts, simple): |
688 | dos_dir = commands.getoutput("cygpath -w %s" % src_dir) | 677 | dos_dir = commands.getoutput("cygpath -w %s" % src_dir) |
@@ -692,11 +681,13 @@ class CygwinSetup(WindowsSetup): | |||
692 | opts=quote(opts), | 681 | opts=quote(opts), |
693 | standalone=self.standalone, | 682 | standalone=self.standalone, |
694 | unattended=self.unattended, | 683 | unattended=self.unattended, |
695 | project_name=self.project_name | 684 | project_name=self.project_name, |
685 | type=self.build_type | ||
696 | ) | 686 | ) |
697 | #if simple: | 687 | #if simple: |
698 | # return 'cmake %(opts)s "%(dir)s"' % args | 688 | # return 'cmake %(opts)s "%(dir)s"' % args |
699 | return ('cmake -G "%(generator)s" ' | 689 | return ('cmake -G "%(generator)s" ' |
690 | '-DCMAKE_BUILD_TYPE:STRING=%(type)s ' | ||
700 | '-DUNATTENDED:BOOl=%(unattended)s ' | 691 | '-DUNATTENDED:BOOl=%(unattended)s ' |
701 | '-DSTANDALONE:BOOL=%(standalone)s ' | 692 | '-DSTANDALONE:BOOL=%(standalone)s ' |
702 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' | 693 | '-DROOT_PROJECT_NAME:STRING=%(project_name)s ' |
@@ -723,7 +714,7 @@ Options: | |||
723 | -m32 | -m64 build architecture (32-bit or 64-bit) | 714 | -m32 | -m64 build architecture (32-bit or 64-bit) |
724 | -N | --no-distcc disable use of distcc | 715 | -N | --no-distcc disable use of distcc |
725 | -G | --generator=NAME generator name | 716 | -G | --generator=NAME generator name |
726 | Windows: VC80 (VS2005--default), VC71 (VS2003), | 717 | Windows: NMake, VC80 (VS2005--default), VC71 (VS2003), |
727 | VC90 (VS2008), or VC100 (VS2010) | 718 | VC90 (VS2008), or VC100 (VS2010) |
728 | Mac OS X: Xcode (default), Unix Makefiles | 719 | Mac OS X: Xcode (default), Unix Makefiles |
729 | Linux: Unix Makefiles (default), KDevelop3 | 720 | Linux: Unix Makefiles (default), KDevelop3 |
@@ -806,7 +797,6 @@ For example: develop.py configure -DSERVER:BOOL=OFF""" | |||
806 | for d in setup.build_dirs(): | 797 | for d in setup.build_dirs(): |
807 | if not os.path.exists(d): | 798 | if not os.path.exists(d): |
808 | raise CommandError('run "develop.py cmake" first') | 799 | raise CommandError('run "develop.py cmake" first') |
809 | setup.run_cmake() | ||
810 | opts, targets = setup.parse_build_opts(args) | 800 | opts, targets = setup.parse_build_opts(args) |
811 | setup.run_build(opts, targets) | 801 | setup.run_build(opts, targets) |
812 | elif cmd == 'clean': | 802 | elif cmd == 'clean': |
diff --git a/linden/indra/llcommon/llsdserialize.cpp b/linden/indra/llcommon/llsdserialize.cpp index e2be922..f648c5c 100644 --- a/linden/indra/llcommon/llsdserialize.cpp +++ b/linden/indra/llcommon/llsdserialize.cpp | |||
@@ -1447,9 +1447,12 @@ S32 LLSDBinaryFormatter::format(const LLSD& data, std::ostream& ostr, U32 option | |||
1447 | } | 1447 | } |
1448 | 1448 | ||
1449 | case LLSD::TypeUUID: | 1449 | case LLSD::TypeUUID: |
1450 | { | ||
1450 | ostr.put('u'); | 1451 | ostr.put('u'); |
1451 | ostr.write((const char*)(&(data.asUUID().mData)), UUID_BYTES); | 1452 | U8 *value = data.asUUID().mData; |
1453 | ostr.write((const char*)(&value), UUID_BYTES); | ||
1452 | break; | 1454 | break; |
1455 | } | ||
1453 | 1456 | ||
1454 | case LLSD::TypeString: | 1457 | case LLSD::TypeString: |
1455 | ostr.put('s'); | 1458 | ostr.put('s'); |
diff --git a/linden/indra/llmath/llsdutil_math.cpp b/linden/indra/llmath/llsdutil_math.cpp index 073cb2e..8ec8661 100644 --- a/linden/indra/llmath/llsdutil_math.cpp +++ b/linden/indra/llmath/llsdutil_math.cpp | |||
@@ -6,7 +6,7 @@ | |||
6 | * | 6 | * |
7 | * $LicenseInfo:firstyear=2006&license=viewergpl$ | 7 | * $LicenseInfo:firstyear=2006&license=viewergpl$ |
8 | * | 8 | * |
9 | * Copyright (c) 2006-2009, Linden Research, Inc. | 9 | * Copyright (c) 2006-2010, Linden Research, Inc. |
10 | * | 10 | * |
11 | * Second Life Viewer Source Code | 11 | * Second Life Viewer Source Code |
12 | * The source code in this file ("Source Code") is provided by Linden Lab | 12 | * The source code in this file ("Source Code") is provided by Linden Lab |
@@ -14,13 +14,13 @@ | |||
14 | * ("GPL"), unless you have obtained a separate licensing agreement | 14 | * ("GPL"), unless you have obtained a separate licensing agreement |
15 | * ("Other License"), formally executed by you and Linden Lab. Terms of | 15 | * ("Other License"), formally executed by you and Linden Lab. Terms of |
16 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | 16 | * the GPL can be found in doc/GPL-license.txt in this distribution, or |
17 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | 17 | * online at http://secondlife.com/developers/opensource/gplv2 |
18 | * | 18 | * |
19 | * There are special exceptions to the terms and conditions of the GPL as | 19 | * There are special exceptions to the terms and conditions of the GPL as |
20 | * it is applied to this Source Code. View the full text of the exception | 20 | * it is applied to this Source Code. View the full text of the exception |
21 | * in the file doc/FLOSS-exception.txt in this software distribution, or | 21 | * in the file doc/FLOSS-exception.txt in this software distribution, or |
22 | * online at | 22 | * online at |
23 | * http://secondlifegrid.net/programs/open_source/licensing/flossexception | 23 | * http://secondlife.com/developers/opensource/flossexception |
24 | * | 24 | * |
25 | * By copying, modifying or distributing this software, you acknowledge | 25 | * By copying, modifying or distributing this software, you acknowledge |
26 | * that you have read and understood your obligations described above, | 26 | * that you have read and understood your obligations described above, |
@@ -30,11 +30,12 @@ | |||
30 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | 30 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, |
31 | * COMPLETENESS OR PERFORMANCE. | 31 | * COMPLETENESS OR PERFORMANCE. |
32 | * $/LicenseInfo$ | 32 | * $/LicenseInfo$ |
33 | * | ||
33 | */ | 34 | */ |
34 | 35 | ||
35 | #include "linden_common.h" | 36 | #include "linden_common.h" |
36 | 37 | ||
37 | #include "llsdutil.h" | 38 | #include "llsdutil_math.h" |
38 | 39 | ||
39 | #include "v3math.h" | 40 | #include "v3math.h" |
40 | #include "v4math.h" | 41 | #include "v4math.h" |
@@ -165,9 +166,6 @@ LLSD ll_sd_from_color4(const LLColor4& c) | |||
165 | LLColor4 ll_color4_from_sd(const LLSD& sd) | 166 | LLColor4 ll_color4_from_sd(const LLSD& sd) |
166 | { | 167 | { |
167 | LLColor4 c; | 168 | LLColor4 c; |
168 | c.mV[0] = (F32)sd[0].asReal(); | 169 | c.setValue(sd); |
169 | c.mV[1] = (F32)sd[1].asReal(); | ||
170 | c.mV[2] = (F32)sd[2].asReal(); | ||
171 | c.mV[3] = (F32)sd[3].asReal(); | ||
172 | return c; | 170 | return c; |
173 | } | 171 | } |
diff --git a/linden/indra/llmath/llvolume.cpp b/linden/indra/llmath/llvolume.cpp index 618048c..9dc3746 100644 --- a/linden/indra/llmath/llvolume.cpp +++ b/linden/indra/llmath/llvolume.cpp | |||
@@ -4437,14 +4437,7 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build) | |||
4437 | const std::vector<LLVector3>& profile = volume->getProfile().mProfile; | 4437 | const std::vector<LLVector3>& profile = volume->getProfile().mProfile; |
4438 | S32 max_s = volume->getProfile().getTotal(); | 4438 | S32 max_s = volume->getProfile().getTotal(); |
4439 | S32 max_t = volume->getPath().mPath.size(); | 4439 | S32 max_t = volume->getPath().mPath.size(); |
4440 | 4440 | S32 grid_size = (profile.size() - 1) / 4; | |
4441 | // S32 i; | ||
4442 | S32 num_vertices = 0, num_indices = 0; | ||
4443 | S32 grid_size = (profile.size()-1)/4; | ||
4444 | S32 quad_count = (grid_size * grid_size); | ||
4445 | |||
4446 | num_vertices = (grid_size+1)*(grid_size+1); | ||
4447 | num_indices = quad_count * 4; | ||
4448 | 4441 | ||
4449 | LLVector3& min = mExtents[0]; | 4442 | LLVector3& min = mExtents[0]; |
4450 | LLVector3& max = mExtents[1]; | 4443 | LLVector3& max = mExtents[1]; |
diff --git a/linden/indra/llmessage/llhttpassetstorage.cpp b/linden/indra/llmessage/llhttpassetstorage.cpp index 49dbdbd..fcdb354 100644 --- a/linden/indra/llmessage/llhttpassetstorage.cpp +++ b/linden/indra/llmessage/llhttpassetstorage.cpp | |||
@@ -743,7 +743,8 @@ LLAssetRequest* LLHTTPAssetStorage::findNextRequest(LLAssetStorage::request_list | |||
743 | request_list_t::iterator running_end = running.end(); | 743 | request_list_t::iterator running_end = running.end(); |
744 | 744 | ||
745 | request_list_t::iterator pending_iter = pending.begin(); | 745 | request_list_t::iterator pending_iter = pending.begin(); |
746 | request_list_t::iterator pending_end = pending.end(); | 746 | // FIXME onefang - I assume this was being used to speed up the for(), but this is just a quick pass to get rid of warnings. Try to understand it later. |
747 | //request_list_t::iterator pending_end = pending.end(); | ||
747 | // Loop over all pending requests until we miss finding it in the running list. | 748 | // Loop over all pending requests until we miss finding it in the running list. |
748 | for (; pending_iter != pending.end(); ++pending_iter) | 749 | for (; pending_iter != pending.end(); ++pending_iter) |
749 | { | 750 | { |
diff --git a/linden/indra/llplugin/slplugin/CMakeLists.txt b/linden/indra/llplugin/slplugin/CMakeLists.txt index 81d9299..f794dae 100755 --- a/linden/indra/llplugin/slplugin/CMakeLists.txt +++ b/linden/indra/llplugin/slplugin/CMakeLists.txt | |||
@@ -75,7 +75,7 @@ if (DARWIN) | |||
75 | COMMAND mkdir | 75 | COMMAND mkdir |
76 | ARGS | 76 | ARGS |
77 | -p | 77 | -p |
78 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/SLPlugin.app/Contents/Resources | 78 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/SLPlugin.app/Contents/Resources |
79 | ) | 79 | ) |
80 | endif (DARWIN) | 80 | endif (DARWIN) |
81 | 81 | ||
diff --git a/linden/indra/llprimitive/llmaterialtable.cpp b/linden/indra/llprimitive/llmaterialtable.cpp index 7dd764e..f06bfe8 100755 --- a/linden/indra/llprimitive/llmaterialtable.cpp +++ b/linden/indra/llprimitive/llmaterialtable.cpp | |||
@@ -40,16 +40,6 @@ | |||
40 | 40 | ||
41 | LLMaterialTable LLMaterialTable::basic(1); | 41 | LLMaterialTable LLMaterialTable::basic(1); |
42 | 42 | ||
43 | // Material UUIDs. | ||
44 | LLUUID const LL_DEFAULT_STONE_UUID("87c5765b-aa26-43eb-b8c6-c09a1ca6208e"); | ||
45 | LLUUID const LL_DEFAULT_METAL_UUID("6f3c53e9-ba60-4010-8f3e-30f51a762476"); | ||
46 | LLUUID const LL_DEFAULT_GLASS_UUID("b4ba225c-373f-446d-9f7e-6cb7b5cf9b3d"); | ||
47 | LLUUID const LL_DEFAULT_WOOD_UUID("89556747-24cb-43ed-920b-47caed15465f"); | ||
48 | LLUUID const LL_DEFAULT_FLESH_UUID("80736669-e4b9-450e-8890-d5169f988a50"); | ||
49 | LLUUID const LL_DEFAULT_PLASTIC_UUID("304fcb4e-7d33-4339-ba80-76d3d22dc11a"); | ||
50 | LLUUID const LL_DEFAULT_RUBBER_UUID("9fae0bc5-666d-477e-9f70-84e8556ec867"); | ||
51 | LLUUID const LL_DEFAULT_LIGHT_UUID("00000000-0000-0000-0000-000000000000"); | ||
52 | |||
53 | /* | 43 | /* |
54 | Old Havok 1 constants | 44 | Old Havok 1 constants |
55 | 45 | ||
diff --git a/linden/indra/llrender/llfont.cpp b/linden/indra/llrender/llfont.cpp index 5ee3929..1cad593 100644 --- a/linden/indra/llrender/llfont.cpp +++ b/linden/indra/llrender/llfont.cpp | |||
@@ -535,6 +535,8 @@ void LLFont::renderGlyph(const U32 glyph_index) const | |||
535 | int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_DEFAULT ); | 535 | int error = FT_Load_Glyph(mFTFace, glyph_index, FT_LOAD_DEFAULT ); |
536 | llassert(!error); | 536 | llassert(!error); |
537 | 537 | ||
538 | // Work around the compiler warning about error not being used when llassert() is compiled out. | ||
539 | error = error + 0; | ||
538 | error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode); | 540 | error = FT_Render_Glyph(mFTFace->glyph, gFontRenderMode); |
539 | 541 | ||
540 | mRenderGlyphCount++; | 542 | mRenderGlyphCount++; |
diff --git a/linden/indra/llrender/llgl.cpp b/linden/indra/llrender/llgl.cpp index 4a4ff1b..b57a562 100644 --- a/linden/indra/llrender/llgl.cpp +++ b/linden/indra/llrender/llgl.cpp | |||
@@ -383,11 +383,10 @@ bool LLGLManager::initGL() | |||
383 | if (mGLVendor.substr(0,4) == "ATI ") | 383 | if (mGLVendor.substr(0,4) == "ATI ") |
384 | { | 384 | { |
385 | mGLVendorShort = "ATI"; | 385 | mGLVendorShort = "ATI"; |
386 | BOOL mobile = FALSE; | 386 | // This is not used anywhere. |
387 | if (mGLRenderer.find("MOBILITY") != std::string::npos) | 387 | //BOOL mobile = FALSE; |
388 | { | 388 | //if (mGLRenderer.find("MOBILITY") != std::string::npos) |
389 | mobile = TRUE; | 389 | // mobile = TRUE; |
390 | } | ||
391 | mIsATI = TRUE; | 390 | mIsATI = TRUE; |
392 | 391 | ||
393 | #if LL_WINDOWS && !LL_MESA_HEADLESS | 392 | #if LL_WINDOWS && !LL_MESA_HEADLESS |
@@ -1014,8 +1013,8 @@ void assert_glerror() | |||
1014 | void clear_glerror() | 1013 | void clear_glerror() |
1015 | { | 1014 | { |
1016 | // Create or update texture to be used with this data | 1015 | // Create or update texture to be used with this data |
1017 | GLenum error; | 1016 | //GLenum error; |
1018 | error = glGetError(); | 1017 | /*error =*/ glGetError(); |
1019 | } | 1018 | } |
1020 | 1019 | ||
1021 | /////////////////////////////////////////////////////////////// | 1020 | /////////////////////////////////////////////////////////////// |
diff --git a/linden/indra/llrender/llimagegl.cpp b/linden/indra/llrender/llimagegl.cpp index c63d7ad..f99d4a9 100644 --- a/linden/indra/llrender/llimagegl.cpp +++ b/linden/indra/llrender/llimagegl.cpp | |||
@@ -711,7 +711,9 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips) | |||
711 | { | 711 | { |
712 | S32 bytes = w * h * mComponents; | 712 | S32 bytes = w * h * mComponents; |
713 | llassert(prev_mip_data); | 713 | llassert(prev_mip_data); |
714 | llassert(prev_mip_size == bytes*4); | 714 | llassert(prev_mip_size == (bytes*4)); |
715 | // Work around llassert() being compiled out and prev_mip_size not otherwise being used. | ||
716 | prev_mip_size = prev_mip_size + 0; | ||
715 | U8* new_data = new U8[bytes]; | 717 | U8* new_data = new U8[bytes]; |
716 | llassert_always(new_data); | 718 | llassert_always(new_data); |
717 | LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents); | 719 | LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents); |
diff --git a/linden/indra/llui/llfloater.cpp b/linden/indra/llui/llfloater.cpp index 58c717a..4c4aeaf 100644 --- a/linden/indra/llui/llfloater.cpp +++ b/linden/indra/llui/llfloater.cpp | |||
@@ -277,30 +277,14 @@ void LLFloater::initFloater(const std::string& title, | |||
277 | mMinimized = FALSE; | 277 | mMinimized = FALSE; |
278 | mExpandedRect.set(0,0,0,0); | 278 | mExpandedRect.set(0,0,0,0); |
279 | 279 | ||
280 | S32 close_pad; // space to the right of close box | ||
281 | S32 close_box_size; // For layout purposes, how big is the close box? | 280 | S32 close_box_size; // For layout purposes, how big is the close box? |
282 | if (close_btn) | 281 | if (close_btn) |
283 | { | 282 | { |
284 | close_box_size = LLFLOATER_CLOSE_BOX_SIZE; | 283 | close_box_size = LLFLOATER_CLOSE_BOX_SIZE; |
285 | close_pad = 0; | ||
286 | } | 284 | } |
287 | else | 285 | else |
288 | { | 286 | { |
289 | close_box_size = 0; | 287 | close_box_size = 0; |
290 | close_pad = 0; | ||
291 | } | ||
292 | |||
293 | S32 minimize_box_size; | ||
294 | S32 minimize_pad; | ||
295 | if (minimizable && !drag_on_left) | ||
296 | { | ||
297 | minimize_box_size = LLFLOATER_CLOSE_BOX_SIZE; | ||
298 | minimize_pad = 0; | ||
299 | } | ||
300 | else | ||
301 | { | ||
302 | minimize_box_size = 0; | ||
303 | minimize_pad = 0; | ||
304 | } | 288 | } |
305 | 289 | ||
306 | // Drag Handle | 290 | // Drag Handle |
diff --git a/linden/indra/llui/llfunctorregistry.h b/linden/indra/llui/llfunctorregistry.h index 8864f7a..7c03f2f 100644 --- a/linden/indra/llui/llfunctorregistry.h +++ b/linden/indra/llui/llfunctorregistry.h | |||
@@ -75,7 +75,6 @@ public: | |||
75 | bool registerFunctor(const std::string& name, ResponseFunctor f) | 75 | bool registerFunctor(const std::string& name, ResponseFunctor f) |
76 | { | 76 | { |
77 | bool retval = true; | 77 | bool retval = true; |
78 | typename FunctorMap::iterator it = mMap.find(name); | ||
79 | if (mMap.count(name) == 0) | 78 | if (mMap.count(name) == 0) |
80 | { | 79 | { |
81 | mMap[name] = f; | 80 | mMap[name] = f; |
@@ -102,7 +101,6 @@ public: | |||
102 | 101 | ||
103 | FUNCTOR_TYPE getFunctor(const std::string& name) | 102 | FUNCTOR_TYPE getFunctor(const std::string& name) |
104 | { | 103 | { |
105 | typename FunctorMap::iterator it = mMap.find(name); | ||
106 | if (mMap.count(name) != 0) | 104 | if (mMap.count(name) != 0) |
107 | { | 105 | { |
108 | return mMap[name]; | 106 | return mMap[name]; |
diff --git a/linden/indra/llui/llkeywords.cpp b/linden/indra/llui/llkeywords.cpp index 93da44c..a50dbff 100644 --- a/linden/indra/llui/llkeywords.cpp +++ b/linden/indra/llui/llkeywords.cpp | |||
@@ -288,7 +288,6 @@ void LLKeywords::findSegments(std::vector<LLTextSegment *>* seg_list, const LLWS | |||
288 | 288 | ||
289 | const llwchar* base = wtext.c_str(); | 289 | const llwchar* base = wtext.c_str(); |
290 | const llwchar* cur = base; | 290 | const llwchar* cur = base; |
291 | const llwchar* line = NULL; | ||
292 | 291 | ||
293 | while( *cur ) | 292 | while( *cur ) |
294 | { | 293 | { |
@@ -304,7 +303,6 @@ void LLKeywords::findSegments(std::vector<LLTextSegment *>* seg_list, const LLWS | |||
304 | } | 303 | } |
305 | 304 | ||
306 | // Start of a new line | 305 | // Start of a new line |
307 | line = cur; | ||
308 | 306 | ||
309 | // Skip white space | 307 | // Skip white space |
310 | while( *cur && isspace(*cur) && (*cur != '\n') ) | 308 | while( *cur && isspace(*cur) && (*cur != '\n') ) |
diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp index 2d4a2f1..6850891 100644 --- a/linden/indra/llui/llmenugl.cpp +++ b/linden/indra/llui/llmenugl.cpp | |||
@@ -3095,8 +3095,6 @@ void LLMenuGL::draw( void ) | |||
3095 | LLUI::sConfigGroup->getS32("DropShadowFloater") ); | 3095 | LLUI::sConfigGroup->getS32("DropShadowFloater") ); |
3096 | } | 3096 | } |
3097 | 3097 | ||
3098 | LLColor4 bg_color = mBackgroundColor; | ||
3099 | |||
3100 | if( mBgVisible ) | 3098 | if( mBgVisible ) |
3101 | { | 3099 | { |
3102 | gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0, mBackgroundColor ); | 3100 | gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0, mBackgroundColor ); |
diff --git a/linden/indra/llui/llpanel.cpp b/linden/indra/llui/llpanel.cpp index 07e78ed..361e4f3 100644 --- a/linden/indra/llui/llpanel.cpp +++ b/linden/indra/llui/llpanel.cpp | |||
@@ -1078,7 +1078,6 @@ struct LLLayoutStack::LLEmbeddedPanel | |||
1078 | mVisibleAmt(1.f) // default to fully visible | 1078 | mVisibleAmt(1.f) // default to fully visible |
1079 | { | 1079 | { |
1080 | LLResizeBar::Side side = (orientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; | 1080 | LLResizeBar::Side side = (orientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; |
1081 | LLRect resize_bar_rect = panelp->getRect(); | ||
1082 | 1081 | ||
1083 | S32 min_dim; | 1082 | S32 min_dim; |
1084 | if (orientation == HORIZONTAL) | 1083 | if (orientation == HORIZONTAL) |
diff --git a/linden/indra/llui/llprogressbar.cpp b/linden/indra/llui/llprogressbar.cpp index d148733..0000d77 100644 --- a/linden/indra/llui/llprogressbar.cpp +++ b/linden/indra/llui/llprogressbar.cpp | |||
@@ -83,9 +83,6 @@ void LLProgressBar::draw() | |||
83 | bar_bg_imagep->draw(getLocalRect(), | 83 | bar_bg_imagep->draw(getLocalRect(), |
84 | background_color); | 84 | background_color); |
85 | 85 | ||
86 | F32 alpha = 0.5f + 0.5f*0.5f*(1.f + (F32)sin(3.f*timer.getElapsedTimeF32())); | ||
87 | LLColor4 bar_color = LLUI::sColorsGroup->getColor("LoginProgressBarFgColor"); | ||
88 | bar_color.mV[3] = alpha; | ||
89 | LLRect progress_rect = getLocalRect(); | 86 | LLRect progress_rect = getLocalRect(); |
90 | progress_rect.mRight = llround(getRect().getWidth() * (mPercentDone / 100.f)); | 87 | progress_rect.mRight = llround(getRect().getWidth() * (mPercentDone / 100.f)); |
91 | bar_fg_imagep->draw(progress_rect); | 88 | bar_fg_imagep->draw(progress_rect); |
diff --git a/linden/indra/llui/llslider.cpp b/linden/indra/llui/llslider.cpp index 5c17baa..c8f5935 100644 --- a/linden/indra/llui/llslider.cpp +++ b/linden/indra/llui/llslider.cpp | |||
@@ -283,7 +283,6 @@ void LLSlider::draw() | |||
283 | 283 | ||
284 | F32 opacity = getEnabled() ? 1.f : 0.3f; | 284 | F32 opacity = getEnabled() ? 1.f : 0.3f; |
285 | LLColor4 center_color = (mThumbCenterColor % opacity); | 285 | LLColor4 center_color = (mThumbCenterColor % opacity); |
286 | LLColor4 track_color = (mTrackColor % opacity); | ||
287 | 286 | ||
288 | // Track | 287 | // Track |
289 | LLRect track_rect(mThumbImage->getWidth() / 2, | 288 | LLRect track_rect(mThumbImage->getWidth() / 2, |
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp index c8ca5bf..1c12ff3 100644 --- a/linden/indra/llui/lltexteditor.cpp +++ b/linden/indra/llui/lltexteditor.cpp | |||
@@ -3077,7 +3077,6 @@ void LLTextEditor::drawSelectionBackground() | |||
3077 | S32 selection_right_x = mTextRect.mRight; | 3077 | S32 selection_right_x = mTextRect.mRight; |
3078 | S32 selection_right_y = mTextRect.mBottom; | 3078 | S32 selection_right_y = mTextRect.mBottom; |
3079 | 3079 | ||
3080 | BOOL selection_left_visible = FALSE; | ||
3081 | BOOL selection_right_visible = FALSE; | 3080 | BOOL selection_right_visible = FALSE; |
3082 | 3081 | ||
3083 | // Skip through the lines we aren't drawing. | 3082 | // Skip through the lines we aren't drawing. |
@@ -3085,7 +3084,6 @@ void LLTextEditor::drawSelectionBackground() | |||
3085 | 3084 | ||
3086 | S32 left_line_num = cur_line; | 3085 | S32 left_line_num = cur_line; |
3087 | S32 num_lines = getLineCount(); | 3086 | S32 num_lines = getLineCount(); |
3088 | S32 right_line_num = num_lines - 1; | ||
3089 | 3087 | ||
3090 | S32 line_start = -1; | 3088 | S32 line_start = -1; |
3091 | if (cur_line >= num_lines) | 3089 | if (cur_line >= num_lines) |
@@ -3119,13 +3117,11 @@ void LLTextEditor::drawSelectionBackground() | |||
3119 | if( line_start <= selection_left && selection_left <= line_end ) | 3117 | if( line_start <= selection_left && selection_left <= line_end ) |
3120 | { | 3118 | { |
3121 | left_line_num = cur_line; | 3119 | left_line_num = cur_line; |
3122 | selection_left_visible = TRUE; | ||
3123 | selection_left_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_left - line_start, mAllowEmbeddedItems); | 3120 | selection_left_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_left - line_start, mAllowEmbeddedItems); |
3124 | selection_left_y = text_y; | 3121 | selection_left_y = text_y; |
3125 | } | 3122 | } |
3126 | if( line_start <= selection_right && selection_right <= line_end ) | 3123 | if( line_start <= selection_right && selection_right <= line_end ) |
3127 | { | 3124 | { |
3128 | right_line_num = cur_line; | ||
3129 | selection_right_visible = TRUE; | 3125 | selection_right_visible = TRUE; |
3130 | selection_right_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_right - line_start, mAllowEmbeddedItems); | 3126 | selection_right_x = mTextRect.mLeft + mGLFont->getWidth(line, 0, selection_right - line_start, mAllowEmbeddedItems); |
3131 | if (selection_right == line_end) | 3127 | if (selection_right == line_end) |
diff --git a/linden/indra/llui/llui.h b/linden/indra/llui/llui.h index ebcc730..466d2c7 100644 --- a/linden/indra/llui/llui.h +++ b/linden/indra/llui/llui.h | |||
@@ -706,10 +706,12 @@ public: | |||
706 | 706 | ||
707 | // this avoids a MSVC bug where non-referenced static members are "optimized" away | 707 | // this avoids a MSVC bug where non-referenced static members are "optimized" away |
708 | // even if their constructors have side effects | 708 | // even if their constructors have side effects |
709 | // Then we avoid a compiler warning that dummy is never used. lol | ||
709 | void reference() | 710 | void reference() |
710 | { | 711 | { |
711 | S32 dummy; | 712 | S32 dummy; |
712 | dummy = 0; | 713 | dummy = 0; |
714 | dummy = dummy + 0; | ||
713 | } | 715 | } |
714 | }; | 716 | }; |
715 | 717 | ||
diff --git a/linden/indra/llwindow/GL/glh_extensions.h b/linden/indra/llwindow/GL/glh_extensions.h index 5b149c9..ce2865b 100644 --- a/linden/indra/llwindow/GL/glh_extensions.h +++ b/linden/indra/llwindow/GL/glh_extensions.h | |||
@@ -111,7 +111,9 @@ static const char* EatNonWhiteSpace(const char *str) | |||
111 | int glh_init_extensions(const char *origReqExts) | 111 | int glh_init_extensions(const char *origReqExts) |
112 | { | 112 | { |
113 | // Length of requested extensions string | 113 | // Length of requested extensions string |
114 | /* | ||
114 | unsigned reqExtsLen; | 115 | unsigned reqExtsLen; |
116 | */ | ||
115 | char *reqExts; | 117 | char *reqExts; |
116 | // Ptr for individual extensions within reqExts | 118 | // Ptr for individual extensions within reqExts |
117 | char *reqExt; | 119 | char *reqExt; |
@@ -153,8 +155,8 @@ int glh_init_extensions(const char *origReqExts) | |||
153 | return TRUE; | 155 | return TRUE; |
154 | } | 156 | } |
155 | reqExts = strdup(origReqExts); | 157 | reqExts = strdup(origReqExts); |
156 | reqExtsLen = (S32)strlen(reqExts); | ||
157 | /* | 158 | /* |
159 | reqExtsLen = (S32)strlen(reqExts); | ||
158 | if (NULL == gGLHExts.mUnsupportedExts) | 160 | if (NULL == gGLHExts.mUnsupportedExts) |
159 | { | 161 | { |
160 | gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1); | 162 | gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1); |
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp index 2f9de6b..69ec3b3 100644 --- a/linden/indra/llwindow/llwindowsdl.cpp +++ b/linden/indra/llwindow/llwindowsdl.cpp | |||
@@ -2521,9 +2521,10 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList() | |||
2521 | sortpat = FcNameParse((FcChar8*) sort_order.c_str()); | 2521 | sortpat = FcNameParse((FcChar8*) sort_order.c_str()); |
2522 | if (sortpat) | 2522 | if (sortpat) |
2523 | { | 2523 | { |
2524 | FcResult dummyResult; | ||
2524 | // Sort the list of system fonts from most-to-least-desirable. | 2525 | // Sort the list of system fonts from most-to-least-desirable. |
2525 | fs = FcFontSort(NULL, sortpat, elide_unicode_coverage, | 2526 | fs = FcFontSort(NULL, sortpat, elide_unicode_coverage, |
2526 | NULL, NULL); | 2527 | NULL, &dummyResult); |
2527 | FcPatternDestroy(sortpat); | 2528 | FcPatternDestroy(sortpat); |
2528 | } | 2529 | } |
2529 | 2530 | ||
diff --git a/linden/indra/lscript/lscript_compile/CMakeLists.txt b/linden/indra/lscript/lscript_compile/CMakeLists.txt index 252085b..f6d5212 100644 --- a/linden/indra/lscript/lscript_compile/CMakeLists.txt +++ b/linden/indra/lscript/lscript_compile/CMakeLists.txt | |||
@@ -103,7 +103,7 @@ if (WINDOWS) | |||
103 | PROPERTIES COMPILE_FLAGS /DYY_NO_UNISTD_H) | 103 | PROPERTIES COMPILE_FLAGS /DYY_NO_UNISTD_H) |
104 | endif (WINDOWS) | 104 | endif (WINDOWS) |
105 | 105 | ||
106 | if (WINDOWS) | 106 | if (WINDOWS AND NOT CYGWIN) |
107 | get_filename_component(M4_PATH ${M4} PATH) | 107 | get_filename_component(M4_PATH ${M4} PATH) |
108 | add_custom_command( | 108 | add_custom_command( |
109 | OUTPUT | 109 | OUTPUT |
@@ -118,7 +118,7 @@ if (WINDOWS) | |||
118 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y | 118 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y |
119 | ) | 119 | ) |
120 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/windows) | 120 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}/windows) |
121 | else (WINDOWS) | 121 | else (WINDOWS AND NOT CYGWIN) |
122 | add_custom_command( | 122 | add_custom_command( |
123 | OUTPUT | 123 | OUTPUT |
124 | ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp | 124 | ${CMAKE_CURRENT_BINARY_DIR}/indra.y.cpp |
@@ -131,7 +131,7 @@ else (WINDOWS) | |||
131 | DEPENDS | 131 | DEPENDS |
132 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y | 132 | ${CMAKE_CURRENT_SOURCE_DIR}/indra.y |
133 | ) | 133 | ) |
134 | endif (WINDOWS) | 134 | endif (WINDOWS AND NOT CYGWIN) |
135 | 135 | ||
136 | if (DARWIN) | 136 | if (DARWIN) |
137 | # Mac OS X 10.4 compatibility | 137 | # Mac OS X 10.4 compatibility |
diff --git a/linden/indra/lscript/lscript_compile/indra.l b/linden/indra/lscript/lscript_compile/indra.l index 584087e..7f4cdc5 100644 --- a/linden/indra/lscript/lscript_compile/indra.l +++ b/linden/indra/lscript/lscript_compile/indra.l | |||
@@ -53,9 +53,16 @@ void parse_string(); | |||
53 | #define ECHO do { } while (0) | 53 | #define ECHO do { } while (0) |
54 | 54 | ||
55 | #if defined(__cplusplus) | 55 | #if defined(__cplusplus) |
56 | extern "C" { int yylex( void ); } | 56 | extern "C" { |
57 | extern "C" { int yyparse( void ); } | 57 | #endif |
58 | extern "C" { int yyerror(const char *fmt, ...); } | 58 | int yyerror(const char *fmt, ...); |
59 | int yylex( void ); | ||
60 | // Windows defines this in indra.y.hpp, which is included above, and defines it differently. | ||
61 | #ifndef LL_WINDOWS | ||
62 | int yyparse( void ); | ||
63 | #endif | ||
64 | #if defined(__cplusplus) | ||
65 | } | ||
59 | #endif | 66 | #endif |
60 | 67 | ||
61 | %} | 68 | %} |
@@ -722,9 +729,6 @@ L?\"(\\.|[^\\"])*\" { parse_string(); count(); return(STRING_CONSTANT); } | |||
722 | LLScriptAllocationManager *gAllocationManager; | 729 | LLScriptAllocationManager *gAllocationManager; |
723 | LLScriptScript *gScriptp; | 730 | LLScriptScript *gScriptp; |
724 | 731 | ||
725 | // Prototype for the yacc parser entry point | ||
726 | int yyparse(void); | ||
727 | |||
728 | int yyerror(const char *fmt, ...) | 732 | int yyerror(const char *fmt, ...) |
729 | { | 733 | { |
730 | gErrorToText.writeError(yyout, gLine, gColumn, LSERROR_SYNTAX_ERROR); | 734 | gErrorToText.writeError(yyout, gLine, gColumn, LSERROR_SYNTAX_ERROR); |
@@ -760,7 +764,13 @@ BOOL lscript_compile(const char* src_filename, const char* dst_filename, | |||
760 | 764 | ||
761 | yyrestart(yyin); | 765 | yyrestart(yyin); |
762 | 766 | ||
763 | b_parse_ok = !yyparse(); | 767 | // TODO - Try to fix this, but for now, no compiling LSL for Windows in SL. |
768 | // Actually, this seems to not actually be needed anymore? | ||
769 | // I thought it was needed to support ancient pre Mono LSL scripts, which only work in SL anyway, but they still work fine. Perhaps SL fixed it server side? | ||
770 | // If that's the case, we don't need any of this stuff. | ||
771 | #ifndef LL_WINDOWS | ||
772 | // b_parse_ok = !yyparse(); | ||
773 | #endif | ||
764 | 774 | ||
765 | if (b_parse_ok) | 775 | if (b_parse_ok) |
766 | { | 776 | { |
diff --git a/linden/indra/lscript/lscript_execute/lscript_execute.cpp b/linden/indra/lscript/lscript_execute/lscript_execute.cpp index b2b54cd..7af407f 100644 --- a/linden/indra/lscript/lscript_execute/lscript_execute.cpp +++ b/linden/indra/lscript/lscript_execute/lscript_execute.cpp | |||
@@ -809,16 +809,7 @@ void LLScriptExecute::runInstructions(BOOL b_print, const LLUUID &id, | |||
809 | // is there a fault? | 809 | // is there a fault? |
810 | // if yes, print out message and exit | 810 | // if yes, print out message and exit |
811 | S32 value = getVersion(); | 811 | S32 value = getVersion(); |
812 | S32 major_version = 0; | 812 | if ((value != LSL2_VERSION1_END_NUMBER) && (value != LSL2_VERSION_NUMBER)) |
813 | if (value == LSL2_VERSION1_END_NUMBER) | ||
814 | { | ||
815 | major_version = 1; | ||
816 | } | ||
817 | else if (value == LSL2_VERSION_NUMBER) | ||
818 | { | ||
819 | major_version = 2; | ||
820 | } | ||
821 | else | ||
822 | { | 813 | { |
823 | setFault(LSRF_VERSION_MISMATCH); | 814 | setFault(LSRF_VERSION_MISMATCH); |
824 | } | 815 | } |
diff --git a/linden/indra/lscript/lscript_execute/lscript_readlso.cpp b/linden/indra/lscript/lscript_execute/lscript_readlso.cpp index 3b10cc6..05eb826 100644 --- a/linden/indra/lscript/lscript_execute/lscript_readlso.cpp +++ b/linden/indra/lscript/lscript_execute/lscript_readlso.cpp | |||
@@ -150,7 +150,9 @@ void LLScriptLSOParse::printGlobals(LLFILE *fp) | |||
150 | 150 | ||
151 | // get offset to skip past name | 151 | // get offset to skip past name |
152 | varoffset = global_v_offset; | 152 | varoffset = global_v_offset; |
153 | // FIXME: Not actually used, perhaps there's a skip function? Or perhaps we really do need to skip past a name as the above comment suggests? | ||
153 | offset = bytestream2integer(mRawData, global_v_offset); | 154 | offset = bytestream2integer(mRawData, global_v_offset); |
155 | offset = offset + 0; | ||
154 | 156 | ||
155 | // get typeexport | 157 | // get typeexport |
156 | type = *(mRawData + global_v_offset++); | 158 | type = *(mRawData + global_v_offset++); |
@@ -268,8 +270,6 @@ void LLScriptLSOParse::printGlobalFunctions(LLFILE *fp) | |||
268 | fprintf(fp, "[Function #%d] [0x%X] %s\n", function_number, orig_function_offset, name); | 270 | fprintf(fp, "[Function #%d] [0x%X] %s\n", function_number, orig_function_offset, name); |
269 | fprintf(fp, "\tReturn Type: %s\n", LSCRIPTTypeNames[type]); | 271 | fprintf(fp, "\tReturn Type: %s\n", LSCRIPTTypeNames[type]); |
270 | type = *(mRawData + function_offset++); | 272 | type = *(mRawData + function_offset++); |
271 | S32 params; | ||
272 | params = 0; | ||
273 | S32 pcount = 0; | 273 | S32 pcount = 0; |
274 | while (type) | 274 | while (type) |
275 | { | 275 | { |
@@ -362,7 +362,9 @@ void LLScriptLSOParse::printStates(LLFILE *fp) | |||
362 | if (event_handlers & LSCRIPTStateBitField[k]) | 362 | if (event_handlers & LSCRIPTStateBitField[k]) |
363 | { | 363 | { |
364 | temp_end = bytestream2integer(mRawData, read_ahead); | 364 | temp_end = bytestream2integer(mRawData, read_ahead); |
365 | // FIXME onefang: Dummy is not actually used, but perhaps this is here to stop a warning? We need to stop another warning now. Some sort of skip might be better. | ||
365 | dummy = bytestream2integer(mRawData, read_ahead); | 366 | dummy = bytestream2integer(mRawData, read_ahead); |
367 | dummy = dummy + 0; | ||
366 | if ( (temp_end < opcode_end) | 368 | if ( (temp_end < opcode_end) |
367 | &&(temp_end > event_offset)) | 369 | &&(temp_end > event_offset)) |
368 | { | 370 | { |
diff --git a/linden/indra/mac_crash_logger/CMakeLists.txt b/linden/indra/mac_crash_logger/CMakeLists.txt index daf3e10..ee1dc93 100644 --- a/linden/indra/mac_crash_logger/CMakeLists.txt +++ b/linden/indra/mac_crash_logger/CMakeLists.txt | |||
@@ -71,6 +71,6 @@ add_custom_command( | |||
71 | -E | 71 | -E |
72 | copy_directory | 72 | copy_directory |
73 | ${CMAKE_CURRENT_SOURCE_DIR}/CrashReporter.nib | 73 | ${CMAKE_CURRENT_SOURCE_DIR}/CrashReporter.nib |
74 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mac-crash-logger.app/Contents/Resources/CrashReporter.nib | 74 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/mac-crash-logger.app/Contents/Resources/CrashReporter.nib |
75 | ) | 75 | ) |
76 | 76 | ||
diff --git a/linden/indra/mac_updater/CMakeLists.txt b/linden/indra/mac_updater/CMakeLists.txt index 0eac76f..5ae7dd8 100644 --- a/linden/indra/mac_updater/CMakeLists.txt +++ b/linden/indra/mac_updater/CMakeLists.txt | |||
@@ -74,6 +74,6 @@ add_custom_command( | |||
74 | -E | 74 | -E |
75 | copy_directory | 75 | copy_directory |
76 | ${CMAKE_CURRENT_SOURCE_DIR}/AutoUpdater.nib | 76 | ${CMAKE_CURRENT_SOURCE_DIR}/AutoUpdater.nib |
77 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mac-updater.app/Contents/Resources/AutoUpdater.nib | 77 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/mac-updater.app/Contents/Resources/AutoUpdater.nib |
78 | ) | 78 | ) |
79 | 79 | ||
diff --git a/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp b/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp index e194bf7..49bf6f9 100755 --- a/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp +++ b/linden/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp | |||
@@ -312,12 +312,9 @@ gst_slvideo_set_caps (GstBaseSink * bsink, GstCaps * caps) | |||
312 | static gboolean | 312 | static gboolean |
313 | gst_slvideo_start (GstBaseSink * bsink) | 313 | gst_slvideo_start (GstBaseSink * bsink) |
314 | { | 314 | { |
315 | GstSLVideo *slvideo; | 315 | GST_SLVIDEO(bsink); |
316 | gboolean ret = TRUE; | ||
317 | |||
318 | slvideo = GST_SLVIDEO(bsink); | ||
319 | 316 | ||
320 | return ret; | 317 | return TRUE; |
321 | } | 318 | } |
322 | 319 | ||
323 | static gboolean | 320 | static gboolean |
diff --git a/linden/indra/media_plugins/webkit/CMakeLists.txt b/linden/indra/media_plugins/webkit/CMakeLists.txt index 303a774..f589c61 100644 --- a/linden/indra/media_plugins/webkit/CMakeLists.txt +++ b/linden/indra/media_plugins/webkit/CMakeLists.txt | |||
@@ -112,8 +112,8 @@ if (DARWIN) | |||
112 | # copy the webkit dylib to the build directory | 112 | # copy the webkit dylib to the build directory |
113 | add_custom_command( | 113 | add_custom_command( |
114 | TARGET media_plugin_webkit POST_BUILD | 114 | TARGET media_plugin_webkit POST_BUILD |
115 | # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib | 115 | # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/libllqtwebkit.dylib |
116 | COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ | 116 | COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/ |
117 | DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib | 117 | DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib |
118 | ) | 118 | ) |
119 | 119 | ||
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt index 4050d80..1fc5f42 100644 --- a/linden/indra/newview/CMakeLists.txt +++ b/linden/indra/newview/CMakeLists.txt | |||
@@ -92,7 +92,7 @@ set(viewer_SOURCE_FILES | |||
92 | jcfloaterareasearch.cpp | 92 | jcfloaterareasearch.cpp |
93 | kokuastreamingaudio.cpp | 93 | kokuastreamingaudio.cpp |
94 | kowopenregionsettings.cpp | 94 | kowopenregionsettings.cpp |
95 | lightshare.cpp | 95 | llettherebelight.cpp |
96 | llagent.cpp | 96 | llagent.cpp |
97 | llagentaccess.cpp | 97 | llagentaccess.cpp |
98 | llagentdata.cpp | 98 | llagentdata.cpp |
@@ -274,6 +274,7 @@ set(viewer_SOURCE_FILES | |||
274 | llmaniprotate.cpp | 274 | llmaniprotate.cpp |
275 | llmanipscale.cpp | 275 | llmanipscale.cpp |
276 | llmaniptranslate.cpp | 276 | llmaniptranslate.cpp |
277 | llmediadataclient.cpp | ||
277 | llmapresponders.cpp | 278 | llmapresponders.cpp |
278 | llmediaremotectrl.cpp | 279 | llmediaremotectrl.cpp |
279 | llmemoryview.cpp | 280 | llmemoryview.cpp |
@@ -506,6 +507,7 @@ set(viewer_SOURCE_FILES | |||
506 | wlfloatermanager.cpp | 507 | wlfloatermanager.cpp |
507 | wlfloaterwindlightsend.cpp | 508 | wlfloaterwindlightsend.cpp |
508 | wlretrievesettings.cpp | 509 | wlretrievesettings.cpp |
510 | rcmoapradar.cpp | ||
509 | ) | 511 | ) |
510 | 512 | ||
511 | set(VIEWER_BINARY_NAME "imprudence-bin" CACHE STRING | 513 | set(VIEWER_BINARY_NAME "imprudence-bin" CACHE STRING |
@@ -529,7 +531,7 @@ set(viewer_HEADER_FILES | |||
529 | CMakeLists.txt | 531 | CMakeLists.txt |
530 | ViewerInstall.cmake | 532 | ViewerInstall.cmake |
531 | aoremotectrl.h | 533 | aoremotectrl.h |
532 | chatbar_as_cmdline.h | 534 | chatbar_as_cmdline.h |
533 | emeraldboobutils.h | 535 | emeraldboobutils.h |
534 | floaterao.h | 536 | floaterao.h |
535 | floaterbusy.h | 537 | floaterbusy.h |
@@ -548,11 +550,11 @@ set(viewer_HEADER_FILES | |||
548 | jcfloater_animation_list.h | 550 | jcfloater_animation_list.h |
549 | jcfloaterareasearch.h | 551 | jcfloaterareasearch.h |
550 | kokuastreamingaudio.h | 552 | kokuastreamingaudio.h |
551 | lightshare.h | 553 | llettherebelight.h |
552 | lggautocorrectfloater.h | 554 | lggautocorrectfloater.h |
553 | lggautocorrect.h | 555 | lggautocorrect.h |
554 | lggdicdownload.h | 556 | lggdicdownload.h |
555 | lgghunspell_wrapper.h | 557 | lgghunspell_wrapper.h |
556 | llagent.h | 558 | llagent.h |
557 | llagentaccess.h | 559 | llagentaccess.h |
558 | llagentdata.h | 560 | llagentdata.h |
@@ -735,6 +737,7 @@ set(viewer_HEADER_FILES | |||
735 | llmaniprotate.h | 737 | llmaniprotate.h |
736 | llmanipscale.h | 738 | llmanipscale.h |
737 | llmaniptranslate.h | 739 | llmaniptranslate.h |
740 | llmediadataclient.h | ||
738 | llmapresponders.h | 741 | llmapresponders.h |
739 | llmediaremotectrl.h | 742 | llmediaremotectrl.h |
740 | llmemoryview.h | 743 | llmemoryview.h |
@@ -978,6 +981,7 @@ set(viewer_HEADER_FILES | |||
978 | wlfloatermanager.h | 981 | wlfloatermanager.h |
979 | wlfloaterwindlightsend.h | 982 | wlfloaterwindlightsend.h |
980 | wlretrievesettings.h | 983 | wlretrievesettings.h |
984 | rcmoapradar.h | ||
981 | ) | 985 | ) |
982 | 986 | ||
983 | source_group("CMake Rules" FILES ViewerInstall.cmake) | 987 | source_group("CMake Rules" FILES ViewerInstall.cmake) |
@@ -1197,19 +1201,15 @@ set(viewer_APPSETTINGS_FILES | |||
1197 | app_settings/cmd_line.xml | 1201 | app_settings/cmd_line.xml |
1198 | app_settings/default_grids.xml | 1202 | app_settings/default_grids.xml |
1199 | app_settings/grass.xml | 1203 | app_settings/grass.xml |
1200 | app_settings/high_graphics.xml | ||
1201 | app_settings/keys.ini | 1204 | app_settings/keys.ini |
1202 | app_settings/keywords.ini | 1205 | app_settings/keywords.ini |
1203 | app_settings/logcontrol.xml | 1206 | app_settings/logcontrol.xml |
1204 | app_settings/low_graphics.xml | ||
1205 | app_settings/mid_graphics.xml | ||
1206 | app_settings/settings.xml | 1207 | app_settings/settings.xml |
1207 | app_settings/settings_crash_behavior.xml | 1208 | app_settings/settings_crash_behavior.xml |
1208 | app_settings/settings_files.xml | 1209 | app_settings/settings_files.xml |
1209 | app_settings/settings_per_account.xml | 1210 | app_settings/settings_per_account.xml |
1210 | app_settings/std_bump.ini | 1211 | app_settings/std_bump.ini |
1211 | app_settings/trees.xml | 1212 | app_settings/trees.xml |
1212 | app_settings/ultra_graphics.xml | ||
1213 | app_settings/viewerart.xml | 1213 | app_settings/viewerart.xml |
1214 | ${CMAKE_SOURCE_DIR}/../etc/message.xml | 1214 | ${CMAKE_SOURCE_DIR}/../etc/message.xml |
1215 | ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg | 1215 | ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg |
@@ -1319,7 +1319,7 @@ if (WINDOWS) | |||
1319 | 1319 | ||
1320 | # sets the 'working directory' for debugging from visual studio. | 1320 | # sets the 'working directory' for debugging from visual studio. |
1321 | if (NOT UNATTENDED) | 1321 | if (NOT UNATTENDED) |
1322 | if (NOT self.using_express) | 1322 | if (USE_VSTOOL) |
1323 | add_custom_command( | 1323 | add_custom_command( |
1324 | TARGET ${VIEWER_BINARY_NAME} PRE_BUILD | 1324 | TARGET ${VIEWER_BINARY_NAME} PRE_BUILD |
1325 | COMMAND ${CMAKE_SOURCE_DIR}/tools/vstool/vstool.exe | 1325 | COMMAND ${CMAKE_SOURCE_DIR}/tools/vstool/vstool.exe |
@@ -1331,7 +1331,7 @@ if (WINDOWS) | |||
1331 | ${CMAKE_CURRENT_SOURCE_DIR} | 1331 | ${CMAKE_CURRENT_SOURCE_DIR} |
1332 | COMMENT "Setting the ${VIEWER_BINARY_NAME} working directory for debugging." | 1332 | COMMENT "Setting the ${VIEWER_BINARY_NAME} working directory for debugging." |
1333 | ) | 1333 | ) |
1334 | endif (NOT self.using_express) | 1334 | endif (USE_VSTOOL) |
1335 | endif (NOT UNATTENDED) | 1335 | endif (NOT UNATTENDED) |
1336 | 1336 | ||
1337 | add_custom_command( | 1337 | add_custom_command( |
@@ -1341,7 +1341,7 @@ if (WINDOWS) | |||
1341 | -E | 1341 | -E |
1342 | copy_if_different | 1342 | copy_if_different |
1343 | ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/messages/message_template.msg | 1343 | ${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/messages/message_template.msg |
1344 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message_template.msg | 1344 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/app_settings/message_template.msg |
1345 | COMMENT "Copying message_template.msg to the runtime folder." | 1345 | COMMENT "Copying message_template.msg to the runtime folder." |
1346 | ) | 1346 | ) |
1347 | 1347 | ||
@@ -1352,7 +1352,7 @@ if (WINDOWS) | |||
1352 | -E | 1352 | -E |
1353 | copy_if_different | 1353 | copy_if_different |
1354 | ${CMAKE_CURRENT_SOURCE_DIR}/../../etc/message.xml | 1354 | ${CMAKE_CURRENT_SOURCE_DIR}/../../etc/message.xml |
1355 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings/message.xml | 1355 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/app_settings/message.xml |
1356 | COMMENT "Copying message.xml to the runtime folder." | 1356 | COMMENT "Copying message.xml to the runtime folder." |
1357 | ) | 1357 | ) |
1358 | 1358 | ||
@@ -1363,11 +1363,11 @@ if (WINDOWS) | |||
1363 | endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts) | 1363 | endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts) |
1364 | 1364 | ||
1365 | add_custom_command( | 1365 | add_custom_command( |
1366 | OUTPUT ${CMAKE_CFG_INTDIR}/touched.bat | 1366 | OUTPUT ${VIEWER_CFG_INTDIR}/touched.bat |
1367 | COMMAND ${PYTHON_EXECUTABLE} | 1367 | COMMAND ${PYTHON_EXECUTABLE} |
1368 | ARGS | 1368 | ARGS |
1369 | ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py | 1369 | ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py |
1370 | --configuration=${CMAKE_CFG_INTDIR} | 1370 | --configuration=${VIEWER_CFG_INTDIR} |
1371 | --channel=${VIEWER_CHANNEL} | 1371 | --channel=${VIEWER_CHANNEL} |
1372 | --login_channel=${VIEWER_LOGIN_CHANNEL} | 1372 | --login_channel=${VIEWER_LOGIN_CHANNEL} |
1373 | --standalone=${STANDALONE} | 1373 | --standalone=${STANDALONE} |
@@ -1376,15 +1376,15 @@ if (WINDOWS) | |||
1376 | --source=${CMAKE_CURRENT_SOURCE_DIR} | 1376 | --source=${CMAKE_CURRENT_SOURCE_DIR} |
1377 | --artwork=${ARTWORK_DIR} | 1377 | --artwork=${ARTWORK_DIR} |
1378 | --build=${CMAKE_CURRENT_BINARY_DIR} | 1378 | --build=${CMAKE_CURRENT_BINARY_DIR} |
1379 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/package | 1379 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/package |
1380 | --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat | 1380 | --touch=${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/touched.bat |
1381 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py | 1381 | DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py |
1382 | ) | 1382 | ) |
1383 | 1383 | ||
1384 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010) | 1384 | add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010) |
1385 | 1385 | ||
1386 | if (PACKAGE) | 1386 | if (PACKAGE) |
1387 | add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) | 1387 | add_custom_target(package ALL DEPENDS ${VIEWER_CFG_INTDIR}/touched.bat) |
1388 | add_dependencies(package windows-updater windows-crash-logger) | 1388 | add_dependencies(package windows-updater windows-crash-logger) |
1389 | endif (PACKAGE) | 1389 | endif (PACKAGE) |
1390 | endif (WINDOWS) | 1390 | endif (WINDOWS) |
@@ -1519,8 +1519,8 @@ if (DARWIN) | |||
1519 | --artwork=${ARTWORK_DIR} | 1519 | --artwork=${ARTWORK_DIR} |
1520 | --build=${CMAKE_CURRENT_BINARY_DIR} | 1520 | --build=${CMAKE_CURRENT_BINARY_DIR} |
1521 | --buildtype=${CMAKE_BUILD_TYPE} | 1521 | --buildtype=${CMAKE_BUILD_TYPE} |
1522 | --configuration=${CMAKE_CFG_INTDIR} | 1522 | --configuration=${VIEWER_CFG_INTDIR} |
1523 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app | 1523 | --dest=${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/${product}.app |
1524 | --grid=${GRID} | 1524 | --grid=${GRID} |
1525 | --source=${CMAKE_CURRENT_SOURCE_DIR} | 1525 | --source=${CMAKE_CURRENT_SOURCE_DIR} |
1526 | --standalone=${STANDALONE} | 1526 | --standalone=${STANDALONE} |
@@ -1551,8 +1551,8 @@ if (WINDOWS) | |||
1551 | -E | 1551 | -E |
1552 | copy_if_different | 1552 | copy_if_different |
1553 | ${BUILT_LLCOMMON} | 1553 | ${BUILT_LLCOMMON} |
1554 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} | 1554 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR} |
1555 | COMMENT "Copying llcommon.dll to the runtime folder." | 1555 | COMMENT "Copying llcommon.dll to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}." |
1556 | ) | 1556 | ) |
1557 | 1557 | ||
1558 | get_target_property(BUILT_SLPLUGIN SLPlugin LOCATION) | 1558 | get_target_property(BUILT_SLPLUGIN SLPlugin LOCATION) |
@@ -1563,8 +1563,8 @@ if (WINDOWS) | |||
1563 | -E | 1563 | -E |
1564 | copy_if_different | 1564 | copy_if_different |
1565 | ${BUILT_SLPLUGIN} | 1565 | ${BUILT_SLPLUGIN} |
1566 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} | 1566 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR} |
1567 | COMMENT "Copying SLPlugin executable to the runtime folder." | 1567 | COMMENT "Copying SLPlugin executable to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}." |
1568 | ) | 1568 | ) |
1569 | 1569 | ||
1570 | get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) | 1570 | get_target_property(BUILT_WEBKIT_PLUGIN media_plugin_webkit LOCATION) |
@@ -1575,8 +1575,8 @@ if (WINDOWS) | |||
1575 | -E | 1575 | -E |
1576 | copy_if_different | 1576 | copy_if_different |
1577 | ${BUILT_WEBKIT_PLUGIN} | 1577 | ${BUILT_WEBKIT_PLUGIN} |
1578 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1578 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin |
1579 | COMMENT "Copying WebKit Plugin to the runtime folder." | 1579 | COMMENT "Copying WebKit Plugin to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin." |
1580 | ) | 1580 | ) |
1581 | 1581 | ||
1582 | get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) | 1582 | get_target_property(BUILT_GSTREAMER_PLUGIN media_plugin_gstreamer010 LOCATION) |
@@ -1587,8 +1587,8 @@ if (WINDOWS) | |||
1587 | -E | 1587 | -E |
1588 | copy_if_different | 1588 | copy_if_different |
1589 | ${BUILT_GSTREAMER_PLUGIN} | 1589 | ${BUILT_GSTREAMER_PLUGIN} |
1590 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1590 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin |
1591 | COMMENT "Copying Gstreamer Plugin to the runtime folder." | 1591 | COMMENT "Copying Gstreamer Plugin to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin." |
1592 | ) | 1592 | ) |
1593 | 1593 | ||
1594 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) | 1594 | get_target_property(BUILT_QUICKTIME_PLUGIN media_plugin_quicktime LOCATION) |
@@ -1599,13 +1599,13 @@ if (WINDOWS) | |||
1599 | -E | 1599 | -E |
1600 | copy_if_different | 1600 | copy_if_different |
1601 | ${BUILT_QUICKTIME_PLUGIN} | 1601 | ${BUILT_QUICKTIME_PLUGIN} |
1602 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin | 1602 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin |
1603 | COMMENT "Copying Quicktime Plugin to the runtime folder." | 1603 | COMMENT "Copying Quicktime Plugin to the runtime folder ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin." |
1604 | ) | 1604 | ) |
1605 | 1605 | ||
1606 | # Copying the mime_types.xml file to app_settings | 1606 | # Copying the mime_types.xml file to app_settings |
1607 | set(mime_types_source "${CMAKE_SOURCE_DIR}/newview/skins/default/xui/en-us") | 1607 | set(mime_types_source "${CMAKE_SOURCE_DIR}/newview/skins/default/xui/en-us") |
1608 | set(mime_types_dest "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/app_settings") | 1608 | set(mime_types_dest "${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/app_settings") |
1609 | add_custom_command( | 1609 | add_custom_command( |
1610 | TARGET ${VIEWER_BINARY_NAME} POST_BUILD | 1610 | TARGET ${VIEWER_BINARY_NAME} POST_BUILD |
1611 | COMMAND ${CMAKE_COMMAND} | 1611 | COMMAND ${CMAKE_COMMAND} |
@@ -1622,7 +1622,7 @@ endif (WINDOWS) | |||
1622 | if (DARWIN) | 1622 | if (DARWIN) |
1623 | # Don't do this here -- it's taken care of by viewer_manifest.py | 1623 | # Don't do this here -- it's taken care of by viewer_manifest.py |
1624 | # add_custom_command(TARGET ${VIEWER_BINARY_NAME} POST_BUILD | 1624 | # add_custom_command(TARGET ${VIEWER_BINARY_NAME} POST_BUILD |
1625 | # COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin/ | 1625 | # COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llplugin/ |
1626 | # DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib | 1626 | # DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib |
1627 | # ) | 1627 | # ) |
1628 | endif (DARWIN) | 1628 | endif (DARWIN) |
diff --git a/linden/indra/newview/app_settings/default_grids.xml b/linden/indra/newview/app_settings/default_grids.xml index c5ef948..46a77f0 100644 --- a/linden/indra/newview/app_settings/default_grids.xml +++ b/linden/indra/newview/app_settings/default_grids.xml | |||
@@ -1,199 +1,285 @@ | |||
1 | <llsd> | 1 | <llsd> |
2 | <array> | 2 | <array> |
3 | <map> | 3 | <map> |
4 | <key>default_grids_version</key><string>38</string> | 4 | <key>default_grids_version</key><string>39</string> |
5 | </map> | 5 | </map> |
6 | 6 | ||
7 | <!-- Second Life --> | 7 | <!-- 3rd Rock Grid --> |
8 | <map> | 8 | <map> |
9 | <key>gridnick</key><string>secondlife</string> | 9 | <key>gridname</key><string>3rd Rock Grid</string> |
10 | <key>gridname</key><string>Second Life</string> | 10 | <key>gridnick</key><string>3rdRock</string> |
11 | <key>platform</key><string>SecondLife</string> | 11 | <key>platform</key><string>OpenSim</string> |
12 | <key>loginuri</key><string>https://login.agni.lindenlab.com/cgi-bin/login.cgi</string> | 12 | <key>about</key><string>http://3rdrockgrid.com/</string> |
13 | <key>loginpage</key><string>http://imprudenceviewer.org/app/splash/</string> | 13 | <key>help</key><string>http://3rdrockgrid.com/</string> |
14 | <key>helperuri</key><string>https://secondlife.com/helpers/</string> | 14 | <key>helperuri</key><string>http://grid.3rdrockgrid.com/3rg_money/</string> |
15 | <key>website</key><string>http://secondlife.com/</string> | 15 | <key>loginuri</key><string>http://grid.3rdrockgrid.com:8002/</string> |
16 | <key>support</key><string>http://secondlife.com/support/</string> | 16 | <key>loginpage</key><string>http://3rdrockgrid.com/startpage.php</string> |
17 | <key>register</key><string>http://secondlife.com/registration/</string> | 17 | <key>website</key><string>http://3rdrockgrid.com/</string> |
18 | <key>password</key><string>http://secondlife.com/account/request.php</string> | 18 | <key>register</key><string>http://3rdrockgrid.com/</string> |
19 | <key>version</key><string>2</string> | 19 | <key>password</key><string>http://3rdrockgrid.com/</string> |
20 | <key>support</key><string>http://3rdrockgrid.com/</string> | ||
21 | <key>version</key><string>1</string> | ||
20 | </map> | 22 | </map> |
21 | 23 | ||
22 | <!-- Second Life Beta --> | 24 | <!-- Avination --> |
25 | <map> | ||
26 | <key>gridname</key><string>Avination</string> | ||
27 | <key>gridnick</key><string>Avination</string> | ||
28 | <key>platform</key><string>OpenSim</string> | ||
29 | <key>about</key><string>http://login.avination.net</string> | ||
30 | <key>helperuri</key><string>https://secure.3dhosting.de/</string> | ||
31 | <key>loginpage</key><string>https://www.avination.com/welcome.php</string> | ||
32 | <key>loginuri</key><string>https://login.avination.com</string> | ||
33 | <key>name</key><string>login.avination.net</string> | ||
34 | <key>password</key><string>https://www.avination.com/pwrecover.php</string> | ||
35 | <key>register</key><string>https://www.avination.com/join.php</string> | ||
36 | </map> | ||
37 | |||
38 | <!-- Craft (offspring of Cyberlandia) --> | ||
39 | <map> | ||
40 | <key>gridname</key><string>Craft - The Friendly World</string> | ||
41 | <key>gridnick</key><string>Craft</string> | ||
42 | <key>platform</key><string>OpenSim</string> | ||
43 | <key>about</key><string>http://www.craft-world.org/</string> | ||
44 | <key>loginuri</key><string>http://craft-world.org:8002/</string> | ||
45 | <key>loginpage</key><string>http://www.craft-world.org/loginscreen.php</string> | ||
46 | <key>helperuri</key><string>http://webapp.craft-world.org/economy/</string> | ||
47 | <key>website</key><string>http://www.craft-world.org/</string> | ||
48 | <key>register</key><string>http://craft-world.org:8002/wifi/user/account/</string> | ||
49 | <key>password</key><string>http://craft-world.org:8002/wifi/forgotpassword</string> | ||
50 | <key>version</key><string>0</string> | ||
51 | </map> | ||
52 | |||
53 | <!-- FrancoGrid --> | ||
23 | <map> | 54 | <map> |
24 | <key>gridnick</key><string>secondlifebeta</string> | 55 | <key>gridname</key><string>Metavers Francophone FrancoGrid</string> |
25 | <key>gridname</key><string>Second Life Beta Grid</string> | 56 | <key>gridnick</key><string>francogrid</string> |
26 | <key>platform</key><string>SecondLife</string> | 57 | <key>platform</key><string>OpenSim</string> |
27 | <key>loginuri</key><string>https://login.aditi.lindenlab.com/cgi-bin/login.cgi</string> | 58 | <key>about</key><string>http://francogrid.org/</string> |
28 | <key>loginpage</key><string>http://imprudenceviewer.org/app/splash/</string> | 59 | <key>help</key><string>http://francogrid.org/aide</string> |
29 | <key>helperuri</key><string>http://aditi-secondlife.webdev.lindenlab.com/helpers/</string> | 60 | <key>helperuri</key><string>http://helper.main.francogrid.org/</string> |
30 | <key>website</key><string>http://secondlife.com/</string> | 61 | <key>loginpage</key><string>http://viewer.francogrid.org/</string> |
31 | <key>support</key><string>http://secondlife.com/support/</string> | 62 | <key>loginuri</key><string>http://login.francogrid.org/</string> |
32 | <key>register</key><string>http://secondlife.com/registration/</string> | 63 | <key>name</key><string>login.francogrid.org</string> |
33 | <key>password</key><string>http://secondlife.com/account/request.php</string> | 64 | <key>password</key><string>http://francogrid.org/user/password</string> |
34 | <key>version</key><string>3</string> | 65 | <key>register</key><string>http://francogrid.org/user/register</string> |
66 | </map> | ||
67 | |||
68 | <!-- GiantGrid --> | ||
69 | <map> | ||
70 | <key>gridname</key><string>GiantGrid</string> | ||
71 | <key>gridnick</key><string>GiantGrid</string> | ||
72 | <key>platform</key><string>OpenSim</string> | ||
73 | <key>loginuri</key><string>http://giantgrid.no-ip.biz:8002/</string> | ||
74 | <key>loginpage</key><string>http://www.giantgrid.nl</string> | ||
75 | <key>helperuri</key><string>http://giantgrid.no-ip.biz/XoopCube/html/modules/xoopensim/helper/</string> | ||
76 | <key>website</key><string>http://www.giantgrid.nl</string> | ||
77 | <key>register</key><string>http://giantgrid.no-ip.biz:8002/wifi/user/account/</string> | ||
78 | <key>password</key><string>http://giantgrid.no-ip.biz:8002/wifi/forgotpassword</string> | ||
79 | <key>support</key><string>http://gianttest.no-ip.biz/ticket/</string> | ||
80 | <key>version</key><string>1</string> | ||
81 | </map> | ||
82 | |||
83 | <!-- InWorldz --> | ||
84 | <map> | ||
85 | <key>gridname</key><string>InWorldz</string> | ||
86 | <key>gridnick</key><string>InWorldz</string> | ||
87 | <key>platform</key><string>OpenSim</string> | ||
88 | <key>about</key><string>http://inworldz.com/</string> | ||
89 | <key>help</key><string>http://inworldz.com/faq.php</string> | ||
90 | <key>loginuri</key><string>http://inworldz.com:8002/</string> | ||
91 | <key>loginpage</key><string>http://inworldz.com/loginscreen.php</string> | ||
92 | <key>helperuri</key><string>http://inworldz.com/</string> | ||
93 | <key>password</key><string>http://inworldz.com/</string> | ||
94 | <key>register</key><string>http://inworldz.com/register.php</string> | ||
95 | <key>support</key><string>http://inworldz.com/support.php</string> | ||
96 | <key>website</key><string>http://inworldz.com/</string> | ||
97 | <key>version</key><string>2</string> | ||
98 | </map> | ||
99 | |||
100 | <!-- Island Oasis --> | ||
101 | <map> | ||
102 | <key>gridname</key><string>Island Oasis</string> | ||
103 | <key>gridnick</key><string>IslandOasis</string> | ||
104 | <key>platform</key><string>OpenSim</string> | ||
105 | <key>about</key><string>http://www.islandoasis.biz/GridStats.aspx</string> | ||
106 | <key>help</key><string>http://www.islandoasis.biz/Support.aspx</string> | ||
107 | <key>helperuri</key><string>http://islandoasisgrid.biz:8020/OsCurrency/</string> | ||
108 | <key>loginpage</key><string>http://www.islandoasis.biz/welcome.aspx</string> | ||
109 | <key>loginuri</key><string>http://islandoasisgrid.biz:8002/</string> | ||
110 | <key>name</key><string>islandoasisgrid.biz:8002</string> | ||
111 | <key>password</key><string>http://www.islandoasis.biz/Login.aspx</string> | ||
112 | <key>register</key><string>http://www.islandoasis.biz/verification.aspx</string> | ||
35 | </map> | 113 | </map> |
36 | 114 | ||
37 | <!-- Local Host --> | 115 | <!-- Local Host --> |
38 | <map> | 116 | <map> |
39 | <key>gridnick</key><string>localhost</string> | 117 | <key>gridname</key><string>Localhost</string> |
40 | <key>gridname</key><string>Local Host</string> | 118 | <key>gridnick</key><string>LocalHost</string> |
41 | <key>platform</key><string>OpenSim</string> | 119 | <key>platform</key><string>OpenSim</string> |
42 | <key>loginuri</key><string>http://127.0.0.1:9000/</string> | 120 | <key>loginuri</key><string>http://127.0.0.1:9000/</string> |
43 | <key>loginpage</key><string /> | 121 | <key>loginpage</key><string /> |
44 | <key>helperuri</key><string>http://127.0.0.1:9000/</string> | 122 | <key>helperuri</key><string>http://127.0.0.1:9000/</string> |
45 | <key>version</key><string>1</string> | 123 | <key>version</key><string>1</string> |
46 | </map> | 124 | </map> |
47 | 125 | ||
48 | <!-- OSGrid --> | 126 | <!-- local Sim-on-a-stick --> |
49 | <map> | 127 | <map> |
50 | <key>gridnick</key><string>osgrid</string> | 128 | <key>gridname</key><string>Sim-on-a-Stick</string> |
51 | <key>gridname</key><string>OSGrid</string> | 129 | <key>gridnick</key><string>SimOnAStick</string> |
52 | <key>platform</key><string>OpenSim</string> | 130 | <key>loginpage</key><string>http://127.0.0.1:9100/wifi/welcome.html</string> |
53 | <key>loginuri</key><string>http://login.osgrid.org/</string> | 131 | <key>loginuri</key><string>http://localhost:9100</string> |
54 | <key>loginpage</key><string>http://www.osgrid.org/splash/</string> | ||
55 | <key>helperuri</key><string>http://helper.osgrid.org/</string> | ||
56 | <key>website</key><string>http://www.osgrid.org/</string> | ||
57 | <key>support</key><string>http://www.osgrid.org/</string> | ||
58 | <key>register</key> | ||
59 | <string>http://www.osgrid.org/index.php/auth/register</string> | ||
60 | <key>password</key> | ||
61 | <string>http://www.osgrid.org/index.php/auth/forgot_password</string> | ||
62 | <key>version</key><string>3</string> | ||
63 | </map> | 132 | </map> |
64 | 133 | ||
65 | <!-- Your Alternative Life --> | 134 | <!-- Metropolis Metaversum --> |
66 | <map> | 135 | <map> |
67 | <key>gridnick</key><string>youralternativelife</string> | 136 | <key>gridname</key><string>Metropolis Metaversum</string> |
68 | <key>gridname</key><string>Your Alternative Life</string> | 137 | <key>gridnick</key><string>Metropolis</string> |
69 | <key>platform</key><string>OpenSim</string> | 138 | <key>platform</key><string>OpenSim</string> |
70 | <key>loginuri</key><string>http://grid01.from-ne.com:8002/</string> | 139 | <key>about</key><string>http://www.hypergrid.org/metropolis/wiki</string> |
71 | <key>loginpage</key><string>http://grid01.from-ne.com/tios/loginscreen3.php</string> | 140 | <key>help</key><string>http://metropolis.hypergrid.org</string> |
72 | <key>helperuri</key><string>http://grid01.from-ne.com/tios/services/</string> | 141 | <key>helperuri</key><string>http://metropolis.hypergrid.org/currency/helper/</string> |
73 | <key>website</key><string>http://www.youralternativelife.com</string> | 142 | <key>loginpage</key><string>http://metropolis.hypergrid.org</string> |
74 | <key>support</key><string>http://www.youralternativelife.com</string> | 143 | <key>loginuri</key><string>http://hypergrid.org:8002/</string> |
75 | <key>register</key><string>http://www.youralternativelife.com</string> | 144 | <key>name</key><string>hypergrid.org:8002</string> |
76 | <key>password</key><string>http://www.youralternativelife.com</string> | 145 | <key>password</key><string>http://metropolis.hypergrid.org/oswi.php</string> |
77 | <key>version</key><string>0</string> | 146 | <key>register</key><string>http://www.hypergrid.org/metropolis/metro_rg.php</string> |
147 | </map> | ||
78 | 148 | ||
149 | <!-- New World Grid --> | ||
150 | <map> | ||
151 | <key>gridname</key><string>New World Grid</string> | ||
152 | <key>gridnick</key><string>newworldgrid</string> | ||
153 | <key>platform</key><string>OpenSim</string> | ||
154 | <key>loginuri</key><string>http://3d.newworldgrid.com:8002/</string> | ||
155 | <key>loginpage</key><string>http://www.newworldgrid.com/loginpage/</string> | ||
156 | <key>helperuri</key><string>http://3d.newworldgrid.com/services/helper/</string> | ||
157 | <key>website</key><string>http://www.newworldgrid.com/</string> | ||
158 | <key>support</key><string>http://www.newworldgrid.com/contact/</string> | ||
159 | <key>register</key><string>http://www.newworldgrid.com/virreacentral/redirect.php?page=register</string> | ||
160 | <key>password</key><string>http://www.newworldgrid.com/virreacentral/redirect.php?page=login</string> | ||
161 | <key>version</key><string>0</string> | ||
79 | </map> | 162 | </map> |
80 | 163 | ||
81 | <!-- The New World Grid --> | 164 | <!-- OSGrid --> |
82 | <map> | 165 | <map> |
83 | <key>gridnick</key><string>thenewworldgrid</string> | 166 | <key>gridname</key><string>OSGrid</string> |
84 | <key>gridname</key><string>The New World Grid</string> | 167 | <key>gridnick</key><string>OSGrid</string> |
85 | <key>platform</key><string>OpenSim</string> | 168 | <key>platform</key><string>OpenSim</string> |
86 | <key>loginuri</key><string>http://grid.newworldgrid.com:8002/</string> | 169 | <key>about</key><string>http://www.osgrid.org/</string> |
87 | <key>loginpage</key><string>http://account.newworldgrid.com/loginscreen.php</string> | 170 | <key>help</key><string>http://www.osgrid.org/</string> |
88 | <key>helperuri</key><string>http://account.newworldgrid.com/</string> | 171 | <key>loginuri</key><string>http://login.osgrid.org/</string> |
89 | <key>website</key><string>http://www.newworldgrid.com/</string> | 172 | <key>loginpage</key><string>http://www.osgrid.org/splash/</string> |
90 | <key>support</key><string>http://www.newworldgrid.com/</string> | 173 | <key>helperuri</key><string>http://helper.osgrid.org/</string> |
91 | <key>register</key><string>http://www.newworldgrid.com/register</string> | 174 | <key>website</key><string>http://www.osgrid.org/</string> |
92 | <key>password</key><string>http://account.newworldgrid.com/</string> | 175 | <key>support</key><string>http://www.osgrid.org/</string> |
93 | <key>version</key><string>0</string> | 176 | <key>register</key><string>http://www.osgrid.org/</string> |
177 | <key>password</key><string>http://www.osgrid.org/</string> | ||
178 | <key>version</key><string>3</string> | ||
94 | </map> | 179 | </map> |
95 | 180 | ||
96 | <!-- ReactionGrid --> | 181 | <!-- ReactionGrid --> |
97 | <map> | 182 | <map> |
98 | <key>gridnick</key><string>reactiongrid</string> | 183 | <key>gridname</key><string>ReactionGrid</string> |
99 | <key>gridname</key><string>ReactionGrid</string> | 184 | <key>gridnick</key><string>ReactionGrid</string> |
100 | <key>platform</key><string>OpenSim</string> | 185 | <key>platform</key><string>OpenSim</string> |
101 | <key>loginuri</key><string>http://reactiongrid.com:8008/</string> | 186 | <key>about</key><string>http://reactiongrid.com/Default.aspx</string> |
102 | <key>loginpage</key><string>http://gsquared.info/portal</string> | 187 | <key>help</key><string>http://reactiongrid.com/Support.aspx</string> |
103 | <key>website</key><string>http://reactiongrid.com/Default.aspx</string> | 188 | <key>loginuri</key><string>http://reactiongrid.com:8008/</string> |
104 | <key>support</key><string>http://reactiongrid.com/Support.aspx</string> | 189 | <key>loginpage</key><string>http://gsquared.info/portal</string> |
105 | <key>register</key><string>http://reactiongrid.com/Register.aspx</string> | 190 | <key>helperuri</key><string>http://reactiongrid.com:9000/</string> |
106 | <key>password</key><string>http://reactiongrid.com/Support/ResetPassword.aspx</string> | 191 | <key>website</key><string>http://reactiongrid.com/Default.aspx</string> |
107 | <key>version</key><string>0</string> | 192 | <key>support</key><string>http://reactiongrid.com/Support.aspx</string> |
193 | <key>register</key><string>http://reactiongrid.com/Register.aspx</string> | ||
194 | <key>password</key><string>http://www.reactiongrid.com/Support/PasswordReset.aspx</string> | ||
195 | <key>version</key><string>0</string> | ||
108 | </map> | 196 | </map> |
109 | 197 | ||
110 | <!-- Craft (offspring of Cyberlandia) --> | 198 | <!-- ScienceSim --> |
111 | <map> | 199 | <map> |
112 | <key>gridnick</key><string>craft</string> | 200 | <key>gridname</key><string>IEEE/ACM ScienceSim Virtual World</string> |
113 | <key>gridname</key><string>Craft</string> | 201 | <key>gridnick</key><string>ScienceSim</string> |
114 | <key>platform</key><string>OpenSim</string> | 202 | <key>platform</key><string>OpenSim</string> |
115 | <key>loginuri</key><string>http://craft-world.org:8002/</string> | 203 | <key>loginuri</key><string>http://grid.sciencesim.com/</string> |
116 | <key>loginpage</key><string>http://www.craft-world.org/loginscreen.php</string> | 204 | <key>loginpage</key><string>http://island.sciencesim.com/scisim/loginscreen.php</string> |
117 | <key>helperuri</key><string>http://webapp.craft-world.org/</string> | 205 | <key>helperuri</key><string></string> |
118 | <key>website</key><string>http://www.craft-world.org/</string> | 206 | <key>password</key><string>http://island.sciencesim.com/scisim</string> |
119 | <key>register</key><string>http://craft-world.org:8002/wifi/user/account/</string> | 207 | <key>register</key><string>http://island.sciencesim.com/scisim</string> |
120 | <key>password</key><string>http://craft-world.org:8002/wifi/forgotpassword</string> | 208 | <key>support</key><string>http://island.sciencesim.com/wiki</string> |
121 | <key>version</key><string>0</string> | 209 | <key>website</key><string>http://island.sciencesim.com/about/</string> |
122 | </map> | 210 | <key>version</key><string>0</string> |
123 | |||
124 | <!-- Role Play Worlds --> | ||
125 | <map> | ||
126 | <key>gridnick</key><string>roleplayworlds</string> | ||
127 | <key>gridname</key><string>Role Play Worlds</string> | ||
128 | <key>platform</key><string>OpenSim</string> | ||
129 | <key>loginuri</key><string>http://grid.roleplayworlds.net:8002/</string> | ||
130 | <key>loginpage</key><string>http://roleplayworlds.net/loginscreen</string> | ||
131 | <key>helperuri</key><string>http://grid.roleplayworlds.net/</string> | ||
132 | <key>website</key><string>http://roleplayworlds.net/</string> | ||
133 | <key>support</key><string>http://roleplayworlds.net/help</string> | ||
134 | <key>register</key><string>http://roleplayworlds.net/register</string> | ||
135 | <key>password</key><string>http://roleplayworlds.net/password</string> | ||
136 | <key>version</key><string>1</string> | ||
137 | </map> | 211 | </map> |
138 | 212 | ||
139 | <!-- GiantGrid --> | 213 | <!-- Second Life --> |
140 | <map> | 214 | <map> |
141 | <key>gridnick</key><string>giantgrid</string> | 215 | <key>gridname</key><string>Second Life</string> |
142 | <key>gridname</key><string>GiantGrid</string> | 216 | <key>gridnick</key><string>SL</string> |
143 | <key>platform</key><string>OpenSim</string> | 217 | <key>platform</key><string>SecondLife</string> |
144 | <key>loginuri</key><string>http://giantgrid.no-ip.biz:8002/</string> | 218 | <key>loginuri</key><string>https://login.agni.lindenlab.com/cgi-bin/login.cgi</string> |
145 | <key>loginpage</key><string>http://www.giantgrid.nl</string> | 219 | <key>loginpage</key><string>http://viewer-login.agni.lindenlab.com/</string> |
146 | <key>helperuri</key><string>http://giantgrid.no-ip.biz/XoopCube/html/modules/xoopensim/helper/</string> | 220 | <key>helperuri</key><string>https://secondlife.com/helpers/</string> |
147 | <key>website</key><string>http://www.giantgrid.nl</string> | 221 | <key>website</key><string>http://secondlife.com/</string> |
148 | <key>register</key><string>http://giantgrid.no-ip.biz:8002/wifi/user/account/</string> | 222 | <key>support</key><string>http://secondlife.com/support/</string> |
149 | <key>password</key><string>http://giantgrid.no-ip.biz:8002/wifi/forgotpassword</string> | 223 | <key>register</key><string>http://secondlife.com/registration/</string> |
150 | <key>support</key><string>http://gianttest.no-ip.biz/ticket/</string> | 224 | <key>password</key><string>http://secondlife.com/account/request.php</string> |
151 | <key>version</key><string>1</string> | 225 | <key>version</key><string>2</string> |
152 | </map> | 226 | </map> |
153 | 227 | ||
154 | <!-- 3rd Rock Grid --> | 228 | <!-- Second Life Beta --> |
155 | <map> | 229 | <map> |
156 | <key>gridnick</key><string>3rdrock</string> | 230 | <key>gridname</key><string>Second Life Beta Grid</string> |
157 | <key>gridname</key><string>3rd Rock Grid</string> | 231 | <key>gridnick</key><string>SLBeta</string> |
158 | <key>platform</key><string>OpenSim</string> | 232 | <key>platform</key><string>SecondLife</string> |
159 | <key>loginuri</key><string>http://grid.3rdrockgrid.com:8002/</string> | 233 | <key>loginuri</key><string>https://login.aditi.lindenlab.com/cgi-bin/login.cgi</string> |
160 | <key>loginpage</key><string>http://3rdrockgrid.com/startpage.php</string> | 234 | <key>loginpage</key><string>http://viewer-login.agni.lindenlab.com</string> |
161 | <key>helperuri</key><string>http://grid.3rdrockgrid.com/money/</string> | 235 | <key>helperuri</key><string>http://aditi-secondlife.webdev.lindenlab.com/helpers/</string> |
162 | <key>website</key><string>http://3rdrockgrid.com/</string> | 236 | <key>website</key><string>http://secondlife.com/</string> |
163 | <key>register</key><string>http://3rdrockgrid.com/</string> | 237 | <key>support</key><string>http://secondlife.com/support/</string> |
164 | <key>password</key><string>http://3rdrockgrid.com/</string> | 238 | <key>register</key><string>http://secondlife.com/registration/</string> |
165 | <key>support</key><string>http://3rdrockgrid.com/</string> | 239 | <key>password</key><string>http://secondlife.com/account/request.php</string> |
166 | <key>version</key><string>1</string> | 240 | <key>version</key><string>3</string> |
167 | </map> | 241 | </map> |
168 | 242 | ||
169 | <!-- InWorldz --> | 243 | <!-- Virtual Highway --> |
170 | <map> | 244 | <map> |
171 | <key>gridname</key> <string>InWorldz</string> | 245 | <key>gridname</key><string>Virtual Highway</string> |
172 | <key>gridnick</key> <string>inworldz</string> | 246 | <key>gridnick</key><string>VirtualHighway</string> |
173 | <key>platform</key> <string>OpenSim</string> | 247 | <key>platform</key><string>OpenSim</string> |
174 | <key>loginuri</key> <string>http://inworldz.com:8002/</string> | 248 | <key>about</key><string>http://www.virtualhighway.us/about.php</string> |
175 | <key>loginpage</key> <string>http://inworldz.com/loginscreen.php</string> | 249 | <key>helperuri</key><string>http://www.virtualhighway.us/griddal/</string> |
176 | <key>helperuri</key> <string>http://inworldz.com/</string> | 250 | <key>loginpage</key><string>http://www.virtualhighway.us/welcome.php</string> |
177 | <key>password</key> <string>http://inworldz.com/loginerror.php?error=2</string> | 251 | <key>loginuri</key><string>http://login.virtualhighway.us:8002/</string> |
178 | <key>register</key> <string>http://inworldz.com/register.php</string> | 252 | <key>name</key><string>login.virtualhighway.us:8002</string> |
179 | <key>support</key> <string>http://inworldz.com/support.php</string> | 253 | <key>password</key><string>http://www.virtualhighway.us/users/lostPassword</string> |
180 | <key>website</key> <string>http://inworldz.com/</string> | 254 | <key>register</key><string>http://www.virtualhighway.us/users/register</string> |
181 | <key>version</key> <string>2</string> | 255 | </map> |
182 | </map> | ||
183 | 256 | ||
184 | <!-- ScienceSim --> | 257 | <!-- virtyou --> |
258 | <map> | ||
259 | <key>gridname</key><string>virtyou MainGrid</string> | ||
260 | <key>gridnick</key><string>virtyou</string> | ||
261 | <key>platform</key><string>OpenSim</string> | ||
262 | <key>help</key><string>http://virtyou.com/q/howto/</string> | ||
263 | <key>loginpage</key><string>http://virtyou.com/welcome/</string> | ||
264 | <key>loginuri</key><string>http://go.virtyou.com</string> | ||
265 | <key>password</key><string>http://virtyou.com/user/forgotten.html</string> | ||
266 | <key>register</key><string>http://virtyou.com/user/</string> | ||
267 | </map> | ||
268 | |||
269 | <!-- Your Alternative Life --> | ||
185 | <map> | 270 | <map> |
186 | <key>gridname</key> <string>IEEE/ACM ScienceSim Virtual World</string> | 271 | <key>gridname</key><string>Your Alternative Life</string> |
187 | <key>gridnick</key> <string>sciencesim</string> | 272 | <key>gridnick</key><string>YourAlternativeLife</string> |
188 | <key>platform</key> <string>OpenSim</string> | 273 | <key>platform</key><string>OpenSim</string> |
189 | <key>loginuri</key> <string>http://grid.sciencesim.com/</string> | 274 | <key>about</key><string>http://www.youralternativelife.com</string> |
190 | <key>loginpage</key> <string>http://island.sciencesim.com/scisim/loginscreen.php</string> | 275 | <key>loginuri</key><string>http://grid01.from-ne.com:8002/</string> |
191 | <key>helperuri</key> <string></string> | 276 | <key>loginpage</key><string>http://grid01.from-ne.com/tios/loginscreen3.php</string> |
192 | <key>password</key> <string>http://island.sciencesim.com/scisim</string> | 277 | <key>helperuri</key><string>http://grid01.from-ne.com/tios/services/</string> |
193 | <key>register</key> <string>http://island.sciencesim.com/scisim</string> | 278 | <key>website</key><string>http://www.youralternativelife.com</string> |
194 | <key>support</key> <string>http://island.sciencesim.com/wiki</string> | 279 | <key>support</key><string>http://www.youralternativelife.com</string> |
195 | <key>website</key> <string>http://island.sciencesim.com/about/</string> | 280 | <key>register</key><string>http://www.youralternativelife.com</string> |
196 | <key>version</key> <string>0</string> | 281 | <key>password</key><string>http://www.youralternativelife.com</string> |
282 | <key>version</key><string>0</string> | ||
197 | </map> | 283 | </map> |
198 | 284 | ||
199 | </array> | 285 | </array> |
diff --git a/linden/indra/newview/app_settings/high_graphics.xml b/linden/indra/newview/app_settings/high_graphics.xml deleted file mode 100644 index 6368f70..0000000 --- a/linden/indra/newview/app_settings/high_graphics.xml +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
2 | <settings version = "101"> | ||
3 | <!--NO SHADERS--> | ||
4 | <RenderAvatarCloth value="FALSE"/> | ||
5 | <!--Default for now--> | ||
6 | <RenderAvatarLODFactor value="1.0"/> | ||
7 | <!--NO SHADERS--> | ||
8 | <RenderAvatarVP value="TRUE"/> | ||
9 | <!--Short Range--> | ||
10 | <RenderFarClip value="128"/> | ||
11 | <!--Default for now--> | ||
12 | <RenderFlexTimeFactor value="1"/> | ||
13 | <!--256... but they don't use this--> | ||
14 | <RenderGlowResolutionPow value="9"/> | ||
15 | <!--Sun/Moon only--> | ||
16 | <RenderLightingDetail value="1"/> | ||
17 | <!--Low number--> | ||
18 | <RenderMaxPartCount value="4096"/> | ||
19 | <!--bump okay--> | ||
20 | <RenderObjectBump value="TRUE"/> | ||
21 | <!--NO SHADERS--> | ||
22 | <RenderReflectionDetail value="2"/> | ||
23 | <!--Simple--> | ||
24 | <RenderTerrainDetail value="1"/> | ||
25 | <!--Default for now--> | ||
26 | <RenderTerrainLODFactor value="2"/> | ||
27 | <!--Default for now--> | ||
28 | <RenderTreeLODFactor value="0.5"/> | ||
29 | <!--Try Impostors--> | ||
30 | <RenderUseImpostors value="TRUE"/> | ||
31 | <!--Default for now--> | ||
32 | <RenderVolumeLODFactor value="1.125"/> | ||
33 | <!--NO SHADERS--> | ||
34 | <RenderWaterReflections value="FALSE"/> | ||
35 | <!--NO SHADERS--> | ||
36 | <VertexShaderEnable value="TRUE"/> | ||
37 | <!--NO SHADERS--> | ||
38 | <WindLightUseAtmosShaders value="TRUE"/> | ||
39 | </settings> | ||
diff --git a/linden/indra/newview/app_settings/low_graphics.xml b/linden/indra/newview/app_settings/low_graphics.xml deleted file mode 100644 index 3f67a70..0000000 --- a/linden/indra/newview/app_settings/low_graphics.xml +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
2 | <settings version = "101"> | ||
3 | <!--NO SHADERS--> | ||
4 | <RenderAvatarCloth value="FALSE"/> | ||
5 | <!--Default for now--> | ||
6 | <RenderAvatarLODFactor value="0.5"/> | ||
7 | <!--NO SHADERS--> | ||
8 | <RenderAvatarVP value="FALSE"/> | ||
9 | <!--Short Range--> | ||
10 | <RenderFarClip value="64"/> | ||
11 | <!--Default for now--> | ||
12 | <RenderFlexTimeFactor value="0.5"/> | ||
13 | <!--256... but they don't use this--> | ||
14 | <RenderGlowResolutionPow value="8"/> | ||
15 | <!--Sun/Moon only--> | ||
16 | <RenderLightingDetail value="0"/> | ||
17 | <!--Low number--> | ||
18 | <RenderMaxPartCount value="1024"/> | ||
19 | <!--bump okay--> | ||
20 | <RenderObjectBump value="FALSE"/> | ||
21 | <!--NO SHADERS--> | ||
22 | <RenderReflectionDetail value="0"/> | ||
23 | <!--Simple--> | ||
24 | <RenderTerrainDetail value="0"/> | ||
25 | <!--Default for now--> | ||
26 | <RenderTerrainLODFactor value="1.0"/> | ||
27 | <!--Default for now--> | ||
28 | <RenderTreeLODFactor value="0.5"/> | ||
29 | <!--Try Impostors--> | ||
30 | <RenderUseImpostors value="TRUE"/> | ||
31 | <!--Default for now--> | ||
32 | <RenderVolumeLODFactor value="1.125"/> | ||
33 | <!--NO SHADERS--> | ||
34 | <RenderWaterReflections value="FALSE"/> | ||
35 | <!--NO SHADERS--> | ||
36 | <VertexShaderEnable value="FALSE"/> | ||
37 | <!--NO SHADERS--> | ||
38 | <WindLightUseAtmosShaders value="FALSE"/> | ||
39 | </settings> | ||
diff --git a/linden/indra/newview/app_settings/mid_graphics.xml b/linden/indra/newview/app_settings/mid_graphics.xml deleted file mode 100644 index 12da77d..0000000 --- a/linden/indra/newview/app_settings/mid_graphics.xml +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
2 | <settings version = "101"> | ||
3 | <!--NO SHADERS--> | ||
4 | <RenderAvatarCloth value="FALSE"/> | ||
5 | <!--Default for now--> | ||
6 | <RenderAvatarLODFactor value="0.5"/> | ||
7 | <!--NO SHADERS--> | ||
8 | <RenderAvatarVP value="TRUE"/> | ||
9 | <!--Short Range--> | ||
10 | <RenderFarClip value="96"/> | ||
11 | <!--Default for now--> | ||
12 | <RenderFlexTimeFactor value="1"/> | ||
13 | <!--256... but they don't use this--> | ||
14 | <RenderGlowResolutionPow value="8"/> | ||
15 | <!--Sun/Moon only--> | ||
16 | <RenderLightingDetail value="1"/> | ||
17 | <!--Low number--> | ||
18 | <RenderMaxPartCount value="2048"/> | ||
19 | <!--bump okay--> | ||
20 | <RenderObjectBump value="TRUE"/> | ||
21 | <!--NO SHADERS--> | ||
22 | <RenderReflectionDetail value="0"/> | ||
23 | <!--Simple--> | ||
24 | <RenderTerrainDetail value="1"/> | ||
25 | <!--Default for now--> | ||
26 | <RenderTerrainLODFactor value="1.0"/> | ||
27 | <!--Default for now--> | ||
28 | <RenderTreeLODFactor value="0.5"/> | ||
29 | <!--Try Impostors--> | ||
30 | <RenderUseImpostors value="TRUE"/> | ||
31 | <!--Default for now--> | ||
32 | <RenderVolumeLODFactor value="1.125"/> | ||
33 | <!--NO SHADERS--> | ||
34 | <RenderWaterReflections value="FALSE"/> | ||
35 | <!--NO SHADERS--> | ||
36 | <VertexShaderEnable value="TRUE"/> | ||
37 | <!--NO SHADERS--> | ||
38 | <WindLightUseAtmosShaders value="FALSE"/> | ||
39 | </settings> | ||
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 2ec4832..1451aef 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -2,6 +2,123 @@ | |||
2 | <llsd> | 2 | <llsd> |
3 | <map> | 3 | <map> |
4 | 4 | ||
5 | <!-- begin RC hacking --> | ||
6 | <key>PrimMediaMasterEnabled</key> | ||
7 | <map> | ||
8 | <key>Comment</key> | ||
9 | <string>Whether or not Media on a Prim is enabled.</string> | ||
10 | <key>Persist</key> | ||
11 | <integer>1</integer> | ||
12 | <key>Type</key> | ||
13 | <string>Boolean</string> | ||
14 | <key>Value</key> | ||
15 | <integer>1</integer> | ||
16 | </map> | ||
17 | <key>PrimMediaMaxRetries</key> | ||
18 | <map> | ||
19 | <key>Comment</key> | ||
20 | <string>Maximum number of retries for media queries.</string> | ||
21 | <key>Persist</key> | ||
22 | <integer>1</integer> | ||
23 | <key>Type</key> | ||
24 | <string>U32</string> | ||
25 | <key>Value</key> | ||
26 | <integer>4</integer> | ||
27 | </map> | ||
28 | <key>PrimMediaRequestQueueDelay</key> | ||
29 | <map> | ||
30 | <key>Comment</key> | ||
31 | <string>Timer delay for fetching media from the queue (in seconds).</string> | ||
32 | <key>Persist</key> | ||
33 | <integer>1</integer> | ||
34 | <key>Type</key> | ||
35 | <string>F32</string> | ||
36 | <key>Value</key> | ||
37 | <real>1.0</real> | ||
38 | </map> | ||
39 | <key>PrimMediaRetryTimerDelay</key> | ||
40 | <map> | ||
41 | <key>Comment</key> | ||
42 | <string>Timer delay for retrying on media queries (in seconds).</string> | ||
43 | <key>Persist</key> | ||
44 | <integer>1</integer> | ||
45 | <key>Type</key> | ||
46 | <string>F32</string> | ||
47 | <key>Value</key> | ||
48 | <real>5.0</real> | ||
49 | </map> | ||
50 | <key>PrimMediaMaxSortedQueueSize</key> | ||
51 | <map> | ||
52 | <key>Comment</key> | ||
53 | <string>Maximum number of objects the viewer will load media for initially</string> | ||
54 | <key>Persist</key> | ||
55 | <integer>1</integer> | ||
56 | <key>Type</key> | ||
57 | <string>U32</string> | ||
58 | <key>Value</key> | ||
59 | <integer>100000</integer> | ||
60 | </map> | ||
61 | <key>PrimMediaMaxRoundRobinQueueSize</key> | ||
62 | <map> | ||
63 | <key>Comment</key> | ||
64 | <string>Maximum number of objects the viewer will continuously update media for</string> | ||
65 | <key>Persist</key> | ||
66 | <integer>1</integer> | ||
67 | <key>Type</key> | ||
68 | <string>U32</string> | ||
69 | <key>Value</key> | ||
70 | <integer>100000</integer> | ||
71 | </map> | ||
72 | <key>ShowMOAPRadar</key> | ||
73 | <map> | ||
74 | <key>Comment</key> | ||
75 | <string>Show the MOAP radar</string> | ||
76 | <key>Persist</key> | ||
77 | <integer>1</integer> | ||
78 | <key>Type</key> | ||
79 | <string>Boolean</string> | ||
80 | <key>Value</key> | ||
81 | <integer>0</integer> | ||
82 | </map> | ||
83 | <key>FloaterMOAPRadarRect</key> | ||
84 | <map> | ||
85 | <key>Comment</key> | ||
86 | <string>Rectangle for MOAP Radar</string> | ||
87 | <key>Persist</key> | ||
88 | <integer>1</integer> | ||
89 | <key>Type</key> | ||
90 | <string>Rect</string> | ||
91 | <key>Value</key> | ||
92 | <array> | ||
93 | <integer>0</integer> | ||
94 | <integer>400</integer> | ||
95 | <integer>200</integer> | ||
96 | <integer>0</integer> | ||
97 | </array> | ||
98 | </map> | ||
99 | <key>MOAPRadarKeepOpen</key> | ||
100 | <map> | ||
101 | <key>Comment</key> | ||
102 | <string>Keeps MOAP radar updates running in background</string> | ||
103 | <key>Persist</key> | ||
104 | <integer>1</integer> | ||
105 | <key>Type</key> | ||
106 | <string>Boolean</string> | ||
107 | <key>Value</key> | ||
108 | <integer>0</integer> | ||
109 | </map> | ||
110 | <key>MOAPRadarUpdateRate</key> | ||
111 | <map> | ||
112 | <key>Comment</key> | ||
113 | <string>MOAP Radar update rate (0 = high, 1 = medium, 2 = low)</string> | ||
114 | <key>Persist</key> | ||
115 | <integer>1</integer> | ||
116 | <key>Type</key> | ||
117 | <string>U32</string> | ||
118 | <key>Value</key> | ||
119 | <integer>1</integer> | ||
120 | </map> | ||
121 | |||
5 | <!-- BEGIN IMPRUDENCE-SPECIFIC SETTINGS --> | 122 | <!-- BEGIN IMPRUDENCE-SPECIFIC SETTINGS --> |
6 | 123 | ||
7 | <!-- begin Aurora-specific settings --> | 124 | <!-- begin Aurora-specific settings --> |
@@ -14645,6 +14762,17 @@ | |||
14645 | <real>1.0</real> | 14762 | <real>1.0</real> |
14646 | </array> | 14763 | </array> |
14647 | </map> | 14764 | </map> |
14765 | <key>moapbeacon</key> | ||
14766 | <map> | ||
14767 | <key>Comment</key> | ||
14768 | <string>Beacon / Highlight MOAP sources</string> | ||
14769 | <key>Persist</key> | ||
14770 | <integer>1</integer> | ||
14771 | <key>Type</key> | ||
14772 | <string>Boolean</string> | ||
14773 | <key>Value</key> | ||
14774 | <integer>0</integer> | ||
14775 | </map> | ||
14648 | <key>particlesbeacon</key> | 14776 | <key>particlesbeacon</key> |
14649 | <map> | 14777 | <map> |
14650 | <key>Comment</key> | 14778 | <key>Comment</key> |
diff --git a/linden/indra/newview/app_settings/ultra_graphics.xml b/linden/indra/newview/app_settings/ultra_graphics.xml deleted file mode 100644 index f16ec6c..0000000 --- a/linden/indra/newview/app_settings/ultra_graphics.xml +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
2 | <settings version = "101"> | ||
3 | <!--NO SHADERS--> | ||
4 | <RenderAvatarCloth value="TRUE"/> | ||
5 | <!--Default for now--> | ||
6 | <RenderAvatarLODFactor value="1.0"/> | ||
7 | <!--NO SHADERS--> | ||
8 | <RenderAvatarVP value="TRUE"/> | ||
9 | <!--Short Range--> | ||
10 | <RenderFarClip value="256"/> | ||
11 | <!--Default for now--> | ||
12 | <RenderFlexTimeFactor value="1"/> | ||
13 | <!--256... but they don't use this--> | ||
14 | <RenderGlowResolutionPow value="9"/> | ||
15 | <!--Sun/Moon only--> | ||
16 | <RenderLightingDetail value="1"/> | ||
17 | <!--Low number--> | ||
18 | <RenderMaxPartCount value="4096"/> | ||
19 | <!--bump okay--> | ||
20 | <RenderObjectBump value="TRUE"/> | ||
21 | <!--NO SHADERS--> | ||
22 | <RenderReflectionDetail value="3"/> | ||
23 | <!--Simple--> | ||
24 | <RenderTerrainDetail value="1"/> | ||
25 | <!--Default for now--> | ||
26 | <RenderTerrainLODFactor value="2.0"/> | ||
27 | <!--Default for now--> | ||
28 | <RenderTreeLODFactor value="1.0"/> | ||
29 | <!--Try Impostors--> | ||
30 | <RenderUseImpostors value="TRUE"/> | ||
31 | <!--Default for now--> | ||
32 | <RenderVolumeLODFactor value="2.0"/> | ||
33 | <!--NO SHADERS--> | ||
34 | <RenderWaterReflections value="TRUE"/> | ||
35 | <!--NO SHADERS--> | ||
36 | <VertexShaderEnable value="TRUE"/> | ||
37 | <!--NO SHADERS--> | ||
38 | <WindLightUseAtmosShaders value="TRUE"/> | ||
39 | </settings> | ||
diff --git a/linden/indra/newview/chatbar_as_cmdline.cpp b/linden/indra/newview/chatbar_as_cmdline.cpp index 9777114..e1314f7 100644 --- a/linden/indra/newview/chatbar_as_cmdline.cpp +++ b/linden/indra/newview/chatbar_as_cmdline.cpp | |||
@@ -302,7 +302,6 @@ bool cmd_line_chat(std::string revised_text, EChatType type) | |||
302 | { | 302 | { |
303 | if (i >> z) | 303 | if (i >> z) |
304 | { | 304 | { |
305 | LLVector3 agentPos = gAgent.getPositionAgent(); | ||
306 | LLViewerRegion* agentRegionp = gAgent.getRegion(); | 305 | LLViewerRegion* agentRegionp = gAgent.getRegion(); |
307 | if(agentRegionp) | 306 | if(agentRegionp) |
308 | { | 307 | { |
diff --git a/linden/indra/newview/featuretable.txt b/linden/indra/newview/featuretable.txt index a31cd71..6da62f0 100644 --- a/linden/indra/newview/featuretable.txt +++ b/linden/indra/newview/featuretable.txt | |||
@@ -28,7 +28,7 @@ RenderAvatarCloth 1 1 | |||
28 | RenderAvatarLODFactor 1 1.0 | 28 | RenderAvatarLODFactor 1 1.0 |
29 | RenderAvatarVP 1 1 | 29 | RenderAvatarVP 1 1 |
30 | RenderCubeMap 1 1 | 30 | RenderCubeMap 1 1 |
31 | RenderFarClip 1 256 | 31 | RenderFarClip 1 1024 |
32 | RenderFlexTimeFactor 1 1.0 | 32 | RenderFlexTimeFactor 1 1.0 |
33 | RenderFogRatio 1 4.0 | 33 | RenderFogRatio 1 4.0 |
34 | RenderGamma 1 0 | 34 | RenderGamma 1 0 |
@@ -41,10 +41,10 @@ RenderObjectBump 1 1 | |||
41 | RenderReflectionDetail 1 3 | 41 | RenderReflectionDetail 1 3 |
42 | RenderTerrainDetail 1 1 | 42 | RenderTerrainDetail 1 1 |
43 | RenderTerrainLODFactor 1 2.0 | 43 | RenderTerrainLODFactor 1 2.0 |
44 | RenderTreeLODFactor 1 1.0 | 44 | RenderTreeLODFactor 1 12.0 |
45 | RenderUseImpostors 1 1 | 45 | RenderUseImpostors 1 1 |
46 | RenderVBOEnable 1 1 | 46 | RenderVBOEnable 1 1 |
47 | RenderVolumeLODFactor 1 2.0 | 47 | RenderVolumeLODFactor 1 4.0 |
48 | RenderWaterReflections 1 1 | 48 | RenderWaterReflections 1 1 |
49 | UseStartScreen 1 1 | 49 | UseStartScreen 1 1 |
50 | UseOcclusion 1 1 | 50 | UseOcclusion 1 1 |
@@ -54,8 +54,6 @@ WLSkyDetail 1 128 | |||
54 | Disregard128DefaultDrawDistance 1 1 | 54 | Disregard128DefaultDrawDistance 1 1 |
55 | Disregard96DefaultDrawDistance 1 1 | 55 | Disregard96DefaultDrawDistance 1 1 |
56 | RenderTextureMemoryMultiple 1 1.0 | 56 | RenderTextureMemoryMultiple 1 1.0 |
57 | RenderShaderLightingMaxLevel 1 3 | ||
58 | |||
59 | 57 | ||
60 | // | 58 | // |
61 | // Low Graphics Settings | 59 | // Low Graphics Settings |
@@ -74,7 +72,7 @@ RenderObjectBump 1 0 | |||
74 | RenderReflectionDetail 1 0 | 72 | RenderReflectionDetail 1 0 |
75 | RenderTerrainDetail 1 0 | 73 | RenderTerrainDetail 1 0 |
76 | RenderTerrainLODFactor 1 1 | 74 | RenderTerrainLODFactor 1 1 |
77 | RenderTreeLODFactor 1 0.5 | 75 | RenderTreeLODFactor 1 2.0 |
78 | RenderUseImpostors 1 1 | 76 | RenderUseImpostors 1 1 |
79 | RenderVolumeLODFactor 1 1.125 | 77 | RenderVolumeLODFactor 1 1.125 |
80 | RenderWaterReflections 1 0 | 78 | RenderWaterReflections 1 0 |
@@ -90,7 +88,7 @@ RenderAnisotropic 1 0 | |||
90 | RenderAvatarCloth 1 0 | 88 | RenderAvatarCloth 1 0 |
91 | RenderAvatarLODFactor 1 0.5 | 89 | RenderAvatarLODFactor 1 0.5 |
92 | RenderAvatarVP 1 1 | 90 | RenderAvatarVP 1 1 |
93 | RenderFarClip 1 96 | 91 | RenderFarClip 1 128 |
94 | RenderFlexTimeFactor 1 1.0 | 92 | RenderFlexTimeFactor 1 1.0 |
95 | RenderGlowResolutionPow 1 8 | 93 | RenderGlowResolutionPow 1 8 |
96 | RenderLightingDetail 1 1 | 94 | RenderLightingDetail 1 1 |
@@ -99,7 +97,7 @@ RenderObjectBump 1 1 | |||
99 | RenderReflectionDetail 1 0 | 97 | RenderReflectionDetail 1 0 |
100 | RenderTerrainDetail 1 1 | 98 | RenderTerrainDetail 1 1 |
101 | RenderTerrainLODFactor 1 1.0 | 99 | RenderTerrainLODFactor 1 1.0 |
102 | RenderTreeLODFactor 1 0.5 | 100 | RenderTreeLODFactor 1 4.0 |
103 | RenderUseImpostors 1 1 | 101 | RenderUseImpostors 1 1 |
104 | RenderVolumeLODFactor 1 1.125 | 102 | RenderVolumeLODFactor 1 1.125 |
105 | RenderWaterReflections 1 0 | 103 | RenderWaterReflections 1 0 |
@@ -115,7 +113,7 @@ RenderAnisotropic 1 1 | |||
115 | RenderAvatarCloth 1 0 | 113 | RenderAvatarCloth 1 0 |
116 | RenderAvatarLODFactor 1 1.0 | 114 | RenderAvatarLODFactor 1 1.0 |
117 | RenderAvatarVP 1 1 | 115 | RenderAvatarVP 1 1 |
118 | RenderFarClip 1 128 | 116 | RenderFarClip 1 256 |
119 | RenderFlexTimeFactor 1 1.0 | 117 | RenderFlexTimeFactor 1 1.0 |
120 | RenderGlowResolutionPow 1 9 | 118 | RenderGlowResolutionPow 1 9 |
121 | RenderLightingDetail 1 1 | 119 | RenderLightingDetail 1 1 |
@@ -124,9 +122,9 @@ RenderObjectBump 1 1 | |||
124 | RenderReflectionDetail 1 2 | 122 | RenderReflectionDetail 1 2 |
125 | RenderTerrainDetail 1 1 | 123 | RenderTerrainDetail 1 1 |
126 | RenderTerrainLODFactor 1 2.0 | 124 | RenderTerrainLODFactor 1 2.0 |
127 | RenderTreeLODFactor 1 0.5 | 125 | RenderTreeLODFactor 1 8.0 |
128 | RenderUseImpostors 1 1 | 126 | RenderUseImpostors 1 1 |
129 | RenderVolumeLODFactor 1 1.125 | 127 | RenderVolumeLODFactor 1 2.0 |
130 | RenderWaterReflections 1 0 | 128 | RenderWaterReflections 1 0 |
131 | VertexShaderEnable 1 1 | 129 | VertexShaderEnable 1 1 |
132 | WindLightUseAtmosShaders 1 1 | 130 | WindLightUseAtmosShaders 1 1 |
@@ -140,7 +138,7 @@ RenderAnisotropic 1 1 | |||
140 | RenderAvatarCloth 1 1 | 138 | RenderAvatarCloth 1 1 |
141 | RenderAvatarLODFactor 1 1.0 | 139 | RenderAvatarLODFactor 1 1.0 |
142 | RenderAvatarVP 1 1 | 140 | RenderAvatarVP 1 1 |
143 | RenderFarClip 1 256 | 141 | RenderFarClip 1 1024 |
144 | RenderFlexTimeFactor 1 1.0 | 142 | RenderFlexTimeFactor 1 1.0 |
145 | RenderGlowResolutionPow 1 9 | 143 | RenderGlowResolutionPow 1 9 |
146 | RenderLightingDetail 1 1 | 144 | RenderLightingDetail 1 1 |
@@ -149,9 +147,9 @@ RenderObjectBump 1 1 | |||
149 | RenderReflectionDetail 1 3 | 147 | RenderReflectionDetail 1 3 |
150 | RenderTerrainDetail 1 1 | 148 | RenderTerrainDetail 1 1 |
151 | RenderTerrainLODFactor 1 2.0 | 149 | RenderTerrainLODFactor 1 2.0 |
152 | RenderTreeLODFactor 1 1.0 | 150 | RenderTreeLODFactor 1 12.0 |
153 | RenderUseImpostors 1 1 | 151 | RenderUseImpostors 1 1 |
154 | RenderVolumeLODFactor 1 2.0 | 152 | RenderVolumeLODFactor 1 4.0 |
155 | RenderWaterReflections 1 1 | 153 | RenderWaterReflections 1 1 |
156 | VertexShaderEnable 1 1 | 154 | VertexShaderEnable 1 1 |
157 | WindLightUseAtmosShaders 1 1 | 155 | WindLightUseAtmosShaders 1 1 |
diff --git a/linden/indra/newview/featuretable_linux.txt b/linden/indra/newview/featuretable_linux.txt index 57d712e..c5c685c 100644 --- a/linden/indra/newview/featuretable_linux.txt +++ b/linden/indra/newview/featuretable_linux.txt | |||
@@ -28,7 +28,7 @@ RenderAvatarCloth 1 1 | |||
28 | RenderAvatarLODFactor 1 1.0 | 28 | RenderAvatarLODFactor 1 1.0 |
29 | RenderAvatarVP 1 1 | 29 | RenderAvatarVP 1 1 |
30 | RenderCubeMap 1 1 | 30 | RenderCubeMap 1 1 |
31 | RenderFarClip 1 256 | 31 | RenderFarClip 1 1024 |
32 | RenderFlexTimeFactor 1 1.0 | 32 | RenderFlexTimeFactor 1 1.0 |
33 | RenderFogRatio 1 4.0 | 33 | RenderFogRatio 1 4.0 |
34 | RenderGamma 1 0 | 34 | RenderGamma 1 0 |
@@ -41,10 +41,10 @@ RenderObjectBump 1 1 | |||
41 | RenderReflectionDetail 1 3 | 41 | RenderReflectionDetail 1 3 |
42 | RenderTerrainDetail 1 1 | 42 | RenderTerrainDetail 1 1 |
43 | RenderTerrainLODFactor 1 2.0 | 43 | RenderTerrainLODFactor 1 2.0 |
44 | RenderTreeLODFactor 1 1.0 | 44 | RenderTreeLODFactor 1 12.0 |
45 | RenderUseImpostors 1 1 | 45 | RenderUseImpostors 1 1 |
46 | RenderVBOEnable 1 1 | 46 | RenderVBOEnable 1 1 |
47 | RenderVolumeLODFactor 1 2.0 | 47 | RenderVolumeLODFactor 1 4.0 |
48 | RenderWaterReflections 1 1 | 48 | RenderWaterReflections 1 1 |
49 | UseStartScreen 1 1 | 49 | UseStartScreen 1 1 |
50 | UseOcclusion 1 1 | 50 | UseOcclusion 1 1 |
@@ -72,7 +72,7 @@ RenderObjectBump 1 0 | |||
72 | RenderReflectionDetail 1 0 | 72 | RenderReflectionDetail 1 0 |
73 | RenderTerrainDetail 1 0 | 73 | RenderTerrainDetail 1 0 |
74 | RenderTerrainLODFactor 1 1 | 74 | RenderTerrainLODFactor 1 1 |
75 | RenderTreeLODFactor 1 0.5 | 75 | RenderTreeLODFactor 1 2.0 |
76 | RenderUseImpostors 1 1 | 76 | RenderUseImpostors 1 1 |
77 | RenderVolumeLODFactor 1 1.125 | 77 | RenderVolumeLODFactor 1 1.125 |
78 | RenderWaterReflections 1 0 | 78 | RenderWaterReflections 1 0 |
@@ -88,7 +88,7 @@ RenderAnisotropic 1 0 | |||
88 | RenderAvatarCloth 1 0 | 88 | RenderAvatarCloth 1 0 |
89 | RenderAvatarLODFactor 1 0.5 | 89 | RenderAvatarLODFactor 1 0.5 |
90 | RenderAvatarVP 1 1 | 90 | RenderAvatarVP 1 1 |
91 | RenderFarClip 1 96 | 91 | RenderFarClip 1 128 |
92 | RenderFlexTimeFactor 1 1.0 | 92 | RenderFlexTimeFactor 1 1.0 |
93 | RenderGlowResolutionPow 1 8 | 93 | RenderGlowResolutionPow 1 8 |
94 | RenderLightingDetail 1 1 | 94 | RenderLightingDetail 1 1 |
@@ -97,7 +97,7 @@ RenderObjectBump 1 1 | |||
97 | RenderReflectionDetail 1 0 | 97 | RenderReflectionDetail 1 0 |
98 | RenderTerrainDetail 1 1 | 98 | RenderTerrainDetail 1 1 |
99 | RenderTerrainLODFactor 1 1.0 | 99 | RenderTerrainLODFactor 1 1.0 |
100 | RenderTreeLODFactor 1 0.5 | 100 | RenderTreeLODFactor 1 4.0 |
101 | RenderUseImpostors 1 1 | 101 | RenderUseImpostors 1 1 |
102 | RenderVolumeLODFactor 1 1.125 | 102 | RenderVolumeLODFactor 1 1.125 |
103 | RenderWaterReflections 1 0 | 103 | RenderWaterReflections 1 0 |
@@ -113,7 +113,7 @@ RenderAnisotropic 1 1 | |||
113 | RenderAvatarCloth 1 0 | 113 | RenderAvatarCloth 1 0 |
114 | RenderAvatarLODFactor 1 1.0 | 114 | RenderAvatarLODFactor 1 1.0 |
115 | RenderAvatarVP 1 1 | 115 | RenderAvatarVP 1 1 |
116 | RenderFarClip 1 128 | 116 | RenderFarClip 1 256 |
117 | RenderFlexTimeFactor 1 1.0 | 117 | RenderFlexTimeFactor 1 1.0 |
118 | RenderGlowResolutionPow 1 9 | 118 | RenderGlowResolutionPow 1 9 |
119 | RenderLightingDetail 1 1 | 119 | RenderLightingDetail 1 1 |
@@ -122,9 +122,9 @@ RenderObjectBump 1 1 | |||
122 | RenderReflectionDetail 1 2 | 122 | RenderReflectionDetail 1 2 |
123 | RenderTerrainDetail 1 1 | 123 | RenderTerrainDetail 1 1 |
124 | RenderTerrainLODFactor 1 2.0 | 124 | RenderTerrainLODFactor 1 2.0 |
125 | RenderTreeLODFactor 1 0.5 | 125 | RenderTreeLODFactor 1 8.0 |
126 | RenderUseImpostors 1 1 | 126 | RenderUseImpostors 1 1 |
127 | RenderVolumeLODFactor 1 1.125 | 127 | RenderVolumeLODFactor 1 2.0 |
128 | RenderWaterReflections 1 0 | 128 | RenderWaterReflections 1 0 |
129 | VertexShaderEnable 1 1 | 129 | VertexShaderEnable 1 1 |
130 | WindLightUseAtmosShaders 1 1 | 130 | WindLightUseAtmosShaders 1 1 |
@@ -138,7 +138,7 @@ RenderAnisotropic 1 1 | |||
138 | RenderAvatarCloth 1 1 | 138 | RenderAvatarCloth 1 1 |
139 | RenderAvatarLODFactor 1 1.0 | 139 | RenderAvatarLODFactor 1 1.0 |
140 | RenderAvatarVP 1 1 | 140 | RenderAvatarVP 1 1 |
141 | RenderFarClip 1 256 | 141 | RenderFarClip 1 1024 |
142 | RenderFlexTimeFactor 1 1.0 | 142 | RenderFlexTimeFactor 1 1.0 |
143 | RenderGlowResolutionPow 1 9 | 143 | RenderGlowResolutionPow 1 9 |
144 | RenderLightingDetail 1 1 | 144 | RenderLightingDetail 1 1 |
@@ -147,9 +147,9 @@ RenderObjectBump 1 1 | |||
147 | RenderReflectionDetail 1 3 | 147 | RenderReflectionDetail 1 3 |
148 | RenderTerrainDetail 1 1 | 148 | RenderTerrainDetail 1 1 |
149 | RenderTerrainLODFactor 1 2.0 | 149 | RenderTerrainLODFactor 1 2.0 |
150 | RenderTreeLODFactor 1 1.0 | 150 | RenderTreeLODFactor 1 12.0 |
151 | RenderUseImpostors 1 1 | 151 | RenderUseImpostors 1 1 |
152 | RenderVolumeLODFactor 1 2.0 | 152 | RenderVolumeLODFactor 1 4.0 |
153 | RenderWaterReflections 1 1 | 153 | RenderWaterReflections 1 1 |
154 | VertexShaderEnable 1 1 | 154 | VertexShaderEnable 1 1 |
155 | WindLightUseAtmosShaders 1 1 | 155 | WindLightUseAtmosShaders 1 1 |
diff --git a/linden/indra/newview/featuretable_mac.txt b/linden/indra/newview/featuretable_mac.txt index 15974c0..dec533b 100644 --- a/linden/indra/newview/featuretable_mac.txt +++ b/linden/indra/newview/featuretable_mac.txt | |||
@@ -23,39 +23,37 @@ version 20 | |||
23 | // NOTE: All settings are set to the MIN of applied values, including 'all'! | 23 | // NOTE: All settings are set to the MIN of applied values, including 'all'! |
24 | // | 24 | // |
25 | list all | 25 | list all |
26 | RenderAnisotropic 1 0 | 26 | RenderAnisotropic 1 0 |
27 | RenderAvatarCloth 0 0 | 27 | RenderAvatarCloth 1 1 |
28 | RenderAvatarLODFactor 1 1.0 | 28 | RenderAvatarLODFactor 1 1.0 |
29 | RenderAvatarVP 1 0 | 29 | RenderAvatarVP 1 1 |
30 | RenderCubeMap 1 1 | 30 | RenderCubeMap 1 1 |
31 | RenderFarClip 1 256 | 31 | RenderFarClip 1 1024 |
32 | RenderFlexTimeFactor 1 1.0 | 32 | RenderFlexTimeFactor 1 1.0 |
33 | RenderFogRatio 1 4.0 | 33 | RenderFogRatio 1 4.0 |
34 | RenderGamma 1 0 | 34 | RenderGamma 1 0 |
35 | RenderGlowResolutionPow 1 9 | 35 | RenderGlowResolutionPow 1 9 |
36 | RenderGround 1 1 | 36 | RenderGround 1 1 |
37 | RenderLightingDetail 1 1 | 37 | RenderLightingDetail 1 1 |
38 | RenderMaxPartCount 1 8192 | 38 | RenderMaxPartCount 1 8192 |
39 | RenderNightBrightness 1 1.0 | 39 | RenderNightBrightness 1 1.0 |
40 | RenderObjectBump 1 1 | 40 | RenderObjectBump 1 1 |
41 | RenderReflectionDetail 1 3 | 41 | RenderReflectionDetail 1 3 |
42 | RenderTerrainDetail 1 1 | 42 | RenderTerrainDetail 1 1 |
43 | RenderTerrainLODFactor 1 2.0 | 43 | RenderTerrainLODFactor 1 2.0 |
44 | RenderTreeLODFactor 1 1.0 | 44 | RenderTreeLODFactor 1 12.0 |
45 | RenderUseImpostors 1 1 | 45 | RenderUseImpostors 1 1 |
46 | RenderVBOEnable 1 1 | 46 | RenderVBOEnable 1 1 |
47 | RenderVolumeLODFactor 1 2.0 | 47 | RenderVolumeLODFactor 1 4.0 |
48 | RenderWaterReflections 1 1 | 48 | RenderWaterReflections 1 1 |
49 | UseOcclusion 1 1 | 49 | UseStartScreen 1 1 |
50 | VertexShaderEnable 1 1 | 50 | UseOcclusion 1 1 |
51 | WindLightUseAtmosShaders 1 1 | 51 | VertexShaderEnable 1 1 |
52 | WLSkyDetail 1 128 | 52 | WindLightUseAtmosShaders 1 1 |
53 | RenderUseCleverUI 1 1 | 53 | WLSkyDetail 1 128 |
54 | Disregard128DefaultDrawDistance 1 1 | ||
55 | Disregard96DefaultDrawDistance 1 1 | ||
56 | RenderTextureMemoryMultiple 1 0.5 | ||
57 | Disregard128DefaultDrawDistance 1 1 | 54 | Disregard128DefaultDrawDistance 1 1 |
58 | Disregard96DefaultDrawDistance 1 1 | 55 | Disregard96DefaultDrawDistance 1 1 |
56 | RenderTextureMemoryMultiple 1 1.0 | ||
59 | 57 | ||
60 | // | 58 | // |
61 | // Low Graphics Settings | 59 | // Low Graphics Settings |
@@ -74,7 +72,7 @@ RenderObjectBump 1 0 | |||
74 | RenderReflectionDetail 1 0 | 72 | RenderReflectionDetail 1 0 |
75 | RenderTerrainDetail 1 0 | 73 | RenderTerrainDetail 1 0 |
76 | RenderTerrainLODFactor 1 1 | 74 | RenderTerrainLODFactor 1 1 |
77 | RenderTreeLODFactor 1 0.5 | 75 | RenderTreeLODFactor 1 2.0 |
78 | RenderUseImpostors 1 1 | 76 | RenderUseImpostors 1 1 |
79 | RenderVolumeLODFactor 1 1.125 | 77 | RenderVolumeLODFactor 1 1.125 |
80 | RenderWaterReflections 1 0 | 78 | RenderWaterReflections 1 0 |
@@ -90,7 +88,7 @@ RenderAnisotropic 1 0 | |||
90 | RenderAvatarCloth 1 0 | 88 | RenderAvatarCloth 1 0 |
91 | RenderAvatarLODFactor 1 0.5 | 89 | RenderAvatarLODFactor 1 0.5 |
92 | RenderAvatarVP 1 1 | 90 | RenderAvatarVP 1 1 |
93 | RenderFarClip 1 96 | 91 | RenderFarClip 1 128 |
94 | RenderFlexTimeFactor 1 1.0 | 92 | RenderFlexTimeFactor 1 1.0 |
95 | RenderGlowResolutionPow 1 8 | 93 | RenderGlowResolutionPow 1 8 |
96 | RenderLightingDetail 1 1 | 94 | RenderLightingDetail 1 1 |
@@ -99,7 +97,7 @@ RenderObjectBump 1 1 | |||
99 | RenderReflectionDetail 1 0 | 97 | RenderReflectionDetail 1 0 |
100 | RenderTerrainDetail 1 1 | 98 | RenderTerrainDetail 1 1 |
101 | RenderTerrainLODFactor 1 1.0 | 99 | RenderTerrainLODFactor 1 1.0 |
102 | RenderTreeLODFactor 1 0.5 | 100 | RenderTreeLODFactor 1 4.0 |
103 | RenderUseImpostors 1 1 | 101 | RenderUseImpostors 1 1 |
104 | RenderVolumeLODFactor 1 1.125 | 102 | RenderVolumeLODFactor 1 1.125 |
105 | RenderWaterReflections 1 0 | 103 | RenderWaterReflections 1 0 |
@@ -115,7 +113,7 @@ RenderAnisotropic 1 1 | |||
115 | RenderAvatarCloth 1 0 | 113 | RenderAvatarCloth 1 0 |
116 | RenderAvatarLODFactor 1 1.0 | 114 | RenderAvatarLODFactor 1 1.0 |
117 | RenderAvatarVP 1 1 | 115 | RenderAvatarVP 1 1 |
118 | RenderFarClip 1 128 | 116 | RenderFarClip 1 256 |
119 | RenderFlexTimeFactor 1 1.0 | 117 | RenderFlexTimeFactor 1 1.0 |
120 | RenderGlowResolutionPow 1 9 | 118 | RenderGlowResolutionPow 1 9 |
121 | RenderLightingDetail 1 1 | 119 | RenderLightingDetail 1 1 |
@@ -124,9 +122,9 @@ RenderObjectBump 1 1 | |||
124 | RenderReflectionDetail 1 2 | 122 | RenderReflectionDetail 1 2 |
125 | RenderTerrainDetail 1 1 | 123 | RenderTerrainDetail 1 1 |
126 | RenderTerrainLODFactor 1 2.0 | 124 | RenderTerrainLODFactor 1 2.0 |
127 | RenderTreeLODFactor 1 0.5 | 125 | RenderTreeLODFactor 1 8.0 |
128 | RenderUseImpostors 1 1 | 126 | RenderUseImpostors 1 1 |
129 | RenderVolumeLODFactor 1 1.125 | 127 | RenderVolumeLODFactor 1 2.0 |
130 | RenderWaterReflections 1 0 | 128 | RenderWaterReflections 1 0 |
131 | VertexShaderEnable 1 1 | 129 | VertexShaderEnable 1 1 |
132 | WindLightUseAtmosShaders 1 1 | 130 | WindLightUseAtmosShaders 1 1 |
@@ -140,7 +138,7 @@ RenderAnisotropic 1 1 | |||
140 | RenderAvatarCloth 1 1 | 138 | RenderAvatarCloth 1 1 |
141 | RenderAvatarLODFactor 1 1.0 | 139 | RenderAvatarLODFactor 1 1.0 |
142 | RenderAvatarVP 1 1 | 140 | RenderAvatarVP 1 1 |
143 | RenderFarClip 1 256 | 141 | RenderFarClip 1 1024 |
144 | RenderFlexTimeFactor 1 1.0 | 142 | RenderFlexTimeFactor 1 1.0 |
145 | RenderGlowResolutionPow 1 9 | 143 | RenderGlowResolutionPow 1 9 |
146 | RenderLightingDetail 1 1 | 144 | RenderLightingDetail 1 1 |
@@ -149,9 +147,9 @@ RenderObjectBump 1 1 | |||
149 | RenderReflectionDetail 1 3 | 147 | RenderReflectionDetail 1 3 |
150 | RenderTerrainDetail 1 1 | 148 | RenderTerrainDetail 1 1 |
151 | RenderTerrainLODFactor 1 2.0 | 149 | RenderTerrainLODFactor 1 2.0 |
152 | RenderTreeLODFactor 1 1.0 | 150 | RenderTreeLODFactor 1 12.0 |
153 | RenderUseImpostors 1 1 | 151 | RenderUseImpostors 1 1 |
154 | RenderVolumeLODFactor 1 2.0 | 152 | RenderVolumeLODFactor 1 4.0 |
155 | RenderWaterReflections 1 1 | 153 | RenderWaterReflections 1 1 |
156 | VertexShaderEnable 1 1 | 154 | VertexShaderEnable 1 1 |
157 | WindLightUseAtmosShaders 1 1 | 155 | WindLightUseAtmosShaders 1 1 |
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss index c551919..a396381 100644 --- a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss +++ b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss | |||
@@ -9,15 +9,15 @@ | |||
9 | ; These will change | 9 | ; These will change |
10 | AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} | 10 | AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} |
11 | AppName=Imprudence Viewer Experimental | 11 | AppName=Imprudence Viewer Experimental |
12 | AppVerName=Imprudence Viewer 1.4.0 beta 1.5 windows test release | 12 | AppVerName=Imprudence Viewer 1.4.0.3 exp 1 windows test release |
13 | DefaultDirName={pf}\ImprudenceExperimental | 13 | DefaultDirName={pf}\ImprudenceExperimental |
14 | DefaultGroupName=Imprudence Viewer Experimental | 14 | DefaultGroupName=Imprudence Viewer Experimental |
15 | VersionInfoProductName=Imprudence Viewer Experimental | 15 | VersionInfoProductName=Imprudence Viewer Experimental |
16 | OutputBaseFilename=Imprudence-1.4.0-beta-1.5-windows-test | 16 | OutputBaseFilename=Imprudence-1.4.0.3-exp-1-windows-test |
17 | VersionInfoVersion=1.4.0 | 17 | VersionInfoVersion=1.4.0.3 |
18 | VersionInfoTextVersion=1.4.0 | 18 | VersionInfoTextVersion=1.4.0.3 |
19 | VersionInfoProductVersion=1.4.0 | 19 | VersionInfoProductVersion=1.4.0.3 |
20 | AppVersion=1.4.0 | 20 | AppVersion=1.4.0.3 |
21 | VersionInfoCopyright=2011 | 21 | VersionInfoCopyright=2011 |
22 | 22 | ||
23 | ; These won't change | 23 | ; These won't change |
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_template.iss b/linden/indra/newview/installers/windows/imprudence_installer_template.iss index 558b7ec..6ae437e 100644 --- a/linden/indra/newview/installers/windows/imprudence_installer_template.iss +++ b/linden/indra/newview/installers/windows/imprudence_installer_template.iss | |||
@@ -8,16 +8,16 @@ | |||
8 | ; Imp Experimental ID: 1B3E68BC-13EB-4277-9439-CB5FF9259460 | 8 | ; Imp Experimental ID: 1B3E68BC-13EB-4277-9439-CB5FF9259460 |
9 | 9 | ||
10 | ; These will change | 10 | ; These will change |
11 | AppId={{D7736EE8-AFCE-4735-BBE3-652CDFBBFCA8} | 11 | AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} |
12 | AppName=%%APPNAME%% | 12 | AppName=%%APPNAME%% |
13 | AppVerName=%%APPVERNAME%% | 13 | AppVerName=%%APPVERNAME%% |
14 | DefaultDirName={pf}\Imprudence | 14 | DefaultDirName={pf}\Imprudence |
15 | DefaultGroupName=Imprudence Viewer | 15 | DefaultGroupName=Imprudence Viewer |
16 | VersionInfoProductName=%%APPNAME%% | 16 | VersionInfoProductName=%%APPNAME%% |
17 | OutputBaseFilename=%%INSTALLERFILENAME%% | 17 | OutputBaseFilename=%%INSTALLERFILENAME%% |
18 | VersionInfoVersion=%%VERSION%% | 18 | VersionInfoVersion=%%VERSIONNUMBER%% |
19 | VersionInfoTextVersion=%%VERSION%% | 19 | VersionInfoTextVersion=%%VERSION%% |
20 | VersionInfoProductVersion=%%VERSION%% | 20 | VersionInfoProductVersion=%%VERSIONNUMBER%% |
21 | AppVersion=%%VERSION%% | 21 | AppVersion=%%VERSION%% |
22 | VersionInfoCopyright=2011 | 22 | VersionInfoCopyright=2011 |
23 | 23 | ||
@@ -307,7 +307,7 @@ begin | |||
307 | Success := RegQueryDWordValue(HKLM64, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); | 307 | Success := RegQueryDWordValue(HKLM64, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); |
308 | end else begin | 308 | end else begin |
309 | Success := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); | 309 | Success := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86', 'Installed', V); |
310 | end | 310 | end; |
311 | 311 | ||
312 | if Success = TRUE then begin | 312 | if Success = TRUE then begin |
313 | if V = 1 then begin | 313 | if V = 1 then begin |
diff --git a/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh b/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh index 338fc26..3f2378a 100755 --- a/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh +++ b/linden/indra/newview/linux_tools/register_secondlifeprotocol.sh | |||
@@ -22,13 +22,12 @@ else | |||
22 | fi | 22 | fi |
23 | 23 | ||
24 | # Register handler for KDE-aware apps | 24 | # Register handler for KDE-aware apps |
25 | if [ -z "$KDEHOME" ]; then | 25 | for LLKDECONFIG in kde-config kde4-config; do |
26 | KDEHOME=~/.kde | 26 | if [ `which $LLKDECONFIG` ]; then |
27 | fi | 27 | LLKDEPROTODIR=`$LLKDECONFIG --path services | cut -d ':' -f 1` |
28 | LLKDEPROTDIR=${KDEHOME}/share/services | 28 | if [ -d "$LLKDEPROTODIR" ]; then |
29 | if [ -d "$LLKDEPROTDIR" ]; then | 29 | LLKDEPROTOFILE=${LLKDEPROTODIR}/secondlife.protocol |
30 | LLKDEPROTFILE=${LLKDEPROTDIR}/secondlife.protocol | 30 | cat > ${LLKDEPROTOFILE} <<EOF || echo Warning: Did not register secondlife:// handler with KDE: Could not write ${LLKDEPROTOFILE} |
31 | cat > ${LLKDEPROTFILE} <<EOF || echo Warning: Did not register secondlife:// handler with KDE: Could not write ${LLKDEPROTFILE} | ||
32 | [Protocol] | 31 | [Protocol] |
33 | exec=${HANDLER} '%u' | 32 | exec=${HANDLER} '%u' |
34 | protocol=secondlife | 33 | protocol=secondlife |
@@ -41,6 +40,8 @@ writing=false | |||
41 | makedir=false | 40 | makedir=false |
42 | deleting=false | 41 | deleting=false |
43 | EOF | 42 | EOF |
44 | else | 43 | else |
45 | echo Info: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTDIR does not exist. You can safely ignore this if you are not using KDE. | 44 | echo Warning: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTODIR does not exist. |
46 | fi | 45 | fi |
46 | fi | ||
47 | done | ||
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 09d65d1..54b71eb 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp | |||
@@ -1613,8 +1613,6 @@ BOOL LLAgent::calcCameraMinDistance(F32 &obj_min_distance) | |||
1613 | abs_target_offset.abs(); | 1613 | abs_target_offset.abs(); |
1614 | 1614 | ||
1615 | LLVector3 target_offset_dir = target_offset_origin; | 1615 | LLVector3 target_offset_dir = target_offset_origin; |
1616 | F32 object_radius = mFocusObject->getVObjRadius(); | ||
1617 | |||
1618 | BOOL target_outside_object_extents = FALSE; | 1616 | BOOL target_outside_object_extents = FALSE; |
1619 | 1617 | ||
1620 | for (U32 i = VX; i <= VZ; i++) | 1618 | for (U32 i = VX; i <= VZ; i++) |
@@ -1708,18 +1706,6 @@ BOOL LLAgent::calcCameraMinDistance(F32 &obj_min_distance) | |||
1708 | 1706 | ||
1709 | LLVector3 camera_offset_object(getCameraPositionAgent() - mFocusObject->getPositionAgent()); | 1707 | LLVector3 camera_offset_object(getCameraPositionAgent() - mFocusObject->getPositionAgent()); |
1710 | 1708 | ||
1711 | // length projected orthogonal to target offset | ||
1712 | F32 camera_offset_dist = (camera_offset_object - target_offset_dir * (camera_offset_object * target_offset_dir)).magVec(); | ||
1713 | |||
1714 | // calculate whether the target point would be "visible" if it were outside the bounding box | ||
1715 | // on the opposite of the splitting plane defined by object_split_axis; | ||
1716 | BOOL exterior_target_visible = FALSE; | ||
1717 | if (camera_offset_dist > object_radius) | ||
1718 | { | ||
1719 | // target is visible from camera, so turn off fov zoom | ||
1720 | exterior_target_visible = TRUE; | ||
1721 | } | ||
1722 | |||
1723 | F32 camera_offset_clip = camera_offset_object * object_split_axis; | 1709 | F32 camera_offset_clip = camera_offset_object * object_split_axis; |
1724 | F32 target_offset_clip = target_offset_dir * object_split_axis; | 1710 | F32 target_offset_clip = target_offset_dir * object_split_axis; |
1725 | 1711 | ||
@@ -2538,12 +2524,10 @@ void LLAgent::autoPilot(F32 *delta_yaw) | |||
2538 | *delta_yaw = yaw; | 2524 | *delta_yaw = yaw; |
2539 | 2525 | ||
2540 | // Compute when to start slowing down and when to stop | 2526 | // Compute when to start slowing down and when to stop |
2541 | F32 stop_distance = mAutoPilotStopDistance; | ||
2542 | F32 slow_distance; | 2527 | F32 slow_distance; |
2543 | if (getFlying()) | 2528 | if (getFlying()) |
2544 | { | 2529 | { |
2545 | slow_distance = llmax(6.f, mAutoPilotStopDistance + 5.f); | 2530 | slow_distance = llmax(6.f, mAutoPilotStopDistance + 5.f); |
2546 | stop_distance = llmax(2.f, mAutoPilotStopDistance); | ||
2547 | } | 2531 | } |
2548 | else | 2532 | else |
2549 | { | 2533 | { |
@@ -3719,7 +3703,6 @@ F32 LLAgent::calcCameraFOVZoomFactor() | |||
3719 | else if (mFocusObject.notNull() && !mFocusObject->isAvatar()) | 3703 | else if (mFocusObject.notNull() && !mFocusObject->isAvatar()) |
3720 | { | 3704 | { |
3721 | // don't FOV zoom on mostly transparent objects | 3705 | // don't FOV zoom on mostly transparent objects |
3722 | LLVector3 focus_offset = mFocusObjectOffset; | ||
3723 | F32 obj_min_dist = 0.f; | 3706 | F32 obj_min_dist = 0.f; |
3724 | if (!gSavedSettings.getBOOL("DisableMinZoomDist")) | 3707 | if (!gSavedSettings.getBOOL("DisableMinZoomDist")) |
3725 | calcCameraMinDistance(obj_min_dist); | 3708 | calcCameraMinDistance(obj_min_dist); |
@@ -3746,9 +3729,8 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit) | |||
3746 | // Compute base camera position and look-at points. | 3729 | // Compute base camera position and look-at points. |
3747 | F32 camera_land_height; | 3730 | F32 camera_land_height; |
3748 | LLVector3d frame_center_global = mAvatarObject.isNull() ? getPositionGlobal() | 3731 | LLVector3d frame_center_global = mAvatarObject.isNull() ? getPositionGlobal() |
3749 | : getPosGlobalFromAgent(mAvatarObject->mRoot.getWorldPosition()); | 3732 | : getPosGlobalFromAgent(mAvatarObject->mRoot.getWorldPosition()); |
3750 | 3733 | ||
3751 | LLVector3 upAxis = getUpAxis(); | ||
3752 | BOOL isConstrained = FALSE; | 3734 | BOOL isConstrained = FALSE; |
3753 | LLVector3d head_offset; | 3735 | LLVector3d head_offset; |
3754 | head_offset.setVec(mThirdPersonHeadOffset); | 3736 | head_offset.setVec(mThirdPersonHeadOffset); |
@@ -3883,7 +3865,6 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit) | |||
3883 | // set the global camera position | 3865 | // set the global camera position |
3884 | LLVector3d camera_offset; | 3866 | LLVector3d camera_offset; |
3885 | 3867 | ||
3886 | LLVector3 av_pos = mAvatarObject.isNull() ? LLVector3::zero : mAvatarObject->getRenderPosition(); | ||
3887 | camera_offset.setVec( local_camera_offset ); | 3868 | camera_offset.setVec( local_camera_offset ); |
3888 | camera_position_global = frame_center_global + head_offset + camera_offset; | 3869 | camera_position_global = frame_center_global + head_offset + camera_offset; |
3889 | 3870 | ||
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp index 5a383bc..ee49752 100644 --- a/linden/indra/newview/lldrawable.cpp +++ b/linden/indra/newview/lldrawable.cpp | |||
@@ -494,7 +494,6 @@ F32 LLDrawable::updateXform(BOOL undamped) | |||
494 | //scaling | 494 | //scaling |
495 | LLVector3 target_scale = mVObjp->getScale(); | 495 | LLVector3 target_scale = mVObjp->getScale(); |
496 | LLVector3 old_scale = mCurrentScale; | 496 | LLVector3 old_scale = mCurrentScale; |
497 | LLVector3 dest_scale = target_scale; | ||
498 | 497 | ||
499 | // Damping | 498 | // Damping |
500 | F32 dist_squared = 0.f; | 499 | F32 dist_squared = 0.f; |
@@ -834,7 +833,6 @@ const LLVector3* LLDrawable::getSpatialExtents() const | |||
834 | 833 | ||
835 | void LLDrawable::setSpatialExtents(LLVector3 min, LLVector3 max) | 834 | void LLDrawable::setSpatialExtents(LLVector3 min, LLVector3 max) |
836 | { | 835 | { |
837 | LLVector3 size = max - min; | ||
838 | mExtents[0] = min; | 836 | mExtents[0] = min; |
839 | mExtents[1] = max; | 837 | mExtents[1] = max; |
840 | } | 838 | } |
@@ -1098,7 +1096,6 @@ LLCamera LLSpatialBridge::transformCamera(LLCamera& camera) | |||
1098 | LLCamera ret = camera; | 1096 | LLCamera ret = camera; |
1099 | LLXformMatrix* mat = mDrawable->getXform(); | 1097 | LLXformMatrix* mat = mDrawable->getXform(); |
1100 | LLVector3 center = LLVector3(0,0,0) * mat->getWorldMatrix(); | 1098 | LLVector3 center = LLVector3(0,0,0) * mat->getWorldMatrix(); |
1101 | LLQuaternion rotation = LLQuaternion(mat->getWorldMatrix()); | ||
1102 | 1099 | ||
1103 | LLVector3 delta = ret.getOrigin() - center; | 1100 | LLVector3 delta = ret.getOrigin() - center; |
1104 | LLQuaternion rot = ~mat->getRotation(); | 1101 | LLQuaternion rot = ~mat->getRotation(); |
diff --git a/linden/indra/newview/lightshare.cpp b/linden/indra/newview/llettherebelight.cpp index db391f5..7fc2a3d 100644 --- a/linden/indra/newview/lightshare.cpp +++ b/linden/indra/newview/llettherebelight.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file lightshare.cpp | 2 | * @file llettherebelight.cpp |
3 | * @brief Handler for Meta7 Lightshare (region-side Windlight settings), and other methods of sharing WindLight. | 3 | * @brief Handler for Meta7 Lightshare (region-side Windlight settings), and other methods of sharing WindLight. |
4 | * | 4 | * |
5 | * Copyright (c) 2010, Tom Grimshaw (Tom Meta) | 5 | * Copyright (c) 2010, Tom Grimshaw (Tom Meta) |
@@ -38,7 +38,7 @@ | |||
38 | #include "message.h" | 38 | #include "message.h" |
39 | #include "meta7windlight.h" | 39 | #include "meta7windlight.h" |
40 | 40 | ||
41 | #include "lightshare.h" | 41 | #include "llettherebelight.h" |
42 | 42 | ||
43 | #include "llagent.h" | 43 | #include "llagent.h" |
44 | #include "llworld.h" | 44 | #include "llworld.h" |
diff --git a/linden/indra/newview/lightshare.h b/linden/indra/newview/llettherebelight.h index 3561a91..3c997e5 100644 --- a/linden/indra/newview/lightshare.h +++ b/linden/indra/newview/llettherebelight.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file lightshare.h | 2 | * @file llettherebelight.h |
3 | * @brief WindlightMessage class definition. | 3 | * @brief WindlightMessage class definition. |
4 | * | 4 | * |
5 | * Copyright (c) 2010, Jacek Antonelli | 5 | * Copyright (c) 2010, Jacek Antonelli |
diff --git a/linden/indra/newview/llflexibleobject.cpp b/linden/indra/newview/llflexibleobject.cpp index 8f2c6d5..ad4341c 100644 --- a/linden/indra/newview/llflexibleobject.cpp +++ b/linden/indra/newview/llflexibleobject.cpp | |||
@@ -233,9 +233,6 @@ void LLVolumeImplFlexible::setAttributesOfAllSections(LLVector3* inScale) | |||
233 | mSection[0].mVelocity.setVec(0,0,0); | 233 | mSection[0].mVelocity.setVec(0,0,0); |
234 | mSection[0].mAxisRotation.setQuat(begin_rot,0,0,1); | 234 | mSection[0].mAxisRotation.setQuat(begin_rot,0,0,1); |
235 | 235 | ||
236 | LLVector3 parentSectionPosition = mSection[0].mPosition; | ||
237 | LLVector3 last_direction = mSection[0].mDirection; | ||
238 | |||
239 | remapSections(mSection, mInitializedRes, mSection, mSimulateRes); | 236 | remapSections(mSection, mInitializedRes, mSection, mSimulateRes); |
240 | mInitializedRes = mSimulateRes; | 237 | mInitializedRes = mSimulateRes; |
241 | 238 | ||
diff --git a/linden/indra/newview/llfloateractivespeakers.cpp b/linden/indra/newview/llfloateractivespeakers.cpp index 75cf176..c1ba5da 100644 --- a/linden/indra/newview/llfloateractivespeakers.cpp +++ b/linden/indra/newview/llfloateractivespeakers.cpp | |||
@@ -1010,7 +1010,7 @@ void LLSpeakerMgr::update(BOOL resort_ok) | |||
1010 | LLUUID speaker_id = speaker_it->first; | 1010 | LLUUID speaker_id = speaker_it->first; |
1011 | LLSpeaker* speakerp = speaker_it->second; | 1011 | LLSpeaker* speakerp = speaker_it->second; |
1012 | 1012 | ||
1013 | speaker_map_t::iterator cur_speaker_it = speaker_it++; | 1013 | speaker_it++; |
1014 | 1014 | ||
1015 | if (voice_channel_active && gVoiceClient->getVoiceEnabled(speaker_id)) | 1015 | if (voice_channel_active && gVoiceClient->getVoiceEnabled(speaker_id)) |
1016 | { | 1016 | { |
diff --git a/linden/indra/newview/llfloaterbeacons.cpp b/linden/indra/newview/llfloaterbeacons.cpp index aa89780..7c40931 100644 --- a/linden/indra/newview/llfloaterbeacons.cpp +++ b/linden/indra/newview/llfloaterbeacons.cpp | |||
@@ -54,6 +54,7 @@ LLFloaterBeacons::LLFloaterBeacons(const LLSD& seed) | |||
54 | LLPipeline::setRenderScriptedTouchBeacons(gSavedSettings.getBOOL("scripttouchbeacon")); | 54 | LLPipeline::setRenderScriptedTouchBeacons(gSavedSettings.getBOOL("scripttouchbeacon")); |
55 | LLPipeline::setRenderScriptedBeacons( gSavedSettings.getBOOL("scriptsbeacon")); | 55 | LLPipeline::setRenderScriptedBeacons( gSavedSettings.getBOOL("scriptsbeacon")); |
56 | LLPipeline::setRenderPhysicalBeacons( gSavedSettings.getBOOL("physicalbeacon")); | 56 | LLPipeline::setRenderPhysicalBeacons( gSavedSettings.getBOOL("physicalbeacon")); |
57 | LLPipeline::setRenderMOAPBeacons( gSavedSettings.getBOOL("moapbeacon")); | ||
57 | LLPipeline::setRenderSoundBeacons( gSavedSettings.getBOOL("soundsbeacon")); | 58 | LLPipeline::setRenderSoundBeacons( gSavedSettings.getBOOL("soundsbeacon")); |
58 | LLPipeline::setRenderParticleBeacons( gSavedSettings.getBOOL("particlesbeacon")); | 59 | LLPipeline::setRenderParticleBeacons( gSavedSettings.getBOOL("particlesbeacon")); |
59 | LLPipeline::setRenderHighlights( gSavedSettings.getBOOL("renderhighlights")); | 60 | LLPipeline::setRenderHighlights( gSavedSettings.getBOOL("renderhighlights")); |
@@ -67,6 +68,7 @@ BOOL LLFloaterBeacons::postBuild() | |||
67 | childSetCommitCallback("physical", onClickUICheck, this); | 68 | childSetCommitCallback("physical", onClickUICheck, this); |
68 | childSetCommitCallback("sounds", onClickUICheck, this); | 69 | childSetCommitCallback("sounds", onClickUICheck, this); |
69 | childSetCommitCallback("particles", onClickUICheck, this); | 70 | childSetCommitCallback("particles", onClickUICheck, this); |
71 | childSetCommitCallback("moap", onClickUICheck, this); | ||
70 | childSetCommitCallback("highlights", onClickUICheck, this); | 72 | childSetCommitCallback("highlights", onClickUICheck, this); |
71 | childSetCommitCallback("beacons", onClickUICheck, this); | 73 | childSetCommitCallback("beacons", onClickUICheck, this); |
72 | return TRUE; | 74 | return TRUE; |
@@ -132,6 +134,7 @@ void LLFloaterBeacons::onClickUICheck(LLUICtrl *ctrl, void* data) | |||
132 | else if(name == "physical") LLPipeline::setRenderPhysicalBeacons(check->get()); | 134 | else if(name == "physical") LLPipeline::setRenderPhysicalBeacons(check->get()); |
133 | else if(name == "sounds") LLPipeline::setRenderSoundBeacons(check->get()); | 135 | else if(name == "sounds") LLPipeline::setRenderSoundBeacons(check->get()); |
134 | else if(name == "particles") LLPipeline::setRenderParticleBeacons(check->get()); | 136 | else if(name == "particles") LLPipeline::setRenderParticleBeacons(check->get()); |
137 | else if(name == "moap") LLPipeline::setRenderMOAPBeacons(check->get()); | ||
135 | else if(name == "highlights") | 138 | else if(name == "highlights") |
136 | { | 139 | { |
137 | LLPipeline::toggleRenderHighlights(NULL); | 140 | LLPipeline::toggleRenderHighlights(NULL); |
diff --git a/linden/indra/newview/llfloaterbuildoptions.cpp b/linden/indra/newview/llfloaterbuildoptions.cpp index 8c6c5f3..b6c15b6 100644 --- a/linden/indra/newview/llfloaterbuildoptions.cpp +++ b/linden/indra/newview/llfloaterbuildoptions.cpp | |||
@@ -115,6 +115,9 @@ BOOL LLFloaterBuildOptions::postBuild() | |||
115 | getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getString("BuildPrefs_Texture"))); | 115 | getChild<LLTextureCtrl>("texture control")->setImageAssetID(LLUUID(gSavedPerAccountSettings.getString("BuildPrefs_Texture"))); |
116 | 116 | ||
117 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getBOOL("RenderHighlightSelections") ); | 117 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getBOOL("RenderHighlightSelections") ); |
118 | childSetValue("BuildPrefsRenderHidden_toggle", gSavedSettings.getBOOL("RenderHiddenSelections") ); | ||
119 | childSetValue("BuildPrefsRenderLightRadius_toggle", gSavedSettings.getBOOL("RenderLightRadius") ); | ||
120 | childSetValue("BuildPrefsShowSelectionBeam_toggle", gSavedSettings.getBOOL("ShowSelectionBeam") ); | ||
118 | childSetValue("grouplandrez", gSavedSettings.getBOOL("RezWithLandGroup") ); | 121 | childSetValue("grouplandrez", gSavedSettings.getBOOL("RezWithLandGroup") ); |
119 | childSetValue("GridSubUnit", gSavedSettings.getBOOL("GridSubUnit") ); | 122 | childSetValue("GridSubUnit", gSavedSettings.getBOOL("GridSubUnit") ); |
120 | childSetValue("GridCrossSection", gSavedSettings.getBOOL("GridCrossSections") ); | 123 | childSetValue("GridCrossSection", gSavedSettings.getBOOL("GridCrossSections") ); |
@@ -293,6 +296,17 @@ void LLFloaterBuildOptions::apply() | |||
293 | LLSelectMgr::sRenderSelectionHighlights = !LLSelectMgr::sRenderSelectionHighlights; | 296 | LLSelectMgr::sRenderSelectionHighlights = !LLSelectMgr::sRenderSelectionHighlights; |
294 | gSavedSettings.setBOOL("RenderHighlightSelections", LLSelectMgr::sRenderSelectionHighlights); | 297 | gSavedSettings.setBOOL("RenderHighlightSelections", LLSelectMgr::sRenderSelectionHighlights); |
295 | } | 298 | } |
299 | if (gSavedSettings.getBOOL("RenderHiddenSelections") != (BOOL)(childGetValue("BuildPrefsRenderHidden_toggle").asBoolean())) | ||
300 | { | ||
301 | LLSelectMgr::sRenderHiddenSelections = !LLSelectMgr::sRenderHiddenSelections; | ||
302 | gSavedSettings.setBOOL("RenderHiddenSelections", LLSelectMgr::sRenderHiddenSelections); | ||
303 | } | ||
304 | if (gSavedSettings.getBOOL("RenderLightRadius") != (BOOL)(childGetValue("BuildPrefsRenderLightRadius_toggle").asBoolean())) | ||
305 | { | ||
306 | LLSelectMgr::sRenderLightRadius = !LLSelectMgr::sRenderLightRadius; | ||
307 | gSavedSettings.setBOOL("RenderLightRadius", LLSelectMgr::sRenderLightRadius); | ||
308 | } | ||
309 | gSavedSettings.setBOOL("ShowSelectionBeam", childGetValue("BuildPrefsShowSelectionBeam_toggle").asBoolean() ); | ||
296 | 310 | ||
297 | gSavedSettings.setBOOL("RezWithLandGroup", childGetValue("grouplandrez").asBoolean() ); | 311 | gSavedSettings.setBOOL("RezWithLandGroup", childGetValue("grouplandrez").asBoolean() ); |
298 | gSavedSettings.setBOOL("GridSubUnit", childGetValue("GridSubUnit").asBoolean() ); | 312 | gSavedSettings.setBOOL("GridSubUnit", childGetValue("GridSubUnit").asBoolean() ); |
@@ -340,6 +354,9 @@ void LLFloaterBuildOptions::reset() | |||
340 | mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault().asString(); | 354 | mBuildTextureUUID = (LLUUID)gSavedPerAccountSettings.getControl("BuildPrefs_Texture")->getDefault().asString(); |
341 | 355 | ||
342 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getControl("RenderHighlightSelections")->getDefault() ); | 356 | childSetValue("BuildPrefsRenderHighlight_toggle", gSavedSettings.getControl("RenderHighlightSelections")->getDefault() ); |
357 | childSetValue("BuildPrefsRenderHidden_toggle", gSavedSettings.getControl("RenderHiddenSelections")->getDefault() ); | ||
358 | childSetValue("BuildPrefsRenderLightRadius_toggle", gSavedSettings.getControl("RenderLightRadius")->getDefault() ); | ||
359 | childSetValue("BuildPrefsShowSelectionBeam_toggle", gSavedSettings.getControl("ShowSelectionBeam")->getDefault() ); | ||
343 | childSetValue("grouplandrez", gSavedSettings.getControl("RezWithLandGroup")->getDefault() ); | 360 | childSetValue("grouplandrez", gSavedSettings.getControl("RezWithLandGroup")->getDefault() ); |
344 | childSetValue("GridSubUnit", gSavedSettings.getControl("GridSubUnit")->getDefault() ); | 361 | childSetValue("GridSubUnit", gSavedSettings.getControl("GridSubUnit")->getDefault() ); |
345 | childSetValue("GridCrossSection", gSavedSettings.getControl("GridCrossSections")->getDefault() ); | 362 | childSetValue("GridCrossSection", gSavedSettings.getControl("GridCrossSections")->getDefault() ); |
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp index 2cca8ce..2efdf18 100644 --- a/linden/indra/newview/llfloaterchat.cpp +++ b/linden/indra/newview/llfloaterchat.cpp | |||
@@ -364,7 +364,7 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) | |||
364 | { | 364 | { |
365 | // desaturate muted chat | 365 | // desaturate muted chat |
366 | LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); | 366 | LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); |
367 | add_timestamped_line(history_editor_with_mute, chat, color); | 367 | add_timestamped_line(history_editor_with_mute, chat, muted_color); |
368 | } | 368 | } |
369 | 369 | ||
370 | // add objects as transient speakers that can be muted | 370 | // add objects as transient speakers that can be muted |
diff --git a/linden/indra/newview/llfloaterjoystick.cpp b/linden/indra/newview/llfloaterjoystick.cpp index 960eebb..4584abc 100644 --- a/linden/indra/newview/llfloaterjoystick.cpp +++ b/linden/indra/newview/llfloaterjoystick.cpp | |||
@@ -100,7 +100,6 @@ BOOL LLFloaterJoystick::postBuild() | |||
100 | if (child) | 100 | if (child) |
101 | { | 101 | { |
102 | LLRect r = child->getRect(); | 102 | LLRect r = child->getRect(); |
103 | LLRect f = getRect(); | ||
104 | rect = LLRect(350, r.mTop, r.mRight + 200, 0); | 103 | rect = LLRect(350, r.mTop, r.mRight + 200, 0); |
105 | } | 104 | } |
106 | 105 | ||
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp index e22de66..2bf4b31 100644 --- a/linden/indra/newview/llfloatertools.cpp +++ b/linden/indra/newview/llfloatertools.cpp | |||
@@ -393,6 +393,7 @@ BOOL LLFloaterTools::postBuild() | |||
393 | mStatusText["rotate"] = getString("status_rotate"); | 393 | mStatusText["rotate"] = getString("status_rotate"); |
394 | mStatusText["scale"] = getString("status_scale"); | 394 | mStatusText["scale"] = getString("status_scale"); |
395 | mStatusText["move"] = getString("status_move"); | 395 | mStatusText["move"] = getString("status_move"); |
396 | mStatusText["selectface"] = getString("status_selectface"); | ||
396 | mStatusText["align"] = getString("status_align"); | 397 | mStatusText["align"] = getString("status_align"); |
397 | mStatusText["modifyland"] = getString("status_modifyland"); | 398 | mStatusText["modifyland"] = getString("status_modifyland"); |
398 | mStatusText["camera"] = getString("status_camera"); | 399 | mStatusText["camera"] = getString("status_camera"); |
diff --git a/linden/indra/newview/llfloaterwater.cpp b/linden/indra/newview/llfloaterwater.cpp index cbf62e1..9dd3aab 100644 --- a/linden/indra/newview/llfloaterwater.cpp +++ b/linden/indra/newview/llfloaterwater.cpp | |||
@@ -761,13 +761,11 @@ bool LLFloaterWater::deleteAlertCallback(const LLSD& notification, const LLSD& r | |||
761 | LLComboBox* combo_box = sWaterMenu->getChild<LLComboBox>("WaterPresetsCombo"); | 761 | LLComboBox* combo_box = sWaterMenu->getChild<LLComboBox>("WaterPresetsCombo"); |
762 | LLFloaterDayCycle* day_cycle = NULL; | 762 | LLFloaterDayCycle* day_cycle = NULL; |
763 | LLComboBox* key_combo = NULL; | 763 | LLComboBox* key_combo = NULL; |
764 | LLMultiSliderCtrl* mult_sldr = NULL; | ||
765 | 764 | ||
766 | if(LLFloaterDayCycle::isOpen()) | 765 | if(LLFloaterDayCycle::isOpen()) |
767 | { | 766 | { |
768 | day_cycle = LLFloaterDayCycle::instance(); | 767 | day_cycle = LLFloaterDayCycle::instance(); |
769 | key_combo = day_cycle->getChild<LLComboBox>("WaterKeyPresets"); | 768 | key_combo = day_cycle->getChild<LLComboBox>("WaterKeyPresets"); |
770 | mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WaterDayCycleKeys"); | ||
771 | } | 769 | } |
772 | 770 | ||
773 | std::string name = combo_box->getSelectedValue().asString(); | 771 | std::string name = combo_box->getSelectedValue().asString(); |
diff --git a/linden/indra/newview/llfloaterwindlight.cpp b/linden/indra/newview/llfloaterwindlight.cpp index 9955783..52d6e14 100644 --- a/linden/indra/newview/llfloaterwindlight.cpp +++ b/linden/indra/newview/llfloaterwindlight.cpp | |||
@@ -973,14 +973,12 @@ bool LLFloaterWindLight::deleteAlertCallback(const LLSD& notification, const LLS | |||
973 | "WLPresetsCombo"); | 973 | "WLPresetsCombo"); |
974 | LLFloaterDayCycle* day_cycle = NULL; | 974 | LLFloaterDayCycle* day_cycle = NULL; |
975 | LLComboBox* key_combo = NULL; | 975 | LLComboBox* key_combo = NULL; |
976 | LLMultiSliderCtrl* mult_sldr = NULL; | ||
977 | 976 | ||
978 | if(LLFloaterDayCycle::isOpen()) | 977 | if(LLFloaterDayCycle::isOpen()) |
979 | { | 978 | { |
980 | day_cycle = LLFloaterDayCycle::instance(); | 979 | day_cycle = LLFloaterDayCycle::instance(); |
981 | key_combo = day_cycle->getChild<LLComboBox>( | 980 | key_combo = day_cycle->getChild<LLComboBox>( |
982 | "WLKeyPresets"); | 981 | "WLKeyPresets"); |
983 | mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WLDayCycleKeys"); | ||
984 | } | 982 | } |
985 | 983 | ||
986 | std::string name(combo_box->getSelectedValue().asString()); | 984 | std::string name(combo_box->getSelectedValue().asString()); |
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp index ce2b2b4..489a5d5 100644 --- a/linden/indra/newview/llfolderview.cpp +++ b/linden/indra/newview/llfolderview.cpp | |||
@@ -3767,12 +3767,6 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) | |||
3767 | LLMenuGL::sMenuContainer->hideMenus(); | 3767 | LLMenuGL::sMenuContainer->hideMenus(); |
3768 | } | 3768 | } |
3769 | 3769 | ||
3770 | LLView *item = NULL; | ||
3771 | if (getChildCount() > 0) | ||
3772 | { | ||
3773 | item = *(getChildList()->begin()); | ||
3774 | } | ||
3775 | |||
3776 | switch( key ) | 3770 | switch( key ) |
3777 | { | 3771 | { |
3778 | case KEY_F2: | 3772 | case KEY_F2: |
diff --git a/linden/indra/newview/llgesturemgr.cpp b/linden/indra/newview/llgesturemgr.cpp index bd05cb3..f806ccc 100644 --- a/linden/indra/newview/llgesturemgr.cpp +++ b/linden/indra/newview/llgesturemgr.cpp | |||
@@ -531,7 +531,6 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s | |||
531 | gesture = NULL; | 531 | gesture = NULL; |
532 | } | 532 | } |
533 | 533 | ||
534 | |||
535 | if (matching.size() > 0) | 534 | if (matching.size() > 0) |
536 | { | 535 | { |
537 | // choose one at random | 536 | // choose one at random |
@@ -565,246 +564,8 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s | |||
565 | found_gestures = TRUE; | 564 | found_gestures = TRUE; |
566 | } | 565 | } |
567 | } | 566 | } |
568 | else if (LLStringUtil::compareInsensitive("/icanhaseasteregg", cur_token) == 0 || | ||
569 | LLStringUtil::compareInsensitive("/icanhaseastereggs", cur_token) == 0) | ||
570 | { | ||
571 | LLViewerImage* kitteh = gImageList.getImageFromFile("easteregg.png", TRUE, TRUE); | ||
572 | if (kitteh) | ||
573 | { | ||
574 | S32 left, top; | ||
575 | gFloaterView->getNewFloaterPosition(&left, &top); | ||
576 | LLRect rect = gSavedSettings.getRect("PreviewTextureRect"); | ||
577 | rect.translate(left - rect.mLeft, top - rect.mTop); | ||
578 | |||
579 | LLPreviewTexture* preview; | ||
580 | preview = new LLPreviewTexture(rect, "Easter Egg!", kitteh); | ||
581 | preview->setSourceID(LLUUID::generateNewID()); | ||
582 | preview->setFocus(TRUE); | ||
583 | preview->center(); | ||
584 | gFloaterView->adjustToFitScreen(preview, FALSE); | ||
585 | } | ||
586 | return TRUE; | ||
587 | } | ||
588 | else if (LLStringUtil::compareInsensitive("/icanhascookie", cur_token) == 0 || | ||
589 | LLStringUtil::compareInsensitive("/icanhascookies", cur_token) == 0) | ||
590 | { | ||
591 | LLChat chat; | ||
592 | chat.mText = "I made you a cookie but I eated it :("; | ||
593 | chat.mSourceType = CHAT_SOURCE_SYSTEM; | ||
594 | LLFloaterChat::addChat(chat); | ||
595 | if (revised_string) | ||
596 | { | ||
597 | revised_string->assign(LLStringUtil::null); | ||
598 | } | ||
599 | return TRUE; | ||
600 | } | ||
601 | else if (LLStringUtil::compareInsensitive("/icanhasfailbook", cur_token) == 0) | ||
602 | { | ||
603 | LLWeb::loadURLInternal("http://failbook.failblog.org/"); | ||
604 | return TRUE; | ||
605 | } | ||
606 | else if (LLStringUtil::compareInsensitive("/icanhaszombie", cur_token) == 0 || | ||
607 | LLStringUtil::compareInsensitive("/icanhaszombies", cur_token) == 0) | ||
608 | { | ||
609 | LLViewerImage* kitteh = gImageList.getImageFromFile("zombiecat.png", TRUE, TRUE); | ||
610 | if (kitteh) | ||
611 | { | ||
612 | S32 left, top; | ||
613 | gFloaterView->getNewFloaterPosition(&left, &top); | ||
614 | LLRect rect = gSavedSettings.getRect("PreviewTextureRect"); | ||
615 | rect.translate(left - rect.mLeft, top - rect.mTop); | ||
616 | |||
617 | LLPreviewTexture* preview; | ||
618 | preview = new LLPreviewTexture(rect, "Zombiecat!", kitteh); | ||
619 | preview->setSourceID(LLUUID::generateNewID()); | ||
620 | preview->setFocus(TRUE); | ||
621 | preview->center(); | ||
622 | gFloaterView->adjustToFitScreen(preview, FALSE); | ||
623 | } | ||
624 | return TRUE; | ||
625 | } | ||
626 | else if (LLStringUtil::compareInsensitive("/icanhassupport", cur_token) == 0 || | ||
627 | LLStringUtil::compareInsensitive("/icanhashelp", cur_token) == 0 || | ||
628 | LLStringUtil::compareInsensitive("/icanhashalp", cur_token) == 0) | ||
629 | { | ||
630 | LLWeb::loadURLInternal("http://support.kokuaviewer.org/"); | ||
631 | return TRUE; | ||
632 | } | ||
633 | else if (LLStringUtil::compareInsensitive("/icanhasblog", cur_token) == 0) | ||
634 | { | ||
635 | LLWeb::loadURLInternal("http://kokuaviewer.org/"); | ||
636 | return TRUE; | ||
637 | } | ||
638 | else if (LLStringUtil::compareInsensitive("/icanhascodie", cur_token) == 0) | ||
639 | { | ||
640 | LLChat chat; | ||
641 | chat.mText = "All work and no play makes Codie a dull girl. All work and no play..."; | ||
642 | chat.mSourceType = CHAT_SOURCE_SYSTEM; | ||
643 | LLFloaterChat::addChat(chat); | ||
644 | if (revised_string) | ||
645 | { | ||
646 | revised_string->assign(LLStringUtil::null); | ||
647 | } | ||
648 | return TRUE; | ||
649 | } | ||
650 | else if (LLStringUtil::compareInsensitive("/icanhasfail", cur_token) == 0) | ||
651 | { | ||
652 | LLWeb::loadURLInternal("http://www.failblog.org/"); | ||
653 | return TRUE; | ||
654 | } | ||
655 | else if (LLStringUtil::compareInsensitive("/icanhasdownload", cur_token) == 0 || | ||
656 | LLStringUtil::compareInsensitive("/icanhasdownloads", cur_token) == 0 || | ||
657 | LLStringUtil::compareInsensitive("/icanhasupdate", cur_token) == 0 || | ||
658 | LLStringUtil::compareInsensitive("/icanhasupdates", cur_token) == 0 ) | ||
659 | { | ||
660 | LLWeb::loadURLInternal("http://wiki.kokuaviewer.org/wiki/Imprudence:Downloads"); | ||
661 | return TRUE; | ||
662 | } | ||
663 | else if (LLStringUtil::compareInsensitive("/icanhasfeatures", cur_token) == 0) | ||
664 | { | ||
665 | LLWeb::loadURLInternal("http://wiki.kokuaviewer.org/wiki/Imprudence:Features"); | ||
666 | return TRUE; | ||
667 | } | ||
668 | else if (LLStringUtil::compareInsensitive("/icanhaswiki", cur_token) == 0) | ||
669 | { | ||
670 | LLWeb::loadURLInternal("http://wiki.kokuaviewer.org/wiki/"); | ||
671 | return TRUE; | ||
672 | } | ||
673 | else if (LLStringUtil::compareInsensitive("/icanhasbugs", cur_token) == 0 || | ||
674 | LLStringUtil::compareInsensitive("/icanhasbug", cur_token) == 0 ) | ||
675 | { | ||
676 | LLWeb::loadURLInternal("http://redmine.kokuaviewer.org/"); | ||
677 | return TRUE; | ||
678 | } | ||
679 | else if (LLStringUtil::compareInsensitive("/icanhasgit", cur_token) == 0) | ||
680 | { | ||
681 | LLWeb::loadURLInternal("http://github.com/imprudence/imprudence/"); | ||
682 | return TRUE; | ||
683 | } | ||
684 | else if (LLStringUtil::compareInsensitive("/icanhasplurk", cur_token) == 0) | ||
685 | { | ||
686 | LLWeb::loadURLInternal("http://plurk.com/imprudence"); | ||
687 | return TRUE; | ||
688 | } | ||
689 | else if (LLStringUtil::compareInsensitive("/icanhastwitter", cur_token) == 0) | ||
690 | { | ||
691 | LLWeb::loadURLInternal("http://twitter.com/ImpViewer"); | ||
692 | return TRUE; | ||
693 | } | ||
694 | |||
695 | else if (LLStringUtil::compareInsensitive("/icanhasimprudence", cur_token) == 0) | ||
696 | { | ||
697 | LLChat chat; | ||
698 | chat.mText = "You are using it right now, silly!..."; | ||
699 | chat.mSourceType = CHAT_SOURCE_SYSTEM; | ||
700 | LLFloaterChat::addChat(chat); | ||
701 | if (revised_string) | ||
702 | { | ||
703 | revised_string->assign(LLStringUtil::null); | ||
704 | } | ||
705 | return TRUE; | ||
706 | } | ||
707 | else if (LLStringUtil::compareInsensitive("/icanhasnoms", cur_token) == 0 || | ||
708 | LLStringUtil::compareInsensitive("/icanhasnom", cur_token) == 0) | ||
709 | { | ||
710 | LLViewerImage* kitteh = gImageList.getImageFromFile("nomnom.png", TRUE, TRUE); | ||
711 | if (kitteh) | ||
712 | { | ||
713 | S32 left, top; | ||
714 | gFloaterView->getNewFloaterPosition(&left, &top); | ||
715 | LLRect rect = gSavedSettings.getRect("PreviewTextureRect"); | ||
716 | rect.translate(left - rect.mLeft, top - rect.mTop); | ||
717 | |||
718 | LLPreviewTexture* preview; | ||
719 | preview = new LLPreviewTexture(rect, "Om nom nom!", kitteh); | ||
720 | preview->setSourceID(LLUUID::generateNewID()); | ||
721 | preview->setFocus(TRUE); | ||
722 | preview->center(); | ||
723 | gFloaterView->adjustToFitScreen(preview, FALSE); | ||
724 | } | ||
725 | return TRUE; | ||
726 | } | ||
727 | else if (LLStringUtil::compareInsensitive("/icanhasceilingcat", cur_token) == 0 || | ||
728 | LLStringUtil::compareInsensitive("/icanhascielingcat", cur_token) == 0) | ||
729 | { | ||
730 | LLViewerImage* kitteh = gImageList.getImageFromFile("ceilingcat.png", TRUE, TRUE); | ||
731 | if (kitteh) | ||
732 | { | ||
733 | S32 left, top; | ||
734 | gFloaterView->getNewFloaterPosition(&left, &top); | ||
735 | LLRect rect = gSavedSettings.getRect("PreviewTextureRect"); | ||
736 | rect.translate(left - rect.mLeft, top - rect.mTop); | ||
737 | |||
738 | LLPreviewTexture* preview; | ||
739 | preview = new LLPreviewTexture(rect, "Ceiling Cat is watching you!", kitteh); | ||
740 | preview->setSourceID(LLUUID::generateNewID()); | ||
741 | preview->setFocus(TRUE); | ||
742 | preview->center(); | ||
743 | gFloaterView->adjustToFitScreen(preview, FALSE); | ||
744 | } | ||
745 | return TRUE; | ||
746 | } | ||
747 | else if (LLStringUtil::compareInsensitive("/icanhascake", cur_token) == 0 ) | ||
748 | { | ||
749 | LLViewerImage* kitteh = gImageList.getImageFromFile("cakeisalie.png", TRUE, TRUE); | ||
750 | if (kitteh) | ||
751 | { | ||
752 | S32 left, top; | ||
753 | gFloaterView->getNewFloaterPosition(&left, &top); | ||
754 | LLRect rect = gSavedSettings.getRect("PreviewTextureRect"); | ||
755 | rect.translate(left - rect.mLeft, top - rect.mTop); | ||
756 | |||
757 | LLPreviewTexture* preview; | ||
758 | preview = new LLPreviewTexture(rect, "THE CAKE IS A LIE!", kitteh); | ||
759 | preview->setSourceID(LLUUID::generateNewID()); | ||
760 | preview->setFocus(TRUE); | ||
761 | preview->center(); | ||
762 | gFloaterView->adjustToFitScreen(preview, FALSE); | ||
763 | } | ||
764 | return TRUE; | ||
765 | } | ||
766 | else if (LLStringUtil::compareInsensitive("/icanhastentacles", cur_token) == 0 ) | ||
767 | { | ||
768 | LLViewerImage* kitteh = gImageList.getImageFromFile("octopus.png", TRUE, TRUE); | ||
769 | if (kitteh) | ||
770 | { | ||
771 | S32 left, top; | ||
772 | gFloaterView->getNewFloaterPosition(&left, &top); | ||
773 | LLRect rect = gSavedSettings.getRect("PreviewTextureRect"); | ||
774 | rect.translate(left - rect.mLeft, top - rect.mTop); | ||
775 | |||
776 | LLPreviewTexture* preview; | ||
777 | preview = new LLPreviewTexture(rect, "All hail the mighty octopus!", kitteh); | ||
778 | preview->setSourceID(LLUUID::generateNewID()); | ||
779 | preview->setFocus(TRUE); | ||
780 | preview->center(); | ||
781 | gFloaterView->adjustToFitScreen(preview, FALSE); | ||
782 | } | ||
783 | return TRUE; | ||
784 | } | ||
785 | else if (LLStringUtil::compareInsensitive("/icanhashugs", cur_token) == 0 || | ||
786 | LLStringUtil::compareInsensitive("/icanhashug", cur_token) == 0) | ||
787 | { | ||
788 | LLViewerImage* kitteh = gImageList.getImageFromFile("hugs.png", TRUE, TRUE); | ||
789 | if (kitteh) | ||
790 | { | ||
791 | S32 left, top; | ||
792 | gFloaterView->getNewFloaterPosition(&left, &top); | ||
793 | LLRect rect = gSavedSettings.getRect("PreviewTextureRect"); | ||
794 | rect.translate(left - rect.mLeft, top - rect.mTop); | ||
795 | |||
796 | LLPreviewTexture* preview; | ||
797 | preview = new LLPreviewTexture(rect, "Yes, you can has hugs!", kitteh); | ||
798 | preview->setSourceID(LLUUID::generateNewID()); | ||
799 | preview->setFocus(TRUE); | ||
800 | preview->center(); | ||
801 | gFloaterView->adjustToFitScreen(preview, FALSE); | ||
802 | } | ||
803 | return TRUE; | ||
804 | } | ||
805 | |||
806 | } | 567 | } |
807 | 568 | ||
808 | if(!gesture) | 569 | if(!gesture) |
809 | { | 570 | { |
810 | // This token doesn't match a gesture. Pass it through to the output. | 571 | // This token doesn't match a gesture. Pass it through to the output. |
diff --git a/linden/indra/newview/llhoverview.cpp b/linden/indra/newview/llhoverview.cpp index 4f248e4..91cb8a5 100644 --- a/linden/indra/newview/llhoverview.cpp +++ b/linden/indra/newview/llhoverview.cpp | |||
@@ -546,14 +546,15 @@ void LLHoverView::updateText() | |||
546 | 546 | ||
547 | LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); | 547 | LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); |
548 | LLUUID owner; | 548 | LLUUID owner; |
549 | S32 width = 0; | 549 | // Their use is commented out below. No doubt both will get deleted on a later clean up pass. |
550 | S32 height = 0; | 550 | //S32 width = 0; |
551 | //S32 height = 0; | ||
551 | 552 | ||
552 | if ( hover_parcel ) | 553 | if ( hover_parcel ) |
553 | { | 554 | { |
554 | owner = hover_parcel->getOwnerID(); | 555 | owner = hover_parcel->getOwnerID(); |
555 | width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); | 556 | // width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); |
556 | height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); | 557 | // height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); |
557 | } | 558 | } |
558 | 559 | ||
559 | // Line: "Land" | 560 | // Line: "Land" |
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index 23d864e..6e6b39c 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp | |||
@@ -1439,7 +1439,6 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id, | |||
1439 | if(drop && accept) | 1439 | if(drop && accept) |
1440 | { | 1440 | { |
1441 | it = inventory_objects.begin(); | 1441 | it = inventory_objects.begin(); |
1442 | InventoryObjectList::iterator first_it = inventory_objects.begin(); | ||
1443 | LLMoveInv* move_inv = new LLMoveInv; | 1442 | LLMoveInv* move_inv = new LLMoveInv; |
1444 | move_inv->mObjectID = object_id; | 1443 | move_inv->mObjectID = object_id; |
1445 | move_inv->mCategoryID = category_id; | 1444 | move_inv->mCategoryID = category_id; |
@@ -1922,24 +1921,11 @@ void LLFolderBridge::pasteFromClipboard() | |||
1922 | item = model->getItem(objects.get(i)); | 1921 | item = model->getItem(objects.get(i)); |
1923 | if (item) | 1922 | if (item) |
1924 | { | 1923 | { |
1925 | copy_inventory_item( | 1924 | LLInvFVBridge::changeItemParent( |
1926 | gAgent.getID(), | 1925 | model, |
1927 | item->getPermissions().getOwner(), | 1926 | (LLViewerInventoryItem*)item, |
1928 | item->getUUID(), | 1927 | mUUID, |
1929 | parent_id, | 1928 | FALSE); |
1930 | std::string(), | ||
1931 | LLPointer<LLInventoryCallback>(NULL)); | ||
1932 | LLInventoryCategory* cat = model->getCategory(item->getUUID()); | ||
1933 | if(cat) | ||
1934 | { | ||
1935 | model->purgeDescendentsOf(mUUID); | ||
1936 | } | ||
1937 | LLInventoryObject* obj = model->getObject(item->getUUID()); | ||
1938 | if(!obj) return; | ||
1939 | obj->removeFromServer(); | ||
1940 | LLPreview::hide(item->getUUID()); | ||
1941 | model->deleteObject(item->getUUID()); | ||
1942 | model->notifyObservers(); | ||
1943 | } | 1929 | } |
1944 | } | 1930 | } |
1945 | } | 1931 | } |
diff --git a/linden/indra/newview/llinventorymodel.cpp b/linden/indra/newview/llinventorymodel.cpp index 3f74965..8b98782 100644 --- a/linden/indra/newview/llinventorymodel.cpp +++ b/linden/indra/newview/llinventorymodel.cpp | |||
@@ -455,8 +455,6 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
455 | void (*callback)(const LLSD&, void*), | 455 | void (*callback)(const LLSD&, void*), |
456 | void* user_data) | 456 | void* user_data) |
457 | { | 457 | { |
458 | llassert_always(NULL != callback); | ||
459 | |||
460 | LLUUID id; | 458 | LLUUID id; |
461 | 459 | ||
462 | if(!isInventoryUsable()) | 460 | if(!isInventoryUsable()) |
@@ -464,7 +462,8 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
464 | llwarns << "Inventory is broken." << llendl; | 462 | llwarns << "Inventory is broken." << llendl; |
465 | LLSD result; | 463 | LLSD result; |
466 | result["failure"] = true; | 464 | result["failure"] = true; |
467 | callback(result, user_data); | 465 | if (callback) |
466 | callback(result, user_data); | ||
468 | } | 467 | } |
469 | 468 | ||
470 | 469 | ||
@@ -473,7 +472,8 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
473 | LL_DEBUGS("Inventory") << "Attempt to create simstate category." << LL_ENDL; | 472 | LL_DEBUGS("Inventory") << "Attempt to create simstate category." << LL_ENDL; |
474 | LLSD result; | 473 | LLSD result; |
475 | result["failure"] = true; | 474 | result["failure"] = true; |
476 | callback(result, user_data); | 475 | if (callback) |
476 | callback(result, user_data); | ||
477 | } | 477 | } |
478 | 478 | ||
479 | id.generate(); | 479 | id.generate(); |
@@ -492,10 +492,8 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
492 | name.assign(NEW_CATEGORY_NAME); | 492 | name.assign(NEW_CATEGORY_NAME); |
493 | } | 493 | } |
494 | 494 | ||
495 | if (user_data) // callback required for acked message. | 495 | if ((NULL != callback) && (NULL != user_data)) // callback required for acked message. |
496 | { | 496 | { |
497 | |||
498 | |||
499 | LLViewerRegion* viewer_region = gAgent.getRegion(); | 497 | LLViewerRegion* viewer_region = gAgent.getRegion(); |
500 | 498 | ||
501 | if (!viewer_region->capabilitiesReceived()) | 499 | if (!viewer_region->capabilitiesReceived()) |
@@ -537,7 +535,10 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, | |||
537 | { | 535 | { |
538 | // user_data is a LLCategoryCreate object instantiated in the calling | 536 | // user_data is a LLCategoryCreate object instantiated in the calling |
539 | // function - bug (or low memory - any leaks?). | 537 | // function - bug (or low memory - any leaks?). |
540 | llwarns << "NULL user_data" << llendl; | 538 | // Or, it might just be no problem, since passing the callback in the first place is optional. |
539 | // It's really up to the calling function to know what it passed to pass back to the callback. | ||
540 | if (callback) | ||
541 | llwarns << "NULL user_data" << llendl; | ||
541 | } | 542 | } |
542 | 543 | ||
543 | // Add the category to the internal representation | 544 | // Add the category to the internal representation |
@@ -1211,7 +1212,6 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) | |||
1211 | item_array_t items; | 1212 | item_array_t items; |
1212 | update_map_t update; | 1213 | update_map_t update; |
1213 | S32 count = content["items"].size(); | 1214 | S32 count = content["items"].size(); |
1214 | bool all_one_folder = true; | ||
1215 | LLUUID folder_id; | 1215 | LLUUID folder_id; |
1216 | // Does this loop ever execute more than once? | 1216 | // Does this loop ever execute more than once? |
1217 | for(S32 i = 0; i < count; ++i) | 1217 | for(S32 i = 0; i < count; ++i) |
@@ -1244,10 +1244,6 @@ void LLInventoryModel::fetchInventoryResponder::result(const LLSD& content) | |||
1244 | { | 1244 | { |
1245 | folder_id = titem->getParentUUID(); | 1245 | folder_id = titem->getParentUUID(); |
1246 | } | 1246 | } |
1247 | else | ||
1248 | { | ||
1249 | all_one_folder = false; | ||
1250 | } | ||
1251 | } | 1247 | } |
1252 | 1248 | ||
1253 | U32 changes = 0x0; | 1249 | U32 changes = 0x0; |
@@ -2960,7 +2956,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account) | |||
2960 | item_array_t items; | 2956 | item_array_t items; |
2961 | update_map_t update; | 2957 | update_map_t update; |
2962 | S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData); | 2958 | S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData); |
2963 | bool all_one_folder = true; | ||
2964 | LLUUID folder_id; | 2959 | LLUUID folder_id; |
2965 | // Does this loop ever execute more than once? | 2960 | // Does this loop ever execute more than once? |
2966 | for(S32 i = 0; i < count; ++i) | 2961 | for(S32 i = 0; i < count; ++i) |
@@ -2992,10 +2987,6 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account) | |||
2992 | { | 2987 | { |
2993 | folder_id = titem->getParentUUID(); | 2988 | folder_id = titem->getParentUUID(); |
2994 | } | 2989 | } |
2995 | else | ||
2996 | { | ||
2997 | all_one_folder = false; | ||
2998 | } | ||
2999 | } | 2990 | } |
3000 | if(account) | 2991 | if(account) |
3001 | { | 2992 | { |
diff --git a/linden/indra/newview/llmaniprotate.cpp b/linden/indra/newview/llmaniprotate.cpp index 77c8bd5..fa5ab56 100644 --- a/linden/indra/newview/llmaniprotate.cpp +++ b/linden/indra/newview/llmaniprotate.cpp | |||
@@ -1652,7 +1652,6 @@ void LLManipRotate::highlightManipulators( S32 x, S32 y ) | |||
1652 | return; | 1652 | return; |
1653 | } | 1653 | } |
1654 | 1654 | ||
1655 | LLQuaternion object_rot = first_object->getRenderRotation(); | ||
1656 | LLVector3 rotation_center = gAgent.getPosAgentFromGlobal(mRotationCenter); | 1655 | LLVector3 rotation_center = gAgent.getPosAgentFromGlobal(mRotationCenter); |
1657 | LLVector3 mouse_dir_x; | 1656 | LLVector3 mouse_dir_x; |
1658 | LLVector3 mouse_dir_y; | 1657 | LLVector3 mouse_dir_y; |
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp index 33ee1b9..593f765 100644 --- a/linden/indra/newview/llmanipscale.cpp +++ b/linden/indra/newview/llmanipscale.cpp | |||
@@ -1172,9 +1172,6 @@ void LLManipScale::dragFace( S32 x, S32 y ) | |||
1172 | mInSnapRegime = FALSE; | 1172 | mInSnapRegime = FALSE; |
1173 | } | 1173 | } |
1174 | 1174 | ||
1175 | BOOL send_scale_update = FALSE; | ||
1176 | BOOL send_position_update = FALSE; | ||
1177 | |||
1178 | LLVector3 dir_agent; | 1175 | LLVector3 dir_agent; |
1179 | if( part_dir_local.mV[VX] ) | 1176 | if( part_dir_local.mV[VX] ) |
1180 | { | 1177 | { |
@@ -1191,8 +1188,6 @@ void LLManipScale::dragFace( S32 x, S32 y ) | |||
1191 | stretchFace( | 1188 | stretchFace( |
1192 | projected_vec(drag_start_dir_f, dir_agent) + drag_start_center_agent, | 1189 | projected_vec(drag_start_dir_f, dir_agent) + drag_start_center_agent, |
1193 | projected_vec(drag_delta, dir_agent)); | 1190 | projected_vec(drag_delta, dir_agent)); |
1194 | send_position_update = TRUE; | ||
1195 | send_scale_update = TRUE; | ||
1196 | 1191 | ||
1197 | mDragPointGlobal = drag_point_global; | 1192 | mDragPointGlobal = drag_point_global; |
1198 | } | 1193 | } |
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp index 53578ca..4816eac 100644 --- a/linden/indra/newview/llmaniptranslate.cpp +++ b/linden/indra/newview/llmaniptranslate.cpp | |||
@@ -487,9 +487,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
487 | } | 487 | } |
488 | } | 488 | } |
489 | 489 | ||
490 | // Throttle updates to 10 per second. | ||
491 | BOOL send_update = FALSE; | ||
492 | |||
493 | LLVector3 axis_f; | 490 | LLVector3 axis_f; |
494 | LLVector3d axis_d; | 491 | LLVector3d axis_d; |
495 | 492 | ||
@@ -701,10 +698,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
701 | LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation); | 698 | LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation); |
702 | 699 | ||
703 | // move and clamp root object first, before adjusting children | 700 | // move and clamp root object first, before adjusting children |
704 | if (new_position_local != old_position_local) | 701 | |
705 | { | ||
706 | send_update = TRUE; | ||
707 | } | ||
708 | //RN: I forget, but we need to do this because of snapping which doesn't often result | 702 | //RN: I forget, but we need to do this because of snapping which doesn't often result |
709 | // in position changes even when the mouse moves | 703 | // in position changes even when the mouse moves |
710 | object->setPosition(new_position_local); | 704 | object->setPosition(new_position_local); |
@@ -714,8 +708,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
714 | 708 | ||
715 | if (selectNode->mIndividualSelection) | 709 | if (selectNode->mIndividualSelection) |
716 | { | 710 | { |
717 | send_update = FALSE; | ||
718 | |||
719 | // counter-translate child objects if we are moving the root as an individual | 711 | // counter-translate child objects if we are moving the root as an individual |
720 | object->resetChildrenPosition(old_position_local - new_position_local, TRUE) ; | 712 | object->resetChildrenPosition(old_position_local - new_position_local, TRUE) ; |
721 | } | 713 | } |
@@ -752,7 +744,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
752 | } | 744 | } |
753 | 745 | ||
754 | // PR: Only update if changed | 746 | // PR: Only update if changed |
755 | LLVector3d old_position_global = object->getPositionGlobal(); | ||
756 | LLVector3 old_position_agent = object->getPositionAgent(); | 747 | LLVector3 old_position_agent = object->getPositionAgent(); |
757 | LLVector3 new_position_agent = gAgent.getPosAgentFromGlobal(new_position_global); | 748 | LLVector3 new_position_agent = gAgent.getPosAgentFromGlobal(new_position_global); |
758 | if (object->isRootEdit()) | 749 | if (object->isRootEdit()) |
@@ -774,11 +765,6 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) | |||
774 | { | 765 | { |
775 | // counter-translate child objects if we are moving the root as an individual | 766 | // counter-translate child objects if we are moving the root as an individual |
776 | object->resetChildrenPosition(old_position_agent - new_position_agent, TRUE) ; | 767 | object->resetChildrenPosition(old_position_agent - new_position_agent, TRUE) ; |
777 | send_update = FALSE; | ||
778 | } | ||
779 | else if (old_position_global != new_position_global) | ||
780 | { | ||
781 | send_update = TRUE; | ||
782 | } | 768 | } |
783 | } | 769 | } |
784 | selectNode->mLastPositionLocal = object->getPosition(); | 770 | selectNode->mLastPositionLocal = object->getPosition(); |
@@ -1302,7 +1288,7 @@ void LLManipTranslate::renderSnapGuides() | |||
1302 | // add in off-axis offset | 1288 | // add in off-axis offset |
1303 | tick_start += (mSnapOffsetAxis * mSnapOffsetMeters); | 1289 | tick_start += (mSnapOffsetAxis * mSnapOffsetMeters); |
1304 | 1290 | ||
1305 | BOOL is_sub_tick = FALSE; | 1291 | // BOOL is_sub_tick = FALSE; |
1306 | F32 tick_scale = 1.f; | 1292 | F32 tick_scale = 1.f; |
1307 | for (F32 division_level = max_subdivisions; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f) | 1293 | for (F32 division_level = max_subdivisions; division_level >= sGridMinSubdivisionLevel; division_level /= 2.f) |
1308 | { | 1294 | { |
@@ -1311,7 +1297,7 @@ void LLManipTranslate::renderSnapGuides() | |||
1311 | break; | 1297 | break; |
1312 | } | 1298 | } |
1313 | tick_scale *= 0.7f; | 1299 | tick_scale *= 0.7f; |
1314 | is_sub_tick = TRUE; | 1300 | // is_sub_tick = TRUE; |
1315 | } | 1301 | } |
1316 | 1302 | ||
1317 | // S32 num_ticks_to_fade = is_sub_tick ? num_ticks_per_side / 2 : num_ticks_per_side; | 1303 | // S32 num_ticks_to_fade = is_sub_tick ? num_ticks_per_side / 2 : num_ticks_per_side; |
@@ -1533,7 +1519,6 @@ void LLManipTranslate::renderSnapGuides() | |||
1533 | 1519 | ||
1534 | float a = line_alpha; | 1520 | float a = line_alpha; |
1535 | 1521 | ||
1536 | LLColor4 col = gColors.getColor("SilhouetteChildColor"); | ||
1537 | { | 1522 | { |
1538 | //draw grid behind objects | 1523 | //draw grid behind objects |
1539 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); | 1524 | LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); |
diff --git a/linden/indra/newview/llmediadataclient.cpp b/linden/indra/newview/llmediadataclient.cpp new file mode 100644 index 0000000..e2fa700 --- /dev/null +++ b/linden/indra/newview/llmediadataclient.cpp | |||
@@ -0,0 +1,813 @@ | |||
1 | /** | ||
2 | * @file llmediadataclient.cpp | ||
3 | * @brief class for queueing up requests for media data | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2010, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at | ||
21 | * http://secondlife.com/developers/opensource/flossexception | ||
22 | * | ||
23 | * By copying, modifying or distributing this software, you acknowledge | ||
24 | * that you have read and understood your obligations described above, | ||
25 | * and agree to abide by those obligations. | ||
26 | * | ||
27 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
28 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
29 | * COMPLETENESS OR PERFORMANCE. | ||
30 | * $/LicenseInfo$ | ||
31 | * | ||
32 | */ | ||
33 | |||
34 | #include "llviewerprecompiledheaders.h" | ||
35 | |||
36 | #include "llmediadataclient.h" | ||
37 | |||
38 | #if LL_MSVC | ||
39 | // disable boost::lexical_cast warning | ||
40 | #pragma warning (disable:4702) | ||
41 | #endif | ||
42 | |||
43 | #include <boost/lexical_cast.hpp> | ||
44 | |||
45 | #include "llhttpstatuscodes.h" | ||
46 | #include "llsdutil.h" | ||
47 | #include "llmediaentry.h" | ||
48 | #include "lltextureentry.h" | ||
49 | #include "llviewerregion.h" | ||
50 | |||
51 | // | ||
52 | // When making a request | ||
53 | // - obtain the "overall interest score" of the object. | ||
54 | // This would be the sum of the impls' interest scores. | ||
55 | // - put the request onto a queue sorted by this score | ||
56 | // (highest score at the front of the queue) | ||
57 | // - On a timer, once a second, pull off the head of the queue and send | ||
58 | // the request. | ||
59 | // - Any request that gets a 503 still goes through the retry logic | ||
60 | // | ||
61 | |||
62 | // | ||
63 | // Forward decls | ||
64 | // | ||
65 | const F32 LLMediaDataClient::QUEUE_TIMER_DELAY = 1.0; // seconds(s) | ||
66 | const F32 LLMediaDataClient::UNAVAILABLE_RETRY_TIMER_DELAY = 10.0; // secs | ||
67 | const U32 LLMediaDataClient::MAX_RETRIES = 10; | ||
68 | const U32 LLMediaDataClient::MAX_SORTED_QUEUE_SIZE = 10000; | ||
69 | const U32 LLMediaDataClient::MAX_ROUND_ROBIN_QUEUE_SIZE = 10000; | ||
70 | |||
71 | // << operators | ||
72 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue_t &q); | ||
73 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::Request &q); | ||
74 | |||
75 | ////////////////////////////////////////////////////////////////////////////////////// | ||
76 | // | ||
77 | // LLMediaDataClient | ||
78 | // | ||
79 | ////////////////////////////////////////////////////////////////////////////////////// | ||
80 | |||
81 | LLMediaDataClient::LLMediaDataClient(F32 queue_timer_delay, | ||
82 | F32 retry_timer_delay, | ||
83 | U32 max_retries, | ||
84 | U32 max_sorted_queue_size, | ||
85 | U32 max_round_robin_queue_size) | ||
86 | : mQueueTimerDelay(queue_timer_delay), | ||
87 | mRetryTimerDelay(retry_timer_delay), | ||
88 | mMaxNumRetries(max_retries), | ||
89 | mMaxSortedQueueSize(max_sorted_queue_size), | ||
90 | mMaxRoundRobinQueueSize(max_round_robin_queue_size), | ||
91 | mQueueTimerIsRunning(false), | ||
92 | mCurrentQueueIsTheSortedQueue(true) | ||
93 | { | ||
94 | } | ||
95 | |||
96 | LLMediaDataClient::~LLMediaDataClient() | ||
97 | { | ||
98 | stopQueueTimer(); | ||
99 | |||
100 | // This should clear the queue, and hopefully call all the destructors. | ||
101 | LL_DEBUGS("LLMediaDataClient") << "~LLMediaDataClient destructor: queue: " << | ||
102 | (isEmpty() ? "<empty> " : "<not empty> ") << LL_ENDL; | ||
103 | |||
104 | mSortedQueue.clear(); | ||
105 | mRoundRobinQueue.clear(); | ||
106 | } | ||
107 | |||
108 | bool LLMediaDataClient::isEmpty() const | ||
109 | { | ||
110 | return mSortedQueue.empty() && mRoundRobinQueue.empty(); | ||
111 | } | ||
112 | |||
113 | bool LLMediaDataClient::isInQueue(const LLMediaDataClientObject::ptr_t &object) | ||
114 | { | ||
115 | return (LLMediaDataClient::findOrRemove(mSortedQueue, object, false/*remove*/, LLMediaDataClient::Request::ANY).notNull() | ||
116 | || (LLMediaDataClient::findOrRemove(mRoundRobinQueue, object, false/*remove*/, LLMediaDataClient::Request::ANY).notNull())); | ||
117 | } | ||
118 | |||
119 | bool LLMediaDataClient::removeFromQueue(const LLMediaDataClientObject::ptr_t &object) | ||
120 | { | ||
121 | bool removedFromSortedQueue = LLMediaDataClient::findOrRemove(mSortedQueue, object, true/*remove*/, LLMediaDataClient::Request::ANY).notNull(); | ||
122 | bool removedFromRoundRobinQueue = LLMediaDataClient::findOrRemove(mRoundRobinQueue, object, true/*remove*/, LLMediaDataClient::Request::ANY).notNull(); | ||
123 | return removedFromSortedQueue || removedFromRoundRobinQueue; | ||
124 | } | ||
125 | |||
126 | //static | ||
127 | LLMediaDataClient::request_ptr_t LLMediaDataClient::findOrRemove(request_queue_t &queue, const LLMediaDataClientObject::ptr_t &obj, bool remove, LLMediaDataClient::Request::Type type) | ||
128 | { | ||
129 | request_ptr_t result; | ||
130 | request_queue_t::iterator iter = queue.begin(); | ||
131 | request_queue_t::iterator end = queue.end(); | ||
132 | while (iter != end) | ||
133 | { | ||
134 | if (obj->getID() == (*iter)->getObject()->getID() && (type == LLMediaDataClient::Request::ANY || type == (*iter)->getType())) | ||
135 | { | ||
136 | result = *iter; | ||
137 | if (remove) queue.erase(iter); | ||
138 | break; | ||
139 | } | ||
140 | iter++; | ||
141 | } | ||
142 | return result; | ||
143 | } | ||
144 | |||
145 | void LLMediaDataClient::request(const LLMediaDataClientObject::ptr_t &object, const LLSD &payload) | ||
146 | { | ||
147 | if (object.isNull() || ! object->hasMedia()) return; | ||
148 | |||
149 | // Push the object on the queue | ||
150 | enqueue(new Request(getCapabilityName(), payload, object, this)); | ||
151 | } | ||
152 | |||
153 | void LLMediaDataClient::enqueue(const Request *request) | ||
154 | { | ||
155 | if (request->isNew()) | ||
156 | { | ||
157 | // Add to sorted queue | ||
158 | if (LLMediaDataClient::findOrRemove(mSortedQueue, request->getObject(), true/*remove*/, request->getType()).notNull()) | ||
159 | { | ||
160 | LL_DEBUGS("LLMediaDataClient") << "REMOVING OLD request for " << *request << " ALREADY THERE!" << LL_ENDL; | ||
161 | } | ||
162 | |||
163 | LL_DEBUGS("LLMediaDataClient") << "Queuing SORTED request for " << *request << LL_ENDL; | ||
164 | |||
165 | // Sadly, we have to const-cast because items put into the queue are not const | ||
166 | mSortedQueue.push_back(const_cast<LLMediaDataClient::Request*>(request)); | ||
167 | |||
168 | LL_DEBUGS("LLMediaDataClientQueue") << "SORTED queue:" << mSortedQueue << LL_ENDL; | ||
169 | } | ||
170 | else { | ||
171 | if (mRoundRobinQueue.size() > mMaxRoundRobinQueueSize) | ||
172 | { | ||
173 | LL_INFOS_ONCE("LLMediaDataClient") << "RR QUEUE MAXED OUT!!!" << LL_ENDL; | ||
174 | LL_DEBUGS("LLMediaDataClient") << "Not queuing " << *request << LL_ENDL; | ||
175 | return; | ||
176 | } | ||
177 | |||
178 | // ROUND ROBIN: if it is there, and it is a GET request, leave it. If not, put at front! | ||
179 | request_ptr_t existing_request; | ||
180 | if (request->getType() == Request::GET) | ||
181 | { | ||
182 | existing_request = LLMediaDataClient::findOrRemove(mRoundRobinQueue, request->getObject(), false/*remove*/, request->getType()); | ||
183 | } | ||
184 | if (existing_request.isNull()) | ||
185 | { | ||
186 | LL_DEBUGS("LLMediaDataClient") << "Queuing RR request for " << *request << LL_ENDL; | ||
187 | // Push the request on the pending queue | ||
188 | // Sadly, we have to const-cast because items put into the queue are not const | ||
189 | mRoundRobinQueue.push_front(const_cast<LLMediaDataClient::Request*>(request)); | ||
190 | |||
191 | LL_DEBUGS("LLMediaDataClientQueue") << "RR queue:" << mRoundRobinQueue << LL_ENDL; | ||
192 | } | ||
193 | else | ||
194 | { | ||
195 | LL_DEBUGS("LLMediaDataClient") << "ALREADY THERE: NOT Queuing request for " << *request << LL_ENDL; | ||
196 | |||
197 | existing_request->markSent(false); | ||
198 | } | ||
199 | } | ||
200 | // Start the timer if not already running | ||
201 | startQueueTimer(); | ||
202 | } | ||
203 | |||
204 | void LLMediaDataClient::startQueueTimer() | ||
205 | { | ||
206 | if (! mQueueTimerIsRunning) | ||
207 | { | ||
208 | LL_DEBUGS("LLMediaDataClient") << "starting queue timer (delay=" << mQueueTimerDelay << " seconds)" << LL_ENDL; | ||
209 | // LLEventTimer automagically takes care of the lifetime of this object | ||
210 | new QueueTimer(mQueueTimerDelay, this); | ||
211 | } | ||
212 | else { | ||
213 | LL_DEBUGS("LLMediaDataClient") << "not starting queue timer (it's already running, right???)" << LL_ENDL; | ||
214 | } | ||
215 | } | ||
216 | |||
217 | void LLMediaDataClient::stopQueueTimer() | ||
218 | { | ||
219 | mQueueTimerIsRunning = false; | ||
220 | } | ||
221 | |||
222 | bool LLMediaDataClient::processQueueTimer() | ||
223 | { | ||
224 | sortQueue(); | ||
225 | |||
226 | if(!isEmpty()) | ||
227 | { | ||
228 | LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() started, SORTED queue size is: " << mSortedQueue.size() | ||
229 | << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL; | ||
230 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() started, SORTED queue is: " << mSortedQueue << LL_ENDL; | ||
231 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() started, RR queue is: " << mRoundRobinQueue << LL_ENDL; | ||
232 | } | ||
233 | |||
234 | serviceQueue(); | ||
235 | |||
236 | LL_DEBUGS("LLMediaDataClient") << "QueueTimer::tick() finished, SORTED queue size is: " << mSortedQueue.size() | ||
237 | << ", RR queue size is: " << mRoundRobinQueue.size() << LL_ENDL; | ||
238 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() finished, SORTED queue is: " << mSortedQueue << LL_ENDL; | ||
239 | LL_DEBUGS("LLMediaDataClientQueue") << "QueueTimer::tick() finished, RR queue is: " << mRoundRobinQueue << LL_ENDL; | ||
240 | |||
241 | return isEmpty(); | ||
242 | } | ||
243 | |||
244 | void LLMediaDataClient::sortQueue() | ||
245 | { | ||
246 | if(!mSortedQueue.empty()) | ||
247 | { | ||
248 | // Score all items first | ||
249 | request_queue_t::iterator iter = mSortedQueue.begin(); | ||
250 | request_queue_t::iterator end = mSortedQueue.end(); | ||
251 | while (iter != end) | ||
252 | { | ||
253 | (*iter)->updateScore(); | ||
254 | iter++; | ||
255 | } | ||
256 | |||
257 | // Re-sort the list... | ||
258 | // NOTE: should this be a stable_sort? If so we need to change to using a vector. | ||
259 | mSortedQueue.sort(LLMediaDataClient::compareRequests); | ||
260 | |||
261 | // ...then cull items over the max | ||
262 | U32 size = mSortedQueue.size(); | ||
263 | if (size > mMaxSortedQueueSize) | ||
264 | { | ||
265 | U32 num_to_cull = (size - mMaxSortedQueueSize); | ||
266 | LL_INFOS_ONCE("LLMediaDataClient") << "sorted queue MAXED OUT! Culling " | ||
267 | << num_to_cull << " items" << LL_ENDL; | ||
268 | while (num_to_cull-- > 0) | ||
269 | { | ||
270 | mSortedQueue.pop_back(); | ||
271 | } | ||
272 | } | ||
273 | } | ||
274 | } | ||
275 | |||
276 | // static | ||
277 | bool LLMediaDataClient::compareRequests(const request_ptr_t &o1, const request_ptr_t &o2) | ||
278 | { | ||
279 | if (o2.isNull()) return true; | ||
280 | if (o1.isNull()) return false; | ||
281 | return ( o1->getScore() > o2->getScore() ); | ||
282 | } | ||
283 | |||
284 | void LLMediaDataClient::serviceQueue() | ||
285 | { | ||
286 | request_queue_t *queue_p = getCurrentQueue(); | ||
287 | |||
288 | // quick retry loop for cases where we shouldn't wait for the next timer tick | ||
289 | while(true) | ||
290 | { | ||
291 | if (queue_p->empty()) | ||
292 | { | ||
293 | LL_DEBUGS("LLMediaDataClient") << "queue empty: " << (*queue_p) << LL_ENDL; | ||
294 | break; | ||
295 | } | ||
296 | |||
297 | // Peel one off of the items from the queue, and execute request | ||
298 | request_ptr_t request = queue_p->front(); | ||
299 | llassert(!request.isNull()); | ||
300 | const LLMediaDataClientObject *object = (request.isNull()) ? NULL : request->getObject(); | ||
301 | llassert(NULL != object); | ||
302 | |||
303 | // Check for conditions that would make us just pop and rapidly loop through | ||
304 | // the queue. | ||
305 | if(request.isNull() || | ||
306 | request->isMarkedSent() || | ||
307 | NULL == object || | ||
308 | object->isDead() || | ||
309 | !object->hasMedia()) | ||
310 | { | ||
311 | if (request.isNull()) | ||
312 | { | ||
313 | LL_WARNS("LLMediaDataClient") << "Skipping NULL request" << LL_ENDL; | ||
314 | } | ||
315 | else { | ||
316 | LL_INFOS("LLMediaDataClient") << "Skipping : " << *request << " " | ||
317 | << ((request->isMarkedSent()) ? " request is marked sent" : | ||
318 | ((NULL == object) ? " object is NULL " : | ||
319 | ((object->isDead()) ? "object is dead" : | ||
320 | ((!object->hasMedia()) ? "object has no media!" : "BADNESS!")))) << LL_ENDL; | ||
321 | } | ||
322 | queue_p->pop_front(); | ||
323 | continue; // jump back to the start of the quick retry loop | ||
324 | } | ||
325 | |||
326 | // Next, ask if this is "interesting enough" to fetch. If not, just stop | ||
327 | // and wait for the next timer go-round. Only do this for the sorted | ||
328 | // queue. | ||
329 | if (mCurrentQueueIsTheSortedQueue && !object->isInterestingEnough()) | ||
330 | { | ||
331 | LL_DEBUGS("LLMediaDataClient") << "Not fetching " << *request << ": not interesting enough" << LL_ENDL; | ||
332 | break; | ||
333 | } | ||
334 | |||
335 | // Finally, try to send the HTTP message to the cap url | ||
336 | std::string url = request->getCapability(); | ||
337 | bool maybe_retry = false; | ||
338 | if (!url.empty()) | ||
339 | { | ||
340 | const LLSD &sd_payload = request->getPayload(); | ||
341 | LL_INFOS("LLMediaDataClient") << "Sending request for " << *request << LL_ENDL; | ||
342 | |||
343 | // Call the subclass for creating the responder | ||
344 | LLHTTPClient::post(url, sd_payload, createResponder(request)); | ||
345 | } | ||
346 | else { | ||
347 | LL_INFOS("LLMediaDataClient") << "NOT Sending request for " << *request << ": empty cap url!" << LL_ENDL; | ||
348 | maybe_retry = true; | ||
349 | } | ||
350 | |||
351 | bool exceeded_retries = request->getRetryCount() > mMaxNumRetries; | ||
352 | if (maybe_retry && ! exceeded_retries) // Try N times before giving up | ||
353 | { | ||
354 | // We got an empty cap, but in that case we will retry again next | ||
355 | // timer fire. | ||
356 | request->incRetryCount(); | ||
357 | } | ||
358 | else { | ||
359 | if (exceeded_retries) | ||
360 | { | ||
361 | LL_WARNS("LLMediaDataClient") << "Could not send request " << *request << " for " | ||
362 | << mMaxNumRetries << " tries...popping object id " << object->getID() << LL_ENDL; | ||
363 | // XXX Should we bring up a warning dialog?? | ||
364 | } | ||
365 | |||
366 | queue_p->pop_front(); | ||
367 | |||
368 | if (! mCurrentQueueIsTheSortedQueue) { | ||
369 | // Round robin | ||
370 | request->markSent(true); | ||
371 | mRoundRobinQueue.push_back(request); | ||
372 | } | ||
373 | } | ||
374 | |||
375 | // end of quick loop -- any cases where we want to loop will use 'continue' to jump back to the start. | ||
376 | break; | ||
377 | } | ||
378 | |||
379 | swapCurrentQueue(); | ||
380 | } | ||
381 | |||
382 | void LLMediaDataClient::swapCurrentQueue() | ||
383 | { | ||
384 | // Swap | ||
385 | mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue; | ||
386 | // If its empty, swap back | ||
387 | if (getCurrentQueue()->empty()) | ||
388 | { | ||
389 | mCurrentQueueIsTheSortedQueue = !mCurrentQueueIsTheSortedQueue; | ||
390 | } | ||
391 | } | ||
392 | |||
393 | LLMediaDataClient::request_queue_t *LLMediaDataClient::getCurrentQueue() | ||
394 | { | ||
395 | return (mCurrentQueueIsTheSortedQueue) ? &mSortedQueue : &mRoundRobinQueue; | ||
396 | } | ||
397 | |||
398 | // dump the queue | ||
399 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue_t &q) | ||
400 | { | ||
401 | int i = 0; | ||
402 | LLMediaDataClient::request_queue_t::const_iterator iter = q.begin(); | ||
403 | LLMediaDataClient::request_queue_t::const_iterator end = q.end(); | ||
404 | while (iter != end) | ||
405 | { | ||
406 | s << "\t" << i << "]: " << (*iter)->getObject()->getID().asString() << "(" << (*iter)->getObject()->getMediaInterest() << ")"; | ||
407 | iter++; | ||
408 | i++; | ||
409 | } | ||
410 | return s; | ||
411 | } | ||
412 | |||
413 | ////////////////////////////////////////////////////////////////////////////////////// | ||
414 | // | ||
415 | // LLMediaDataClient::QueueTimer | ||
416 | // Queue of LLMediaDataClientObject smart pointers to request media for. | ||
417 | // | ||
418 | ////////////////////////////////////////////////////////////////////////////////////// | ||
419 | |||
420 | LLMediaDataClient::QueueTimer::QueueTimer(F32 time, LLMediaDataClient *mdc) | ||
421 | : LLEventTimer(time), mMDC(mdc) | ||
422 | { | ||
423 | mMDC->setIsRunning(true); | ||
424 | } | ||
425 | |||
426 | LLMediaDataClient::QueueTimer::~QueueTimer() | ||
427 | { | ||
428 | LL_DEBUGS("LLMediaDataClient") << "~QueueTimer" << LL_ENDL; | ||
429 | mMDC->setIsRunning(false); | ||
430 | mMDC = NULL; | ||
431 | } | ||
432 | |||
433 | // virtual | ||
434 | BOOL LLMediaDataClient::QueueTimer::tick() | ||
435 | { | ||
436 | if (mMDC.isNull()) return TRUE; | ||
437 | return mMDC->processQueueTimer(); | ||
438 | } | ||
439 | |||
440 | |||
441 | ////////////////////////////////////////////////////////////////////////////////////// | ||
442 | // | ||
443 | // LLMediaDataClient::Responder::RetryTimer | ||
444 | // | ||
445 | ////////////////////////////////////////////////////////////////////////////////////// | ||
446 | |||
447 | LLMediaDataClient::Responder::RetryTimer::RetryTimer(F32 time, Responder *mdr) | ||
448 | : LLEventTimer(time), mResponder(mdr) | ||
449 | { | ||
450 | } | ||
451 | |||
452 | // virtual | ||
453 | LLMediaDataClient::Responder::RetryTimer::~RetryTimer() | ||
454 | { | ||
455 | LL_DEBUGS("LLMediaDataClient") << "~RetryTimer" << *(mResponder->getRequest()) << LL_ENDL; | ||
456 | |||
457 | // XXX This is weird: Instead of doing the work in tick() (which re-schedules | ||
458 | // a timer, which might be risky), do it here, in the destructor. Yes, it is very odd. | ||
459 | // Instead of retrying, we just put the request back onto the queue | ||
460 | LL_INFOS("LLMediaDataClient") << "RetryTimer fired for: " << *(mResponder->getRequest()) << " retrying" << LL_ENDL; | ||
461 | mResponder->getRequest()->reEnqueue(); | ||
462 | |||
463 | // Release the ref to the responder. | ||
464 | mResponder = NULL; | ||
465 | } | ||
466 | |||
467 | // virtual | ||
468 | BOOL LLMediaDataClient::Responder::RetryTimer::tick() | ||
469 | { | ||
470 | // Don't fire again | ||
471 | return TRUE; | ||
472 | } | ||
473 | |||
474 | |||
475 | ////////////////////////////////////////////////////////////////////////////////////// | ||
476 | // | ||
477 | // LLMediaDataClient::Request | ||
478 | // | ||
479 | ////////////////////////////////////////////////////////////////////////////////////// | ||
480 | /*static*/U32 LLMediaDataClient::Request::sNum = 0; | ||
481 | |||
482 | LLMediaDataClient::Request::Request(const char *cap_name, | ||
483 | const LLSD& sd_payload, | ||
484 | LLMediaDataClientObject *obj, | ||
485 | LLMediaDataClient *mdc) | ||
486 | : mCapName(cap_name), | ||
487 | mPayload(sd_payload), | ||
488 | mObject(obj), | ||
489 | mNum(++sNum), | ||
490 | mRetryCount(0), | ||
491 | mMDC(mdc), | ||
492 | mMarkedSent(false), | ||
493 | mScore((F64)0.0) | ||
494 | { | ||
495 | } | ||
496 | |||
497 | LLMediaDataClient::Request::~Request() | ||
498 | { | ||
499 | LL_DEBUGS("LLMediaDataClient") << "~Request" << (*this) << LL_ENDL; | ||
500 | mMDC = NULL; | ||
501 | mObject = NULL; | ||
502 | } | ||
503 | |||
504 | |||
505 | std::string LLMediaDataClient::Request::getCapability() const | ||
506 | { | ||
507 | return getObject()->getCapabilityUrl(getCapName()); | ||
508 | } | ||
509 | |||
510 | // Helper function to get the "type" of request, which just pokes around to | ||
511 | // discover it. | ||
512 | LLMediaDataClient::Request::Type LLMediaDataClient::Request::getType() const | ||
513 | { | ||
514 | if (0 == strcmp(mCapName, "ObjectMediaNavigate")) | ||
515 | { | ||
516 | return NAVIGATE; | ||
517 | } | ||
518 | else if (0 == strcmp(mCapName, "ObjectMedia")) | ||
519 | { | ||
520 | const std::string &verb = mPayload["verb"]; | ||
521 | if (verb == "GET") | ||
522 | { | ||
523 | return GET; | ||
524 | } | ||
525 | else if (verb == "UPDATE") | ||
526 | { | ||
527 | return UPDATE; | ||
528 | } | ||
529 | } | ||
530 | llassert(false); | ||
531 | return GET; | ||
532 | } | ||
533 | |||
534 | const char *LLMediaDataClient::Request::getTypeAsString() const | ||
535 | { | ||
536 | Type t = getType(); | ||
537 | switch (t) | ||
538 | { | ||
539 | case GET: | ||
540 | return "GET"; | ||
541 | break; | ||
542 | case UPDATE: | ||
543 | return "UPDATE"; | ||
544 | break; | ||
545 | case NAVIGATE: | ||
546 | return "NAVIGATE"; | ||
547 | break; | ||
548 | case ANY: | ||
549 | return "ANY"; | ||
550 | break; | ||
551 | } | ||
552 | return ""; | ||
553 | } | ||
554 | |||
555 | |||
556 | void LLMediaDataClient::Request::reEnqueue() const | ||
557 | { | ||
558 | // I sure hope this doesn't deref a bad pointer: | ||
559 | mMDC->enqueue(this); | ||
560 | } | ||
561 | |||
562 | F32 LLMediaDataClient::Request::getRetryTimerDelay() const | ||
563 | { | ||
564 | return (mMDC == NULL) ? LLMediaDataClient::UNAVAILABLE_RETRY_TIMER_DELAY : | ||
565 | mMDC->mRetryTimerDelay; | ||
566 | } | ||
567 | |||
568 | U32 LLMediaDataClient::Request::getMaxNumRetries() const | ||
569 | { | ||
570 | return (mMDC == NULL) ? LLMediaDataClient::MAX_RETRIES : mMDC->mMaxNumRetries; | ||
571 | } | ||
572 | |||
573 | void LLMediaDataClient::Request::markSent(bool flag) | ||
574 | { | ||
575 | if (mMarkedSent != flag) | ||
576 | { | ||
577 | mMarkedSent = flag; | ||
578 | if (!mMarkedSent) | ||
579 | { | ||
580 | mNum = ++sNum; | ||
581 | } | ||
582 | } | ||
583 | } | ||
584 | |||
585 | void LLMediaDataClient::Request::updateScore() | ||
586 | { | ||
587 | F64 tmp = mObject->getMediaInterest(); | ||
588 | if (tmp != mScore) | ||
589 | { | ||
590 | LL_DEBUGS("LLMediaDataClient") << "Score for " << mObject->getID() << " changed from " << mScore << " to " << tmp << LL_ENDL; | ||
591 | mScore = tmp; | ||
592 | } | ||
593 | } | ||
594 | |||
595 | std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::Request &r) | ||
596 | { | ||
597 | s << "request: num=" << r.getNum() | ||
598 | << " type=" << r.getTypeAsString() | ||
599 | << " ID=" << r.getObject()->getID() | ||
600 | << " #retries=" << r.getRetryCount(); | ||
601 | return s; | ||
602 | } | ||
603 | |||
604 | |||
605 | ////////////////////////////////////////////////////////////////////////////////////// | ||
606 | // | ||
607 | // LLMediaDataClient::Responder | ||
608 | // | ||
609 | ////////////////////////////////////////////////////////////////////////////////////// | ||
610 | |||
611 | LLMediaDataClient::Responder::Responder(const request_ptr_t &request) | ||
612 | : mRequest(request) | ||
613 | { | ||
614 | } | ||
615 | |||
616 | LLMediaDataClient::Responder::~Responder() | ||
617 | { | ||
618 | LL_DEBUGS("LLMediaDataClient") << "~Responder" << *(getRequest()) << LL_ENDL; | ||
619 | mRequest = NULL; | ||
620 | } | ||
621 | |||
622 | /*virtual*/ | ||
623 | void LLMediaDataClient::Responder::error(U32 status, const std::string& reason) | ||
624 | { | ||
625 | if (status == HTTP_SERVICE_UNAVAILABLE) | ||
626 | { | ||
627 | F32 retry_timeout = mRequest->getRetryTimerDelay(); | ||
628 | |||
629 | mRequest->incRetryCount(); | ||
630 | |||
631 | if (mRequest->getRetryCount() < mRequest->getMaxNumRetries()) | ||
632 | { | ||
633 | LL_INFOS("LLMediaDataClient") << *mRequest << " got SERVICE_UNAVAILABLE...retrying in " << retry_timeout << " seconds" << LL_ENDL; | ||
634 | |||
635 | // Start timer (instances are automagically tracked by | ||
636 | // InstanceTracker<> and LLEventTimer) | ||
637 | new RetryTimer(F32(retry_timeout/*secs*/), this); | ||
638 | } | ||
639 | else { | ||
640 | LL_INFOS("LLMediaDataClient") << *mRequest << " got SERVICE_UNAVAILABLE...retry count " | ||
641 | << mRequest->getRetryCount() << " exceeds " << mRequest->getMaxNumRetries() << ", not retrying" << LL_ENDL; | ||
642 | } | ||
643 | } | ||
644 | else { | ||
645 | std::string msg = boost::lexical_cast<std::string>(status) + ": " + reason; | ||
646 | LL_WARNS("LLMediaDataClient") << *mRequest << " http error(" << msg << ")" << LL_ENDL; | ||
647 | } | ||
648 | } | ||
649 | |||
650 | /*virtual*/ | ||
651 | void LLMediaDataClient::Responder::result(const LLSD& content) | ||
652 | { | ||
653 | LL_DEBUGS("LLMediaDataClientResponse") << *mRequest << " result : " << ll_print_sd(content) << LL_ENDL; | ||
654 | } | ||
655 | |||
656 | ////////////////////////////////////////////////////////////////////////////////////// | ||
657 | // | ||
658 | // LLObjectMediaDataClient | ||
659 | // Subclass of LLMediaDataClient for the ObjectMedia cap | ||
660 | // | ||
661 | ////////////////////////////////////////////////////////////////////////////////////// | ||
662 | |||
663 | LLMediaDataClient::Responder *LLObjectMediaDataClient::createResponder(const request_ptr_t &request) const | ||
664 | { | ||
665 | return new LLObjectMediaDataClient::Responder(request); | ||
666 | } | ||
667 | |||
668 | const char *LLObjectMediaDataClient::getCapabilityName() const | ||
669 | { | ||
670 | return "ObjectMedia"; | ||
671 | } | ||
672 | |||
673 | void LLObjectMediaDataClient::fetchMedia(LLMediaDataClientObject *object) | ||
674 | { | ||
675 | LLSD sd_payload; | ||
676 | sd_payload["verb"] = "GET"; | ||
677 | sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID(); | ||
678 | request(object, sd_payload); | ||
679 | } | ||
680 | |||
681 | void LLObjectMediaDataClient::updateMedia(LLMediaDataClientObject *object) | ||
682 | { | ||
683 | LLSD sd_payload; | ||
684 | sd_payload["verb"] = "UPDATE"; | ||
685 | sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID(); | ||
686 | LLSD object_media_data; | ||
687 | int i = 0; | ||
688 | int end = object->getMediaDataCount(); | ||
689 | for ( ; i < end ; ++i) | ||
690 | { | ||
691 | object_media_data.append(object->getMediaDataLLSD(i)); | ||
692 | } | ||
693 | sd_payload[LLTextureEntry::OBJECT_MEDIA_DATA_KEY] = object_media_data; | ||
694 | |||
695 | LL_DEBUGS("LLMediaDataClient") << "update media data: " << object->getID() << " " << ll_print_sd(sd_payload) << LL_ENDL; | ||
696 | |||
697 | request(object, sd_payload); | ||
698 | } | ||
699 | |||
700 | /*virtual*/ | ||
701 | void LLObjectMediaDataClient::Responder::result(const LLSD& content) | ||
702 | { | ||
703 | const LLMediaDataClient::Request::Type type = getRequest()->getType(); | ||
704 | llassert(type == LLMediaDataClient::Request::GET || type == LLMediaDataClient::Request::UPDATE) | ||
705 | if (type == LLMediaDataClient::Request::GET) | ||
706 | { | ||
707 | LL_DEBUGS("LLMediaDataClientResponse") << *(getRequest()) << " GET returned: " << ll_print_sd(content) << LL_ENDL; | ||
708 | |||
709 | // Look for an error | ||
710 | if (content.has("error")) | ||
711 | { | ||
712 | const LLSD &error = content["error"]; | ||
713 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error getting media data for object: code=" << | ||
714 | error["code"].asString() << ": " << error["message"].asString() << LL_ENDL; | ||
715 | |||
716 | // XXX Warn user? | ||
717 | } | ||
718 | else { | ||
719 | // Check the data | ||
720 | const LLUUID &object_id = content[LLTextureEntry::OBJECT_ID_KEY]; | ||
721 | if (object_id != getRequest()->getObject()->getID()) | ||
722 | { | ||
723 | // NOT good, wrong object id!! | ||
724 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " DROPPING response with wrong object id (" << object_id << ")" << LL_ENDL; | ||
725 | return; | ||
726 | } | ||
727 | |||
728 | // Otherwise, update with object media data | ||
729 | getRequest()->getObject()->updateObjectMediaData(content[LLTextureEntry::OBJECT_MEDIA_DATA_KEY], | ||
730 | content[LLTextureEntry::MEDIA_VERSION_KEY]); | ||
731 | } | ||
732 | } | ||
733 | else if (type == LLMediaDataClient::Request::UPDATE) | ||
734 | { | ||
735 | // just do what our superclass does | ||
736 | LLMediaDataClient::Responder::result(content); | ||
737 | } | ||
738 | } | ||
739 | |||
740 | ////////////////////////////////////////////////////////////////////////////////////// | ||
741 | // | ||
742 | // LLObjectMediaNavigateClient | ||
743 | // Subclass of LLMediaDataClient for the ObjectMediaNavigate cap | ||
744 | // | ||
745 | ////////////////////////////////////////////////////////////////////////////////////// | ||
746 | LLMediaDataClient::Responder *LLObjectMediaNavigateClient::createResponder(const request_ptr_t &request) const | ||
747 | { | ||
748 | return new LLObjectMediaNavigateClient::Responder(request); | ||
749 | } | ||
750 | |||
751 | const char *LLObjectMediaNavigateClient::getCapabilityName() const | ||
752 | { | ||
753 | return "ObjectMediaNavigate"; | ||
754 | } | ||
755 | |||
756 | void LLObjectMediaNavigateClient::navigate(LLMediaDataClientObject *object, U8 texture_index, const std::string &url) | ||
757 | { | ||
758 | LLSD sd_payload; | ||
759 | sd_payload[LLTextureEntry::OBJECT_ID_KEY] = object->getID(); | ||
760 | sd_payload[LLMediaEntry::CURRENT_URL_KEY] = url; | ||
761 | sd_payload[LLTextureEntry::TEXTURE_INDEX_KEY] = (LLSD::Integer)texture_index; | ||
762 | |||
763 | LL_INFOS("LLMediaDataClient") << "navigate() initiated: " << ll_print_sd(sd_payload) << LL_ENDL; | ||
764 | |||
765 | request(object, sd_payload); | ||
766 | } | ||
767 | |||
768 | /*virtual*/ | ||
769 | void LLObjectMediaNavigateClient::Responder::error(U32 status, const std::string& reason) | ||
770 | { | ||
771 | // Bounce back (unless HTTP_SERVICE_UNAVAILABLE, in which case call base | ||
772 | // class | ||
773 | if (status == HTTP_SERVICE_UNAVAILABLE) | ||
774 | { | ||
775 | LLMediaDataClient::Responder::error(status, reason); | ||
776 | } | ||
777 | else { | ||
778 | // bounce the face back | ||
779 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error navigating: http code=" << status << LL_ENDL; | ||
780 | const LLSD &payload = getRequest()->getPayload(); | ||
781 | // bounce the face back | ||
782 | getRequest()->getObject()->mediaNavigateBounceBack((LLSD::Integer)payload[LLTextureEntry::TEXTURE_INDEX_KEY]); | ||
783 | } | ||
784 | } | ||
785 | |||
786 | /*virtual*/ | ||
787 | void LLObjectMediaNavigateClient::Responder::result(const LLSD& content) | ||
788 | { | ||
789 | LL_INFOS("LLMediaDataClient") << *(getRequest()) << " NAVIGATE returned " << ll_print_sd(content) << LL_ENDL; | ||
790 | |||
791 | if (content.has("error")) | ||
792 | { | ||
793 | const LLSD &error = content["error"]; | ||
794 | int error_code = error["code"]; | ||
795 | |||
796 | if (ERROR_PERMISSION_DENIED_CODE == error_code) | ||
797 | { | ||
798 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Navigation denied: bounce back" << LL_ENDL; | ||
799 | const LLSD &payload = getRequest()->getPayload(); | ||
800 | // bounce the face back | ||
801 | getRequest()->getObject()->mediaNavigateBounceBack((LLSD::Integer)payload[LLTextureEntry::TEXTURE_INDEX_KEY]); | ||
802 | } | ||
803 | else { | ||
804 | LL_WARNS("LLMediaDataClient") << *(getRequest()) << " Error navigating: code=" << | ||
805 | error["code"].asString() << ": " << error["message"].asString() << LL_ENDL; | ||
806 | } | ||
807 | // XXX Warn user? | ||
808 | } | ||
809 | else { | ||
810 | // just do what our superclass does | ||
811 | LLMediaDataClient::Responder::result(content); | ||
812 | } | ||
813 | } | ||
diff --git a/linden/indra/newview/llmediadataclient.h b/linden/indra/newview/llmediadataclient.h new file mode 100644 index 0000000..0ed7c57 --- /dev/null +++ b/linden/indra/newview/llmediadataclient.h | |||
@@ -0,0 +1,341 @@ | |||
1 | /** | ||
2 | * @file llmediadataclient.h | ||
3 | * @brief class for queueing up requests to the media service | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2007&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2007-2010, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at | ||
21 | * http://secondlife.com/developers/opensource/flossexception | ||
22 | * | ||
23 | * By copying, modifying or distributing this software, you acknowledge | ||
24 | * that you have read and understood your obligations described above, | ||
25 | * and agree to abide by those obligations. | ||
26 | * | ||
27 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
28 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
29 | * COMPLETENESS OR PERFORMANCE. | ||
30 | * $/LicenseInfo$ | ||
31 | * | ||
32 | */ | ||
33 | |||
34 | #ifndef LL_LLMEDIADATACLIENT_H | ||
35 | #define LL_LLMEDIADATACLIENT_H | ||
36 | |||
37 | #include "llhttpclient.h" | ||
38 | #include <queue> | ||
39 | //#include "llrefcount.h" | ||
40 | //#include "llpointer.h" | ||
41 | //#include "lleventtimer.h" | ||
42 | |||
43 | |||
44 | // Link seam for LLVOVolume | ||
45 | class LLMediaDataClientObject : public LLRefCount | ||
46 | { | ||
47 | public: | ||
48 | // Get the number of media data items | ||
49 | virtual U8 getMediaDataCount() const = 0; | ||
50 | // Get the media data at index, as an LLSD | ||
51 | virtual LLSD getMediaDataLLSD(U8 index) const = 0; | ||
52 | // Get this object's UUID | ||
53 | virtual LLUUID getID() const = 0; | ||
54 | // Navigate back to previous URL | ||
55 | virtual void mediaNavigateBounceBack(U8 index) = 0; | ||
56 | // Does this object have media? | ||
57 | virtual bool hasMedia() const = 0; | ||
58 | // Update the object's media data to the given array | ||
59 | virtual void updateObjectMediaData(LLSD const &media_data_array, const std::string &version_string) = 0; | ||
60 | // Return the total "interest" of the media (on-screen area) | ||
61 | virtual F64 getMediaInterest() const = 0; | ||
62 | // Return the given cap url | ||
63 | virtual std::string getCapabilityUrl(const std::string &name) const = 0; | ||
64 | // Return whether the object has been marked dead | ||
65 | virtual bool isDead() const = 0; | ||
66 | // Returns a media version number for the object | ||
67 | virtual U32 getMediaVersion() const = 0; | ||
68 | // Returns whether the object is "interesting enough" to fetch | ||
69 | virtual bool isInterestingEnough() const = 0; | ||
70 | // Returns whether we've seen this object yet or not | ||
71 | virtual bool isNew() const = 0; | ||
72 | |||
73 | // smart pointer | ||
74 | typedef LLPointer<LLMediaDataClientObject> ptr_t; | ||
75 | }; | ||
76 | |||
77 | // This object creates a priority queue for requests. | ||
78 | // Abstracts the Cap URL, the request, and the responder | ||
79 | class LLMediaDataClient : public LLRefCount | ||
80 | { | ||
81 | public: | ||
82 | LOG_CLASS(LLMediaDataClient); | ||
83 | |||
84 | const static F32 QUEUE_TIMER_DELAY;// = 1.0; // seconds(s) | ||
85 | const static F32 UNAVAILABLE_RETRY_TIMER_DELAY;// = 5.0; // secs | ||
86 | const static U32 MAX_RETRIES;// = 4; | ||
87 | const static U32 MAX_SORTED_QUEUE_SIZE;// = 10000; | ||
88 | const static U32 MAX_ROUND_ROBIN_QUEUE_SIZE;// = 10000; | ||
89 | |||
90 | // Constructor | ||
91 | LLMediaDataClient(F32 queue_timer_delay = QUEUE_TIMER_DELAY, | ||
92 | F32 retry_timer_delay = UNAVAILABLE_RETRY_TIMER_DELAY, | ||
93 | U32 max_retries = MAX_RETRIES, | ||
94 | U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE, | ||
95 | U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE); | ||
96 | |||
97 | // Make the request | ||
98 | void request(const LLMediaDataClientObject::ptr_t &object, const LLSD &payload); | ||
99 | |||
100 | F32 getRetryTimerDelay() const { return mRetryTimerDelay; } | ||
101 | |||
102 | // Returns true iff the queue is empty | ||
103 | bool isEmpty() const; | ||
104 | |||
105 | // Returns true iff the given object is in the queue | ||
106 | bool isInQueue(const LLMediaDataClientObject::ptr_t &object); | ||
107 | |||
108 | // Remove the given object from the queue. Returns true iff the given object is removed. | ||
109 | bool removeFromQueue(const LLMediaDataClientObject::ptr_t &object); | ||
110 | |||
111 | // Called only by the Queue timer and tests (potentially) | ||
112 | bool processQueueTimer(); | ||
113 | |||
114 | protected: | ||
115 | // Destructor | ||
116 | virtual ~LLMediaDataClient(); // use unref | ||
117 | |||
118 | // Request | ||
119 | class Request : public LLRefCount | ||
120 | { | ||
121 | public: | ||
122 | enum Type { | ||
123 | GET, | ||
124 | UPDATE, | ||
125 | NAVIGATE, | ||
126 | ANY | ||
127 | }; | ||
128 | |||
129 | Request(const char *cap_name, const LLSD& sd_payload, LLMediaDataClientObject *obj, LLMediaDataClient *mdc); | ||
130 | const char *getCapName() const { return mCapName; } | ||
131 | const LLSD &getPayload() const { return mPayload; } | ||
132 | LLMediaDataClientObject *getObject() const { return mObject; } | ||
133 | |||
134 | U32 getNum() const { return mNum; } | ||
135 | |||
136 | U32 getRetryCount() const { return mRetryCount; } | ||
137 | void incRetryCount() { mRetryCount++; } | ||
138 | |||
139 | // Note: may return empty string! | ||
140 | std::string getCapability() const; | ||
141 | |||
142 | Type getType() const; | ||
143 | const char *getTypeAsString() const; | ||
144 | |||
145 | // Re-enqueue thyself | ||
146 | void reEnqueue() const; | ||
147 | |||
148 | F32 getRetryTimerDelay() const; | ||
149 | U32 getMaxNumRetries() const; | ||
150 | |||
151 | bool isNew() const { return mObject.notNull() ? mObject->isNew() : false; } | ||
152 | void markSent(bool flag); | ||
153 | bool isMarkedSent() const { return mMarkedSent; } | ||
154 | void updateScore(); | ||
155 | F64 getScore() const { return mScore; } | ||
156 | |||
157 | public: | ||
158 | friend std::ostream& operator<<(std::ostream &s, const Request &q); | ||
159 | |||
160 | protected: | ||
161 | virtual ~Request(); // use unref(); | ||
162 | |||
163 | private: | ||
164 | const char *mCapName; | ||
165 | LLSD mPayload; | ||
166 | LLMediaDataClientObject::ptr_t mObject; | ||
167 | // Simple tracking | ||
168 | U32 mNum; | ||
169 | static U32 sNum; | ||
170 | U32 mRetryCount; | ||
171 | F64 mScore; | ||
172 | bool mMarkedSent; | ||
173 | |||
174 | // Back pointer to the MDC...not a ref! | ||
175 | LLMediaDataClient *mMDC; | ||
176 | }; | ||
177 | typedef LLPointer<Request> request_ptr_t; | ||
178 | |||
179 | // Responder | ||
180 | class Responder : public LLHTTPClient::Responder | ||
181 | { | ||
182 | public: | ||
183 | Responder(const request_ptr_t &request); | ||
184 | //If we get back an error (not found, etc...), handle it here | ||
185 | virtual void error(U32 status, const std::string& reason); | ||
186 | //If we get back a normal response, handle it here. Default just logs it. | ||
187 | virtual void result(const LLSD& content); | ||
188 | |||
189 | const request_ptr_t &getRequest() const { return mRequest; } | ||
190 | |||
191 | protected: | ||
192 | virtual ~Responder(); | ||
193 | |||
194 | private: | ||
195 | |||
196 | class RetryTimer : public LLEventTimer | ||
197 | { | ||
198 | public: | ||
199 | RetryTimer(F32 time, Responder *); | ||
200 | virtual ~RetryTimer(); | ||
201 | virtual BOOL tick(); | ||
202 | private: | ||
203 | // back-pointer | ||
204 | boost::intrusive_ptr<Responder> mResponder; | ||
205 | }; | ||
206 | |||
207 | request_ptr_t mRequest; | ||
208 | }; | ||
209 | |||
210 | protected: | ||
211 | |||
212 | // Subclasses must override this factory method to return a new responder | ||
213 | virtual Responder *createResponder(const request_ptr_t &request) const = 0; | ||
214 | |||
215 | // Subclasses must override to return a cap name | ||
216 | virtual const char *getCapabilityName() const = 0; | ||
217 | |||
218 | virtual void sortQueue(); | ||
219 | virtual void serviceQueue(); | ||
220 | |||
221 | private: | ||
222 | typedef std::list<request_ptr_t> request_queue_t; | ||
223 | |||
224 | void enqueue(const Request*); | ||
225 | |||
226 | // Return whether the given object is/was in the queue | ||
227 | static LLMediaDataClient::request_ptr_t findOrRemove(request_queue_t &queue, const LLMediaDataClientObject::ptr_t &obj, bool remove, Request::Type type); | ||
228 | |||
229 | // Comparator for sorting | ||
230 | static bool compareRequests(const request_ptr_t &o1, const request_ptr_t &o2); | ||
231 | static F64 getObjectScore(const LLMediaDataClientObject::ptr_t &obj); | ||
232 | |||
233 | friend std::ostream& operator<<(std::ostream &s, const Request &q); | ||
234 | friend std::ostream& operator<<(std::ostream &s, const request_queue_t &q); | ||
235 | |||
236 | class QueueTimer : public LLEventTimer | ||
237 | { | ||
238 | public: | ||
239 | QueueTimer(F32 time, LLMediaDataClient *mdc); | ||
240 | virtual BOOL tick(); | ||
241 | protected: | ||
242 | virtual ~QueueTimer(); | ||
243 | private: | ||
244 | // back-pointer | ||
245 | LLPointer<LLMediaDataClient> mMDC; | ||
246 | }; | ||
247 | |||
248 | void startQueueTimer(); | ||
249 | void stopQueueTimer(); | ||
250 | void setIsRunning(bool val) { mQueueTimerIsRunning = val; } | ||
251 | |||
252 | void swapCurrentQueue(); | ||
253 | request_queue_t *getCurrentQueue(); | ||
254 | |||
255 | const F32 mQueueTimerDelay; | ||
256 | const F32 mRetryTimerDelay; | ||
257 | const U32 mMaxNumRetries; | ||
258 | const U32 mMaxSortedQueueSize; | ||
259 | const U32 mMaxRoundRobinQueueSize; | ||
260 | |||
261 | bool mQueueTimerIsRunning; | ||
262 | |||
263 | request_queue_t mSortedQueue; | ||
264 | request_queue_t mRoundRobinQueue; | ||
265 | bool mCurrentQueueIsTheSortedQueue; | ||
266 | }; | ||
267 | |||
268 | |||
269 | // MediaDataClient specific for the ObjectMedia cap | ||
270 | class LLObjectMediaDataClient : public LLMediaDataClient | ||
271 | { | ||
272 | public: | ||
273 | LLObjectMediaDataClient(F32 queue_timer_delay = QUEUE_TIMER_DELAY, | ||
274 | F32 retry_timer_delay = UNAVAILABLE_RETRY_TIMER_DELAY, | ||
275 | U32 max_retries = MAX_RETRIES, | ||
276 | U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE, | ||
277 | U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE) | ||
278 | : LLMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries) | ||
279 | {} | ||
280 | virtual ~LLObjectMediaDataClient() {} | ||
281 | |||
282 | void fetchMedia(LLMediaDataClientObject *object); | ||
283 | void updateMedia(LLMediaDataClientObject *object); | ||
284 | |||
285 | protected: | ||
286 | // Subclasses must override this factory method to return a new responder | ||
287 | virtual Responder *createResponder(const request_ptr_t &request) const; | ||
288 | |||
289 | // Subclasses must override to return a cap name | ||
290 | virtual const char *getCapabilityName() const; | ||
291 | |||
292 | class Responder : public LLMediaDataClient::Responder | ||
293 | { | ||
294 | public: | ||
295 | Responder(const request_ptr_t &request) | ||
296 | : LLMediaDataClient::Responder(request) {} | ||
297 | virtual void result(const LLSD &content); | ||
298 | }; | ||
299 | }; | ||
300 | |||
301 | |||
302 | // MediaDataClient specific for the ObjectMediaNavigate cap | ||
303 | class LLObjectMediaNavigateClient : public LLMediaDataClient | ||
304 | { | ||
305 | public: | ||
306 | // NOTE: from llmediaservice.h | ||
307 | static const int ERROR_PERMISSION_DENIED_CODE = 8002; | ||
308 | |||
309 | LLObjectMediaNavigateClient(F32 queue_timer_delay = QUEUE_TIMER_DELAY, | ||
310 | F32 retry_timer_delay = UNAVAILABLE_RETRY_TIMER_DELAY, | ||
311 | U32 max_retries = MAX_RETRIES, | ||
312 | U32 max_sorted_queue_size = MAX_SORTED_QUEUE_SIZE, | ||
313 | U32 max_round_robin_queue_size = MAX_ROUND_ROBIN_QUEUE_SIZE) | ||
314 | : LLMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries) | ||
315 | {} | ||
316 | virtual ~LLObjectMediaNavigateClient() {} | ||
317 | |||
318 | void navigate(LLMediaDataClientObject *object, U8 texture_index, const std::string &url); | ||
319 | |||
320 | protected: | ||
321 | // Subclasses must override this factory method to return a new responder | ||
322 | virtual Responder *createResponder(const request_ptr_t &request) const; | ||
323 | |||
324 | // Subclasses must override to return a cap name | ||
325 | virtual const char *getCapabilityName() const; | ||
326 | |||
327 | class Responder : public LLMediaDataClient::Responder | ||
328 | { | ||
329 | public: | ||
330 | Responder(const request_ptr_t &request) | ||
331 | : LLMediaDataClient::Responder(request) {} | ||
332 | virtual void error(U32 status, const std::string& reason); | ||
333 | virtual void result(const LLSD &content); | ||
334 | private: | ||
335 | void mediaNavigateBounceBack(); | ||
336 | }; | ||
337 | |||
338 | }; | ||
339 | |||
340 | |||
341 | #endif // LL_LLMEDIADATACLIENT_H | ||
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp index dc0db8b..f249d2a 100644 --- a/linden/indra/newview/llpanelavatar.cpp +++ b/linden/indra/newview/llpanelavatar.cpp | |||
@@ -1321,11 +1321,11 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const std::string &name | |||
1321 | { | 1321 | { |
1322 | if (avatar_id.isNull()) return; | 1322 | if (avatar_id.isNull()) return; |
1323 | 1323 | ||
1324 | BOOL avatar_changed = FALSE; | 1324 | // BOOL avatar_changed = FALSE; |
1325 | if (avatar_id != mAvatarID) | 1325 | // if (avatar_id != mAvatarID) |
1326 | { | 1326 | // { |
1327 | avatar_changed = TRUE; | 1327 | // avatar_changed = TRUE; |
1328 | } | 1328 | // } |
1329 | mAvatarID = avatar_id; | 1329 | mAvatarID = avatar_id; |
1330 | 1330 | ||
1331 | // Determine if we have their calling card. | 1331 | // Determine if we have their calling card. |
diff --git a/linden/indra/newview/llpanelcontents.cpp b/linden/indra/newview/llpanelcontents.cpp index 02befea..c5df81c 100644 --- a/linden/indra/newview/llpanelcontents.cpp +++ b/linden/indra/newview/llpanelcontents.cpp | |||
@@ -83,8 +83,6 @@ | |||
83 | 83 | ||
84 | BOOL LLPanelContents::postBuild() | 84 | BOOL LLPanelContents::postBuild() |
85 | { | 85 | { |
86 | LLRect rect = this->getRect(); | ||
87 | |||
88 | setMouseOpaque(FALSE); | 86 | setMouseOpaque(FALSE); |
89 | 87 | ||
90 | childSetAction("button new script",&LLPanelContents::onClickNewScript, this); | 88 | childSetAction("button new script",&LLPanelContents::onClickNewScript, this); |
diff --git a/linden/indra/newview/llpanelface.cpp b/linden/indra/newview/llpanelface.cpp index b9a40da..d8401de 100644 --- a/linden/indra/newview/llpanelface.cpp +++ b/linden/indra/newview/llpanelface.cpp | |||
@@ -74,7 +74,6 @@ | |||
74 | 74 | ||
75 | BOOL LLPanelFace::postBuild() | 75 | BOOL LLPanelFace::postBuild() |
76 | { | 76 | { |
77 | LLRect rect = this->getRect(); | ||
78 | LLTextureCtrl* mTextureCtrl; | 77 | LLTextureCtrl* mTextureCtrl; |
79 | LLColorSwatchCtrl* mColorSwatch; | 78 | LLColorSwatchCtrl* mColorSwatch; |
80 | 79 | ||
diff --git a/linden/indra/newview/llpanelgrouplandmoney.cpp b/linden/indra/newview/llpanelgrouplandmoney.cpp index 3f128fe..e15f585 100644 --- a/linden/indra/newview/llpanelgrouplandmoney.cpp +++ b/linden/indra/newview/llpanelgrouplandmoney.cpp | |||
@@ -1390,13 +1390,11 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, | |||
1390 | S32 cur_land_tax; | 1390 | S32 cur_land_tax; |
1391 | S32 cur_group_tax; | 1391 | S32 cur_group_tax; |
1392 | S32 cur_parcel_dir_fee; | 1392 | S32 cur_parcel_dir_fee; |
1393 | S32 cur_total_tax; | ||
1394 | S32 proj_object_tax; | 1393 | S32 proj_object_tax; |
1395 | S32 proj_light_tax; | 1394 | S32 proj_light_tax; |
1396 | S32 proj_land_tax; | 1395 | S32 proj_land_tax; |
1397 | S32 proj_group_tax; | 1396 | S32 proj_group_tax; |
1398 | S32 proj_parcel_dir_fee; | 1397 | S32 proj_parcel_dir_fee; |
1399 | S32 proj_total_tax; | ||
1400 | S32 non_exempt_members; | 1398 | S32 non_exempt_members; |
1401 | 1399 | ||
1402 | msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_IntervalDays, interval_days ); | 1400 | msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_IntervalDays, interval_days ); |
@@ -1420,9 +1418,6 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, | |||
1420 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_LastTaxDate, last_stipend_date); | 1418 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_LastTaxDate, last_stipend_date); |
1421 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_TaxDate, next_stipend_date); | 1419 | msg->getStringFast(_PREHASH_MoneyData, _PREHASH_TaxDate, next_stipend_date); |
1422 | 1420 | ||
1423 | cur_total_tax = cur_object_tax + cur_light_tax + cur_land_tax + cur_group_tax + cur_parcel_dir_fee; | ||
1424 | proj_total_tax = proj_object_tax + proj_light_tax + proj_land_tax + proj_group_tax + proj_parcel_dir_fee; | ||
1425 | |||
1426 | if (interval_days != mImplementationp->mIntervalLength || | 1421 | if (interval_days != mImplementationp->mIntervalLength || |
1427 | current_interval != mImplementationp->mCurrentInterval) | 1422 | current_interval != mImplementationp->mCurrentInterval) |
1428 | { | 1423 | { |
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp index 824c5b0..524ecf6 100644 --- a/linden/indra/newview/llpanellogin.cpp +++ b/linden/indra/newview/llpanellogin.cpp | |||
@@ -602,18 +602,17 @@ void LLPanelLogin::addServer(const std::string& server) | |||
602 | const std::string &defaultGrid = gHippoGridManager->getDefaultGridNick(); | 602 | const std::string &defaultGrid = gHippoGridManager->getDefaultGridNick(); |
603 | 603 | ||
604 | LLComboBox *grids = sInstance->getChild<LLComboBox>("server_combo"); | 604 | LLComboBox *grids = sInstance->getChild<LLComboBox>("server_combo"); |
605 | S32 selectIndex = -1, i = 0; | 605 | S32 i = 0; |
606 | grids->removeall(); | 606 | grids->removeall(); |
607 | if (defaultGrid != "") { | 607 | if (defaultGrid != "") { |
608 | grids->add(defaultGrid); | 608 | grids->add(defaultGrid); |
609 | selectIndex = i++; | 609 | i++; |
610 | } | 610 | } |
611 | HippoGridManager::GridIterator it, end = gHippoGridManager->endGrid(); | 611 | HippoGridManager::GridIterator it, end = gHippoGridManager->endGrid(); |
612 | for (it = gHippoGridManager->beginGrid(); it != end; ++it) { | 612 | for (it = gHippoGridManager->beginGrid(); it != end; ++it) { |
613 | const std::string &grid = it->second->getGridNick(); | 613 | const std::string &grid = it->second->getGridNick(); |
614 | if (grid != defaultGrid) { | 614 | if (grid != defaultGrid) { |
615 | grids->add(grid); | 615 | grids->add(grid); |
616 | //if (grid == mCurGrid) selectIndex = i; | ||
617 | i++; | 616 | i++; |
618 | } | 617 | } |
619 | } | 618 | } |
diff --git a/linden/indra/newview/llpanelmediahud.cpp b/linden/indra/newview/llpanelmediahud.cpp index 39c4b63..c4afe27 100644 --- a/linden/indra/newview/llpanelmediahud.cpp +++ b/linden/indra/newview/llpanelmediahud.cpp | |||
@@ -356,7 +356,6 @@ void LLPanelMediaHUD::updateShape() | |||
356 | media_hud_rect.mRight += getRect().getWidth() - media_region->getRect().mRight; | 356 | media_hud_rect.mRight += getRect().getWidth() - media_region->getRect().mRight; |
357 | 357 | ||
358 | 358 | ||
359 | LLRect old_hud_rect = media_hud_rect; | ||
360 | // keep all parts of HUD on-screen | 359 | // keep all parts of HUD on-screen |
361 | media_hud_rect.intersectWith(getParent()->getLocalRect()); | 360 | media_hud_rect.intersectWith(getParent()->getLocalRect()); |
362 | 361 | ||
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp index cc89e24..bff365d 100644 --- a/linden/indra/newview/llpanelobject.cpp +++ b/linden/indra/newview/llpanelobject.cpp | |||
@@ -520,10 +520,10 @@ void LLPanelObject::getState( ) | |||
520 | mBtnPasteRot->setEnabled( enable_rotate ); | 520 | mBtnPasteRot->setEnabled( enable_rotate ); |
521 | mBtnPasteRotClip->setEnabled( enable_rotate ); | 521 | mBtnPasteRotClip->setEnabled( enable_rotate ); |
522 | 522 | ||
523 | BOOL owners_identical; | ||
524 | LLUUID owner_id; | 523 | LLUUID owner_id; |
525 | std::string owner_name; | 524 | std::string owner_name; |
526 | owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | 525 | // This is still needed for the side effects, though the result is not. |
526 | LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | ||
527 | 527 | ||
528 | // BUG? Check for all objects being editable? | 528 | // BUG? Check for all objects being editable? |
529 | S32 roots_selected = LLSelectMgr::getInstance()->getSelection()->getRootObjectCount(); | 529 | S32 roots_selected = LLSelectMgr::getInstance()->getSelection()->getRootObjectCount(); |
diff --git a/linden/indra/newview/llpanelpermissions.cpp b/linden/indra/newview/llpanelpermissions.cpp index 6b7bc1b..9799de7 100644 --- a/linden/indra/newview/llpanelpermissions.cpp +++ b/linden/indra/newview/llpanelpermissions.cpp | |||
@@ -541,7 +541,7 @@ void LLPanelPermissions::refresh() | |||
541 | // TODO: Creator permissions | 541 | // TODO: Creator permissions |
542 | 542 | ||
543 | BOOL valid_base_perms = FALSE; | 543 | BOOL valid_base_perms = FALSE; |
544 | BOOL valid_owner_perms = FALSE; | 544 | //BOOL valid_owner_perms = FALSE; |
545 | BOOL valid_group_perms = FALSE; | 545 | BOOL valid_group_perms = FALSE; |
546 | BOOL valid_everyone_perms = FALSE; | 546 | BOOL valid_everyone_perms = FALSE; |
547 | BOOL valid_next_perms = FALSE; | 547 | BOOL valid_next_perms = FALSE; |
@@ -561,7 +561,8 @@ void LLPanelPermissions::refresh() | |||
561 | &base_mask_on, | 561 | &base_mask_on, |
562 | &base_mask_off); | 562 | &base_mask_off); |
563 | 563 | ||
564 | valid_owner_perms = LLSelectMgr::getInstance()->selectGetPerm(PERM_OWNER, | 564 | // TODO - seems odd, but this is not actually used, except to set owner_mask_*. |
565 | /*valid_owner_perms =*/ LLSelectMgr::getInstance()->selectGetPerm(PERM_OWNER, | ||
565 | &owner_mask_on, | 566 | &owner_mask_on, |
566 | &owner_mask_off); | 567 | &owner_mask_off); |
567 | 568 | ||
diff --git a/linden/indra/newview/llpanelvolume.cpp b/linden/indra/newview/llpanelvolume.cpp index 6d014a2..e4e30c0 100644 --- a/linden/indra/newview/llpanelvolume.cpp +++ b/linden/indra/newview/llpanelvolume.cpp | |||
@@ -181,10 +181,10 @@ void LLPanelVolume::getState( ) | |||
181 | return; | 181 | return; |
182 | } | 182 | } |
183 | 183 | ||
184 | BOOL owners_identical; | ||
185 | LLUUID owner_id; | 184 | LLUUID owner_id; |
186 | std::string owner_name; | 185 | std::string owner_name; |
187 | owners_identical = LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | 186 | // This is still needed for the side effects, though the result is not. |
187 | LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name); | ||
188 | 188 | ||
189 | // BUG? Check for all objects being editable? | 189 | // BUG? Check for all objects being editable? |
190 | BOOL editable = root_objectp->permModify(); | 190 | BOOL editable = root_objectp->permModify(); |
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp index 4a6c8ed..bfe0e9c 100644 --- a/linden/indra/newview/llselectmgr.cpp +++ b/linden/indra/newview/llselectmgr.cpp | |||
@@ -1072,7 +1072,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & | |||
1072 | if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount()) | 1072 | if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount()) |
1073 | { | 1073 | { |
1074 | //LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject()); | 1074 | //LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject()); |
1075 | LLBBox bbox = mSavedSelectionBBox; | ||
1076 | mGridOrigin = mSavedSelectionBBox.getCenterAgent(); | 1075 | mGridOrigin = mSavedSelectionBBox.getCenterAgent(); |
1077 | mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f; | 1076 | mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f; |
1078 | 1077 | ||
@@ -1090,7 +1089,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 & | |||
1090 | else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull()) | 1089 | else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull()) |
1091 | { | 1090 | { |
1092 | mGridRotation = first_grid_object->getRenderRotation(); | 1091 | mGridRotation = first_grid_object->getRenderRotation(); |
1093 | LLVector3 first_grid_obj_pos = first_grid_object->getRenderPosition(); | ||
1094 | 1092 | ||
1095 | LLVector3 min_extents(F32_MAX, F32_MAX, F32_MAX); | 1093 | LLVector3 min_extents(F32_MAX, F32_MAX, F32_MAX); |
1096 | LLVector3 max_extents(-F32_MAX, -F32_MAX, -F32_MAX); | 1094 | LLVector3 max_extents(-F32_MAX, -F32_MAX, -F32_MAX); |
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp index d9fa5b5..a9255b3 100644 --- a/linden/indra/newview/llspatialpartition.cpp +++ b/linden/indra/newview/llspatialpartition.cpp | |||
@@ -2617,9 +2617,6 @@ public: | |||
2617 | return; | 2617 | return; |
2618 | } | 2618 | } |
2619 | 2619 | ||
2620 | LLVector3 nodeCenter = group->mBounds[0]; | ||
2621 | LLVector3 octCenter = LLVector3(group->mOctreeNode->getCenter()); | ||
2622 | |||
2623 | for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getData().begin(); i != branch->getData().end(); ++i) | 2620 | for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getData().begin(); i != branch->getData().end(); ++i) |
2624 | { | 2621 | { |
2625 | LLDrawable* drawable = *i; | 2622 | LLDrawable* drawable = *i; |
@@ -2860,9 +2857,6 @@ public: | |||
2860 | 2857 | ||
2861 | virtual bool check(LLDrawable* drawable) | 2858 | virtual bool check(LLDrawable* drawable) |
2862 | { | 2859 | { |
2863 | LLVector3 local_start = mStart; | ||
2864 | LLVector3 local_end = mEnd; | ||
2865 | |||
2866 | if (!gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible()) | 2860 | if (!gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible()) |
2867 | { | 2861 | { |
2868 | return false; | 2862 | return false; |
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 922de18..2fd96df 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp | |||
@@ -206,6 +206,8 @@ | |||
206 | #include "rlvhandler.h" | 206 | #include "rlvhandler.h" |
207 | // [/RLVa:KB] | 207 | // [/RLVa:KB] |
208 | 208 | ||
209 | #include "rcmoapradar.h" | ||
210 | |||
209 | #if LL_WINDOWS | 211 | #if LL_WINDOWS |
210 | #include "llwindebug.h" | 212 | #include "llwindebug.h" |
211 | #include "lldxhardware.h" | 213 | #include "lldxhardware.h" |
@@ -346,7 +348,6 @@ bool idle_startup() | |||
346 | const F32 TIMEOUT_SECONDS = 10.f; // changed from 5 to 10 seconds for OpenSim lag -- MC | 348 | const F32 TIMEOUT_SECONDS = 10.f; // changed from 5 to 10 seconds for OpenSim lag -- MC |
347 | const S32 MAX_TIMEOUT_COUNT = 3; | 349 | const S32 MAX_TIMEOUT_COUNT = 3; |
348 | static LLTimer timeout; | 350 | static LLTimer timeout; |
349 | static S32 timeout_count = 0; | ||
350 | 351 | ||
351 | static LLTimer login_time; | 352 | static LLTimer login_time; |
352 | static LLTimer connecting_region_timer; | 353 | static LLTimer connecting_region_timer; |
@@ -378,11 +379,10 @@ bool idle_startup() | |||
378 | 379 | ||
379 | // last location by default | 380 | // last location by default |
380 | static S32 agent_location_id = START_LOCATION_ID_LAST; | 381 | static S32 agent_location_id = START_LOCATION_ID_LAST; |
381 | static S32 location_which = START_LOCATION_ID_LAST; | ||
382 | 382 | ||
383 | static bool show_connect_box = true; | 383 | static bool show_connect_box = true; |
384 | 384 | ||
385 | static bool stipend_since_login = false; | 385 | //static bool stipend_since_login = false; |
386 | 386 | ||
387 | static bool samename = false; | 387 | static bool samename = false; |
388 | 388 | ||
@@ -797,8 +797,6 @@ bool idle_startup() | |||
797 | 797 | ||
798 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); | 798 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW); |
799 | 799 | ||
800 | timeout_count = 0; | ||
801 | |||
802 | if (LLStartUp::shouldAutoLogin()) | 800 | if (LLStartUp::shouldAutoLogin()) |
803 | { | 801 | { |
804 | show_connect_box = false; | 802 | show_connect_box = false; |
@@ -1111,7 +1109,6 @@ bool idle_startup() | |||
1111 | { | 1109 | { |
1112 | // Force login at the last location | 1110 | // Force login at the last location |
1113 | agent_location_id = START_LOCATION_ID_LAST; | 1111 | agent_location_id = START_LOCATION_ID_LAST; |
1114 | location_which = START_LOCATION_ID_LAST; | ||
1115 | gSavedSettings.setBOOL("LoginLastLocation", FALSE); | 1112 | gSavedSettings.setBOOL("LoginLastLocation", FALSE); |
1116 | 1113 | ||
1117 | // Clear some things that would cause us to divert to a user-specified location | 1114 | // Clear some things that would cause us to divert to a user-specified location |
@@ -1123,21 +1120,14 @@ bool idle_startup() | |||
1123 | { | 1120 | { |
1124 | // a startup URL was specified | 1121 | // a startup URL was specified |
1125 | agent_location_id = START_LOCATION_ID_URL; | 1122 | agent_location_id = START_LOCATION_ID_URL; |
1126 | |||
1127 | // doesn't really matter what location_which is, since | ||
1128 | // agent_start_look_at will be overwritten when the | ||
1129 | // UserLoginLocationReply arrives | ||
1130 | location_which = START_LOCATION_ID_LAST; | ||
1131 | } | 1123 | } |
1132 | else if (gSavedSettings.getBOOL("LoginLastLocation")) | 1124 | else if (gSavedSettings.getBOOL("LoginLastLocation")) |
1133 | { | 1125 | { |
1134 | agent_location_id = START_LOCATION_ID_LAST; // last location | 1126 | agent_location_id = START_LOCATION_ID_LAST; // last location |
1135 | location_which = START_LOCATION_ID_LAST; | ||
1136 | } | 1127 | } |
1137 | else | 1128 | else |
1138 | { | 1129 | { |
1139 | agent_location_id = START_LOCATION_ID_HOME; // home | 1130 | agent_location_id = START_LOCATION_ID_HOME; // home |
1140 | location_which = START_LOCATION_ID_HOME; | ||
1141 | } | 1131 | } |
1142 | 1132 | ||
1143 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_WAIT); | 1133 | gViewerWindow->getWindow()->setCursor(UI_CURSOR_WAIT); |
@@ -1783,11 +1773,11 @@ bool idle_startup() | |||
1783 | if((*it).second == "N") gAgent.setFirstLogin(TRUE); | 1773 | if((*it).second == "N") gAgent.setFirstLogin(TRUE); |
1784 | else gAgent.setFirstLogin(FALSE); | 1774 | else gAgent.setFirstLogin(FALSE); |
1785 | } | 1775 | } |
1786 | it = options[0].find("stipend_since_login"); | 1776 | //it = options[0].find("stipend_since_login"); |
1787 | if(it != no_flag) | 1777 | //if(it != no_flag) |
1788 | { | 1778 | //{ |
1789 | if((*it).second == "Y") stipend_since_login = true; | 1779 | // if((*it).second == "Y") stipend_since_login = true; |
1790 | } | 1780 | //} |
1791 | it = options[0].find("gendered"); | 1781 | it = options[0].find("gendered"); |
1792 | if(it != no_flag) | 1782 | if(it != no_flag) |
1793 | { | 1783 | { |
@@ -2079,6 +2069,16 @@ bool idle_startup() | |||
2079 | LLRect window(0, gViewerWindow->getWindowHeight(), gViewerWindow->getWindowWidth(), 0); | 2069 | LLRect window(0, gViewerWindow->getWindowHeight(), gViewerWindow->getWindowWidth(), 0); |
2080 | gViewerWindow->adjustControlRectanglesForFirstUse(window); | 2070 | gViewerWindow->adjustControlRectanglesForFirstUse(window); |
2081 | 2071 | ||
2072 | if (gSavedSettings.getBOOL("ShowRadar")) | ||
2073 | { | ||
2074 | LLFloaterAvatarList::showInstance(); | ||
2075 | } | ||
2076 | |||
2077 | if (gSavedSettings.getBOOL("ShowMOAPRadar")) | ||
2078 | { | ||
2079 | LLFloaterMOAPRadar::showInstance(); | ||
2080 | } | ||
2081 | |||
2082 | if(gSavedSettings.getBOOL("ShowMiniMap")) | 2082 | if(gSavedSettings.getBOOL("ShowMiniMap")) |
2083 | { | 2083 | { |
2084 | LLFloaterMap::showInstance(); | 2084 | LLFloaterMap::showInstance(); |
diff --git a/linden/indra/newview/llsurface.cpp b/linden/indra/newview/llsurface.cpp index 5a99e66..8692c80 100644 --- a/linden/indra/newview/llsurface.cpp +++ b/linden/indra/newview/llsurface.cpp | |||
@@ -1262,8 +1262,6 @@ BOOL LLSurface::generateWaterTexture(const F32 x, const F32 y, | |||
1262 | y_end = tex_width; | 1262 | y_end = tex_width; |
1263 | } | 1263 | } |
1264 | 1264 | ||
1265 | LLVector3d origin_global = from_region_handle(getRegion()->getHandle()); | ||
1266 | |||
1267 | // OK, for now, just have the composition value equal the height at the point. | 1265 | // OK, for now, just have the composition value equal the height at the point. |
1268 | LLVector3 location; | 1266 | LLVector3 location; |
1269 | LLColor4U coloru; | 1267 | LLColor4U coloru; |
diff --git a/linden/indra/newview/lltool.cpp b/linden/indra/newview/lltool.cpp index df2191b..f8188e3 100644 --- a/linden/indra/newview/lltool.cpp +++ b/linden/indra/newview/lltool.cpp | |||
@@ -40,10 +40,12 @@ | |||
40 | 40 | ||
41 | #include "llviewerwindow.h" | 41 | #include "llviewerwindow.h" |
42 | #include "lltoolcomp.h" | 42 | #include "lltoolcomp.h" |
43 | #include "lltoolface.h" | ||
43 | #include "lltoolfocus.h" | 44 | #include "lltoolfocus.h" |
44 | #include "llfocusmgr.h" | 45 | #include "llfocusmgr.h" |
45 | #include "llagent.h" | 46 | #include "llagent.h" |
46 | #include "llviewerjoystick.h" | 47 | #include "llviewerjoystick.h" |
48 | #include "qtoolalign.h" | ||
47 | 49 | ||
48 | extern BOOL gDebugClicks; | 50 | extern BOOL gDebugClicks; |
49 | 51 | ||
@@ -187,7 +189,7 @@ LLTool* LLTool::getOverrideTool(MASK mask) | |||
187 | { | 189 | { |
188 | return NULL; | 190 | return NULL; |
189 | } | 191 | } |
190 | if (mask & MASK_ALT) | 192 | else if (mask & MASK_ALT) |
191 | { | 193 | { |
192 | return LLToolCamera::getInstance(); | 194 | return LLToolCamera::getInstance(); |
193 | } | 195 | } |
diff --git a/linden/indra/newview/lltoolcomp.cpp b/linden/indra/newview/lltoolcomp.cpp index 7bf99f0..2ec1d8e 100644 --- a/linden/indra/newview/lltoolcomp.cpp +++ b/linden/indra/newview/lltoolcomp.cpp | |||
@@ -43,6 +43,7 @@ | |||
43 | #include "llmaniptranslate.h" | 43 | #include "llmaniptranslate.h" |
44 | #include "llmenugl.h" // for right-click menu hack | 44 | #include "llmenugl.h" // for right-click menu hack |
45 | #include "llselectmgr.h" | 45 | #include "llselectmgr.h" |
46 | #include "lltoolface.h" | ||
46 | #include "lltoolfocus.h" | 47 | #include "lltoolfocus.h" |
47 | #include "lltoolgrab.h" | 48 | #include "lltoolgrab.h" |
48 | #include "lltoolgun.h" | 49 | #include "lltoolgun.h" |
@@ -131,6 +132,36 @@ void LLToolComposite::handleSelect() | |||
131 | mSelected = TRUE; | 132 | mSelected = TRUE; |
132 | } | 133 | } |
133 | 134 | ||
135 | |||
136 | LLTool* LLToolComposite::getOverrideTool(MASK mask) | ||
137 | { | ||
138 | if (gKeyboard->getKeyDown('M') && | ||
139 | ((mask == (MASK_ALT | MASK_CONTROL)) || (mask == (MASK_ALT | MASK_CONTROL | MASK_SHIFT)))) | ||
140 | { | ||
141 | return QToolAlign::getInstance(); | ||
142 | } | ||
143 | else if (gKeyboard->getKeyDown('P') && | ||
144 | (mask == (MASK_CONTROL | MASK_SHIFT))) | ||
145 | { | ||
146 | return LLToolCompTranslate::getInstance(); | ||
147 | } | ||
148 | else if (gKeyboard->getKeyDown('F') && | ||
149 | (mask == (MASK_ALT | MASK_CONTROL))) | ||
150 | { | ||
151 | return LLToolFace::getInstance(); | ||
152 | } | ||
153 | else if (mask == (MASK_CONTROL | MASK_SHIFT)) | ||
154 | { | ||
155 | return LLToolCompScale::getInstance(); | ||
156 | } | ||
157 | else if (mask == MASK_CONTROL) | ||
158 | { | ||
159 | return LLToolCompRotate::getInstance(); | ||
160 | } | ||
161 | return LLTool::getOverrideTool(mask); | ||
162 | } | ||
163 | |||
164 | |||
134 | //---------------------------------------------------------------------------- | 165 | //---------------------------------------------------------------------------- |
135 | // LLToolCompInspect | 166 | // LLToolCompInspect |
136 | //---------------------------------------------------------------------------- | 167 | //---------------------------------------------------------------------------- |
@@ -277,24 +308,6 @@ BOOL LLToolCompTranslate::handleMouseUp(S32 x, S32 y, MASK mask) | |||
277 | return LLToolComposite::handleMouseUp(x, y, mask); | 308 | return LLToolComposite::handleMouseUp(x, y, mask); |
278 | } | 309 | } |
279 | 310 | ||
280 | LLTool* LLToolCompTranslate::getOverrideTool(MASK mask) | ||
281 | { | ||
282 | if (gKeyboard->getKeyDown('A') && | ||
283 | ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT)))) | ||
284 | { | ||
285 | return QToolAlign::getInstance(); | ||
286 | } | ||
287 | else if (mask == MASK_CONTROL) | ||
288 | { | ||
289 | return LLToolCompRotate::getInstance(); | ||
290 | } | ||
291 | else if (mask == (MASK_CONTROL | MASK_SHIFT)) | ||
292 | { | ||
293 | return LLToolCompScale::getInstance(); | ||
294 | } | ||
295 | return LLToolComposite::getOverrideTool(mask); | ||
296 | } | ||
297 | |||
298 | BOOL LLToolCompTranslate::handleDoubleClick(S32 x, S32 y, MASK mask) | 311 | BOOL LLToolCompTranslate::handleDoubleClick(S32 x, S32 y, MASK mask) |
299 | { | 312 | { |
300 | if (mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) | 313 | if (mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) |
@@ -401,22 +414,6 @@ BOOL LLToolCompScale::handleMouseUp(S32 x, S32 y, MASK mask) | |||
401 | return LLToolComposite::handleMouseUp(x, y, mask); | 414 | return LLToolComposite::handleMouseUp(x, y, mask); |
402 | } | 415 | } |
403 | 416 | ||
404 | LLTool* LLToolCompScale::getOverrideTool(MASK mask) | ||
405 | { | ||
406 | if (gKeyboard->getKeyDown('A') && | ||
407 | ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT)))) | ||
408 | { | ||
409 | return QToolAlign::getInstance(); | ||
410 | } | ||
411 | else if (mask == MASK_CONTROL) | ||
412 | { | ||
413 | return LLToolCompRotate::getInstance(); | ||
414 | } | ||
415 | |||
416 | return LLToolComposite::getOverrideTool(mask); | ||
417 | } | ||
418 | |||
419 | |||
420 | BOOL LLToolCompScale::handleDoubleClick(S32 x, S32 y, MASK mask) | 417 | BOOL LLToolCompScale::handleDoubleClick(S32 x, S32 y, MASK mask) |
421 | { | 418 | { |
422 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) | 419 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) |
@@ -471,18 +468,16 @@ LLToolCompCreate::~LLToolCompCreate() | |||
471 | 468 | ||
472 | BOOL LLToolCompCreate::handleMouseDown(S32 x, S32 y, MASK mask) | 469 | BOOL LLToolCompCreate::handleMouseDown(S32 x, S32 y, MASK mask) |
473 | { | 470 | { |
474 | BOOL handled = FALSE; | ||
475 | mMouseDown = TRUE; | 471 | mMouseDown = TRUE; |
476 | 472 | ||
477 | if ( (mask == MASK_SHIFT) || (mask == MASK_CONTROL) ) | 473 | if ( (mask == MASK_SHIFT) || (mask == MASK_CONTROL) ) |
478 | { | 474 | { |
479 | gViewerWindow->pickAsync(x, y, mask, pickCallback); | 475 | gViewerWindow->pickAsync(x, y, mask, pickCallback); |
480 | handled = TRUE; | ||
481 | } | 476 | } |
482 | else | 477 | else |
483 | { | 478 | { |
484 | setCurrentTool( mPlacer ); | 479 | setCurrentTool( mPlacer ); |
485 | handled = mPlacer->placeObject( x, y, mask ); | 480 | mPlacer->placeObject( x, y, mask ); |
486 | } | 481 | } |
487 | 482 | ||
488 | mObjectPlacedOnMouseDown = TRUE; | 483 | mObjectPlacedOnMouseDown = TRUE; |
@@ -606,20 +601,6 @@ BOOL LLToolCompRotate::handleMouseUp(S32 x, S32 y, MASK mask) | |||
606 | return LLToolComposite::handleMouseUp(x, y, mask); | 601 | return LLToolComposite::handleMouseUp(x, y, mask); |
607 | } | 602 | } |
608 | 603 | ||
609 | LLTool* LLToolCompRotate::getOverrideTool(MASK mask) | ||
610 | { | ||
611 | if (gKeyboard->getKeyDown('A') && | ||
612 | ((mask & MASK_CONTROL) || (mask == (MASK_CONTROL | MASK_SHIFT)))) | ||
613 | { | ||
614 | return QToolAlign::getInstance(); | ||
615 | } | ||
616 | else if (mask == (MASK_CONTROL | MASK_SHIFT)) | ||
617 | { | ||
618 | return LLToolCompScale::getInstance(); | ||
619 | } | ||
620 | return LLToolComposite::getOverrideTool(mask); | ||
621 | } | ||
622 | |||
623 | BOOL LLToolCompRotate::handleDoubleClick(S32 x, S32 y, MASK mask) | 604 | BOOL LLToolCompRotate::handleDoubleClick(S32 x, S32 y, MASK mask) |
624 | { | 605 | { |
625 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) | 606 | if (!mManip->getSelection()->isEmpty() && mManip->getHighlightedPart() == LLManip::LL_NO_PART) |
diff --git a/linden/indra/newview/lltoolcomp.h b/linden/indra/newview/lltoolcomp.h index 81ed0ba..cb5e544 100644 --- a/linden/indra/newview/lltoolcomp.h +++ b/linden/indra/newview/lltoolcomp.h | |||
@@ -84,6 +84,9 @@ public: | |||
84 | { mCur->localPointToScreen(local_x, local_y, screen_x, screen_y); } | 84 | { mCur->localPointToScreen(local_x, local_y, screen_x, screen_y); } |
85 | 85 | ||
86 | BOOL isSelecting(); | 86 | BOOL isSelecting(); |
87 | |||
88 | virtual LLTool* getOverrideTool(MASK mask); | ||
89 | |||
87 | protected: | 90 | protected: |
88 | void setCurrentTool( LLTool* new_tool ); | 91 | void setCurrentTool( LLTool* new_tool ); |
89 | LLTool* getCurrentTool() { return mCur; } | 92 | LLTool* getCurrentTool() { return mCur; } |
@@ -113,8 +116,8 @@ public: | |||
113 | virtual ~LLToolCompInspect(); | 116 | virtual ~LLToolCompInspect(); |
114 | 117 | ||
115 | // Overridden from LLToolComposite | 118 | // Overridden from LLToolComposite |
116 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 119 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
117 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 120 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
118 | 121 | ||
119 | static void pickCallback(const LLPickInfo& pick_info); | 122 | static void pickCallback(const LLPickInfo& pick_info); |
120 | }; | 123 | }; |
@@ -135,8 +138,6 @@ public: | |||
135 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool | 138 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool |
136 | virtual void render(); | 139 | virtual void render(); |
137 | 140 | ||
138 | virtual LLTool* getOverrideTool(MASK mask); | ||
139 | |||
140 | static void pickCallback(const LLPickInfo& pick_info); | 141 | static void pickCallback(const LLPickInfo& pick_info); |
141 | }; | 142 | }; |
142 | 143 | ||
@@ -150,14 +151,12 @@ public: | |||
150 | virtual ~LLToolCompScale(); | 151 | virtual ~LLToolCompScale(); |
151 | 152 | ||
152 | // Overridden from LLToolComposite | 153 | // Overridden from LLToolComposite |
153 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 154 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
154 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 155 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
155 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 156 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
156 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool | 157 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); // Returns to the default tool |
157 | virtual void render(); | 158 | virtual void render(); |
158 | 159 | ||
159 | virtual LLTool* getOverrideTool(MASK mask); | ||
160 | |||
161 | static void pickCallback(const LLPickInfo& pick_info); | 160 | static void pickCallback(const LLPickInfo& pick_info); |
162 | }; | 161 | }; |
163 | 162 | ||
@@ -172,17 +171,13 @@ public: | |||
172 | virtual ~LLToolCompRotate(); | 171 | virtual ~LLToolCompRotate(); |
173 | 172 | ||
174 | // Overridden from LLToolComposite | 173 | // Overridden from LLToolComposite |
175 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 174 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
176 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 175 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
177 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 176 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
178 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); | 177 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); |
179 | virtual void render(); | 178 | virtual void render(); |
180 | 179 | ||
181 | virtual LLTool* getOverrideTool(MASK mask); | ||
182 | |||
183 | static void pickCallback(const LLPickInfo& pick_info); | 180 | static void pickCallback(const LLPickInfo& pick_info); |
184 | |||
185 | protected: | ||
186 | }; | 181 | }; |
187 | 182 | ||
188 | //----------------------------------------------------------------------- | 183 | //----------------------------------------------------------------------- |
@@ -195,14 +190,14 @@ public: | |||
195 | virtual ~LLToolCompCreate(); | 190 | virtual ~LLToolCompCreate(); |
196 | 191 | ||
197 | // Overridden from LLToolComposite | 192 | // Overridden from LLToolComposite |
198 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 193 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
199 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 194 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
200 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); | 195 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); |
201 | 196 | ||
202 | static void pickCallback(const LLPickInfo& pick_info); | 197 | static void pickCallback(const LLPickInfo& pick_info); |
203 | protected: | 198 | protected: |
204 | LLToolPlacer* mPlacer; | 199 | LLToolPlacer* mPlacer; |
205 | BOOL mObjectPlacedOnMouseDown; | 200 | BOOL mObjectPlacedOnMouseDown; |
206 | }; | 201 | }; |
207 | 202 | ||
208 | 203 | ||
@@ -220,7 +215,7 @@ public: | |||
220 | virtual ~LLToolCompGun(); | 215 | virtual ~LLToolCompGun(); |
221 | 216 | ||
222 | // Overridden from LLToolComposite | 217 | // Overridden from LLToolComposite |
223 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 218 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
224 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 219 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
225 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | 220 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); |
226 | virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); | 221 | virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); |
diff --git a/linden/indra/newview/lltooldraganddrop.cpp b/linden/indra/newview/lltooldraganddrop.cpp index 18c4917..2adcf14 100644 --- a/linden/indra/newview/lltooldraganddrop.cpp +++ b/linden/indra/newview/lltooldraganddrop.cpp | |||
@@ -1521,18 +1521,6 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj, | |||
1521 | gFloaterTools->dirty(); | 1521 | gFloaterTools->dirty(); |
1522 | } | 1522 | } |
1523 | 1523 | ||
1524 | struct LLGiveInventoryInfo | ||
1525 | { | ||
1526 | LLUUID mToAgentID; | ||
1527 | LLUUID mInventoryObjectID; | ||
1528 | LLUUID mIMSessionID; | ||
1529 | LLGiveInventoryInfo(const LLUUID& to_agent, const LLUUID& obj_id, const LLUUID &im_session_id = LLUUID::null) : | ||
1530 | mToAgentID(to_agent), | ||
1531 | mInventoryObjectID(obj_id), | ||
1532 | mIMSessionID(im_session_id) | ||
1533 | {} | ||
1534 | }; | ||
1535 | |||
1536 | void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent, | 1524 | void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent, |
1537 | LLInventoryItem* item, | 1525 | LLInventoryItem* item, |
1538 | const LLUUID& im_session_id) | 1526 | const LLUUID& im_session_id) |
@@ -1701,8 +1689,6 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent, | |||
1701 | } | 1689 | } |
1702 | else | 1690 | else |
1703 | { | 1691 | { |
1704 | LLGiveInventoryInfo* info = NULL; | ||
1705 | info = new LLGiveInventoryInfo(to_agent, cat->getUUID(), im_session_id); | ||
1706 | LLSD args; | 1692 | LLSD args; |
1707 | args["COUNT"] = llformat("%d",giveable.countNoCopy()); | 1693 | args["COUNT"] = llformat("%d",giveable.countNoCopy()); |
1708 | LLSD payload; | 1694 | LLSD payload; |
diff --git a/linden/indra/newview/lltoolface.cpp b/linden/indra/newview/lltoolface.cpp index 735ecd9..834bf76 100644 --- a/linden/indra/newview/lltoolface.cpp +++ b/linden/indra/newview/lltoolface.cpp | |||
@@ -57,7 +57,7 @@ | |||
57 | // | 57 | // |
58 | 58 | ||
59 | LLToolFace::LLToolFace() | 59 | LLToolFace::LLToolFace() |
60 | : LLTool(std::string("Texture")) | 60 | : LLToolComposite(std::string("Texture")) |
61 | { } | 61 | { } |
62 | 62 | ||
63 | 63 | ||
@@ -156,6 +156,7 @@ void LLToolFace::pickCallback(const LLPickInfo& pick_info) | |||
156 | 156 | ||
157 | void LLToolFace::handleSelect() | 157 | void LLToolFace::handleSelect() |
158 | { | 158 | { |
159 | gFloaterTools->setStatusText("selectface"); | ||
159 | // From now on, draw faces | 160 | // From now on, draw faces |
160 | LLSelectMgr::getInstance()->setTEMode(TRUE); | 161 | LLSelectMgr::getInstance()->setTEMode(TRUE); |
161 | } | 162 | } |
diff --git a/linden/indra/newview/lltoolface.h b/linden/indra/newview/lltoolface.h index f2b7d23..fc6f7de 100644 --- a/linden/indra/newview/lltoolface.h +++ b/linden/indra/newview/lltoolface.h | |||
@@ -34,12 +34,13 @@ | |||
34 | #define LL_LLTOOLFACE_H | 34 | #define LL_LLTOOLFACE_H |
35 | 35 | ||
36 | #include "lltool.h" | 36 | #include "lltool.h" |
37 | #include "lltoolcomp.h" | ||
37 | 38 | ||
38 | class LLViewerObject; | 39 | class LLViewerObject; |
39 | class LLPickInfo; | 40 | class LLPickInfo; |
40 | 41 | ||
41 | class LLToolFace | 42 | class LLToolFace |
42 | : public LLTool, public LLSingleton<LLToolFace> | 43 | : public LLToolComposite, public LLSingleton<LLToolFace> |
43 | { | 44 | { |
44 | public: | 45 | public: |
45 | LLToolFace(); | 46 | LLToolFace(); |
diff --git a/linden/indra/newview/lltoolfocus.cpp b/linden/indra/newview/lltoolfocus.cpp index ae0cd1e..c0dedb6 100644 --- a/linden/indra/newview/lltoolfocus.cpp +++ b/linden/indra/newview/lltoolfocus.cpp | |||
@@ -318,8 +318,6 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) | |||
318 | S32 dx = gViewerWindow->getCurrentMouseDX(); | 318 | S32 dx = gViewerWindow->getCurrentMouseDX(); |
319 | S32 dy = gViewerWindow->getCurrentMouseDY(); | 319 | S32 dy = gViewerWindow->getCurrentMouseDY(); |
320 | 320 | ||
321 | BOOL moved_outside_slop = FALSE; | ||
322 | |||
323 | if (hasMouseCapture() && mValidClickPoint) | 321 | if (hasMouseCapture() && mValidClickPoint) |
324 | { | 322 | { |
325 | mAccumX += llabs(dx); | 323 | mAccumX += llabs(dx); |
@@ -327,19 +325,11 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) | |||
327 | 325 | ||
328 | if (mAccumX >= SLOP_RANGE) | 326 | if (mAccumX >= SLOP_RANGE) |
329 | { | 327 | { |
330 | if (!mOutsideSlopX) | ||
331 | { | ||
332 | moved_outside_slop = TRUE; | ||
333 | } | ||
334 | mOutsideSlopX = TRUE; | 328 | mOutsideSlopX = TRUE; |
335 | } | 329 | } |
336 | 330 | ||
337 | if (mAccumY >= SLOP_RANGE) | 331 | if (mAccumY >= SLOP_RANGE) |
338 | { | 332 | { |
339 | if (!mOutsideSlopY) | ||
340 | { | ||
341 | moved_outside_slop = TRUE; | ||
342 | } | ||
343 | mOutsideSlopY = TRUE; | 333 | mOutsideSlopY = TRUE; |
344 | } | 334 | } |
345 | } | 335 | } |
diff --git a/linden/indra/newview/lltoolmgr.cpp b/linden/indra/newview/lltoolmgr.cpp index 675412d..9e7bc5c 100644 --- a/linden/indra/newview/lltoolmgr.cpp +++ b/linden/indra/newview/lltoolmgr.cpp | |||
@@ -193,7 +193,7 @@ LLTool* LLToolMgr::getCurrentTool() | |||
193 | else | 193 | else |
194 | { | 194 | { |
195 | // due to window management weirdness we can get here with gToolNull | 195 | // due to window management weirdness we can get here with gToolNull |
196 | bool can_override = mBaseTool && (mBaseTool != gToolNull) ; | 196 | bool can_override = mBaseTool && (mBaseTool != gToolNull); |
197 | mOverrideTool = can_override ? mBaseTool->getOverrideTool(override_mask) : NULL; | 197 | mOverrideTool = can_override ? mBaseTool->getOverrideTool(override_mask) : NULL; |
198 | 198 | ||
199 | // use keyboard-override tool if available otherwise drop back to base tool | 199 | // use keyboard-override tool if available otherwise drop back to base tool |
diff --git a/linden/indra/newview/llurlhistory.cpp b/linden/indra/newview/llurlhistory.cpp index b187f3b..1d6c87f 100644 --- a/linden/indra/newview/llurlhistory.cpp +++ b/linden/indra/newview/llurlhistory.cpp | |||
@@ -119,8 +119,6 @@ void LLURLHistory::addURL(const std::string& collection, const std::string& url) | |||
119 | // static | 119 | // static |
120 | void LLURLHistory::removeURL(const std::string& collection, const std::string& url) | 120 | void LLURLHistory::removeURL(const std::string& collection, const std::string& url) |
121 | { | 121 | { |
122 | LLSD::array_iterator iter = sHistorySD[collection].beginArray(); | ||
123 | LLSD::array_iterator end = sHistorySD[collection].endArray(); | ||
124 | for(int index = 0; index < sHistorySD[collection].size(); index++) | 122 | for(int index = 0; index < sHistorySD[collection].size(); index++) |
125 | { | 123 | { |
126 | if(sHistorySD[collection].get(index).asString() == url) | 124 | if(sHistorySD[collection].get(index).asString() == url) |
diff --git a/linden/indra/newview/llviewercamera.cpp b/linden/indra/newview/llviewercamera.cpp index fecab65..69a5621 100644 --- a/linden/indra/newview/llviewercamera.cpp +++ b/linden/indra/newview/llviewercamera.cpp | |||
@@ -131,9 +131,6 @@ void LLViewerCamera::updateCameraLocation(const LLVector3 ¢er, | |||
131 | 131 | ||
132 | mLastPointOfInterest = point_of_interest; | 132 | mLastPointOfInterest = point_of_interest; |
133 | 133 | ||
134 | // constrain to max distance from avatar | ||
135 | LLVector3 camera_offset = center - gAgent.getPositionAgent(); | ||
136 | |||
137 | LLViewerRegion * regp = gAgent.getRegion(); | 134 | LLViewerRegion * regp = gAgent.getRegion(); |
138 | F32 water_height = (NULL != regp) ? regp->getWaterHeight() : 0.f; | 135 | F32 water_height = (NULL != regp) ? regp->getWaterHeight() : 0.f; |
139 | 136 | ||
@@ -306,7 +303,7 @@ void LLViewerCamera::setPerspective(BOOL for_selection, | |||
306 | { | 303 | { |
307 | F32 fov_y, aspect; | 304 | F32 fov_y, aspect; |
308 | fov_y = RAD_TO_DEG * getView(); | 305 | fov_y = RAD_TO_DEG * getView(); |
309 | BOOL z_default_near, z_default_far = FALSE; | 306 | BOOL z_default_far = FALSE; |
310 | if (z_far <= 0) | 307 | if (z_far <= 0) |
311 | { | 308 | { |
312 | z_default_far = TRUE; | 309 | z_default_far = TRUE; |
@@ -314,7 +311,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection, | |||
314 | } | 311 | } |
315 | if (z_near <= 0) | 312 | if (z_near <= 0) |
316 | { | 313 | { |
317 | z_default_near = TRUE; | ||
318 | z_near = getNear(); | 314 | z_near = getNear(); |
319 | } | 315 | } |
320 | aspect = getAspect(); | 316 | aspect = getAspect(); |
diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp index 59a87d5..22c17d9 100644 --- a/linden/indra/newview/llviewerdisplay.cpp +++ b/linden/indra/newview/llviewerdisplay.cpp | |||
@@ -977,7 +977,6 @@ void render_hud_attachments() | |||
977 | if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices()) | 977 | if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices()) |
978 | { | 978 | { |
979 | LLCamera hud_cam = *LLViewerCamera::getInstance(); | 979 | LLCamera hud_cam = *LLViewerCamera::getInstance(); |
980 | LLVector3 origin = hud_cam.getOrigin(); | ||
981 | hud_cam.setOrigin(-1.f,0,0); | 980 | hud_cam.setOrigin(-1.f,0,0); |
982 | hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1)); | 981 | hud_cam.setAxes(LLVector3(1,0,0), LLVector3(0,1,0), LLVector3(0,0,1)); |
983 | LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE); | 982 | LLViewerCamera::updateFrustumPlanes(hud_cam, TRUE); |
diff --git a/linden/indra/newview/llviewergenericmessage.cpp b/linden/indra/newview/llviewergenericmessage.cpp index 53549fc..779ed01 100644 --- a/linden/indra/newview/llviewergenericmessage.cpp +++ b/linden/indra/newview/llviewergenericmessage.cpp | |||
@@ -39,7 +39,7 @@ | |||
39 | #include "message.h" | 39 | #include "message.h" |
40 | #include "llagent.h" | 40 | #include "llagent.h" |
41 | #include "lluuid.h" | 41 | #include "lluuid.h" |
42 | #include "lightshare.h" | 42 | #include "llettherebelight.h" |
43 | 43 | ||
44 | 44 | ||
45 | LLDispatcher gGenericDispatcher; | 45 | LLDispatcher gGenericDispatcher; |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index a83c11b..0f6e5c4 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -238,6 +238,8 @@ | |||
238 | #include "llfloaterteleporthistory.h" | 238 | #include "llfloaterteleporthistory.h" |
239 | #include "slfloatermediafilter.h" | 239 | #include "slfloatermediafilter.h" |
240 | 240 | ||
241 | #include "rcmoapradar.h" | ||
242 | |||
241 | using namespace LLVOAvatarDefines; | 243 | using namespace LLVOAvatarDefines; |
242 | void init_client_menu(LLMenuGL* menu); | 244 | void init_client_menu(LLMenuGL* menu); |
243 | void init_server_menu(LLMenuGL* menu); | 245 | void init_server_menu(LLMenuGL* menu); |
@@ -1096,10 +1098,10 @@ void init_debug_ui_menu(LLMenuGL* menu) | |||
1096 | menu->append(new LLMenuItemCallGL("Editable UI", &edit_ui)); | 1098 | menu->append(new LLMenuItemCallGL("Editable UI", &edit_ui)); |
1097 | menu->append(new LLMenuItemCallGL( "Dump SelectMgr", &dump_select_mgr)); | 1099 | menu->append(new LLMenuItemCallGL( "Dump SelectMgr", &dump_select_mgr)); |
1098 | menu->append(new LLMenuItemCallGL( "Dump Inventory", &dump_inventory)); | 1100 | menu->append(new LLMenuItemCallGL( "Dump Inventory", &dump_inventory)); |
1099 | menu->append(new LLMenuItemCallGL( "Dump Focus Holder", &handle_dump_focus, NULL, NULL, 'F', MASK_ALT | MASK_CONTROL)); | 1101 | menu->append(new LLMenuItemCallGL( "Dump Focus Holder", &handle_dump_focus)); |
1100 | menu->append(new LLMenuItemCallGL( "Print Selected Object Info", &print_object_info, NULL, NULL, 'P', MASK_CONTROL|MASK_SHIFT )); | 1102 | menu->append(new LLMenuItemCallGL( "Print Selected Object Info", &print_object_info)); |
1101 | menu->append(new LLMenuItemCallGL( "Print Agent Info", &print_agent_nvpairs, NULL, NULL, 'P', MASK_SHIFT )); | 1103 | menu->append(new LLMenuItemCallGL( "Print Agent Info", &print_agent_nvpairs)); |
1102 | menu->append(new LLMenuItemCallGL( "Memory Stats", &output_statistics, NULL, NULL, 'M', MASK_SHIFT | MASK_ALT | MASK_CONTROL)); | 1104 | menu->append(new LLMenuItemCallGL( "Memory Stats", &output_statistics)); |
1103 | menu->append(new LLMenuItemCheckGL("Double-Click Auto-Pilot", | 1105 | menu->append(new LLMenuItemCheckGL("Double-Click Auto-Pilot", |
1104 | menu_toggle_control, NULL, menu_check_control, | 1106 | menu_toggle_control, NULL, menu_check_control, |
1105 | (void*)"DoubleClickAutoPilot")); | 1107 | (void*)"DoubleClickAutoPilot")); |
@@ -1256,7 +1258,6 @@ void init_debug_rendering_menu(LLMenuGL* menu) | |||
1256 | sub_menu->append(new LLMenuItemCheckGL("Octree", &LLPipeline::toggleRenderDebug, NULL, | 1258 | sub_menu->append(new LLMenuItemCheckGL("Octree", &LLPipeline::toggleRenderDebug, NULL, |
1257 | &LLPipeline::toggleRenderDebugControl, | 1259 | &LLPipeline::toggleRenderDebugControl, |
1258 | (void*)LLPipeline::RENDER_DEBUG_OCTREE)); | 1260 | (void*)LLPipeline::RENDER_DEBUG_OCTREE)); |
1259 | // For Imprudence 1.3 - need to XUIfy | ||
1260 | sub_menu->append(new LLMenuItemCheckGL("Shadow Frusta", &LLPipeline::toggleRenderDebug, NULL, | 1261 | sub_menu->append(new LLMenuItemCheckGL("Shadow Frusta", &LLPipeline::toggleRenderDebug, NULL, |
1261 | &LLPipeline::toggleRenderDebugControl, | 1262 | &LLPipeline::toggleRenderDebugControl, |
1262 | (void*)LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA)); | 1263 | (void*)LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA)); |
@@ -5216,6 +5217,24 @@ class LLViewEnableLastChatter : public view_listener_t | |||
5216 | } | 5217 | } |
5217 | }; | 5218 | }; |
5218 | 5219 | ||
5220 | class LLViewToggleRadar: public view_listener_t | ||
5221 | { | ||
5222 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
5223 | { | ||
5224 | LLFloaterAvatarList::toggle(0); | ||
5225 | return true; | ||
5226 | } | ||
5227 | }; | ||
5228 | |||
5229 | class LLViewToggleMOAPRadar: public view_listener_t | ||
5230 | { | ||
5231 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
5232 | { | ||
5233 | LLFloaterMOAPRadar::toggle(0); | ||
5234 | return true; | ||
5235 | } | ||
5236 | }; | ||
5237 | |||
5219 | class LLEditEnableDeselect : public view_listener_t | 5238 | class LLEditEnableDeselect : public view_listener_t |
5220 | { | 5239 | { |
5221 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 5240 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
@@ -8946,12 +8965,6 @@ class LLAdvancedToggleAssetBrowser: public view_listener_t | |||
8946 | { | 8965 | { |
8947 | //open the floater | 8966 | //open the floater |
8948 | LLFloaterAssetBrowser::show(0); | 8967 | LLFloaterAssetBrowser::show(0); |
8949 | |||
8950 | bool vis = false; | ||
8951 | if(LLFloaterAssetBrowser::getInstance()) | ||
8952 | { | ||
8953 | vis = (bool)LLFloaterAssetBrowser::getInstance()->getVisible(); | ||
8954 | } | ||
8955 | return true; | 8968 | return true; |
8956 | } | 8969 | } |
8957 | }; | 8970 | }; |
@@ -9058,7 +9071,7 @@ class LLAdvancedToggleRenderType : public view_listener_t | |||
9058 | { | 9071 | { |
9059 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9072 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9060 | { | 9073 | { |
9061 | U32 render_type = render_type_from_string( userdata.asString() ); | 9074 | intptr_t render_type = render_type_from_string( userdata.asString() ); |
9062 | if ( render_type != 0 ) | 9075 | if ( render_type != 0 ) |
9063 | { | 9076 | { |
9064 | LLPipeline::toggleRenderTypeControl( (void*)render_type ); | 9077 | LLPipeline::toggleRenderTypeControl( (void*)render_type ); |
@@ -9072,7 +9085,7 @@ class LLAdvancedCheckRenderType : public view_listener_t | |||
9072 | { | 9085 | { |
9073 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9086 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9074 | { | 9087 | { |
9075 | U32 render_type = render_type_from_string( userdata["data"].asString() ); | 9088 | intptr_t render_type = render_type_from_string( userdata["data"].asString() ); |
9076 | bool new_value = false; | 9089 | bool new_value = false; |
9077 | 9090 | ||
9078 | if ( render_type != 0 ) | 9091 | if ( render_type != 0 ) |
@@ -9138,7 +9151,7 @@ class LLAdvancedToggleFeature : public view_listener_t | |||
9138 | { | 9151 | { |
9139 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9152 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9140 | { | 9153 | { |
9141 | U32 feature = feature_from_string( userdata.asString() ); | 9154 | intptr_t feature = feature_from_string( userdata.asString() ); |
9142 | 9155 | ||
9143 | if ( feature != 0 ) | 9156 | if ( feature != 0 ) |
9144 | { | 9157 | { |
@@ -9154,7 +9167,7 @@ class LLAdvancedCheckFeature : public view_listener_t | |||
9154 | { | 9167 | { |
9155 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9168 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9156 | { | 9169 | { |
9157 | U32 feature = feature_from_string( userdata["data"].asString() ); | 9170 | intptr_t feature = feature_from_string( userdata["data"].asString() ); |
9158 | bool new_value = false; | 9171 | bool new_value = false; |
9159 | 9172 | ||
9160 | if ( feature != 0 ) | 9173 | if ( feature != 0 ) |
@@ -9249,6 +9262,10 @@ U32 info_display_from_string(std::string info_display) | |||
9249 | { | 9262 | { |
9250 | return LLPipeline::RENDER_DEBUG_SCULPTED; | 9263 | return LLPipeline::RENDER_DEBUG_SCULPTED; |
9251 | } | 9264 | } |
9265 | else if ("shadow frusta" == info_display) | ||
9266 | { | ||
9267 | return LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA; | ||
9268 | } | ||
9252 | else | 9269 | else |
9253 | { | 9270 | { |
9254 | return 0; | 9271 | return 0; |
@@ -9260,7 +9277,7 @@ class LLAdvancedToggleInfoDisplay : public view_listener_t | |||
9260 | { | 9277 | { |
9261 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9278 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9262 | { | 9279 | { |
9263 | U32 info_display = info_display_from_string( userdata.asString() ); | 9280 | intptr_t info_display = info_display_from_string( userdata.asString() ); |
9264 | 9281 | ||
9265 | if ( info_display != 0 ) | 9282 | if ( info_display != 0 ) |
9266 | { | 9283 | { |
@@ -9276,7 +9293,7 @@ class LLAdvancedCheckInfoDisplay : public view_listener_t | |||
9276 | { | 9293 | { |
9277 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | 9294 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) |
9278 | { | 9295 | { |
9279 | U32 info_display = info_display_from_string( userdata["data"].asString() ); | 9296 | intptr_t info_display = info_display_from_string( userdata["data"].asString() ); |
9280 | bool new_value = false; | 9297 | bool new_value = false; |
9281 | 9298 | ||
9282 | if ( info_display != 0 ) | 9299 | if ( info_display != 0 ) |
@@ -11215,6 +11232,8 @@ void initialize_menus() | |||
11215 | addMenu(new LLViewEnableMouselook(), "View.EnableMouselook"); | 11232 | addMenu(new LLViewEnableMouselook(), "View.EnableMouselook"); |
11216 | addMenu(new LLViewEnableJoystickFlycam(), "View.EnableJoystickFlycam"); | 11233 | addMenu(new LLViewEnableJoystickFlycam(), "View.EnableJoystickFlycam"); |
11217 | addMenu(new LLViewEnableLastChatter(), "View.EnableLastChatter"); | 11234 | addMenu(new LLViewEnableLastChatter(), "View.EnableLastChatter"); |
11235 | addMenu(new LLViewToggleRadar(), "View.ToggleAvatarList"); | ||
11236 | addMenu(new LLViewToggleMOAPRadar(), "View.ToggleMOAPList"); | ||
11218 | 11237 | ||
11219 | addMenu(new LLViewCheckBuildMode(), "View.CheckBuildMode"); | 11238 | addMenu(new LLViewCheckBuildMode(), "View.CheckBuildMode"); |
11220 | addMenu(new LLViewCheckJoystickFlycam(), "View.CheckJoystickFlycam"); | 11239 | addMenu(new LLViewCheckJoystickFlycam(), "View.CheckJoystickFlycam"); |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 3fdfbef..92e3fa9 100755..100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -65,7 +65,7 @@ | |||
65 | #include "lltimer.h" | 65 | #include "lltimer.h" |
66 | #include "llmd5.h" | 66 | #include "llmd5.h" |
67 | 67 | ||
68 | #include "lightshare.h" | 68 | #include "llettherebelight.h" |
69 | #include "llagent.h" | 69 | #include "llagent.h" |
70 | #include "llcallingcard.h" | 70 | #include "llcallingcard.h" |
71 | #include "llconsole.h" | 71 | #include "llconsole.h" |
@@ -653,7 +653,6 @@ void send_sound_trigger(const LLUUID& sound_id, F32 gain) | |||
653 | bool join_group_response(const LLSD& notification, const LLSD& response) | 653 | bool join_group_response(const LLSD& notification, const LLSD& response) |
654 | { | 654 | { |
655 | S32 option = LLNotification::getSelectedOption(notification, response); | 655 | S32 option = LLNotification::getSelectedOption(notification, response); |
656 | BOOL delete_context_data = TRUE; | ||
657 | bool accept_invite = false; | 656 | bool accept_invite = false; |
658 | 657 | ||
659 | LLUUID group_id = notification["payload"]["group_id"].asUUID(); | 658 | LLUUID group_id = notification["payload"]["group_id"].asUUID(); |
@@ -682,7 +681,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response) | |||
682 | } | 681 | } |
683 | else | 682 | else |
684 | { | 683 | { |
685 | delete_context_data = FALSE; | ||
686 | LLSD args; | 684 | LLSD args; |
687 | args["NAME"] = name; | 685 | args["NAME"] = name; |
688 | args["INVITE"] = message; | 686 | args["INVITE"] = message; |
@@ -696,7 +694,6 @@ bool join_group_response(const LLSD& notification, const LLSD& response) | |||
696 | // sure the user is sure they want to join. | 694 | // sure the user is sure they want to join. |
697 | if (fee > 0) | 695 | if (fee > 0) |
698 | { | 696 | { |
699 | delete_context_data = FALSE; | ||
700 | LLSD args; | 697 | LLSD args; |
701 | args["COST"] = llformat("%d", fee); | 698 | args["COST"] = llformat("%d", fee); |
702 | args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol(); | 699 | args["CURRENCY"] = gHippoGridManager->getConnectedGrid()->getCurrencySymbol(); |
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp index 576f312..880e1bb 100644 --- a/linden/indra/newview/llviewerobject.cpp +++ b/linden/indra/newview/llviewerobject.cpp | |||
@@ -2046,9 +2046,6 @@ BOOL LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) | |||
2046 | if (HJT_HINGE == mJointInfo->mJointType) | 2046 | if (HJT_HINGE == mJointInfo->mJointType) |
2047 | { | 2047 | { |
2048 | // hinge = uniform circular motion | 2048 | // hinge = uniform circular motion |
2049 | LLVector3 parent_pivot = getVelocity(); | ||
2050 | LLVector3 parent_axis = getAcceleration(); | ||
2051 | |||
2052 | angle = dt * (ang_vel * mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis | 2049 | angle = dt * (ang_vel * mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis |
2053 | dQ.setQuat(angle, mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis | 2050 | dQ.setQuat(angle, mJointInfo->mAxisOrAnchor); // AxisOrAnchor = axis |
2054 | LLVector3 pivot_offset = pos - mJointInfo->mPivot; // pos in pivot-frame | 2051 | LLVector3 pivot_offset = pos - mJointInfo->mPivot; // pos in pivot-frame |
diff --git a/linden/indra/newview/llviewerobject.h b/linden/indra/newview/llviewerobject.h index 9b05470..98b7115 100644 --- a/linden/indra/newview/llviewerobject.h +++ b/linden/indra/newview/llviewerobject.h | |||
@@ -157,7 +157,13 @@ public: | |||
157 | enum { MEDIA_TYPE_NONE = 0, MEDIA_TYPE_WEB_PAGE = 1 }; | 157 | enum { MEDIA_TYPE_NONE = 0, MEDIA_TYPE_WEB_PAGE = 1 }; |
158 | 158 | ||
159 | // Return codes for processUpdateMessage | 159 | // Return codes for processUpdateMessage |
160 | enum { MEDIA_URL_REMOVED = 0x1, MEDIA_URL_ADDED = 0x2, MEDIA_URL_UPDATED = 0x4, INVALID_UPDATE = 0x80000000 }; | 160 | enum { |
161 | MEDIA_URL_REMOVED = 0x1, | ||
162 | MEDIA_URL_ADDED = 0x2, | ||
163 | MEDIA_URL_UPDATED = 0x4, | ||
164 | MEDIA_FLAGS_CHANGED = 0x8, | ||
165 | INVALID_UPDATE = 0x80000000 | ||
166 | }; | ||
161 | 167 | ||
162 | virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, | 168 | virtual U32 processUpdateMessage(LLMessageSystem *mesgsys, |
163 | void **user_data, | 169 | void **user_data, |
diff --git a/linden/indra/newview/llviewerobjectlist.cpp b/linden/indra/newview/llviewerobjectlist.cpp index d0aa4b1..c82b1ae 100644 --- a/linden/indra/newview/llviewerobjectlist.cpp +++ b/linden/indra/newview/llviewerobjectlist.cpp | |||
@@ -288,7 +288,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, | |||
288 | { | 288 | { |
289 | LLFastTimer t(LLFastTimer::FTM_PROCESS_OBJECTS); | 289 | LLFastTimer t(LLFastTimer::FTM_PROCESS_OBJECTS); |
290 | 290 | ||
291 | LLVector3d camera_global = gAgent.getCameraPositionGlobal(); | ||
292 | LLViewerObject *objectp; | 291 | LLViewerObject *objectp; |
293 | S32 num_objects; | 292 | S32 num_objects; |
294 | U32 local_id; | 293 | U32 local_id; |
@@ -305,28 +304,28 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, | |||
305 | if (!cached && !compressed && update_type != OUT_FULL) | 304 | if (!cached && !compressed && update_type != OUT_FULL) |
306 | { | 305 | { |
307 | gTerseObjectUpdates += num_objects; | 306 | gTerseObjectUpdates += num_objects; |
308 | S32 size; | 307 | // S32 size; |
309 | if (mesgsys->getReceiveCompressedSize()) | 308 | // if (mesgsys->getReceiveCompressedSize()) |
310 | { | 309 | // { |
311 | size = mesgsys->getReceiveCompressedSize(); | 310 | // size = mesgsys->getReceiveCompressedSize(); |
312 | } | 311 | // } |
313 | else | 312 | // else |
314 | { | 313 | // { |
315 | size = mesgsys->getReceiveSize(); | 314 | // size = mesgsys->getReceiveSize(); |
316 | } | 315 | // } |
317 | // llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; | 316 | // llinfos << "Received terse " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; |
318 | } | 317 | } |
319 | else | 318 | else |
320 | { | 319 | { |
321 | S32 size; | 320 | // S32 size; |
322 | if (mesgsys->getReceiveCompressedSize()) | 321 | // if (mesgsys->getReceiveCompressedSize()) |
323 | { | 322 | // { |
324 | size = mesgsys->getReceiveCompressedSize(); | 323 | // size = mesgsys->getReceiveCompressedSize(); |
325 | } | 324 | // } |
326 | else | 325 | // else |
327 | { | 326 | // { |
328 | size = mesgsys->getReceiveSize(); | 327 | // size = mesgsys->getReceiveSize(); |
329 | } | 328 | // } |
330 | 329 | ||
331 | // llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; | 330 | // llinfos << "Received " << num_objects << " in " << size << " byte (" << size/num_objects << ")" << llendl; |
332 | gFullObjectUpdates += num_objects; | 331 | gFullObjectUpdates += num_objects; |
diff --git a/linden/indra/newview/llviewerparcelmedia.cpp b/linden/indra/newview/llviewerparcelmedia.cpp index 386a86e..a9ea1e6 100644 --- a/linden/indra/newview/llviewerparcelmedia.cpp +++ b/linden/indra/newview/llviewerparcelmedia.cpp | |||
@@ -101,12 +101,11 @@ void LLViewerParcelMedia::update(LLParcel* parcel) | |||
101 | sMediaRegionID = LLUUID() ; | 101 | sMediaRegionID = LLUUID() ; |
102 | stop() ; | 102 | stop() ; |
103 | LL_DEBUGS("Media") << "no agent region, bailing out." << LL_ENDL; | 103 | LL_DEBUGS("Media") << "no agent region, bailing out." << LL_ENDL; |
104 | return ; | 104 | return ; |
105 | } | 105 | } |
106 | 106 | ||
107 | // we're in a parcel | 107 | // we're in a parcel |
108 | bool new_parcel = false; | 108 | S32 parcelid = parcel->getLocalID(); |
109 | S32 parcelid = parcel->getLocalID(); | ||
110 | 109 | ||
111 | LLUUID regionid = gAgent.getRegion()->getRegionID(); | 110 | LLUUID regionid = gAgent.getRegion()->getRegionID(); |
112 | if (parcelid != sMediaParcelLocalID || regionid != sMediaRegionID) | 111 | if (parcelid != sMediaParcelLocalID || regionid != sMediaRegionID) |
@@ -114,7 +113,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel) | |||
114 | LL_DEBUGS("Media") << "New parcel, parcel id = " << parcelid << ", region id = " << regionid << LL_ENDL; | 113 | LL_DEBUGS("Media") << "New parcel, parcel id = " << parcelid << ", region id = " << regionid << LL_ENDL; |
115 | sMediaParcelLocalID = parcelid; | 114 | sMediaParcelLocalID = parcelid; |
116 | sMediaRegionID = regionid; | 115 | sMediaRegionID = regionid; |
117 | new_parcel = true; | ||
118 | } | 116 | } |
119 | 117 | ||
120 | std::string mediaUrl = std::string ( parcel->getMediaURL () ); | 118 | std::string mediaUrl = std::string ( parcel->getMediaURL () ); |
diff --git a/linden/indra/newview/llviewerregion.cpp b/linden/indra/newview/llviewerregion.cpp index 2fafe30..42eb112 100644 --- a/linden/indra/newview/llviewerregion.cpp +++ b/linden/indra/newview/llviewerregion.cpp | |||
@@ -1436,6 +1436,8 @@ void LLViewerRegion::setSeedCapability(const std::string& url) | |||
1436 | capabilityNames.append("EstateChangeInfo"); | 1436 | capabilityNames.append("EstateChangeInfo"); |
1437 | capabilityNames.append("EventQueueGet"); | 1437 | capabilityNames.append("EventQueueGet"); |
1438 | capabilityNames.append("FetchInventory"); | 1438 | capabilityNames.append("FetchInventory"); |
1439 | capabilityNames.append("ObjectMedia"); | ||
1440 | capabilityNames.append("ObjectMediaNavigate"); | ||
1439 | capabilityNames.append("FetchLib"); | 1441 | capabilityNames.append("FetchLib"); |
1440 | capabilityNames.append("FetchLibDescendents"); | 1442 | capabilityNames.append("FetchLibDescendents"); |
1441 | capabilityNames.append("GetDisplayNames"); | 1443 | capabilityNames.append("GetDisplayNames"); |
diff --git a/linden/indra/newview/llvlcomposition.cpp b/linden/indra/newview/llvlcomposition.cpp index afd9b95..beec1f1 100644 --- a/linden/indra/newview/llvlcomposition.cpp +++ b/linden/indra/newview/llvlcomposition.cpp | |||
@@ -384,9 +384,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, | |||
384 | LLPointer<LLImageRaw> raw = new LLImageRaw(tex_width, tex_height, tex_comps); | 384 | LLPointer<LLImageRaw> raw = new LLImageRaw(tex_width, tex_height, tex_comps); |
385 | U8 *rawp = raw->getData(); | 385 | U8 *rawp = raw->getData(); |
386 | 386 | ||
387 | F32 tex_width_inv = 1.f/tex_width; | ||
388 | F32 tex_height_inv = 1.f/tex_height; | ||
389 | |||
390 | F32 st_x_stride, st_y_stride; | 387 | F32 st_x_stride, st_y_stride; |
391 | st_x_stride = ((F32)st_width / (F32)mTexScaleX)*((F32)mWidth / (F32)tex_width); | 388 | st_x_stride = ((F32)st_width / (F32)mTexScaleX)*((F32)mWidth / (F32)tex_width); |
392 | st_y_stride = ((F32)st_height / (F32)mTexScaleY)*((F32)mWidth / (F32)tex_height); | 389 | st_y_stride = ((F32)st_height / (F32)mTexScaleY)*((F32)mWidth / (F32)tex_height); |
@@ -421,11 +418,6 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y, | |||
421 | tex1 = tex0 + 1; | 418 | tex1 = tex0 + 1; |
422 | tex1 = llclamp(tex1, 0, 3); | 419 | tex1 = llclamp(tex1, 0, 3); |
423 | 420 | ||
424 | F32 xy_int_i, xy_int_j; | ||
425 | |||
426 | xy_int_i = i * tex_width_inv; | ||
427 | xy_int_j = j * tex_height_inv; | ||
428 | |||
429 | st_offset = (lltrunc(sti) + lltrunc(stj)*st_width) * st_comps; | 421 | st_offset = (lltrunc(sti) + lltrunc(stj)*st_width) * st_comps; |
430 | for (U32 k = 0; k < tex_comps; k++) | 422 | for (U32 k = 0; k < tex_comps; k++) |
431 | { | 423 | { |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 11f4857..aac4e41 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -2500,7 +2500,6 @@ void LLVOAvatar::computeBodySize() | |||
2500 | 2500 | ||
2501 | // some of the joints have not been cached | 2501 | // some of the joints have not been cached |
2502 | LLVector3 skull = mSkullp->getPosition(); | 2502 | LLVector3 skull = mSkullp->getPosition(); |
2503 | LLVector3 skull_scale = mSkullp->getScale(); | ||
2504 | 2503 | ||
2505 | LLVector3 neck = mNeckp->getPosition(); | 2504 | LLVector3 neck = mNeckp->getPosition(); |
2506 | LLVector3 neck_scale = mNeckp->getScale(); | 2505 | LLVector3 neck_scale = mNeckp->getScale(); |
@@ -2580,7 +2579,6 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys, | |||
2580 | { | 2579 | { |
2581 | LLMemType mt(LLMemType::MTYPE_AVATAR); | 2580 | LLMemType mt(LLMemType::MTYPE_AVATAR); |
2582 | 2581 | ||
2583 | LLVector3 old_vel = getVelocity(); | ||
2584 | // Do base class updates... | 2582 | // Do base class updates... |
2585 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); | 2583 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); |
2586 | 2584 | ||
@@ -3287,6 +3285,11 @@ void LLVOAvatar::resolveClient(LLColor4& avatar_name_color, std::string& client, | |||
3287 | avatar_name_color += colour; | 3285 | avatar_name_color += colour; |
3288 | avatar_name_color *= 1.0/(cllsd["multiple"].asReal()+1.0f); | 3286 | avatar_name_color *= 1.0/(cllsd["multiple"].asReal()+1.0f); |
3289 | } | 3287 | } |
3288 | else if(idx == LLUUID("7eab0700-f000-0000-0000-546561706f74")) | ||
3289 | { | ||
3290 | avatar_name_color = LLColor4(0.69f,0.42f,0.84f,1.0f); // Armins V3 viewer. | ||
3291 | client = "Teapot"; | ||
3292 | } | ||
3290 | else if(idx == LLUUID("2a9a406c-f448-68f2-4e38-878f8c46c190") || | 3293 | else if(idx == LLUUID("2a9a406c-f448-68f2-4e38-878f8c46c190") || |
3291 | idx == LLUUID("b6820989-bf42-ff59-ddde-fd3fd3a74fe4")) | 3294 | idx == LLUUID("b6820989-bf42-ff59-ddde-fd3fd3a74fe4")) |
3292 | { | 3295 | { |
@@ -3818,8 +3821,6 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) | |||
3818 | mNameText->setLabel(mNameString); | 3821 | mNameText->setLabel(mNameString); |
3819 | } | 3822 | } |
3820 | 3823 | ||
3821 | char line[MAX_STRING]; /* Flawfinder: ignore */ | ||
3822 | line[0] = '\0'; | ||
3823 | std::deque<LLChat>::iterator chat_iter = mChats.begin(); | 3824 | std::deque<LLChat>::iterator chat_iter = mChats.begin(); |
3824 | mNameText->clearString(); | 3825 | mNameText->clearString(); |
3825 | 3826 | ||
@@ -4282,8 +4283,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) | |||
4282 | xyVel.mV[VZ] = 0.0f; | 4283 | xyVel.mV[VZ] = 0.0f; |
4283 | speed = xyVel.length(); | 4284 | speed = xyVel.length(); |
4284 | 4285 | ||
4285 | BOOL throttle = TRUE; | ||
4286 | |||
4287 | if (!(mIsSitting && getParent())) | 4286 | if (!(mIsSitting && getParent())) |
4288 | { | 4287 | { |
4289 | //-------------------------------------------------------------------- | 4288 | //-------------------------------------------------------------------- |
@@ -4294,7 +4293,6 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) | |||
4294 | if (mTimeLast == 0.0f) | 4293 | if (mTimeLast == 0.0f) |
4295 | { | 4294 | { |
4296 | mTimeLast = animation_time; | 4295 | mTimeLast = animation_time; |
4297 | throttle = FALSE; | ||
4298 | 4296 | ||
4299 | // put the pelvis at slaved position/mRotation | 4297 | // put the pelvis at slaved position/mRotation |
4300 | mRoot.setWorldPosition( getPositionAgent() ); // first frame | 4298 | mRoot.setWorldPosition( getPositionAgent() ); // first frame |
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp index 2035b62..703bcc2 100644 --- a/linden/indra/newview/llvoiceclient.cpp +++ b/linden/indra/newview/llvoiceclient.cpp | |||
@@ -3160,7 +3160,7 @@ void LLVoiceClient::giveUp() | |||
3160 | 3160 | ||
3161 | static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel) | 3161 | static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel) |
3162 | { | 3162 | { |
3163 | F32 nat[3], nup[3], nl[3], nvel[3]; // the new at, up, left vectors and the new position and velocity | 3163 | F32 nat[3], nup[3], nl[3]; // the new at, up, left vectors and the new position and velocity (velocity was not used, so I deleted it) |
3164 | F64 npos[3]; | 3164 | F64 npos[3]; |
3165 | 3165 | ||
3166 | // The original XML command was sent like this: | 3166 | // The original XML command was sent like this: |
@@ -3210,10 +3210,6 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe | |||
3210 | npos[1] = pos.mdV[VZ]; | 3210 | npos[1] = pos.mdV[VZ]; |
3211 | npos[2] = pos.mdV[VY]; | 3211 | npos[2] = pos.mdV[VY]; |
3212 | 3212 | ||
3213 | nvel[0] = vel.mV[VX]; | ||
3214 | nvel[1] = vel.mV[VZ]; | ||
3215 | nvel[2] = vel.mV[VY]; | ||
3216 | |||
3217 | for(int i=0;i<3;++i) { | 3213 | for(int i=0;i<3;++i) { |
3218 | at.mV[i] = nat[i]; | 3214 | at.mV[i] = nat[i]; |
3219 | up.mV[i] = nup[i]; | 3215 | up.mV[i] = nup[i]; |
@@ -3264,10 +3260,6 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe | |||
3264 | npos[1] = pos.mdV[VZ]; | 3260 | npos[1] = pos.mdV[VZ]; |
3265 | npos[2] = pos.mdV[VY] * -1.0; | 3261 | npos[2] = pos.mdV[VY] * -1.0; |
3266 | 3262 | ||
3267 | nvel[0] = vel.mV[VX]; | ||
3268 | nvel[1] = vel.mV[VZ]; | ||
3269 | nvel[2] = vel.mV[VY]; | ||
3270 | |||
3271 | for(int i=0;i<3;++i) { | 3263 | for(int i=0;i<3;++i) { |
3272 | at.mV[i] = nat[i]; | 3264 | at.mV[i] = nat[i]; |
3273 | up.mV[i] = nup[i]; | 3265 | up.mV[i] = nup[i]; |
diff --git a/linden/indra/newview/llvosurfacepatch.cpp b/linden/indra/newview/llvosurfacepatch.cpp index 1671880..380eff5 100644 --- a/linden/indra/newview/llvosurfacepatch.cpp +++ b/linden/indra/newview/llvosurfacepatch.cpp | |||
@@ -423,7 +423,7 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
423 | S32 vertex_count = 0; | 423 | S32 vertex_count = 0; |
424 | S32 i, x, y; | 424 | S32 i, x, y; |
425 | 425 | ||
426 | S32 num_vertices, num_indices; | 426 | S32 num_vertices; |
427 | 427 | ||
428 | U32 render_stride = mLastStride; | 428 | U32 render_stride = mLastStride; |
429 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); | 429 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); |
@@ -441,7 +441,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
441 | if (north_stride == render_stride) | 441 | if (north_stride == render_stride) |
442 | { | 442 | { |
443 | num_vertices = 2 * length + 1; | 443 | num_vertices = 2 * length + 1; |
444 | num_indices = length * 6 - 3; | ||
445 | 444 | ||
446 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 445 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
447 | 446 | ||
@@ -494,7 +493,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
494 | { | 493 | { |
495 | // North stride is longer (has less vertices) | 494 | // North stride is longer (has less vertices) |
496 | num_vertices = length + length/2 + 1; | 495 | num_vertices = length + length/2 + 1; |
497 | num_indices = half_length*9 - 3; | ||
498 | 496 | ||
499 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 497 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
500 | 498 | ||
@@ -555,7 +553,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep, | |||
555 | length = patch_size / north_stride; | 553 | length = patch_size / north_stride; |
556 | half_length = length / 2; | 554 | half_length = length / 2; |
557 | num_vertices = length + half_length + 1; | 555 | num_vertices = length + half_length + 1; |
558 | num_indices = 9*half_length - 3; | ||
559 | 556 | ||
560 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; | 557 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; |
561 | 558 | ||
@@ -629,7 +626,7 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
629 | { | 626 | { |
630 | S32 i, x, y; | 627 | S32 i, x, y; |
631 | 628 | ||
632 | S32 num_vertices, num_indices; | 629 | S32 num_vertices; |
633 | 630 | ||
634 | U32 render_stride = mLastStride; | 631 | U32 render_stride = mLastStride; |
635 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); | 632 | S32 patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); |
@@ -642,7 +639,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
642 | if (east_stride == render_stride) | 639 | if (east_stride == render_stride) |
643 | { | 640 | { |
644 | num_vertices = 2 * length + 1; | 641 | num_vertices = 2 * length + 1; |
645 | num_indices = length * 6 - 3; | ||
646 | 642 | ||
647 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 643 | facep->mCenterAgent = (mPatchp->getPointAgent(8, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
648 | 644 | ||
@@ -693,7 +689,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
693 | { | 689 | { |
694 | // East stride is longer (has less vertices) | 690 | // East stride is longer (has less vertices) |
695 | num_vertices = length + half_length + 1; | 691 | num_vertices = length + half_length + 1; |
696 | num_indices = half_length*9 - 3; | ||
697 | 692 | ||
698 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; | 693 | facep->mCenterAgent = (mPatchp->getPointAgent(7, 15) + mPatchp->getPointAgent(8, 16))*0.5f; |
699 | 694 | ||
@@ -750,7 +745,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep, | |||
750 | length = patch_size / east_stride; | 745 | length = patch_size / east_stride; |
751 | half_length = length / 2; | 746 | half_length = length / 2; |
752 | num_vertices = length + length/2 + 1; | 747 | num_vertices = length + length/2 + 1; |
753 | num_indices = 9*(length/2) - 3; | ||
754 | 748 | ||
755 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; | 749 | facep->mCenterAgent = (mPatchp->getPointAgent(15, 7) + mPatchp->getPointAgent(16, 8))*0.5f; |
756 | 750 | ||
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp index d580d61..2b9f94c 100644 --- a/linden/indra/newview/llvovolume.cpp +++ b/linden/indra/newview/llvovolume.cpp | |||
@@ -68,6 +68,9 @@ | |||
68 | #include "rlvhandler.h" | 68 | #include "rlvhandler.h" |
69 | // [/RLVa:KB] | 69 | // [/RLVa:KB] |
70 | 70 | ||
71 | #include "llmediaentry.h" | ||
72 | #include "llmediadataclient.h" | ||
73 | |||
71 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; | 74 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; |
72 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; | 75 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; |
73 | const F32 FORCE_CULL_AREA = 8.f; | 76 | const F32 FORCE_CULL_AREA = 8.f; |
@@ -79,6 +82,93 @@ F32 LLVOVolume::sLODFactor = 1.f; | |||
79 | F32 LLVOVolume::sLODSlopDistanceFactor = 0.5f; //Changing this to zero, effectively disables the LOD transition slop | 82 | F32 LLVOVolume::sLODSlopDistanceFactor = 0.5f; //Changing this to zero, effectively disables the LOD transition slop |
80 | F32 LLVOVolume::sDistanceFactor = 1.0f; | 83 | F32 LLVOVolume::sDistanceFactor = 1.0f; |
81 | S32 LLVOVolume::sNumLODChanges = 0; | 84 | S32 LLVOVolume::sNumLODChanges = 0; |
85 | LLPointer<LLObjectMediaDataClient> LLVOVolume::sObjectMediaClient = NULL; | ||
86 | LLPointer<LLObjectMediaNavigateClient> LLVOVolume::sObjectMediaNavigateClient = NULL; | ||
87 | |||
88 | // Implementation class of LLMediaDataClientObject. See llmediadataclient.h | ||
89 | class LLMediaDataClientObjectImpl : public LLMediaDataClientObject | ||
90 | { | ||
91 | public: | ||
92 | LLMediaDataClientObjectImpl(LLVOVolume *obj, bool isNew) : mObject(obj), mNew(isNew) {} | ||
93 | LLMediaDataClientObjectImpl() { mObject = NULL; } | ||
94 | |||
95 | virtual U8 getMediaDataCount() const | ||
96 | { return mObject->getNumTEs(); } | ||
97 | |||
98 | virtual LLSD getMediaDataLLSD(U8 index) const | ||
99 | { | ||
100 | LLSD result; | ||
101 | LLTextureEntry *te = mObject->getTE(index); | ||
102 | if (NULL != te) | ||
103 | { | ||
104 | llassert((te->getMediaData() != NULL) == te->hasMedia()); | ||
105 | if (te->getMediaData() != NULL) | ||
106 | { | ||
107 | result = te->getMediaData()->asLLSD(); | ||
108 | // XXX HACK: workaround bug in asLLSD() where whitelist is not set properly | ||
109 | // See DEV-41949 | ||
110 | if (!result.has(LLMediaEntry::WHITELIST_KEY)) | ||
111 | { | ||
112 | result[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray(); | ||
113 | } | ||
114 | } | ||
115 | } | ||
116 | return result; | ||
117 | } | ||
118 | |||
119 | virtual LLUUID getID() const | ||
120 | { return mObject->getID(); } | ||
121 | |||
122 | virtual void mediaNavigateBounceBack(U8 index) | ||
123 | { mObject->mediaNavigateBounceBack(index); } | ||
124 | |||
125 | virtual bool hasMedia() const | ||
126 | { return mObject->hasMedia();} | ||
127 | |||
128 | virtual void updateObjectMediaData(LLSD const &data, const std::string &version_string) | ||
129 | { mObject->updateObjectMediaData(data, version_string); } | ||
130 | |||
131 | virtual F64 getMediaInterest() const | ||
132 | { | ||
133 | //F64 interest = mObject->getTotalMediaInterest(); | ||
134 | //FIXME | ||
135 | F64 interest = 1024; | ||
136 | if (interest < (F64)0.0) | ||
137 | { | ||
138 | // media interest not valid yet, try pixel area | ||
139 | interest = mObject->getPixelArea(); | ||
140 | // HACK: force recalculation of pixel area if interest is the "magic default" of 1024. | ||
141 | if (interest == 1024.f) | ||
142 | { | ||
143 | const_cast<LLVOVolume*>(static_cast<LLVOVolume*>(mObject))->setPixelAreaAndAngle(gAgent); | ||
144 | interest = mObject->getPixelArea(); | ||
145 | } | ||
146 | } | ||
147 | return interest; | ||
148 | } | ||
149 | |||
150 | virtual bool isInterestingEnough() const | ||
151 | { | ||
152 | return true; //FUCKEDUP --> LLViewerMedia::isInterestingEnough(mObject, getMediaInterest()); | ||
153 | } | ||
154 | |||
155 | virtual std::string getCapabilityUrl(const std::string &name) const | ||
156 | { return mObject->getRegion()->getCapability(name); } | ||
157 | |||
158 | virtual bool isDead() const | ||
159 | { return mObject->isDead(); } | ||
160 | |||
161 | virtual U32 getMediaVersion() const | ||
162 | { return LLTextureEntry::getVersionFromMediaVersionString(mObject->getMediaURL()); } | ||
163 | |||
164 | virtual bool isNew() const | ||
165 | { return mNew; } | ||
166 | |||
167 | private: | ||
168 | LLPointer<LLVOVolume> mObject; | ||
169 | bool mNew; | ||
170 | }; | ||
171 | |||
82 | 172 | ||
83 | LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) | 173 | LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) |
84 | : LLViewerObject(id, pcode, regionp), | 174 | : LLViewerObject(id, pcode, regionp), |
@@ -123,6 +213,18 @@ void LLVOVolume::markDead() | |||
123 | // static | 213 | // static |
124 | void LLVOVolume::initClass() | 214 | void LLVOVolume::initClass() |
125 | { | 215 | { |
216 | // gSavedSettings better be around | ||
217 | if (gSavedSettings.getBOOL("PrimMediaMasterEnabled")) | ||
218 | { | ||
219 | const F32 queue_timer_delay = gSavedSettings.getF32("PrimMediaRequestQueueDelay"); | ||
220 | const F32 retry_timer_delay = gSavedSettings.getF32("PrimMediaRetryTimerDelay"); | ||
221 | const U32 max_retries = gSavedSettings.getU32("PrimMediaMaxRetries"); | ||
222 | const U32 max_sorted_queue_size = gSavedSettings.getU32("PrimMediaMaxSortedQueueSize"); | ||
223 | const U32 max_round_robin_queue_size = gSavedSettings.getU32("PrimMediaMaxRoundRobinQueueSize"); | ||
224 | |||
225 | sObjectMediaClient = new LLObjectMediaDataClient(queue_timer_delay, retry_timer_delay, max_retries, | ||
226 | max_sorted_queue_size, max_round_robin_queue_size); | ||
227 | } | ||
126 | } | 228 | } |
127 | 229 | ||
128 | 230 | ||
@@ -132,6 +234,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
132 | LLDataPacker *dp) | 234 | LLDataPacker *dp) |
133 | { | 235 | { |
134 | LLColor4U color; | 236 | LLColor4U color; |
237 | const S32 teDirtyBits = (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR|TEM_CHANGE_MEDIA); | ||
135 | 238 | ||
136 | // Do base class updates... | 239 | // Do base class updates... |
137 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); | 240 | U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); |
@@ -199,10 +302,15 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
199 | // | 302 | // |
200 | // Unpack texture entry data | 303 | // Unpack texture entry data |
201 | // | 304 | // |
202 | if (unpackTEMessage(mesgsys, _PREHASH_ObjectData, block_num) & (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR)) | 305 | S32 result =unpackTEMessage(mesgsys, _PREHASH_ObjectData, block_num); |
306 | if (result & teDirtyBits) | ||
203 | { | 307 | { |
204 | updateTEData(); | 308 | updateTEData(); |
205 | } | 309 | } |
310 | if (result & TEM_CHANGE_MEDIA) | ||
311 | { | ||
312 | retval |= MEDIA_FLAGS_CHANGED; | ||
313 | } | ||
206 | } | 314 | } |
207 | else | 315 | else |
208 | { | 316 | { |
@@ -235,9 +343,16 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
235 | // llerrs << "Bogus TE data in " << getID() << ", crashing!" << llendl; | 343 | // llerrs << "Bogus TE data in " << getID() << ", crashing!" << llendl; |
236 | llwarns << "Bogus TE data in " << getID() << llendl; | 344 | llwarns << "Bogus TE data in " << getID() << llendl; |
237 | } | 345 | } |
238 | else if (res2 & (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR)) | 346 | else |
239 | { | 347 | { |
240 | updateTEData(); | 348 | if (res2 & teDirtyBits) |
349 | { | ||
350 | updateTEData(); | ||
351 | } | ||
352 | if (res2 & TEM_CHANGE_MEDIA) | ||
353 | { | ||
354 | retval |= MEDIA_FLAGS_CHANGED; | ||
355 | } | ||
241 | } | 356 | } |
242 | 357 | ||
243 | U32 value = dp->getPassFlags(); | 358 | U32 value = dp->getPassFlags(); |
@@ -275,13 +390,39 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
275 | U8 tdpbuffer[1024]; | 390 | U8 tdpbuffer[1024]; |
276 | LLDataPackerBinaryBuffer tdp(tdpbuffer, 1024); | 391 | LLDataPackerBinaryBuffer tdp(tdpbuffer, 1024); |
277 | mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_TextureEntry, tdpbuffer, 0, block_num); | 392 | mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_TextureEntry, tdpbuffer, 0, block_num); |
278 | if ( unpackTEMessage(tdp) & (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR)) | 393 | S32 result = unpackTEMessage(tdp); |
394 | if (result & teDirtyBits) | ||
279 | { | 395 | { |
280 | updateTEData(); | 396 | updateTEData(); |
281 | } | 397 | } |
398 | if (result & TEM_CHANGE_MEDIA) | ||
399 | { | ||
400 | retval |= MEDIA_FLAGS_CHANGED; | ||
401 | } | ||
282 | } | 402 | } |
283 | } | 403 | } |
284 | } | 404 | } |
405 | |||
406 | if (retval & (MEDIA_URL_REMOVED | MEDIA_URL_ADDED | MEDIA_URL_UPDATED | MEDIA_FLAGS_CHANGED)) | ||
407 | { | ||
408 | // If only the media URL changed, and it isn't a media version URL, | ||
409 | // ignore it | ||
410 | if ( ! ( retval & (MEDIA_URL_ADDED | MEDIA_URL_UPDATED) && | ||
411 | mMedia && ! mMedia->mMediaURL.empty() && | ||
412 | ! LLTextureEntry::isMediaVersionString(mMedia->mMediaURL) ) ) | ||
413 | { | ||
414 | // If the media changed at all, request new media data | ||
415 | LL_DEBUGS("MediaOnAPrim") << "Media update: " << getID() << ": retval=" << retval << " Media URL: " << | ||
416 | ((mMedia) ? mMedia->mMediaURL : std::string("")) << LL_ENDL; | ||
417 | requestMediaDataUpdate(retval & MEDIA_FLAGS_CHANGED); | ||
418 | } | ||
419 | else { | ||
420 | LL_INFOS("MediaOnAPrim") << "Ignoring media update for: " << getID() << " Media URL: " << | ||
421 | ((mMedia) ? mMedia->mMediaURL : std::string("")) << LL_ENDL; | ||
422 | } | ||
423 | } | ||
424 | // ...and clean up any media impls | ||
425 | cleanUpMediaImpls(); | ||
285 | 426 | ||
286 | return retval; | 427 | return retval; |
287 | } | 428 | } |
@@ -2894,4 +3035,253 @@ void LLHUDPartition::shift(const LLVector3 &offset) | |||
2894 | //HUD objects don't shift with region crossing. That would be silly. | 3035 | //HUD objects don't shift with region crossing. That would be silly. |
2895 | } | 3036 | } |
2896 | 3037 | ||
3038 | void LLVOVolume::requestMediaDataUpdate(bool isNew) | ||
3039 | { | ||
3040 | if (sObjectMediaClient) | ||
3041 | sObjectMediaClient->fetchMedia(new LLMediaDataClientObjectImpl(this, isNew)); | ||
3042 | } | ||
3043 | |||
3044 | void LLVOVolume::cleanUpMediaImpls() | ||
3045 | { | ||
3046 | // Iterate through our TEs and remove any Impls that are no longer used | ||
3047 | const U8 numTEs = getNumTEs(); | ||
3048 | for (U8 i = 0; i < numTEs; i++) | ||
3049 | { | ||
3050 | const LLTextureEntry* te = getTE(i); | ||
3051 | if( ! te->hasMedia()) | ||
3052 | { | ||
3053 | // Delete the media IMPL! | ||
3054 | removeMediaImpl(i) ; | ||
3055 | } | ||
3056 | } | ||
3057 | } | ||
3058 | |||
3059 | void LLVOVolume::removeMediaImpl(S32 texture_index) | ||
3060 | { | ||
3061 | if(mMediaImplList.size() <= (U32)texture_index || mMediaImplList[texture_index].isNull()) | ||
3062 | { | ||
3063 | return ; | ||
3064 | } | ||
3065 | |||
3066 | //make the face referencing to mMediaImplList[texture_index] to point back to the old texture. | ||
3067 | if(mDrawable) | ||
3068 | { | ||
3069 | LLFace* facep = mDrawable->getFace(texture_index) ; | ||
3070 | if(facep) | ||
3071 | { | ||
3072 | //LLViewerMediaTexture* media_tex = LLViewerTextureManager::findMediaTexture(mMediaImplList[texture_index]->getMediaTextureID()) ; | ||
3073 | //if(media_tex) | ||
3074 | //{ | ||
3075 | // media_tex->removeMediaFromFace(facep) ; | ||
3076 | //} | ||
3077 | } | ||
3078 | } | ||
3079 | |||
3080 | //check if some other face(s) of this object reference(s)to this media impl. | ||
3081 | S32 i ; | ||
3082 | S32 end = (S32)mMediaImplList.size() ; | ||
3083 | for(i = 0; i < end ; i++) | ||
3084 | { | ||
3085 | if( i != texture_index && mMediaImplList[i] == mMediaImplList[texture_index]) | ||
3086 | { | ||
3087 | break ; | ||
3088 | } | ||
3089 | } | ||
3090 | |||
3091 | if(i == end) //this object does not need this media impl. | ||
3092 | { | ||
3093 | //mMediaImplList[texture_index]->removeObject(this) ; | ||
3094 | } | ||
3095 | |||
3096 | mMediaImplList[texture_index] = NULL ; | ||
3097 | return ; | ||
3098 | } | ||
3099 | |||
3100 | void LLVOVolume::addMediaImpl(LLViewerMediaImpl* media_impl, S32 texture_index) | ||
3101 | { | ||
3102 | if((S32)mMediaImplList.size() < texture_index + 1) | ||
3103 | { | ||
3104 | mMediaImplList.resize(texture_index + 1) ; | ||
3105 | } | ||
3106 | |||
3107 | if(mMediaImplList[texture_index].notNull()) | ||
3108 | { | ||
3109 | if(mMediaImplList[texture_index] == media_impl) | ||
3110 | { | ||
3111 | return ; | ||
3112 | } | ||
3113 | |||
3114 | removeMediaImpl(texture_index) ; | ||
3115 | } | ||
3116 | |||
3117 | mMediaImplList[texture_index] = media_impl; | ||
3118 | //media_impl->addObject(this) ; | ||
3119 | |||
3120 | //add the face to show the media if it is in playing | ||
3121 | if(mDrawable) | ||
3122 | { | ||
3123 | LLFace* facep = mDrawable->getFace(texture_index) ; | ||
3124 | if(facep) | ||
3125 | { | ||
3126 | //LLViewerMediaTexture* media_tex = LLViewerTextureManager::findMediaTexture(mMediaImplList[texture_index]->getMediaTextureID()) ; | ||
3127 | //if(media_tex) | ||
3128 | //{ | ||
3129 | // media_tex->addMediaToFace(facep) ; | ||
3130 | //} | ||
3131 | } | ||
3132 | else //the face is not available now, start media on this face later. | ||
3133 | { | ||
3134 | //media_impl->setUpdated(TRUE) ; | ||
3135 | } | ||
3136 | } | ||
3137 | return ; | ||
3138 | } | ||
3139 | |||
3140 | void LLVOVolume::sendMediaDataUpdate() | ||
3141 | { | ||
3142 | if (sObjectMediaClient) | ||
3143 | sObjectMediaClient->updateMedia(new LLMediaDataClientObjectImpl(this, false)); | ||
3144 | } | ||
3145 | |||
3146 | void LLVOVolume::updateObjectMediaData(const LLSD &media_data_array, const std::string &media_version) | ||
3147 | { | ||
3148 | // media_data_array is an array of media entry maps | ||
3149 | // media_version is the version string in the response. | ||
3150 | U32 fetched_version = LLTextureEntry::getVersionFromMediaVersionString(media_version); | ||
3151 | |||
3152 | // Only update it if it is newer! | ||
3153 | if ( (S32)fetched_version > mLastFetchedMediaVersion) | ||
3154 | { | ||
3155 | mLastFetchedMediaVersion = fetched_version; | ||
3156 | //llinfos << "updating:" << this->getID() << " " << ll_pretty_print_sd(media_data_array) << llendl; | ||
3157 | |||
3158 | LLSD::array_const_iterator iter = media_data_array.beginArray(); | ||
3159 | LLSD::array_const_iterator end = media_data_array.endArray(); | ||
3160 | U8 texture_index = 0; | ||
3161 | for (; iter != end; ++iter, ++texture_index) | ||
3162 | { | ||
3163 | syncMediaData(texture_index, *iter, false/*merge*/, false/*ignore_agent*/); | ||
3164 | } | ||
3165 | } | ||
3166 | } | ||
3167 | |||
3168 | bool LLVOVolume::hasMedia() const | ||
3169 | { | ||
3170 | bool result = false; | ||
3171 | const U8 numTEs = getNumTEs(); | ||
3172 | for (U8 i = 0; i < numTEs; i++) | ||
3173 | { | ||
3174 | const LLTextureEntry* te = getTE(i); | ||
3175 | if(te->hasMedia()) | ||
3176 | { | ||
3177 | result = true; | ||
3178 | break; | ||
3179 | } | ||
3180 | } | ||
3181 | return result; | ||
3182 | } | ||
3183 | |||
3184 | void LLVOVolume::syncMediaData(S32 texture_index, const LLSD &media_data, bool merge, bool ignore_agent) | ||
3185 | { | ||
3186 | if(mDead) | ||
3187 | { | ||
3188 | // If the object has been marked dead, don't process media updates. | ||
3189 | return; | ||
3190 | } | ||
3191 | |||
3192 | LLTextureEntry *te = getTE(texture_index); | ||
3193 | // LL_DEBUGS("MediaOnAPrim") << "BEFORE: texture_index = " << texture_index | ||
3194 | // << " hasMedia = " << te->hasMedia() << " : " | ||
3195 | // << ((NULL == te->getMediaData()) ? "NULL MEDIA DATA" : ll_pretty_print_sd(te->getMediaData()->asLLSD())) << llendl; | ||
2897 | 3196 | ||
3197 | std::string previous_url; | ||
3198 | LLMediaEntry* mep = te->getMediaData(); | ||
3199 | if(mep) | ||
3200 | { | ||
3201 | // Save the "current url" from before the update so we can tell if | ||
3202 | // it changes. | ||
3203 | previous_url = mep->getCurrentURL(); | ||
3204 | } | ||
3205 | |||
3206 | if (merge) | ||
3207 | { | ||
3208 | te->mergeIntoMediaData(media_data); | ||
3209 | } | ||
3210 | else { | ||
3211 | // XXX Question: what if the media data is undefined LLSD, but the | ||
3212 | // update we got above said that we have media flags?? Here we clobber | ||
3213 | // that, assuming the data from the service is more up-to-date. | ||
3214 | te->updateMediaData(media_data); | ||
3215 | } | ||
3216 | |||
3217 | mep = te->getMediaData(); | ||
3218 | if(mep) | ||
3219 | { | ||
3220 | //bool update_from_self = false; | ||
3221 | if (!ignore_agent) | ||
3222 | { | ||
3223 | LLUUID updating_agent = LLTextureEntry::getAgentIDFromMediaVersionString(getMediaURL()); | ||
3224 | //update_from_self = (updating_agent == gAgent.getID()); | ||
3225 | } | ||
3226 | //viewer_media_t media_impl = LLViewerMedia::updateMediaImpl(mep, previous_url, update_from_self); | ||
3227 | |||
3228 | //addMediaImpl(media_impl, texture_index) ; | ||
3229 | } | ||
3230 | else | ||
3231 | { | ||
3232 | //removeMediaImpl(texture_index); | ||
3233 | } | ||
3234 | |||
3235 | // LL_DEBUGS("MediaOnAPrim") << "AFTER: texture_index = " << texture_index | ||
3236 | // << " hasMedia = " << te->hasMedia() << " : " | ||
3237 | // << ((NULL == te->getMediaData()) ? "NULL MEDIA DATA" : ll_pretty_print_sd(te->getMediaData()->asLLSD())) << llendl; | ||
3238 | } | ||
3239 | |||
3240 | |||
3241 | void LLVOVolume::mediaNavigateBounceBack(U8 texture_index) | ||
3242 | { | ||
3243 | /* | ||
3244 | // Find the media entry for this navigate | ||
3245 | const LLMediaEntry* mep = NULL; | ||
3246 | viewer_media_t impl = getMediaImpl(texture_index); | ||
3247 | LLTextureEntry *te = getTE(texture_index); | ||
3248 | if(te) | ||
3249 | { | ||
3250 | mep = te->getMediaData(); | ||
3251 | } | ||
3252 | |||
3253 | if (mep && impl) | ||
3254 | { | ||
3255 | std::string url = mep->getCurrentURL(); | ||
3256 | // Look for a ":", if not there, assume "http://" | ||
3257 | if (!url.empty() && std::string::npos == url.find(':')) | ||
3258 | { | ||
3259 | url = "http://" + url; | ||
3260 | } | ||
3261 | // If the url we're trying to "bounce back" to is either empty or not | ||
3262 | // allowed by the whitelist, try the home url. If *that* doesn't work, | ||
3263 | // set the media as failed and unload it | ||
3264 | if (url.empty() || !mep->checkCandidateUrl(url)) | ||
3265 | { | ||
3266 | url = mep->getHomeURL(); | ||
3267 | // Look for a ":", if not there, assume "http://" | ||
3268 | if (!url.empty() && std::string::npos == url.find(':')) | ||
3269 | { | ||
3270 | url = "http://" + url; | ||
3271 | } | ||
3272 | } | ||
3273 | if (url.empty() || !mep->checkCandidateUrl(url)) | ||
3274 | { | ||
3275 | // The url to navigate back to is not good, and we have nowhere else | ||
3276 | // to go. | ||
3277 | LL_WARNS("MediaOnAPrim") << "FAILED to bounce back URL \"" << url << "\" -- unloading impl" << LL_ENDL; | ||
3278 | impl->setMediaFailed(true); | ||
3279 | } | ||
3280 | else { | ||
3281 | // Okay, navigate now | ||
3282 | LL_INFOS("MediaOnAPrim") << "bouncing back to URL: " << url << LL_ENDL; | ||
3283 | impl->navigateTo(url, "", false, true); | ||
3284 | } | ||
3285 | } | ||
3286 | */ | ||
3287 | } | ||
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h index d09a198..39d9227 100644 --- a/linden/indra/newview/llvovolume.h +++ b/linden/indra/newview/llvovolume.h | |||
@@ -36,6 +36,8 @@ | |||
36 | #include "llviewerobject.h" | 36 | #include "llviewerobject.h" |
37 | #include "llviewerimage.h" | 37 | #include "llviewerimage.h" |
38 | #include "llframetimer.h" | 38 | #include "llframetimer.h" |
39 | #include "llmediadataclient.h" | ||
40 | #include "llviewermedia.h" | ||
39 | #include "llapr.h" | 41 | #include "llapr.h" |
40 | #include <map> | 42 | #include <map> |
41 | 43 | ||
@@ -43,6 +45,8 @@ class LLViewerTextureAnim; | |||
43 | class LLDrawPool; | 45 | class LLDrawPool; |
44 | class LLSelectNode; | 46 | class LLSelectNode; |
45 | 47 | ||
48 | typedef std::vector<viewer_media_t> media_list_t; | ||
49 | |||
46 | enum LLVolumeInterfaceType | 50 | enum LLVolumeInterfaceType |
47 | { | 51 | { |
48 | INTERFACE_FLEXIBLE = 1, | 52 | INTERFACE_FLEXIBLE = 1, |
@@ -217,6 +221,46 @@ public: | |||
217 | 221 | ||
218 | // tag: vaa emerald local_asset_browser | 222 | // tag: vaa emerald local_asset_browser |
219 | void setSculptChanged(BOOL has_changed) { mSculptChanged = has_changed; } | 223 | void setSculptChanged(BOOL has_changed) { mSculptChanged = has_changed; } |
224 | |||
225 | |||
226 | // Functions that deal with media, or media navigation | ||
227 | |||
228 | // Update this object's media data with the given media data array | ||
229 | // (typically this is only called upon a response from a server request) | ||
230 | void updateObjectMediaData(const LLSD &media_data_array, const std::string &media_version); | ||
231 | |||
232 | // Bounce back media at the given index to its current URL (or home URL, if current URL is empty) | ||
233 | void mediaNavigateBounceBack(U8 texture_index); | ||
234 | |||
235 | // Returns whether or not this object has permission to navigate or control | ||
236 | // the given media entry | ||
237 | enum MediaPermType { | ||
238 | MEDIA_PERM_INTERACT, MEDIA_PERM_CONTROL | ||
239 | }; | ||
240 | bool hasMediaPermission(const LLMediaEntry* media_entry, MediaPermType perm_type); | ||
241 | |||
242 | void mediaNavigated(LLViewerMediaImpl *impl, LLPluginClassMedia* plugin, std::string new_location); | ||
243 | void mediaEvent(LLViewerMediaImpl *impl, LLPluginClassMedia* plugin, LLViewerMediaObserver::EMediaEvent event); | ||
244 | |||
245 | // Sync the given media data with the impl and the given te | ||
246 | void syncMediaData(S32 te, const LLSD &media_data, bool merge, bool ignore_agent); | ||
247 | |||
248 | // Send media data update to the simulator. | ||
249 | void sendMediaDataUpdate(); | ||
250 | |||
251 | viewer_media_t getMediaImpl(U8 face_id) const; | ||
252 | S32 getFaceIndexWithMediaImpl(const LLViewerMediaImpl* media_impl, S32 start_face_id); | ||
253 | F64 getTotalMediaInterest() const; | ||
254 | |||
255 | bool hasMedia() const; | ||
256 | |||
257 | LLVector3 getApproximateFaceNormal(U8 face_id); | ||
258 | |||
259 | // Returns 'true' iff the media data for this object is in flight | ||
260 | bool isMediaDataBeingFetched() const; | ||
261 | |||
262 | // Returns the "last fetched" media version, or -1 if not fetched yet | ||
263 | S32 getLastFetchedMediaVersion() const { return mLastFetchedMediaVersion; } | ||
220 | 264 | ||
221 | protected: | 265 | protected: |
222 | S32 computeLODDetail(F32 distance, F32 radius); | 266 | S32 computeLODDetail(F32 distance, F32 radius); |
@@ -224,6 +268,11 @@ protected: | |||
224 | LLFace* addFace(S32 face_index); | 268 | LLFace* addFace(S32 face_index); |
225 | void updateTEData(); | 269 | void updateTEData(); |
226 | 270 | ||
271 | void requestMediaDataUpdate(bool isNew); | ||
272 | void cleanUpMediaImpls(); | ||
273 | void addMediaImpl(LLViewerMediaImpl* media_impl, S32 texture_index) ; | ||
274 | void removeMediaImpl(S32 texture_index) ; | ||
275 | |||
227 | public: | 276 | public: |
228 | LLViewerTextureAnim *mTextureAnimp; | 277 | LLViewerTextureAnim *mTextureAnimp; |
229 | U8 mTexAnimMode; | 278 | U8 mTexAnimMode; |
@@ -242,12 +291,16 @@ private: | |||
242 | LLVolumeInterface *mVolumeImpl; | 291 | LLVolumeInterface *mVolumeImpl; |
243 | LLPointer<LLViewerImage> mSculptTexture; | 292 | LLPointer<LLViewerImage> mSculptTexture; |
244 | S32 mIndexInTex; // index of this volume in the texture's volume list | 293 | S32 mIndexInTex; // index of this volume in the texture's volume list |
294 | media_list_t mMediaImplList; | ||
295 | S32 mLastFetchedMediaVersion; // as fetched from the server, starts as -1 | ||
245 | 296 | ||
246 | // statics | 297 | // statics |
247 | public: | 298 | public: |
248 | static F32 sLODSlopDistanceFactor;// Changing this to zero, effectively disables the LOD transition slop | 299 | static F32 sLODSlopDistanceFactor;// Changing this to zero, effectively disables the LOD transition slop |
249 | static F32 sLODFactor; // LOD scale factor | 300 | static F32 sLODFactor; // LOD scale factor |
250 | static F32 sDistanceFactor; // LOD distance factor | 301 | static F32 sDistanceFactor; // LOD distance factor |
302 | static LLPointer<LLObjectMediaDataClient> sObjectMediaClient; | ||
303 | static LLPointer<LLObjectMediaNavigateClient> sObjectMediaNavigateClient; | ||
251 | 304 | ||
252 | protected: | 305 | protected: |
253 | static S32 sNumLODChanges; | 306 | static S32 sNumLODChanges; |
diff --git a/linden/indra/newview/llvowlsky.cpp b/linden/indra/newview/llvowlsky.cpp index 96bd62e..2f77c7f 100644 --- a/linden/indra/newview/llvowlsky.cpp +++ b/linden/indra/newview/llvowlsky.cpp | |||
@@ -719,12 +719,13 @@ void LLVOWLSky::updateStarColors() | |||
719 | { | 719 | { |
720 | std::vector<LLColor4>::iterator v_c = mStarColors.begin(); | 720 | std::vector<LLColor4>::iterator v_c = mStarColors.begin(); |
721 | std::vector<F32>::iterator v_i = mStarIntensities.begin(); | 721 | std::vector<F32>::iterator v_i = mStarIntensities.begin(); |
722 | std::vector<LLVector3>::iterator v_p = mStarVertices.begin(); | 722 | // A bunch of stuff here is not used, but looks like it might be useful later, so I'll leave it, but commented out. |
723 | //std::vector<LLVector3>::iterator v_p = mStarVertices.begin(); | ||
723 | 724 | ||
724 | const F32 var = 0.15f; | 725 | const F32 var = 0.15f; |
725 | const F32 min = 0.5f; //0.75f; | 726 | const F32 min = 0.5f; //0.75f; |
726 | const F32 sunclose_max = 0.6f; | 727 | //const F32 sunclose_max = 0.6f; |
727 | const F32 sunclose_range = 1 - sunclose_max; | 728 | //const F32 sunclose_range = 1 - sunclose_max; |
728 | 729 | ||
729 | //F32 below_horizon = - llmin(0.0f, gSky.mVOSkyp->getToSunLast().mV[2]); | 730 | //F32 below_horizon = - llmin(0.0f, gSky.mVOSkyp->getToSunLast().mV[2]); |
730 | //F32 brightness_factor = llmin(1.0f, below_horizon * 20); | 731 | //F32 brightness_factor = llmin(1.0f, below_horizon * 20); |
@@ -738,14 +739,14 @@ void LLVOWLSky::updateStarColors() | |||
738 | U32 x; | 739 | U32 x; |
739 | for (x = 0; x < getStarsNumVerts(); ++x) | 740 | for (x = 0; x < getStarsNumVerts(); ++x) |
740 | { | 741 | { |
741 | F32 sundir_factor = 1; | 742 | //F32 sundir_factor = 1; |
742 | LLVector3 tostar = *v_p; | 743 | //LLVector3 tostar = *v_p; |
743 | tostar.normVec(); | 744 | //tostar.normVec(); |
744 | const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast(); | 745 | //const F32 how_close_to_sun = tostar * gSky.mVOSkyp->getToSunLast(); |
745 | if (how_close_to_sun > sunclose_max) | 746 | //if (how_close_to_sun > sunclose_max) |
746 | { | 747 | //{ |
747 | sundir_factor = (1 - how_close_to_sun) / sunclose_range; | 748 | // sundir_factor = (1 - how_close_to_sun) / sunclose_range; |
748 | } | 749 | //} |
749 | intensity = *(v_i); | 750 | intensity = *(v_i); |
750 | F32 alpha = v_c->mV[VALPHA] + (ll_frand() - 0.5f) * var * intensity; | 751 | F32 alpha = v_c->mV[VALPHA] + (ll_frand() - 0.5f) * var * intensity; |
751 | if (alpha < min * intensity) | 752 | if (alpha < min * intensity) |
@@ -762,7 +763,7 @@ void LLVOWLSky::updateStarColors() | |||
762 | v_c->mV[VALPHA] = alpha; | 763 | v_c->mV[VALPHA] = alpha; |
763 | v_c++; | 764 | v_c++; |
764 | v_i++; | 765 | v_i++; |
765 | v_p++; | 766 | //v_p++; |
766 | } | 767 | } |
767 | } | 768 | } |
768 | } | 769 | } |
diff --git a/linden/indra/newview/llwaterparammanager.cpp b/linden/indra/newview/llwaterparammanager.cpp index 6e2b420..2386631 100644 --- a/linden/indra/newview/llwaterparammanager.cpp +++ b/linden/indra/newview/llwaterparammanager.cpp | |||
@@ -69,7 +69,7 @@ | |||
69 | 69 | ||
70 | #include "llwlparammanager.h" | 70 | #include "llwlparammanager.h" |
71 | #include "llwaterparamset.h" | 71 | #include "llwaterparamset.h" |
72 | #include "lightshare.h" | 72 | #include "llettherebelight.h" |
73 | #include "llpostprocess.h" | 73 | #include "llpostprocess.h" |
74 | #include "llfloaterwater.h" | 74 | #include "llfloaterwater.h" |
75 | 75 | ||
diff --git a/linden/indra/newview/llwaterparamset.cpp b/linden/indra/newview/llwaterparamset.cpp index 4b2e426..5825a23 100644 --- a/linden/indra/newview/llwaterparamset.cpp +++ b/linden/indra/newview/llwaterparamset.cpp | |||
@@ -192,8 +192,6 @@ LLVector3 LLWaterParamSet::getVector3(const std::string& paramName, bool& error) | |||
192 | LLVector2 LLWaterParamSet::getVector2(const std::string& paramName, bool& error) | 192 | LLVector2 LLWaterParamSet::getVector2(const std::string& paramName, bool& error) |
193 | { | 193 | { |
194 | // test to see if right type | 194 | // test to see if right type |
195 | int ttest; | ||
196 | ttest = mParamValues.size(); | ||
197 | LLSD cur_val = mParamValues.get(paramName); | 195 | LLSD cur_val = mParamValues.get(paramName); |
198 | if (!cur_val.isArray() || cur_val.size() != 2) | 196 | if (!cur_val.isArray() || cur_val.size() != 2) |
199 | { | 197 | { |
diff --git a/linden/indra/newview/llwlparammanager.cpp b/linden/indra/newview/llwlparammanager.cpp index b4d999c..59de0ad 100644 --- a/linden/indra/newview/llwlparammanager.cpp +++ b/linden/indra/newview/llwlparammanager.cpp | |||
@@ -34,7 +34,7 @@ | |||
34 | 34 | ||
35 | #include "llwlparammanager.h" | 35 | #include "llwlparammanager.h" |
36 | #include "llwaterparammanager.h" | 36 | #include "llwaterparammanager.h" |
37 | #include "lightshare.h" | 37 | #include "llettherebelight.h" |
38 | 38 | ||
39 | #include "pipeline.h" | 39 | #include "pipeline.h" |
40 | #include "llsky.h" | 40 | #include "llsky.h" |
diff --git a/linden/indra/newview/llworldmapview.cpp b/linden/indra/newview/llworldmapview.cpp index d7a6838..b2cab52 100644 --- a/linden/indra/newview/llworldmapview.cpp +++ b/linden/indra/newview/llworldmapview.cpp | |||
@@ -1192,8 +1192,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4& | |||
1192 | S32 text_x = x; | 1192 | S32 text_x = x; |
1193 | S32 text_y = (S32)(y - sTrackCircleImage->getHeight()/2 - font->getLineHeight()); | 1193 | S32 text_y = (S32)(y - sTrackCircleImage->getHeight()/2 - font->getLineHeight()); |
1194 | 1194 | ||
1195 | BOOL is_in_window = true; | ||
1196 | |||
1197 | if( x < 0 | 1195 | if( x < 0 |
1198 | || y < 0 | 1196 | || y < 0 |
1199 | || x >= getRect().getWidth() | 1197 | || x >= getRect().getWidth() |
@@ -1206,7 +1204,6 @@ void LLWorldMapView::drawTracking(const LLVector3d& pos_global, const LLColor4& | |||
1206 | text_x = sTrackingArrowX; | 1204 | text_x = sTrackingArrowX; |
1207 | text_y = sTrackingArrowY; | 1205 | text_y = sTrackingArrowY; |
1208 | } | 1206 | } |
1209 | is_in_window = false; | ||
1210 | } | 1207 | } |
1211 | else if (LLTracker::getTrackingStatus() == LLTracker::TRACKING_LOCATION && | 1208 | else if (LLTracker::getTrackingStatus() == LLTracker::TRACKING_LOCATION && |
1212 | LLTracker::getTrackedLocationType() != LLTracker::LOCATION_NOTHING) | 1209 | LLTracker::getTrackedLocationType() != LLTracker::LOCATION_NOTHING) |
diff --git a/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings b/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings index 1ebe727..e0014d3 100644 --- a/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings +++ b/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings | |||
@@ -1,5 +1,5 @@ | |||
1 | /* Localized versions of Info.plist keys */ | 1 | /* Localized versions of Info.plist keys */ |
2 | 2 | ||
3 | CFBundleName = "Imprudence"; | 3 | CFBundleName = "Imprudence"; |
4 | CFBundleShortVersionString = "Imprudence 1.4.0 beta 1"; | 4 | CFBundleShortVersionString = "Imprudence 1.4.0.3 exp 1"; |
5 | CFBundleGetInfoString = "Imprudence 1.4.0 beta 1"; | 5 | CFBundleGetInfoString = "Imprudence 1.4.0.3 exp 1"; |
diff --git a/linden/indra/newview/panelradar.cpp b/linden/indra/newview/panelradar.cpp index c94c0d1..ad6efc2 100644 --- a/linden/indra/newview/panelradar.cpp +++ b/linden/indra/newview/panelradar.cpp | |||
@@ -408,7 +408,6 @@ void PanelRadar::updateButtonStates() | |||
408 | static bool enable_unmute = false; | 408 | static bool enable_unmute = false; |
409 | static bool enable_track = false; | 409 | static bool enable_track = false; |
410 | static bool enable_estate = false; | 410 | static bool enable_estate = false; |
411 | static bool enable_friend = false; | ||
412 | static bool enable_cam = false; | 411 | static bool enable_cam = false; |
413 | 412 | ||
414 | if (mRadarTabs->getCurrentPanelIndex() == 0) // Avatar tab | 413 | if (mRadarTabs->getCurrentPanelIndex() == 0) // Avatar tab |
@@ -426,7 +425,6 @@ void PanelRadar::updateButtonStates() | |||
426 | enable_estate = isKickable(mSelectedAvatar); | 425 | enable_estate = isKickable(mSelectedAvatar); |
427 | enable_unmute = LLMuteList::getInstance()->isMuted(mSelectedAvatar); | 426 | enable_unmute = LLMuteList::getInstance()->isMuted(mSelectedAvatar); |
428 | enable_track = gAgent.isGodlike() || is_agent_mappable(mSelectedAvatar); | 427 | enable_track = gAgent.isGodlike() || is_agent_mappable(mSelectedAvatar); |
429 | enable_friend = !is_agent_friend(mSelectedAvatar); | ||
430 | enable_cam = mSelectedDistance >= 0 && mSelectedDistance <= gSavedSettings.getF32("NearMeRange"); | 428 | enable_cam = mSelectedDistance >= 0 && mSelectedDistance <= gSavedSettings.getF32("NearMeRange"); |
431 | } | 429 | } |
432 | else | 430 | else |
@@ -436,7 +434,6 @@ void PanelRadar::updateButtonStates() | |||
436 | enable_estate = false; | 434 | enable_estate = false; |
437 | enable_unmute = false; | 435 | enable_unmute = false; |
438 | enable_track = false; | 436 | enable_track = false; |
439 | enable_friend = false; | ||
440 | enable_cam = false; | 437 | enable_cam = false; |
441 | } | 438 | } |
442 | 439 | ||
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index cd9b3be..ae7461c 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp | |||
@@ -232,6 +232,7 @@ BOOL LLPipeline::sPickAvatar = TRUE; | |||
232 | BOOL LLPipeline::sDynamicLOD = TRUE; | 232 | BOOL LLPipeline::sDynamicLOD = TRUE; |
233 | BOOL LLPipeline::sShowHUDAttachments = TRUE; | 233 | BOOL LLPipeline::sShowHUDAttachments = TRUE; |
234 | BOOL LLPipeline::sRenderPhysicalBeacons = TRUE; | 234 | BOOL LLPipeline::sRenderPhysicalBeacons = TRUE; |
235 | BOOL LLPipeline::sRenderMOAPBeacons = FALSE; | ||
235 | BOOL LLPipeline::sRenderScriptedBeacons = FALSE; | 236 | BOOL LLPipeline::sRenderScriptedBeacons = FALSE; |
236 | BOOL LLPipeline::sRenderScriptedTouchBeacons = TRUE; | 237 | BOOL LLPipeline::sRenderScriptedTouchBeacons = TRUE; |
237 | BOOL LLPipeline::sRenderParticleBeacons = FALSE; | 238 | BOOL LLPipeline::sRenderParticleBeacons = FALSE; |
@@ -2149,6 +2150,43 @@ void renderPhysicalBeacons(LLDrawable* drawablep) | |||
2149 | } | 2150 | } |
2150 | } | 2151 | } |
2151 | 2152 | ||
2153 | void renderMOAPBeacons(LLDrawable* drawablep) | ||
2154 | { | ||
2155 | LLViewerObject *vobj = drawablep->getVObj(); | ||
2156 | |||
2157 | if(!vobj || vobj->isAvatar()) | ||
2158 | return; | ||
2159 | |||
2160 | BOOL beacon=FALSE; | ||
2161 | U8 tecount=vobj->getNumTEs(); | ||
2162 | for(int x=0;x<tecount;x++) | ||
2163 | { | ||
2164 | if(vobj->getTE(x)->hasMedia()) | ||
2165 | { | ||
2166 | beacon=TRUE; | ||
2167 | break; | ||
2168 | } | ||
2169 | } | ||
2170 | if(beacon==TRUE) | ||
2171 | { | ||
2172 | if (gPipeline.sRenderBeacons) | ||
2173 | { | ||
2174 | gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(0.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth")); | ||
2175 | } | ||
2176 | |||
2177 | if (gPipeline.sRenderHighlight) | ||
2178 | { | ||
2179 | S32 face_id; | ||
2180 | S32 count = drawablep->getNumFaces(); | ||
2181 | for (face_id = 0; face_id < count; face_id++) | ||
2182 | { | ||
2183 | gPipeline.mHighlightFaces.push_back(drawablep->getFace(face_id) ); | ||
2184 | } | ||
2185 | } | ||
2186 | } | ||
2187 | } | ||
2188 | |||
2189 | |||
2152 | void renderParticleBeacons(LLDrawable* drawablep) | 2190 | void renderParticleBeacons(LLDrawable* drawablep) |
2153 | { | 2191 | { |
2154 | // Look for attachments, objects, etc. | 2192 | // Look for attachments, objects, etc. |
@@ -2231,18 +2269,12 @@ void LLPipeline::postSort(LLCamera& camera) | |||
2231 | const S32 bin_count = 1024*8; | 2269 | const S32 bin_count = 1024*8; |
2232 | 2270 | ||
2233 | static LLCullResult::drawinfo_list_t alpha_bins[bin_count]; | 2271 | static LLCullResult::drawinfo_list_t alpha_bins[bin_count]; |
2234 | static U32 bin_size[bin_count]; | ||
2235 | 2272 | ||
2236 | //clear one bin per frame to avoid memory bloat | 2273 | //clear one bin per frame to avoid memory bloat |
2237 | static S32 clear_idx = 0; | 2274 | static S32 clear_idx = 0; |
2238 | clear_idx = (1+clear_idx)%bin_count; | 2275 | clear_idx = (1+clear_idx)%bin_count; |
2239 | alpha_bins[clear_idx].clear(); | 2276 | alpha_bins[clear_idx].clear(); |
2240 | 2277 | ||
2241 | for (U32 j = 0; j < bin_count; j++) | ||
2242 | { | ||
2243 | bin_size[j] = 0; | ||
2244 | } | ||
2245 | |||
2246 | //build render map | 2278 | //build render map |
2247 | for (LLCullResult::sg_list_t::iterator i = sCull->beginVisibleGroups(); i != sCull->endVisibleGroups(); ++i) | 2279 | for (LLCullResult::sg_list_t::iterator i = sCull->beginVisibleGroups(); i != sCull->endVisibleGroups(); ++i) |
2248 | { | 2280 | { |
@@ -2329,6 +2361,11 @@ void LLPipeline::postSort(LLCamera& camera) | |||
2329 | forAllVisibleDrawables(renderPhysicalBeacons); | 2361 | forAllVisibleDrawables(renderPhysicalBeacons); |
2330 | } | 2362 | } |
2331 | 2363 | ||
2364 | if(sRenderMOAPBeacons) | ||
2365 | { | ||
2366 | forAllVisibleDrawables(renderMOAPBeacons); | ||
2367 | } | ||
2368 | |||
2332 | if (sRenderParticleBeacons) | 2369 | if (sRenderParticleBeacons) |
2333 | { | 2370 | { |
2334 | forAllVisibleDrawables(renderParticleBeacons); | 2371 | forAllVisibleDrawables(renderParticleBeacons); |
@@ -4563,6 +4600,24 @@ BOOL LLPipeline::getRenderScriptedTouchBeacons(void*) | |||
4563 | } | 4600 | } |
4564 | 4601 | ||
4565 | // static | 4602 | // static |
4603 | void LLPipeline::setRenderMOAPBeacons(BOOL val) | ||
4604 | { | ||
4605 | sRenderMOAPBeacons = val; | ||
4606 | } | ||
4607 | |||
4608 | // static | ||
4609 | void LLPipeline::toggleRenderMOAPBeacons(void*) | ||
4610 | { | ||
4611 | sRenderMOAPBeacons = !sRenderMOAPBeacons; | ||
4612 | } | ||
4613 | |||
4614 | // static | ||
4615 | BOOL LLPipeline::getRenderMOAPBeacons(void*) | ||
4616 | { | ||
4617 | return sRenderMOAPBeacons; | ||
4618 | } | ||
4619 | |||
4620 | // static | ||
4566 | void LLPipeline::setRenderPhysicalBeacons(BOOL val) | 4621 | void LLPipeline::setRenderPhysicalBeacons(BOOL val) |
4567 | { | 4622 | { |
4568 | sRenderPhysicalBeacons = val; | 4623 | sRenderPhysicalBeacons = val; |
@@ -5895,8 +5950,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) | |||
5895 | 5950 | ||
5896 | stop_glerror(); | 5951 | stop_glerror(); |
5897 | 5952 | ||
5898 | LLVector3 origin = camera.getOrigin(); | ||
5899 | |||
5900 | glPushMatrix(); | 5953 | glPushMatrix(); |
5901 | 5954 | ||
5902 | mat.set_scale(glh::vec3f(1,1,-1)); | 5955 | mat.set_scale(glh::vec3f(1,1,-1)); |
diff --git a/linden/indra/newview/pipeline.h b/linden/indra/newview/pipeline.h index c5ab7ab..254b3c1 100644 --- a/linden/indra/newview/pipeline.h +++ b/linden/indra/newview/pipeline.h | |||
@@ -271,6 +271,10 @@ public: | |||
271 | static void toggleRenderPhysicalBeacons(void* data); | 271 | static void toggleRenderPhysicalBeacons(void* data); |
272 | static BOOL getRenderPhysicalBeacons(void* data); | 272 | static BOOL getRenderPhysicalBeacons(void* data); |
273 | 273 | ||
274 | static void setRenderMOAPBeacons(BOOL val); | ||
275 | static void toggleRenderMOAPBeacons(void * data); | ||
276 | static BOOL getRenderMOAPBeacons(void * data); | ||
277 | |||
274 | static void setRenderScriptedBeacons(BOOL val); | 278 | static void setRenderScriptedBeacons(BOOL val); |
275 | static void toggleRenderScriptedBeacons(void* data); | 279 | static void toggleRenderScriptedBeacons(void* data); |
276 | static BOOL getRenderScriptedBeacons(void* data); | 280 | static BOOL getRenderScriptedBeacons(void* data); |
@@ -572,6 +576,7 @@ protected: | |||
572 | S32 mLightingDetail; | 576 | S32 mLightingDetail; |
573 | 577 | ||
574 | static BOOL sRenderPhysicalBeacons; | 578 | static BOOL sRenderPhysicalBeacons; |
579 | static BOOL sRenderMOAPBeacons; | ||
575 | static BOOL sRenderScriptedTouchBeacons; | 580 | static BOOL sRenderScriptedTouchBeacons; |
576 | static BOOL sRenderScriptedBeacons; | 581 | static BOOL sRenderScriptedBeacons; |
577 | static BOOL sRenderParticleBeacons; | 582 | static BOOL sRenderParticleBeacons; |
diff --git a/linden/indra/newview/qtoolalign.cpp b/linden/indra/newview/qtoolalign.cpp index 3fe31f7..b4944fe 100644 --- a/linden/indra/newview/qtoolalign.cpp +++ b/linden/indra/newview/qtoolalign.cpp | |||
@@ -36,7 +36,7 @@ const F32 MANIPULATOR_SELECT_SIZE = 20.0; | |||
36 | 36 | ||
37 | 37 | ||
38 | QToolAlign::QToolAlign() | 38 | QToolAlign::QToolAlign() |
39 | : LLTool(std::string("Align")) | 39 | : LLToolComposite(std::string("Align")) |
40 | { | 40 | { |
41 | } | 41 | } |
42 | 42 | ||
@@ -46,7 +46,6 @@ QToolAlign::~QToolAlign() | |||
46 | } | 46 | } |
47 | 47 | ||
48 | 48 | ||
49 | |||
50 | BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask) | 49 | BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask) |
51 | { | 50 | { |
52 | if (mHighlightedAxis != -1) | 51 | if (mHighlightedAxis != -1) |
@@ -62,6 +61,11 @@ BOOL QToolAlign::handleMouseDown(S32 x, S32 y, MASK mask) | |||
62 | } | 61 | } |
63 | 62 | ||
64 | 63 | ||
64 | BOOL QToolAlign::handleDoubleClick(S32 x, S32 y, MASK mask) | ||
65 | { | ||
66 | return TRUE; | ||
67 | } | ||
68 | |||
65 | 69 | ||
66 | void QToolAlign::pickCallback(const LLPickInfo& pick_info) | 70 | void QToolAlign::pickCallback(const LLPickInfo& pick_info) |
67 | { | 71 | { |
@@ -95,7 +99,7 @@ void QToolAlign::pickCallback(const LLPickInfo& pick_info) | |||
95 | } | 99 | } |
96 | else | 100 | else |
97 | { | 101 | { |
98 | if (!(pick_info.mKeyMask == MASK_SHIFT)) | 102 | if (!(pick_info.mKeyMask & MASK_SHIFT)) |
99 | { | 103 | { |
100 | LLSelectMgr::getInstance()->deselectAll(); | 104 | LLSelectMgr::getInstance()->deselectAll(); |
101 | } | 105 | } |
@@ -105,7 +109,6 @@ void QToolAlign::pickCallback(const LLPickInfo& pick_info) | |||
105 | } | 109 | } |
106 | 110 | ||
107 | 111 | ||
108 | |||
109 | void QToolAlign::handleSelect() | 112 | void QToolAlign::handleSelect() |
110 | { | 113 | { |
111 | // no parts, please | 114 | // no parts, please |
@@ -207,7 +210,6 @@ BOOL QToolAlign::handleHover(S32 x, S32 y, MASK mask) | |||
207 | } | 210 | } |
208 | 211 | ||
209 | 212 | ||
210 | |||
211 | void setup_transforms_bbox(LLBBox bbox) | 213 | void setup_transforms_bbox(LLBBox bbox) |
212 | { | 214 | { |
213 | // translate to center | 215 | // translate to center |
@@ -242,6 +244,7 @@ void render_bbox(LLBBox bbox) | |||
242 | gGL.popMatrix(); | 244 | gGL.popMatrix(); |
243 | } | 245 | } |
244 | 246 | ||
247 | |||
245 | void render_cone_bbox(LLBBox bbox) | 248 | void render_cone_bbox(LLBBox bbox) |
246 | { | 249 | { |
247 | glMatrixMode(GL_MODELVIEW); | 250 | glMatrixMode(GL_MODELVIEW); |
@@ -256,7 +259,6 @@ void render_cone_bbox(LLBBox bbox) | |||
256 | } | 259 | } |
257 | 260 | ||
258 | 261 | ||
259 | |||
260 | // the selection bbox isn't axis aligned, so we must construct one | 262 | // the selection bbox isn't axis aligned, so we must construct one |
261 | // should this be cached in the selection manager? yes. | 263 | // should this be cached in the selection manager? yes. |
262 | LLBBox get_selection_axis_aligned_bbox() | 264 | LLBBox get_selection_axis_aligned_bbox() |
@@ -288,7 +290,6 @@ LLBBox get_selection_axis_aligned_bbox() | |||
288 | } | 290 | } |
289 | 291 | ||
290 | 292 | ||
291 | |||
292 | void QToolAlign::computeManipulatorSize() | 293 | void QToolAlign::computeManipulatorSize() |
293 | { | 294 | { |
294 | if (LLSelectMgr::getInstance()->getSelection()->getSelectType() == SELECT_TYPE_HUD) | 295 | if (LLSelectMgr::getInstance()->getSelection()->getSelectType() == SELECT_TYPE_HUD) |
@@ -407,6 +408,7 @@ void QToolAlign::render() | |||
407 | } | 408 | } |
408 | } | 409 | } |
409 | 410 | ||
411 | |||
410 | // only works for our specialized (AABB, position centered) bboxes | 412 | // only works for our specialized (AABB, position centered) bboxes |
411 | BOOL bbox_overlap(LLBBox bbox1, LLBBox bbox2) | 413 | BOOL bbox_overlap(LLBBox bbox1, LLBBox bbox2) |
412 | { | 414 | { |
@@ -422,7 +424,6 @@ BOOL bbox_overlap(LLBBox bbox1, LLBBox bbox2) | |||
422 | } | 424 | } |
423 | 425 | ||
424 | 426 | ||
425 | |||
426 | // used to sort bboxes before packing | 427 | // used to sort bboxes before packing |
427 | class BBoxCompare | 428 | class BBoxCompare |
428 | { | 429 | { |
@@ -598,5 +599,3 @@ void QToolAlign::align() | |||
598 | 599 | ||
599 | LLSelectMgr::getInstance()->sendMultipleUpdate(UPD_POSITION); | 600 | LLSelectMgr::getInstance()->sendMultipleUpdate(UPD_POSITION); |
600 | } | 601 | } |
601 | |||
602 | |||
diff --git a/linden/indra/newview/qtoolalign.h b/linden/indra/newview/qtoolalign.h index b2c18b7..2d30b92 100644 --- a/linden/indra/newview/qtoolalign.h +++ b/linden/indra/newview/qtoolalign.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #define Q_QTOOLALIGN_H | 13 | #define Q_QTOOLALIGN_H |
14 | 14 | ||
15 | #include "lltool.h" | 15 | #include "lltool.h" |
16 | #include "lltoolcomp.h" | ||
16 | #include "llbbox.h" | 17 | #include "llbbox.h" |
17 | 18 | ||
18 | class LLViewerObject; | 19 | class LLViewerObject; |
@@ -20,7 +21,7 @@ class LLPickInfo; | |||
20 | class LLToolSelectRect; | 21 | class LLToolSelectRect; |
21 | 22 | ||
22 | class QToolAlign | 23 | class QToolAlign |
23 | : public LLTool, public LLSingleton<QToolAlign> | 24 | : public LLToolComposite, public LLSingleton<QToolAlign> |
24 | { | 25 | { |
25 | public: | 26 | public: |
26 | QToolAlign(); | 27 | QToolAlign(); |
@@ -29,6 +30,7 @@ public: | |||
29 | virtual void handleSelect(); | 30 | virtual void handleSelect(); |
30 | virtual void handleDeselect(); | 31 | virtual void handleDeselect(); |
31 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); | 32 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); |
33 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); | ||
32 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); | 34 | virtual BOOL handleHover(S32 x, S32 y, MASK mask); |
33 | virtual void render(); | 35 | virtual void render(); |
34 | 36 | ||
diff --git a/linden/indra/newview/rcmoapradar.cpp b/linden/indra/newview/rcmoapradar.cpp new file mode 100644 index 0000000..f0593ef --- /dev/null +++ b/linden/indra/newview/rcmoapradar.cpp | |||
@@ -0,0 +1,440 @@ | |||
1 | // MOAP Radar | ||
2 | // Robin Cornelius | ||
3 | |||
4 | |||
5 | #include "llviewerprecompiledheaders.h" | ||
6 | |||
7 | #include "llavatarconstants.h" | ||
8 | #include "llfloateravatarlist.h" | ||
9 | |||
10 | #include "lluictrlfactory.h" | ||
11 | #include "llviewerwindow.h" | ||
12 | #include "llscrolllistctrl.h" | ||
13 | #include "llradiogroup.h" | ||
14 | #include "llviewercontrol.h" | ||
15 | #include "llbutton.h" | ||
16 | |||
17 | #include "llvoavatar.h" | ||
18 | #include "llimview.h" | ||
19 | #include "rcmoapradar.h" | ||
20 | #include "llregionflags.h" | ||
21 | #include "llfloaterreporter.h" | ||
22 | #include "llagent.h" | ||
23 | #include "llviewerregion.h" | ||
24 | #include "lltracker.h" | ||
25 | #include "llviewerstats.h" | ||
26 | #include "llerror.h" | ||
27 | #include "llchat.h" | ||
28 | #include "llfloaterchat.h" | ||
29 | #include "llviewermessage.h" | ||
30 | #include "llweb.h" | ||
31 | #include "llviewerobjectlist.h" | ||
32 | #include "llmutelist.h" | ||
33 | #include "llcallbacklist.h" | ||
34 | #include "llmediaentry.h" | ||
35 | |||
36 | #include <time.h> | ||
37 | #include <string.h> | ||
38 | |||
39 | #include <map> | ||
40 | |||
41 | #include "llworld.h" | ||
42 | |||
43 | #include "llsdutil.h" | ||
44 | |||
45 | LLFloaterMOAPRadar* LLFloaterMOAPRadar::sInstance = NULL; | ||
46 | |||
47 | LLFloaterMOAPRadar::LLFloaterMOAPRadar() : LLFloater(std::string("MOAPradar")) | ||
48 | { | ||
49 | llassert_always(sInstance == NULL); | ||
50 | sInstance = this; | ||
51 | mUpdateRate = gSavedSettings.getU32("MOAPRadarUpdateRate") * 3 + 3; | ||
52 | mTrackingRunning=false; | ||
53 | } | ||
54 | |||
55 | LLFloaterMOAPRadar::~LLFloaterMOAPRadar() | ||
56 | { | ||
57 | gIdleCallbacks.deleteFunction(LLFloaterMOAPRadar::callbackIdle); | ||
58 | sInstance = NULL; | ||
59 | } | ||
60 | |||
61 | //static | ||
62 | void LLFloaterMOAPRadar::toggle(void*) | ||
63 | { | ||
64 | if (sInstance) | ||
65 | { | ||
66 | if (sInstance->getVisible()) | ||
67 | { | ||
68 | sInstance->close(false); | ||
69 | } | ||
70 | else | ||
71 | { | ||
72 | sInstance->open(); | ||
73 | } | ||
74 | } | ||
75 | else | ||
76 | { | ||
77 | showInstance(); | ||
78 | } | ||
79 | } | ||
80 | |||
81 | //static | ||
82 | void LLFloaterMOAPRadar::showInstance() | ||
83 | { | ||
84 | if (sInstance) | ||
85 | { | ||
86 | if (!sInstance->getVisible()) | ||
87 | { | ||
88 | sInstance->open(); | ||
89 | } | ||
90 | } | ||
91 | else | ||
92 | { | ||
93 | sInstance = new LLFloaterMOAPRadar(); | ||
94 | LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_moap_radar.xml"); | ||
95 | } | ||
96 | } | ||
97 | |||
98 | void LLFloaterMOAPRadar::draw() | ||
99 | { | ||
100 | LLFloater::draw(); | ||
101 | } | ||
102 | |||
103 | void LLFloaterMOAPRadar::onOpen() | ||
104 | { | ||
105 | gSavedSettings.setBOOL("ShowMOAPRadar", TRUE); | ||
106 | sInstance->setVisible(TRUE); | ||
107 | } | ||
108 | |||
109 | void LLFloaterMOAPRadar::onClose(bool app_quitting) | ||
110 | { | ||
111 | sInstance->setVisible(FALSE); | ||
112 | if (!app_quitting) | ||
113 | { | ||
114 | gSavedSettings.setBOOL("ShowMOAPRadar", FALSE); | ||
115 | } | ||
116 | if (!gSavedSettings.getBOOL("MOAPRadarKeepOpen") || app_quitting) | ||
117 | { | ||
118 | destroy(); | ||
119 | } | ||
120 | } | ||
121 | |||
122 | |||
123 | BOOL LLFloaterMOAPRadar::postBuild() | ||
124 | { | ||
125 | |||
126 | mMOAPList = getChild<LLScrollListCtrl>("moap_list"); | ||
127 | mMOAPList->sortByColumn("distance", TRUE); | ||
128 | |||
129 | mTrackBtn = getChild<LLButton>("track_btn"); | ||
130 | mTrackBtn->setLabel(LLStringExplicit("Track")); | ||
131 | |||
132 | childSetAction("open_btn", onClickOpen, this); | ||
133 | childSetAction("track_btn", onClickTrack, this); | ||
134 | childSetAction("copy_btn", onClickCopy, this); | ||
135 | |||
136 | mMOAPList->setCommitOnSelectionChange(TRUE); | ||
137 | childSetCommitCallback("moap_list", onSelectMOAP, this); | ||
138 | |||
139 | gIdleCallbacks.addFunction(LLFloaterMOAPRadar::callbackIdle); | ||
140 | |||
141 | return TRUE; | ||
142 | } | ||
143 | |||
144 | //static | ||
145 | void LLFloaterMOAPRadar::callbackIdle(void *userdata) { | ||
146 | if (LLFloaterMOAPRadar::sInstance != NULL) | ||
147 | { | ||
148 | // Do not update at every frame: this would be insane ! | ||
149 | if (gFrameCount % LLFloaterMOAPRadar::sInstance->mUpdateRate == 0) | ||
150 | { | ||
151 | LLFloaterMOAPRadar::sInstance->updateMOAPList(); | ||
152 | } | ||
153 | } | ||
154 | } | ||
155 | |||
156 | |||
157 | void LLFloaterMOAPRadar::updateMOAPList() | ||
158 | { | ||
159 | if (sInstance != this) return; | ||
160 | |||
161 | mMOAPList->deleteAllItems(); | ||
162 | |||
163 | S32 obj_count=gObjectList.getNumObjects(); | ||
164 | |||
165 | int count=0; | ||
166 | |||
167 | for(int objnum=0;objnum<obj_count;objnum++) | ||
168 | { | ||
169 | LLPointer<LLViewerObject> obj = gObjectList.getObject(objnum); | ||
170 | |||
171 | if(obj.isNull()) | ||
172 | continue; | ||
173 | |||
174 | if(obj->isDead() || obj->isOrphaned()) | ||
175 | continue; | ||
176 | |||
177 | if(obj->getMediaType() == LLViewerObject::MEDIA_TYPE_NONE) | ||
178 | continue; | ||
179 | |||
180 | LLSD element; | ||
181 | |||
182 | element["id"] = obj->getID(); | ||
183 | |||
184 | for(int face=0;face<obj->getNumTEs();face++) | ||
185 | { | ||
186 | const LLTextureEntry * te=obj->getTE(face); | ||
187 | if(te==NULL) | ||
188 | continue; | ||
189 | |||
190 | if(te->hasMedia()) | ||
191 | { | ||
192 | LLMediaEntry* media=te->getMediaData(); | ||
193 | |||
194 | if(media==NULL) | ||
195 | continue; | ||
196 | |||
197 | LLSD media_details; | ||
198 | media->asLLSD(media_details); | ||
199 | |||
200 | element["columns"][LIST_URL]["column"] = "URL"; | ||
201 | element["columns"][LIST_URL]["type"] = "text"; | ||
202 | std::string URL=media->getCurrentURL(); | ||
203 | if(URL=="") | ||
204 | URL="(Waiting....)"; | ||
205 | |||
206 | element["columns"][LIST_URL]["value"] = URL; | ||
207 | |||
208 | if(mTrackingRunning && mTrackedID==obj->getID() && mTrackedFace==face) | ||
209 | { | ||
210 | element["columns"][LIST_URL]["font-style"] = "BOLD"; | ||
211 | } | ||
212 | else | ||
213 | { | ||
214 | element["columns"][LIST_URL]["font-style"] = "NORMAL"; | ||
215 | } | ||
216 | |||
217 | element["columns"][LIST_FACE]["column"] = "face"; | ||
218 | element["columns"][LIST_FACE]["type"] = "text"; | ||
219 | std::stringstream face_buf; | ||
220 | face_buf << face; | ||
221 | element["columns"][LIST_FACE]["value"] = face_buf.str(); | ||
222 | |||
223 | LLVector3d offset = gAgent.getPositionGlobal()-obj->getPositionGlobal(); | ||
224 | S32 dist= offset.length(); | ||
225 | |||
226 | element["columns"][LIST_DISTANCE]["column"] = "distance"; | ||
227 | element["columns"][LIST_DISTANCE]["type"] = "text"; | ||
228 | std::stringstream dist_buf; | ||
229 | dist_buf << std::fixed << std::setprecision(2) << dist<<"m"; | ||
230 | element["columns"][LIST_DISTANCE]["value"] = dist_buf.str(); | ||
231 | |||
232 | if(dist<25) | ||
233 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::green.getValue(); | ||
234 | else if(dist<50) | ||
235 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::blue1.getValue(); | ||
236 | else if(dist<100) | ||
237 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::black.getValue(); | ||
238 | else if(dist<256) | ||
239 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::yellow.getValue(); | ||
240 | else | ||
241 | element["columns"][LIST_DISTANCE]["color"] = LLColor4::red.getValue(); | ||
242 | |||
243 | |||
244 | element["columns"][LIST_POSITION]["column"] = "position"; | ||
245 | element["columns"][LIST_POSITION]["type"] = "text"; | ||
246 | element["columns"][LIST_POSITION]["value"] = ""; | ||
247 | |||
248 | element["columns"][LIST_ALTITUDE]["column"] = "altitude"; | ||
249 | element["columns"][LIST_ALTITUDE]["type"] = "text"; | ||
250 | std::stringstream alt_buf; | ||
251 | alt_buf << std::fixed << std::setprecision(2) << obj->getPositionGlobal().mdV[2]<<"m"; | ||
252 | element["columns"][LIST_ALTITUDE]["value"] = alt_buf.str(); | ||
253 | |||
254 | element["columns"][LIST_POSITION]["column"]="position"; | ||
255 | element["columns"][LIST_POSITION]["type"] = "text"; | ||
256 | std::stringstream pos_buf; | ||
257 | |||
258 | S32 moap_x = (S32)offset.mdV[VX]; | ||
259 | S32 moap_y = (S32)offset.mdV[VY]; | ||
260 | if (moap_x >= -256 && moap_x <= 256 && moap_y >= -256 && moap_y <= 256) | ||
261 | { | ||
262 | pos_buf<< std::fixed << std::setprecision(2)<<obj->getPositionRegion().mV[VX]<<","<<obj->getPositionRegion().mV[VY]; | ||
263 | } | ||
264 | else | ||
265 | { | ||
266 | if (moap_y < 0) | ||
267 | pos_buf<<"S"; | ||
268 | else if (moap_y > 256) | ||
269 | pos_buf<<"N"; | ||
270 | |||
271 | if (moap_x < 0) | ||
272 | pos_buf<<"W"; | ||
273 | else if (moap_x > 256) | ||
274 | pos_buf<<"E"; | ||
275 | } | ||
276 | |||
277 | |||
278 | element["columns"][LIST_POSITION]["value"] = pos_buf.str(); | ||
279 | |||
280 | mMOAPList->addElement(element, ADD_BOTTOM); | ||
281 | |||
282 | if(mSelectedObjID==obj->getID() && mSelectedFace==face) | ||
283 | { | ||
284 | mMOAPList->selectNthItem(count); | ||
285 | } | ||
286 | |||
287 | count++; | ||
288 | } | ||
289 | } | ||
290 | } | ||
291 | |||
292 | updatetrackbtn(); | ||
293 | } | ||
294 | |||
295 | // static | ||
296 | void LLFloaterMOAPRadar::onClickOpen(void* userdata) | ||
297 | { | ||
298 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
299 | |||
300 | LLDynamicArray<LLUUID> ids = self->mMOAPList->getSelectedIDs(); | ||
301 | |||
302 | if(ids.empty()) | ||
303 | { | ||
304 | return; | ||
305 | } | ||
306 | |||
307 | LLUUID id=ids.front(); | ||
308 | |||
309 | LLPointer<LLViewerObject> obj = gObjectList.findObject(id); | ||
310 | if(obj.notNull()) | ||
311 | { | ||
312 | |||
313 | const LLTextureEntry * te=obj->getTE(self->mSelectedFace); | ||
314 | if(te==NULL) | ||
315 | return; | ||
316 | |||
317 | if(te->hasMedia()) | ||
318 | { | ||
319 | LLMediaEntry* media=te->getMediaData(); | ||
320 | if(media) | ||
321 | { | ||
322 | //gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(media->getCurrentURL())); | ||
323 | LLWeb::loadURL(media->getCurrentURL()); | ||
324 | } | ||
325 | } | ||
326 | } | ||
327 | |||
328 | } | ||
329 | |||
330 | // static | ||
331 | void LLFloaterMOAPRadar::onClickTrack(void* userdata) | ||
332 | { | ||
333 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
334 | |||
335 | LLDynamicArray<LLUUID> ids = self->mMOAPList->getSelectedIDs(); | ||
336 | |||
337 | if(self->mTrackingRunning) | ||
338 | { | ||
339 | LLTracker::stopTracking(NULL); | ||
340 | self->mTrackingRunning=false; | ||
341 | } | ||
342 | |||
343 | if(ids.empty()) | ||
344 | { | ||
345 | self->mTrackedID=LLUUID::null; | ||
346 | self->mTrackingRunning=false; | ||
347 | return; | ||
348 | } | ||
349 | |||
350 | LLUUID id=ids.front(); | ||
351 | |||
352 | if(id==self->mTrackedID && self->mSelectedFace==self->mTrackedFace) | ||
353 | { | ||
354 | self->mTrackedID=LLUUID::null; | ||
355 | self->mTrackingRunning=false; | ||
356 | return; | ||
357 | } | ||
358 | |||
359 | self->mTrackedID=LLUUID::null; | ||
360 | |||
361 | LLPointer<LLViewerObject> obj = gObjectList.findObject(id); | ||
362 | if(obj.notNull()) | ||
363 | { | ||
364 | LLTracker::trackLocation(obj->getPositionGlobal(),"MOAP Tracking","",LLTracker::LOCATION_ITEM); | ||
365 | self->mTrackingRunning=true; | ||
366 | self->mTrackedID=id; | ||
367 | self->mTrackedFace=self->mSelectedFace; | ||
368 | } | ||
369 | } | ||
370 | |||
371 | // static | ||
372 | void LLFloaterMOAPRadar::onClickCopy(void* userdata) | ||
373 | { | ||
374 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
375 | |||
376 | LLDynamicArray<LLUUID> ids = self->mMOAPList->getSelectedIDs(); | ||
377 | |||
378 | if(ids.empty()) | ||
379 | { | ||
380 | LLTracker::stopTracking(NULL); | ||
381 | return; | ||
382 | } | ||
383 | |||
384 | LLUUID id=ids.front(); | ||
385 | |||
386 | LLPointer<LLViewerObject> obj = gObjectList.findObject(id); | ||
387 | |||
388 | if(obj.notNull()) | ||
389 | { | ||
390 | |||
391 | const LLTextureEntry * te=obj->getTE(self->mSelectedFace); | ||
392 | if(te==NULL) | ||
393 | return; | ||
394 | |||
395 | if(te->hasMedia()) | ||
396 | { | ||
397 | LLMediaEntry* media=te->getMediaData(); | ||
398 | if(media) | ||
399 | { | ||
400 | gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(media->getCurrentURL())); | ||
401 | } | ||
402 | } | ||
403 | } | ||
404 | |||
405 | } | ||
406 | |||
407 | //static | ||
408 | void LLFloaterMOAPRadar::onSelectMOAP(LLUICtrl*, void* userdata) | ||
409 | { | ||
410 | LLFloaterMOAPRadar *self = (LLFloaterMOAPRadar*)userdata; | ||
411 | |||
412 | LLScrollListItem *item = self->mMOAPList->getFirstSelected(); | ||
413 | if (item) | ||
414 | { | ||
415 | self->mSelectedObjID = item->getUUID(); | ||
416 | self->mSelectedFace = item->getColumn(LIST_FACE)->getValue().asInteger(); | ||
417 | } | ||
418 | |||
419 | self->updatetrackbtn(); | ||
420 | } | ||
421 | |||
422 | void LLFloaterMOAPRadar::updatetrackbtn() | ||
423 | { | ||
424 | if( mTrackingRunning) | ||
425 | { | ||
426 | if( mTrackedID==mSelectedObjID && mTrackedFace==mSelectedFace) | ||
427 | { | ||
428 | mTrackBtn->setLabel(LLStringExplicit("Untrack")); | ||
429 | } | ||
430 | else | ||
431 | { | ||
432 | mTrackBtn->setLabel(LLStringExplicit("New Track")); | ||
433 | } | ||
434 | } | ||
435 | else | ||
436 | { | ||
437 | mTrackBtn->setLabel(LLStringExplicit("Track")); | ||
438 | } | ||
439 | |||
440 | } \ No newline at end of file | ||
diff --git a/linden/indra/newview/rcmoapradar.h b/linden/indra/newview/rcmoapradar.h new file mode 100644 index 0000000..1d01546 --- /dev/null +++ b/linden/indra/newview/rcmoapradar.h | |||
@@ -0,0 +1,58 @@ | |||
1 | |||
2 | |||
3 | class LLFloaterMOAPRadar : public LLFloater | ||
4 | { | ||
5 | |||
6 | private: | ||
7 | LLFloaterMOAPRadar(); | ||
8 | public: | ||
9 | ~LLFloaterMOAPRadar(); | ||
10 | |||
11 | enum AVATARS_COLUMN_ORDER | ||
12 | { | ||
13 | LIST_URL, | ||
14 | LIST_FACE, | ||
15 | LIST_DISTANCE, | ||
16 | LIST_POSITION, | ||
17 | LIST_ALTITUDE | ||
18 | }; | ||
19 | |||
20 | /*virtual*/ void onClose(bool app_quitting); | ||
21 | /*virtual*/ void onOpen(); | ||
22 | /*virtual*/ BOOL postBuild(); | ||
23 | /*virtual*/ void draw(); | ||
24 | |||
25 | static void toggle(void*); | ||
26 | |||
27 | static void showInstance(); | ||
28 | |||
29 | static void callbackIdle(void *userdata); | ||
30 | |||
31 | void updateMOAPList(); | ||
32 | |||
33 | static void onClickOpen(void* userdata); | ||
34 | static void onClickCopy(void* userdata); | ||
35 | static void onClickTrack(void* userdata); | ||
36 | static void onSelectMOAP(LLUICtrl*, void* userdata); | ||
37 | |||
38 | |||
39 | private: | ||
40 | static LLFloaterMOAPRadar* sInstance; | ||
41 | LLScrollListCtrl* mMOAPList; | ||
42 | LLButton * mTrackBtn; | ||
43 | |||
44 | U32 mUpdateRate; | ||
45 | |||
46 | LLUUID mSelectedObjID; | ||
47 | U8 mSelectedFace; | ||
48 | bool mTrackingRunning; | ||
49 | |||
50 | LLUUID mTrackedID; | ||
51 | U8 mTrackedFace; | ||
52 | |||
53 | void updatetrackbtn(); | ||
54 | |||
55 | public: | ||
56 | static LLFloaterMOAPRadar* getInstance() { return sInstance; } | ||
57 | |||
58 | }; \ No newline at end of file | ||
diff --git a/linden/indra/newview/res/viewerRes.rc b/linden/indra/newview/res/viewerRes.rc index 951d0cc..edeee92 100644 --- a/linden/indra/newview/res/viewerRes.rc +++ b/linden/indra/newview/res/viewerRes.rc | |||
@@ -156,11 +156,11 @@ BEGIN | |||
156 | BEGIN | 156 | BEGIN |
157 | VALUE "CompanyName", "Imprudence Viewer Project" | 157 | VALUE "CompanyName", "Imprudence Viewer Project" |
158 | VALUE "FileDescription", "Imprudence" | 158 | VALUE "FileDescription", "Imprudence" |
159 | VALUE "FileVersion", "1.4.0 beta 2" | 159 | VALUE "FileVersion", "1.4.0.3 exp 1" |
160 | VALUE "InternalName", "Imprudence" | 160 | VALUE "InternalName", "Imprudence" |
161 | VALUE "OriginalFilename", "imprudence.exe" | 161 | VALUE "OriginalFilename", "imprudence.exe" |
162 | VALUE "ProductName", "Imprudence" | 162 | VALUE "ProductName", "Imprudence" |
163 | VALUE "ProductVersion", "1.4.0 beta 2" | 163 | VALUE "ProductVersion", "1.4.0.3 exp 1" |
164 | END | 164 | END |
165 | END | 165 | END |
166 | BLOCK "VarFileInfo" | 166 | BLOCK "VarFileInfo" |
diff --git a/linden/indra/newview/skins/default/textures/cakeisalie.png b/linden/indra/newview/skins/default/textures/cakeisalie.png deleted file mode 100644 index bc8af84..0000000 --- a/linden/indra/newview/skins/default/textures/cakeisalie.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/ceilingcat.png b/linden/indra/newview/skins/default/textures/ceilingcat.png deleted file mode 100644 index 5cf5285..0000000 --- a/linden/indra/newview/skins/default/textures/ceilingcat.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/easteregg.png b/linden/indra/newview/skins/default/textures/easteregg.png deleted file mode 100644 index 75eaef7..0000000 --- a/linden/indra/newview/skins/default/textures/easteregg.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/hugs.png b/linden/indra/newview/skins/default/textures/hugs.png deleted file mode 100644 index d612793..0000000 --- a/linden/indra/newview/skins/default/textures/hugs.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/nomnom.png b/linden/indra/newview/skins/default/textures/nomnom.png deleted file mode 100644 index ffc70ef..0000000 --- a/linden/indra/newview/skins/default/textures/nomnom.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/octopus.png b/linden/indra/newview/skins/default/textures/octopus.png deleted file mode 100644 index 91765f9..0000000 --- a/linden/indra/newview/skins/default/textures/octopus.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/textures/zombiecat.png b/linden/indra/newview/skins/default/textures/zombiecat.png deleted file mode 100644 index 93392c0..0000000 --- a/linden/indra/newview/skins/default/textures/zombiecat.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml index 91a63eb..fa8251c 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml | |||
@@ -35,17 +35,17 @@ | |||
35 | max_length="65536" mouse_opaque="true" name="credits_editor" width="423" | 35 | max_length="65536" mouse_opaque="true" name="credits_editor" width="423" |
36 | word_wrap="true"> | 36 | word_wrap="true"> |
37 | The Imprudence Viewer was rocked hard by: | 37 | The Imprudence Viewer was rocked hard by: |
38 | Jacek Antonelli, McCabe Maxsted, Armin Weatherwax, Elektra Hesse, CodeBastard Redgrave and Boroondas Gupte. | 38 | Armin Weatherwax, Boroondas Gupte, CodeBastard Redgrave, Elektra Hesse, Jacek Antonelli, McCabe Maxsted, and onefang rejected. |
39 | 39 | ||
40 | http://kokuaviewer.org/ | 40 | http://kokuaviewer.org/ |
41 | 41 | ||
42 | Imprudence is so awesome thanks to contributions from many generous people: | 42 | Imprudence is so awesome thanks to contributions from many generous people: |
43 | 43 | ||
44 | For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Angus Boyd, Ansariel Hiller, Archimedies Plutonian, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Eryn, Felix Duesenburg, Frederick Martian, Geneko Nemeth, Grandma Bates, Hazim Gazov, Henri Beauchamp, Hg Beeks, Hiroshi Kumaki, Kakurady Drakenar, Katharine Berry, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lance Corrimal, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mimika Oh, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Nicky Perian, Patrick Sapinski, Paul Churchill, Peter Lameth, Qarl Fizz, Revolution Smythe, Robin Cornelius, Seraph Linden, Shyotl Kuhr, Siana Gearz, SignpostMarv Martin, Stephen Zenith, TankMaster Finesmith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, Tonya Souther, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, WhiteStar Magic, Zi Ree, and Zwagoth Klaar. | 44 | For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Angus Boyd, Ansariel Hiller, Archimedies Plutonian, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Eryn, Felix Duesenburg, Frederick Martian, Geneko Nemeth, Grandma Bates, Hazim Gazov, Henri Beauchamp, Hg Beeks, Hiroshi Kumaki, Johnnie Carling, Lord Drakeo, Kakurady Drakenar, Katharine Berry, Kentron Katana, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lance Corrimal, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mimika Oh, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Nicky Perian, Patrick Sapinski, Paul Churchill, Peter Lameth, Qarl Fizz, Revolution Smythe, Robin Cornelius, Seraph Linden, Shyotl Kuhr, Siana Gearz, SignpostMarv Martin, Stephen Zenith, TankMaster Finesmith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, Tonya Souther, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, WhiteStar Magic, Zi Ree, and Zwagoth Klaar. |
45 | 45 | ||
46 | For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden. | 46 | For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden. |
47 | 47 | ||
48 | Thanks also to the developer(s) of the Ascent Viewer, Astra Viewer, Cool VL Viewer, Dolphin Viewer, Emerald Viewer, FrozenGlobe Viewer, Hippo Viewer, Meerkat Viewer, Meta7 Viewer, Phoenix Viewer, Singularity Viewer and Snowglobe Viewer for viewer enhancements we have incorporated, as well as Kitty Barnett for RLVa. Special thanks to the folks at Linden Lab for releasing the viewer source, without which this endeavor would have been impossible. | 48 | Thanks also to the developer(s) of the Ascent Viewer, Astra Viewer, Cool VL Viewer, Dolphin Viewer, Emerald Viewer, FrozenGlobe Viewer, Hippo Viewer, Meerkat Viewer, Meta7 Viewer, Phoenix Viewer, Singularity Viewer and Snowglobe Viewer for viewer enhancements we have incorporated, as well as Kitty Barnett for RLVa. Special thanks to the folks at Linden Lab for releasing the viewer source, without which this endeavor would have been impossible. |
49 | 49 | ||
50 | For a complete list of who did what, read the release notes! | 50 | For a complete list of who did what, read the release notes! |
51 | 51 | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml b/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml index e698878..2f9fc4d 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_beacons.xml | |||
@@ -1,15 +1,16 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false" | 2 | <floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false" |
3 | width="250" height="225" | 3 | width="250" height="255" |
4 | name="beacons" title="Beacons" | 4 | name="beacons" title="Beacons" |
5 | rect_control="FloaterBeaconsRect" control_name="BeaconsEnabled"> | 5 | rect_control="FloaterBeaconsRect" control_name="BeaconsEnabled"> |
6 | <panel bottom="10" follows="left|top|right|bottom" left="10" width="230" height="200" name="beacons_panel"> | 6 | <panel bottom="10" follows="left|top|right|bottom" left="10" width="230" height="240" name="beacons_panel"> |
7 | <check_box bottom_delta="-33" follows="left|top" left="0" name="touch_only" label="Scripted Objects with Touch Only" control_name="scripttouchbeacon" /> | 7 | <check_box bottom_delta="-33" follows="left|top" left="0" name="touch_only" label="Scripted Objects with Touch Only" control_name="scripttouchbeacon" /> |
8 | <check_box bottom_delta="-20" follows="left|top" left="0" name="scripted" label="Scripted Objects" control_name="scriptsbeacon" /> | 8 | <check_box bottom_delta="-20" follows="left|top" left="0" name="scripted" label="Scripted Objects" control_name="scriptsbeacon" /> |
9 | <check_box bottom_delta="-20" follows="left|top" left="0" name="physical" label="Physical Objects" control_name="physicalbeacon" /> | 9 | <check_box bottom_delta="-20" follows="left|top" left="0" name="physical" label="Physical Objects" control_name="physicalbeacon" /> |
10 | <check_box bottom_delta="-20" follows="left|top" left="0" name="sounds" label="Sound Sources" control_name="soundsbeacon" /> | 10 | <check_box bottom_delta="-20" follows="left|top" left="0" name="sounds" label="Sound Sources" control_name="soundsbeacon" /> |
11 | <check_box bottom_delta="-20" follows="left|top" left="0" name="particles" label="Particle Sources" control_name="particlesbeacon" /> | 11 | <check_box bottom_delta="-20" follows="left|top" left="0" name="particles" label="Particle Sources" control_name="particlesbeacon" /> |
12 | <check_box bottom_delta="-20" follows="left|top" left="0" name="highlights" label="Render Highlights" control_name="renderhighlights" /> | 12 | <check_box bottom_delta="-20" follows="left|top" left="0" name="highlights" label="Render Highlights" control_name="renderhighlights" /> |
13 | <check_box bottom_delta="-20" follows="left|top" left="0" name="moap" label="MOAP Objects" control_name="moapbeacon" /> | ||
13 | <check_box bottom_delta="-20" follows="left|top" left="0" name="beacons" label="Render Beacons" control_name="renderbeacons" /> | 14 | <check_box bottom_delta="-20" follows="left|top" left="0" name="beacons" label="Render Beacons" control_name="renderbeacons" /> |
14 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 15 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
15 | bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" | 16 | bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml index 53dd217..5f9e745 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_build_options.xml | |||
@@ -68,13 +68,34 @@ | |||
68 | label="Values are percent" left_delta="-5" mouse_opaque="true" | 68 | label="Values are percent" left_delta="-5" mouse_opaque="true" |
69 | tool_tip="Default settings are Percentages and every axis set at 50" | 69 | tool_tip="Default settings are Percentages and every axis set at 50" |
70 | name="PivotPercToggle" radio_style="false" width="100" /> | 70 | name="PivotPercToggle" radio_style="false" width="100" /> |
71 | 71 | ||
72 | <check_box bottom_delta="60" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | 72 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
73 | initial_value="true" label="Show selection outlines" left_delta="143" | 73 | bottom_delta="-50" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall" |
74 | mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle" | 74 | h_pad="0" halign="left" height="10" left="220" mouse_opaque="false" |
75 | name="text_box8" v_pad="0" width="150">Show during build:</text> | ||
76 | <view_border bevel_style="none" border_thickness="1" bottom_delta="-98" follows="top|left" height="90" | ||
77 | left="198" name="ShowBorder" width="135" /> | ||
78 | |||
79 | |||
80 | <check_box bottom_delta="70" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
81 | initial_value="true" label="Hidden selection" left_delta="0" | ||
82 | mouse_opaque="true" name="BuildPrefsRenderHidden_toggle" | ||
75 | radio_style="false" width="270"/> | 83 | radio_style="false" width="270"/> |
76 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | 84 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" |
77 | label="Limit Select Distance" left_delta="0" mouse_opaque="true" | 85 | initial_value="true" label="Light radius" left_delta="0" |
86 | mouse_opaque="true" name="BuildPrefsRenderLightRadius_toggle" | ||
87 | radio_style="false" width="270"/> | ||
88 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
89 | initial_value="true" label="Selection beam" left_delta="0" | ||
90 | mouse_opaque="true" name="BuildPrefsShowSelectionBeam_toggle" | ||
91 | radio_style="false" width="270"/> | ||
92 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
93 | initial_value="true" label="Selection outlines" left_delta="0" | ||
94 | mouse_opaque="true" name="BuildPrefsRenderHighlight_toggle" | ||
95 | radio_style="false" width="270"/> | ||
96 | |||
97 | <check_box bottom_delta="198" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | ||
98 | label="Limit Select Distance" left_delta="148" mouse_opaque="true" | ||
78 | tooltip="" | 99 | tooltip="" |
79 | name="limit_select_dist_check" radio_style="false" width="270" /> | 100 | name="limit_select_dist_check" radio_style="false" width="270" /> |
80 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" | 101 | <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_moap_radar.xml b/linden/indra/newview/skins/default/xui/en-us/floater_moap_radar.xml new file mode 100644 index 0000000..b9e3f99 --- /dev/null +++ b/linden/indra/newview/skins/default/xui/en-us/floater_moap_radar.xml | |||
@@ -0,0 +1,54 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> | ||
2 | <floater name="MOAP" title="MOAP Radar" | ||
3 | can_resize="true" can_minimize="true" can_close="true" can_drag_on_left="false" | ||
4 | rect_control="FloaterRadarRect" min_width="700" min_height="150"> | ||
5 | |||
6 | <scroll_list name="moap_list" | ||
7 | left="10" right="-10" top="-20" bottom="40" can_resize="true" | ||
8 | column_padding="0" follows="left|top|bottom|right" | ||
9 | draw_heading="true" multi_select="true" search_column="1" | ||
10 | tool_tip="MOAP List"> | ||
11 | <column name="URL" label="URL" width="450" tool_tip="URL of MOAP"/> | ||
12 | <column name="face" label="Face" width="48" tool_tip="URL of MOAP"/> | ||
13 | <column name="distance" label="Dist." width="48" tool_tip="Distance from your avatar"/> | ||
14 | <column name="position" label="Pos." width="90" tool_tip="Position (X, Y) within this sim, or general direction (cardinal point) for outside sims"/> | ||
15 | <column name="altitude" label="Alt." width="48" tool_tip="Altitude"/> | ||
16 | </scroll_list> | ||
17 | |||
18 | |||
19 | <button | ||
20 | name="open_btn" | ||
21 | label="Open" | ||
22 | tool_tip="Open Current URL" | ||
23 | left="10" | ||
24 | bottom_delta="-30" | ||
25 | width="80" | ||
26 | height="20" | ||
27 | font="SansSerifSmall" | ||
28 | follows="bottom|left" | ||
29 | /> | ||
30 | <button | ||
31 | name="track_btn" | ||
32 | label="(Un)Track" | ||
33 | tool_tip="Toggle tracking of this MOAPs position" | ||
34 | left_delta="90" | ||
35 | bottom_delta="0" | ||
36 | width="80" | ||
37 | height="20" | ||
38 | font="SansSerifSmall" | ||
39 | follows="bottom|left" | ||
40 | /> | ||
41 | <button | ||
42 | name="copy_btn" | ||
43 | label="Get URL" | ||
44 | tool_tip="Copies URL to the clipboard" | ||
45 | left_delta="90" | ||
46 | bottom_delta="0" | ||
47 | width="80" | ||
48 | height="20" | ||
49 | font="SansSerifSmall" | ||
50 | follows="bottom|left" | ||
51 | /> | ||
52 | <!-- upper middle row --> | ||
53 | |||
54 | </floater> | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml index 3f476cf..2ed5120 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml | |||
@@ -69,20 +69,24 @@ | |||
69 | 69 | ||
70 | <check_box bottom="-70" follows="left|top" font="SansSerifSmall" height="16" | 70 | <check_box bottom="-70" follows="left|top" font="SansSerifSmall" height="16" |
71 | initial_value="false" label="Position" left="4" mouse_opaque="true" | 71 | initial_value="false" label="Position" left="4" mouse_opaque="true" |
72 | name="radio position" radio_style="true" width="114" /> | 72 | name="radio position" radio_style="true" width="114" |
73 | tool_tip="Position selected prims (Ctrl-Shift-P)." /> | ||
73 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 74 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
74 | initial_value="false" label="Rotate (Ctrl)" left="4" mouse_opaque="true" | 75 | initial_value="false" label="Rotate (Ctrl)" left="4" mouse_opaque="true" |
75 | name="radio rotate" radio_style="true" width="114" /> | 76 | name="radio rotate" radio_style="true" width="114" |
77 | tool_tip="Rotate selected prims (Ctrl)." /> | ||
76 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 78 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
77 | initial_value="false" label="Stretch (Ctrl-Shift)" left="4" | 79 | initial_value="false" label="Stretch (Ctrl-Shift)" left="4" |
78 | mouse_opaque="true" name="radio stretch" radio_style="true" width="123" /> | 80 | mouse_opaque="true" name="radio stretch" radio_style="true" width="123" |
81 | tool_tip="Resize selected prims (Ctrl-Shift)." /> | ||
79 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 82 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
80 | initial_value="false" label="Select faces to texture" left="4" mouse_opaque="true" | 83 | initial_value="false" label="Select faces to texture" left="4" mouse_opaque="true" |
81 | name="radio select face" radio_style="true" width="114" /> | 84 | name="radio select face" radio_style="true" width="114" |
85 | tool_tip="Select faces of prims to texture (Ctrl-Alt-F)." /> | ||
82 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 86 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
83 | initial_value="false" label="Align (Shift to Pack)" left="4" mouse_opaque="true" | 87 | initial_value="false" label="Align (Shift to Pack)" left="4" mouse_opaque="true" |
84 | name="radio align" radio_style="true" width="114" | 88 | name="radio align" radio_style="true" width="114" |
85 | tool_tip="Align aligns all selected prims' edges along an axis, Pack moves all selected prims' edges so they're touching" /> | 89 | tool_tip="Align (Ctrl-Alt-M) aligns all selected prims edges along an axis. Pack (Ctrl-Alt-Shift-M) moves all selected prims edges so they're touching." /> |
86 | <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top" | 90 | <check_box bottom_delta="-19" control_name="EditLinkedParts" follows="left|top" |
87 | font="SansSerifSmall" height="16" initial_value="false" | 91 | font="SansSerifSmall" height="16" initial_value="false" |
88 | label="Edit linked parts" left="4" mouse_opaque="true" | 92 | label="Edit linked parts" left="4" mouse_opaque="true" |
@@ -1363,9 +1367,12 @@ | |||
1363 | <string name="status_move"> | 1367 | <string name="status_move"> |
1364 | Drag to Move, Shift-Drag to Copy | 1368 | Drag to Move, Shift-Drag to Copy |
1365 | </string> | 1369 | </string> |
1366 | <string name="status_align"> | 1370 | <string name="status_selectface"> |
1367 | CTRL-A to align on an axis, CTRL-Shift-A to Pack | 1371 | Click to select a Face for texturing |
1368 | </string> | 1372 | </string> |
1373 | <string name="status_align"> | ||
1374 | Click to Align, Shift-Click to Pack | ||
1375 | </string> | ||
1369 | <string name="status_modifyland"> | 1376 | <string name="status_modifyland"> |
1370 | Click and Hold to Modify Land | 1377 | Click and Hold to Modify Land |
1371 | </string> | 1378 | </string> |
@@ -1379,7 +1386,7 @@ | |||
1379 | Click Inworld to Build | 1386 | Click Inworld to Build |
1380 | </string> | 1387 | </string> |
1381 | <string name="status_selectland"> | 1388 | <string name="status_selectland"> |
1382 | Click and Drag to Select Land | 1389 | Click and Drag to select Land |
1383 | </string> | 1390 | </string> |
1384 | <string name="grid_screen_text"> | 1391 | <string name="grid_screen_text"> |
1385 | Screen | 1392 | Screen |
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml b/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml index 0cbd7c6..8295d3a 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_inventory.xml | |||
@@ -166,17 +166,15 @@ | |||
166 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy_uuid" /> | 166 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy_uuid" /> |
167 | </menu_item_call> | 167 | </menu_item_call> |
168 | <menu_item_separator name="Copy Separator" /> | 168 | <menu_item_separator name="Copy Separator" /> |
169 | <!-- See IMP-961 http://redmine.kokuaviewer.org/issues/961 | 169 | <menu_item_call bottom_delta="-18" height="18" label="Cut" left="0" mouse_opaque="true" |
170 | <menu_item_call bottom_delta="-18" height="18" label="Cut" left="0" mouse_opaque="true" | ||
171 | name="Cut" width="128"> | 170 | name="Cut" width="128"> |
172 | <on_click filter="" function="Inventory.DoToSelected" userdata="cut" /> | 171 | <on_click filter="" function="Inventory.DoToSelected" userdata="cut" /> |
173 | </menu_item_call> | 172 | </menu_item_call> |
174 | --> | 173 | <menu_item_call bottom_delta="-18" height="18" label="Copy" left="0" mouse_opaque="true" |
175 | <menu_item_call bottom_delta="-18" height="18" label="Copy" left="0" mouse_opaque="true" | ||
176 | name="Copy" width="128"> | 174 | name="Copy" width="128"> |
177 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy" /> | 175 | <on_click filter="" function="Inventory.DoToSelected" userdata="copy" /> |
178 | </menu_item_call> | 176 | </menu_item_call> |
179 | <menu_item_call bottom_delta="-18" height="18" label="Paste" left="0" mouse_opaque="true" | 177 | <menu_item_call bottom_delta="-18" height="18" label="Paste" left="0" mouse_opaque="true" |
180 | name="Paste" width="128"> | 178 | name="Paste" width="128"> |
181 | <on_click filter="" function="Inventory.DoToSelected" userdata="paste" /> | 179 | <on_click filter="" function="Inventory.DoToSelected" userdata="paste" /> |
182 | </menu_item_call> | 180 | </menu_item_call> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml index 4582f4e..aaae5b7 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml | |||
@@ -23,15 +23,15 @@ | |||
23 | <on_click function="ShowFloater" userdata="help f1" /> | 23 | <on_click function="ShowFloater" userdata="help f1" /> |
24 | </menu_item_call> | 24 | </menu_item_call> |
25 | <menu_item_separator /> | 25 | <menu_item_separator /> |
26 | <menu_item_call name="Imprudence Blog" | 26 | <menu_item_call name="Imprudence communication channels" |
27 | label="Imprudence Blog"> | 27 | label="Imprudence communication channels"> |
28 | <on_click function="PromptShowURL" | 28 | <on_click function="PromptShowURL" |
29 | userdata="WebLaunchImprudenceBlog,http://imprudenceviewer.org/" /> | 29 | userdata="WebLaunchImprudenceComms,http://wiki.kokuaviewer.org/wiki/Communication_Channels" /> |
30 | </menu_item_call> | 30 | </menu_item_call> |
31 | <menu_item_call name="Imprudence Forums" | 31 | <menu_item_call name="Imprudence bug reporting" |
32 | label="Imprudence Forums"> | 32 | label="Imprudence bug reporting"> |
33 | <on_click function="PromptShowURL" | 33 | <on_click function="PromptShowURL" |
34 | userdata="WebLaunchImprudenceForums,http://imprudenceviewer.org/forums/" /> | 34 | userdata="WebLaunchImprudenceBugs,http://wiki.kokuaviewer.org/wiki/Reporting_a_bug" /> |
35 | </menu_item_call> | 35 | </menu_item_call> |
36 | <menu_item_separator /> | 36 | <menu_item_separator /> |
37 | <menu_item_call label="About Imprudence" name="About Imprudence"> | 37 | <menu_item_call label="About Imprudence" name="About Imprudence"> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml index efde449..46a2c81 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml | |||
@@ -385,6 +385,10 @@ | |||
385 | <on_click function="ShowFloater" userdata="mini map" /> | 385 | <on_click function="ShowFloater" userdata="mini map" /> |
386 | <on_check control="ShowMiniMap" /> | 386 | <on_check control="ShowMiniMap" /> |
387 | </menu_item_check> | 387 | </menu_item_check> |
388 | <menu_item_check enabled="true" label="MOAP Radar" name="MOAPRadar" shortcut=""> | ||
389 | <on_click function="View.ToggleMOAPList" userdata="moapradar" /> | ||
390 | <on_check control="ShowMOAPRadar" /> | ||
391 | </menu_item_check> | ||
388 | <menu_item_separator /> | 392 | <menu_item_separator /> |
389 | <menu_item_check label="Animation Overrider" name="AO" | 393 | <menu_item_check label="Animation Overrider" name="AO" |
390 | shortcut="control|shift|O"> | 394 | shortcut="control|shift|O"> |
@@ -677,17 +681,17 @@ | |||
677 | userdata="" /> | 681 | userdata="" /> |
678 | <on_check control="RenderLightRadius" /> | 682 | <on_check control="RenderLightRadius" /> |
679 | </menu_item_check> | 683 | </menu_item_check> |
680 | <menu_item_check label="Show Selection Outlines" | ||
681 | name="Show Selection Outlines"> | ||
682 | <on_click function="Tools.ShowSelectionHighlights" userdata="" /> | ||
683 | <on_check control="RenderHighlightSelections" /> | ||
684 | </menu_item_check> | ||
685 | <menu_item_check name="Show Selection Beam" | 684 | <menu_item_check name="Show Selection Beam" |
686 | label="Show Selection Beam"> | 685 | label="Show Selection Beam"> |
687 | <on_click function="ToggleControl" | 686 | <on_click function="ToggleControl" |
688 | userdata="ShowSelectionBeam" /> | 687 | userdata="ShowSelectionBeam" /> |
689 | <on_check control="ShowSelectionBeam" /> | 688 | <on_check control="ShowSelectionBeam" /> |
690 | </menu_item_check> | 689 | </menu_item_check> |
690 | <menu_item_check label="Show Selection Outlines" | ||
691 | name="Show Selection Outlines"> | ||
692 | <on_click function="Tools.ShowSelectionHighlights" userdata="" /> | ||
693 | <on_check control="RenderHighlightSelections" /> | ||
694 | </menu_item_check> | ||
691 | </menu> | 695 | </menu> |
692 | <menu_item_separator /> | 696 | <menu_item_separator /> |
693 | <menu_item_check name="Snap to Grid" enabled="false" | 697 | <menu_item_check name="Snap to Grid" enabled="false" |
@@ -844,15 +848,15 @@ | |||
844 | <on_click function="ShowFloater" userdata="help tutorial" /> | 848 | <on_click function="ShowFloater" userdata="help tutorial" /> |
845 | </menu_item_call> | 849 | </menu_item_call> |
846 | <menu_item_separator /> | 850 | <menu_item_separator /> |
847 | <menu_item_call name="Imprudence Blog" | 851 | <menu_item_call name="Imprudence communication channels" |
848 | label="Imprudence Blog"> | 852 | label="Imprudence communication channels"> |
849 | <on_click function="PromptShowURL" | 853 | <on_click function="PromptShowURL" |
850 | userdata="WebLaunchImprudenceBlog,http://blog.kokuaviewer.org/" /> | 854 | userdata="WebLaunchImprudenceComms,http://wiki.kokuaviewer.org/wiki/Communication_Channels" /> |
851 | </menu_item_call> | 855 | </menu_item_call> |
852 | <menu_item_call name="Imprudence Forums" | 856 | <menu_item_call name="Imprudence bug reporting" |
853 | label="Imprudence Forums"> | 857 | label="Imprudence bug reporting"> |
854 | <on_click function="PromptShowURL" | 858 | <on_click function="PromptShowURL" |
855 | userdata="WebLaunchImprudenceForums,http://forums.kokuaviewer.org/" /> | 859 | userdata="WebLaunchImprudenceBugs,http://wiki.kokuaviewer.org/wiki/Reporting_a_bug" /> |
856 | </menu_item_call> | 860 | </menu_item_call> |
857 | <menu_item_separator /> | 861 | <menu_item_separator /> |
858 | <menu_item_call name="Scripting Portal" | 862 | <menu_item_call name="Scripting Portal" |
@@ -1323,6 +1327,12 @@ | |||
1323 | <on_check function="Advanced.CheckInfoDisplay" | 1327 | <on_check function="Advanced.CheckInfoDisplay" |
1324 | userdata="sculpt" /> | 1328 | userdata="sculpt" /> |
1325 | </menu_item_check> | 1329 | </menu_item_check> |
1330 | <menu_item_check name="ShadowFrusta" label="Shadow Frusta"> | ||
1331 | <on_click function="Advanced.ToggleInfoDisplay" | ||
1332 | userdata="shadow frusta" /> | ||
1333 | <on_check function="Advanced.CheckInfoDisplay" | ||
1334 | userdata="shadow frusta" /> | ||
1335 | </menu_item_check> | ||
1326 | <menu_item_check name="Vectorize Perf Test" | 1336 | <menu_item_check name="Vectorize Perf Test" |
1327 | label="Vectorize Perf Test"> | 1337 | label="Vectorize Perf Test"> |
1328 | <on_click function="ToggleControl" | 1338 | <on_click function="ToggleControl" |
@@ -1644,23 +1654,17 @@ | |||
1644 | <menu_item_call name="Dump Inventory" label="Dump Inventory"> | 1654 | <menu_item_call name="Dump Inventory" label="Dump Inventory"> |
1645 | <on_click function="Advanced.DumpInventory" userdata="" /> | 1655 | <on_click function="Advanced.DumpInventory" userdata="" /> |
1646 | </menu_item_call> | 1656 | </menu_item_call> |
1647 | <menu_item_call name="Dump Focus Holder" | 1657 | <menu_item_call name="Dump Focus Holder" label="Dump Focus Holder"> |
1648 | label="Dump Focus Holder" | ||
1649 | shortcut="control|alt|F"> | ||
1650 | <on_click function="Advanced.DumpFocusHolder" userdata="" /> | 1658 | <on_click function="Advanced.DumpFocusHolder" userdata="" /> |
1651 | </menu_item_call> | 1659 | </menu_item_call> |
1652 | <menu_item_call name="Print Selected Object Info" | 1660 | <menu_item_call name="Print Selected Object Info" label="Print Selected Object Info"> |
1653 | label="Print Selected Object Info" | ||
1654 | shortcut="control|shift|P"> | ||
1655 | <on_click function="Advanced.PrintSelectedObjectInfo" | 1661 | <on_click function="Advanced.PrintSelectedObjectInfo" |
1656 | userdata="" /> | 1662 | userdata="" /> |
1657 | </menu_item_call> | 1663 | </menu_item_call> |
1658 | <menu_item_call name="Print Agent Info" | 1664 | <menu_item_call name="Print Agent Info" label="Print Agent Info"> |
1659 | label="Print Agent Info" shortcut="shift|P"> | ||
1660 | <on_click function="Advanced.PrintAgentInfo" userdata="" /> | 1665 | <on_click function="Advanced.PrintAgentInfo" userdata="" /> |
1661 | </menu_item_call> | 1666 | </menu_item_call> |
1662 | <menu_item_call name="Memory Stats" label="Memory Stats" | 1667 | <menu_item_call name="Memory Stats" label="Memory Stats"> |
1663 | shortcut="control|alt|shift|M"> | ||
1664 | <on_click function="Advanced.PrintTextureMemoryStats" | 1668 | <on_click function="Advanced.PrintTextureMemoryStats" |
1665 | userdata="" /> | 1669 | userdata="" /> |
1666 | </menu_item_call> | 1670 | </menu_item_call> |
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml index 033b01b..ae50e49 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml | |||
@@ -7245,11 +7245,11 @@ Show Look At is a debug setting that displays where an avatar's head is looking. | |||
7245 | 7245 | ||
7246 | <notification | 7246 | <notification |
7247 | icon="alert.tga" | 7247 | icon="alert.tga" |
7248 | name="WebLaunchImprudenceBlog" | 7248 | name="WebLaunchImprudenceComms" |
7249 | type="alert"> | 7249 | type="alert"> |
7250 | Go to the Official Imprudence Blog, for the Latest News and Information. | 7250 | Go to the Official Imprudence communications channels, to discuss the Imprudence Project. |
7251 | <usetemplate | 7251 | <usetemplate |
7252 | ignoretext="When launching web browser to view the blog" | 7252 | ignoretext="When launching web browser to view the communications channels" |
7253 | name="okcancelignore" | 7253 | name="okcancelignore" |
7254 | notext="Cancel" | 7254 | notext="Cancel" |
7255 | yestext="Go to page"/> | 7255 | yestext="Go to page"/> |
@@ -7257,11 +7257,11 @@ Go to the Official Imprudence Blog, for the Latest News and Information. | |||
7257 | 7257 | ||
7258 | <notification | 7258 | <notification |
7259 | icon="alert.tga" | 7259 | icon="alert.tga" |
7260 | name="WebLaunchImprudenceForums" | 7260 | name="WebLaunchImprudenceBugs" |
7261 | type="alert"> | 7261 | type="alert"> |
7262 | Go to the Official Imprudence Forums to discuss the Imprudence Project. | 7262 | Go to the Official Imprudence bug and feature trackers, to report bugs and request new features. |
7263 | <usetemplate | 7263 | <usetemplate |
7264 | ignoretext="When launching web browser to view the forums" | 7264 | ignoretext="When launching web browser to view the bug and feature trackers" |
7265 | name="okcancelignore" | 7265 | name="okcancelignore" |
7266 | notext="Cancel" | 7266 | notext="Cancel" |
7267 | yestext="Go to page"/> | 7267 | yestext="Go to page"/> |
diff --git a/linden/indra/newview/skins/default/xui/zh/notifications.xml b/linden/indra/newview/skins/default/xui/zh/notifications.xml index 1234e02..1b85998 100644 --- a/linden/indra/newview/skins/default/xui/zh/notifications.xml +++ b/linden/indra/newview/skins/default/xui/zh/notifications.xml | |||
@@ -3647,24 +3647,6 @@ GLOW — 发光 | |||
3647 | name="okignore" | 3647 | name="okignore" |
3648 | yestext="OK"/> | 3648 | yestext="OK"/> |
3649 | </notification> | 3649 | </notification> |
3650 | |||
3651 | <notification name="WebLaunchImprudenceBlog"> | ||
3652 | 前往 Imprudence 官方日志阅读最新的新闻和信息。 | ||
3653 | <usetemplate | ||
3654 | ignoretext="打开网络浏览器阅读网络日志时" | ||
3655 | name="okcancelignore" | ||
3656 | notext="取消" | ||
3657 | yestext="打开网页"/> | ||
3658 | </notification> | ||
3659 | |||
3660 | <notification name="WebLaunchImprudenceForums"> | ||
3661 | 前往 Imprudence 官方论坛讨论 Imprudence 工程。 | ||
3662 | <usetemplate | ||
3663 | ignoretext="打开网络浏览器阅读论坛时" | ||
3664 | name="okcancelignore" | ||
3665 | notext="取消" | ||
3666 | yestext="打开网页"/> | ||
3667 | </notification> | ||
3668 | 3650 | ||
3669 | <notification | 3651 | <notification |
3670 | icon="alert.tga" | 3652 | icon="alert.tga" |
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index c13cf1a..01e422f 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py | |||
@@ -232,21 +232,15 @@ class WindowsManifest(ViewerManifest): | |||
232 | 232 | ||
233 | def construct(self): | 233 | def construct(self): |
234 | super(WindowsManifest, self).construct() | 234 | super(WindowsManifest, self).construct() |
235 | # the final exe is complicated because we're not sure where it's coming from, | 235 | # Come out, come out, where ever you are. |
236 | # nor do we have a fixed name for the executable | 236 | executable = self.find_existing_file('release/imprudence-bin.exe', 'releasesse2/imprudence-bin.exe', 'relwithdebinfo/imprudence-bin.exe', 'debug/imprudence-bin.exe', './imprudence-bin.exe') |
237 | # Actually, we know on both counts -- MC | 237 | nmake = False |
238 | if self.configuration().lower() == "release": | 238 | self.path(executable, dst=self.final_exe()) |
239 | self.path(self.find_existing_file('release/imprudence-bin.exe'), dst=self.final_exe()) | ||
240 | elif self.configuration().lower() == "releasesse2": | ||
241 | self.path(self.find_existing_file('releasesse2/imprudence-bin.exe'), dst=self.final_exe()) | ||
242 | elif self.configuration().lower() == "relwithdebinfo": | ||
243 | self.path(self.find_existing_file('relwithdebinfo/imprudence-bin.exe'), dst=self.final_exe()) | ||
244 | elif self.configuration().lower() == "debug": | ||
245 | self.path(self.find_existing_file('debug/imprudence-bin.exe'), dst=self.final_exe()) | ||
246 | else: | ||
247 | self.path(self.find_existing_file('release/imprudence-bin.exe', 'releasesse2/imprudence-bin.exe', 'relwithdebinfo/imprudence-bin.exe', 'debug/imprudence-bin.exe'), dst=self.final_exe()) | ||
248 | 239 | ||
249 | # copy over the the pdb file for the regular or SSE2 versions if we don't already have one copied | 240 | # copy over the the pdb file for the regular or SSE2 versions if we don't already have one copied |
241 | # Don't think this ever worked, the destination seems bogus. | ||
242 | # It's trying to copy a built file outside of the source tree, a file we have anyway. | ||
243 | # TODO - do we even need this? | ||
250 | symbol_ver = '.'.join(self.args['version']) | 244 | symbol_ver = '.'.join(self.args['version']) |
251 | symbol_file = 'imprudence-%s.%s.pdb' % (symbol_ver, self.args['configuration']) | 245 | symbol_file = 'imprudence-%s.%s.pdb' % (symbol_ver, self.args['configuration']) |
252 | symbol_path = '../../../../../pdb_files/%s' % (symbol_file) | 246 | symbol_path = '../../../../../pdb_files/%s' % (symbol_file) |
@@ -255,26 +249,28 @@ class WindowsManifest(ViewerManifest): | |||
255 | else: | 249 | else: |
256 | #print "%s doesn't exist yet" % (os.getcwd() + symbol_path) | 250 | #print "%s doesn't exist yet" % (os.getcwd() + symbol_path) |
257 | try: | 251 | try: |
258 | self.path(self.find_existing_file('release/imprudence-bin.pdb'), dst="../%s" % (symbol_path)) | 252 | self.path(self.find_existing_file(executable.split('/', 1)[0] % '/imprudence-bin.pdb'), dst="../%s" % (symbol_path)) |
259 | pass | 253 | pass |
260 | except: | 254 | except: |
261 | print "Can't save symbol file %s, skipping" % (symbol_path) | 255 | print "Can't save symbol file %s, skipping" % (symbol_path) |
262 | pass | 256 | pass |
263 | 257 | ||
264 | self.gather_documents() | 258 | self.gather_documents() |
265 | 259 | ||
266 | if self.prefix("../..", dst="doc"): | 260 | if self.prefix("../..", dst="doc"): |
267 | self.path("LICENSE-libraries.txt") | 261 | self.path("LICENSE-libraries.txt") |
268 | self.end_prefix("../..") | 262 | self.end_prefix("../..") |
269 | 263 | ||
270 | |||
271 | self.path("imprudence.url") | 264 | self.path("imprudence.url") |
272 | 265 | ||
273 | # Plugin host application | 266 | # Plugin host application |
274 | self.path(os.path.join(os.pardir, | 267 | try: |
275 | 'llplugin', 'slplugin', self.args['configuration'], "SLPlugin.exe"), | 268 | self.path(os.path.join(os.pardir, 'llplugin', 'slplugin', self.args['configuration'], "SLPlugin.exe"), "SLPlugin.exe") |
276 | "SLPlugin.exe") | 269 | except: |
277 | 270 | # Probably an nmake build, which is not putting exe's into the configuration folders. | |
271 | self.path(os.path.join(os.pardir, 'llplugin', 'slplugin', "SLPlugin.exe"), "SLPlugin.exe") | ||
272 | # Propogate our wild guess. | ||
273 | nmake = True | ||
278 | 274 | ||
279 | self.path("featuretable.txt") | 275 | self.path("featuretable.txt") |
280 | 276 | ||
@@ -283,17 +279,17 @@ class WindowsManifest(ViewerManifest): | |||
283 | 279 | ||
284 | # For using FMOD for sound... DJS | 280 | # For using FMOD for sound... DJS |
285 | #self.path("fmod.dll") | 281 | #self.path("fmod.dll") |
286 | 282 | ||
287 | # For spellchecking | 283 | # For spellchecking |
288 | if self.prefix(src=self.args['configuration'], dst=""): | 284 | if self.prefix(self.args['configuration'], dst=""): |
289 | self.path("libhunspell.dll") | 285 | self.path("libhunspell.dll") |
290 | self.end_prefix() | 286 | self.end_prefix() |
291 | 287 | ||
292 | # Copy the llkdu DSO .config | 288 | # Copy the llkdu DSO .config |
293 | self.path("llkdu.dll.2.config") | 289 | self.path("llkdu.dll.2.config") |
294 | 290 | ||
295 | # Get llcommon and deps. | 291 | # Get llcommon and deps. |
296 | if self.prefix(src=self.args['configuration'], dst=""): | 292 | if self.prefix(self.args['configuration'], dst=""): |
297 | self.path('libapr-1.dll') | 293 | self.path('libapr-1.dll') |
298 | self.path('libaprutil-1.dll') | 294 | self.path('libaprutil-1.dll') |
299 | self.path('libapriconv-1.dll') | 295 | self.path('libapriconv-1.dll') |
@@ -309,23 +305,28 @@ class WindowsManifest(ViewerManifest): | |||
309 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): | 305 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""): |
310 | self.path("openal32.dll") | 306 | self.path("openal32.dll") |
311 | self.path("alut.dll") | 307 | self.path("alut.dll") |
312 | self.end_prefix() | 308 | self.end_prefix() |
313 | 309 | ||
310 | # TODO - Yes, I know, would be better if nmake builds put stuff in the right place, track that down and fix it later. | ||
311 | if nmake: | ||
312 | config = '' | ||
313 | else: | ||
314 | config = self.args['configuration'] | ||
314 | # Media plugins - QuickTime | 315 | # Media plugins - QuickTime |
315 | if self.prefix(src='../media_plugins/quicktime/%s' % self.args['configuration'], dst="llplugin"): | 316 | if self.prefix(src='../media_plugins/quicktime/%s' % config, dst="llplugin"): |
316 | self.path("media_plugin_quicktime.dll") | 317 | self.path("media_plugin_quicktime.dll") |
317 | self.end_prefix() | 318 | self.end_prefix() |
318 | 319 | ||
319 | # Media plugins - WebKit/Qt | 320 | # Media plugins - WebKit/Qt |
320 | if self.prefix(src='../media_plugins/webkit/%s' % self.args['configuration'], dst="llplugin"): | 321 | if self.prefix(src='../media_plugins/webkit/%s' % config, dst="llplugin"): |
321 | self.path("media_plugin_webkit.dll") | 322 | self.path("media_plugin_webkit.dll") |
322 | self.end_prefix() | 323 | self.end_prefix() |
323 | 324 | ||
324 | # Media plugins - GStreamer | 325 | # Media plugins - GStreamer |
325 | if self.prefix(src='../media_plugins/gstreamer010/%s' % self.args['configuration'], dst="llplugin"): | 326 | if self.prefix(src='../media_plugins/gstreamer010/%s' % config, dst="llplugin"): |
326 | self.path("media_plugin_gstreamer010.dll") | 327 | self.path("media_plugin_gstreamer010.dll") |
327 | self.end_prefix() | 328 | self.end_prefix() |
328 | 329 | ||
329 | # For WebKit/Qt plugin runtimes | 330 | # For WebKit/Qt plugin runtimes |
330 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst="llplugin"): | 331 | if self.prefix(src="../../libraries/i686-win32/lib/release", dst="llplugin"): |
331 | self.path("libeay32.dll") | 332 | self.path("libeay32.dll") |
@@ -476,13 +477,15 @@ class WindowsManifest(ViewerManifest): | |||
476 | sse_string = "-(SSE2-optimized)" | 477 | sse_string = "-(SSE2-optimized)" |
477 | 478 | ||
478 | version = '.'.join(self.args['version']) | 479 | version = '.'.join(self.args['version']) |
479 | base_filename = self.installer_prefix() + version + sse_string | 480 | version_number = version.split('-', 1)[0] |
481 | base_filename = self.installer_prefix() + version + "-Windows-x86" + sse_string | ||
480 | app_name = self.channel() | 482 | app_name = self.channel() |
481 | app_ver_name="%s %s" % (app_name, version) | 483 | app_ver_name="%s %s" % (app_name, version) |
482 | 484 | ||
483 | new_script = base_filename + ".iss" | 485 | new_script = base_filename + ".iss" |
484 | self.replace_in("installers/windows/imprudence_installer_template.iss", new_script, { | 486 | self.replace_in("installers/windows/imprudence_installer_template.iss", new_script, { |
485 | "%%VERSION%%":version, | 487 | "%%VERSION%%":version, |
488 | "%%VERSIONNUMBER%%":version_number, | ||
486 | "%%INSTALLERFILENAME%%":base_filename, | 489 | "%%INSTALLERFILENAME%%":base_filename, |
487 | "%%PACKAGEFILES%%":self.args['dest'], | 490 | "%%PACKAGEFILES%%":self.args['dest'], |
488 | "%%APPNAME%%":app_name, | 491 | "%%APPNAME%%":app_name, |
@@ -1020,9 +1023,27 @@ class Linux_i686Manifest(LinuxManifest): | |||
1020 | #self.path("libgstvolume.so") | 1023 | #self.path("libgstvolume.so") |
1021 | #self.path("libgstvorbis.so") | 1024 | #self.path("libgstvorbis.so") |
1022 | #self.path("libgstwavparse.so") | 1025 | #self.path("libgstwavparse.so") |
1023 | 1026 | ||
1024 | #self.end_prefix("gstreamer-plugins") | 1027 | #self.end_prefix("gstreamer-plugins") |
1025 | 1028 | ||
1029 | # Wish I could kill it with fire. lol | ||
1030 | self.path("libboost_date_time-mt.so") | ||
1031 | self.path("libboost_date_time-mt.so.1.52.0") | ||
1032 | self.path("libboost_filesystem-mt.so") | ||
1033 | self.path("libboost_filesystem-mt.so.1.52.0") | ||
1034 | self.path("libboost_iostreams-mt.so") | ||
1035 | self.path("libboost_iostreams-mt.so.1.52.0") | ||
1036 | self.path("libboost_program_options-mt.so") | ||
1037 | self.path("libboost_program_options-mt.so.1.52.0") | ||
1038 | self.path("libboost_regex-mt.so") | ||
1039 | self.path("libboost_regex-mt.so.1.52.0") | ||
1040 | self.path("libboost_signals-mt.so") | ||
1041 | self.path("libboost_signals-mt.so.1.52.0") | ||
1042 | self.path("libboost_system-mt.so") | ||
1043 | self.path("libboost_system-mt.so.1.52.0") | ||
1044 | self.path("libboost_thread-mt.so") | ||
1045 | self.path("libboost_thread-mt.so.1.52.0") | ||
1046 | |||
1026 | self.end_prefix("lib") | 1047 | self.end_prefix("lib") |
1027 | 1048 | ||
1028 | # Vivox runtimes and libs | 1049 | # Vivox runtimes and libs |
@@ -1123,6 +1144,23 @@ class Linux_x86_64Manifest(LinuxManifest): | |||
1123 | #self.path("libgsttag-0.10.so.0") | 1144 | #self.path("libgsttag-0.10.so.0") |
1124 | #self.path("libgstvideo-0.10.so.0") | 1145 | #self.path("libgstvideo-0.10.so.0") |
1125 | 1146 | ||
1147 | # Wish I could kill it with fire. lol | ||
1148 | self.path("libboost_date_time-mt.so") | ||
1149 | self.path("libboost_date_time-mt.so.1.52.0") | ||
1150 | self.path("libboost_filesystem-mt.so") | ||
1151 | self.path("libboost_filesystem-mt.so.1.52.0") | ||
1152 | self.path("libboost_iostreams-mt.so") | ||
1153 | self.path("libboost_iostreams-mt.so.1.52.0") | ||
1154 | self.path("libboost_program_options-mt.so") | ||
1155 | self.path("libboost_program_options-mt.so.1.52.0") | ||
1156 | self.path("libboost_regex-mt.so") | ||
1157 | self.path("libboost_regex-mt.so.1.52.0") | ||
1158 | self.path("libboost_signals-mt.so") | ||
1159 | self.path("libboost_signals-mt.so.1.52.0") | ||
1160 | self.path("libboost_system-mt.so") | ||
1161 | self.path("libboost_system-mt.so.1.52.0") | ||
1162 | self.path("libboost_thread-mt.so") | ||
1163 | self.path("libboost_thread-mt.so.1.52.0") | ||
1126 | 1164 | ||
1127 | self.end_prefix("lib64") | 1165 | self.end_prefix("lib64") |
1128 | 1166 | ||
diff --git a/linden/indra/newview/viewerinfo.cpp b/linden/indra/newview/viewerinfo.cpp index fc463c8..7237c16 100644 --- a/linden/indra/newview/viewerinfo.cpp +++ b/linden/indra/newview/viewerinfo.cpp | |||
@@ -30,13 +30,14 @@ namespace ViewerInfo | |||
30 | 30 | ||
31 | // These are intentionally defined here instead of in the header, | 31 | // These are intentionally defined here instead of in the header, |
32 | // because they should NOT be read directly. Use the functions. | 32 | // because they should NOT be read directly. Use the functions. |
33 | // NOTE: Some parts of the build system scan this file looking for version numbers and such, commenting out sections confuses that. | ||
33 | const std::string NAME = "Imprudence"; | 34 | const std::string NAME = "Imprudence"; |
34 | const std::string VARNT = ""; | 35 | const std::string VARNT = ""; |
35 | const S32 MAJOR = 1; | 36 | const S32 MAJOR = 1; |
36 | const S32 MINOR = 4; | 37 | const S32 MINOR = 4; |
37 | const S32 PATCH = 0; | 38 | const S32 PATCH = 0; |
38 | const S32 RLEAS = 3; // increment for each beta/RC/release | 39 | const S32 RLEAS = 3; // increment for each beta/RC/release |
39 | const std::string EXTRA = "beta 2"; | 40 | const std::string EXTRA = "exp 1"; |
40 | 41 | ||
41 | // Mac OS X bundle identifier. Should match the one in Info.plist. | 42 | // Mac OS X bundle identifier. Should match the one in Info.plist. |
42 | const std::string BUNDLE_ID = "org.imprudenceviewer.viewer"; | 43 | const std::string BUNDLE_ID = "org.imprudenceviewer.viewer"; |
diff --git a/linden/indra/newview/wlfloatermanager.cpp b/linden/indra/newview/wlfloatermanager.cpp index a1b1748..382244d 100644 --- a/linden/indra/newview/wlfloatermanager.cpp +++ b/linden/indra/newview/wlfloatermanager.cpp | |||
@@ -70,7 +70,7 @@ | |||
70 | #include "llviewerparcelmgr.h" | 70 | #include "llviewerparcelmgr.h" |
71 | #include "llparcel.h" | 71 | #include "llparcel.h" |
72 | #include "wlretrievesettings.h" | 72 | #include "wlretrievesettings.h" |
73 | #include "lightshare.h" | 73 | #include "llettherebelight.h" |
74 | #include "wlfloaterwindlightsend.h" | 74 | #include "wlfloaterwindlightsend.h" |
75 | 75 | ||
76 | #undef max | 76 | #undef max |
diff --git a/linden/indra/newview/wlretrievesettings.cpp b/linden/indra/newview/wlretrievesettings.cpp index 0fcaa03..a8ed2b5 100644 --- a/linden/indra/newview/wlretrievesettings.cpp +++ b/linden/indra/newview/wlretrievesettings.cpp | |||
@@ -67,7 +67,7 @@ | |||
67 | #include "hippolimits.h" | 67 | #include "hippolimits.h" |
68 | #include "wlfloaterwindlightsend.h" | 68 | #include "wlfloaterwindlightsend.h" |
69 | #include "llviewerregion.h" | 69 | #include "llviewerregion.h" |
70 | #include "lightshare.h" | 70 | #include "llettherebelight.h" |
71 | 71 | ||
72 | #include "linden_common.h" | 72 | #include "linden_common.h" |
73 | #include "llviewercontrol.h" | 73 | #include "llviewercontrol.h" |
diff --git a/linden/indra/test_apps/llplugintest/CMakeLists.txt b/linden/indra/test_apps/llplugintest/CMakeLists.txt index a6cb740..91ba2db 100644 --- a/linden/indra/test_apps/llplugintest/CMakeLists.txt +++ b/linden/indra/test_apps/llplugintest/CMakeLists.txt | |||
@@ -311,7 +311,7 @@ endif (DARWIN OR LINUX) | |||
311 | if (DARWIN) | 311 | if (DARWIN) |
312 | # path inside the app bundle where we'll need to copy plugins and other related files | 312 | # path inside the app bundle where we'll need to copy plugins and other related files |
313 | set(PLUGINS_DESTINATION_DIR | 313 | set(PLUGINS_DESTINATION_DIR |
314 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llmediaplugintest.app/Contents/Resources | 314 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/llmediaplugintest.app/Contents/Resources |
315 | ) | 315 | ) |
316 | 316 | ||
317 | # create the Contents/Resources directory | 317 | # create the Contents/Resources directory |
@@ -326,7 +326,7 @@ if (DARWIN) | |||
326 | ) | 326 | ) |
327 | else (DARWIN) | 327 | else (DARWIN) |
328 | set(PLUGINS_DESTINATION_DIR | 328 | set(PLUGINS_DESTINATION_DIR |
329 | ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ | 329 | ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_CFG_INTDIR}/ |
330 | ) | 330 | ) |
331 | endif (DARWIN) | 331 | endif (DARWIN) |
332 | 332 | ||
diff --git a/linden/install.xml b/linden/install.xml index 3e5810a..dff0768 100755 --- a/linden/install.xml +++ b/linden/install.xml | |||
@@ -195,16 +195,16 @@ | |||
195 | <key>linux</key> | 195 | <key>linux</key> |
196 | <map> | 196 | <map> |
197 | <key>md5sum</key> | 197 | <key>md5sum</key> |
198 | <string>4db3d74e40d149eeec06f4d97a609bb1</string> | 198 | <string>146ed8a8c2ef8ab3f0a6c4f214fc5c22</string> |
199 | <key>url</key> | 199 | <key>url</key> |
200 | <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.39.0-linux-20100624.tar.bz2</uri> | 200 | <uri>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Linux/installer/boost-1.52.0-linux-20121218.tar.bz2</uri> |
201 | </map> | 201 | </map> |
202 | <key>linux64</key> | 202 | <key>linux64</key> |
203 | <map> | 203 | <map> |
204 | <key>md5sum</key> | 204 | <key>md5sum</key> |
205 | <string>ebfaa439a8a78db7d99a26a73a70994a</string> | 205 | <string>b9dbe1ab34187a9a6f53fd89f88060d2</string> |
206 | <key>url</key> | 206 | <key>url</key> |
207 | <uri>http://imprudenceviewer.org/download/libs/boost-1.39.0-linux64-20100901.tar.bz2</uri> | 207 | <uri>https://bitbucket.org/kokua/3p-boost-64/downloads/boost-1.52.0-linux64-20130107.tar.bz2</uri> |
208 | </map> | 208 | </map> |
209 | <key>windows</key> | 209 | <key>windows</key> |
210 | <map> | 210 | <map> |
diff --git a/linden/scripts/install.py b/linden/scripts/install.py index a7c0a48..1e2bccb 100755 --- a/linden/scripts/install.py +++ b/linden/scripts/install.py | |||
@@ -565,6 +565,7 @@ windows/i686/vs/2003 -- specify a windows visual studio 2003 package""" | |||
565 | tar.extractall(path=install_dir) | 565 | tar.extractall(path=install_dir) |
566 | except AttributeError: | 566 | except AttributeError: |
567 | _extractall(tar, path=install_dir) | 567 | _extractall(tar, path=install_dir) |
568 | |||
568 | symlinks = [] | 569 | symlinks = [] |
569 | if _get_platform() == 'linux' or _get_platform() == 'linux64': | 570 | if _get_platform() == 'linux' or _get_platform() == 'linux64': |
570 | first = 1 | 571 | first = 1 |
@@ -591,6 +592,46 @@ windows/i686/vs/2003 -- specify a windows visual studio 2003 package""" | |||
591 | os.symlink(target, link_name) | 592 | os.symlink(target, link_name) |
592 | symlinks += [LINK] | 593 | symlinks += [LINK] |
593 | print " %s --> %s" % (LINK, target) | 594 | print " %s --> %s" % (LINK, target) |
595 | |||
596 | # Reroute autobuilds | ||
597 | auto_name = install_dir + "/include" | ||
598 | if os.path.exists(auto_name): | ||
599 | print "Moving autobuilt include files to legacy locations." | ||
600 | for entry in os.listdir(auto_name): | ||
601 | os.rename(auto_name + "/" + entry, install_dir + "/libraries/include/" + entry) | ||
602 | os.rmdir(auto_name) | ||
603 | |||
604 | auto_name = install_dir + "/lib" | ||
605 | dest_name = '' | ||
606 | if _get_platform() == 'darwin': | ||
607 | dest_name = 'universal-darwin/' | ||
608 | if _get_platform() == 'linux64': | ||
609 | dest_name = 'x86_64-linux/' | ||
610 | if _get_platform() == 'linux': | ||
611 | dest_name = 'i686-linux/' | ||
612 | if _get_platform() == 'windows': | ||
613 | dest_name = 'i686-win32/' | ||
614 | if os.path.exists(auto_name): | ||
615 | print "Moving autobuilt lib files to legacy locations." | ||
616 | for entry in os.listdir(auto_name): | ||
617 | if os.path.isdir(auto_name + "/" + entry): | ||
618 | path = install_dir + "/libraries/" + dest_name + "lib_" + entry | ||
619 | if entry == 'release': | ||
620 | # Linux is special, coz it's got server code. | ||
621 | if _get_platform() == 'linux' or _get_platform() == 'linux64': | ||
622 | path = install_dir + "/libraries/" + dest_name + "lib_" + entry + "_client" | ||
623 | # Windows is also special. | ||
624 | if _get_platform() == 'windows': | ||
625 | path = install_dir + "/libraries/" + dest_name + "lib/" + entry | ||
626 | if not os.path.exists(path): | ||
627 | os.makedirs(path) | ||
628 | for filename in os.listdir(auto_name + "/" + entry): | ||
629 | os.rename(auto_name + "/" + entry + "/" + filename, path + "/" + filename) | ||
630 | os.rmdir(auto_name + "/" + entry) | ||
631 | else: | ||
632 | os.rename(auto_name + "/" + entry, install_dir + "/libraries/" + dest_name + "lib/" + entry) | ||
633 | os.rmdir(auto_name) | ||
634 | |||
594 | if ifile.pkgname in self._installed: | 635 | if ifile.pkgname in self._installed: |
595 | self._installed[ifile.pkgname].add_files( | 636 | self._installed[ifile.pkgname].add_files( |
596 | ifile.url, | 637 | ifile.url, |
@@ -830,10 +871,10 @@ def _default_installable_cache(): | |||
830 | """In general, the installable files do not change much, so find a | 871 | """In general, the installable files do not change much, so find a |
831 | host/user specific location to cache files.""" | 872 | host/user specific location to cache files.""" |
832 | user = _getuser() | 873 | user = _getuser() |
833 | cache_dir = "/var/tmp/%s/install.cache" % user | 874 | if sys.platform != 'cygwin' and _get_platform() == 'windows': |
834 | if _get_platform() == 'windows': | 875 | cache_dir = os.path.join(tempfile.gettempdir(), 'install.cache.%s' % user) |
835 | cache_dir = os.path.join(tempfile.gettempdir(), \ | 876 | else: |
836 | 'install.cache.%s' % user) | 877 | cache_dir = "/var/tmp/%s/install.cache" % user |
837 | return cache_dir | 878 | return cache_dir |
838 | 879 | ||
839 | def parse_args(): | 880 | def parse_args(): |
diff --git a/linden/scripts/linux/0-patch-SL-source b/linden/scripts/linux/0-patch-SL-source index 4885d5d..ce0dabe 100755 --- a/linden/scripts/linux/0-patch-SL-source +++ b/linden/scripts/linux/0-patch-SL-source | |||
@@ -22,7 +22,7 @@ if [ "$PATCHES" != "" ] ; then | |||
22 | elif echo $i | grep ".bz2" &>/dev/null ; then | 22 | elif echo $i | grep ".bz2" &>/dev/null ; then |
23 | bzcat $i | patch -p1 -s | 23 | bzcat $i | patch -p1 -s |
24 | elif echo $i | grep ".zip" &>/dev/null ; then | 24 | elif echo $i | grep ".zip" &>/dev/null ; then |
25 | unzip -o $i >/dev/null | 25 | unzip -o $i >/dev/null |
26 | else | 26 | else |
27 | patch -p1 -s <$i | 27 | patch -p1 -s <$i |
28 | fi | 28 | fi |
diff --git a/linden/scripts/linux/1-get-libraries-from-SL b/linden/scripts/linux/1-get-libraries-from-SL index 9ba61f4..99a4367 100755 --- a/linden/scripts/linux/1-get-libraries-from-SL +++ b/linden/scripts/linux/1-get-libraries-from-SL | |||
@@ -53,7 +53,7 @@ source config-SL-source | |||
53 | cd $PATH_TO_SOURCES/indra | 53 | cd $PATH_TO_SOURCES/indra |
54 | 54 | ||
55 | # Do a clean build | 55 | # Do a clean build |
56 | ./develop.py clean | 56 | #./develop.py $os_extra clean |
57 | 57 | ||
58 | # Force the vectorization use if we chose so. | 58 | # Force the vectorization use if we chose so. |
59 | if [ "$FORCE_VECTORIZE" == "yes" ] ; then | 59 | if [ "$FORCE_VECTORIZE" == "yes" ] ; then |
@@ -65,7 +65,8 @@ else | |||
65 | FATAL_WARNINGS="" | 65 | FATAL_WARNINGS="" |
66 | fi | 66 | fi |
67 | # Configure the sources and download the LL provided libraries: | 67 | # Configure the sources and download the LL provided libraries: |
68 | ./develop.py --type=Release configure "$FATAL_WARNINGS" \ | 68 | ./develop.py $os_extra --type=$TYPE configure "$FATAL_WARNINGS" \ |
69 | -DCMAKE_C_FLAGS:STRING="-O2 $TUNE_FLAGS" -DCMAKE_CXX_FLAGS:STRING="-O2 $TUNE_FLAGS" \ | 69 | -DCMAKE_C_FLAGS:STRING="$TUNE_FLAGS" -DCMAKE_CXX_FLAGS:STRING="$TUNE_FLAGS" \ |
70 | -DCMAKE_C_FLAGS_RELEASE:STRING="-O2 $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELEASE:STRING="-O2 $TUNE_FLAGS" \ | 70 | -DCMAKE_C_FLAGS_DEBUG:STRING="-g $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_DEBUG:STRING="-g $TUNE_FLAGS" \ |
71 | -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="-g -O2 $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-g -O2 $TUNE_FLAGS" | 71 | -DCMAKE_C_FLAGS_RELEASE:STRING="$TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELEASE:STRING="$TUNE_FLAGS" \ |
72 | -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="-g $TUNE_FLAGS" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-g $TUNE_FLAGS" -DPACKAGE:BOOL=ON | ||
diff --git a/linden/scripts/linux/3-compile-SL-source b/linden/scripts/linux/3-compile-SL-source index 34395bb..4ac80a7 100755 --- a/linden/scripts/linux/3-compile-SL-source +++ b/linden/scripts/linux/3-compile-SL-source | |||
@@ -54,10 +54,7 @@ source config-SL-source | |||
54 | function compile() { | 54 | function compile() { |
55 | cd $PATH_TO_SOURCES/indra | 55 | cd $PATH_TO_SOURCES/indra |
56 | echo "Compiling the client into $TEMP_DIR..." | 56 | echo "Compiling the client into $TEMP_DIR..." |
57 | nice -n 19 ionice -c 3 ./develop.py --type=Release build | 57 | nice -n 19 $ionice ./develop.py $os_extra --type=$TYPE build |
58 | # if (($? == 0)) ; then | ||
59 | # mv -f $PATH_TO_SOURCES/indra/viewer-linux-i686*/newview/SecondLife*.tar.bz2 $HOME/ | ||
60 | # fi | ||
61 | } | 58 | } |
62 | 59 | ||
63 | ########### end of functions ########### | 60 | ########### end of functions ########### |
@@ -66,14 +63,7 @@ if [ "$TEMP_DIR" == "" ] ; then | |||
66 | export TEMP_DIR="/usr/tmp/$USER" | 63 | export TEMP_DIR="/usr/tmp/$USER" |
67 | fi | 64 | fi |
68 | 65 | ||
69 | # Check to see if we simply want to retry a compilation: | ||
70 | if [ "$1" == "--retry" ] ; then | ||
71 | compile | ||
72 | exit $? | ||
73 | fi | ||
74 | |||
75 | # Use the parameter (if any) as the path to the archives: | 66 | # Use the parameter (if any) as the path to the archives: |
76 | |||
77 | PATH_TO_ARCHIVES=`pwd` | 67 | PATH_TO_ARCHIVES=`pwd` |
78 | if [ "$1" != "" ] && [ "$1" != "--prep" ] ; then | 68 | if [ "$1" != "" ] && [ "$1" != "--prep" ] ; then |
79 | if [ -d $1 ] ; then | 69 | if [ -d $1 ] ; then |
@@ -83,19 +73,4 @@ if [ "$1" != "" ] && [ "$1" != "--prep" ] ; then | |||
83 | fi | 73 | fi |
84 | 74 | ||
85 | cd $PATH_TO_SOURCES/indra | 75 | cd $PATH_TO_SOURCES/indra |
86 | |||
87 | # Do a clean build | ||
88 | #./develop.py clean | ||
89 | |||
90 | # Force the vectorization use if we chose so. | ||
91 | if [ "$FORCE_VECTORIZE" == "yes" ] ; then | ||
92 | TUNE_FLAGS="$TUNE_FLAGS -DLL_VECTORIZE=1" | ||
93 | fi | ||
94 | if [ "$ALLOW_WARNINGS" == "yes" ] ; then | ||
95 | FATAL_WARNINGS="-DGCC_DISABLE_FATAL_WARNINGS:BOOL=TRUE" | ||
96 | else | ||
97 | FATAL_WARNINGS="" | ||
98 | fi | ||
99 | |||
100 | time compile | 76 | time compile |
101 | |||
diff --git a/linden/scripts/linux/4-package-viewer b/linden/scripts/linux/4-package-viewer index b2bff7f..a1a74f2 100755 --- a/linden/scripts/linux/4-package-viewer +++ b/linden/scripts/linux/4-package-viewer | |||
@@ -1,5 +1,12 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | 2 | ||
3 | cd ../../indra/viewer-linux-* | 3 | source config-SL-source |
4 | make package | ||
5 | 4 | ||
5 | if [ "$OSTYPE" == "cygwin" ] ; then | ||
6 | # Assumes version has been passed in from outside, coz Windows insists on adding crap to python output. | ||
7 | cd ../../indra/build-nmake/ | ||
8 | iscc newview/${TYPE}/package/${version}-Windows-x86.iss | ||
9 | else | ||
10 | cd ../../indra/viewer-linux-* | ||
11 | make package | ||
12 | fi | ||
diff --git a/linden/scripts/linux/config-SL-source b/linden/scripts/linux/config-SL-source index 174d7d4..f60fd92 100644 --- a/linden/scripts/linux/config-SL-source +++ b/linden/scripts/linux/config-SL-source | |||
@@ -9,6 +9,9 @@ | |||
9 | # accordingly, so that you (should) end up with a properly packaged client. | 9 | # accordingly, so that you (should) end up with a properly packaged client. |
10 | 10 | ||
11 | PWD=`pwd` | 11 | PWD=`pwd` |
12 | os_extra='' | ||
13 | ionice='ionice -c 3' | ||
14 | |||
12 | 15 | ||
13 | # Where the sources of the client will be held (defaults to "./linden"): | 16 | # Where the sources of the client will be held (defaults to "./linden"): |
14 | PATH_TO_SOURCES="$PWD/../.." | 17 | PATH_TO_SOURCES="$PWD/../.." |
@@ -18,6 +21,8 @@ PATH_TO_PATCHES="$PWD/../../patches" | |||
18 | TEMP_DIR="/tmp/SL-$USER" | 21 | TEMP_DIR="/tmp/SL-$USER" |
19 | mkdir -p $TEMP_DIR | 22 | mkdir -p $TEMP_DIR |
20 | 23 | ||
24 | TYPE="RelWithDebInfo" | ||
25 | |||
21 | USE_SYSTEM_GTK="no" | 26 | USE_SYSTEM_GTK="no" |
22 | USE_SYSTEM_SDL="no" | 27 | USE_SYSTEM_SDL="no" |
23 | USE_SYSTEM_SSL="no" | 28 | USE_SYSTEM_SSL="no" |
@@ -53,7 +58,7 @@ USE_SYSTEM_BOOST="no" | |||
53 | # You may add tune flags here, to optimize the code for your processor. | 58 | # You may add tune flags here, to optimize the code for your processor. |
54 | # Example, for an Athlon XP: | 59 | # Example, for an Athlon XP: |
55 | # TUNE_FLAGS="-march=athlon-xp" | 60 | # TUNE_FLAGS="-march=athlon-xp" |
56 | TUNE_FLAGS="-fomit-frame-pointer -frename-registers -ftree-vectorize -fweb -fexpensive-optimizations -msse -mfpmath=sse" | 61 | TUNE_FLAGS="-O2 -fomit-frame-pointer -frename-registers -ftree-vectorize -fweb -fexpensive-optimizations -msse -mfpmath=sse" |
57 | # Set this to "yes" to force vectorization use in the viewer code (only for | 62 | # Set this to "yes" to force vectorization use in the viewer code (only for |
58 | # processors with SSE or Altivec units, and only if you did enable them via | 63 | # processors with SSE or Altivec units, and only if you did enable them via |
59 | # the TUNE_FLAGS. | 64 | # the TUNE_FLAGS. |
@@ -61,3 +66,18 @@ FORCE_VECTORIZE="yes" | |||
61 | 66 | ||
62 | # When using gcc v4.3 or later, you might have to set this to yes... | 67 | # When using gcc v4.3 or later, you might have to set this to yes... |
63 | ALLOW_WARNINGS="yes" | 68 | ALLOW_WARNINGS="yes" |
69 | |||
70 | |||
71 | # Change it all for cygwin. | ||
72 | if [ "$OSTYPE" == "cygwin" ] ; then | ||
73 | os_extra='-G nmake' | ||
74 | ionice='' | ||
75 | USE_SYSTEM_LIBSTDC="no" | ||
76 | TUNE_FLAGS="/EHsc /GR /Zm1000 /DWIN32 /D_WINDOWS " | ||
77 | FORCE_VECTORIZE="no" | ||
78 | ALLOW_WARNINGS="no" | ||
79 | fi | ||
80 | |||
81 | |||
82 | # Work around python problems. | ||
83 | export PYTHONUNBUFFERED='True' | ||
diff --git a/linden/scripts/viewer_info.py b/linden/scripts/viewer_info.py index 53ea432..bd0f436 100755 --- a/linden/scripts/viewer_info.py +++ b/linden/scripts/viewer_info.py | |||
@@ -54,10 +54,11 @@ class ViewerInfo: | |||
54 | self.major = re.search('MAJOR\s*=\s*(\d+)', data).group(1) | 54 | self.major = re.search('MAJOR\s*=\s*(\d+)', data).group(1) |
55 | self.minor = re.search('MINOR\s*=\s*(\d+)', data).group(1) | 55 | self.minor = re.search('MINOR\s*=\s*(\d+)', data).group(1) |
56 | self.patch = re.search('PATCH\s*=\s*(\d+)', data).group(1) | 56 | self.patch = re.search('PATCH\s*=\s*(\d+)', data).group(1) |
57 | self.release = re.search('RLEAS\s*=\s*(\d+)', data).group(1) | ||
57 | self.extra = re.search('EXTRA\s*=\s*"([^"]*)"', data).group(1) | 58 | self.extra = re.search('EXTRA\s*=\s*"([^"]*)"', data).group(1) |
58 | self.bundle_id = re.search('BUNDLE_ID\s*=\s*"([^"]*)"', data).group(1) | 59 | self.bundle_id = re.search('BUNDLE_ID\s*=\s*"([^"]*)"', data).group(1) |
59 | 60 | ||
60 | self.version = "%s.%s.%s"%(self.major, self.minor, self.patch) | 61 | self.version = "%s.%s.%s.%s"%(self.major, self.minor, self.patch, self.release) |
61 | if len(self.extra) > 0: | 62 | if len(self.extra) > 0: |
62 | # Replace spaces and some puncuation with '-' in extra | 63 | # Replace spaces and some puncuation with '-' in extra |
63 | extra = re.sub('[- \t:;,!+/\\"\'`]+', '-', self.extra) | 64 | extra = re.sub('[- \t:;,!+/\\"\'`]+', '-', self.extra) |