diff options
238 files changed, 4225 insertions, 1536 deletions
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt index 72e79f3..cd9745b 100644 --- a/linden/doc/contributions.txt +++ b/linden/doc/contributions.txt | |||
@@ -4,30 +4,40 @@ along with the issue identifier corresponding to the patches we've | |||
4 | received from them. To see more about these contributions, visit | 4 | received from them. To see more about these contributions, visit |
5 | http://jira.secondlife.com/ and enter the issue identifier. | 5 | http://jira.secondlife.com/ and enter the issue identifier. |
6 | 6 | ||
7 | Alissa Sabre - VWR-81, VWR-83, VWR-414, VWR-415 | 7 | Able Whitman - VWR-650 |
8 | Alissa Sabre - VWR-81, VWR-83, VWR-171, VWR-251, VWR-414, VWR-415, VWR-459, VWR-606, VWR-652 | ||
9 | Argent Stonecutter - VWR-68 | ||
10 | Benja Kepler - VWR-746 | ||
8 | Blakar Ogre - VWR-881 | 11 | Blakar Ogre - VWR-881 |
9 | blino Nakamura - VWR-17 | 12 | blino Nakamura - VWR-17 |
10 | bushing Spatula - VWR-424 | 13 | bushing Spatula - VWR-424, VWR-119 |
11 | Drewan Keats - VWR-28, VWR-412 | 14 | Dale Glass - VWR-120, VWR-560 |
15 | Drewan Keats - VWR-28, VWR-248, VWR-412 | ||
16 | Duckless Vandyke - VWR-383 | ||
12 | Dylan Haskell - VWR-72 | 17 | Dylan Haskell - VWR-72 |
13 | Dzonatas Sol - VWR-198, VWR-878 | 18 | Dzonatas Sol - VWR-198, VWR-878 |
14 | Eddy Stryker - VWR-15, VWR-23 | 19 | Eddy Stryker - VWR-15, VWR-23 |
15 | Gigs Taggart - VWR-71, VWR-326 | 20 | Gigs Taggart - VWR-71, VWR-326, VWR-1217 |
16 | Ginko Bayliss - VWR-4 | 21 | Ginko Bayliss - VWR-4 |
17 | Hikkoshi Sakai - VWR-429 | 22 | Hikkoshi Sakai - VWR-429 |
18 | Hiro Sommambulist - VWR-66, VWR-97, VWR-100, VWR-105, VWR-108, VWR-118, VWR-136 | 23 | Hiro Sommambulist - VWR-66, VWR-97, VWR-100, VWR-105, VWR-108, VWR-118, VWR-132, VWR-136, VWR-143 |
19 | Jacek Antonelli - VWR-165, VWR-188 | 24 | Jacek Antonelli - VWR-165, VWR-188, VWR-427, VWR-597 |
20 | Joghert LeSabre - VWR-64 | 25 | Joghert LeSabre - VWR-64 |
21 | Kage Pixel - VWR-11 | 26 | Kage Pixel - VWR-11 |
22 | Kunnis Basiat - VWR-82 | 27 | Kunnis Basiat - VWR-82 |
23 | Nicholaz Beresford - VWR-793, VWR-794, VWR-802, VWR-803, VWR-804, VWR-805, VWR-808, VWR-809, VWR-810, VWR-823, VWR-869, VWR-870, VWR-871, VWR-908, VWR-966 | 28 | Nicholaz Beresford - VWR-132, VWR-176, VWR-793, VWR-794, VWR-802, VWR-803, VWR-804, VWR-805, VWR-808, VWR-809, VWR-810, VWR-823, VWR-869, VWR-870, VWR-871, VWR-873, VWR-908, VWR-966 |
24 | Paul Churchill - VWR-20 | 29 | Paul Churchill - VWR-20 |
25 | Paula Innis - VWR-30 | 30 | Paula Innis - VWR-30, VWR-1049 |
26 | Peekay Semyorka - VWR-7, VWR-19, VWR-49 | 31 | Peekay Semyorka - VWR-7, VWR-19, VWR-49, VWR-79 |
32 | Ryozu Kojima - VWR-287 | ||
27 | SignpostMarv Martin - VWR-154, VWR-155 | 33 | SignpostMarv Martin - VWR-154, VWR-155 |
28 | Simon Nolan - VWR-409 | 34 | Simon Nolan - VWR-409 |
29 | SpacedOut Frye - VWR-57, VWR-94, VWR-121, VWR-123 | 35 | SpacedOut Frye - VWR-57, VWR-94, VWR-121, VWR-123 |
36 | Stevex Janus - VWR-1182 | ||
37 | Still Defiant - VWR-207, VWR-446 | ||
30 | Strife Onizuka - SVC-9, VWR-74, VWR-85, VWR-148 | 38 | Strife Onizuka - SVC-9, VWR-74, VWR-85, VWR-148 |
31 | Zi Ree - VWR-671, VWR-682 | 39 | tenebrous pau - VWR-247 |
40 | TBBle Kurosawa - VWR-938, VWR-941, VWR-944 | ||
41 | Zi Ree - VWR-671, VWR-682, VWR-1140 | ||
32 | Zipherius Turas - VWR-76, VWR-77 | 42 | Zipherius Turas - VWR-76, VWR-77 |
33 | 43 | ||
diff --git a/linden/indra/SConstruct b/linden/indra/SConstruct index 39b50bc..68c8fc7 100644 --- a/linden/indra/SConstruct +++ b/linden/indra/SConstruct | |||
@@ -1,12 +1,21 @@ | |||
1 | ################################################# -*- python -*- | 1 | ################################################# -*- python -*- |
2 | # | 2 | # |
3 | # SConstruct makefile for Second Life viewer | 3 | # SConstruct makefile for Second Life viewer and servers. |
4 | # and servers. | ||
5 | # | 4 | # |
6 | # To build everything: | 5 | # To build everything: |
7 | # | 6 | # |
8 | # scons ARCH=all BTARGET=all DISTCC=yes | 7 | # scons ARCH=all BTARGET=all DISTCC=yes |
9 | # | 8 | # |
9 | # To build a standalone viewer, you'll need the following packages | ||
10 | # installed, with headers. We pick up the correct flags to use for | ||
11 | # these libraries using the "pkg-config" command. | ||
12 | # | ||
13 | # cairo glib-2.0 gtk+-2.0 sdl vorbis vorbisenc vorbisfile | ||
14 | # | ||
15 | # Then build as follows: | ||
16 | # | ||
17 | # scons BTARGET=client STANDALONE=yes MOZLIB=no ELFIO=no DISTCC=no | ||
18 | # | ||
10 | # For help on options: | 19 | # For help on options: |
11 | # | 20 | # |
12 | # scons -h | 21 | # scons -h |
@@ -73,6 +82,8 @@ try: | |||
73 | except: | 82 | except: |
74 | debian_sarge = False | 83 | debian_sarge = False |
75 | 84 | ||
85 | fedora = os.path.exists('/etc/fedora-release') | ||
86 | |||
76 | ######################### | 87 | ######################### |
77 | # COMMAND LINE OPTIONS # | 88 | # COMMAND LINE OPTIONS # |
78 | ######################### | 89 | ######################### |
@@ -91,6 +102,8 @@ opts.AddOptions( | |||
91 | BoolOption('COLORGCC', 'Enabled colorgcc', True), | 102 | BoolOption('COLORGCC', 'Enabled colorgcc', True), |
92 | EnumOption('GRID', 'Client package\'s default grid', 'default', | 103 | EnumOption('GRID', 'Client package\'s default grid', 'default', |
93 | allowed_values=('default', 'aditi', 'agni', 'dmz', 'durga', 'firstlook', 'ganga', 'shakti', 'siva', 'soma', 'uma', 'vaak')), | 104 | allowed_values=('default', 'aditi', 'agni', 'dmz', 'durga', 'firstlook', 'ganga', 'shakti', 'siva', 'soma', 'uma', 'vaak')), |
105 | BoolOption('ELFIO', 'Enabled enhanced backtraces with libELFIO symbol extraction support', True), | ||
106 | BoolOption('STANDALONE', 'Build using system packages (implies OPENSOURCE)', False), | ||
94 | BoolOption('OPENSOURCE', 'Build using only non-proprietary dependencies', True) # OPENSOURCE: do not edit this line | 107 | BoolOption('OPENSOURCE', 'Build using only non-proprietary dependencies', True) # OPENSOURCE: do not edit this line |
95 | ) | 108 | ) |
96 | optenv = Environment(options = opts) | 109 | optenv = Environment(options = opts) |
@@ -101,16 +114,39 @@ arch = optenv['ARCH'] | |||
101 | target_param = optenv['BTARGET'] | 114 | target_param = optenv['BTARGET'] |
102 | enable_distcc = optenv['DISTCC'] | 115 | enable_distcc = optenv['DISTCC'] |
103 | enable_mozlib = optenv['MOZLIB'] | 116 | enable_mozlib = optenv['MOZLIB'] |
104 | enable_fmod = optenv['FMOD'] | ||
105 | enable_colorgcc = optenv['COLORGCC'] | 117 | enable_colorgcc = optenv['COLORGCC'] |
106 | grid = optenv['GRID'] | 118 | grid = optenv['GRID'] |
107 | opensource = optenv['OPENSOURCE'] | 119 | standalone = optenv['STANDALONE'] |
120 | opensource = standalone or optenv['OPENSOURCE'] | ||
121 | enable_fmod = not opensource and optenv['FMOD'] | ||
122 | elfio = optenv['ELFIO'] | ||
108 | 123 | ||
109 | targets = [ target_param ] | 124 | targets = [ target_param ] |
110 | 125 | ||
111 | if target_param == 'all': | 126 | if target_param == 'all': |
112 | targets = [ 'client', 'server' ] | 127 | targets = [ 'client', 'server' ] |
113 | 128 | ||
129 | # Set this to False if you don't want your source files copied into | ||
130 | # the object directory in /tmp. | ||
131 | duplicate = True | ||
132 | |||
133 | if standalone and platform != 'linux': | ||
134 | print >> sys.stderr, 'Warning: standalone builds have only been tested on Linux' | ||
135 | |||
136 | standalone_pkgs = 'cairo glib-2.0 gtk+-2.0 sdl vorbis vorbisenc vorbisfile' | ||
137 | |||
138 | def pkgconfig(opt, pkgs=None): | ||
139 | return os.popen('pkg-config %s %s' % | ||
140 | (opt, pkgs or standalone_pkgs)).read().strip() | ||
141 | |||
142 | if standalone: | ||
143 | missing = [pkg for pkg in standalone_pkgs.split() | ||
144 | if os.system('pkg-config --exists ' + pkg)] | ||
145 | if missing: | ||
146 | print >> sys.stderr, ('Error: pkg-config cannot find these ' | ||
147 | 'packages: %s' % ' '.join(missing)) | ||
148 | sys.exit(2) | ||
149 | |||
114 | ##################### | 150 | ##################### |
115 | # ITERATE TARGETS # | 151 | # ITERATE TARGETS # |
116 | ##################### | 152 | ##################### |
@@ -125,6 +161,7 @@ for build_target in targets: | |||
125 | print 'Building ' + build_target + ' ' + version + ' on ' + system_str + ' (' + buildtype + ')' | 161 | print 'Building ' + build_target + ' ' + version + ' on ' + system_str + ' (' + buildtype + ')' |
126 | 162 | ||
127 | system_lib_dir = '../libraries/' + system_str | 163 | system_lib_dir = '../libraries/' + system_str |
164 | |||
128 | if build_target == 'client': | 165 | if build_target == 'client': |
129 | system_lib_dir += '/lib_release_client' | 166 | system_lib_dir += '/lib_release_client' |
130 | elif buildtype == 'debug': | 167 | elif buildtype == 'debug': |
@@ -153,7 +190,7 @@ for build_target in targets: | |||
153 | """ + | 190 | """ + |
154 | '../libraries/' + system_str + '/include' ) | 191 | '../libraries/' + system_str + '/include' ) |
155 | 192 | ||
156 | client_external_libs = [] | 193 | client_external_libs = ['resolv'] |
157 | system_link_flags = '' | 194 | system_link_flags = '' |
158 | 195 | ||
159 | if platform != 'linux' and build_target == 'client' and enable_mozlib: | 196 | if platform != 'linux' and build_target == 'client' and enable_mozlib: |
@@ -184,74 +221,94 @@ for build_target in targets: | |||
184 | ############## | 221 | ############## |
185 | 222 | ||
186 | # Generic GCC flags | 223 | # Generic GCC flags |
187 | flags = '-g -pipe -Wall -Wno-trigraphs ' | 224 | cflags = '-g -pipe -Wall -Wno-trigraphs -Wno-sign-compare -Werror ' |
188 | 225 | cxxflags = '' | |
189 | if opensource: | 226 | cppflags = '' |
190 | flags += '-DLL_USE_KDU=0 ' | ||
191 | else: | ||
192 | flags += '-DLL_USE_KDU=1 ' | ||
193 | 227 | ||
194 | if build_target == 'server': | 228 | if build_target == 'server': |
195 | # Server flags | 229 | # Server flags |
196 | flags += '-D_GNU_SOURCE -ftemplate-depth-60 -DLL_MESA_HEADLESS=1 -DLL_MESA=1 ' | 230 | cppflags += '-D_GNU_SOURCE -DLL_MESA_HEADLESS=1 -DLL_MESA=1 ' |
231 | cxxflags += '-ftemplate-depth-60 ' | ||
197 | if arch == 'i686': | 232 | if arch == 'i686': |
198 | flags += '-march=pentiumpro ' | 233 | cflags += '-march=pentiumpro ' |
199 | if debian_sarge: | 234 | if debian_sarge: |
200 | def_server_cppflags = '' | 235 | def_server_cppflags = '' |
201 | else: | 236 | else: |
202 | def_server_cppflags = '-DCTYPE_WORKAROUND' | 237 | def_server_cppflags = '-DCTYPE_WORKAROUND' |
203 | server_cppflags = os.environ.get('SERVER_CPPFLAGS', | 238 | server_cppflags = os.environ.get('SERVER_CPPFLAGS', |
204 | def_server_cppflags) | 239 | def_server_cppflags) |
205 | flags += server_cppflags + ' ' | 240 | cppflags += server_cppflags + ' ' |
206 | else: | 241 | else: |
207 | # Viewer flags | 242 | # Viewer flags |
208 | flags += '-falign-loops=16 -fno-math-errno -fexceptions -fsigned-char -fno-strict-aliasing -ffast-math ' | 243 | cflags += '-falign-loops=16 -fno-math-errno -fexceptions -fsigned-char -fno-strict-aliasing -ffast-math ' |
209 | flags += '-DLL_MESA_HEADLESS=0 -DLL_MESA=0 ' | 244 | cppflags += '-DLL_MESA_HEADLESS=0 -DLL_MESA=0 ' |
210 | try: | 245 | try: |
211 | client_cppflags = os.environ['CLIENT_CPPFLAGS'] | 246 | client_cppflags = os.environ['CLIENT_CPPFLAGS'] |
212 | except: | 247 | except: |
213 | client_cppflags = '' | 248 | client_cppflags = '' |
214 | flags += client_cppflags + ' ' | 249 | cppflags += client_cppflags + ' ' |
215 | 250 | ||
216 | if platform == 'linux': | 251 | if platform == 'linux': |
217 | # Linux-only flags | 252 | # Linux-only flags |
218 | flags += '-DLL_LINUX=1 ' | 253 | cppflags += '-DLL_LINUX=1 ' |
219 | if build_target == 'client': | 254 | if build_target == 'client': |
220 | flags += '-DAPPID=secondlife -DLL_SDL=1 ' | 255 | cppflags += '-DAPPID=secondlife -DLL_SDL=1 ' |
221 | if arch == 'x86_64' or arch == 'x86_64cross' or not enable_fmod: | 256 | if arch == 'x86_64' or arch == 'x86_64cross' or not enable_fmod: |
222 | flags += '-DLL_FMOD=0 ' | 257 | cppflags += '-DLL_FMOD=0 ' |
223 | flags += '-DLL_X11=1 -DLL_GTK=1 ' | 258 | cppflags += '-DLL_X11=1 -DLL_GTK=1 ' |
224 | client_external_libs += [ 'gtk-x11-2.0', 'elfio' ] | 259 | if standalone: |
225 | include_dirs += [ '../libraries/' + system_str + '/include/gtk-2.0' ] | 260 | include_dirs += [d[2:] for d in |
226 | include_dirs += [ '../libraries/' + system_str + '/include/glib-2.0'] | 261 | pkgconfig('--cflags-only-I').split()] |
227 | include_dirs += [ '../libraries/' + system_str + '/include/pango-1.0' ] | 262 | else: |
228 | include_dirs += [ '../libraries/' + system_str + '/include/atk-1.0' ] | 263 | client_external_libs += [ 'gtk-x11-2.0' ] |
229 | include_dirs += [ '../libraries/' + system_str + '/include/ELFIO' ] | 264 | incdirs = [ 'ELFIO', 'atk-1.0', 'glib-2.0', 'gtk-2.0', |
230 | include_dirs += [ '../libraries/' + system_str + '/include/llfreetype2' ] | 265 | 'llfreetype2', 'pango-1.0' ] |
266 | include_dirs += ['../libraries/' + system_str + '/include/' + d | ||
267 | for d in incdirs] | ||
268 | |||
269 | if elfio: | ||
270 | client_external_libs += [ 'elfio' ] | ||
271 | else: | ||
272 | cppflags += '-DLL_ELFBIN=0 ' | ||
231 | 273 | ||
232 | # llmozlib stuff | 274 | # llmozlib stuff |
233 | if enable_mozlib: | 275 | if enable_mozlib: |
234 | flags += '-DLL_LIBXUL_ENABLED=1 ' | 276 | cppflags += '-DLL_LIBXUL_ENABLED=1 ' |
235 | client_external_libs += [ 'llmozlib' ] | 277 | client_external_libs += [ 'llmozlib' ] |
236 | client_external_libs += [ 'mozjs', 'nspr4', 'plc4', 'plds4', 'profdirserviceprovider_s', 'xpcom', 'xul' ] | 278 | client_external_libs += [ 'mozjs', 'nspr4', 'plc4', 'plds4', 'profdirserviceprovider_s', 'xpcom', 'xul' ] |
237 | else: | 279 | else: |
238 | flags += '-DLL_LIBXUL_ENABLED=0 ' | 280 | cppflags += '-DLL_LIBXUL_ENABLED=0 ' |
239 | else: | 281 | else: |
240 | # Mac-only flags | 282 | # Mac-only flags |
241 | flags += '-x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -faltivec -fasm-blocks -g -fmessage-length=0 -mtune=G4 -Wno-deprecated-declarations -Wno-invalid-offsetof -mmacosx-version-min=10.3 -DLL_DARWIN=1 -Wmost -Wno-sign-compare -Wno-switch -fpch-preprocess -F./newview/build/Deployment -fconstant-cfstrings -ffor-scope -Wno-reorder -isysroot /Developer/SDKs/MacOSX10.3.9.sdk ' | 283 | cflags += '-x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -faltivec -fasm-blocks -g -fmessage-length=0 -mtune=G4 -Wno-deprecated-declarations -Wno-invalid-offsetof -mmacosx-version-min=10.3 -Wmost -Wno-sign-compare -Wno-switch -fconstant-cfstrings -ffor-scope -Wno-reorder ' |
284 | cppflags += '-x c++ -DLL_DARWIN=1 -fpch-preprocess -F./newview/build/Deployment -fconstant-cfstrings -isysroot /Developer/SDKs/MacOSX10.3.9.sdk ' | ||
285 | |||
286 | cxxflags += cflags | ||
242 | 287 | ||
243 | ### Build type-specific flags ### | 288 | ### Build type-specific flags ### |
244 | 289 | ||
245 | debug_opts = flags + '-fno-inline -O0 -D_DEBUG -DLL_DEBUG=1 ' | 290 | debug_cflags = cflags + '-fno-inline -O0 ' |
246 | release_opts = flags + '-O2 -DNDEBUG -DLL_RELEASE=1 ' | 291 | debug_cppflags = cppflags + '-D_DEBUG -DLL_DEBUG=1 ' |
247 | releasenoopt_opts = flags + '-O0 -DNDEBUG -DLL_RELEASE=1 ' | 292 | debug_cxxflags = cxxflags |
248 | releasefordownload_opts = flags + '-O2 -DNDEBUG -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 ' | 293 | release_cflags = cflags + '-O2 ' |
294 | release_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 ' | ||
295 | release_cxxflags = cxxflags | ||
296 | releasenoopt_cflags = cflags + '-O0 ' | ||
297 | releasenoopt_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 ' | ||
298 | releasenoopt_cxxflags = cxxflags | ||
299 | releasefordownload_cflags = cflags + '-O2 ' | ||
300 | releasefordownload_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 ' | ||
301 | releasefordownload_cxxflags = cxxflags | ||
249 | 302 | ||
250 | ################ | 303 | ################ |
251 | # ENVIRONMENT # | 304 | # ENVIRONMENT # |
252 | ################ | 305 | ################ |
253 | 306 | ||
254 | gcc_bin = 'g++-3.4' | 307 | if standalone: |
308 | gcc_bin = 'g++' | ||
309 | else: | ||
310 | gcc_bin = 'g++-3.4' | ||
311 | |||
255 | # If you strip more aggressively than -S then the quality of crash- | 312 | # If you strip more aggressively than -S then the quality of crash- |
256 | # logger backtraces deteriorates. | 313 | # logger backtraces deteriorates. |
257 | strip_cmd = 'strip -S -o $TARGET $SOURCE' | 314 | strip_cmd = 'strip -S -o $TARGET $SOURCE' |
@@ -285,6 +342,10 @@ for build_target in targets: | |||
285 | if os.path.isdir(mysql_lib_dir): | 342 | if os.path.isdir(mysql_lib_dir): |
286 | lib_path.append(mysql_lib_dir) | 343 | lib_path.append(mysql_lib_dir) |
287 | 344 | ||
345 | if standalone: | ||
346 | system_link_flags += pkgconfig('--libs-only-L') + ' ' | ||
347 | system_link_flags += pkgconfig('--libs-only-other') + ' ' | ||
348 | |||
288 | base_env = Environment(CXX = compiler, | 349 | base_env = Environment(CXX = compiler, |
289 | CPPPATH = include_dirs, | 350 | CPPPATH = include_dirs, |
290 | LIBPATH = lib_path, | 351 | LIBPATH = lib_path, |
@@ -292,16 +353,24 @@ for build_target in targets: | |||
292 | 353 | ||
293 | ### Environments for various build types ### | 354 | ### Environments for various build types ### |
294 | 355 | ||
295 | env = base_env.Copy(CPPFLAGS = releasefordownload_opts) | 356 | env = base_env.Copy(CFLAGS=releasefordownload_cflags, |
357 | CPPFLAGS=releasefordownload_cppflags, | ||
358 | CXXFLAGS=releasefordownload_cxxflags) | ||
296 | 359 | ||
297 | if buildtype == 'debug': | 360 | if buildtype == 'debug': |
298 | env = base_env.Copy(CPPFLAGS = debug_opts) | 361 | env = base_env.Copy(CFLAGS=debug_cflags, |
362 | CPPFLAGS=debug_cppflags, | ||
363 | CXXFLAGS=debug_cxxflags) | ||
299 | 364 | ||
300 | if buildtype == 'release': | 365 | if buildtype == 'release': |
301 | env = base_env.Copy(CPPFLAGS = release_opts) | 366 | env = base_env.Copy(CFLAGS=release_cflags, |
367 | CPPFLAGS=release_cppflags, | ||
368 | CXXFLAGS=release_cxxflags) | ||
302 | 369 | ||
303 | if buildtype == 'releasenoopt': | 370 | if buildtype == 'releasenoopt': |
304 | env = base_env.Copy(CPPFLAGS = releasenoopt_opts) | 371 | env = base_env.Copy(CFLAGS=releasenoopt_cflags, |
372 | CPPFLAGS=releasenoopt_cppflags, | ||
373 | CXXFLAGS=releasenoopt_cxxflags) | ||
305 | 374 | ||
306 | # ccache needs this to be set | 375 | # ccache needs this to be set |
307 | try: | 376 | try: |
@@ -381,7 +450,7 @@ for build_target in targets: | |||
381 | source_files = 'files.lst', | 450 | source_files = 'files.lst', |
382 | extra_depends=None): | 451 | extra_depends=None): |
383 | files_list = load_files(input_dir, source_files) | 452 | files_list = load_files(input_dir, source_files) |
384 | BuildDir(build_dir + '/' + input_dir, input_dir) | 453 | BuildDir(build_dir + '/' + input_dir, input_dir, duplicate=duplicate) |
385 | local_env = env.Copy(CPPFLAGS = env['CPPFLAGS'] + ' ' + local_flags) | 454 | local_env = env.Copy(CPPFLAGS = env['CPPFLAGS'] + ' ' + local_flags) |
386 | if extra_depends: | 455 | if extra_depends: |
387 | for x in files_list: | 456 | for x in files_list: |
@@ -395,20 +464,26 @@ for build_target in targets: | |||
395 | def create_dynamic_module( | 464 | def create_dynamic_module( |
396 | module, | 465 | module, |
397 | local_flags="", | 466 | local_flags="", |
398 | module_libs = None, | 467 | module_libs = [], |
399 | source_files = 'files.lst'): | 468 | source_files = 'files.lst'): |
400 | files_list = load_files(module, source_files) | 469 | files_list = load_files(module, source_files) |
401 | BuildDir(build_dir + '/' + module, module) | 470 | BuildDir(build_dir + '/' + module, module, duplicate=duplicate) |
402 | local_env = env.Copy(CPPFLAGS = env['CPPFLAGS'] + ' ' + local_flags) | 471 | local_env = env.Copy(CPPFLAGS = env['CPPFLAGS'] + ' ' + local_flags) |
403 | tgt = local_env.SharedLibrary(lib_dir + '/' + module, files_list, LIBS = module_libs) | 472 | tgt = local_env.SharedLibrary(lib_dir + '/' + module, files_list, LIBS = module_libs) |
404 | Default(tgt) | 473 | Default(tgt) |
405 | 474 | ||
475 | def create_cond_module(module, module_libs=[]): | ||
476 | if build_target != 'client' or not opensource: | ||
477 | create_static_module(module=module) | ||
478 | else: | ||
479 | create_dynamic_module(module=module, module_libs=module_libs) | ||
480 | |||
406 | ### Create an executable from the module ### | 481 | ### Create an executable from the module ### |
407 | 482 | ||
408 | def create_executable( | 483 | def create_executable( |
409 | exec_file, module, module_libs, source_files = 'files.lst'): | 484 | exec_file, module, module_libs, source_files = 'files.lst'): |
410 | files_list = load_files(module, source_files) | 485 | files_list = load_files(module, source_files) |
411 | BuildDir(build_dir + '/' + module, module) | 486 | BuildDir(build_dir + '/' + module, module, duplicate=duplicate) |
412 | tgt = env.Program(exec_file, files_list, LIBS = module_libs) | 487 | tgt = env.Program(exec_file, files_list, LIBS = module_libs) |
413 | Default(tgt) | 488 | Default(tgt) |
414 | 489 | ||
@@ -417,11 +492,12 @@ for build_target in targets: | |||
417 | # BUILD LIBRARIES # | 492 | # BUILD LIBRARIES # |
418 | #################### | 493 | #################### |
419 | 494 | ||
420 | create_static_module('llcommon') | 495 | create_cond_module('llcommon') |
421 | create_static_module('llmath') | 496 | create_cond_module('llmath') |
497 | create_cond_module('llvfs') | ||
498 | create_cond_module('llimagej2coj', module_libs=['openjpeg']) | ||
499 | create_cond_module('llimage', module_libs=['llimagej2coj', 'jpeg', 'png12']) | ||
422 | create_static_module('llmessage') | 500 | create_static_module('llmessage') |
423 | create_static_module('llvfs') | ||
424 | create_static_module('llimage') | ||
425 | create_static_module('llinventory') | 501 | create_static_module('llinventory') |
426 | create_static_module('llcharacter') | 502 | create_static_module('llcharacter') |
427 | create_static_module('llprimitive') | 503 | create_static_module('llprimitive') |
@@ -431,7 +507,11 @@ for build_target in targets: | |||
431 | create_static_module('lscript', extra_depends=build_dir + '/lscript/lscript_compile/indra.y.h') | 507 | create_static_module('lscript', extra_depends=build_dir + '/lscript/lscript_compile/indra.y.h') |
432 | 508 | ||
433 | net_external_libs = [ 'curl', 'cares', 'ssl', 'crypto', 'expat', 'aprutil-1', 'apr-1' ] | 509 | net_external_libs = [ 'curl', 'cares', 'ssl', 'crypto', 'expat', 'aprutil-1', 'apr-1' ] |
434 | common_external_libs = net_external_libs + [ 'xmlrpc', 'z' ] | 510 | common_external_libs = net_external_libs + [ 'z' ] |
511 | if standalone and fedora: | ||
512 | common_external_libs += [ 'xmlrpc-epi' ] | ||
513 | else: | ||
514 | common_external_libs += [ 'xmlrpc' ] | ||
435 | 515 | ||
436 | if build_target == 'client': | 516 | if build_target == 'client': |
437 | if platform == 'linux': | 517 | if platform == 'linux': |
@@ -439,16 +519,22 @@ for build_target in targets: | |||
439 | # BUILD LINUX_CRASH_LOGGER # | 519 | # BUILD LINUX_CRASH_LOGGER # |
440 | ############################# | 520 | ############################# |
441 | output_crashlogger_bin = 'linux_crash_logger/linux-crash-logger-' + arch + '-bin' | 521 | output_crashlogger_bin = 'linux_crash_logger/linux-crash-logger-' + arch + '-bin' |
442 | external_libs = net_external_libs + [ 'db-4.2', 'gtk-x11-2.0' ] | 522 | if standalone: |
523 | external_libs = net_external_libs + [ 'db' ] | ||
524 | external_libs += [d[2:] for d in | ||
525 | pkgconfig('--libs-only-l', 'gtk+-2.0').split()] | ||
526 | else: | ||
527 | external_libs = net_external_libs + [ 'db-4.2', 'gtk-x11-2.0' ] | ||
443 | external_libs.remove('cares') | 528 | external_libs.remove('cares') |
444 | internal_libs = [ 'llvfs', 'llmath', 'llcommon' ] | 529 | internal_libs = [ 'llvfs', 'llmath', 'llcommon' ] |
445 | create_executable(output_crashlogger_bin + '-globalsyms', 'linux_crash_logger', internal_libs + external_libs) | 530 | create_executable(output_crashlogger_bin + '-globalsyms', |
531 | 'linux_crash_logger', | ||
532 | internal_libs + external_libs) | ||
446 | env.Command(output_crashlogger_bin, output_crashlogger_bin + '-globalsyms', hidesyms_cmd) | 533 | env.Command(output_crashlogger_bin, output_crashlogger_bin + '-globalsyms', hidesyms_cmd) |
447 | 534 | ||
448 | create_static_module('llaudio') | 535 | create_static_module('llaudio') |
449 | create_static_module('llmedia') | 536 | create_static_module('llmedia') |
450 | create_static_module('llui') | 537 | create_static_module('llui') |
451 | create_static_module('llimagej2coj') | ||
452 | 538 | ||
453 | if not opensource: | 539 | if not opensource: |
454 | create_dynamic_module('llkdu', '', ['llimage', 'llvfs', 'llmath', 'llcommon', 'apr-1', 'kdu_v42R']) | 540 | create_dynamic_module('llkdu', '', ['llimage', 'llvfs', 'llmath', 'llcommon', 'apr-1', 'kdu_v42R']) |
@@ -458,7 +544,17 @@ for build_target in targets: | |||
458 | ################## | 544 | ################## |
459 | output_bin = 'newview/secondlife-' + arch + '-bin' | 545 | output_bin = 'newview/secondlife-' + arch + '-bin' |
460 | 546 | ||
461 | external_libs = client_external_libs + common_external_libs + [ 'freetype', 'jpeg', 'SDL', 'GL', 'GLU', 'ogg', 'vorbisenc', 'vorbisfile', 'vorbis', 'db-4.2', 'openjpeg' ] | 547 | external_libs = client_external_libs + common_external_libs |
548 | |||
549 | if standalone: | ||
550 | external_libs += [ 'db' ] | ||
551 | external_libs += [ d[2:] for d in | ||
552 | pkgconfig('--libs-only-l').split() ] | ||
553 | else: | ||
554 | external_libs += [ 'freetype', 'SDL', 'ogg', 'vorbisenc', | ||
555 | 'vorbisfile', 'vorbis', 'db-4.2' ] | ||
556 | |||
557 | external_libs += [ 'jpeg', 'openjpeg', 'png12', 'GL', 'GLU' ] | ||
462 | 558 | ||
463 | if arch != 'x86_64' and arch != 'x86_64cross': | 559 | if arch != 'x86_64' and arch != 'x86_64cross': |
464 | if enable_fmod: | 560 | if enable_fmod: |
@@ -540,7 +636,7 @@ for build_target in targets: | |||
540 | # Dataserver | 636 | # Dataserver |
541 | Depends('dataserver/dataserver', 'launcher/launcher' + file_suffix) | 637 | Depends('dataserver/dataserver', 'launcher/launcher' + file_suffix) |
542 | external_libs = common_external_libs + ['boost_regex-gcc-mt', 'mysqlclient', 'tcmalloc', 'stacktrace'] | 638 | external_libs = common_external_libs + ['boost_regex-gcc-mt', 'mysqlclient', 'tcmalloc', 'stacktrace'] |
543 | internal_libs = [ 'llcharacter', 'lldatabase', 'llimage', 'llinventory', | 639 | internal_libs = [ 'llcharacter', 'lldatabase', 'llimage', 'llimagej2coj', 'llinventory', |
544 | 'llscene', 'llmessage', 'llvfs', 'llxml', 'llcommon', 'llmath' ] | 640 | 'llscene', 'llmessage', 'llvfs', 'llxml', 'llcommon', 'llmath' ] |
545 | create_executable('dataserver/dataserver' + file_suffix, 'dataserver', | 641 | create_executable('dataserver/dataserver' + file_suffix, 'dataserver', |
546 | internal_libs + external_libs) | 642 | internal_libs + external_libs) |
@@ -563,8 +659,7 @@ for build_target in targets: | |||
563 | 659 | ||
564 | # Rpcserver | 660 | # Rpcserver |
565 | Depends('rpcserver/rpcserver', 'userserver/userserver' + file_suffix) | 661 | Depends('rpcserver/rpcserver', 'userserver/userserver' + file_suffix) |
566 | external_libs = common_external_libs + ['xmlrpc', | 662 | external_libs = common_external_libs + ['xmlrpc', 'mysqlclient'] |
567 | 'mysqlclient'] | ||
568 | internal_libs = ['llscene', 'llmessage', 'lldatabase', 'llvfs', | 663 | internal_libs = ['llscene', 'llmessage', 'lldatabase', 'llvfs', |
569 | 'llmath', 'llcommon'] | 664 | 'llmath', 'llcommon'] |
570 | create_executable('rpcserver/rpcserver' + file_suffix, 'rpcserver', | 665 | create_executable('rpcserver/rpcserver' + file_suffix, 'rpcserver', |
@@ -573,27 +668,28 @@ for build_target in targets: | |||
573 | # Mapserver | 668 | # Mapserver |
574 | Depends('mapserver/mapserver', 'rpcserver/rpcserver' + file_suffix) | 669 | Depends('mapserver/mapserver', 'rpcserver/rpcserver' + file_suffix) |
575 | external_libs = common_external_libs + ['OSMesa16', 'kdu', | 670 | external_libs = common_external_libs + ['OSMesa16', 'kdu', |
576 | 'boost_regex-gcc-mt', 'iconv', 'jpeg', 'GL', | 671 | 'boost_regex-gcc-mt', 'iconv', 'jpeg', 'openjpeg', 'GL', |
577 | 'mysqlclient', 'pthread', 'dl'] | 672 | 'mysqlclient', 'pthread', 'dl'] |
578 | internal_libs = ['llrender', 'llwindow', 'llimage', 'lldatabase', 'llprimitive', 'llmessage', 'llkdustatic', | 673 | internal_libs = ['llrender', 'llwindow', 'llimage', 'llimagej2coj', 'lldatabase', 'llprimitive', 'llmessage', 'llkdustatic', |
579 | 'llxml', 'llvfs', 'llmath', 'llcommon'] | 674 | 'llxml', 'llvfs', 'llmath', 'llcommon'] |
580 | create_executable('mapserver/mapserver' + file_suffix, 'mapserver', | 675 | create_executable('mapserver/mapserver' + file_suffix, 'mapserver', |
581 | internal_libs + external_libs) | 676 | internal_libs + external_libs) |
582 | 677 | ||
583 | # Simulator | 678 | # Simulator |
584 | Depends('newsim/simulator' + file_suffix, 'mapserver/mapserver' + file_suffix) | 679 | Depends('newsim/simulator' + file_suffix, 'mapserver/mapserver' + file_suffix) |
585 | external_libs = common_external_libs + ['hkdynamics', 'hkgeometry', 'hkmath', 'hkbase', 'hkcollide', 'hkactions', 'boost_regex-gcc-mt', 'dl', 'kdu', 'mysqlclient', 'iconv', 'tcmalloc', 'stacktrace'] | 680 | external_libs = common_external_libs + ['hkdynamics', 'hkgeometry', 'hkmath', 'hkbase', 'hkcollide', 'hkactions', 'boost_regex-gcc-mt', 'openjpeg', 'dl', 'kdu', 'mysqlclient', 'iconv', 'tcmalloc', 'stacktrace'] |
586 | internal_libs = [ 'lscript', 'llprimitive', | 681 | internal_libs = [ 'lscript', 'llprimitive', |
587 | 'llscene', 'llhavok', 'llinventory', 'llimage', | 682 | 'llscene', 'llhavok', 'llinventory', 'llimage', 'llimagej2coj', |
588 | 'llcharacter', 'llxml', 'lldatabase', 'llkdustatic', | 683 | 'llcharacter', 'llxml', 'lldatabase', 'llkdustatic', |
589 | 'llmessage', 'llvfs', 'llmath', 'llcommon' ] | 684 | 'llmessage', 'llvfs', 'llmath', 'llcommon' ] |
590 | create_executable('newsim/simulator' + file_suffix, 'newsim', | 685 | create_executable('newsim/simulator' + file_suffix, 'newsim', |
591 | internal_libs + external_libs) | 686 | internal_libs + external_libs) |
592 | 687 | ||
593 | # texture upload verifier | 688 | # texture upload verifier |
594 | external_libs = common_external_libs + [ 'kdu', 'dl' ] | 689 | external_libs = common_external_libs + [ 'kdu', 'openjpeg', 'dl' ] |
595 | internal_libs = [ | 690 | internal_libs = [ |
596 | 'llimage', | 691 | 'llimage', |
692 | 'llimagej2coj', | ||
597 | 'llkdustatic', | 693 | 'llkdustatic', |
598 | 'llinventory', | 694 | 'llinventory', |
599 | 'llmessage', | 695 | 'llmessage', |
diff --git a/linden/indra/indra_complete/indra_complete.sln b/linden/indra/indra_complete/indra_complete.sln index 80bb436..a56a889 100644 --- a/linden/indra/indra_complete/indra_complete.sln +++ b/linden/indra/indra_complete/indra_complete.sln | |||
@@ -257,10 +257,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llimagej2coj", "..\llimagej | |||
257 | EndProject | 257 | EndProject |
258 | Global | 258 | Global |
259 | GlobalSection(SolutionConfiguration) = preSolution | 259 | GlobalSection(SolutionConfiguration) = preSolution |
260 | ReleaseNoOpt = ReleaseNoOpt | ||
261 | ReleaseForDownload = ReleaseForDownload | ||
260 | Debug = Debug | 262 | Debug = Debug |
261 | Release = Release | 263 | Release = Release |
262 | ReleaseForDownload = ReleaseForDownload | ||
263 | ReleaseNoOpt = ReleaseNoOpt | ||
264 | EndGlobalSection | 264 | EndGlobalSection |
265 | GlobalSection(ProjectConfiguration) = postSolution | 265 | GlobalSection(ProjectConfiguration) = postSolution |
266 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug.ActiveCfg = Debug|Win32 | 266 | {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug.ActiveCfg = Debug|Win32 |
diff --git a/linden/indra/llcharacter/llmotioncontroller.cpp b/linden/indra/llcharacter/llmotioncontroller.cpp index e2453c9..3ef35ec 100644 --- a/linden/indra/llcharacter/llmotioncontroller.cpp +++ b/linden/indra/llcharacter/llmotioncontroller.cpp | |||
@@ -546,6 +546,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty | |||
546 | { | 546 | { |
547 | if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration()) | 547 | if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration()) |
548 | { | 548 | { |
549 | posep->setWeight(0.f); | ||
549 | deactivateMotion(motionp); | 550 | deactivateMotion(motionp); |
550 | } | 551 | } |
551 | continue; | 552 | continue; |
@@ -572,6 +573,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty | |||
572 | } | 573 | } |
573 | else | 574 | else |
574 | { | 575 | { |
576 | posep->setWeight(0.f); | ||
575 | deactivateMotion(motionp); | 577 | deactivateMotion(motionp); |
576 | continue; | 578 | continue; |
577 | } | 579 | } |
@@ -822,7 +824,6 @@ BOOL LLMotionController::activateMotion(LLMotion *motion, F32 time) | |||
822 | //----------------------------------------------------------------------------- | 824 | //----------------------------------------------------------------------------- |
823 | BOOL LLMotionController::deactivateMotion(LLMotion *motion) | 825 | BOOL LLMotionController::deactivateMotion(LLMotion *motion) |
824 | { | 826 | { |
825 | motion->getPose()->setWeight(0.f); | ||
826 | motion->deactivate(); | 827 | motion->deactivate(); |
827 | mActiveMotions.remove(motion); | 828 | mActiveMotions.remove(motion); |
828 | 829 | ||
diff --git a/linden/indra/llcommon/llapr.h b/linden/indra/llcommon/llapr.h index a36b177..e7b12d5 100644 --- a/linden/indra/llcommon/llapr.h +++ b/linden/indra/llcommon/llapr.h | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <sys/param.h> // Need PATH_MAX in APR headers... | 35 | #include <sys/param.h> // Need PATH_MAX in APR headers... |
36 | #endif | 36 | #endif |
37 | 37 | ||
38 | #include "boost/noncopyable.hpp" | 38 | #include <boost/noncopyable.hpp> |
39 | 39 | ||
40 | #include "apr-1/apr_thread_proc.h" | 40 | #include "apr-1/apr_thread_proc.h" |
41 | #include "apr-1/apr_thread_mutex.h" | 41 | #include "apr-1/apr_thread_mutex.h" |
diff --git a/linden/indra/llcommon/llavatarconstants.h b/linden/indra/llcommon/llavatarconstants.h index 3eedf4e..ab49368 100644 --- a/linden/indra/llcommon/llavatarconstants.h +++ b/linden/indra/llcommon/llavatarconstants.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file indra_constants.h | 2 | * @file llavatarconstants.h |
3 | * @brief some useful short term constants for Indra | 3 | * @brief some useful short term constants for Indra |
4 | * | 4 | * |
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | 5 | * Copyright (c) 2001-2007, Linden Research, Inc. |
diff --git a/linden/indra/llcommon/llchat.h b/linden/indra/llcommon/llchat.h index bb2610b..7339e9a 100644 --- a/linden/indra/llcommon/llchat.h +++ b/linden/indra/llcommon/llchat.h | |||
@@ -50,7 +50,8 @@ typedef enum e_chat_type | |||
50 | CHAT_TYPE_START = 4, | 50 | CHAT_TYPE_START = 4, |
51 | CHAT_TYPE_STOP = 5, | 51 | CHAT_TYPE_STOP = 5, |
52 | CHAT_TYPE_DEBUG_MSG = 6, | 52 | CHAT_TYPE_DEBUG_MSG = 6, |
53 | CHAT_TYPE_REGION = 7 | 53 | CHAT_TYPE_REGION = 7, |
54 | CHAT_TYPE_OWNER = 8 | ||
54 | } EChatType; | 55 | } EChatType; |
55 | 56 | ||
56 | typedef enum e_chat_audible_level | 57 | typedef enum e_chat_audible_level |
diff --git a/linden/indra/llcommon/lldefs.h b/linden/indra/llcommon/lldefs.h index a3651ff..25f4e73 100644 --- a/linden/indra/llcommon/lldefs.h +++ b/linden/indra/llcommon/lldefs.h | |||
@@ -55,13 +55,15 @@ const U32 SOUTHWEST = 6; | |||
55 | const U32 SOUTHEAST = 7; | 55 | const U32 SOUTHEAST = 7; |
56 | const U32 MIDDLE = 8; | 56 | const U32 MIDDLE = 8; |
57 | 57 | ||
58 | const U8 LL_SOUND_FLAG_NONE = 0x00; | 58 | const U8 EAST_MASK = 0x1<<EAST; |
59 | const U8 LL_SOUND_FLAG_LOOP = 0x01; | 59 | const U8 NORTH_MASK = 0x1<<NORTH; |
60 | const U8 LL_SOUND_FLAG_SYNC_MASTER = 0x02; | 60 | const U8 WEST_MASK = 0x1<<WEST; |
61 | const U8 LL_SOUND_FLAG_SYNC_SLAVE = 0x04; | 61 | const U8 SOUTH_MASK = 0x1<<SOUTH; |
62 | const U8 LL_SOUND_FLAG_SYNC_PENDING = 0x08; | 62 | |
63 | const U8 LL_SOUND_FLAG_SYNC_MASK = LL_SOUND_FLAG_SYNC_MASTER | LL_SOUND_FLAG_SYNC_SLAVE | LL_SOUND_FLAG_SYNC_PENDING; | 63 | const U8 NORTHEAST_MASK = NORTH_MASK | EAST_MASK; |
64 | const U8 LL_SOUND_FLAG_QUEUE = 0x10; | 64 | const U8 NORTHWEST_MASK = NORTH_MASK | WEST_MASK; |
65 | const U8 SOUTHWEST_MASK = SOUTH_MASK | WEST_MASK; | ||
66 | const U8 SOUTHEAST_MASK = SOUTH_MASK | EAST_MASK; | ||
65 | 67 | ||
66 | const U32 gDirOpposite[8] = {2, 3, 0, 1, 6, 7, 4, 5}; | 68 | const U32 gDirOpposite[8] = {2, 3, 0, 1, 6, 7, 4, 5}; |
67 | const U32 gDirAdjacent[8][2] = { | 69 | const U32 gDirAdjacent[8][2] = { |
@@ -87,15 +89,6 @@ const S32 gDirAxes[8][2] = { | |||
87 | { 1,-1}, // se | 89 | { 1,-1}, // se |
88 | }; | 90 | }; |
89 | 91 | ||
90 | const U8 EAST_MASK = 1; | ||
91 | const U8 NORTH_MASK = 2; | ||
92 | const U8 WEST_MASK = 4; | ||
93 | const U8 SOUTH_MASK = 8; | ||
94 | const U8 NORTHEAST_MASK = NORTH_MASK | EAST_MASK; | ||
95 | const U8 NORTHWEST_MASK = NORTH_MASK | WEST_MASK; | ||
96 | const U8 SOUTHWEST_MASK = SOUTH_MASK | WEST_MASK; | ||
97 | const U8 SOUTHEAST_MASK = SOUTH_MASK | EAST_MASK; | ||
98 | |||
99 | const S32 gDirMasks[8] = { | 92 | const S32 gDirMasks[8] = { |
100 | EAST_MASK, | 93 | EAST_MASK, |
101 | NORTH_MASK, | 94 | NORTH_MASK, |
@@ -133,6 +126,14 @@ const U32 RIGHT_SIDE = 4; | |||
133 | const U32 TOP_SIDE = 5; | 126 | const U32 TOP_SIDE = 5; |
134 | const U32 BOTTOM_SIDE = 6; | 127 | const U32 BOTTOM_SIDE = 6; |
135 | 128 | ||
129 | const U8 LL_SOUND_FLAG_NONE = 0x0; | ||
130 | const U8 LL_SOUND_FLAG_LOOP = 1<<0; | ||
131 | const U8 LL_SOUND_FLAG_SYNC_MASTER = 1<<1; | ||
132 | const U8 LL_SOUND_FLAG_SYNC_SLAVE = 1<<2; | ||
133 | const U8 LL_SOUND_FLAG_SYNC_PENDING = 1<<3; | ||
134 | const U8 LL_SOUND_FLAG_QUEUE = 1<<4; | ||
135 | const U8 LL_SOUND_FLAG_STOP = 1<<5; | ||
136 | const U8 LL_SOUND_FLAG_SYNC_MASK = LL_SOUND_FLAG_SYNC_MASTER | LL_SOUND_FLAG_SYNC_SLAVE | LL_SOUND_FLAG_SYNC_PENDING; | ||
136 | 137 | ||
137 | // | 138 | // |
138 | // *NOTE: These values may be used as hard-coded numbers in scanf() variants. | 139 | // *NOTE: These values may be used as hard-coded numbers in scanf() variants. |
diff --git a/linden/indra/llcommon/llfile.cpp b/linden/indra/llcommon/llfile.cpp index 4520fd1..6fcfc42 100644 --- a/linden/indra/llcommon/llfile.cpp +++ b/linden/indra/llcommon/llfile.cpp | |||
@@ -29,6 +29,7 @@ | |||
29 | * COMPLETENESS OR PERFORMANCE. | 29 | * COMPLETENESS OR PERFORMANCE. |
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include "linden_common.h" | ||
32 | #include "llfile.h" | 33 | #include "llfile.h" |
33 | #include "llstring.h" | 34 | #include "llstring.h" |
34 | #include "llerror.h" | 35 | #include "llerror.h" |
diff --git a/linden/indra/llcommon/llmortician.cpp b/linden/indra/llcommon/llmortician.cpp index ec1383f..be362bf 100644 --- a/linden/indra/llcommon/llmortician.cpp +++ b/linden/indra/llcommon/llmortician.cpp | |||
@@ -25,6 +25,7 @@ | |||
25 | * COMPLETENESS OR PERFORMANCE. | 25 | * COMPLETENESS OR PERFORMANCE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | #include "linden_common.h" | ||
28 | #include "llmortician.h" | 29 | #include "llmortician.h" |
29 | 30 | ||
30 | #include <list> | 31 | #include <list> |
diff --git a/linden/indra/llcommon/llprocessor.cpp b/linden/indra/llcommon/llprocessor.cpp index 40dc00c..bd21351 100644 --- a/linden/indra/llcommon/llprocessor.cpp +++ b/linden/indra/llcommon/llprocessor.cpp | |||
@@ -453,7 +453,7 @@ bool CProcessor::AnalyzeIntelProcessor() | |||
453 | case 3: // Model = 8, Brand id = 3: Pentium III Xeon (on-die L2 cache) processor model | 453 | case 3: // Model = 8, Brand id = 3: Pentium III Xeon (on-die L2 cache) processor model |
454 | strncat(strCPUName, "Intel Pentium III Xeon (0.18 micron process) with internal L2 cache", sizeof(strCPUName)-(strlen(strCPUName)-1)); /*Flawfinder: ignore*/ | 454 | strncat(strCPUName, "Intel Pentium III Xeon (0.18 micron process) with internal L2 cache", sizeof(strCPUName)-(strlen(strCPUName)-1)); /*Flawfinder: ignore*/ |
455 | break; | 455 | break; |
456 | default: // ...² | 456 | default: // ... |
457 | strncat(strCPUName, "Intel Pentium III core (unknown model, 0.18 micron process) with internal L2 cache", sizeof(strCPUName)-(strlen(strCPUName)-1)); /*Flawfinder: ignore*/ | 457 | strncat(strCPUName, "Intel Pentium III core (unknown model, 0.18 micron process) with internal L2 cache", sizeof(strCPUName)-(strlen(strCPUName)-1)); /*Flawfinder: ignore*/ |
458 | break; | 458 | break; |
459 | } | 459 | } |
@@ -664,8 +664,8 @@ bool CProcessor::AnalyzeAMDProcessor() | |||
664 | mov dword ptr [tmp+44], edx | 664 | mov dword ptr [tmp+44], edx |
665 | } | 665 | } |
666 | // And copy it to the brand id string | 666 | // And copy it to the brand id string |
667 | strncpy(CPUInfo.strBrandID, tmp,sizeof(CPUInfo.strBrandID-1)); /* Flawfinder: ignore */ | 667 | strncpy(CPUInfo.strBrandID, tmp,sizeof(CPUInfo.strBrandID)-1); |
668 | CPUInfo.strBrandID[sizeof(CPUInfo.strBrandID-1)]='\0'; | 668 | CPUInfo.strBrandID[sizeof(CPUInfo.strBrandID)-1]='\0'; |
669 | } | 669 | } |
670 | else | 670 | else |
671 | { | 671 | { |
@@ -1280,17 +1280,17 @@ void CProcessor::DecodeProcessorConfiguration(unsigned int cfg) | |||
1280 | CPUInfo._L1.Data.uiAssociativeWays = 4; | 1280 | CPUInfo._L1.Data.uiAssociativeWays = 4; |
1281 | CPUInfo._L1.Data.uiLineSize = 64; | 1281 | CPUInfo._L1.Data.uiLineSize = 64; |
1282 | break; | 1282 | break; |
1283 | case 0x70: // cfg = 0x70: trace L1 cache present, 12 KµOPs, 4 ways | 1283 | case 0x70: // cfg = 0x70: trace L1 cache present, 12 KuOPs, 4 ways |
1284 | CPUInfo._Trace.bPresent = true; | 1284 | CPUInfo._Trace.bPresent = true; |
1285 | strcpy(CPUInfo._Trace.strSize, "12 K-micro-ops"); /* Flawfinder: ignore */ | 1285 | strcpy(CPUInfo._Trace.strSize, "12 K-micro-ops"); /* Flawfinder: ignore */ |
1286 | CPUInfo._Trace.uiAssociativeWays = 4; | 1286 | CPUInfo._Trace.uiAssociativeWays = 4; |
1287 | break; | 1287 | break; |
1288 | case 0x71: // cfg = 0x71: trace L1 cache present, 16 KµOPs, 4 ways | 1288 | case 0x71: // cfg = 0x71: trace L1 cache present, 16 KuOPs, 4 ways |
1289 | CPUInfo._Trace.bPresent = true; | 1289 | CPUInfo._Trace.bPresent = true; |
1290 | strcpy(CPUInfo._Trace.strSize, "16 K-micro-ops"); /* Flawfinder: ignore */ | 1290 | strcpy(CPUInfo._Trace.strSize, "16 K-micro-ops"); /* Flawfinder: ignore */ |
1291 | CPUInfo._Trace.uiAssociativeWays = 4; | 1291 | CPUInfo._Trace.uiAssociativeWays = 4; |
1292 | break; | 1292 | break; |
1293 | case 0x72: // cfg = 0x72: trace L1 cache present, 32 KµOPs, 4 ways | 1293 | case 0x72: // cfg = 0x72: trace L1 cache present, 32 KuOPs, 4 ways |
1294 | CPUInfo._Trace.bPresent = true; | 1294 | CPUInfo._Trace.bPresent = true; |
1295 | strcpy(CPUInfo._Trace.strSize, "32 K-micro-ops"); /* Flawfinder: ignore */ | 1295 | strcpy(CPUInfo._Trace.strSize, "32 K-micro-ops"); /* Flawfinder: ignore */ |
1296 | CPUInfo._Trace.uiAssociativeWays = 4; | 1296 | CPUInfo._Trace.uiAssociativeWays = 4; |
diff --git a/linden/indra/llcommon/llsd.cpp b/linden/indra/llcommon/llsd.cpp index 376a0de..f6d8d0e 100644 --- a/linden/indra/llcommon/llsd.cpp +++ b/linden/indra/llcommon/llsd.cpp | |||
@@ -26,6 +26,7 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "linden_common.h" | ||
29 | #include "llsd.h" | 30 | #include "llsd.h" |
30 | 31 | ||
31 | #include <sstream> | 32 | #include <sstream> |
diff --git a/linden/indra/llcommon/llsdserialize_xml.cpp b/linden/indra/llcommon/llsdserialize_xml.cpp index 04cdd57..85d3883 100644 --- a/linden/indra/llcommon/llsdserialize_xml.cpp +++ b/linden/indra/llcommon/llsdserialize_xml.cpp | |||
@@ -398,7 +398,10 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data) | |||
398 | status = XML_ParseBuffer(mParser, 0, true); | 398 | status = XML_ParseBuffer(mParser, 0, true); |
399 | if (status == XML_STATUS_ERROR && !mGracefullStop) | 399 | if (status == XML_STATUS_ERROR && !mGracefullStop) |
400 | { | 400 | { |
401 | ((char*) buffer)[count? count - 1 : 0] = '\0'; | 401 | if (buffer) |
402 | { | ||
403 | ((char*) buffer)[count ? count - 1 : 0] = '\0'; | ||
404 | } | ||
402 | llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; | 405 | llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; |
403 | data = LLSD(); | 406 | data = LLSD(); |
404 | return -1; | 407 | return -1; |
diff --git a/linden/indra/llcommon/llsdutil.cpp b/linden/indra/llcommon/llsdutil.cpp index 85718ba..e8b3ac5 100644 --- a/linden/indra/llcommon/llsdutil.cpp +++ b/linden/indra/llcommon/llsdutil.cpp | |||
@@ -297,4 +297,4 @@ char* ll_pretty_print_sd(const LLSD& sd) | |||
297 | strncpy(buffer, stream.str().c_str(), bufferSize); | 297 | strncpy(buffer, stream.str().c_str(), bufferSize); |
298 | buffer[bufferSize - 1] = '\0'; | 298 | buffer[bufferSize - 1] = '\0'; |
299 | return buffer; | 299 | return buffer; |
300 | } \ No newline at end of file | 300 | } |
diff --git a/linden/indra/llcommon/llstreamtools.cpp b/linden/indra/llcommon/llstreamtools.cpp index d70fa60..e6cd909 100644 --- a/linden/indra/llcommon/llstreamtools.cpp +++ b/linden/indra/llcommon/llstreamtools.cpp | |||
@@ -26,6 +26,8 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "linden_common.h" | ||
30 | |||
29 | #include <iostream> | 31 | #include <iostream> |
30 | #include <string> | 32 | #include <string> |
31 | 33 | ||
diff --git a/linden/indra/llcommon/llstring.cpp b/linden/indra/llcommon/llstring.cpp index 22d7b47..b5e307f 100644 --- a/linden/indra/llcommon/llstring.cpp +++ b/linden/indra/llcommon/llstring.cpp | |||
@@ -673,6 +673,26 @@ std::string mbcsstring_makeASCII(const std::string& wstr) | |||
673 | } | 673 | } |
674 | return out_str; | 674 | return out_str; |
675 | } | 675 | } |
676 | std::string utf8str_removeCRLF(const std::string& utf8str) | ||
677 | { | ||
678 | if (0 == utf8str.length()) | ||
679 | { | ||
680 | return std::string(); | ||
681 | } | ||
682 | const char CR = 13; | ||
683 | |||
684 | std::string out; | ||
685 | out.reserve(utf8str.length()); | ||
686 | const S32 len = (S32)utf8str.length(); | ||
687 | for( S32 i = 0; i < len; i++ ) | ||
688 | { | ||
689 | if( utf8str[i] != CR ) | ||
690 | { | ||
691 | out.push_back(utf8str[i]); | ||
692 | } | ||
693 | } | ||
694 | return out; | ||
695 | } | ||
676 | 696 | ||
677 | #if LL_WINDOWS | 697 | #if LL_WINDOWS |
678 | /* If the size of the passed in buffer is not large enough to hold the string, | 698 | /* If the size of the passed in buffer is not large enough to hold the string, |
diff --git a/linden/indra/llcommon/llstring.h b/linden/indra/llcommon/llstring.h index 8a2c24c..a24f944 100644 --- a/linden/indra/llcommon/llstring.h +++ b/linden/indra/llcommon/llstring.h | |||
@@ -457,6 +457,9 @@ std::string utf8str_makeASCII(const std::string& utf8str); | |||
457 | // Hack - used for evil notecards. | 457 | // Hack - used for evil notecards. |
458 | std::string mbcsstring_makeASCII(const std::string& str); | 458 | std::string mbcsstring_makeASCII(const std::string& str); |
459 | 459 | ||
460 | std::string utf8str_removeCRLF(const std::string& utf8str); | ||
461 | |||
462 | |||
460 | template <class T> | 463 | template <class T> |
461 | std::ostream& operator<<(std::ostream &s, const LLStringBase<T> &str) | 464 | std::ostream& operator<<(std::ostream &s, const LLStringBase<T> &str) |
462 | { | 465 | { |
diff --git a/linden/indra/llcommon/lluri.cpp b/linden/indra/llcommon/lluri.cpp index c838b25..83de022 100644 --- a/linden/indra/llcommon/lluri.cpp +++ b/linden/indra/llcommon/lluri.cpp | |||
@@ -188,6 +188,55 @@ LLURI::LLURI(const std::string& escaped_str) | |||
188 | } | 188 | } |
189 | } | 189 | } |
190 | 190 | ||
191 | static BOOL isDefault(const std::string& scheme, U16 port) | ||
192 | { | ||
193 | if (scheme == "http") | ||
194 | return port == 80; | ||
195 | if (scheme == "https") | ||
196 | return port == 443; | ||
197 | if (scheme == "ftp") | ||
198 | return port == 21; | ||
199 | |||
200 | return FALSE; | ||
201 | } | ||
202 | |||
203 | LLURI::LLURI(const std::string& scheme, | ||
204 | const std::string& userName, | ||
205 | const std::string& password, | ||
206 | const std::string& hostName, | ||
207 | U16 port, | ||
208 | const std::string& escapedPath, | ||
209 | const std::string& escapedQuery) | ||
210 | : mScheme(scheme), | ||
211 | mEscapedPath(escapedPath), | ||
212 | mEscapedQuery(escapedQuery) | ||
213 | { | ||
214 | std::ostringstream auth; | ||
215 | std::ostringstream opaque; | ||
216 | |||
217 | opaque << "//"; | ||
218 | |||
219 | if (!userName.empty()) | ||
220 | { | ||
221 | auth << escape(userName); | ||
222 | if (!password.empty()) | ||
223 | { | ||
224 | auth << ':' << escape(password); | ||
225 | } | ||
226 | auth << '@'; | ||
227 | } | ||
228 | auth << hostName; | ||
229 | if (!isDefault(scheme, port)) | ||
230 | { | ||
231 | auth << ':' << port; | ||
232 | } | ||
233 | mEscapedAuthority = auth.str(); | ||
234 | |||
235 | opaque << mEscapedAuthority << escapedPath << escapedQuery; | ||
236 | |||
237 | mEscapedOpaque = opaque.str(); | ||
238 | } | ||
239 | |||
191 | LLURI::~LLURI() | 240 | LLURI::~LLURI() |
192 | { | 241 | { |
193 | } | 242 | } |
@@ -447,6 +496,35 @@ std::string LLURI::hostName() const | |||
447 | return unescape(host); | 496 | return unescape(host); |
448 | } | 497 | } |
449 | 498 | ||
499 | std::string LLURI::userName() const | ||
500 | { | ||
501 | std::string user, userPass, host, port; | ||
502 | findAuthorityParts(mEscapedAuthority, userPass, host, port); | ||
503 | std::string::size_type pos = userPass.find(':'); | ||
504 | if (pos != std::string::npos) | ||
505 | { | ||
506 | user = userPass.substr(0, pos); | ||
507 | } | ||
508 | return unescape(user); | ||
509 | } | ||
510 | |||
511 | std::string LLURI::password() const | ||
512 | { | ||
513 | std::string pass, userPass, host, port; | ||
514 | findAuthorityParts(mEscapedAuthority, userPass, host, port); | ||
515 | std::string::size_type pos = userPass.find(':'); | ||
516 | if (pos != std::string::npos) | ||
517 | { | ||
518 | pass = userPass.substr(pos + 1); | ||
519 | } | ||
520 | return unescape(pass); | ||
521 | } | ||
522 | |||
523 | BOOL LLURI::defaultPort() const | ||
524 | { | ||
525 | return isDefault(mScheme, hostPort()); | ||
526 | } | ||
527 | |||
450 | U16 LLURI::hostPort() const | 528 | U16 LLURI::hostPort() const |
451 | { | 529 | { |
452 | std::string user, host, port; | 530 | std::string user, host, port; |
diff --git a/linden/indra/llcommon/lluri.h b/linden/indra/llcommon/lluri.h index d1499b8..3f24799 100644 --- a/linden/indra/llcommon/lluri.h +++ b/linden/indra/llcommon/lluri.h | |||
@@ -48,6 +48,14 @@ class LLURI | |||
48 | public: | 48 | public: |
49 | LLURI(); | 49 | LLURI(); |
50 | LLURI(const std::string& escaped_str); | 50 | LLURI(const std::string& escaped_str); |
51 | LLURI(const std::string& scheme, | ||
52 | const std::string& userName, | ||
53 | const std::string& password, | ||
54 | const std::string& hostName, | ||
55 | U16 hostPort, | ||
56 | const std::string& escapedPath, | ||
57 | const std::string& escapedQuery); | ||
58 | |||
51 | // construct from escaped string, as would be transmitted on the net | 59 | // construct from escaped string, as would be transmitted on the net |
52 | 60 | ||
53 | ~LLURI(); | 61 | ~LLURI(); |
@@ -68,8 +76,6 @@ public: | |||
68 | const U32& port, | 76 | const U32& port, |
69 | const LLSD& path, | 77 | const LLSD& path, |
70 | const LLSD& query); | 78 | const LLSD& query); |
71 | |||
72 | |||
73 | std::string asString() const; | 79 | std::string asString() const; |
74 | // the whole URI, escaped as needed | 80 | // the whole URI, escaped as needed |
75 | 81 | ||
@@ -84,10 +90,15 @@ public: | |||
84 | // for schemes that follow path like syntax (http, https, ftp) | 90 | // for schemes that follow path like syntax (http, https, ftp) |
85 | std::string authority() const; // ex.: "host.com:80" | 91 | std::string authority() const; // ex.: "host.com:80" |
86 | std::string hostName() const; // ex.: "host.com" | 92 | std::string hostName() const; // ex.: "host.com" |
93 | std::string userName() const; | ||
94 | std::string password() const; | ||
87 | U16 hostPort() const; // ex.: 80, will include implicit port | 95 | U16 hostPort() const; // ex.: 80, will include implicit port |
96 | BOOL defaultPort() const; // true if port is default for scheme | ||
97 | const std::string& escapedPath() const { return mEscapedPath; } | ||
88 | std::string path() const; // ex.: "/abc/def", includes leading slash | 98 | std::string path() const; // ex.: "/abc/def", includes leading slash |
89 | // LLSD pathArray() const; // above decoded into an array of strings | 99 | // LLSD pathArray() const; // above decoded into an array of strings |
90 | std::string query() const; // ex.: "x=34", section after "?" | 100 | std::string query() const; // ex.: "x=34", section after "?" |
101 | const std::string& escapedQuery() const { return mEscapedQuery; } | ||
91 | LLSD queryMap() const; // above decoded into a map | 102 | LLSD queryMap() const; // above decoded into a map |
92 | static LLSD queryMap(std::string escaped_query_string); | 103 | static LLSD queryMap(std::string escaped_query_string); |
93 | static std::string mapToQueryString(const LLSD& queryMap); | 104 | static std::string mapToQueryString(const LLSD& queryMap); |
diff --git a/linden/indra/llcommon/llversion.h b/linden/indra/llcommon/llversion.h index 57b1512..2623c3a 100644 --- a/linden/indra/llcommon/llversion.h +++ b/linden/indra/llcommon/llversion.h | |||
@@ -31,7 +31,7 @@ | |||
31 | 31 | ||
32 | const S32 LL_VERSION_MAJOR = 1; | 32 | const S32 LL_VERSION_MAJOR = 1; |
33 | const S32 LL_VERSION_MINOR = 17; | 33 | const S32 LL_VERSION_MINOR = 17; |
34 | const S32 LL_VERSION_PATCH = 0; | 34 | const S32 LL_VERSION_PATCH = 1; |
35 | const S32 LL_VERSION_BUILD = 12; | 35 | const S32 LL_VERSION_BUILD = 0; |
36 | 36 | ||
37 | #endif | 37 | #endif |
diff --git a/linden/indra/llcommon/processor.h b/linden/indra/llcommon/processor.h index 367d540..34d970e 100644 --- a/linden/indra/llcommon/processor.h +++ b/linden/indra/llcommon/processor.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file processor.h | 2 | * @file processor.h |
3 | * @brief Legacy wrapper header. | 3 | * @brief Legacy wrapper header. |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007 Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/llcommon/string_table.h b/linden/indra/llcommon/string_table.h index 790741d..3d30c9f 100644 --- a/linden/indra/llcommon/string_table.h +++ b/linden/indra/llcommon/string_table.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file string_table.h | 2 | * @file string_table.h |
3 | * @brief Legacy wrapper header. | 3 | * @brief Legacy wrapper header. |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007 Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/llcommon/timer.h b/linden/indra/llcommon/timer.h index 31e6db6..3a098ec 100644 --- a/linden/indra/llcommon/timer.h +++ b/linden/indra/llcommon/timer.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file timer.h | 2 | * @file timer.h |
3 | * @brief Legacy wrapper header. | 3 | * @brief Legacy wrapper header. |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007 Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/llcommon/timing.cpp b/linden/indra/llcommon/timing.cpp index 342bf19..0737beb 100644 --- a/linden/indra/llcommon/timing.cpp +++ b/linden/indra/llcommon/timing.cpp | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file timing.cpp | 2 | * @file timing.cpp |
3 | * @brief This file will be deprecated in the future. | 3 | * @brief This file will be deprecated in the future. |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007 Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/llimage/files.lst b/linden/indra/llimage/files.lst index 9e14118..a6ac342 100644 --- a/linden/indra/llimage/files.lst +++ b/linden/indra/llimage/files.lst | |||
@@ -3,5 +3,7 @@ llimage/llimage.cpp | |||
3 | llimage/llimagedxt.cpp | 3 | llimage/llimagedxt.cpp |
4 | llimage/llimagej2c.cpp | 4 | llimage/llimagej2c.cpp |
5 | llimage/llimagejpeg.cpp | 5 | llimage/llimagejpeg.cpp |
6 | llimage/llimagepng.cpp | ||
6 | llimage/llimagetga.cpp | 7 | llimage/llimagetga.cpp |
7 | llimage/llimageworker.cpp | 8 | llimage/llimageworker.cpp |
9 | llimage/llpngwrapper.cpp | ||
diff --git a/linden/indra/llimage/llimage.cpp b/linden/indra/llimage/llimage.cpp index 5175314..b846606 100644 --- a/linden/indra/llimage/llimage.cpp +++ b/linden/indra/llimage/llimage.cpp | |||
@@ -1105,7 +1105,8 @@ file_extensions[] = | |||
1105 | { "jpg", IMG_CODEC_JPEG }, | 1105 | { "jpg", IMG_CODEC_JPEG }, |
1106 | { "jpeg", IMG_CODEC_JPEG }, | 1106 | { "jpeg", IMG_CODEC_JPEG }, |
1107 | { "mip", IMG_CODEC_DXT }, | 1107 | { "mip", IMG_CODEC_DXT }, |
1108 | { "dxt", IMG_CODEC_DXT } | 1108 | { "dxt", IMG_CODEC_DXT }, |
1109 | { "png", IMG_CODEC_PNG } | ||
1109 | }; | 1110 | }; |
1110 | #define NUM_FILE_EXTENSIONS sizeof(file_extensions)/sizeof(file_extensions[0]) | 1111 | #define NUM_FILE_EXTENSIONS sizeof(file_extensions)/sizeof(file_extensions[0]) |
1111 | 1112 | ||
diff --git a/linden/indra/llimage/llimage.h b/linden/indra/llimage/llimage.h index 489fb27..cd559ec 100644 --- a/linden/indra/llimage/llimage.h +++ b/linden/indra/llimage/llimage.h | |||
@@ -67,7 +67,8 @@ enum | |||
67 | IMG_CODEC_TGA = 4, | 67 | IMG_CODEC_TGA = 4, |
68 | IMG_CODEC_JPEG = 5, | 68 | IMG_CODEC_JPEG = 5, |
69 | IMG_CODEC_DXT = 6, | 69 | IMG_CODEC_DXT = 6, |
70 | IMG_CODEC_EOF = 7 | 70 | IMG_CODEC_PNG = 7, |
71 | IMG_CODEC_EOF = 8 | ||
71 | }; | 72 | }; |
72 | 73 | ||
73 | //============================================================================ | 74 | //============================================================================ |
diff --git a/linden/indra/llimage/llimage.vcproj b/linden/indra/llimage/llimage.vcproj index 1f8a6ad..984d84e 100644 --- a/linden/indra/llimage/llimage.vcproj +++ b/linden/indra/llimage/llimage.vcproj | |||
@@ -169,11 +169,17 @@ | |||
169 | RelativePath=".\llimagejpeg.cpp"> | 169 | RelativePath=".\llimagejpeg.cpp"> |
170 | </File> | 170 | </File> |
171 | <File | 171 | <File |
172 | RelativePath=".\llimagepng.cpp"> | ||
173 | </File> | ||
174 | <File | ||
172 | RelativePath=".\llimagetga.cpp"> | 175 | RelativePath=".\llimagetga.cpp"> |
173 | </File> | 176 | </File> |
174 | <File | 177 | <File |
175 | RelativePath=".\llimageworker.cpp"> | 178 | RelativePath=".\llimageworker.cpp"> |
176 | </File> | 179 | </File> |
180 | <File | ||
181 | RelativePath=".\llpngwrapper.cpp"> | ||
182 | </File> | ||
177 | </Filter> | 183 | </Filter> |
178 | <Filter | 184 | <Filter |
179 | Name="Header Files" | 185 | Name="Header Files" |
@@ -198,11 +204,17 @@ | |||
198 | RelativePath=".\llimagejpeg.h"> | 204 | RelativePath=".\llimagejpeg.h"> |
199 | </File> | 205 | </File> |
200 | <File | 206 | <File |
207 | RelativePath=".\llimagepng.h"> | ||
208 | </File> | ||
209 | <File | ||
201 | RelativePath=".\llimagetga.h"> | 210 | RelativePath=".\llimagetga.h"> |
202 | </File> | 211 | </File> |
203 | <File | 212 | <File |
204 | RelativePath=".\llimageworker.h"> | 213 | RelativePath=".\llimageworker.h"> |
205 | </File> | 214 | </File> |
215 | <File | ||
216 | RelativePath=".\llpngwrapper.h"> | ||
217 | </File> | ||
206 | </Filter> | 218 | </Filter> |
207 | <Filter | 219 | <Filter |
208 | Name="Resource Files" | 220 | Name="Resource Files" |
diff --git a/linden/indra/llimage/llimage_vc8.vcproj b/linden/indra/llimage/llimage_vc8.vcproj index 052a28f..dd15d59 100644 --- a/linden/indra/llimage/llimage_vc8.vcproj +++ b/linden/indra/llimage/llimage_vc8.vcproj | |||
@@ -248,6 +248,10 @@ | |||
248 | > | 248 | > |
249 | </File> | 249 | </File> |
250 | <File | 250 | <File |
251 | RelativePath=".\llimagepng.cpp" | ||
252 | > | ||
253 | </File> | ||
254 | <File | ||
251 | RelativePath=".\llimagetga.cpp" | 255 | RelativePath=".\llimagetga.cpp" |
252 | > | 256 | > |
253 | </File> | 257 | </File> |
@@ -255,6 +259,10 @@ | |||
255 | RelativePath=".\llimageworker.cpp" | 259 | RelativePath=".\llimageworker.cpp" |
256 | > | 260 | > |
257 | </File> | 261 | </File> |
262 | <File | ||
263 | RelativePath=".\llpngwrapper.cpp" | ||
264 | > | ||
265 | </File> | ||
258 | </Filter> | 266 | </Filter> |
259 | <Filter | 267 | <Filter |
260 | Name="Header Files" | 268 | Name="Header Files" |
@@ -286,6 +294,10 @@ | |||
286 | > | 294 | > |
287 | </File> | 295 | </File> |
288 | <File | 296 | <File |
297 | RelativePath=".\llimagepng.h" | ||
298 | > | ||
299 | </File> | ||
300 | <File | ||
289 | RelativePath=".\llimagetga.h" | 301 | RelativePath=".\llimagetga.h" |
290 | > | 302 | > |
291 | </File> | 303 | </File> |
@@ -293,6 +305,10 @@ | |||
293 | RelativePath=".\llimageworker.h" | 305 | RelativePath=".\llimageworker.h" |
294 | > | 306 | > |
295 | </File> | 307 | </File> |
308 | <File | ||
309 | RelativePath=".\llpngwrapper.h" | ||
310 | > | ||
311 | </File> | ||
296 | </Filter> | 312 | </Filter> |
297 | <Filter | 313 | <Filter |
298 | Name="Resource Files" | 314 | Name="Resource Files" |
diff --git a/linden/indra/llimage/llimageworker.cpp b/linden/indra/llimage/llimageworker.cpp index c59eac2..9affd59 100644 --- a/linden/indra/llimage/llimageworker.cpp +++ b/linden/indra/llimage/llimageworker.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file llimage.cpp | 2 | * @file llimageworker.cpp |
3 | * @brief Base class for images. | 3 | * @brief Base class for images. |
4 | * | 4 | * |
5 | * Copyright (c) 2001-2007, Linden Research, Inc. | 5 | * Copyright (c) 2001-2007, Linden Research, Inc. |
diff --git a/linden/indra/llinventory/llparcel.cpp b/linden/indra/llinventory/llparcel.cpp index 990e77d..5902acd 100644 --- a/linden/indra/llinventory/llparcel.cpp +++ b/linden/indra/llinventory/llparcel.cpp | |||
@@ -1231,24 +1231,6 @@ BOOL LLParcel::exportStream(std::ostream& output_stream) | |||
1231 | return TRUE; | 1231 | return TRUE; |
1232 | } | 1232 | } |
1233 | 1233 | ||
1234 | // virtual | ||
1235 | LLSD LLParcel::asLLSD() const | ||
1236 | { | ||
1237 | LLSD p; | ||
1238 | p["parcel-id"] = getID(); | ||
1239 | p["name"] = getName(); | ||
1240 | p["desc"] = getDesc(); | ||
1241 | p["owner-id"] = getOwnerID(); | ||
1242 | p["group-id"] = getGroupID(); | ||
1243 | p["group-owned"] = (bool)getIsGroupOwned(); | ||
1244 | p["auction-id"] = (S32)getAuctionID(); | ||
1245 | p["snapshot-id"] = getSnapshotID(); | ||
1246 | p["authorized-buyer-id"] = getAuthorizedBuyerID(); | ||
1247 | p["sale-price"] = getSalePrice(); | ||
1248 | p["parcel-flags"] = (S32)getParcelFlags(); | ||
1249 | // NOTE: This list is incomplete, as this is used only for search. JC | ||
1250 | return p; | ||
1251 | } | ||
1252 | 1234 | ||
1253 | // Assumes we are in a block "ParcelData" | 1235 | // Assumes we are in a block "ParcelData" |
1254 | void LLParcel::packMessage(LLMessageSystem* msg) | 1236 | void LLParcel::packMessage(LLMessageSystem* msg) |
diff --git a/linden/indra/llinventory/llparcel.h b/linden/indra/llinventory/llparcel.h index 371b802..a33ffad 100644 --- a/linden/indra/llinventory/llparcel.h +++ b/linden/indra/llinventory/llparcel.h | |||
@@ -264,7 +264,6 @@ public: | |||
264 | BOOL importStream(std::istream& input_stream); | 264 | BOOL importStream(std::istream& input_stream); |
265 | BOOL importAccessEntry(std::istream& input_stream, LLAccessEntry* entry); | 265 | BOOL importAccessEntry(std::istream& input_stream, LLAccessEntry* entry); |
266 | BOOL exportStream(std::ostream& output_stream); | 266 | BOOL exportStream(std::ostream& output_stream); |
267 | virtual LLSD asLLSD() const; | ||
268 | 267 | ||
269 | void packMessage(LLMessageSystem* msg); | 268 | void packMessage(LLMessageSystem* msg); |
270 | void unpackMessage(LLMessageSystem* msg); | 269 | void unpackMessage(LLMessageSystem* msg); |
diff --git a/linden/indra/llinventory/llpermissions.h b/linden/indra/llinventory/llpermissions.h index 608f4b2..9607a9b 100644 --- a/linden/indra/llinventory/llpermissions.h +++ b/linden/indra/llinventory/llpermissions.h | |||
@@ -140,7 +140,7 @@ public: | |||
140 | const LLUUID& getOwner() const { return mOwner; } | 140 | const LLUUID& getOwner() const { return mOwner; } |
141 | 141 | ||
142 | // return the group_id of the group associated with the | 142 | // return the group_id of the group associated with the |
143 | // object. group_id == owner_id if the object is group owned. | 143 | // object. |
144 | const LLUUID& getGroup() const { return mGroup; } | 144 | const LLUUID& getGroup() const { return mGroup; } |
145 | 145 | ||
146 | // return the agent_id of the last agent owner. Only returns | 146 | // return the agent_id of the last agent owner. Only returns |
diff --git a/linden/indra/llinventory/lluserrelations.cpp b/linden/indra/llinventory/lluserrelations.cpp index fc8e510..5f01e51 100644 --- a/linden/indra/llinventory/lluserrelations.cpp +++ b/linden/indra/llinventory/lluserrelations.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file lluserrealations.cpp | 2 | * @file lluserrelations.cpp |
3 | * @author Phoenix | 3 | * @author Phoenix |
4 | * @date 2006-10-12 | 4 | * @date 2006-10-12 |
5 | * @brief Implementation of a simple cache of user relations. | 5 | * @brief Implementation of a simple cache of user relations. |
diff --git a/linden/indra/llinventory/lluserrelations.h b/linden/indra/llinventory/lluserrelations.h index 3895533..69f5966 100644 --- a/linden/indra/llinventory/lluserrelations.h +++ b/linden/indra/llinventory/lluserrelations.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file llluserrelations.h | 2 | * @file lluserrelations.h |
3 | * @author Phoenix | 3 | * @author Phoenix |
4 | * @date 2006-10-12 | 4 | * @date 2006-10-12 |
5 | * @brief Declaration of a class for handling granted rights. | 5 | * @brief Declaration of a class for handling granted rights. |
@@ -38,7 +38,7 @@ | |||
38 | * @class LLRelationship | 38 | * @class LLRelationship |
39 | * | 39 | * |
40 | * This class represents a relationship between two agents, where the | 40 | * This class represents a relationship between two agents, where the |
41 | * related agent is stored and the other agent in the relationship is | 41 | * related agent is stored and the other agent is the relationship is |
42 | * implicit by container ownership. | 42 | * implicit by container ownership. |
43 | * This is merely a cache of this information used by the sim | 43 | * This is merely a cache of this information used by the sim |
44 | * and viewer. | 44 | * and viewer. |
diff --git a/linden/indra/llmath/camera.h b/linden/indra/llmath/camera.h index 3aa86d5..be8c711 100644 --- a/linden/indra/llmath/camera.h +++ b/linden/indra/llmath/camera.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file camera.h | 2 | * @file camera.h |
3 | * @brief Legacy wrapper header. | 3 | * @brief Legacy wrapper header. |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007 Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/llmath/coordframe.h b/linden/indra/llmath/coordframe.h index 611387d..01d3031 100644 --- a/linden/indra/llmath/coordframe.h +++ b/linden/indra/llmath/coordframe.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file coordframe.h | 2 | * @file coordframe.h |
3 | * @brief Legacy wrapper header. | 3 | * @brief Legacy wrapper header. |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007 Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/llmath/llquaternion.cpp b/linden/indra/llmath/llquaternion.cpp index abc9e42..06e34af 100644 --- a/linden/indra/llmath/llquaternion.cpp +++ b/linden/indra/llmath/llquaternion.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file qmath.cpp | 2 | * @file llquaternion.cpp |
3 | * @brief LLQuaternion class implementation. | 3 | * @brief LLQuaternion class implementation. |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007, Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
diff --git a/linden/indra/llmath/llrand.h b/linden/indra/llmath/llrand.h index 4a3dca6..c5ab7e3 100644 --- a/linden/indra/llmath/llrand.h +++ b/linden/indra/llmath/llrand.h | |||
@@ -29,8 +29,8 @@ | |||
29 | #ifndef LL_LLRAND_H | 29 | #ifndef LL_LLRAND_H |
30 | #define LL_LLRAND_H | 30 | #define LL_LLRAND_H |
31 | 31 | ||
32 | #include "boost/random/lagged_fibonacci.hpp" | 32 | #include <boost/random/lagged_fibonacci.hpp> |
33 | #include "boost/random/mersenne_twister.hpp" | 33 | #include <boost/random/mersenne_twister.hpp> |
34 | 34 | ||
35 | /** | 35 | /** |
36 | * Use the boost random number generators if you want a stateful | 36 | * Use the boost random number generators if you want a stateful |
diff --git a/linden/indra/llmath/llvolume.cpp b/linden/indra/llmath/llvolume.cpp index 327f1bf..5764c38 100644 --- a/linden/indra/llmath/llvolume.cpp +++ b/linden/indra/llmath/llvolume.cpp | |||
@@ -1799,6 +1799,8 @@ void LLVolume::createVolumeFaces() | |||
1799 | // sculpt replaces generate() for sculpted surfaces | 1799 | // sculpt replaces generate() for sculpted surfaces |
1800 | void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level) | 1800 | void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level) |
1801 | { | 1801 | { |
1802 | U8 sculpt_type = mParams.getSculptType(); | ||
1803 | |||
1802 | BOOL data_is_empty = FALSE; | 1804 | BOOL data_is_empty = FALSE; |
1803 | 1805 | ||
1804 | if (sculpt_width == 0 || sculpt_height == 0 || sculpt_data == NULL) | 1806 | if (sculpt_width == 0 || sculpt_height == 0 || sculpt_data == NULL) |
@@ -1880,6 +1882,7 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, | |||
1880 | line += sizeT; | 1882 | line += sizeT; |
1881 | } | 1883 | } |
1882 | } | 1884 | } |
1885 | |||
1883 | else | 1886 | else |
1884 | { | 1887 | { |
1885 | S32 line = 0; | 1888 | S32 line = 0; |
@@ -1894,18 +1897,52 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, | |||
1894 | U32 x = (U32) ((F32)t/(sizeT-1) * (F32) sculpt_width); | 1897 | U32 x = (U32) ((F32)t/(sizeT-1) * (F32) sculpt_width); |
1895 | U32 y = (U32) ((F32)s/(sizeS-1) * (F32) sculpt_height); | 1898 | U32 y = (U32) ((F32)s/(sizeS-1) * (F32) sculpt_height); |
1896 | 1899 | ||
1897 | if (y == sculpt_height) // stitch bottom row | 1900 | if (y == 0) // top row stitching |
1898 | { | 1901 | { |
1899 | y = sculpt_height - 1; | 1902 | // pinch? |
1900 | x = sculpt_width / 2; | 1903 | if (sculpt_type == LL_SCULPT_TYPE_SPHERE) |
1904 | { | ||
1905 | x = sculpt_width / 2; | ||
1906 | } | ||
1901 | } | 1907 | } |
1902 | 1908 | ||
1903 | if (x == sculpt_width) // stitch sides | 1909 | if (y == sculpt_height) // bottom row stitching |
1904 | x = 0; | 1910 | { |
1911 | // wrap? | ||
1912 | if (sculpt_type == LL_SCULPT_TYPE_TORUS) | ||
1913 | { | ||
1914 | y = 0; | ||
1915 | } | ||
1916 | else | ||
1917 | { | ||
1918 | y = sculpt_height - 1; | ||
1919 | } | ||
1905 | 1920 | ||
1906 | if (y == 0) // stitch top row | 1921 | // pinch? |
1907 | x = sculpt_width / 2; | 1922 | if (sculpt_type == LL_SCULPT_TYPE_SPHERE) |
1908 | 1923 | { | |
1924 | x = sculpt_width / 2; | ||
1925 | } | ||
1926 | } | ||
1927 | |||
1928 | if (x == sculpt_width) // side stitching | ||
1929 | { | ||
1930 | // wrap? | ||
1931 | if ((sculpt_type == LL_SCULPT_TYPE_SPHERE) || | ||
1932 | (sculpt_type == LL_SCULPT_TYPE_TORUS) || | ||
1933 | (sculpt_type == LL_SCULPT_TYPE_CYLINDER)) | ||
1934 | { | ||
1935 | x = 0; | ||
1936 | } | ||
1937 | |||
1938 | else | ||
1939 | { | ||
1940 | x = sculpt_width - 1; | ||
1941 | } | ||
1942 | } | ||
1943 | |||
1944 | |||
1945 | |||
1909 | U32 index = (x + y * sculpt_width) * sculpt_components; | 1946 | U32 index = (x + y * sculpt_width) * sculpt_components; |
1910 | pt.mPos.mV[0] = sculpt_data[index ] / 256.f - 0.5f; | 1947 | pt.mPos.mV[0] = sculpt_data[index ] / 256.f - 0.5f; |
1911 | pt.mPos.mV[1] = sculpt_data[index+1] / 256.f - 0.5f; | 1948 | pt.mPos.mV[1] = sculpt_data[index+1] / 256.f - 0.5f; |
@@ -4615,82 +4652,130 @@ BOOL LLVolumeFace::createSide() | |||
4615 | } | 4652 | } |
4616 | } | 4653 | } |
4617 | 4654 | ||
4655 | // adjust normals based on wrapping and stitching | ||
4656 | |||
4618 | BOOL s_bottom_converges = ((mVertices[0].mPosition - mVertices[mNumS*(mNumT-2)].mPosition).magVecSquared() < 0.000001f); | 4657 | BOOL s_bottom_converges = ((mVertices[0].mPosition - mVertices[mNumS*(mNumT-2)].mPosition).magVecSquared() < 0.000001f); |
4619 | BOOL s_top_converges = ((mVertices[mNumS-1].mPosition - mVertices[mNumS*(mNumT-2)+mNumS-1].mPosition).magVecSquared() < 0.000001f); | 4658 | BOOL s_top_converges = ((mVertices[mNumS-1].mPosition - mVertices[mNumS*(mNumT-2)+mNumS-1].mPosition).magVecSquared() < 0.000001f); |
4620 | 4659 | U8 sculpt_type = mVolumep->getParams().getSculptType(); | |
4621 | if (mVolumep->getPath().isOpen() == FALSE) { //wrap normals on T | 4660 | |
4622 | for (S32 i = 0; i < mNumS; i++) { | 4661 | if (sculpt_type == LL_SCULPT_TYPE_NONE) // logic for non-sculpt volumes |
4623 | LLVector3 norm = mVertices[i].mNormal + mVertices[mNumS*(mNumT-1)+i].mNormal; | 4662 | { |
4624 | mVertices[i].mNormal = norm; | 4663 | if (mVolumep->getPath().isOpen() == FALSE) |
4625 | mVertices[mNumS*(mNumT-1)+i].mNormal = norm; | 4664 | { //wrap normals on T |
4665 | for (S32 i = 0; i < mNumS; i++) | ||
4666 | { | ||
4667 | LLVector3 norm = mVertices[i].mNormal + mVertices[mNumS*(mNumT-1)+i].mNormal; | ||
4668 | mVertices[i].mNormal = norm; | ||
4669 | mVertices[mNumS*(mNumT-1)+i].mNormal = norm; | ||
4670 | } | ||
4626 | } | 4671 | } |
4627 | } | ||
4628 | 4672 | ||
4629 | if ((mVolumep->getProfile().isOpen() == FALSE) && | 4673 | if ((mVolumep->getProfile().isOpen() == FALSE) && !(s_bottom_converges)) |
4630 | !(s_bottom_converges)) | ||
4631 | { //wrap normals on S | 4674 | { //wrap normals on S |
4632 | for (S32 i = 0; i < mNumT; i++) { | 4675 | for (S32 i = 0; i < mNumT; i++) |
4676 | { | ||
4633 | LLVector3 norm = mVertices[mNumS*i].mNormal + mVertices[mNumS*i+mNumS-1].mNormal; | 4677 | LLVector3 norm = mVertices[mNumS*i].mNormal + mVertices[mNumS*i+mNumS-1].mNormal; |
4634 | mVertices[mNumS * i].mNormal = norm; | 4678 | mVertices[mNumS * i].mNormal = norm; |
4635 | mVertices[mNumS * i+mNumS-1].mNormal = norm; | 4679 | mVertices[mNumS * i+mNumS-1].mNormal = norm; |
4636 | } | 4680 | } |
4637 | } | 4681 | } |
4638 | 4682 | ||
4639 | if (mVolumep->getPathType() == LL_PCODE_PATH_CIRCLE && | 4683 | if (mVolumep->getPathType() == LL_PCODE_PATH_CIRCLE && |
4640 | ((mVolumep->getProfileType() & LL_PCODE_PROFILE_MASK) == LL_PCODE_PROFILE_CIRCLE_HALF)) | 4684 | ((mVolumep->getProfileType() & LL_PCODE_PROFILE_MASK) == LL_PCODE_PROFILE_CIRCLE_HALF)) |
4641 | { | 4685 | { |
4642 | if (s_bottom_converges) | 4686 | if (s_bottom_converges) |
4643 | { //all lower S have same normal | 4687 | { //all lower S have same normal |
4644 | for (S32 i = 0; i < mNumT; i++) { | 4688 | for (S32 i = 0; i < mNumT; i++) |
4645 | mVertices[mNumS*i].mNormal = LLVector3(1,0,0); | 4689 | { |
4690 | mVertices[mNumS*i].mNormal = LLVector3(1,0,0); | ||
4691 | } | ||
4646 | } | 4692 | } |
4647 | } | ||
4648 | 4693 | ||
4649 | if (s_top_converges) | 4694 | if (s_top_converges) |
4650 | { //all upper S have same normal | 4695 | { //all upper S have same normal |
4651 | for (S32 i = 0; i < mNumT; i++) { | 4696 | for (S32 i = 0; i < mNumT; i++) |
4652 | mVertices[mNumS*i+mNumS-1].mNormal = LLVector3(-1,0,0); | 4697 | { |
4698 | mVertices[mNumS*i+mNumS-1].mNormal = LLVector3(-1,0,0); | ||
4699 | } | ||
4653 | } | 4700 | } |
4654 | } | 4701 | } |
4655 | } | 4702 | } |
4656 | |||
4657 | U8 sculpt_type = mVolumep->getParams().getSculptType(); | ||
4658 | 4703 | ||
4659 | if (sculpt_type == LL_SCULPT_TYPE_SPHERE) | 4704 | else // logic for sculpt volumes |
4660 | { | 4705 | { |
4661 | // average normals for north pole | 4706 | BOOL average_poles = FALSE; |
4707 | BOOL wrap_s = FALSE; | ||
4708 | BOOL wrap_t = FALSE; | ||
4709 | |||
4710 | if (sculpt_type == LL_SCULPT_TYPE_SPHERE) | ||
4711 | average_poles = TRUE; | ||
4712 | |||
4713 | if ((sculpt_type == LL_SCULPT_TYPE_SPHERE) || | ||
4714 | (sculpt_type == LL_SCULPT_TYPE_TORUS) || | ||
4715 | (sculpt_type == LL_SCULPT_TYPE_CYLINDER)) | ||
4716 | wrap_s = TRUE; | ||
4717 | |||
4718 | if (sculpt_type == LL_SCULPT_TYPE_TORUS) | ||
4719 | wrap_t = TRUE; | ||
4720 | |||
4662 | 4721 | ||
4663 | LLVector3 average(0.0, 0.0, 0.0); | 4722 | if (average_poles) |
4664 | for (S32 i = 0; i < mNumS; i++) | ||
4665 | { | 4723 | { |
4666 | average += mVertices[i].mNormal; | 4724 | // average normals for north pole |
4667 | } | 4725 | |
4726 | LLVector3 average(0.0, 0.0, 0.0); | ||
4727 | for (S32 i = 0; i < mNumS; i++) | ||
4728 | { | ||
4729 | average += mVertices[i].mNormal; | ||
4730 | } | ||
4731 | |||
4732 | // set average | ||
4733 | for (S32 i = 0; i < mNumS; i++) | ||
4734 | { | ||
4735 | mVertices[i].mNormal = average; | ||
4736 | } | ||
4737 | |||
4738 | // average normals for south pole | ||
4739 | |||
4740 | average = LLVector3(0.0, 0.0, 0.0); | ||
4741 | for (S32 i = 0; i < mNumS; i++) | ||
4742 | { | ||
4743 | average += mVertices[i + mNumS * (mNumT - 1)].mNormal; | ||
4744 | } | ||
4745 | |||
4746 | // set average | ||
4747 | for (S32 i = 0; i < mNumS; i++) | ||
4748 | { | ||
4749 | mVertices[i + mNumS * (mNumT - 1)].mNormal = average; | ||
4750 | } | ||
4668 | 4751 | ||
4669 | // set average | ||
4670 | for (S32 i = 0; i < mNumS; i++) | ||
4671 | { | ||
4672 | mVertices[i].mNormal = average; | ||
4673 | } | 4752 | } |
4674 | } | ||
4675 | 4753 | ||
4676 | |||
4677 | if (sculpt_type == LL_SCULPT_TYPE_SPHERE) | ||
4678 | { | ||
4679 | // average normals for south pole | ||
4680 | 4754 | ||
4681 | LLVector3 average(0.0, 0.0, 0.0); | 4755 | if (wrap_s) |
4682 | for (S32 i = 0; i < mNumS; i++) | ||
4683 | { | 4756 | { |
4684 | average += mVertices[i + mNumS * (mNumT - 1)].mNormal; | 4757 | for (S32 i = 0; i < mNumT; i++) |
4758 | { | ||
4759 | LLVector3 norm = mVertices[mNumS*i].mNormal + mVertices[mNumS*i+mNumS-1].mNormal; | ||
4760 | mVertices[mNumS * i].mNormal = norm; | ||
4761 | mVertices[mNumS * i+mNumS-1].mNormal = norm; | ||
4762 | } | ||
4685 | } | 4763 | } |
4686 | 4764 | ||
4687 | // set average | 4765 | |
4688 | for (S32 i = 0; i < mNumS; i++) | 4766 | |
4767 | if (wrap_t) | ||
4689 | { | 4768 | { |
4690 | mVertices[i + mNumS * (mNumT - 1)].mNormal = average; | 4769 | for (S32 i = 0; i < mNumS; i++) |
4770 | { | ||
4771 | LLVector3 norm = mVertices[i].mNormal + mVertices[mNumS*(mNumT-1)+i].mNormal; | ||
4772 | mVertices[i].mNormal = norm; | ||
4773 | mVertices[mNumS*(mNumT-1)+i].mNormal = norm; | ||
4774 | } | ||
4775 | |||
4691 | } | 4776 | } |
4692 | } | ||
4693 | 4777 | ||
4778 | } | ||
4694 | 4779 | ||
4695 | 4780 | ||
4696 | //normalize normals and binormals here so the meshes that reference | 4781 | //normalize normals and binormals here so the meshes that reference |
diff --git a/linden/indra/llmath/llvolume.h b/linden/indra/llmath/llvolume.h index 6ac07f5..3973f70 100644 --- a/linden/indra/llmath/llvolume.h +++ b/linden/indra/llmath/llvolume.h | |||
@@ -174,7 +174,7 @@ const LLFaceID LL_FACE_OUTER_SIDE_3 = 0x1 << 8; | |||
174 | const U8 LL_SCULPT_TYPE_NONE = 0; | 174 | const U8 LL_SCULPT_TYPE_NONE = 0; |
175 | const U8 LL_SCULPT_TYPE_SPHERE = 1; | 175 | const U8 LL_SCULPT_TYPE_SPHERE = 1; |
176 | const U8 LL_SCULPT_TYPE_TORUS = 2; | 176 | const U8 LL_SCULPT_TYPE_TORUS = 2; |
177 | const U8 LL_SCULPT_TYPE_PLAIN = 3; | 177 | const U8 LL_SCULPT_TYPE_PLANE = 3; |
178 | const U8 LL_SCULPT_TYPE_CYLINDER = 4; | 178 | const U8 LL_SCULPT_TYPE_CYLINDER = 4; |
179 | 179 | ||
180 | 180 | ||
@@ -860,9 +860,6 @@ public: | |||
860 | BOOL isUnique() const { return mUnique; } | 860 | BOOL isUnique() const { return mUnique; } |
861 | 861 | ||
862 | S32 getSculptLevel() const { return mSculptLevel; } | 862 | S32 getSculptLevel() const { return mSculptLevel; } |
863 | void setSculptLevel(S32 level) { mSculptLevel = level; } | ||
864 | |||
865 | U8 getSculptType() const { return mSculptType; } | ||
866 | 863 | ||
867 | S32 *getTriangleIndices(U32 &num_indices) const; | 864 | S32 *getTriangleIndices(U32 &num_indices) const; |
868 | void generateSilhouetteVertices(std::vector<LLVector3> &vertices, std::vector<LLVector3> &normals, std::vector<S32> &segments, const LLVector3& view_vec, | 865 | void generateSilhouetteVertices(std::vector<LLVector3> &vertices, std::vector<LLVector3> &normals, std::vector<S32> &segments, const LLVector3& view_vec, |
@@ -908,7 +905,6 @@ protected: | |||
908 | BOOL mUnique; | 905 | BOOL mUnique; |
909 | F32 mDetail; | 906 | F32 mDetail; |
910 | S32 mSculptLevel; | 907 | S32 mSculptLevel; |
911 | U8 mSculptType; | ||
912 | 908 | ||
913 | LLVolumeParams mParams; | 909 | LLVolumeParams mParams; |
914 | LLPath *mPathp; | 910 | LLPath *mPathp; |
diff --git a/linden/indra/llmath/v3color.cpp b/linden/indra/llmath/v3color.cpp index 5464a0b..5378bc5 100644 --- a/linden/indra/llmath/v3color.cpp +++ b/linden/indra/llmath/v3color.cpp | |||
@@ -110,4 +110,4 @@ void LLColor3::calcHSL(F32* hue, F32* saturation, F32* luminance) const | |||
110 | if (hue) *hue = H; | 110 | if (hue) *hue = H; |
111 | if (saturation) *saturation = S; | 111 | if (saturation) *saturation = S; |
112 | if (luminance) *luminance = L; | 112 | if (luminance) *luminance = L; |
113 | } \ No newline at end of file | 113 | } |
diff --git a/linden/indra/llmedia/llmediaengine.cpp b/linden/indra/llmedia/llmediaengine.cpp index 34f63b7..c75ed32 100644 --- a/linden/indra/llmedia/llmediaengine.cpp +++ b/linden/indra/llmedia/llmediaengine.cpp | |||
@@ -26,6 +26,7 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "linden_common.h" | ||
29 | #include "llmediaengine.h" | 30 | #include "llmediaengine.h" |
30 | 31 | ||
31 | #include "indra_constants.h" | 32 | #include "indra_constants.h" |
diff --git a/linden/indra/llmessage/llassetstorage.cpp b/linden/indra/llmessage/llassetstorage.cpp index c8610a7..8696438 100644 --- a/linden/indra/llmessage/llassetstorage.cpp +++ b/linden/indra/llmessage/llassetstorage.cpp | |||
@@ -162,6 +162,8 @@ LLAssetRequest::LLAssetRequest(const LLUUID &uuid, const LLAssetType::EType type | |||
162 | mHost(), | 162 | mHost(), |
163 | mIsTemp( FALSE ), | 163 | mIsTemp( FALSE ), |
164 | mIsLocal(FALSE), | 164 | mIsLocal(FALSE), |
165 | mIsUserWaiting(FALSE), | ||
166 | mTimeout(LL_ASSET_STORAGE_TIMEOUT), | ||
165 | mIsPriority(FALSE), | 167 | mIsPriority(FALSE), |
166 | mDataSentInFirstPacket(FALSE), | 168 | mDataSentInFirstPacket(FALSE), |
167 | mDataIsInVFS( FALSE ) | 169 | mDataIsInVFS( FALSE ) |
@@ -1270,7 +1272,9 @@ void LLAssetStorage::storeAssetData( | |||
1270 | void* user_data, | 1272 | void* user_data, |
1271 | bool temp_file, | 1273 | bool temp_file, |
1272 | bool is_priority, | 1274 | bool is_priority, |
1273 | bool store_local) | 1275 | bool store_local, |
1276 | bool user_waiting, | ||
1277 | F64 timeout) | ||
1274 | { | 1278 | { |
1275 | llwarns << "storeAssetData: wrong version called" << llendl; | 1279 | llwarns << "storeAssetData: wrong version called" << llendl; |
1276 | } | 1280 | } |
@@ -1285,7 +1289,9 @@ void LLAssetStorage::storeAssetData( | |||
1285 | bool temp_file , | 1289 | bool temp_file , |
1286 | bool is_priority, | 1290 | bool is_priority, |
1287 | bool store_local, | 1291 | bool store_local, |
1288 | const LLUUID& requesting_agent_id) | 1292 | const LLUUID& requesting_agent_id, |
1293 | bool user_waiting, | ||
1294 | F64 timeout) | ||
1289 | { | 1295 | { |
1290 | llwarns << "storeAssetData: wrong version called" << llendl; | 1296 | llwarns << "storeAssetData: wrong version called" << llendl; |
1291 | } | 1297 | } |
@@ -1299,7 +1305,9 @@ void LLAssetStorage::storeAssetData( | |||
1299 | LLStoreAssetCallback callback, | 1305 | LLStoreAssetCallback callback, |
1300 | void* user_data, | 1306 | void* user_data, |
1301 | bool temp_file, | 1307 | bool temp_file, |
1302 | bool is_priority) | 1308 | bool is_priority, |
1309 | bool user_waiting, | ||
1310 | F64 timeout) | ||
1303 | { | 1311 | { |
1304 | llwarns << "storeAssetData: wrong version called" << llendl; | 1312 | llwarns << "storeAssetData: wrong version called" << llendl; |
1305 | } | 1313 | } |
@@ -1313,7 +1321,9 @@ void LLAssetStorage::storeAssetData( | |||
1313 | LLStoreAssetCallback callback, | 1321 | LLStoreAssetCallback callback, |
1314 | void* user_data, | 1322 | void* user_data, |
1315 | bool temp_file, | 1323 | bool temp_file, |
1316 | bool is_priority) | 1324 | bool is_priority, |
1325 | bool user_waiting, | ||
1326 | F64 timeout) | ||
1317 | { | 1327 | { |
1318 | llwarns << "storeAssetData: wrong version called" << llendl; | 1328 | llwarns << "storeAssetData: wrong version called" << llendl; |
1319 | } | 1329 | } |
diff --git a/linden/indra/llmessage/llassetstorage.h b/linden/indra/llmessage/llassetstorage.h index f80a77d..ab12b7a 100644 --- a/linden/indra/llmessage/llassetstorage.h +++ b/linden/indra/llmessage/llassetstorage.h | |||
@@ -95,6 +95,7 @@ public: | |||
95 | 95 | ||
96 | void setUUID(const LLUUID& id) { mUUID = id; } | 96 | void setUUID(const LLUUID& id) { mUUID = id; } |
97 | void setType(LLAssetType::EType type) { mType = type; } | 97 | void setType(LLAssetType::EType type) { mType = type; } |
98 | void setTimeout (F64 timeout) { mTimeout = timeout; } | ||
98 | 99 | ||
99 | protected: | 100 | protected: |
100 | LLUUID mUUID; | 101 | LLUUID mUUID; |
@@ -109,7 +110,9 @@ public: | |||
109 | LLHost mHost; | 110 | LLHost mHost; |
110 | BOOL mIsTemp; | 111 | BOOL mIsTemp; |
111 | BOOL mIsLocal; | 112 | BOOL mIsLocal; |
113 | BOOL mIsUserWaiting; // We don't want to try forever if a user is waiting for a result. | ||
112 | F64 mTime; // Message system time | 114 | F64 mTime; // Message system time |
115 | F64 mTimeout; // Amount of time before timing out. | ||
113 | BOOL mIsPriority; | 116 | BOOL mIsPriority; |
114 | BOOL mDataSentInFirstPacket; | 117 | BOOL mDataSentInFirstPacket; |
115 | BOOL mDataIsInVFS; | 118 | BOOL mDataIsInVFS; |
@@ -252,7 +255,9 @@ public: | |||
252 | void* user_data, | 255 | void* user_data, |
253 | bool temp_file = false, | 256 | bool temp_file = false, |
254 | bool is_priority = false, | 257 | bool is_priority = false, |
255 | bool store_local = false); | 258 | bool store_local = false, |
259 | bool user_waiting= false, | ||
260 | F64 timeout=LL_ASSET_STORAGE_TIMEOUT); | ||
256 | 261 | ||
257 | /* | 262 | /* |
258 | * AssetID version | 263 | * AssetID version |
@@ -266,7 +271,9 @@ public: | |||
266 | bool temp_file = false, | 271 | bool temp_file = false, |
267 | bool is_priority = false, | 272 | bool is_priority = false, |
268 | bool store_local = false, | 273 | bool store_local = false, |
269 | const LLUUID& requesting_agent_id = LLUUID::null); | 274 | const LLUUID& requesting_agent_id = LLUUID::null, |
275 | bool user_waiting= false, | ||
276 | F64 timeout=LL_ASSET_STORAGE_TIMEOUT); | ||
270 | 277 | ||
271 | virtual void checkForTimeouts(); | 278 | virtual void checkForTimeouts(); |
272 | 279 | ||
@@ -360,7 +367,9 @@ public: | |||
360 | LLStoreAssetCallback callback, | 367 | LLStoreAssetCallback callback, |
361 | void* user_data, | 368 | void* user_data, |
362 | bool temp_file = false, | 369 | bool temp_file = false, |
363 | bool is_priority = false); | 370 | bool is_priority = false, |
371 | bool user_waiting = false, | ||
372 | F64 timeout = LL_ASSET_STORAGE_TIMEOUT); | ||
364 | 373 | ||
365 | /* | 374 | /* |
366 | * TransactionID version | 375 | * TransactionID version |
@@ -372,7 +381,9 @@ public: | |||
372 | LLStoreAssetCallback callback, | 381 | LLStoreAssetCallback callback, |
373 | void *user_data, | 382 | void *user_data, |
374 | bool temp_file = false, | 383 | bool temp_file = false, |
375 | bool is_priority = false); | 384 | bool is_priority = false, |
385 | bool user_waiting = false, | ||
386 | F64 timeout = LL_ASSET_STORAGE_TIMEOUT); | ||
376 | 387 | ||
377 | static void legacyGetDataCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::EType, void *user_data, S32 status); | 388 | static void legacyGetDataCallback(LLVFS *vfs, const LLUUID &uuid, LLAssetType::EType, void *user_data, S32 status); |
378 | static void legacyStoreDataCallback(const LLUUID &uuid, void *user_data, S32 status); | 389 | static void legacyStoreDataCallback(const LLUUID &uuid, void *user_data, S32 status); |
diff --git a/linden/indra/llmessage/llblowfishcipher.cpp b/linden/indra/llmessage/llblowfishcipher.cpp index 1772078..62464de 100644 --- a/linden/indra/llmessage/llblowfishcipher.cpp +++ b/linden/indra/llmessage/llblowfishcipher.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file llblowcipher.cpp | 2 | * @file llblowfishcipher.cpp |
3 | * @brief Wrapper around OpenSSL Blowfish encryption algorithm. | 3 | * @brief Wrapper around OpenSSL Blowfish encryption algorithm. |
4 | * | 4 | * |
5 | * We do not have OpenSSL headers or libraries on Windows, so this | 5 | * We do not have OpenSSL headers or libraries on Windows, so this |
@@ -85,33 +85,33 @@ U32 LLBlowfishCipher::encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len) | |||
85 | << " iv_len " << iv_length | 85 | << " iv_len " << iv_length |
86 | << llendl; | 86 | << llendl; |
87 | 87 | ||
88 | int output_len = 0; | 88 | int output_len = 0; |
89 | int temp_len = 0; | 89 | int temp_len = 0; |
90 | if (!EVP_EncryptUpdate(&context, | 90 | if (!EVP_EncryptUpdate(&context, |
91 | dst, | 91 | dst, |
92 | &output_len, | 92 | &output_len, |
93 | src, | 93 | src, |
94 | src_len)) | 94 | src_len)) |
95 | { | 95 | { |
96 | llwarns << "LLBlowfishCipher::encrypt EVP_EncryptUpdate failure" << llendl; | 96 | llwarns << "LLBlowfishCipher::encrypt EVP_EncryptUpdate failure" << llendl; |
97 | goto ERROR; | 97 | goto ERROR; |
98 | } | 98 | } |
99 | 99 | ||
100 | // There may be some final data left to encrypt if the input is | 100 | // There may be some final data left to encrypt if the input is |
101 | // not an exact multiple of the block size. | 101 | // not an exact multiple of the block size. |
102 | if (!EVP_EncryptFinal_ex(&context, (unsigned char*)(dst + output_len), &temp_len)) | 102 | if (!EVP_EncryptFinal_ex(&context, (unsigned char*)(dst + output_len), &temp_len)) |
103 | { | 103 | { |
104 | llwarns << "LLBlowfishCipher::encrypt EVP_EncryptFinal failure" << llendl; | 104 | llwarns << "LLBlowfishCipher::encrypt EVP_EncryptFinal failure" << llendl; |
105 | goto ERROR; | 105 | goto ERROR; |
106 | } | 106 | } |
107 | output_len += temp_len; | 107 | output_len += temp_len; |
108 | 108 | ||
109 | EVP_CIPHER_CTX_cleanup(&context); | 109 | EVP_CIPHER_CTX_cleanup(&context); |
110 | return output_len; | 110 | return output_len; |
111 | 111 | ||
112 | ERROR: | 112 | ERROR: |
113 | EVP_CIPHER_CTX_cleanup(&context); | 113 | EVP_CIPHER_CTX_cleanup(&context); |
114 | return 0; | 114 | return 0; |
115 | } | 115 | } |
116 | 116 | ||
117 | // virtual | 117 | // virtual |
diff --git a/linden/indra/llmessage/llcachename.cpp b/linden/indra/llmessage/llcachename.cpp index 2a21b5a..d960429 100644 --- a/linden/indra/llmessage/llcachename.cpp +++ b/linden/indra/llmessage/llcachename.cpp | |||
@@ -66,132 +66,130 @@ LLCacheName* gCacheName = NULL; | |||
66 | /// class LLCacheNameEntry | 66 | /// class LLCacheNameEntry |
67 | /// --------------------------------------------------------------------------- | 67 | /// --------------------------------------------------------------------------- |
68 | 68 | ||
69 | namespace { | 69 | class LLCacheNameEntry |
70 | class LLCacheNameEntry | 70 | { |
71 | { | 71 | public: |
72 | public: | 72 | LLCacheNameEntry(); |
73 | LLCacheNameEntry(); | ||
74 | 73 | ||
75 | public: | 74 | public: |
76 | bool mIsGroup; | 75 | bool mIsGroup; |
77 | U32 mCreateTime; // unix time_t | 76 | U32 mCreateTime; // unix time_t |
78 | char mFirstName[DB_FIRST_NAME_BUF_SIZE]; /*Flawfinder: ignore*/ | 77 | char mFirstName[DB_FIRST_NAME_BUF_SIZE]; /*Flawfinder: ignore*/ |
79 | char mLastName[DB_LAST_NAME_BUF_SIZE]; /*Flawfinder: ignore*/ | 78 | char mLastName[DB_LAST_NAME_BUF_SIZE]; /*Flawfinder: ignore*/ |
80 | char mGroupName[DB_GROUP_NAME_BUF_SIZE]; /*Flawfinder: ignore*/ | 79 | char mGroupName[DB_GROUP_NAME_BUF_SIZE]; /*Flawfinder: ignore*/ |
81 | }; | 80 | }; |
82 | 81 | ||
83 | LLCacheNameEntry::LLCacheNameEntry() | 82 | LLCacheNameEntry::LLCacheNameEntry() |
84 | { | 83 | { |
85 | mFirstName[0] = '\0'; | 84 | mFirstName[0] = '\0'; |
86 | mLastName[0] = '\0'; | 85 | mLastName[0] = '\0'; |
87 | mGroupName[0] = '\0'; | 86 | mGroupName[0] = '\0'; |
88 | } | 87 | } |
89 | 88 | ||
90 | 89 | ||
91 | class PendingReply | 90 | class PendingReply |
92 | { | 91 | { |
93 | public: | 92 | public: |
94 | LLUUID mID; | 93 | LLUUID mID; |
95 | LLCacheNameCallback mCallback; | 94 | LLCacheNameCallback mCallback; |
96 | LLHost mHost; | 95 | LLHost mHost; |
97 | void* mData; | 96 | void* mData; |
98 | PendingReply(const LLUUID& id, LLCacheNameCallback callback, void* data = NULL) | 97 | PendingReply(const LLUUID& id, LLCacheNameCallback callback, void* data = NULL) |
99 | : mID(id), mCallback(callback), mData(data) | 98 | : mID(id), mCallback(callback), mData(data) |
100 | { } | 99 | { } |
101 | 100 | ||
102 | PendingReply(const LLUUID& id, const LLHost& host) | 101 | PendingReply(const LLUUID& id, const LLHost& host) |
103 | : mID(id), mCallback(0), mHost(host) | 102 | : mID(id), mCallback(0), mHost(host) |
104 | { } | 103 | { } |
105 | 104 | ||
106 | void done() { mID.setNull(); } | 105 | void done() { mID.setNull(); } |
107 | bool isDone() const { return mID.isNull() != FALSE; } | 106 | bool isDone() const { return mID.isNull() != FALSE; } |
108 | }; | 107 | }; |
109 | 108 | ||
110 | class ReplySender | 109 | class ReplySender |
111 | { | 110 | { |
112 | public: | 111 | public: |
113 | ReplySender(LLMessageSystem* msg); | 112 | ReplySender(LLMessageSystem* msg); |
114 | ~ReplySender(); | 113 | ~ReplySender(); |
115 | 114 | ||
116 | void send(const LLUUID& id, | 115 | void send(const LLUUID& id, |
117 | const LLCacheNameEntry& entry, const LLHost& host); | 116 | const LLCacheNameEntry& entry, const LLHost& host); |
118 | 117 | ||
119 | private: | 118 | private: |
120 | void flush(); | 119 | void flush(); |
121 | 120 | ||
122 | LLMessageSystem* mMsg; | 121 | LLMessageSystem* mMsg; |
123 | bool mPending; | 122 | bool mPending; |
124 | bool mCurrIsGroup; | 123 | bool mCurrIsGroup; |
125 | LLHost mCurrHost; | 124 | LLHost mCurrHost; |
126 | }; | 125 | }; |
127 | 126 | ||
128 | ReplySender::ReplySender(LLMessageSystem* msg) | 127 | ReplySender::ReplySender(LLMessageSystem* msg) |
129 | : mMsg(msg), mPending(false) | 128 | : mMsg(msg), mPending(false) |
130 | { } | 129 | { } |
131 | 130 | ||
132 | ReplySender::~ReplySender() | 131 | ReplySender::~ReplySender() |
133 | { | 132 | { |
134 | flush(); | 133 | flush(); |
135 | } | 134 | } |
136 | 135 | ||
137 | void ReplySender::send(const LLUUID& id, | 136 | void ReplySender::send(const LLUUID& id, |
138 | const LLCacheNameEntry& entry, const LLHost& host) | 137 | const LLCacheNameEntry& entry, const LLHost& host) |
138 | { | ||
139 | if (mPending) | ||
139 | { | 140 | { |
140 | if (mPending) | 141 | if (mCurrIsGroup != entry.mIsGroup |
142 | || mCurrHost != host) | ||
141 | { | 143 | { |
142 | if (mCurrIsGroup != entry.mIsGroup | 144 | flush(); |
143 | || mCurrHost != host) | ||
144 | { | ||
145 | flush(); | ||
146 | } | ||
147 | } | 145 | } |
146 | } | ||
148 | 147 | ||
149 | if (!mPending) | 148 | if (!mPending) |
150 | { | 149 | { |
151 | mPending = true; | 150 | mPending = true; |
152 | mCurrIsGroup = entry.mIsGroup; | 151 | mCurrIsGroup = entry.mIsGroup; |
153 | mCurrHost = host; | 152 | mCurrHost = host; |
154 | |||
155 | if(mCurrIsGroup) | ||
156 | mMsg->newMessageFast(_PREHASH_UUIDGroupNameReply); | ||
157 | else | ||
158 | mMsg->newMessageFast(_PREHASH_UUIDNameReply); | ||
159 | } | ||
160 | 153 | ||
161 | mMsg->nextBlockFast(_PREHASH_UUIDNameBlock); | ||
162 | mMsg->addUUIDFast(_PREHASH_ID, id); | ||
163 | if(mCurrIsGroup) | 154 | if(mCurrIsGroup) |
164 | { | 155 | mMsg->newMessageFast(_PREHASH_UUIDGroupNameReply); |
165 | mMsg->addStringFast(_PREHASH_GroupName, entry.mGroupName); | ||
166 | } | ||
167 | else | 156 | else |
168 | { | 157 | mMsg->newMessageFast(_PREHASH_UUIDNameReply); |
169 | mMsg->addStringFast(_PREHASH_FirstName, entry.mFirstName); | 158 | } |
170 | mMsg->addStringFast(_PREHASH_LastName, entry.mLastName); | ||
171 | } | ||
172 | 159 | ||
173 | if(mMsg->isSendFullFast(_PREHASH_UUIDNameBlock)) | 160 | mMsg->nextBlockFast(_PREHASH_UUIDNameBlock); |
174 | { | 161 | mMsg->addUUIDFast(_PREHASH_ID, id); |
175 | flush(); | 162 | if(mCurrIsGroup) |
176 | } | 163 | { |
164 | mMsg->addStringFast(_PREHASH_GroupName, entry.mGroupName); | ||
165 | } | ||
166 | else | ||
167 | { | ||
168 | mMsg->addStringFast(_PREHASH_FirstName, entry.mFirstName); | ||
169 | mMsg->addStringFast(_PREHASH_LastName, entry.mLastName); | ||
177 | } | 170 | } |
178 | 171 | ||
179 | void ReplySender::flush() | 172 | if(mMsg->isSendFullFast(_PREHASH_UUIDNameBlock)) |
180 | { | 173 | { |
181 | if (mPending) | 174 | flush(); |
182 | { | ||
183 | mMsg->sendReliable(mCurrHost); | ||
184 | mPending = false; | ||
185 | } | ||
186 | } | 175 | } |
176 | } | ||
187 | 177 | ||
178 | void ReplySender::flush() | ||
179 | { | ||
180 | if (mPending) | ||
181 | { | ||
182 | mMsg->sendReliable(mCurrHost); | ||
183 | mPending = false; | ||
184 | } | ||
185 | } | ||
188 | 186 | ||
189 | typedef std::set<LLUUID> AskQueue; | 187 | |
190 | typedef std::vector<PendingReply> ReplyQueue; | 188 | typedef std::set<LLUUID> AskQueue; |
191 | typedef std::map<LLUUID,U32> PendingQueue; | 189 | typedef std::vector<PendingReply> ReplyQueue; |
192 | typedef std::map<LLUUID, LLCacheNameEntry*> Cache; | 190 | typedef std::map<LLUUID,U32> PendingQueue; |
193 | typedef std::vector<LLCacheNameCallback> Observers; | 191 | typedef std::map<LLUUID, LLCacheNameEntry*> Cache; |
194 | }; | 192 | typedef std::vector<LLCacheNameCallback> Observers; |
195 | 193 | ||
196 | class LLCacheName::Impl | 194 | class LLCacheName::Impl |
197 | { | 195 | { |
diff --git a/linden/indra/llmessage/llcurl.cpp b/linden/indra/llmessage/llcurl.cpp index 5eaaab0..362204a 100644 --- a/linden/indra/llmessage/llcurl.cpp +++ b/linden/indra/llmessage/llcurl.cpp | |||
@@ -28,6 +28,8 @@ | |||
28 | * COMPLETENESS OR PERFORMANCE. | 28 | * COMPLETENESS OR PERFORMANCE. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include "linden_common.h" | ||
32 | |||
31 | #include "llcurl.h" | 33 | #include "llcurl.h" |
32 | 34 | ||
33 | #include <iomanip> | 35 | #include <iomanip> |
diff --git a/linden/indra/llmessage/llhttpassetstorage.cpp b/linden/indra/llmessage/llhttpassetstorage.cpp index 5a0cdad..d83349b 100644 --- a/linden/indra/llmessage/llhttpassetstorage.cpp +++ b/linden/indra/llmessage/llhttpassetstorage.cpp | |||
@@ -428,14 +428,18 @@ void LLHTTPAssetStorage::storeAssetData( | |||
428 | bool temp_file, | 428 | bool temp_file, |
429 | bool is_priority, | 429 | bool is_priority, |
430 | bool store_local, | 430 | bool store_local, |
431 | const LLUUID& requesting_agent_id) | 431 | const LLUUID& requesting_agent_id, |
432 | bool user_waiting, | ||
433 | F64 timeout) | ||
432 | { | 434 | { |
433 | if (mVFS->getExists(uuid, type)) | 435 | if (mVFS->getExists(uuid, type)) |
434 | { | 436 | { |
435 | LLAssetRequest *req = new LLAssetRequest(uuid, type); | 437 | LLAssetRequest *req = new LLAssetRequest(uuid, type); |
436 | req->mUpCallback = callback; | 438 | req->mUpCallback = callback; |
437 | req->mUserData = user_data; | 439 | req->mUserData = user_data; |
438 | req->mRequestingAgentID = requesting_agent_id; | 440 | req->mRequestingAgentID = requesting_agent_id; |
441 | req->mIsUserWaiting = user_waiting; | ||
442 | req->mTimeout = timeout; | ||
439 | 443 | ||
440 | // this will get picked up and transmitted in checkForTimeouts | 444 | // this will get picked up and transmitted in checkForTimeouts |
441 | if(store_local) | 445 | if(store_local) |
@@ -469,7 +473,9 @@ void LLHTTPAssetStorage::storeAssetData( | |||
469 | LLStoreAssetCallback callback, | 473 | LLStoreAssetCallback callback, |
470 | void* user_data, | 474 | void* user_data, |
471 | bool temp_file, | 475 | bool temp_file, |
472 | bool is_priority) | 476 | bool is_priority, |
477 | bool user_waiting, | ||
478 | F64 timeout) | ||
473 | { | 479 | { |
474 | llinfos << "LLAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl; | 480 | llinfos << "LLAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl; |
475 | 481 | ||
@@ -509,7 +515,11 @@ void LLHTTPAssetStorage::storeAssetData( | |||
509 | legacyStoreDataCallback, | 515 | legacyStoreDataCallback, |
510 | (void**)legacy, | 516 | (void**)legacy, |
511 | temp_file, | 517 | temp_file, |
512 | is_priority); | 518 | is_priority, |
519 | false, | ||
520 | LLUUID::null, | ||
521 | user_waiting, | ||
522 | timeout); | ||
513 | } | 523 | } |
514 | else | 524 | else |
515 | { | 525 | { |
@@ -608,7 +618,19 @@ bool LLHTTPAssetStorage::deletePendingRequest(LLAssetStorage::ERequestType rt, | |||
608 | // This request was found in the pending list. Move it to the end! | 618 | // This request was found in the pending list. Move it to the end! |
609 | LLAssetRequest* pending_req = *result; | 619 | LLAssetRequest* pending_req = *result; |
610 | pending->remove(pending_req); | 620 | pending->remove(pending_req); |
611 | pending->push_back(pending_req); | 621 | |
622 | if (!pending_req->mIsUserWaiting) //A user is waiting on this request. Toss it. | ||
623 | { | ||
624 | pending->push_back(pending_req); | ||
625 | } | ||
626 | else | ||
627 | { | ||
628 | if (pending_req->mUpCallback) //Clean up here rather than _callUploadCallbacks because this request is already cleared the req. | ||
629 | { | ||
630 | pending_req->mUpCallback(pending_req->getUUID(), pending_req->mUserData, -1); | ||
631 | } | ||
632 | |||
633 | } | ||
612 | 634 | ||
613 | llinfos << "Asset " << getRequestName(rt) << " request for " | 635 | llinfos << "Asset " << getRequestName(rt) << " request for " |
614 | << asset_id << "." << LLAssetType::lookup(asset_type) | 636 | << asset_id << "." << LLAssetType::lookup(asset_type) |
@@ -744,6 +766,14 @@ void LLHTTPAssetStorage::checkForTimeouts() | |||
744 | 766 | ||
745 | LLHTTPAssetRequest *new_req = new LLHTTPAssetRequest(this, req->getUUID(), | 767 | LLHTTPAssetRequest *new_req = new LLHTTPAssetRequest(this, req->getUUID(), |
746 | req->getType(), RT_UPLOAD, tmp_url, mCurlMultiHandle); | 768 | req->getType(), RT_UPLOAD, tmp_url, mCurlMultiHandle); |
769 | |||
770 | if (req->mIsUserWaiting) //If a user is waiting on a realtime response, we want to perserve information across upload attempts. | ||
771 | { | ||
772 | new_req->mTime = req->mTime; | ||
773 | new_req->mTimeout = req->mTimeout; | ||
774 | new_req->mIsUserWaiting = req->mIsUserWaiting; | ||
775 | } | ||
776 | |||
747 | if (do_compress) | 777 | if (do_compress) |
748 | { | 778 | { |
749 | new_req->prepareCompressedUpload(); | 779 | new_req->prepareCompressedUpload(); |
@@ -839,11 +869,12 @@ void LLHTTPAssetStorage::checkForTimeouts() | |||
839 | if (curl_msg && curl_msg->msg == CURLMSG_DONE) | 869 | if (curl_msg && curl_msg->msg == CURLMSG_DONE) |
840 | { | 870 | { |
841 | long curl_result = 0; | 871 | long curl_result = 0; |
842 | S32 xfer_result = 0; | 872 | S32 xfer_result = LL_ERR_NOERR; |
843 | 873 | ||
844 | LLHTTPAssetRequest *req = NULL; | 874 | LLHTTPAssetRequest *req = NULL; |
845 | curl_easy_getinfo(curl_msg->easy_handle, CURLINFO_PRIVATE, &req); | 875 | curl_easy_getinfo(curl_msg->easy_handle, CURLINFO_PRIVATE, &req); |
846 | 876 | ||
877 | // TODO: Throw curl_result at all callbacks. | ||
847 | curl_easy_getinfo(curl_msg->easy_handle, CURLINFO_HTTP_CODE, &curl_result); | 878 | curl_easy_getinfo(curl_msg->easy_handle, CURLINFO_HTTP_CODE, &curl_result); |
848 | if (RT_UPLOAD == req->mRequestType || RT_LOCALUPLOAD == req->mRequestType) | 879 | if (RT_UPLOAD == req->mRequestType || RT_LOCALUPLOAD == req->mRequestType) |
849 | { | 880 | { |
@@ -865,6 +896,12 @@ void LLHTTPAssetStorage::checkForTimeouts() | |||
865 | { | 896 | { |
866 | llwarns << "Re-requesting upload for " << req->getUUID() << ". Received upload error to " << req->mURLBuffer << | 897 | llwarns << "Re-requesting upload for " << req->getUUID() << ". Received upload error to " << req->mURLBuffer << |
867 | " with result " << curl_easy_strerror(curl_msg->data.result) << ", http result " << curl_result << llendl; | 898 | " with result " << curl_easy_strerror(curl_msg->data.result) << ", http result " << curl_result << llendl; |
899 | |||
900 | ////HACK (probably) I am sick of this getting requeued and driving me mad. | ||
901 | //if (req->mIsUserWaiting) | ||
902 | //{ | ||
903 | // deletePendingRequest(RT_UPLOAD, req->getType(), req->getUUID()); | ||
904 | //} | ||
868 | } | 905 | } |
869 | else | 906 | else |
870 | { | 907 | { |
@@ -949,14 +986,23 @@ void LLHTTPAssetStorage::checkForTimeouts() | |||
949 | 986 | ||
950 | void LLHTTPAssetStorage::bumpTimedOutUploads() | 987 | void LLHTTPAssetStorage::bumpTimedOutUploads() |
951 | { | 988 | { |
989 | bool user_waiting=FALSE; | ||
990 | |||
991 | F64 mt_secs = LLMessageSystem::getMessageTimeSeconds(); | ||
992 | |||
993 | if (mPendingUploads.size()) | ||
994 | { | ||
995 | request_list_t::iterator it = mPendingUploads.begin(); | ||
996 | LLAssetRequest* req = *it; | ||
997 | user_waiting=req->mIsUserWaiting; | ||
998 | } | ||
999 | |||
952 | // No point bumping currently running uploads if there are no others in line. | 1000 | // No point bumping currently running uploads if there are no others in line. |
953 | if (!(mPendingUploads.size() > mRunningUploads.size())) | 1001 | if (!(mPendingUploads.size() > mRunningUploads.size()) && !user_waiting) |
954 | { | 1002 | { |
955 | return; | 1003 | return; |
956 | } | 1004 | } |
957 | 1005 | ||
958 | F64 mt_secs = LLMessageSystem::getMessageTimeSeconds(); | ||
959 | |||
960 | // deletePendingRequest will modify the mRunningUploads list so we don't want to iterate over it. | 1006 | // deletePendingRequest will modify the mRunningUploads list so we don't want to iterate over it. |
961 | request_list_t temp_running = mRunningUploads; | 1007 | request_list_t temp_running = mRunningUploads; |
962 | 1008 | ||
@@ -967,7 +1013,7 @@ void LLHTTPAssetStorage::bumpTimedOutUploads() | |||
967 | //request_list_t::iterator curiter = iter++; | 1013 | //request_list_t::iterator curiter = iter++; |
968 | LLAssetRequest* req = *it; | 1014 | LLAssetRequest* req = *it; |
969 | 1015 | ||
970 | if ( LL_ASSET_STORAGE_TIMEOUT < (mt_secs - req->mTime) ) | 1016 | if ( req->mTimeout < (mt_secs - req->mTime) ) |
971 | { | 1017 | { |
972 | llwarns << "Asset upload request timed out for " | 1018 | llwarns << "Asset upload request timed out for " |
973 | << req->getUUID() << "." | 1019 | << req->getUUID() << "." |
diff --git a/linden/indra/llmessage/llhttpassetstorage.h b/linden/indra/llmessage/llhttpassetstorage.h index 2977301..962bece 100644 --- a/linden/indra/llmessage/llhttpassetstorage.h +++ b/linden/indra/llmessage/llhttpassetstorage.h | |||
@@ -66,7 +66,9 @@ public: | |||
66 | bool temp_file = false, | 66 | bool temp_file = false, |
67 | bool is_priority = false, | 67 | bool is_priority = false, |
68 | bool store_local = false, | 68 | bool store_local = false, |
69 | const LLUUID& requesting_agent_id = LLUUID::null); | 69 | const LLUUID& requesting_agent_id = LLUUID::null, |
70 | bool user_waiting=FALSE, | ||
71 | F64 timeout=LL_ASSET_STORAGE_TIMEOUT); | ||
70 | 72 | ||
71 | virtual void storeAssetData( | 73 | virtual void storeAssetData( |
72 | const char* filename, | 74 | const char* filename, |
@@ -75,7 +77,9 @@ public: | |||
75 | LLStoreAssetCallback callback, | 77 | LLStoreAssetCallback callback, |
76 | void* user_data, | 78 | void* user_data, |
77 | bool temp_file, | 79 | bool temp_file, |
78 | bool is_priority); | 80 | bool is_priority, |
81 | bool user_waiting=FALSE, | ||
82 | F64 timeout=LL_ASSET_STORAGE_TIMEOUT); | ||
79 | 83 | ||
80 | virtual LLSD getPendingDetails(ERequestType rt, | 84 | virtual LLSD getPendingDetails(ERequestType rt, |
81 | LLAssetType::EType asset_type, | 85 | LLAssetType::EType asset_type, |
diff --git a/linden/indra/llmessage/llhttpnode.cpp b/linden/indra/llmessage/llhttpnode.cpp index 97064a1..25413b4 100644 --- a/linden/indra/llmessage/llhttpnode.cpp +++ b/linden/indra/llmessage/llhttpnode.cpp | |||
@@ -29,7 +29,7 @@ | |||
29 | #include "linden_common.h" | 29 | #include "linden_common.h" |
30 | #include "llhttpnode.h" | 30 | #include "llhttpnode.h" |
31 | 31 | ||
32 | #include "boost/tokenizer.hpp" | 32 | #include <boost/tokenizer.hpp> |
33 | 33 | ||
34 | #include "llstl.h" | 34 | #include "llstl.h" |
35 | 35 | ||
diff --git a/linden/indra/llmessage/lliohttpserver.cpp b/linden/indra/llmessage/lliohttpserver.cpp index d7fc54e..5c96102 100644 --- a/linden/indra/llmessage/lliohttpserver.cpp +++ b/linden/indra/llmessage/lliohttpserver.cpp | |||
@@ -49,7 +49,7 @@ | |||
49 | 49 | ||
50 | #include <sstream> | 50 | #include <sstream> |
51 | 51 | ||
52 | #include "boost/tokenizer.hpp" | 52 | #include <boost/tokenizer.hpp> |
53 | 53 | ||
54 | static const char HTTP_VERSION_STR[] = "HTTP/1.0"; | 54 | static const char HTTP_VERSION_STR[] = "HTTP/1.0"; |
55 | static const std::string CONTEXT_REQUEST("request"); | 55 | static const std::string CONTEXT_REQUEST("request"); |
diff --git a/linden/indra/llmessage/lliosocket.cpp b/linden/indra/llmessage/lliosocket.cpp index 0ceb436..8bc347c 100644 --- a/linden/indra/llmessage/lliosocket.cpp +++ b/linden/indra/llmessage/lliosocket.cpp | |||
@@ -441,6 +441,8 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl( | |||
441 | #if LL_WINDOWS | 441 | #if LL_WINDOWS |
442 | if (status == 730035) | 442 | if (status == 730035) |
443 | break; | 443 | break; |
444 | #else | ||
445 | (void) status; | ||
444 | #endif | 446 | #endif |
445 | mLastWritten = segment.data() + len - 1; | 447 | mLastWritten = segment.data() + len - 1; |
446 | 448 | ||
diff --git a/linden/indra/llmessage/llmessagethrottle.cpp b/linden/indra/llmessage/llmessagethrottle.cpp index 07c22a5..bbaa9d8 100644 --- a/linden/indra/llmessage/llmessagethrottle.cpp +++ b/linden/indra/llmessage/llmessagethrottle.cpp | |||
@@ -26,6 +26,8 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "linden_common.h" | ||
30 | |||
29 | #include "llhash.h" | 31 | #include "llhash.h" |
30 | 32 | ||
31 | #include "llmessagethrottle.h" | 33 | #include "llmessagethrottle.h" |
diff --git a/linden/indra/llmessage/llservicebuilder.cpp b/linden/indra/llmessage/llservicebuilder.cpp index 86b7d9d..91040c0 100644 --- a/linden/indra/llmessage/llservicebuilder.cpp +++ b/linden/indra/llmessage/llservicebuilder.cpp | |||
@@ -26,6 +26,7 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "linden_common.h" | ||
29 | #include "llapp.h" | 30 | #include "llapp.h" |
30 | #include "llfile.h" | 31 | #include "llfile.h" |
31 | #include "llservicebuilder.h" | 32 | #include "llservicebuilder.h" |
diff --git a/linden/indra/llmessage/lltemplatemessagereader.cpp b/linden/indra/llmessage/lltemplatemessagereader.cpp index 892efb8..bb3f4f4 100644 --- a/linden/indra/llmessage/lltemplatemessagereader.cpp +++ b/linden/indra/llmessage/lltemplatemessagereader.cpp | |||
@@ -594,7 +594,7 @@ BOOL LLTemplateMessageReader::decodeData(const U8* buffer, const LLHost& sender | |||
594 | tsize = tsizeh; | 594 | tsize = tsizeh; |
595 | break; | 595 | break; |
596 | case 4: | 596 | case 4: |
597 | htonmemcpy(&tsizeb, &buffer[decode_pos], MVT_U32, 4); | 597 | htonmemcpy(&tsize, &buffer[decode_pos], MVT_U32, 4); |
598 | break; | 598 | break; |
599 | default: | 599 | default: |
600 | llerrs << "Attempting to read variable field with unknown size of " << data_size << llendl; | 600 | llerrs << "Attempting to read variable field with unknown size of " << data_size << llendl; |
diff --git a/linden/indra/llmessage/message.cpp b/linden/indra/llmessage/message.cpp index ab41cca..d1c2875 100644 --- a/linden/indra/llmessage/message.cpp +++ b/linden/indra/llmessage/message.cpp | |||
@@ -1341,7 +1341,7 @@ LLMessageSystem::~LLMessageSystem() | |||
1341 | 1341 | ||
1342 | if (!mbError) | 1342 | if (!mbError) |
1343 | { | 1343 | { |
1344 | end_net(); | 1344 | end_net(mSocket); |
1345 | } | 1345 | } |
1346 | 1346 | ||
1347 | delete mTemplateMessageReader; | 1347 | delete mTemplateMessageReader; |
@@ -1355,6 +1355,9 @@ LLMessageSystem::~LLMessageSystem() | |||
1355 | delete mLLSDMessageReader; | 1355 | delete mLLSDMessageReader; |
1356 | mLLSDMessageReader = NULL; | 1356 | mLLSDMessageReader = NULL; |
1357 | 1357 | ||
1358 | delete mLLSDMessageBuilder; | ||
1359 | mLLSDMessageBuilder = NULL; | ||
1360 | |||
1358 | delete mPollInfop; | 1361 | delete mPollInfop; |
1359 | mPollInfop = NULL; | 1362 | mPollInfop = NULL; |
1360 | 1363 | ||
@@ -4164,11 +4167,13 @@ void LLMessageSystem::dumpPacketToLog() | |||
4164 | char line_buffer[256]; /* Flawfinder: ignore */ | 4167 | char line_buffer[256]; /* Flawfinder: ignore */ |
4165 | S32 i; | 4168 | S32 i; |
4166 | S32 cur_line_pos = 0; | 4169 | S32 cur_line_pos = 0; |
4167 | |||
4168 | S32 cur_line = 0; | 4170 | S32 cur_line = 0; |
4171 | |||
4169 | for (i = 0; i < mTrueReceiveSize; i++) | 4172 | for (i = 0; i < mTrueReceiveSize; i++) |
4170 | { | 4173 | { |
4171 | snprintf(line_buffer + cur_line_pos*3, sizeof(line_buffer),"%02x ", mTrueReceiveBuffer[i]); /* Flawfinder: ignore */ | 4174 | S32 offset = cur_line_pos * 3; |
4175 | snprintf(line_buffer + offset, sizeof(line_buffer) - offset, | ||
4176 | "%02x ", mTrueReceiveBuffer[i]); /* Flawfinder: ignore */ | ||
4172 | cur_line_pos++; | 4177 | cur_line_pos++; |
4173 | if (cur_line_pos >= 16) | 4178 | if (cur_line_pos >= 16) |
4174 | { | 4179 | { |
@@ -4345,11 +4350,6 @@ std::string get_shared_secret() | |||
4345 | 4350 | ||
4346 | typedef std::map<const char*, LLMessageBuilder*> BuilderMap; | 4351 | typedef std::map<const char*, LLMessageBuilder*> BuilderMap; |
4347 | 4352 | ||
4348 | static void setBuilder(BuilderMap& map, const char* name, LLMessageBuilder* builder) | ||
4349 | { | ||
4350 | map[gMessageStringTable.getString(name)] = builder; | ||
4351 | } | ||
4352 | |||
4353 | void LLMessageSystem::newMessageFast(const char *name) | 4353 | void LLMessageSystem::newMessageFast(const char *name) |
4354 | { | 4354 | { |
4355 | if(LLMessageConfig::isMessageBuiltTemplate(name)) | 4355 | if(LLMessageConfig::isMessageBuiltTemplate(name)) |
diff --git a/linden/indra/llmessage/net.cpp b/linden/indra/llmessage/net.cpp index c61f4a2..1395093 100644 --- a/linden/indra/llmessage/net.cpp +++ b/linden/indra/llmessage/net.cpp | |||
@@ -289,8 +289,12 @@ S32 start_net(S32& socket_out, int& nPort) | |||
289 | return 0; | 289 | return 0; |
290 | } | 290 | } |
291 | 291 | ||
292 | void end_net() | 292 | void end_net(S32& socket_out) |
293 | { | 293 | { |
294 | if (socket_out < 0) | ||
295 | { | ||
296 | closesocket(socket_out); | ||
297 | } | ||
294 | WSACleanup(); | 298 | WSACleanup(); |
295 | } | 299 | } |
296 | 300 | ||
@@ -457,8 +461,12 @@ S32 start_net(S32& socket_out, int& nPort) | |||
457 | return 0; | 461 | return 0; |
458 | } | 462 | } |
459 | 463 | ||
460 | void end_net() | 464 | void end_net(S32& socket_out) |
461 | { | 465 | { |
466 | if (socket_out < 0) | ||
467 | { | ||
468 | close(socket_out); | ||
469 | } | ||
462 | } | 470 | } |
463 | 471 | ||
464 | int receive_packet(int hSocket, char * receiveBuffer) | 472 | int receive_packet(int hSocket, char * receiveBuffer) |
diff --git a/linden/indra/llmessage/net.h b/linden/indra/llmessage/net.h index b2f931f..cfc1f88 100644 --- a/linden/indra/llmessage/net.h +++ b/linden/indra/llmessage/net.h | |||
@@ -40,7 +40,7 @@ class LLHost; | |||
40 | // Returns 0 on success, non-zero on error. | 40 | // Returns 0 on success, non-zero on error. |
41 | // Sets socket handler/descriptor, changes nPort if port requested is unavailable. | 41 | // Sets socket handler/descriptor, changes nPort if port requested is unavailable. |
42 | S32 start_net(S32& socket_out, int& nPort); | 42 | S32 start_net(S32& socket_out, int& nPort); |
43 | void end_net(); | 43 | void end_net(S32& socket_out); |
44 | 44 | ||
45 | // returns size of packet or -1 in case of error | 45 | // returns size of packet or -1 in case of error |
46 | S32 receive_packet(int hSocket, char * receiveBuffer); | 46 | S32 receive_packet(int hSocket, char * receiveBuffer); |
diff --git a/linden/indra/llrender/llvertexbuffer.cpp b/linden/indra/llrender/llvertexbuffer.cpp index 45d706f..7f24313 100644 --- a/linden/indra/llrender/llvertexbuffer.cpp +++ b/linden/indra/llrender/llvertexbuffer.cpp | |||
@@ -164,56 +164,6 @@ void LLVertexBuffer::clientCopy(F64 max_time) | |||
164 | 164 | ||
165 | //---------------------------------------------------------------------------- | 165 | //---------------------------------------------------------------------------- |
166 | 166 | ||
167 | // For debugging | ||
168 | struct VTNC /// Simple | ||
169 | { | ||
170 | F32 v1,v2,v3; | ||
171 | F32 n1,n2,n3; | ||
172 | F32 t1,t2; | ||
173 | U32 c; | ||
174 | }; | ||
175 | static VTNC dbg_vtnc; | ||
176 | |||
177 | struct VTUNCB // Simple + Bump | ||
178 | { | ||
179 | F32 v1,v2,v3; | ||
180 | F32 n1,n2,n3; | ||
181 | F32 t1,t2; | ||
182 | F32 u1,u2; | ||
183 | F32 b1,b2,b3; | ||
184 | U32 c; | ||
185 | }; | ||
186 | static VTUNCB dbg_vtuncb; | ||
187 | |||
188 | struct VTUNC // Surfacepatch | ||
189 | { | ||
190 | F32 v1,v2,v3; | ||
191 | F32 n1,n2,n3; | ||
192 | F32 t1,t2; | ||
193 | F32 u1,u2; | ||
194 | U32 c; | ||
195 | }; | ||
196 | static VTUNC dbg_vtunc; | ||
197 | |||
198 | struct VTNW /// Avatar | ||
199 | { | ||
200 | F32 v1,v2,v3; | ||
201 | F32 n1,n2,n3; | ||
202 | F32 t1,t2; | ||
203 | F32 w; | ||
204 | }; | ||
205 | static VTNW dbg_vtnw; | ||
206 | |||
207 | struct VTNPAD /// Avatar Output | ||
208 | { | ||
209 | F32 v1,v2,v3,p1; | ||
210 | F32 n1,n2,n3,p2; | ||
211 | F32 t1,t2,p3,p4; | ||
212 | }; | ||
213 | static VTNPAD dbg_vtnpad; | ||
214 | |||
215 | //---------------------------------------------------------------------------- | ||
216 | |||
217 | LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) : | 167 | LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) : |
218 | LLRefCount(), | 168 | LLRefCount(), |
219 | mNumVerts(0), mNumIndices(0), mUsage(usage), mGLBuffer(0), mGLIndices(0), | 169 | mNumVerts(0), mNumIndices(0), mUsage(usage), mGLBuffer(0), mGLIndices(0), |
diff --git a/linden/indra/llui/llalertdialog.h b/linden/indra/llui/llalertdialog.h index d389236..1add4a4 100644 --- a/linden/indra/llui/llalertdialog.h +++ b/linden/indra/llui/llalertdialog.h | |||
@@ -162,6 +162,15 @@ public: | |||
162 | return FALSE; | 162 | return FALSE; |
163 | } | 163 | } |
164 | } | 164 | } |
165 | |||
166 | void setIgnore(bool state) | ||
167 | { | ||
168 | if (mIgnorable) | ||
169 | { | ||
170 | LLAlertDialog::sSettings->setWarning(mIgnoreLabel, !state); | ||
171 | } | ||
172 | } | ||
173 | |||
165 | 174 | ||
166 | public: | 175 | public: |
167 | LLString mLabel; // Handle for access from code, etc | 176 | LLString mLabel; // Handle for access from code, etc |
diff --git a/linden/indra/llui/llcombobox.cpp b/linden/indra/llui/llcombobox.cpp index e00454a..27df619 100644 --- a/linden/indra/llui/llcombobox.cpp +++ b/linden/indra/llui/llcombobox.cpp | |||
@@ -66,8 +66,8 @@ LLComboBox::LLComboBox( const LLString& name, const LLRect &rect, const LLString | |||
66 | mAllowTextEntry(FALSE), | 66 | mAllowTextEntry(FALSE), |
67 | mMaxChars(20), | 67 | mMaxChars(20), |
68 | mTextEntryTentative(TRUE), | 68 | mTextEntryTentative(TRUE), |
69 | mPrearrangeCallback( NULL ), | ||
70 | mListPosition(BELOW), | 69 | mListPosition(BELOW), |
70 | mPrearrangeCallback( NULL ), | ||
71 | mTextEntryCallback( NULL ) | 71 | mTextEntryCallback( NULL ) |
72 | { | 72 | { |
73 | // For now, all comboboxes don't take keyboard focus when clicked. | 73 | // For now, all comboboxes don't take keyboard focus when clicked. |
diff --git a/linden/indra/llui/llctrlselectioninterface.cpp b/linden/indra/llui/llctrlselectioninterface.cpp index 3b71942..d3b83a2 100644 --- a/linden/indra/llui/llctrlselectioninterface.cpp +++ b/linden/indra/llui/llctrlselectioninterface.cpp | |||
@@ -25,6 +25,7 @@ | |||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | 25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, |
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | #include "linden_common.h" | ||
28 | 29 | ||
29 | #include "llctrlselectioninterface.h" | 30 | #include "llctrlselectioninterface.h" |
30 | 31 | ||
diff --git a/linden/indra/llui/lleditmenuhandler.cpp b/linden/indra/llui/lleditmenuhandler.cpp index 85b4464..559cef4 100644 --- a/linden/indra/llui/lleditmenuhandler.cpp +++ b/linden/indra/llui/lleditmenuhandler.cpp | |||
@@ -26,7 +26,7 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "stdtypes.h" | 29 | #include "linden_common.h" |
30 | 30 | ||
31 | #include "lleditmenuhandler.h" | 31 | #include "lleditmenuhandler.h" |
32 | 32 | ||
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp index 44616b9..98286fa 100644 --- a/linden/indra/llui/lllineeditor.cpp +++ b/linden/indra/llui/lllineeditor.cpp | |||
@@ -220,6 +220,9 @@ LLString LLLineEditor::getWidgetTag() const | |||
220 | 220 | ||
221 | void LLLineEditor::onFocusLost() | 221 | void LLLineEditor::onFocusLost() |
222 | { | 222 | { |
223 | // Need to notify early when loosing focus. | ||
224 | getWindow()->allowLanguageTextInput(FALSE); | ||
225 | |||
223 | LLUICtrl::onFocusLost(); | 226 | LLUICtrl::onFocusLost(); |
224 | 227 | ||
225 | if( mCommitOnFocusLost && mText.getString() != mPrevText) | 228 | if( mCommitOnFocusLost && mText.getString() != mPrevText) |
@@ -1130,7 +1133,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask) | |||
1130 | 1133 | ||
1131 | // handle ctrl-uparrow if we have a history enabled line editor. | 1134 | // handle ctrl-uparrow if we have a history enabled line editor. |
1132 | case KEY_UP: | 1135 | case KEY_UP: |
1133 | if( mHaveHistory && ( MASK_CONTROL & mask ) ) | 1136 | if( mHaveHistory && ( MASK_CONTROL == mask ) ) |
1134 | { | 1137 | { |
1135 | if( mCurrentHistoryLine > 0 ) | 1138 | if( mCurrentHistoryLine > 0 ) |
1136 | { | 1139 | { |
@@ -1147,7 +1150,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask) | |||
1147 | 1150 | ||
1148 | // handle ctrl-downarrow if we have a history enabled line editor | 1151 | // handle ctrl-downarrow if we have a history enabled line editor |
1149 | case KEY_DOWN: | 1152 | case KEY_DOWN: |
1150 | if( mHaveHistory && ( MASK_CONTROL & mask ) ) | 1153 | if( mHaveHistory && ( MASK_CONTROL == mask ) ) |
1151 | { | 1154 | { |
1152 | if( !mLineHistory.empty() && mCurrentHistoryLine < mLineHistory.size() - 1 ) | 1155 | if( !mLineHistory.empty() && mCurrentHistoryLine < mLineHistory.size() - 1 ) |
1153 | { | 1156 | { |
@@ -1646,6 +1649,12 @@ void LLLineEditor::setFocus( BOOL new_state ) | |||
1646 | { | 1649 | { |
1647 | BOOL old_state = hasFocus(); | 1650 | BOOL old_state = hasFocus(); |
1648 | 1651 | ||
1652 | if (!new_state) | ||
1653 | { | ||
1654 | getWindow()->allowLanguageTextInput(FALSE); | ||
1655 | } | ||
1656 | |||
1657 | |||
1649 | // getting focus when we didn't have it before, and we want to select all | 1658 | // getting focus when we didn't have it before, and we want to select all |
1650 | if (!old_state && new_state && mSelectAllonFocusReceived) | 1659 | if (!old_state && new_state && mSelectAllonFocusReceived) |
1651 | { | 1660 | { |
@@ -1676,6 +1685,16 @@ void LLLineEditor::setFocus( BOOL new_state ) | |||
1676 | } | 1685 | } |
1677 | 1686 | ||
1678 | LLUICtrl::setFocus( new_state ); | 1687 | LLUICtrl::setFocus( new_state ); |
1688 | |||
1689 | if (new_state) | ||
1690 | { | ||
1691 | // Allow Language Text Input only when this LineEditor has | ||
1692 | // no prevalidate function attached. This criterion works | ||
1693 | // fine on 1.15.0.2, since all prevalidate func reject any | ||
1694 | // non-ASCII characters. I'm not sure on future versions, | ||
1695 | // however. | ||
1696 | getWindow()->allowLanguageTextInput(mPrevalidateFunc == NULL); | ||
1697 | } | ||
1679 | } | 1698 | } |
1680 | 1699 | ||
1681 | //virtual | 1700 | //virtual |
diff --git a/linden/indra/llui/llrootview.cpp b/linden/indra/llui/llrootview.cpp index d78244d..bf231f1 100644 --- a/linden/indra/llui/llrootview.cpp +++ b/linden/indra/llui/llrootview.cpp | |||
@@ -25,6 +25,7 @@ | |||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | 25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, |
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | #include "linden_common.h" | ||
28 | 29 | ||
29 | #include "llrootview.h" | 30 | #include "llrootview.h" |
30 | 31 | ||
diff --git a/linden/indra/llui/llscrollcontainer.cpp b/linden/indra/llui/llscrollcontainer.cpp index cf43ee1..be41aa8 100644 --- a/linden/indra/llui/llscrollcontainer.cpp +++ b/linden/indra/llui/llscrollcontainer.cpp | |||
@@ -292,7 +292,26 @@ BOOL LLScrollableContainerView::handleScrollWheel( S32 x, S32 y, S32 clicks ) | |||
292 | // Opaque | 292 | // Opaque |
293 | return TRUE; | 293 | return TRUE; |
294 | } | 294 | } |
295 | BOOL LLScrollableContainerView::needsToScroll(S32 x, S32 y, LLScrollableContainerView::SCROLL_ORIENTATION axis) | ||
296 | { | ||
297 | if(mScrollbar[axis]->getVisible()) | ||
298 | { | ||
299 | LLRect inner_rect_local( 0, mInnerRect.getHeight(), mInnerRect.getWidth(), 0 ); | ||
300 | const S32 AUTOSCROLL_SIZE = 10; | ||
301 | if(mScrollbar[axis]->getVisible()) | ||
302 | { | ||
303 | inner_rect_local.mRight -= SCROLLBAR_SIZE; | ||
304 | inner_rect_local.mTop += AUTOSCROLL_SIZE; | ||
305 | inner_rect_local.mBottom = inner_rect_local.mTop - AUTOSCROLL_SIZE; | ||
306 | } | ||
307 | if( inner_rect_local.pointInRect( x, y ) && (mScrollbar[axis]->getDocPos() > 0) ) | ||
308 | { | ||
309 | return TRUE; | ||
310 | } | ||
295 | 311 | ||
312 | } | ||
313 | return FALSE; | ||
314 | } | ||
296 | BOOL LLScrollableContainerView::handleDragAndDrop(S32 x, S32 y, MASK mask, | 315 | BOOL LLScrollableContainerView::handleDragAndDrop(S32 x, S32 y, MASK mask, |
297 | BOOL drop, | 316 | BOOL drop, |
298 | EDragAndDropType cargo_type, | 317 | EDragAndDropType cargo_type, |
diff --git a/linden/indra/llui/llscrollcontainer.h b/linden/indra/llui/llscrollcontainer.h index 3b3bbef..34fff9c 100644 --- a/linden/indra/llui/llscrollcontainer.h +++ b/linden/indra/llui/llscrollcontainer.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #endif | 35 | #endif |
36 | #include "stdenums.h" | 36 | #include "stdenums.h" |
37 | #include "llcoord.h" | 37 | #include "llcoord.h" |
38 | #include "llscrollbar.h" | ||
38 | 39 | ||
39 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 40 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
40 | // Class LLScrollableContainerView | 41 | // Class LLScrollableContainerView |
@@ -47,7 +48,6 @@ | |||
47 | // This class is a decorator class. | 48 | // This class is a decorator class. |
48 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 49 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
49 | 50 | ||
50 | class LLScrollbar; | ||
51 | class LLViewBorder; | 51 | class LLViewBorder; |
52 | class LLUICtrlFactory; | 52 | class LLUICtrlFactory; |
53 | 53 | ||
@@ -55,6 +55,10 @@ class LLUICtrlFactory; | |||
55 | class LLScrollableContainerView : public LLUICtrl | 55 | class LLScrollableContainerView : public LLUICtrl |
56 | { | 56 | { |
57 | public: | 57 | public: |
58 | // Note: vertical comes before horizontal because vertical | ||
59 | // scrollbars have priority for mouse and keyboard events. | ||
60 | enum SCROLL_ORIENTATION { VERTICAL, HORIZONTAL, SCROLLBAR_COUNT }; | ||
61 | |||
58 | LLScrollableContainerView( const LLString& name, const LLRect& rect, | 62 | LLScrollableContainerView( const LLString& name, const LLRect& rect, |
59 | LLView* scrolled_view, BOOL is_opaque = FALSE, | 63 | LLView* scrolled_view, BOOL is_opaque = FALSE, |
60 | const LLColor4& bg_color = LLColor4(0,0,0,0) ); | 64 | const LLColor4& bg_color = LLColor4(0,0,0,0) ); |
@@ -88,6 +92,8 @@ public: | |||
88 | void goToBottom(); | 92 | void goToBottom(); |
89 | S32 getBorderWidth(); | 93 | S32 getBorderWidth(); |
90 | 94 | ||
95 | BOOL needsToScroll(S32 x, S32 y, SCROLL_ORIENTATION axis); | ||
96 | |||
91 | // LLView functionality | 97 | // LLView functionality |
92 | virtual void reshape(S32 width, S32 height, BOOL called_from_parent); | 98 | virtual void reshape(S32 width, S32 height, BOOL called_from_parent); |
93 | virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); | 99 | virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); |
@@ -110,10 +116,6 @@ protected: | |||
110 | virtual void scrollVertical( S32 new_pos ); | 116 | virtual void scrollVertical( S32 new_pos ); |
111 | void updateScroll(); | 117 | void updateScroll(); |
112 | 118 | ||
113 | // Note: vertical comes before horizontal because vertical | ||
114 | // scrollbars have priority for mouse and keyboard events. | ||
115 | enum { VERTICAL, HORIZONTAL, SCROLLBAR_COUNT }; | ||
116 | |||
117 | LLScrollbar* mScrollbar[SCROLLBAR_COUNT]; | 119 | LLScrollbar* mScrollbar[SCROLLBAR_COUNT]; |
118 | LLView* mScrolledView; | 120 | LLView* mScrolledView; |
119 | S32 mSize; | 121 | S32 mSize; |
diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp index fd98bd5..5571d39 100644 --- a/linden/indra/llui/llscrolllistctrl.cpp +++ b/linden/indra/llui/llscrolllistctrl.cpp | |||
@@ -98,8 +98,10 @@ protected: | |||
98 | // | 98 | // |
99 | // LLScrollListIcon | 99 | // LLScrollListIcon |
100 | // | 100 | // |
101 | LLScrollListIcon::LLScrollListIcon(LLImageGL* icon, S32 width, LLUUID image_id) : | 101 | LLScrollListIcon::LLScrollListIcon(LLImageGL* icon, S32 width, LLUUID image_id) |
102 | mIcon(icon), mColor(LLColor4::white), mImageUUID(image_id.asString()) | 102 | : mIcon(icon), |
103 | mImageUUID(image_id.asString()), | ||
104 | mColor(LLColor4::white) | ||
103 | { | 105 | { |
104 | if (width) | 106 | if (width) |
105 | { | 107 | { |
@@ -431,21 +433,20 @@ LLScrollListCtrl::LLScrollListCtrl(const LLString& name, const LLRect& rect, | |||
431 | mFgUnselectedColor( LLUI::sColorsGroup->getColor("ScrollUnselectedColor") ), | 433 | mFgUnselectedColor( LLUI::sColorsGroup->getColor("ScrollUnselectedColor") ), |
432 | mFgDisabledColor( LLUI::sColorsGroup->getColor("ScrollDisabledColor") ), | 434 | mFgDisabledColor( LLUI::sColorsGroup->getColor("ScrollDisabledColor") ), |
433 | mHighlightedColor( LLUI::sColorsGroup->getColor("ScrollHighlightedColor") ), | 435 | mHighlightedColor( LLUI::sColorsGroup->getColor("ScrollHighlightedColor") ), |
434 | mHighlightedItem(-1), | ||
435 | mBorderThickness( 2 ), | 436 | mBorderThickness( 2 ), |
436 | mOnDoubleClickCallback( NULL ), | 437 | mOnDoubleClickCallback( NULL ), |
437 | mOnMaximumSelectCallback( NULL ), | 438 | mOnMaximumSelectCallback( NULL ), |
438 | mOnSortChangedCallback( NULL ), | 439 | mOnSortChangedCallback( NULL ), |
439 | mDrewSelected(FALSE), | 440 | mHighlightedItem(-1), |
440 | mBorder(NULL), | 441 | mBorder(NULL), |
441 | mSearchColumn(0), | ||
442 | mDefaultColumn("SIMPLE"), | 442 | mDefaultColumn("SIMPLE"), |
443 | 443 | mSearchColumn(0), | |
444 | mNumDynamicWidthColumns(0), | 444 | mNumDynamicWidthColumns(0), |
445 | mTotalStaticColumnWidth(0), | 445 | mTotalStaticColumnWidth(0), |
446 | mSortColumn(-1), | 446 | mSortColumn(-1), |
447 | mSortAscending(TRUE), | ||
447 | mSorted(TRUE), | 448 | mSorted(TRUE), |
448 | mSortAscending(TRUE) | 449 | mDrewSelected(FALSE) |
449 | { | 450 | { |
450 | mItemListRect.setOriginAndSize( | 451 | mItemListRect.setOriginAndSize( |
451 | mBorderThickness + LIST_BORDER_PAD, | 452 | mBorderThickness + LIST_BORDER_PAD, |
diff --git a/linden/indra/llui/llscrolllistctrl.h b/linden/indra/llui/llscrolllistctrl.h index 429985b..9829832 100644 --- a/linden/indra/llui/llscrolllistctrl.h +++ b/linden/indra/llui/llscrolllistctrl.h | |||
@@ -328,7 +328,7 @@ public: | |||
328 | 328 | ||
329 | S32 getNumColumns() const { return mColumns.size(); } | 329 | S32 getNumColumns() const { return mColumns.size(); } |
330 | 330 | ||
331 | LLScrollListCell *getColumn(const S32 i) const { if (i < (S32)mColumns.size()) { return mColumns[i]; } return NULL; } | 331 | LLScrollListCell *getColumn(const S32 i) const { if (0 <= i && i < (S32)mColumns.size()) { return mColumns[i]; } return NULL; } |
332 | 332 | ||
333 | virtual BOOL handleClick(S32 x, S32 y, MASK mask); | 333 | virtual BOOL handleClick(S32 x, S32 y, MASK mask); |
334 | 334 | ||
diff --git a/linden/indra/llui/lltabcontainer.cpp b/linden/indra/llui/lltabcontainer.cpp index 44940ae..01c06c3 100644 --- a/linden/indra/llui/lltabcontainer.cpp +++ b/linden/indra/llui/lltabcontainer.cpp | |||
@@ -51,6 +51,7 @@ | |||
51 | #include "llglheaders.h" | 51 | #include "llglheaders.h" |
52 | 52 | ||
53 | const F32 SCROLL_STEP_TIME = 0.4f; | 53 | const F32 SCROLL_STEP_TIME = 0.4f; |
54 | const F32 SCROLL_DELAY_TIME = 0.5f; | ||
54 | const S32 TAB_PADDING = 15; | 55 | const S32 TAB_PADDING = 15; |
55 | const S32 TABCNTR_TAB_MIN_WIDTH = 60; | 56 | const S32 TABCNTR_TAB_MIN_WIDTH = 60; |
56 | const S32 TABCNTR_TAB_MAX_WIDTH = 150; | 57 | const S32 TABCNTR_TAB_MAX_WIDTH = 150; |
@@ -81,6 +82,7 @@ LLTabContainerCommon::LLTabContainerCommon( | |||
81 | mLockedTabCount(0) | 82 | mLockedTabCount(0) |
82 | { | 83 | { |
83 | setMouseOpaque(FALSE); | 84 | setMouseOpaque(FALSE); |
85 | mDragAndDropDelayTimer.stop(); | ||
84 | } | 86 | } |
85 | 87 | ||
86 | 88 | ||
@@ -101,9 +103,11 @@ LLTabContainerCommon::LLTabContainerCommon( | |||
101 | mCallbackUserdata( callback_userdata ), | 103 | mCallbackUserdata( callback_userdata ), |
102 | mTitleBox(NULL), | 104 | mTitleBox(NULL), |
103 | mTopBorderHeight(LLPANEL_BORDER_WIDTH), | 105 | mTopBorderHeight(LLPANEL_BORDER_WIDTH), |
104 | mTabPosition(pos) | 106 | mTabPosition(pos), |
107 | mLockedTabCount(0) | ||
105 | { | 108 | { |
106 | setMouseOpaque(FALSE); | 109 | setMouseOpaque(FALSE); |
110 | mDragAndDropDelayTimer.stop(); | ||
107 | } | 111 | } |
108 | 112 | ||
109 | 113 | ||
@@ -731,8 +735,8 @@ LLTabContainer::LLTabContainer( | |||
731 | : | 735 | : |
732 | LLTabContainerCommon(name, rect, pos, close_callback, callback_userdata, bordered), | 736 | LLTabContainerCommon(name, rect, pos, close_callback, callback_userdata, bordered), |
733 | mLeftArrowBtn(NULL), | 737 | mLeftArrowBtn(NULL), |
734 | mRightArrowBtn(NULL), | ||
735 | mJumpLeftArrowBtn(NULL), | 738 | mJumpLeftArrowBtn(NULL), |
739 | mRightArrowBtn(NULL), | ||
736 | mJumpRightArrowBtn(NULL), | 740 | mJumpRightArrowBtn(NULL), |
737 | mRightTabBtnOffset(0), | 741 | mRightTabBtnOffset(0), |
738 | mMinTabWidth(TABCNTR_TAB_MIN_WIDTH), | 742 | mMinTabWidth(TABCNTR_TAB_MIN_WIDTH), |
@@ -749,8 +753,8 @@ LLTabContainer::LLTabContainer( | |||
749 | : | 753 | : |
750 | LLTabContainerCommon(name, rect_control, pos, close_callback, callback_userdata, bordered), | 754 | LLTabContainerCommon(name, rect_control, pos, close_callback, callback_userdata, bordered), |
751 | mLeftArrowBtn(NULL), | 755 | mLeftArrowBtn(NULL), |
752 | mRightArrowBtn(NULL), | ||
753 | mJumpLeftArrowBtn(NULL), | 756 | mJumpLeftArrowBtn(NULL), |
757 | mRightArrowBtn(NULL), | ||
754 | mJumpRightArrowBtn(NULL), | 758 | mJumpRightArrowBtn(NULL), |
755 | mRightTabBtnOffset(0), | 759 | mRightTabBtnOffset(0), |
756 | mMinTabWidth(TABCNTR_TAB_MIN_WIDTH), | 760 | mMinTabWidth(TABCNTR_TAB_MIN_WIDTH), |
@@ -1576,43 +1580,48 @@ BOOL LLTabContainer::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDrag | |||
1576 | { | 1580 | { |
1577 | BOOL has_scroll_arrows = (mMaxScrollPos > 0); | 1581 | BOOL has_scroll_arrows = (mMaxScrollPos > 0); |
1578 | 1582 | ||
1579 | if (has_scroll_arrows) | 1583 | if( mDragAndDropDelayTimer.getElapsedTimeF32() > SCROLL_DELAY_TIME ) |
1580 | { | 1584 | { |
1581 | if (mJumpLeftArrowBtn->getRect().pointInRect(x, y)) | 1585 | |
1582 | { | 1586 | if (has_scroll_arrows) |
1583 | S32 local_x = x - mJumpLeftArrowBtn->getRect().mLeft; | ||
1584 | S32 local_y = y - mJumpLeftArrowBtn->getRect().mBottom; | ||
1585 | mJumpLeftArrowBtn->handleHover(local_x, local_y, mask); | ||
1586 | } | ||
1587 | if (mJumpRightArrowBtn->getRect().pointInRect(x, y)) | ||
1588 | { | ||
1589 | S32 local_x = x - mJumpRightArrowBtn->getRect().mLeft; | ||
1590 | S32 local_y = y - mJumpRightArrowBtn->getRect().mBottom; | ||
1591 | mJumpRightArrowBtn->handleHover(local_x, local_y, mask); | ||
1592 | } | ||
1593 | if (mLeftArrowBtn->getRect().pointInRect(x, y)) | ||
1594 | { | ||
1595 | S32 local_x = x - mLeftArrowBtn->getRect().mLeft; | ||
1596 | S32 local_y = y - mLeftArrowBtn->getRect().mBottom; | ||
1597 | mLeftArrowBtn->handleHover(local_x, local_y, mask); | ||
1598 | } | ||
1599 | else if (mRightArrowBtn->getRect().pointInRect(x, y)) | ||
1600 | { | 1587 | { |
1601 | S32 local_x = x - mRightArrowBtn->getRect().mLeft; | 1588 | if (mJumpLeftArrowBtn->getRect().pointInRect(x, y)) |
1602 | S32 local_y = y - mRightArrowBtn->getRect().mBottom; | 1589 | { |
1603 | mRightArrowBtn->handleHover(local_x, local_y, mask); | 1590 | S32 local_x = x - mJumpLeftArrowBtn->getRect().mLeft; |
1591 | S32 local_y = y - mJumpLeftArrowBtn->getRect().mBottom; | ||
1592 | mJumpLeftArrowBtn->handleHover(local_x, local_y, mask); | ||
1593 | } | ||
1594 | if (mJumpRightArrowBtn->getRect().pointInRect(x, y)) | ||
1595 | { | ||
1596 | S32 local_x = x - mJumpRightArrowBtn->getRect().mLeft; | ||
1597 | S32 local_y = y - mJumpRightArrowBtn->getRect().mBottom; | ||
1598 | mJumpRightArrowBtn->handleHover(local_x, local_y, mask); | ||
1599 | } | ||
1600 | if (mLeftArrowBtn->getRect().pointInRect(x, y)) | ||
1601 | { | ||
1602 | S32 local_x = x - mLeftArrowBtn->getRect().mLeft; | ||
1603 | S32 local_y = y - mLeftArrowBtn->getRect().mBottom; | ||
1604 | mLeftArrowBtn->handleHover(local_x, local_y, mask); | ||
1605 | } | ||
1606 | else if (mRightArrowBtn->getRect().pointInRect(x, y)) | ||
1607 | { | ||
1608 | S32 local_x = x - mRightArrowBtn->getRect().mLeft; | ||
1609 | S32 local_y = y - mRightArrowBtn->getRect().mBottom; | ||
1610 | mRightArrowBtn->handleHover(local_x, local_y, mask); | ||
1611 | } | ||
1604 | } | 1612 | } |
1605 | } | ||
1606 | 1613 | ||
1607 | for(tuple_list_t::iterator iter = mTabList.begin(); iter != mTabList.end(); ++iter) | 1614 | for(tuple_list_t::iterator iter = mTabList.begin(); iter != mTabList.end(); ++iter) |
1608 | { | ||
1609 | LLTabTuple* tuple = *iter; | ||
1610 | tuple->mButton->setVisible( TRUE ); | ||
1611 | S32 local_x = x - tuple->mButton->getRect().mLeft; | ||
1612 | S32 local_y = y - tuple->mButton->getRect().mBottom; | ||
1613 | if (tuple->mButton->pointInView(local_x, local_y) && tuple->mButton->getEnabled() && !tuple->mTabPanel->getVisible()) | ||
1614 | { | 1615 | { |
1615 | tuple->mButton->onCommit(); | 1616 | LLTabTuple* tuple = *iter; |
1617 | tuple->mButton->setVisible( TRUE ); | ||
1618 | S32 local_x = x - tuple->mButton->getRect().mLeft; | ||
1619 | S32 local_y = y - tuple->mButton->getRect().mBottom; | ||
1620 | if (tuple->mButton->pointInView(local_x, local_y) && tuple->mButton->getEnabled() && !tuple->mTabPanel->getVisible()) | ||
1621 | { | ||
1622 | tuple->mButton->onCommit(); | ||
1623 | mDragAndDropDelayTimer.stop(); | ||
1624 | } | ||
1616 | } | 1625 | } |
1617 | } | 1626 | } |
1618 | 1627 | ||
@@ -1641,4 +1650,4 @@ void LLTabContainer::setTabImage(LLPanel* child, std::string image_name) | |||
1641 | // tabs have changed size, might need to scroll to see current tab | 1650 | // tabs have changed size, might need to scroll to see current tab |
1642 | updateMaxScrollPos(); | 1651 | updateMaxScrollPos(); |
1643 | } | 1652 | } |
1644 | } \ No newline at end of file | 1653 | } |
diff --git a/linden/indra/llui/lltabcontainer.h b/linden/indra/llui/lltabcontainer.h index 7d501d2..f3365c3 100644 --- a/linden/indra/llui/lltabcontainer.h +++ b/linden/indra/llui/lltabcontainer.h | |||
@@ -117,7 +117,9 @@ public: | |||
117 | virtual void setTabImage(LLPanel* child, std::string img_name); | 117 | virtual void setTabImage(LLPanel* child, std::string img_name); |
118 | void setTitle( const LLString& title ); | 118 | void setTitle( const LLString& title ); |
119 | const LLString getPanelTitle(S32 index); | 119 | const LLString getPanelTitle(S32 index); |
120 | 120 | ||
121 | void setDragAndDropDelayTimer() { mDragAndDropDelayTimer.start(); } | ||
122 | |||
121 | virtual void setTopBorderHeight(S32 height); | 123 | virtual void setTopBorderHeight(S32 height); |
122 | 124 | ||
123 | virtual void setTabChangeCallback(LLPanel* tab, void (*on_tab_clicked)(void*,bool)); | 125 | virtual void setTabChangeCallback(LLPanel* tab, void (*on_tab_clicked)(void*,bool)); |
@@ -175,6 +177,8 @@ protected: | |||
175 | S32 mScrollPosPixels; | 177 | S32 mScrollPosPixels; |
176 | S32 mMaxScrollPos; | 178 | S32 mMaxScrollPos; |
177 | 179 | ||
180 | LLFrameTimer mDragAndDropDelayTimer; | ||
181 | |||
178 | void (*mCloseCallback)(void*); | 182 | void (*mCloseCallback)(void*); |
179 | void* mCallbackUserdata; | 183 | void* mCallbackUserdata; |
180 | 184 | ||
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp index 80205d3..513670b 100644 --- a/linden/indra/llui/lltexteditor.cpp +++ b/linden/indra/llui/lltexteditor.cpp | |||
@@ -46,6 +46,7 @@ | |||
46 | #include "llclipboard.h" | 46 | #include "llclipboard.h" |
47 | #include "llscrollbar.h" | 47 | #include "llscrollbar.h" |
48 | #include "llstl.h" | 48 | #include "llstl.h" |
49 | #include "llstring.h" | ||
49 | #include "llkeyboard.h" | 50 | #include "llkeyboard.h" |
50 | #include "llkeywords.h" | 51 | #include "llkeywords.h" |
51 | #include "llundo.h" | 52 | #include "llundo.h" |
@@ -514,8 +515,10 @@ void LLTextEditor::truncate() | |||
514 | 515 | ||
515 | void LLTextEditor::setText(const LLString &utf8str) | 516 | void LLTextEditor::setText(const LLString &utf8str) |
516 | { | 517 | { |
517 | mUTF8Text = utf8str; | 518 | // LLString::removeCRLF(utf8str); |
518 | mWText = utf8str_to_wstring(utf8str); | 519 | mUTF8Text = utf8str_removeCRLF(utf8str); |
520 | // mUTF8Text = utf8str; | ||
521 | mWText = utf8str_to_wstring(mUTF8Text); | ||
519 | mTextIsUpToDate = TRUE; | 522 | mTextIsUpToDate = TRUE; |
520 | 523 | ||
521 | truncate(); | 524 | truncate(); |
@@ -2491,6 +2494,8 @@ void LLTextEditor::redo() | |||
2491 | // virtual, from LLView | 2494 | // virtual, from LLView |
2492 | void LLTextEditor::onFocusLost() | 2495 | void LLTextEditor::onFocusLost() |
2493 | { | 2496 | { |
2497 | getWindow()->allowLanguageTextInput(FALSE); | ||
2498 | |||
2494 | // Route menu back to the default | 2499 | // Route menu back to the default |
2495 | if( gEditMenuHandler == this ) | 2500 | if( gEditMenuHandler == this ) |
2496 | { | 2501 | { |
@@ -3057,6 +3062,12 @@ void LLTextEditor::setFocus( BOOL new_state ) | |||
3057 | // Don't change anything if the focus state didn't change | 3062 | // Don't change anything if the focus state didn't change |
3058 | if (new_state == old_state) return; | 3063 | if (new_state == old_state) return; |
3059 | 3064 | ||
3065 | // Notify early if we are loosing focus. | ||
3066 | if (!new_state) | ||
3067 | { | ||
3068 | getWindow()->allowLanguageTextInput(FALSE); | ||
3069 | } | ||
3070 | |||
3060 | LLUICtrl::setFocus( new_state ); | 3071 | LLUICtrl::setFocus( new_state ); |
3061 | 3072 | ||
3062 | if( new_state ) | 3073 | if( new_state ) |
@@ -3077,6 +3088,12 @@ void LLTextEditor::setFocus( BOOL new_state ) | |||
3077 | 3088 | ||
3078 | endSelection(); | 3089 | endSelection(); |
3079 | } | 3090 | } |
3091 | |||
3092 | // Notify late if we are gaining focus. | ||
3093 | if (new_state && !mReadOnly) | ||
3094 | { | ||
3095 | getWindow()->allowLanguageTextInput(TRUE); | ||
3096 | } | ||
3080 | } | 3097 | } |
3081 | 3098 | ||
3082 | BOOL LLTextEditor::acceptsTextInput() const | 3099 | BOOL LLTextEditor::acceptsTextInput() const |
diff --git a/linden/indra/llui/llviewquery.cpp b/linden/indra/llui/llviewquery.cpp index 3f9ccf4..65f191b 100644 --- a/linden/indra/llui/llviewquery.cpp +++ b/linden/indra/llui/llviewquery.cpp | |||
@@ -26,6 +26,8 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "linden_common.h" | ||
30 | |||
29 | #include "llview.h" | 31 | #include "llview.h" |
30 | #include "lluictrl.h" | 32 | #include "lluictrl.h" |
31 | #include "llviewquery.h" | 33 | #include "llviewquery.h" |
diff --git a/linden/indra/llvfs/llvfs.cpp b/linden/indra/llvfs/llvfs.cpp index b83d12c..dd5854c 100644 --- a/linden/indra/llvfs/llvfs.cpp +++ b/linden/indra/llvfs/llvfs.cpp | |||
@@ -504,7 +504,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r | |||
504 | } | 504 | } |
505 | 505 | ||
506 | // Figure out where the last block ended. | 506 | // Figure out where the last block ended. |
507 | U32 loc = last_file_block->mLocation+last_file_block->mLength; | 507 | S32 loc = last_file_block->mLocation+last_file_block->mLength; |
508 | 508 | ||
509 | // Figure out how much space there is between where | 509 | // Figure out how much space there is between where |
510 | // the last block ended and this block begins. | 510 | // the last block ended and this block begins. |
@@ -512,7 +512,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r | |||
512 | 512 | ||
513 | // Check for more errors... Seeing if the current | 513 | // Check for more errors... Seeing if the current |
514 | // entry and the last entry make sense together. | 514 | // entry and the last entry make sense together. |
515 | if (length < 0 || loc < 0 || loc > data_size) | 515 | if (length < 0 || loc < 0 || (U32)loc > data_size) |
516 | { | 516 | { |
517 | // Invalid VFS | 517 | // Invalid VFS |
518 | unlockAndClose( mIndexFP ); | 518 | unlockAndClose( mIndexFP ); |
@@ -1790,53 +1790,46 @@ void LLVFS::audit() | |||
1790 | 1790 | ||
1791 | delete[] buffer; | 1791 | delete[] buffer; |
1792 | 1792 | ||
1793 | if (vfs_corrupt) | 1793 | if (!vfs_corrupt) |
1794 | { | 1794 | { |
1795 | for (std::vector<LLVFSFileBlock*>::iterator iter = audit_blocks.begin(); | 1795 | for (fileblock_map::iterator it = mFileBlocks.begin(); it != mFileBlocks.end(); ++it) |
1796 | iter != audit_blocks.end(); ++iter) | ||
1797 | { | 1796 | { |
1798 | delete *iter; | 1797 | LLVFSFileBlock* block = (*it).second; |
1799 | } | ||
1800 | audit_blocks.clear(); | ||
1801 | return; | ||
1802 | } | ||
1803 | |||
1804 | for (fileblock_map::iterator it = mFileBlocks.begin(); it != mFileBlocks.end(); ++it) | ||
1805 | { | ||
1806 | LLVFSFileBlock* block = (*it).second; | ||
1807 | 1798 | ||
1808 | if (block->mSize > 0) | 1799 | if (block->mSize > 0) |
1809 | { | ||
1810 | if (! found_files.count(*block)) | ||
1811 | { | 1800 | { |
1812 | llwarns << "VFile " << block->mFileID << ":" << block->mFileType << " in memory, not on disk, loc " << block->mIndexLocation<< llendl; | 1801 | if (! found_files.count(*block)) |
1813 | fseek(mIndexFP, block->mIndexLocation, SEEK_SET); | 1802 | { |
1814 | U8 buf[LLVFSFileBlock::SERIAL_SIZE]; | 1803 | llwarns << "VFile " << block->mFileID << ":" << block->mFileType << " in memory, not on disk, loc " << block->mIndexLocation<< llendl; |
1815 | fread(buf, LLVFSFileBlock::SERIAL_SIZE, 1, mIndexFP); | 1804 | fseek(mIndexFP, block->mIndexLocation, SEEK_SET); |
1805 | U8 buf[LLVFSFileBlock::SERIAL_SIZE]; | ||
1806 | fread(buf, LLVFSFileBlock::SERIAL_SIZE, 1, mIndexFP); | ||
1816 | 1807 | ||
1817 | LLVFSFileBlock disk_block; | 1808 | LLVFSFileBlock disk_block; |
1818 | disk_block.deserialize(buf, block->mIndexLocation); | 1809 | disk_block.deserialize(buf, block->mIndexLocation); |
1819 | 1810 | ||
1820 | llwarns << "Instead found " << disk_block.mFileID << ":" << block->mFileType << llendl; | 1811 | llwarns << "Instead found " << disk_block.mFileID << ":" << block->mFileType << llendl; |
1821 | } | 1812 | } |
1822 | else | 1813 | else |
1823 | { | 1814 | { |
1824 | block = found_files.find(*block)->second; | 1815 | block = found_files.find(*block)->second; |
1825 | found_files.erase(*block); | 1816 | found_files.erase(*block); |
1826 | delete block; | 1817 | } |
1827 | } | 1818 | } |
1828 | } | 1819 | } |
1829 | } | ||
1830 | 1820 | ||
1831 | for (std::map<LLVFSFileSpecifier, LLVFSFileBlock*>::iterator iter = found_files.begin(); | 1821 | for (std::map<LLVFSFileSpecifier, LLVFSFileBlock*>::iterator iter = found_files.begin(); |
1832 | iter != found_files.end(); iter++) | 1822 | iter != found_files.end(); iter++) |
1833 | { | 1823 | { |
1834 | LLVFSFileBlock* block = iter->second; | 1824 | LLVFSFileBlock* block = iter->second; |
1835 | llwarns << "VFile " << block->mFileID << ":" << block->mFileType << " szie:" << block->mSize << " leftover" << llendl; | 1825 | llwarns << "VFile " << block->mFileID << ":" << block->mFileType << " szie:" << block->mSize << " leftover" << llendl; |
1836 | } | 1826 | } |
1837 | 1827 | ||
1838 | llinfos << "VFS: audit OK" << llendl; | 1828 | llinfos << "VFS: audit OK" << llendl; |
1839 | // mutex released by LLMutexLock() destructor. | 1829 | // mutex released by LLMutexLock() destructor. |
1830 | } | ||
1831 | |||
1832 | for_each(audit_blocks.begin(), audit_blocks.end(), DeletePointer()); | ||
1840 | } | 1833 | } |
1841 | 1834 | ||
1842 | 1835 | ||
diff --git a/linden/indra/llwindow/llwindow.cpp b/linden/indra/llwindow/llwindow.cpp index cad1dc4..faa5e61 100644 --- a/linden/indra/llwindow/llwindow.cpp +++ b/linden/indra/llwindow/llwindow.cpp | |||
@@ -241,7 +241,8 @@ LLWindow::LLWindow(BOOL fullscreen, U32 flags) | |||
241 | mIsMouseClipping(FALSE), | 241 | mIsMouseClipping(FALSE), |
242 | mSwapMethod(SWAP_METHOD_UNDEFINED), | 242 | mSwapMethod(SWAP_METHOD_UNDEFINED), |
243 | mHideCursorPermanent(FALSE), | 243 | mHideCursorPermanent(FALSE), |
244 | mFlags(flags) | 244 | mFlags(flags), |
245 | mHighSurrogate(0) | ||
245 | { | 246 | { |
246 | for (U32 i = 0; i < 6; i++) | 247 | for (U32 i = 0; i < 6; i++) |
247 | { | 248 | { |
@@ -296,6 +297,53 @@ void LLWindow::setCallbacks(LLWindowCallbacks *callbacks) | |||
296 | } | 297 | } |
297 | } | 298 | } |
298 | 299 | ||
300 | #define UTF16_IS_HIGH_SURROGATE(U) ((U16)((U) - 0xD800) < 0x0400) | ||
301 | #define UTF16_IS_LOW_SURROGATE(U) ((U16)((U) - 0xDC00) < 0x0400) | ||
302 | #define UTF16_SURROGATE_PAIR_TO_UTF32(H,L) (((H) << 10) + (L) - (0xD800 << 10) - 0xDC00 + 0x00010000) | ||
303 | |||
304 | void LLWindow::handleUnicodeUTF16(U16 utf16, MASK mask) | ||
305 | { | ||
306 | // Note that we could discard unpaired surrogates, but I'm | ||
307 | // following the Unicode Consortium's recommendation here; | ||
308 | // that is, to preserve those unpaired surrogates in UTF-32 | ||
309 | // values. _To_preserve_ means to pass to the callback in our | ||
310 | // context. | ||
311 | |||
312 | if (mHighSurrogate == 0) | ||
313 | { | ||
314 | if (UTF16_IS_HIGH_SURROGATE(utf16)) | ||
315 | { | ||
316 | mHighSurrogate = utf16; | ||
317 | } | ||
318 | else | ||
319 | { | ||
320 | mCallbacks->handleUnicodeChar(utf16, mask); | ||
321 | } | ||
322 | } | ||
323 | else | ||
324 | { | ||
325 | if (UTF16_IS_LOW_SURROGATE(utf16)) | ||
326 | { | ||
327 | /* A legal surrogate pair. */ | ||
328 | mCallbacks->handleUnicodeChar(UTF16_SURROGATE_PAIR_TO_UTF32(mHighSurrogate, utf16), mask); | ||
329 | mHighSurrogate = 0; | ||
330 | } | ||
331 | else if (UTF16_IS_HIGH_SURROGATE(utf16)) | ||
332 | { | ||
333 | /* Two consecutive high surrogates. */ | ||
334 | mCallbacks->handleUnicodeChar(mHighSurrogate, mask); | ||
335 | mHighSurrogate = utf16; | ||
336 | } | ||
337 | else | ||
338 | { | ||
339 | /* A non-low-surrogate preceeded by a high surrogate. */ | ||
340 | mCallbacks->handleUnicodeChar(mHighSurrogate, mask); | ||
341 | mHighSurrogate = 0; | ||
342 | mCallbacks->handleUnicodeChar(utf16, mask); | ||
343 | } | ||
344 | } | ||
345 | } | ||
346 | |||
299 | // | 347 | // |
300 | // LLSplashScreen | 348 | // LLSplashScreen |
301 | // | 349 | // |
diff --git a/linden/indra/llwindow/llwindow.h b/linden/indra/llwindow/llwindow.h index 2bb49e9..1016bce 100644 --- a/linden/indra/llwindow/llwindow.h +++ b/linden/indra/llwindow/llwindow.h | |||
@@ -218,6 +218,10 @@ public: | |||
218 | // return a platform-specific window reference (HWND on Windows, WindowRef on the Mac) | 218 | // return a platform-specific window reference (HWND on Windows, WindowRef on the Mac) |
219 | virtual void *getPlatformWindow() = 0; | 219 | virtual void *getPlatformWindow() = 0; |
220 | 220 | ||
221 | // control platform's Language Text Input mechanisms. | ||
222 | virtual void allowLanguageTextInput( BOOL b ) {}; | ||
223 | virtual void setLanguageTextInput( LLCoordWindow pos ) {}; | ||
224 | |||
221 | protected: | 225 | protected: |
222 | LLWindow(BOOL fullscreen, U32 flags); | 226 | LLWindow(BOOL fullscreen, U32 flags); |
223 | virtual ~LLWindow() {} | 227 | virtual ~LLWindow() {} |
@@ -246,6 +250,15 @@ protected: | |||
246 | U32 mFlags; | 250 | U32 mFlags; |
247 | F32 mJoyAxis[6]; | 251 | F32 mJoyAxis[6]; |
248 | U8 mJoyButtonState[16]; | 252 | U8 mJoyButtonState[16]; |
253 | U16 mHighSurrogate; | ||
254 | |||
255 | // Handle a UTF-16 encoding unit received from keyboard. | ||
256 | // Converting the series of UTF-16 encoding units to UTF-32 data, | ||
257 | // this method passes the resulting UTF-32 data to mCallback's | ||
258 | // handleUnicodeChar. The mask should be that to be passed to the | ||
259 | // callback. This method uses mHighSurrogate as a dedicated work | ||
260 | // variable. | ||
261 | void handleUnicodeUTF16(U16 utf16, MASK mask); | ||
249 | 262 | ||
250 | friend class LLWindowManager; | 263 | friend class LLWindowManager; |
251 | }; | 264 | }; |
diff --git a/linden/indra/llwindow/llwindowmacosx.cpp b/linden/indra/llwindow/llwindowmacosx.cpp index 0c5d6ed..021d7a4 100644 --- a/linden/indra/llwindow/llwindowmacosx.cpp +++ b/linden/indra/llwindow/llwindowmacosx.cpp | |||
@@ -239,6 +239,10 @@ LLWindowMacOSX::LLWindowMacOSX(char *title, char *name, S32 x, S32 y, S32 width, | |||
239 | mNeedsResize = FALSE; | 239 | mNeedsResize = FALSE; |
240 | mOverrideAspectRatio = 0.f; | 240 | mOverrideAspectRatio = 0.f; |
241 | mMinimized = FALSE; | 241 | mMinimized = FALSE; |
242 | mTSMDocument = NULL; // Just in case. | ||
243 | mLanguageTextInputAllowed = FALSE; | ||
244 | mTSMScriptCode = 0; | ||
245 | mTSMLangCode = 0; | ||
242 | 246 | ||
243 | // For reasons that aren't clear to me, LLTimers seem to be created in the "started" state. | 247 | // For reasons that aren't clear to me, LLTimers seem to be created in the "started" state. |
244 | // Since the started state of this one is used to track whether the NMRec has been installed, it wants to start out in the "stopped" state. | 248 | // Since the started state of this one is used to track whether the NMRec has been installed, it wants to start out in the "stopped" state. |
@@ -479,6 +483,29 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits | |||
479 | 483 | ||
480 | } | 484 | } |
481 | 485 | ||
486 | { | ||
487 | // Create and initialize our TSM document for language text input. | ||
488 | // If an error occured, we can do nothing better than simply ignore it. | ||
489 | // mTSMDocument will be kept NULL in case. | ||
490 | if (mTSMDocument) | ||
491 | { | ||
492 | DeactivateTSMDocument(mTSMDocument); | ||
493 | DeleteTSMDocument(mTSMDocument); | ||
494 | mTSMDocument = NULL; | ||
495 | } | ||
496 | static InterfaceTypeList types = { kUnicodeDocument }; | ||
497 | OSErr err = NewTSMDocument(1, types, &mTSMDocument, 0); | ||
498 | if (err != noErr) | ||
499 | { | ||
500 | llwarns << "createContext: couldn't create a TSMDocument (" << err << ")" << llendl; | ||
501 | } | ||
502 | if (mTSMDocument) | ||
503 | { | ||
504 | UseInputWindow(mTSMDocument, TRUE); | ||
505 | ActivateTSMDocument(mTSMDocument); | ||
506 | } | ||
507 | } | ||
508 | |||
482 | if(mContext == NULL) | 509 | if(mContext == NULL) |
483 | { | 510 | { |
484 | AGLRendererInfo rendererInfo = NULL; | 511 | AGLRendererInfo rendererInfo = NULL; |
@@ -924,6 +951,15 @@ void LLWindowMacOSX::destroyContext() | |||
924 | mWindowHandlerRef = NULL; | 951 | mWindowHandlerRef = NULL; |
925 | } | 952 | } |
926 | 953 | ||
954 | // Cleanup any TSM document we created. | ||
955 | if(mTSMDocument != NULL) | ||
956 | { | ||
957 | llinfos << "destroyContext: deleting TSM document" << llendl; | ||
958 | DeactivateTSMDocument(mTSMDocument); | ||
959 | DeleteTSMDocument(mTSMDocument); | ||
960 | mTSMDocument = NULL; | ||
961 | } | ||
962 | |||
927 | // Close the window | 963 | // Close the window |
928 | if(mWindow != NULL) | 964 | if(mWindow != NULL) |
929 | { | 965 | { |
@@ -1529,7 +1565,7 @@ void LLWindowMacOSX::flashIcon(F32 seconds) | |||
1529 | OSErr err; | 1565 | OSErr err; |
1530 | 1566 | ||
1531 | mBounceTime = seconds; | 1567 | mBounceTime = seconds; |
1532 | memset(&mBounceRec, sizeof(mBounceRec), 0); | 1568 | memset(&mBounceRec, 0, sizeof(mBounceRec)); |
1533 | mBounceRec.qType = nmType; | 1569 | mBounceRec.qType = nmType; |
1534 | mBounceRec.nmMark = 1; | 1570 | mBounceRec.nmMark = 1; |
1535 | err = NMInstall(&mBounceRec); | 1571 | err = NMInstall(&mBounceRec); |
@@ -2241,6 +2277,10 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e | |||
2241 | switch(evtKind) | 2277 | switch(evtKind) |
2242 | { | 2278 | { |
2243 | case kEventWindowActivated: | 2279 | case kEventWindowActivated: |
2280 | if (mTSMDocument) | ||
2281 | { | ||
2282 | ActivateTSMDocument(mTSMDocument); | ||
2283 | } | ||
2244 | mCallbacks->handleFocus(this); | 2284 | mCallbacks->handleFocus(this); |
2245 | break; | 2285 | break; |
2246 | case kEventWindowDeactivated: | 2286 | case kEventWindowDeactivated: |
@@ -2952,4 +2992,37 @@ static long getDictLong (CFDictionaryRef refDict, CFStringRef key) | |||
2952 | return int_value; // otherwise return the long value | 2992 | return int_value; // otherwise return the long value |
2953 | } | 2993 | } |
2954 | 2994 | ||
2995 | void LLWindowMacOSX::allowLanguageTextInput(BOOL b) | ||
2996 | { | ||
2997 | ScriptLanguageRecord script_language; | ||
2998 | |||
2999 | if (b == mLanguageTextInputAllowed) | ||
3000 | { | ||
3001 | return; | ||
3002 | } | ||
3003 | mLanguageTextInputAllowed = b; | ||
3004 | |||
3005 | if (b) | ||
3006 | { | ||
3007 | if (mTSMScriptCode != smRoman) | ||
3008 | { | ||
3009 | script_language.fScript = mTSMScriptCode; | ||
3010 | script_language.fLanguage = mTSMLangCode; | ||
3011 | SetTextServiceLanguage(&script_language); | ||
3012 | } | ||
3013 | } | ||
3014 | else | ||
3015 | { | ||
3016 | GetTextServiceLanguage(&script_language); | ||
3017 | mTSMScriptCode = script_language.fScript; | ||
3018 | mTSMLangCode = script_language.fLanguage; | ||
3019 | if (mTSMScriptCode != smRoman) | ||
3020 | { | ||
3021 | script_language.fScript = smRoman; | ||
3022 | script_language.fLanguage = langEnglish; | ||
3023 | SetTextServiceLanguage(&script_language); | ||
3024 | } | ||
3025 | } | ||
3026 | } | ||
3027 | |||
2955 | #endif // LL_DARWIN | 3028 | #endif // LL_DARWIN |
diff --git a/linden/indra/llwindow/llwindowmacosx.h b/linden/indra/llwindow/llwindowmacosx.h index 63d846e..01b9303 100644 --- a/linden/indra/llwindow/llwindowmacosx.h +++ b/linden/indra/llwindow/llwindowmacosx.h | |||
@@ -108,6 +108,8 @@ public: | |||
108 | /*virtual*/ void *getPlatformWindow(); | 108 | /*virtual*/ void *getPlatformWindow(); |
109 | /*virtual*/ void bringToFront() {}; | 109 | /*virtual*/ void bringToFront() {}; |
110 | 110 | ||
111 | /*virtual*/ void allowLanguageTextInput(BOOL b); | ||
112 | |||
111 | protected: | 113 | protected: |
112 | LLWindowMacOSX( | 114 | LLWindowMacOSX( |
113 | char *title, char *name, int x, int y, int width, int height, U32 flags, | 115 | char *title, char *name, int x, int y, int width, int height, U32 flags, |
@@ -183,6 +185,12 @@ protected: | |||
183 | NMRec mBounceRec; | 185 | NMRec mBounceRec; |
184 | LLTimer mBounceTimer; | 186 | LLTimer mBounceTimer; |
185 | 187 | ||
188 | // Imput method management through Text Service Manager. | ||
189 | TSMDocumentID mTSMDocument; | ||
190 | BOOL mLanguageTextInputAllowed; | ||
191 | ScriptCode mTSMScriptCode; | ||
192 | LangCode mTSMLangCode; | ||
193 | |||
186 | friend class LLWindowManager; | 194 | friend class LLWindowManager; |
187 | }; | 195 | }; |
188 | 196 | ||
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp index a1cdeb3..94111e7 100644 --- a/linden/indra/llwindow/llwindowsdl.cpp +++ b/linden/indra/llwindow/llwindowsdl.cpp | |||
@@ -42,7 +42,9 @@ | |||
42 | #include "indra_constants.h" | 42 | #include "indra_constants.h" |
43 | 43 | ||
44 | #if LL_GTK | 44 | #if LL_GTK |
45 | extern "C" { | ||
45 | # include "gtk/gtk.h" | 46 | # include "gtk/gtk.h" |
47 | } | ||
46 | #endif // LL_GTK | 48 | #endif // LL_GTK |
47 | 49 | ||
48 | #if LL_LINUX | 50 | #if LL_LINUX |
@@ -1984,7 +1986,10 @@ void LLWindowSDL::gatherInput() | |||
1984 | SDLReallyCaptureInput(TRUE); | 1986 | SDLReallyCaptureInput(TRUE); |
1985 | 1987 | ||
1986 | if (event.key.keysym.unicode) | 1988 | if (event.key.keysym.unicode) |
1987 | mCallbacks->handleUnicodeChar(event.key.keysym.unicode, gKeyboard->currentMask(FALSE)); | 1989 | { |
1990 | handleUnicodeUTF16(event.key.keysym.unicode, | ||
1991 | gKeyboard->currentMask(FALSE)); | ||
1992 | } | ||
1988 | break; | 1993 | break; |
1989 | 1994 | ||
1990 | case SDL_KEYUP: | 1995 | case SDL_KEYUP: |
diff --git a/linden/indra/llwindow/llwindowwin32.cpp b/linden/indra/llwindow/llwindowwin32.cpp index 2cd1353..0b3cdd4 100644 --- a/linden/indra/llwindow/llwindowwin32.cpp +++ b/linden/indra/llwindow/llwindowwin32.cpp | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <mapi.h> | 37 | #include <mapi.h> |
38 | #include <process.h> // for _spawn | 38 | #include <process.h> // for _spawn |
39 | #include <shellapi.h> | 39 | #include <shellapi.h> |
40 | #include <Imm.h> | ||
40 | 41 | ||
41 | // Require DirectInput version 8 | 42 | // Require DirectInput version 8 |
42 | #define DIRECTINPUT_VERSION 0x0800 | 43 | #define DIRECTINPUT_VERSION 0x0800 |
@@ -84,6 +85,98 @@ void show_window_creation_error(const char* title) | |||
84 | //static | 85 | //static |
85 | BOOL LLWindowWin32::sIsClassRegistered = FALSE; | 86 | BOOL LLWindowWin32::sIsClassRegistered = FALSE; |
86 | 87 | ||
88 | BOOL LLWindowWin32::sLanguageTextInputAllowed = TRUE; /* XXX */ | ||
89 | BOOL LLWindowWin32::sWinIMEOpened = FALSE; | ||
90 | HKL LLWindowWin32::sWinInputLocale; | ||
91 | DWORD LLWindowWin32::sWinIMEConversionMode; | ||
92 | DWORD LLWindowWin32::sWinIMESentenceMode; | ||
93 | |||
94 | // The following class LLWinImm delegates Windows IMM APIs. | ||
95 | // We need this because some language versions of Windows, | ||
96 | // e.g., US version of Windows XP, doesn't install IMM32.DLL | ||
97 | // as a default, and we can't link against imm32.lib statically. | ||
98 | // I believe DLL loading of this type is best suited to do | ||
99 | // in a static initialization of a class. What I'm not sure is | ||
100 | // whether it follows the Linden Conding Standard... | ||
101 | // See http://wiki.secondlife.com/wiki/Coding_standards#Static_Members | ||
102 | |||
103 | class LLWinImm | ||
104 | { | ||
105 | public: | ||
106 | static bool isAvailable() { return sTheInstance.mHImmDll != NULL; } | ||
107 | |||
108 | public: | ||
109 | // Wrappers for IMM API. | ||
110 | static BOOL isIME(HKL hkl) { return sTheInstance.mImmIsIME(hkl); } | ||
111 | static HIMC getContext(HWND hwnd) { return sTheInstance.mImmGetContext(hwnd); } | ||
112 | static BOOL releaseContext(HWND hwnd, HIMC himc) { return sTheInstance.mImmReleaseContext(hwnd, himc); } | ||
113 | static BOOL getOpenStatus(HIMC himc) { return sTheInstance.mImmGetOpenStatus(himc); } | ||
114 | static BOOL setOpenStatus(HIMC himc, BOOL status) { return sTheInstance.mImmSetOpenStatus(himc, status); } | ||
115 | static BOOL getConversionStatus(HIMC himc, LPDWORD conversion, LPDWORD sentence) { return sTheInstance.mImmGetConversionStatus(himc, conversion, sentence); } | ||
116 | static BOOL setConversionStatus(HIMC himc, DWORD conversion, DWORD sentence) { return sTheInstance.mImmSetConversionStatus(himc, conversion, sentence); } | ||
117 | |||
118 | private: | ||
119 | LLWinImm(); | ||
120 | ~LLWinImm(); | ||
121 | |||
122 | private: | ||
123 | // Pointers to IMM API. | ||
124 | BOOL (WINAPI *mImmIsIME)(HKL); | ||
125 | HIMC (WINAPI *mImmGetContext)(HWND); | ||
126 | BOOL (WINAPI *mImmReleaseContext)(HWND, HIMC); | ||
127 | BOOL (WINAPI *mImmGetOpenStatus)(HIMC); | ||
128 | BOOL (WINAPI *mImmSetOpenStatus)(HIMC, BOOL); | ||
129 | BOOL (WINAPI *mImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD); | ||
130 | BOOL (WINAPI *mImmSetConversionStatus)(HIMC, DWORD, DWORD); | ||
131 | |||
132 | private: | ||
133 | HMODULE mHImmDll; | ||
134 | static LLWinImm sTheInstance; | ||
135 | }; | ||
136 | |||
137 | LLWinImm LLWinImm::sTheInstance; | ||
138 | |||
139 | LLWinImm::LLWinImm() | ||
140 | { | ||
141 | mHImmDll = LoadLibraryA("Imm32"); | ||
142 | if (mHImmDll != NULL) | ||
143 | { | ||
144 | mImmIsIME = (BOOL (WINAPI *)(HKL)) GetProcAddress(mHImmDll, "ImmIsIME"); | ||
145 | mImmGetContext = (HIMC (WINAPI *)(HWND)) GetProcAddress(mHImmDll, "ImmGetContext"); | ||
146 | mImmReleaseContext = (BOOL (WINAPI *)(HWND, HIMC)) GetProcAddress(mHImmDll, "ImmReleaseContext"); | ||
147 | mImmGetOpenStatus = (BOOL (WINAPI *)(HIMC)) GetProcAddress(mHImmDll, "ImmGetOpenStatus"); | ||
148 | mImmSetOpenStatus = (BOOL (WINAPI *)(HIMC, BOOL)) GetProcAddress(mHImmDll, "ImmSetOpenStatus"); | ||
149 | mImmGetConversionStatus = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD)) GetProcAddress(mHImmDll, "ImmGetConversionStatus"); | ||
150 | mImmSetConversionStatus = (BOOL (WINAPI *)(HIMC, DWORD, DWORD)) GetProcAddress(mHImmDll, "ImmSetConversionStatus"); | ||
151 | if (mImmIsIME == NULL || | ||
152 | mImmGetContext == NULL || | ||
153 | mImmReleaseContext == NULL || | ||
154 | mImmGetOpenStatus == NULL || | ||
155 | mImmSetOpenStatus == NULL || | ||
156 | mImmGetConversionStatus == NULL || | ||
157 | mImmSetConversionStatus == NULL) | ||
158 | { | ||
159 | // If any of the above API entires are not found, we can't use IMM API. | ||
160 | // So, turn off the IMM support. We should log some warning message in | ||
161 | // the case, since it is very unusual; these APIs are available from | ||
162 | // the beginning, and all versions of IMM32.DLL should have them all. | ||
163 | // Unfortunately, this code may be executed before initialization of | ||
164 | // the logging channel (llwarns), and we can't do it here... Yes, this | ||
165 | // is one of disadvantages to use static constraction to DLL loading. | ||
166 | FreeLibrary(mHImmDll); | ||
167 | mHImmDll = NULL; | ||
168 | } | ||
169 | } | ||
170 | } | ||
171 | |||
172 | LLWinImm::~LLWinImm() | ||
173 | { | ||
174 | if (mHImmDll != NULL) | ||
175 | { | ||
176 | FreeLibrary(mHImmDll); | ||
177 | mHImmDll = NULL; | ||
178 | } | ||
179 | } | ||
87 | 180 | ||
88 | 181 | ||
89 | LPDIRECTINPUT8 g_pDI = NULL; | 182 | LPDIRECTINPUT8 g_pDI = NULL; |
@@ -111,6 +204,10 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, | |||
111 | // Initialize the keyboard | 204 | // Initialize the keyboard |
112 | gKeyboard = new LLKeyboardWin32(); | 205 | gKeyboard = new LLKeyboardWin32(); |
113 | 206 | ||
207 | // Initialize (boot strap) the Language text input management, | ||
208 | // based on the system's (user's) default settings. | ||
209 | allowLanguageTextInput(FALSE); | ||
210 | |||
114 | GLuint pixel_format; | 211 | GLuint pixel_format; |
115 | WNDCLASS wc; | 212 | WNDCLASS wc; |
116 | DWORD dw_ex_style; | 213 | DWORD dw_ex_style; |
@@ -347,7 +444,6 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, | |||
347 | 444 | ||
348 | if (!mWindowHandle) | 445 | if (!mWindowHandle) |
349 | { | 446 | { |
350 | DestroyWindow(mWindowHandle); | ||
351 | OSMessageBox("Window creation error", "Error", OSMB_OK); | 447 | OSMessageBox("Window creation error", "Error", OSMB_OK); |
352 | return; | 448 | return; |
353 | } | 449 | } |
@@ -1926,6 +2022,15 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
1926 | case WM_CHAR: | 2022 | case WM_CHAR: |
1927 | // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need | 2023 | // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need |
1928 | // to figure out how that works. - Doug | 2024 | // to figure out how that works. - Doug |
2025 | // | ||
2026 | // ... Well, I don't think so. | ||
2027 | // How it works is explained in Win32 API document, but WM_UNICHAR didn't work | ||
2028 | // as specified at least on Windows XP SP1 Japanese version. I have never used | ||
2029 | // it since then, and I'm not sure whether it has been fixed now, but I don't think | ||
2030 | // it is worth trying. The good old WM_CHAR works just fine even for supplementary | ||
2031 | // characters. We just need to take care of surrogate pairs sent as two WM_CHAR's | ||
2032 | // by ourselves. It is not that tough. -- Alissa Sabre @ SL | ||
2033 | // | ||
1929 | // llinfos << "WM_CHAR: " << w_param << llendl; | 2034 | // llinfos << "WM_CHAR: " << w_param << llendl; |
1930 | if (gDebugWindowProc) | 2035 | if (gDebugWindowProc) |
1931 | { | 2036 | { |
@@ -1933,11 +2038,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
1933 | << " key " << S32(w_param) | 2038 | << " key " << S32(w_param) |
1934 | << llendl; | 2039 | << llendl; |
1935 | } | 2040 | } |
1936 | if (window_imp->mCallbacks->handleUnicodeChar(w_param, gKeyboard->currentMask(FALSE))) | 2041 | // Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE, |
1937 | { | 2042 | // we *did* processed the event, so I believe we should not pass it to DefWindowProc... |
1938 | return 0; | 2043 | window_imp->handleUnicodeUTF16((U16)w_param, gKeyboard->currentMask(FALSE)); |
1939 | } | 2044 | return 0; |
1940 | break; | ||
1941 | 2045 | ||
1942 | case WM_LBUTTONDOWN: | 2046 | case WM_LBUTTONDOWN: |
1943 | { | 2047 | { |
@@ -2971,7 +3075,7 @@ void spawn_web_browser(const char* escaped_url ) | |||
2971 | char reg_path_str[256]; /* Flawfinder: ignore */ | 3075 | char reg_path_str[256]; /* Flawfinder: ignore */ |
2972 | snprintf(reg_path_str, sizeof(reg_path_str), "%s\\shell\\open\\command", gURLProtocolWhitelistHandler[i]); /* Flawfinder: ignore */ | 3076 | snprintf(reg_path_str, sizeof(reg_path_str), "%s\\shell\\open\\command", gURLProtocolWhitelistHandler[i]); /* Flawfinder: ignore */ |
2973 | WCHAR reg_path_wstr[256]; | 3077 | WCHAR reg_path_wstr[256]; |
2974 | mbstowcs(reg_path_wstr, reg_path_str, 1024); | 3078 | mbstowcs(reg_path_wstr, reg_path_str, sizeof(reg_path_wstr)/sizeof(reg_path_wstr[0])); |
2975 | 3079 | ||
2976 | HKEY key; | 3080 | HKEY key; |
2977 | WCHAR browser_open_wstr[1024]; | 3081 | WCHAR browser_open_wstr[1024]; |
@@ -3102,6 +3206,58 @@ void LLWindowWin32::bringToFront() | |||
3102 | void LLWindowWin32::focusClient() | 3206 | void LLWindowWin32::focusClient() |
3103 | { | 3207 | { |
3104 | SetFocus ( mWindowHandle ); | 3208 | SetFocus ( mWindowHandle ); |
3105 | }; | 3209 | } |
3210 | |||
3211 | void LLWindowWin32::allowLanguageTextInput(BOOL b) | ||
3212 | { | ||
3213 | if (b == sLanguageTextInputAllowed || !LLWinImm::isAvailable()) | ||
3214 | { | ||
3215 | /* Not actually allowing/disallowing. Do nothing. */ | ||
3216 | return; | ||
3217 | } | ||
3218 | sLanguageTextInputAllowed = b; | ||
3219 | |||
3220 | if (b) | ||
3221 | { | ||
3222 | /* Allowing: Restore the previous IME status, | ||
3223 | so that the user has a feeling that the previous | ||
3224 | text input continues naturally. Be careful, however, | ||
3225 | the IME status is meaningful only during the user keeps | ||
3226 | using same Input Locale (aka Keyboard Layout). */ | ||
3227 | if (sWinIMEOpened && GetKeyboardLayout(0) == sWinInputLocale) | ||
3228 | { | ||
3229 | HIMC himc = LLWinImm::getContext(mWindowHandle); | ||
3230 | LLWinImm::setOpenStatus(himc, TRUE); | ||
3231 | LLWinImm::setConversionStatus(himc, sWinIMEConversionMode, sWinIMESentenceMode); | ||
3232 | LLWinImm::releaseContext(mWindowHandle, himc); | ||
3233 | } | ||
3234 | } | ||
3235 | else | ||
3236 | { | ||
3237 | /* Disallowing: Turn off the IME so that succeeding | ||
3238 | key events bypass IME and come to us directly. | ||
3239 | However, do it after saving the current IME | ||
3240 | status. We need to restore the status when | ||
3241 | allowing language text input again. */ | ||
3242 | sWinInputLocale = GetKeyboardLayout(0); | ||
3243 | sWinIMEOpened = LLWinImm::isIME(sWinInputLocale); | ||
3244 | if (sWinIMEOpened) | ||
3245 | { | ||
3246 | HIMC himc = LLWinImm::getContext(mWindowHandle); | ||
3247 | sWinIMEOpened = LLWinImm::getOpenStatus(himc); | ||
3248 | if (sWinIMEOpened) | ||
3249 | { | ||
3250 | LLWinImm::getConversionStatus(himc, &sWinIMEConversionMode, &sWinIMESentenceMode); | ||
3251 | |||
3252 | /* We need both ImmSetConversionStatus and ImmSetOpenStatus here | ||
3253 | to surely disable IME's keyboard hooking, because Some IME reacts | ||
3254 | only on the former and some other on the latter... */ | ||
3255 | LLWinImm::setConversionStatus(himc, IME_CMODE_NOCONVERSION, sWinIMESentenceMode); | ||
3256 | LLWinImm::setOpenStatus(himc, FALSE); | ||
3257 | } | ||
3258 | LLWinImm::releaseContext(mWindowHandle, himc); | ||
3259 | } | ||
3260 | } | ||
3261 | } | ||
3106 | 3262 | ||
3107 | #endif // LL_WINDOWS | 3263 | #endif // LL_WINDOWS |
diff --git a/linden/indra/llwindow/llwindowwin32.h b/linden/indra/llwindow/llwindowwin32.h index 691c648..0f0cf7c 100644 --- a/linden/indra/llwindow/llwindowwin32.h +++ b/linden/indra/llwindow/llwindowwin32.h | |||
@@ -106,6 +106,8 @@ public: | |||
106 | /*virtual*/ void bringToFront(); | 106 | /*virtual*/ void bringToFront(); |
107 | /*virtual*/ void focusClient(); | 107 | /*virtual*/ void focusClient(); |
108 | 108 | ||
109 | /*virtual*/ void allowLanguageTextInput(BOOL b); | ||
110 | |||
109 | protected: | 111 | protected: |
110 | LLWindowWin32( | 112 | LLWindowWin32( |
111 | char *title, char *name, int x, int y, int width, int height, U32 flags, | 113 | char *title, char *name, int x, int y, int width, int height, U32 flags, |
@@ -174,6 +176,15 @@ protected: | |||
174 | BOOL mMousePositionModified; | 176 | BOOL mMousePositionModified; |
175 | BOOL mInputProcessingPaused; | 177 | BOOL mInputProcessingPaused; |
176 | 178 | ||
179 | // The following five variables are for Language Text Input control. | ||
180 | // They are all static, since one context is shared by all LLWindowWin32 | ||
181 | // instances. | ||
182 | static BOOL sLanguageTextInputAllowed; | ||
183 | static BOOL sWinIMEOpened; | ||
184 | static HKL sWinInputLocale; | ||
185 | static DWORD sWinIMEConversionMode; | ||
186 | static DWORD sWinIMESentenceMode; | ||
187 | |||
177 | friend class LLWindowManager; | 188 | friend class LLWindowManager; |
178 | }; | 189 | }; |
179 | 190 | ||
diff --git a/linden/indra/llxml/llxmlnode.cpp b/linden/indra/llxml/llxmlnode.cpp index 26906a4..bdbb606 100644 --- a/linden/indra/llxml/llxmlnode.cpp +++ b/linden/indra/llxml/llxmlnode.cpp | |||
@@ -41,6 +41,7 @@ | |||
41 | #include "v3dmath.h" | 41 | #include "v3dmath.h" |
42 | #include "v4math.h" | 42 | #include "v4math.h" |
43 | #include "llquaternion.h" | 43 | #include "llquaternion.h" |
44 | #include "llstring.h" | ||
44 | #include "lluuid.h" | 45 | #include "lluuid.h" |
45 | 46 | ||
46 | const S32 MAX_COLUMN_WIDTH = 80; | 47 | const S32 MAX_COLUMN_WIDTH = 80; |
@@ -3088,6 +3089,8 @@ LLString LLXMLNode::getTextContents() const | |||
3088 | msg = mValue.substr(start); | 3089 | msg = mValue.substr(start); |
3089 | } | 3090 | } |
3090 | } | 3091 | } |
3092 | // Convert any internal CR to LF | ||
3093 | msg = utf8str_removeCRLF(msg); | ||
3091 | } | 3094 | } |
3092 | } | 3095 | } |
3093 | return msg; | 3096 | return msg; |
diff --git a/linden/indra/llxml/llxmlparser.cpp b/linden/indra/llxml/llxmlparser.cpp index 4162e7d..5f931d9 100644 --- a/linden/indra/llxml/llxmlparser.cpp +++ b/linden/indra/llxml/llxmlparser.cpp | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file llxmlparser.cpp | 2 | * @file llxmlparser.cpp |
3 | * @brief LLXmlParser implementation | 3 | * @brief LLXmlParser implementation |
4 | * | 4 | * |
5 | * Copyright (c) 2002-2007`, Linden Research, Inc. | 5 | * Copyright (c) 2002-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/lscript/lscript_compile/indra.l b/linden/indra/lscript/lscript_compile/indra.l index 6b4e67d..c219cec 100644 --- a/linden/indra/lscript/lscript_compile/indra.l +++ b/linden/indra/lscript/lscript_compile/indra.l | |||
@@ -1,8 +1,7 @@ | |||
1 | D [-]?[0-9] | ||
2 | N [0-9] | 1 | N [0-9] |
3 | L [a-zA-Z_] | 2 | L [a-zA-Z_] |
4 | H [a-fA-F0-9] | 3 | H [a-fA-F0-9] |
5 | E [Ee][+-]?{D}+ | 4 | E [Ee][+-]?{N}+ |
6 | FS (f|F) | 5 | FS (f|F) |
7 | %e 10000 | 6 | %e 10000 |
8 | %n 4000 | 7 | %n 4000 |
@@ -41,7 +40,7 @@ void parse_string(); | |||
41 | 40 | ||
42 | #define YYLMAX 16384 | 41 | #define YYLMAX 16384 |
43 | #define YY_NEVER_INTERACTIVE 1 /* stops flex from calling isatty() */ | 42 | #define YY_NEVER_INTERACTIVE 1 /* stops flex from calling isatty() */ |
44 | 43 | ||
45 | #if defined(__cplusplus) | 44 | #if defined(__cplusplus) |
46 | extern "C" { int yylex( void ); } | 45 | extern "C" { int yylex( void ); } |
47 | extern "C" { int yyparse( void ); } | 46 | extern "C" { int yyparse( void ); } |
@@ -111,7 +110,7 @@ extern "C" { int yyerror(const char *fmt, ...); } | |||
111 | 110 | ||
112 | 111 | ||
113 | 0[xX]{H}+ { count(); yylval.ival = strtoul(yytext, NULL, 0); return(INTEGER_CONSTANT); } | 112 | 0[xX]{H}+ { count(); yylval.ival = strtoul(yytext, NULL, 0); return(INTEGER_CONSTANT); } |
114 | {D}+ { count(); yylval.ival = strtoul(yytext, NULL, 10); return(INTEGER_CONSTANT); } | 113 | {N}+ { count(); yylval.ival = strtoul(yytext, NULL, 10); return(INTEGER_CONSTANT); } |
115 | "TRUE" { count(); yylval.ival = 1; return(INTEGER_TRUE); } | 114 | "TRUE" { count(); yylval.ival = 1; return(INTEGER_TRUE); } |
116 | "FALSE" { count(); yylval.ival = 0; return(INTEGER_FALSE); } | 115 | "FALSE" { count(); yylval.ival = 0; return(INTEGER_FALSE); } |
117 | "STATUS_PHYSICS" { count(); yylval.ival = 0x1; return(INTEGER_CONSTANT); } | 116 | "STATUS_PHYSICS" { count(); yylval.ival = 0x1; return(INTEGER_CONSTANT); } |
@@ -571,9 +570,9 @@ extern "C" { int yyerror(const char *fmt, ...); } | |||
571 | 570 | ||
572 | {L}({L}|{N})* { count(); yylval.sval = new char[strlen(yytext) + 1]; strcpy(yylval.sval, yytext); return(IDENTIFIER); } | 571 | {L}({L}|{N})* { count(); yylval.sval = new char[strlen(yytext) + 1]; strcpy(yylval.sval, yytext); return(IDENTIFIER); } |
573 | 572 | ||
574 | {D}+{E} { count(); yylval.fval = (F32)atof(yytext); return(FP_CONSTANT); } | 573 | {N}+{E} { count(); yylval.fval = (F32)atof(yytext); return(FP_CONSTANT); } |
575 | {D}*"."{D}+({E})?{FS}? { count(); yylval.fval = (F32)atof(yytext); return(FP_CONSTANT); } | 574 | {N}*"."{N}+({E})?{FS}? { count(); yylval.fval = (F32)atof(yytext); return(FP_CONSTANT); } |
576 | {D}+"."{D}*({E})?{FS}? { count(); yylval.fval = (F32)atof(yytext); return(FP_CONSTANT); } | 575 | {N}+"."{N}*({E})?{FS}? { count(); yylval.fval = (F32)atof(yytext); return(FP_CONSTANT); } |
577 | 576 | ||
578 | L?\"(\\.|[^\\"])*\" { parse_string(); count(); return(STRING_CONSTANT); } | 577 | L?\"(\\.|[^\\"])*\" { parse_string(); count(); return(STRING_CONSTANT); } |
579 | 578 | ||
@@ -751,6 +750,10 @@ BOOL lscript_compile(char *filename, BOOL is_god_like = FALSE) | |||
751 | 750 | ||
752 | S32 yywrap() | 751 | S32 yywrap() |
753 | { | 752 | { |
753 | #ifdef FLEX_SCANNER | ||
754 | // get gcc to stop complaining about lack of use of yyunput | ||
755 | (void) yyunput; | ||
756 | #endif | ||
754 | return(1); | 757 | return(1); |
755 | } | 758 | } |
756 | 759 | ||
diff --git a/linden/indra/lscript/lscript_compile/indra.y b/linden/indra/lscript/lscript_compile/indra.y index 7744649..c7a4fd6 100644 --- a/linden/indra/lscript/lscript_compile/indra.y +++ b/linden/indra/lscript/lscript_compile/indra.y | |||
@@ -143,6 +143,8 @@ | |||
143 | %type <assignable> simple_assignable | 143 | %type <assignable> simple_assignable |
144 | %type <assignable> simple_assignable_no_list | 144 | %type <assignable> simple_assignable_no_list |
145 | %type <constant> constant | 145 | %type <constant> constant |
146 | %type <ival> integer_constant | ||
147 | %type <fval> fp_constant | ||
146 | %type <assignable> special_constant | 148 | %type <assignable> special_constant |
147 | %type <assignable> vector_constant | 149 | %type <assignable> vector_constant |
148 | %type <assignable> quaternion_constant | 150 | %type <assignable> quaternion_constant |
@@ -352,30 +354,50 @@ simple_assignable_no_list | |||
352 | ; | 354 | ; |
353 | 355 | ||
354 | constant | 356 | constant |
355 | : INTEGER_CONSTANT | 357 | : integer_constant |
356 | { | 358 | { |
357 | $$ = new LLScriptConstantInteger(gLine, gColumn, $1); | 359 | $$ = new LLScriptConstantInteger(gLine, gColumn, $1); |
358 | gAllocationManager->addAllocation($$); | 360 | gAllocationManager->addAllocation($$); |
359 | } | 361 | } |
360 | | INTEGER_TRUE | 362 | | fp_constant |
361 | { | 363 | { |
362 | $$ = new LLScriptConstantInteger(gLine, gColumn, $1); | 364 | $$ = new LLScriptConstantFloat(gLine, gColumn, $1); |
363 | gAllocationManager->addAllocation($$); | 365 | gAllocationManager->addAllocation($$); |
364 | } | 366 | } |
365 | | INTEGER_FALSE | 367 | | STRING_CONSTANT |
366 | { | 368 | { |
367 | $$ = new LLScriptConstantInteger(gLine, gColumn, $1); | 369 | $$ = new LLScriptConstantString(gLine, gColumn, $1); |
368 | gAllocationManager->addAllocation($$); | 370 | gAllocationManager->addAllocation($$); |
369 | } | 371 | } |
370 | | FP_CONSTANT | 372 | ; |
373 | |||
374 | fp_constant | ||
375 | : FP_CONSTANT | ||
371 | { | 376 | { |
372 | $$ = new LLScriptConstantFloat(gLine, gColumn, $1); | 377 | $$ = $1; |
373 | gAllocationManager->addAllocation($$); | ||
374 | } | 378 | } |
375 | | STRING_CONSTANT | 379 | | '-' FP_CONSTANT |
376 | { | 380 | { |
377 | $$ = new LLScriptConstantString(gLine, gColumn, $1); | 381 | $$ = -$2; |
378 | gAllocationManager->addAllocation($$); | 382 | } |
383 | ; | ||
384 | |||
385 | integer_constant | ||
386 | : INTEGER_CONSTANT | ||
387 | { | ||
388 | $$ = $1; | ||
389 | } | ||
390 | | INTEGER_TRUE | ||
391 | { | ||
392 | $$ = $1; | ||
393 | } | ||
394 | | INTEGER_FALSE | ||
395 | { | ||
396 | $$ = $1; | ||
397 | } | ||
398 | | '-' INTEGER_CONSTANT | ||
399 | { | ||
400 | $$ = -$2; | ||
379 | } | 401 | } |
380 | ; | 402 | ; |
381 | 403 | ||
diff --git a/linden/indra/lscript/lscript_execute/lscript_execute.cpp b/linden/indra/lscript/lscript_execute/lscript_execute.cpp index 4d8389a..2f81416 100644 --- a/linden/indra/lscript/lscript_execute/lscript_execute.cpp +++ b/linden/indra/lscript/lscript_execute/lscript_execute.cpp | |||
@@ -1387,7 +1387,7 @@ void integer_integer_operation(U8 *buffer, LSCRIPTOpCodesEnum opcode) | |||
1387 | break; | 1387 | break; |
1388 | case LOPC_DIV: | 1388 | case LOPC_DIV: |
1389 | if (rside){ | 1389 | if (rside){ |
1390 | if( ( rside == -1 ) || ( rside == 0xffffffff ) )// division by -1 can have funny results: multiplication is OK: SL-31252 | 1390 | if( ( rside == -1 ) || ( rside == (S32) 0xffffffff ) )// division by -1 can have funny results: multiplication is OK: SL-31252 |
1391 | { | 1391 | { |
1392 | result = -1 * lside; | 1392 | result = -1 * lside; |
1393 | } | 1393 | } |
diff --git a/linden/indra/mac_updater/GenLinkedList.c b/linden/indra/mac_updater/GenLinkedList.c index f1cde85..50a3761 100644 --- a/linden/indra/mac_updater/GenLinkedList.c +++ b/linden/indra/mac_updater/GenLinkedList.c | |||
@@ -209,4 +209,4 @@ void Next( GenIteratorPtr *pIter ) | |||
209 | GenDataPtr GetData( GenIteratorPtr pIter ) | 209 | GenDataPtr GetData( GenIteratorPtr pIter ) |
210 | { | 210 | { |
211 | return ( pIter != NULL ) ? ((GenNode*)pIter)->pData : NULL; | 211 | return ( pIter != NULL ) ? ((GenNode*)pIter)->pData : NULL; |
212 | } \ No newline at end of file | 212 | } |
diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings index 9df6a82..318a129 100644 --- a/linden/indra/newview/English.lproj/InfoPlist.strings +++ b/linden/indra/newview/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 = "Second Life"; | 3 | CFBundleName = "Second Life"; |
4 | CFBundleShortVersionString = "Second Life version 1.17.0.12"; | 4 | CFBundleShortVersionString = "Second Life version 1.17.1.0"; |
5 | CFBundleGetInfoString = "Second Life version 1.17.0.12, Copyright 2004-2007 Linden Research, Inc."; | 5 | CFBundleGetInfoString = "Second Life version 1.17.1.0, Copyright 2004-2007 Linden Research, Inc."; |
diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-SecondLife.plist index a02f664..080f898 100644 --- a/linden/indra/newview/Info-SecondLife.plist +++ b/linden/indra/newview/Info-SecondLife.plist | |||
@@ -32,7 +32,7 @@ | |||
32 | </dict> | 32 | </dict> |
33 | </array> | 33 | </array> |
34 | <key>CFBundleVersion</key> | 34 | <key>CFBundleVersion</key> |
35 | <string>1.17.0.12</string> | 35 | <string>1.17.1.0</string> |
36 | <key>CSResourcesFileMapped</key> | 36 | <key>CSResourcesFileMapped</key> |
37 | <true/> | 37 | <true/> |
38 | </dict> | 38 | </dict> |
diff --git a/linden/indra/newview/app_settings/colors_base.xml b/linden/indra/newview/app_settings/colors_base.xml index 2ef8908..5a9261b 100644 --- a/linden/indra/newview/app_settings/colors_base.xml +++ b/linden/indra/newview/app_settings/colors_base.xml | |||
@@ -10,6 +10,8 @@ | |||
10 | <!-- usually be left as opaque white. --> | 10 | <!-- usually be left as opaque white. --> |
11 | <ButtonColor value="255, 255, 255, 255"/> | 11 | <ButtonColor value="255, 255, 255, 255"/> |
12 | <ButtonImageColor value="255, 255, 255, 255"/> | 12 | <ButtonImageColor value="255, 255, 255, 255"/> |
13 | <!-- Match the caution dialog buttons to the default --> | ||
14 | <ButtonCautionImageColor value="255, 255, 255, 255"/> | ||
13 | 15 | ||
14 | <!-- Text labels for buttons, like the "OK" text --> | 16 | <!-- Text labels for buttons, like the "OK" text --> |
15 | <ButtonLabelColor value="220, 220, 220, 255"/> | 17 | <ButtonLabelColor value="220, 220, 220, 255"/> |
@@ -95,6 +97,10 @@ | |||
95 | <!-- top-right of the screen. --> | 97 | <!-- top-right of the screen. --> |
96 | <NotifyBoxColor value="58, 147, 242, 255"/> | 98 | <NotifyBoxColor value="58, 147, 242, 255"/> |
97 | <NotifyTextColor value="0, 0, 0, 255"/> | 99 | <NotifyTextColor value="0, 0, 0, 255"/> |
100 | <!-- the background color of caution permissions prompts --> | ||
101 | <NotifyCautionBoxColor value="254, 209, 118, 255"/> | ||
102 | <!-- the foreground color of the special title text in caution permissions prompts --> | ||
103 | <NotifyCautionWarnColor value="0, 0, 0, 255"/> | ||
98 | <!-- Background color of focused floaters --> | 104 | <!-- Background color of focused floaters --> |
99 | <FocusBackgroundColor value="62, 62, 62, 255"/> | 105 | <FocusBackgroundColor value="62, 62, 62, 255"/> |
100 | <GroupNotifyBoxColor value="70, 170, 255, 255"/> | 106 | <GroupNotifyBoxColor value="70, 170, 255, 255"/> |
diff --git a/linden/indra/newview/files.lst b/linden/indra/newview/files.lst index 2967bed..d6794d7 100644 --- a/linden/indra/newview/files.lst +++ b/linden/indra/newview/files.lst | |||
@@ -225,6 +225,7 @@ newview/llsky.cpp | |||
225 | newview/llspatialpartition.cpp | 225 | newview/llspatialpartition.cpp |
226 | newview/llsphere.cpp | 226 | newview/llsphere.cpp |
227 | newview/llsprite.cpp | 227 | newview/llsprite.cpp |
228 | newview/llsrv.cpp | ||
228 | newview/llstartup.cpp | 229 | newview/llstartup.cpp |
229 | newview/llstatbar.cpp | 230 | newview/llstatbar.cpp |
230 | newview/llstatgraph.cpp | 231 | newview/llstatgraph.cpp |
diff --git a/linden/indra/newview/fmodwrapper.cpp b/linden/indra/newview/fmodwrapper.cpp index 6d74325..b6f1dc7 100644 --- a/linden/indra/newview/fmodwrapper.cpp +++ b/linden/indra/newview/fmodwrapper.cpp | |||
@@ -36,4 +36,4 @@ void* fmodwrapper(void) | |||
36 | // When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly | 36 | // When building the fmodwrapper library, the linker doesn't seem to want to bring in libfmod.a unless I explicitly |
37 | // reference at least one symbol in the library. This seemed like the simplest way. | 37 | // reference at least one symbol in the library. This seemed like the simplest way. |
38 | return (void*)&FSOUND_Init; | 38 | return (void*)&FSOUND_Init; |
39 | } \ No newline at end of file | 39 | } |
diff --git a/linden/indra/newview/installers/windows/installer_template.nsi b/linden/indra/newview/installers/windows/installer_template.nsi index 1b5226c..7a225fa 100644 --- a/linden/indra/newview/installers/windows/installer_template.nsi +++ b/linden/indra/newview/installers/windows/installer_template.nsi | |||
@@ -37,9 +37,9 @@ XPStyle on ; add an XP manifest to the installer | |||
37 | ;; (these files are in the same place as the nsi template but the python script generates a new nsi file in the | 37 | ;; (these files are in the same place as the nsi template but the python script generates a new nsi file in the |
38 | ;; application directory so we have to add a path to these include files) | 38 | ;; application directory so we have to add a path to these include files) |
39 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 39 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
40 | #!include "installers\windows\lang_de.nsi" | 40 | !include "installers\windows\lang_de.nsi" |
41 | !include "installers\windows\lang_en-us.nsi" | 41 | !include "installers\windows\lang_en-us.nsi" |
42 | #!include "installers\windows\lang_ja.nsi" | 42 | !include "installers\windows\lang_ja.nsi" |
43 | !include "installers\windows\lang_ko.nsi" | 43 | !include "installers\windows\lang_ko.nsi" |
44 | 44 | ||
45 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 45 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
@@ -890,10 +890,10 @@ Function .onInit | |||
890 | Push "" | 890 | Push "" |
891 | Push ${LANG_ENGLISH} | 891 | Push ${LANG_ENGLISH} |
892 | Push English | 892 | Push English |
893 | # Push ${LANG_GERMAN} | 893 | Push ${LANG_GERMAN} |
894 | # Push German | 894 | Push German |
895 | # Push ${LANG_JAPANESE} | 895 | Push ${LANG_JAPANESE} |
896 | # Push Japanese | 896 | Push Japanese |
897 | Push ${LANG_KOREAN} | 897 | Push ${LANG_KOREAN} |
898 | Push Korean | 898 | Push Korean |
899 | Push A ; A means auto count languages for the auto count to work the first empty push (Push "") must remain | 899 | Push A ; A means auto count languages for the auto count to work the first empty push (Push "") must remain |
@@ -909,12 +909,15 @@ Function .onInit | |||
909 | StrCmp $LANGUAGE "1042" 0 +3 | 909 | StrCmp $LANGUAGE "1042" 0 +3 |
910 | StrCpy $LANGFLAGS " -set SystemLanguage ko" | 910 | StrCpy $LANGFLAGS " -set SystemLanguage ko" |
911 | Goto EndOfFunc | 911 | Goto EndOfFunc |
912 | # StrCmp $LANGUAGE "1041" 0 +3 | 912 | |
913 | # StrCpy $LANGFLAGS " -set SystemLanguage ja" | 913 | StrCmp $LANGUAGE "1041" 0 +3 |
914 | # Goto EndOfFunc | 914 | StrCpy $LANGFLAGS " -set SystemLanguage ja" |
915 | # StrCmp $LANGUAGE "1031" 0 +3 | 915 | Goto EndOfFunc |
916 | # StrCpy $LANGFLAGS " -set SystemLanguage de" | 916 | |
917 | # Goto EndOfFunc | 917 | StrCmp $LANGUAGE "1031" 0 +3 |
918 | StrCpy $LANGFLAGS " -set SystemLanguage de" | ||
919 | Goto EndOfFunc | ||
920 | |||
918 | StrCmp $LANGUAGE "1033" 0 +3 | 921 | StrCmp $LANGUAGE "1033" 0 +3 |
919 | StrCpy $LANGFLAGS " -set SystemLanguage en-us" | 922 | StrCpy $LANGFLAGS " -set SystemLanguage en-us" |
920 | Goto EndOfFunc | 923 | Goto EndOfFunc |
diff --git a/linden/indra/newview/licenses-linux.txt b/linden/indra/newview/licenses-linux.txt index 1892b81..826e044 100644 --- a/linden/indra/newview/licenses-linux.txt +++ b/linden/indra/newview/licenses-linux.txt | |||
@@ -547,3 +547,96 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |||
547 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 547 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
548 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 548 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
549 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 549 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
550 | |||
551 | ============== | ||
552 | libpng license | ||
553 | ============== | ||
554 | |||
555 | COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: | ||
556 | |||
557 | If you modify libpng you may insert additional notices immediately following | ||
558 | this sentence. | ||
559 | |||
560 | libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are | ||
561 | Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are | ||
562 | distributed according to the same disclaimer and license as libpng-1.2.5 | ||
563 | with the following individual added to the list of Contributing Authors: | ||
564 | |||
565 | Cosmin Truta | ||
566 | |||
567 | libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are | ||
568 | Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are | ||
569 | distributed according to the same disclaimer and license as libpng-1.0.6 | ||
570 | with the following individuals added to the list of Contributing Authors: | ||
571 | |||
572 | Simon-Pierre Cadieux | ||
573 | Eric S. Raymond | ||
574 | Gilles Vollant | ||
575 | |||
576 | and with the following additions to the disclaimer: | ||
577 | |||
578 | There is no warranty against interference with your enjoyment of the | ||
579 | library or against infringement. There is no warranty that our | ||
580 | efforts or the library will fulfill any of your particular purposes | ||
581 | or needs. This library is provided with all faults, and the entire | ||
582 | risk of satisfactory quality, performance, accuracy, and effort is with | ||
583 | the user. | ||
584 | |||
585 | libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are | ||
586 | Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are | ||
587 | distributed according to the same disclaimer and license as libpng-0.96, | ||
588 | with the following individuals added to the list of Contributing Authors: | ||
589 | |||
590 | Tom Lane | ||
591 | Glenn Randers-Pehrson | ||
592 | Willem van Schaik | ||
593 | |||
594 | libpng versions 0.89, June 1996, through 0.96, May 1997, are | ||
595 | Copyright (c) 1996, 1997 Andreas Dilger | ||
596 | Distributed according to the same disclaimer and license as libpng-0.88, | ||
597 | with the following individuals added to the list of Contributing Authors: | ||
598 | |||
599 | John Bowler | ||
600 | Kevin Bracey | ||
601 | Sam Bushell | ||
602 | Magnus Holmgren | ||
603 | Greg Roelofs | ||
604 | Tom Tanner | ||
605 | |||
606 | libpng versions 0.5, May 1995, through 0.88, January 1996, are | ||
607 | Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. | ||
608 | |||
609 | For the purposes of this copyright and license, "Contributing Authors" | ||
610 | is defined as the following set of individuals: | ||
611 | |||
612 | Andreas Dilger | ||
613 | Dave Martindale | ||
614 | Guy Eric Schalnat | ||
615 | Paul Schmidt | ||
616 | Tim Wegner | ||
617 | |||
618 | The PNG Reference Library is supplied "AS IS". The Contributing Authors | ||
619 | and Group 42, Inc. disclaim all warranties, expressed or implied, | ||
620 | including, without limitation, the warranties of merchantability and of | ||
621 | fitness for any purpose. The Contributing Authors and Group 42, Inc. | ||
622 | assume no liability for direct, indirect, incidental, special, exemplary, | ||
623 | or consequential damages, which may result from the use of the PNG | ||
624 | Reference Library, even if advised of the possibility of such damage. | ||
625 | |||
626 | Permission is hereby granted to use, copy, modify, and distribute this | ||
627 | source code, or portions hereof, for any purpose, without fee, subject | ||
628 | to the following restrictions: | ||
629 | |||
630 | 1. The origin of this source code must not be misrepresented. | ||
631 | |||
632 | 2. Altered versions must be plainly marked as such and | ||
633 | must not be misrepresented as being the original source. | ||
634 | |||
635 | 3. This Copyright notice may not be removed or altered from | ||
636 | any source or altered source distribution. | ||
637 | |||
638 | The Contributing Authors and Group 42, Inc. specifically permit, without | ||
639 | fee, and encourage the use of this source code as a component to | ||
640 | supporting the PNG file format in commercial products. If you use this | ||
641 | source code in a product, acknowledgment is not required but would be | ||
642 | appreciated. | ||
diff --git a/linden/indra/newview/licenses-mac.txt b/linden/indra/newview/licenses-mac.txt index 6fcf461..24539e5 100644 --- a/linden/indra/newview/licenses-mac.txt +++ b/linden/indra/newview/licenses-mac.txt | |||
@@ -432,3 +432,96 @@ jloup@gzip.org | |||
432 | 432 | ||
433 | Mark Adler | 433 | Mark Adler |
434 | madler@alumni.caltech.edu | 434 | madler@alumni.caltech.edu |
435 | |||
436 | ============== | ||
437 | libpng license | ||
438 | ============== | ||
439 | |||
440 | COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: | ||
441 | |||
442 | If you modify libpng you may insert additional notices immediately following | ||
443 | this sentence. | ||
444 | |||
445 | libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are | ||
446 | Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are | ||
447 | distributed according to the same disclaimer and license as libpng-1.2.5 | ||
448 | with the following individual added to the list of Contributing Authors: | ||
449 | |||
450 | Cosmin Truta | ||
451 | |||
452 | libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are | ||
453 | Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are | ||
454 | distributed according to the same disclaimer and license as libpng-1.0.6 | ||
455 | with the following individuals added to the list of Contributing Authors: | ||
456 | |||
457 | Simon-Pierre Cadieux | ||
458 | Eric S. Raymond | ||
459 | Gilles Vollant | ||
460 | |||
461 | and with the following additions to the disclaimer: | ||
462 | |||
463 | There is no warranty against interference with your enjoyment of the | ||
464 | library or against infringement. There is no warranty that our | ||
465 | efforts or the library will fulfill any of your particular purposes | ||
466 | or needs. This library is provided with all faults, and the entire | ||
467 | risk of satisfactory quality, performance, accuracy, and effort is with | ||
468 | the user. | ||
469 | |||
470 | libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are | ||
471 | Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are | ||
472 | distributed according to the same disclaimer and license as libpng-0.96, | ||
473 | with the following individuals added to the list of Contributing Authors: | ||
474 | |||
475 | Tom Lane | ||
476 | Glenn Randers-Pehrson | ||
477 | Willem van Schaik | ||
478 | |||
479 | libpng versions 0.89, June 1996, through 0.96, May 1997, are | ||
480 | Copyright (c) 1996, 1997 Andreas Dilger | ||
481 | Distributed according to the same disclaimer and license as libpng-0.88, | ||
482 | with the following individuals added to the list of Contributing Authors: | ||
483 | |||
484 | John Bowler | ||
485 | Kevin Bracey | ||
486 | Sam Bushell | ||
487 | Magnus Holmgren | ||
488 | Greg Roelofs | ||
489 | Tom Tanner | ||
490 | |||
491 | libpng versions 0.5, May 1995, through 0.88, January 1996, are | ||
492 | Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. | ||
493 | |||
494 | For the purposes of this copyright and license, "Contributing Authors" | ||
495 | is defined as the following set of individuals: | ||
496 | |||
497 | Andreas Dilger | ||
498 | Dave Martindale | ||
499 | Guy Eric Schalnat | ||
500 | Paul Schmidt | ||
501 | Tim Wegner | ||
502 | |||
503 | The PNG Reference Library is supplied "AS IS". The Contributing Authors | ||
504 | and Group 42, Inc. disclaim all warranties, expressed or implied, | ||
505 | including, without limitation, the warranties of merchantability and of | ||
506 | fitness for any purpose. The Contributing Authors and Group 42, Inc. | ||
507 | assume no liability for direct, indirect, incidental, special, exemplary, | ||
508 | or consequential damages, which may result from the use of the PNG | ||
509 | Reference Library, even if advised of the possibility of such damage. | ||
510 | |||
511 | Permission is hereby granted to use, copy, modify, and distribute this | ||
512 | source code, or portions hereof, for any purpose, without fee, subject | ||
513 | to the following restrictions: | ||
514 | |||
515 | 1. The origin of this source code must not be misrepresented. | ||
516 | |||
517 | 2. Altered versions must be plainly marked as such and | ||
518 | must not be misrepresented as being the original source. | ||
519 | |||
520 | 3. This Copyright notice may not be removed or altered from | ||
521 | any source or altered source distribution. | ||
522 | |||
523 | The Contributing Authors and Group 42, Inc. specifically permit, without | ||
524 | fee, and encourage the use of this source code as a component to | ||
525 | supporting the PNG file format in commercial products. If you use this | ||
526 | source code in a product, acknowledgment is not required but would be | ||
527 | appreciated. | ||
diff --git a/linden/indra/newview/licenses-win32.txt b/linden/indra/newview/licenses-win32.txt index 6fcf461..24539e5 100644 --- a/linden/indra/newview/licenses-win32.txt +++ b/linden/indra/newview/licenses-win32.txt | |||
@@ -432,3 +432,96 @@ jloup@gzip.org | |||
432 | 432 | ||
433 | Mark Adler | 433 | Mark Adler |
434 | madler@alumni.caltech.edu | 434 | madler@alumni.caltech.edu |
435 | |||
436 | ============== | ||
437 | libpng license | ||
438 | ============== | ||
439 | |||
440 | COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: | ||
441 | |||
442 | If you modify libpng you may insert additional notices immediately following | ||
443 | this sentence. | ||
444 | |||
445 | libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are | ||
446 | Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are | ||
447 | distributed according to the same disclaimer and license as libpng-1.2.5 | ||
448 | with the following individual added to the list of Contributing Authors: | ||
449 | |||
450 | Cosmin Truta | ||
451 | |||
452 | libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are | ||
453 | Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are | ||
454 | distributed according to the same disclaimer and license as libpng-1.0.6 | ||
455 | with the following individuals added to the list of Contributing Authors: | ||
456 | |||
457 | Simon-Pierre Cadieux | ||
458 | Eric S. Raymond | ||
459 | Gilles Vollant | ||
460 | |||
461 | and with the following additions to the disclaimer: | ||
462 | |||
463 | There is no warranty against interference with your enjoyment of the | ||
464 | library or against infringement. There is no warranty that our | ||
465 | efforts or the library will fulfill any of your particular purposes | ||
466 | or needs. This library is provided with all faults, and the entire | ||
467 | risk of satisfactory quality, performance, accuracy, and effort is with | ||
468 | the user. | ||
469 | |||
470 | libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are | ||
471 | Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are | ||
472 | distributed according to the same disclaimer and license as libpng-0.96, | ||
473 | with the following individuals added to the list of Contributing Authors: | ||
474 | |||
475 | Tom Lane | ||
476 | Glenn Randers-Pehrson | ||
477 | Willem van Schaik | ||
478 | |||
479 | libpng versions 0.89, June 1996, through 0.96, May 1997, are | ||
480 | Copyright (c) 1996, 1997 Andreas Dilger | ||
481 | Distributed according to the same disclaimer and license as libpng-0.88, | ||
482 | with the following individuals added to the list of Contributing Authors: | ||
483 | |||
484 | John Bowler | ||
485 | Kevin Bracey | ||
486 | Sam Bushell | ||
487 | Magnus Holmgren | ||
488 | Greg Roelofs | ||
489 | Tom Tanner | ||
490 | |||
491 | libpng versions 0.5, May 1995, through 0.88, January 1996, are | ||
492 | Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. | ||
493 | |||
494 | For the purposes of this copyright and license, "Contributing Authors" | ||
495 | is defined as the following set of individuals: | ||
496 | |||
497 | Andreas Dilger | ||
498 | Dave Martindale | ||
499 | Guy Eric Schalnat | ||
500 | Paul Schmidt | ||
501 | Tim Wegner | ||
502 | |||
503 | The PNG Reference Library is supplied "AS IS". The Contributing Authors | ||
504 | and Group 42, Inc. disclaim all warranties, expressed or implied, | ||
505 | including, without limitation, the warranties of merchantability and of | ||
506 | fitness for any purpose. The Contributing Authors and Group 42, Inc. | ||
507 | assume no liability for direct, indirect, incidental, special, exemplary, | ||
508 | or consequential damages, which may result from the use of the PNG | ||
509 | Reference Library, even if advised of the possibility of such damage. | ||
510 | |||
511 | Permission is hereby granted to use, copy, modify, and distribute this | ||
512 | source code, or portions hereof, for any purpose, without fee, subject | ||
513 | to the following restrictions: | ||
514 | |||
515 | 1. The origin of this source code must not be misrepresented. | ||
516 | |||
517 | 2. Altered versions must be plainly marked as such and | ||
518 | must not be misrepresented as being the original source. | ||
519 | |||
520 | 3. This Copyright notice may not be removed or altered from | ||
521 | any source or altered source distribution. | ||
522 | |||
523 | The Contributing Authors and Group 42, Inc. specifically permit, without | ||
524 | fee, and encourage the use of this source code as a component to | ||
525 | supporting the PNG file format in commercial products. If you use this | ||
526 | source code in a product, acknowledgment is not required but would be | ||
527 | appreciated. | ||
diff --git a/linden/indra/newview/linux_tools/wrapper.sh b/linden/indra/newview/linux_tools/wrapper.sh index 048aaf6..d77da88 100755 --- a/linden/indra/newview/linux_tools/wrapper.sh +++ b/linden/indra/newview/linux_tools/wrapper.sh | |||
@@ -38,7 +38,7 @@ export LL_GL_BASICEXT=x | |||
38 | ## you're building your own viewer, bear in mind that the executable | 38 | ## you're building your own viewer, bear in mind that the executable |
39 | ## in the bin directory will be stripped: you should replace it with | 39 | ## in the bin directory will be stripped: you should replace it with |
40 | ## an unstripped binary before you run. | 40 | ## an unstripped binary before you run. |
41 | #export LL_WRAPPER='valgrind --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp' | 41 | #export LL_WRAPPER='valgrind --smc-check=all --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp' |
42 | 42 | ||
43 | ## - Avoids an often-buggy X feature that doesn't really benefit us anyway. | 43 | ## - Avoids an often-buggy X feature that doesn't really benefit us anyway. |
44 | export SDL_VIDEO_X11_DGAMOUSE=0 | 44 | export SDL_VIDEO_X11_DGAMOUSE=0 |
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 83b8c0c..150e35f 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp | |||
@@ -2019,11 +2019,6 @@ void LLAgent::setAFK() | |||
2019 | return; | 2019 | return; |
2020 | } | 2020 | } |
2021 | 2021 | ||
2022 | if (!gAllowAFK) | ||
2023 | { | ||
2024 | return; | ||
2025 | } | ||
2026 | |||
2027 | if (!gAgent.getRegion()) | 2022 | if (!gAgent.getRegion()) |
2028 | { | 2023 | { |
2029 | // Don't set AFK if we're not talking to a region yet. | 2024 | // Don't set AFK if we're not talking to a region yet. |
@@ -4983,7 +4978,7 @@ BOOL LLAgent::allowOperation(PermissionBit op, | |||
4983 | const LLPermissions& perm, | 4978 | const LLPermissions& perm, |
4984 | U64 group_proxy_power, | 4979 | U64 group_proxy_power, |
4985 | U8 god_minimum) | 4980 | U8 god_minimum) |
4986 | { | 4981 | { |
4987 | // Check god level. | 4982 | // Check god level. |
4988 | if (getGodLevel() >= god_minimum) return TRUE; | 4983 | if (getGodLevel() >= god_minimum) return TRUE; |
4989 | 4984 | ||
diff --git a/linden/indra/newview/llagent.h b/linden/indra/newview/llagent.h index e375227..0ca9f22 100644 --- a/linden/indra/newview/llagent.h +++ b/linden/indra/newview/llagent.h | |||
@@ -240,7 +240,7 @@ public: | |||
240 | const LLUUID &getGroupID() const { return mGroupID; } | 240 | const LLUUID &getGroupID() const { return mGroupID; } |
241 | ECameraMode getCameraMode() const { return mCameraMode; } | 241 | ECameraMode getCameraMode() const { return mCameraMode; } |
242 | BOOL getFocusOnAvatar() const { return mFocusOnAvatar; } | 242 | BOOL getFocusOnAvatar() const { return mFocusOnAvatar; } |
243 | LLViewerObject* getFocusObject() const { return mFocusObject; } | 243 | LLPointer<LLViewerObject>& getFocusObject() { return mFocusObject; } |
244 | F32 getFocusObjectDist() const { return mFocusObjectDist; } | 244 | F32 getFocusObjectDist() const { return mFocusObjectDist; } |
245 | BOOL inPrelude(); | 245 | BOOL inPrelude(); |
246 | BOOL canManageEstate() const; | 246 | BOOL canManageEstate() const; |
diff --git a/linden/indra/newview/llassetuploadresponders.cpp b/linden/indra/newview/llassetuploadresponders.cpp index 789beaa..79faec1 100644 --- a/linden/indra/newview/llassetuploadresponders.cpp +++ b/linden/indra/newview/llassetuploadresponders.cpp | |||
@@ -122,7 +122,7 @@ void LLAssetUploadResponder::uploadUpload(const LLSD& content) | |||
122 | else | 122 | else |
123 | { | 123 | { |
124 | LLHTTPClient::postFile(uploader, mFileName, this); | 124 | LLHTTPClient::postFile(uploader, mFileName, this); |
125 | } | 125 | } |
126 | } | 126 | } |
127 | 127 | ||
128 | void LLAssetUploadResponder::uploadFailure(const LLSD& content) | 128 | void LLAssetUploadResponder::uploadFailure(const LLSD& content) |
diff --git a/linden/indra/newview/llcape.h b/linden/indra/newview/llcape.h index 64cf2c4..1ccdc9c 100644 --- a/linden/indra/newview/llcape.h +++ b/linden/indra/newview/llcape.h | |||
@@ -211,7 +211,7 @@ class LLVOCloth : public LLViewerObject | |||
211 | //-------------------------------------- | 211 | //-------------------------------------- |
212 | LLClothAttributes mAttributes; // these determine the characteristics of the cloth | 212 | LLClothAttributes mAttributes; // these determine the characteristics of the cloth |
213 | LLVector3 mAvatarCollisionSpherePosition; // derived from the avatar | 213 | LLVector3 mAvatarCollisionSpherePosition; // derived from the avatar |
214 | LLViewerObject* mDummyVO [ CLOTH_MAX_STRANDS ]; | 214 | LLPointer<LLViewerObject> mDummyVO [ CLOTH_MAX_STRANDS ]; |
215 | LLVolumeImplFlexible* mStrand [ CLOTH_MAX_STRANDS ]; // the array of strands that make up the cloth | 215 | LLVolumeImplFlexible* mStrand [ CLOTH_MAX_STRANDS ]; // the array of strands that make up the cloth |
216 | 216 | ||
217 | 217 | ||
diff --git a/linden/indra/newview/llchatbar.cpp b/linden/indra/newview/llchatbar.cpp index 539c935..66ffdc4 100644 --- a/linden/indra/newview/llchatbar.cpp +++ b/linden/indra/newview/llchatbar.cpp | |||
@@ -447,7 +447,7 @@ void LLChatBar::sendChat( EChatType type ) | |||
447 | if (!text.empty()) | 447 | if (!text.empty()) |
448 | { | 448 | { |
449 | // store sent line in history, duplicates will get filtered | 449 | // store sent line in history, duplicates will get filtered |
450 | mInputEditor->updateHistory(); | 450 | if (mInputEditor) mInputEditor->updateHistory(); |
451 | // Check if this is destined for another channel | 451 | // Check if this is destined for another channel |
452 | S32 channel = 0; | 452 | S32 channel = 0; |
453 | stripChannelNumber(text, &channel); | 453 | stripChannelNumber(text, &channel); |
diff --git a/linden/indra/newview/llcontroldef.cpp b/linden/indra/newview/llcontroldef.cpp index 2b394e9..7481d99 100644 --- a/linden/indra/newview/llcontroldef.cpp +++ b/linden/indra/newview/llcontroldef.cpp | |||
@@ -61,6 +61,7 @@ void declare_settings() | |||
61 | gSavedSettings.declareColor4("SystemChatColor", LLColor4(0.8f, 1.f, 1.f, 1.f), "Color of chat messages from SL System"); | 61 | gSavedSettings.declareColor4("SystemChatColor", LLColor4(0.8f, 1.f, 1.f, 1.f), "Color of chat messages from SL System"); |
62 | gSavedSettings.declareColor4("AgentChatColor", LLColor4(1.0f, 1.0f, 1.0f, 1.0f), "Color of chat messages from other residents"); | 62 | gSavedSettings.declareColor4("AgentChatColor", LLColor4(1.0f, 1.0f, 1.0f, 1.0f), "Color of chat messages from other residents"); |
63 | gSavedSettings.declareColor4("ObjectChatColor", LLColor4(0.7f, 0.9f, 0.7f, 1.0f), "Color of chat messages from objects"); | 63 | gSavedSettings.declareColor4("ObjectChatColor", LLColor4(0.7f, 0.9f, 0.7f, 1.0f), "Color of chat messages from objects"); |
64 | gSavedSettings.declareColor4("llOwnerSayChatColor", LLColor4(0.7f, 0.0f, 0.7f, 1.0f), "Color of chat messages from objects only visible to the owner"); | ||
64 | gSavedSettings.declareColor4("BackgroundChatColor", LLColor4(0.f, 0.f, 0.f, 1.0f), "Color of chat bubble background"); | 65 | gSavedSettings.declareColor4("BackgroundChatColor", LLColor4(0.f, 0.f, 0.f, 1.0f), "Color of chat bubble background"); |
65 | gSavedSettings.declareColor4("ScriptErrorColor", LLColor4(0.82f, 0.82f, 0.99f, 1.0f), "Color of script error messages"); | 66 | gSavedSettings.declareColor4("ScriptErrorColor", LLColor4(0.82f, 0.82f, 0.99f, 1.0f), "Color of script error messages"); |
66 | gSavedSettings.declareColor4("HTMLLinkColor", LLColor4(0.6f, 0.6f, 1.0f, 1.0f), "Color of hyperlinks"); | 67 | gSavedSettings.declareColor4("HTMLLinkColor", LLColor4(0.6f, 0.6f, 1.0f, 1.0f), "Color of hyperlinks"); |
@@ -228,7 +229,7 @@ void declare_settings() | |||
228 | gSavedSettings.declareBOOL("UseChatBubbles", FALSE, "Show chat above avatars head in chat bubbles"); | 229 | gSavedSettings.declareBOOL("UseChatBubbles", FALSE, "Show chat above avatars head in chat bubbles"); |
229 | gSavedSettings.declareF32("ChatBubbleOpacity", 0.5f, "Opacity of chat bubble background (0.0 = completely transparent, 1.0 = completely opaque)"); | 230 | gSavedSettings.declareF32("ChatBubbleOpacity", 0.5f, "Opacity of chat bubble background (0.0 = completely transparent, 1.0 = completely opaque)"); |
230 | 231 | ||
231 | gSavedSettings.declareBOOL("AllowAFK", TRUE, "Automatically set AFK (away from keyboard) mode when idle"); | 232 | gSavedSettings.declareBOOL("AllowIdleAFK", TRUE, "Automatically set AFK (away from keyboard) mode when idle"); |
232 | gSavedSettings.declareF32("AFKTimeout", 300.f, "Time before automatically setting AFK (away from keyboard) mode (seconds)"); // 5 minutes | 233 | gSavedSettings.declareF32("AFKTimeout", 300.f, "Time before automatically setting AFK (away from keyboard) mode (seconds)"); // 5 minutes |
233 | 234 | ||
234 | gSavedSettings.declareBOOL("SmallAvatarNames", TRUE, "Display avatar name text in smaller font"); | 235 | gSavedSettings.declareBOOL("SmallAvatarNames", TRUE, "Display avatar name text in smaller font"); |
@@ -237,6 +238,13 @@ void declare_settings() | |||
237 | gSavedSettings.declareBOOL("ChatShowTimestamps", TRUE, "Show timestamps in chat"); | 238 | gSavedSettings.declareBOOL("ChatShowTimestamps", TRUE, "Show timestamps in chat"); |
238 | 239 | ||
239 | //------------------------------------------------------------------------ | 240 | //------------------------------------------------------------------------ |
241 | // Caution Script Permission Prompts | ||
242 | //------------------------------------------------------------------------ | ||
243 | |||
244 | gSavedSettings.declareBOOL("PermissionsCautionEnabled", TRUE, "When enabled, changes the handling of script permission requests to help avoid accidental granting of certain permissions, such as the debit permission", NO_PERSIST); | ||
245 | gSavedSettings.declareS32("PermissionsCautionNotifyBoxHeight", 344, "Height of caution-style notification messages", NO_PERSIST); | ||
246 | |||
247 | //------------------------------------------------------------------------ | ||
240 | // Other.... | 248 | // Other.... |
241 | //------------------------------------------------------------------------ | 249 | //------------------------------------------------------------------------ |
242 | 250 | ||
@@ -624,8 +632,10 @@ void declare_settings() | |||
624 | LLFirstUse::addConfigVariable("FirstInventory"); | 632 | LLFirstUse::addConfigVariable("FirstInventory"); |
625 | LLFirstUse::addConfigVariable("FirstSandbox"); | 633 | LLFirstUse::addConfigVariable("FirstSandbox"); |
626 | LLFirstUse::addConfigVariable("FirstFlexible"); | 634 | LLFirstUse::addConfigVariable("FirstFlexible"); |
635 | LLFirstUse::addConfigVariable("FirstDebugMenus"); | ||
627 | LLFirstUse::addConfigVariable("FirstStreamingMusic"); | 636 | LLFirstUse::addConfigVariable("FirstStreamingMusic"); |
628 | LLFirstUse::addConfigVariable("FirstStreamingVideo"); | 637 | LLFirstUse::addConfigVariable("FirstStreamingVideo"); |
638 | LLFirstUse::addConfigVariable("FirstSculptedPrim"); | ||
629 | 639 | ||
630 | gSavedSettings.declareBOOL("ShowDebugConsole", FALSE, "Show log in SL window"); | 640 | gSavedSettings.declareBOOL("ShowDebugConsole", FALSE, "Show log in SL window"); |
631 | gSavedSettings.declareBOOL("ShowDebugStats", FALSE, "Show performance stats display"); | 641 | gSavedSettings.declareBOOL("ShowDebugStats", FALSE, "Show performance stats display"); |
@@ -826,6 +836,10 @@ void declare_settings() | |||
826 | gSavedPerAccountSettings.declareBOOL("LogInstantMessages", FALSE, "Log Instant Messages"); | 836 | gSavedPerAccountSettings.declareBOOL("LogInstantMessages", FALSE, "Log Instant Messages"); |
827 | gSavedPerAccountSettings.declareBOOL("LogChat", FALSE, "Log Chat"); | 837 | gSavedPerAccountSettings.declareBOOL("LogChat", FALSE, "Log Chat"); |
828 | gSavedPerAccountSettings.declareBOOL("LogShowHistory", FALSE, "Log Show History"); | 838 | gSavedPerAccountSettings.declareBOOL("LogShowHistory", FALSE, "Log Show History"); |
839 | gSavedPerAccountSettings.declareBOOL("IMLogTimestamp", FALSE, "Log Timestamp of Instant Messages"); | ||
840 | gSavedPerAccountSettings.declareBOOL("LogChatTimestamp", FALSE, "Log Timestamp of Chat"); | ||
841 | gSavedPerAccountSettings.declareBOOL("LogChatIM", FALSE, "Log Incoming Instant Messages with Chat"); | ||
842 | gSavedPerAccountSettings.declareBOOL("LogTimestampDate", FALSE, "Include Date with Timestamp"); | ||
829 | 843 | ||
830 | // Inventory | 844 | // Inventory |
831 | gSavedSettings.declareRect("FloaterInventoryRect", LLRect(0, 400, 300, 0), "Rectangle for inventory window" ); | 845 | gSavedSettings.declareRect("FloaterInventoryRect", LLRect(0, 400, 300, 0), "Rectangle for inventory window" ); |
@@ -973,7 +987,7 @@ void declare_settings() | |||
973 | gSavedSettings.declareU32("RegionTextureSize", 256, "Terrain texture dimensions (power of 2)"); | 987 | gSavedSettings.declareU32("RegionTextureSize", 256, "Terrain texture dimensions (power of 2)"); |
974 | 988 | ||
975 | // Selection option | 989 | // Selection option |
976 | gSavedSettings.declareBOOL("SelectLinkedSet", TRUE, "", NO_PERSIST); | 990 | gSavedSettings.declareBOOL("EditLinkedParts", FALSE, "Select individual parts of linked objects", NO_PERSIST); |
977 | 991 | ||
978 | // Selection beam | 992 | // Selection beam |
979 | gSavedSettings.declareBOOL("ShowSelectionBeam", TRUE, "Show selection particle beam when selecting or interacting with objects."); | 993 | gSavedSettings.declareBOOL("ShowSelectionBeam", TRUE, "Show selection particle beam when selecting or interacting with objects."); |
diff --git a/linden/indra/newview/lldebugmessagebox.cpp b/linden/indra/newview/lldebugmessagebox.cpp index e238800..948b96a 100644 --- a/linden/indra/newview/lldebugmessagebox.cpp +++ b/linden/indra/newview/lldebugmessagebox.cpp | |||
@@ -77,6 +77,9 @@ LLDebugVarMessageBox::LLDebugVarMessageBox(const std::string& title, EDebugVarTy | |||
77 | addChild(mSlider2); | 77 | addChild(mSlider2); |
78 | addChild(mSlider3); | 78 | addChild(mSlider3); |
79 | break; | 79 | break; |
80 | default: | ||
81 | llwarns << "Unhandled var type " << var_type << llendl; | ||
82 | break; | ||
80 | } | 83 | } |
81 | 84 | ||
82 | mAnimateButton = new LLButton("Animate", LLRect(20, 45, 180, 25), "", onAnimateClicked, this); | 85 | mAnimateButton = new LLButton("Animate", LLRect(20, 45, 180, 25), "", onAnimateClicked, this); |
@@ -185,12 +188,17 @@ void LLDebugVarMessageBox::slider_changed(LLUICtrl* ctrl, void* user_data) | |||
185 | *((S32*)msg_box->mVarData) = (S32)msg_box->mSlider1->getValue().asInteger(); | 188 | *((S32*)msg_box->mVarData) = (S32)msg_box->mSlider1->getValue().asInteger(); |
186 | break; | 189 | break; |
187 | case VAR_TYPE_VEC3: | 190 | case VAR_TYPE_VEC3: |
191 | { | ||
188 | LLVector3* vec_p = (LLVector3*)msg_box->mVarData; | 192 | LLVector3* vec_p = (LLVector3*)msg_box->mVarData; |
189 | vec_p->setVec((F32)msg_box->mSlider1->getValue().asReal(), | 193 | vec_p->setVec((F32)msg_box->mSlider1->getValue().asReal(), |
190 | (F32)msg_box->mSlider2->getValue().asReal(), | 194 | (F32)msg_box->mSlider2->getValue().asReal(), |
191 | (F32)msg_box->mSlider3->getValue().asReal()); | 195 | (F32)msg_box->mSlider3->getValue().asReal()); |
192 | break; | 196 | break; |
193 | } | 197 | } |
198 | default: | ||
199 | llwarns << "Unhandled var type " << msg_box->mVarType << llendl; | ||
200 | break; | ||
201 | } | ||
194 | } | 202 | } |
195 | 203 | ||
196 | void LLDebugVarMessageBox::onAnimateClicked(void* user_data) | 204 | void LLDebugVarMessageBox::onAnimateClicked(void* user_data) |
@@ -217,10 +225,15 @@ void LLDebugVarMessageBox::draw() | |||
217 | snprintf(text, sizeof(text), "%d", *((S32*)mVarData)); /* Flawfinder: ignore */ | 225 | snprintf(text, sizeof(text), "%d", *((S32*)mVarData)); /* Flawfinder: ignore */ |
218 | break; | 226 | break; |
219 | case VAR_TYPE_VEC3: | 227 | case VAR_TYPE_VEC3: |
228 | { | ||
220 | LLVector3* vec_p = (LLVector3*)mVarData; | 229 | LLVector3* vec_p = (LLVector3*)mVarData; |
221 | snprintf(text, sizeof(text), "%.3f %.3f %.3f", vec_p->mV[VX], vec_p->mV[VY], vec_p->mV[VZ]); /* Flawfinder: ignore */ | 230 | snprintf(text, sizeof(text), "%.3f %.3f %.3f", vec_p->mV[VX], vec_p->mV[VY], vec_p->mV[VZ]); /* Flawfinder: ignore */ |
222 | break; | 231 | break; |
223 | } | 232 | } |
233 | default: | ||
234 | llwarns << "Unhandled var type " << mVarType << llendl; | ||
235 | break; | ||
236 | } | ||
224 | mText->setText(text); | 237 | mText->setText(text); |
225 | 238 | ||
226 | if(mAnimate) | 239 | if(mAnimate) |
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp index a39416c..f5f69ea 100644 --- a/linden/indra/newview/lldrawable.cpp +++ b/linden/indra/newview/lldrawable.cpp | |||
@@ -1324,7 +1324,7 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* | |||
1324 | 1324 | ||
1325 | if (parent) | 1325 | if (parent) |
1326 | { | 1326 | { |
1327 | av = (LLVOAvatar*) parent->getVObj(); | 1327 | av = (LLVOAvatar*) parent->getVObj().get(); |
1328 | 1328 | ||
1329 | if (!av->isVisible()) | 1329 | if (!av->isVisible()) |
1330 | { | 1330 | { |
diff --git a/linden/indra/newview/lldrawable.h b/linden/indra/newview/lldrawable.h index 7429292..97e512f 100644 --- a/linden/indra/newview/lldrawable.h +++ b/linden/indra/newview/lldrawable.h | |||
@@ -82,8 +82,8 @@ public: | |||
82 | 82 | ||
83 | const LLViewerRegion* getRegion() const { return mVObjp->getRegion(); } | 83 | const LLViewerRegion* getRegion() const { return mVObjp->getRegion(); } |
84 | const LLTextureEntry* getTextureEntry(U8 which) const { return mVObjp->getTE(which); } | 84 | const LLTextureEntry* getTextureEntry(U8 which) const { return mVObjp->getTE(which); } |
85 | LLViewerObject* getVObj() { return mVObjp; } | 85 | LLPointer<LLViewerObject>& getVObj() { return mVObjp; } |
86 | const LLViewerObject* getVObj() const { return mVObjp; } | 86 | const LLViewerObject *getVObj() const { return mVObjp; } |
87 | LLVOVolume* getVOVolume() const; // cast mVObjp tp LLVOVolume if OK | 87 | LLVOVolume* getVOVolume() const; // cast mVObjp tp LLVOVolume if OK |
88 | 88 | ||
89 | const LLMatrix4& getWorldMatrix() const { return mXform.getWorldMatrix(); } | 89 | const LLMatrix4& getWorldMatrix() const { return mXform.getWorldMatrix(); } |
diff --git a/linden/indra/newview/lldrawpool.cpp b/linden/indra/newview/lldrawpool.cpp index 4a1794e..0ab5b54 100644 --- a/linden/indra/newview/lldrawpool.cpp +++ b/linden/indra/newview/lldrawpool.cpp | |||
@@ -486,15 +486,20 @@ void LLRenderPass::renderInvisible(U32 mask) | |||
486 | 486 | ||
487 | std::vector<LLDrawInfo*>& draw_info = gPipeline.mRenderMap[LLRenderPass::PASS_INVISIBLE]; | 487 | std::vector<LLDrawInfo*>& draw_info = gPipeline.mRenderMap[LLRenderPass::PASS_INVISIBLE]; |
488 | 488 | ||
489 | U32* indices_pointer = NULL; | ||
490 | for (std::vector<LLDrawInfo*>::iterator i = draw_info.begin(); i != draw_info.end(); ++i) | 489 | for (std::vector<LLDrawInfo*>::iterator i = draw_info.begin(); i != draw_info.end(); ++i) |
491 | { | 490 | { |
492 | LLDrawInfo& params = **i; | 491 | LLDrawInfo& params = **i; |
493 | params.mVertexBuffer->setBuffer(mask); | 492 | |
494 | indices_pointer = (U32*) params.mVertexBuffer->getIndicesPointer(); | 493 | if (params.mVertexBuffer) |
495 | glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, params.mCount, | 494 | { |
496 | GL_UNSIGNED_INT, indices_pointer+params.mOffset); | 495 | params.mVertexBuffer->setBuffer(mask); |
497 | gPipeline.mTrianglesDrawn += params.mCount/3; | 496 | U32 *indices_pointer = |
497 | (U32 *) params.mVertexBuffer->getIndicesPointer(); | ||
498 | glDrawRangeElements(GL_TRIANGLES, params.mStart, params.mEnd, | ||
499 | params.mCount, GL_UNSIGNED_INT, | ||
500 | indices_pointer + params.mOffset); | ||
501 | gPipeline.mTrianglesDrawn += params.mCount / 3; | ||
502 | } | ||
498 | } | 503 | } |
499 | } | 504 | } |
500 | 505 | ||
diff --git a/linden/indra/newview/lldrawpoolavatar.cpp b/linden/indra/newview/lldrawpoolavatar.cpp index b864449..ae76aeb 100644 --- a/linden/indra/newview/lldrawpoolavatar.cpp +++ b/linden/indra/newview/lldrawpoolavatar.cpp | |||
@@ -319,7 +319,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) | |||
319 | { | 319 | { |
320 | return; | 320 | return; |
321 | } | 321 | } |
322 | avatarp = (LLVOAvatar *)(facep->getDrawable()->getVObj()); | 322 | avatarp = (LLVOAvatar *)facep->getDrawable()->getVObj().get(); |
323 | } | 323 | } |
324 | 324 | ||
325 | if (avatarp->isDead() || avatarp->mDrawable.isNull()) | 325 | if (avatarp->isDead() || avatarp->mDrawable.isNull()) |
@@ -525,7 +525,7 @@ void LLDrawPoolAvatar::renderForSelect() | |||
525 | { | 525 | { |
526 | return; | 526 | return; |
527 | } | 527 | } |
528 | LLVOAvatar *avatarp = (LLVOAvatar *)(facep->getDrawable()->getVObj()); | 528 | LLVOAvatar *avatarp = (LLVOAvatar *)facep->getDrawable()->getVObj().get(); |
529 | 529 | ||
530 | if (avatarp->isDead() || avatarp->mIsDummy || avatarp->mDrawable.isNull()) | 530 | if (avatarp->isDead() || avatarp->mIsDummy || avatarp->mDrawable.isNull()) |
531 | { | 531 | { |
diff --git a/linden/indra/newview/lldrawpooltree.cpp b/linden/indra/newview/lldrawpooltree.cpp index 2f380f8..6749178 100644 --- a/linden/indra/newview/lldrawpooltree.cpp +++ b/linden/indra/newview/lldrawpooltree.cpp | |||
@@ -164,7 +164,7 @@ void LLDrawPoolTree::renderTree(BOOL selecting) | |||
164 | U32* indicesp = (U32*) face->mVertexBuffer->getIndicesPointer(); | 164 | U32* indicesp = (U32*) face->mVertexBuffer->getIndicesPointer(); |
165 | 165 | ||
166 | // Render each of the trees | 166 | // Render each of the trees |
167 | LLVOTree *treep = (LLVOTree *)drawablep->getVObj(); | 167 | LLVOTree *treep = (LLVOTree *)drawablep->getVObj().get(); |
168 | 168 | ||
169 | LLColor4U color(255,255,255,255); | 169 | LLColor4U color(255,255,255,255); |
170 | 170 | ||
diff --git a/linden/indra/newview/lldriverparam.h b/linden/indra/newview/lldriverparam.h index e96d5ce..f7b0819 100644 --- a/linden/indra/newview/lldriverparam.h +++ b/linden/indra/newview/lldriverparam.h | |||
@@ -104,7 +104,7 @@ protected: | |||
104 | typedef std::vector<LLDrivenEntry> entry_list_t; | 104 | typedef std::vector<LLDrivenEntry> entry_list_t; |
105 | entry_list_t mDriven; | 105 | entry_list_t mDriven; |
106 | LLViewerVisualParam* mCurrentDistortionParam; | 106 | LLViewerVisualParam* mCurrentDistortionParam; |
107 | LLVOAvatar* mAvatarp; | 107 | LLPointer<LLVOAvatar> mAvatarp; |
108 | }; | 108 | }; |
109 | 109 | ||
110 | #endif // LL_LLDRIVERPARAM_H | 110 | #endif // LL_LLDRIVERPARAM_H |
diff --git a/linden/indra/newview/lleventpoll.cpp b/linden/indra/newview/lleventpoll.cpp index 7430fc3..dd59a06 100644 --- a/linden/indra/newview/lleventpoll.cpp +++ b/linden/indra/newview/lleventpoll.cpp | |||
@@ -1,8 +1,8 @@ | |||
1 | /** | 1 | /** |
2 | * @file lleventpoll.cpp | 2 | * @file lleventpoll.cpp |
3 | * @brief Implementation of the LLEventPoll class. | 3 | * @brief Implementation of the LLEventPoll class. |
4 | * | 4 | * |
5 | * Copyright (c) 2006-2007, Linden Research, Inc. | 5 | * Copyright (c) 2006-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp index 342c76e..782048c 100644 --- a/linden/indra/newview/llface.cpp +++ b/linden/indra/newview/llface.cpp | |||
@@ -1398,7 +1398,7 @@ void LLFace::enableLights() const | |||
1398 | } | 1398 | } |
1399 | if (isState(LIGHT)) | 1399 | if (isState(LIGHT)) |
1400 | { | 1400 | { |
1401 | const LLVOVolume* vovolume = (const LLVOVolume*)(mDrawablep->getVObj()); | 1401 | const LLVOVolume* vovolume = (const LLVOVolume*)mDrawablep->getVObj(); |
1402 | gPipeline.setAmbient(vovolume->getLightColor()); | 1402 | gPipeline.setAmbient(vovolume->getLightColor()); |
1403 | } | 1403 | } |
1404 | } | 1404 | } |
diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp index 24d3932..3620c05 100644 --- a/linden/indra/newview/llfilepicker.cpp +++ b/linden/indra/newview/llfilepicker.cpp | |||
@@ -49,7 +49,7 @@ LLFilePicker LLFilePicker::sInstance; | |||
49 | 49 | ||
50 | #if LL_WINDOWS | 50 | #if LL_WINDOWS |
51 | #define SOUND_FILTER L"Sounds (*.wav)\0*.wav\0" | 51 | #define SOUND_FILTER L"Sounds (*.wav)\0*.wav\0" |
52 | #define IMAGE_FILTER L"Images (*.tga; *.bmp; *.jpg; *.jpeg)\0*.tga;*.bmp;*.jpg;*.jpeg\0" | 52 | #define IMAGE_FILTER L"Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)\0*.tga;*.bmp;*.jpg;*.jpeg;*.png\0" |
53 | #define ANIM_FILTER L"Animations (*.bvh)\0*.bvh\0" | 53 | #define ANIM_FILTER L"Animations (*.bvh)\0*.bvh\0" |
54 | #ifdef _CORY_TESTING | 54 | #ifdef _CORY_TESTING |
55 | #define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0" | 55 | #define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0" |
@@ -511,10 +511,12 @@ Boolean LLFilePicker::navOpenFilterProc(AEDesc *theItem, void *info, void *callB | |||
511 | if (fileInfo.filetype != 'JPEG' && fileInfo.filetype != 'JPG ' && | 511 | if (fileInfo.filetype != 'JPEG' && fileInfo.filetype != 'JPG ' && |
512 | fileInfo.filetype != 'BMP ' && fileInfo.filetype != 'TGA ' && | 512 | fileInfo.filetype != 'BMP ' && fileInfo.filetype != 'TGA ' && |
513 | fileInfo.filetype != 'BMPf' && fileInfo.filetype != 'TPIC' && | 513 | fileInfo.filetype != 'BMPf' && fileInfo.filetype != 'TPIC' && |
514 | fileInfo.filetype != 'PNG ' && | ||
514 | (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("jpeg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && | 515 | (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("jpeg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && |
515 | CFStringCompare(fileInfo.extension, CFSTR("jpg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && | 516 | CFStringCompare(fileInfo.extension, CFSTR("jpg"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && |
516 | CFStringCompare(fileInfo.extension, CFSTR("bmp"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && | 517 | CFStringCompare(fileInfo.extension, CFSTR("bmp"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && |
517 | CFStringCompare(fileInfo.extension, CFSTR("tga"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) | 518 | CFStringCompare(fileInfo.extension, CFSTR("tga"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && |
519 | CFStringCompare(fileInfo.extension, CFSTR("png"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) | ||
518 | ) | 520 | ) |
519 | { | 521 | { |
520 | result = false; | 522 | result = false; |
@@ -1169,7 +1171,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter ) | |||
1169 | case FFLOAD_ANIM: | 1171 | case FFLOAD_ANIM: |
1170 | caption += "Animations (*.bvh)"; break; | 1172 | caption += "Animations (*.bvh)"; break; |
1171 | case FFLOAD_IMAGE: | 1173 | case FFLOAD_IMAGE: |
1172 | caption += "Images (*.tga; *.bmp; *.jpg; *.jpeg)"; break; | 1174 | caption += "Images (*.tga; *.bmp; *.jpg; *.jpeg; *.png)"; break; |
1173 | default:; | 1175 | default:; |
1174 | break; | 1176 | break; |
1175 | } | 1177 | } |
diff --git a/linden/indra/newview/llfirstuse.cpp b/linden/indra/newview/llfirstuse.cpp index 74381dc..1ddac8e 100644 --- a/linden/indra/newview/llfirstuse.cpp +++ b/linden/indra/newview/llfirstuse.cpp | |||
@@ -60,6 +60,18 @@ void LLFirstUse::disableFirstUse() | |||
60 | } | 60 | } |
61 | } | 61 | } |
62 | 62 | ||
63 | // static | ||
64 | void LLFirstUse::resetFirstUse() | ||
65 | { | ||
66 | // Set all first-use warnings to disabled | ||
67 | for (std::set<LLString>::iterator iter = sConfigVariables.begin(); | ||
68 | iter != sConfigVariables.end(); ++iter) | ||
69 | { | ||
70 | gSavedSettings.setWarning(*iter, TRUE); | ||
71 | } | ||
72 | } | ||
73 | |||
74 | |||
63 | // Called whenever the viewer detects that your balance went up | 75 | // Called whenever the viewer detects that your balance went up |
64 | void LLFirstUse::useBalanceIncrease(S32 delta) | 76 | void LLFirstUse::useBalanceIncrease(S32 delta) |
65 | { | 77 | { |
@@ -214,3 +226,25 @@ void LLFirstUse::useFlexible() | |||
214 | } | 226 | } |
215 | } | 227 | } |
216 | 228 | ||
229 | // static | ||
230 | void LLFirstUse::useDebugMenus() | ||
231 | { | ||
232 | if (gSavedSettings.getWarning("FirstDebugMenus")) | ||
233 | { | ||
234 | gSavedSettings.setWarning("FirstDebugMenus", FALSE); | ||
235 | |||
236 | LLNotifyBox::showXml("FirstDebugMenus"); | ||
237 | } | ||
238 | } | ||
239 | |||
240 | // static | ||
241 | void LLFirstUse::useSculptedPrim() | ||
242 | { | ||
243 | if (gSavedSettings.getWarning("FirstSculptedPrim")) | ||
244 | { | ||
245 | gSavedSettings.setWarning("FirstSculptedPrim", FALSE); | ||
246 | |||
247 | LLNotifyBox::showXml("FirstSculptedPrim"); | ||
248 | |||
249 | } | ||
250 | } | ||
diff --git a/linden/indra/newview/llfirstuse.h b/linden/indra/newview/llfirstuse.h index 4d0e754..d48ae96 100644 --- a/linden/indra/newview/llfirstuse.h +++ b/linden/indra/newview/llfirstuse.h | |||
@@ -66,6 +66,10 @@ object or from inventory. | |||
66 | 11. FIrst time you run the client on a system without QuickTime installed. | 66 | 11. FIrst time you run the client on a system without QuickTime installed. |
67 | 67 | ||
68 | 12. First time you create a flexible object. | 68 | 12. First time you create a flexible object. |
69 | |||
70 | 13. First time you open the debug menus (ctrl-alt-shift D) | ||
71 | |||
72 | 14. First time you create/edit a sculpted prim. | ||
69 | */ | 73 | */ |
70 | 74 | ||
71 | class LLFirstUse | 75 | class LLFirstUse |
@@ -76,6 +80,7 @@ public: | |||
76 | 80 | ||
77 | // Sets all controls back to show the dialogs. | 81 | // Sets all controls back to show the dialogs. |
78 | static void disableFirstUse(); | 82 | static void disableFirstUse(); |
83 | static void resetFirstUse(); | ||
79 | 84 | ||
80 | // These methods are called each time the appropriate action is | 85 | // These methods are called each time the appropriate action is |
81 | // taken. The functions themselves handle only showing the dialog | 86 | // taken. The functions themselves handle only showing the dialog |
@@ -94,6 +99,8 @@ public: | |||
94 | static void useInventory(); | 99 | static void useInventory(); |
95 | static void useSandbox(); | 100 | static void useSandbox(); |
96 | static void useFlexible(); | 101 | static void useFlexible(); |
102 | static void useDebugMenus(); | ||
103 | static void useSculptedPrim(); | ||
97 | 104 | ||
98 | protected: | 105 | protected: |
99 | static std::set<LLString> sConfigVariables; | 106 | static std::set<LLString> sConfigVariables; |
diff --git a/linden/indra/newview/llflexibleobject.cpp b/linden/indra/newview/llflexibleobject.cpp index 0dce348..8e4fe91 100644 --- a/linden/indra/newview/llflexibleobject.cpp +++ b/linden/indra/newview/llflexibleobject.cpp | |||
@@ -252,12 +252,6 @@ void LLVolumeImplFlexible::onSetVolume(const LLVolumeParams &volume_params, cons | |||
252 | //--------------------------------------------------------------------------------- | 252 | //--------------------------------------------------------------------------------- |
253 | BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) | 253 | BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) |
254 | { | 254 | { |
255 | if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE)) | ||
256 | { | ||
257 | return FALSE; // (we are not initialized or updated) | ||
258 | } | ||
259 | |||
260 | LLFastTimer ftm(LLFastTimer::FTM_FLEXIBLE_UPDATE); | ||
261 | 255 | ||
262 | if (mVO->mDrawable.isNull()) | 256 | if (mVO->mDrawable.isNull()) |
263 | { | 257 | { |
@@ -272,6 +266,8 @@ BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F6 | |||
272 | LLViewerObject* parent = (LLViewerObject*) mVO->getParent(); | 266 | LLViewerObject* parent = (LLViewerObject*) mVO->getParent(); |
273 | parent->mDrawable->mQuietCount = 0; | 267 | parent->mDrawable->mQuietCount = 0; |
274 | } | 268 | } |
269 | |||
270 | LLFastTimer ftm(LLFastTimer::FTM_FLEXIBLE_UPDATE); | ||
275 | 271 | ||
276 | S32 new_res = mAttributes->getSimulateLOD(); | 272 | S32 new_res = mAttributes->getSimulateLOD(); |
277 | 273 | ||
@@ -284,6 +280,8 @@ BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F6 | |||
284 | { | 280 | { |
285 | mRenderRes = FLEXIBLE_OBJECT_MAX_SECTIONS; | 281 | mRenderRes = FLEXIBLE_OBJECT_MAX_SECTIONS; |
286 | } | 282 | } |
283 | |||
284 | |||
287 | // Bottom cap at 1/4 the original number of sections | 285 | // Bottom cap at 1/4 the original number of sections |
288 | if (mRenderRes < mAttributes->getSimulateLOD()-1) | 286 | if (mRenderRes < mAttributes->getSimulateLOD()-1) |
289 | { | 287 | { |
@@ -301,6 +299,10 @@ BOOL LLVolumeImplFlexible::doIdleUpdate(LLAgent &agent, LLWorld &world, const F6 | |||
301 | setAttributesOfAllSections(); | 299 | setAttributesOfAllSections(); |
302 | mInitialized = TRUE; | 300 | mInitialized = TRUE; |
303 | } | 301 | } |
302 | if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE)) | ||
303 | { | ||
304 | return FALSE; // (we are not initialized or updated) | ||
305 | } | ||
304 | 306 | ||
305 | if (mVO->mDrawable->isVisible() && | 307 | if (mVO->mDrawable->isVisible() && |
306 | !mVO->mDrawable->isState(LLDrawable::IN_REBUILD_Q1) && | 308 | !mVO->mDrawable->isState(LLDrawable::IN_REBUILD_Q1) && |
@@ -624,7 +626,7 @@ void LLVolumeImplFlexible::onSetScale(const LLVector3& scale, BOOL damped) | |||
624 | 626 | ||
625 | BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) | 627 | BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) |
626 | { | 628 | { |
627 | LLVOVolume *volume = (LLVOVolume*)mVO; | 629 | LLVOVolume *volume = (LLVOVolume*)mVO.get(); |
628 | 630 | ||
629 | if (volume->mDrawable.isNull()) // Not sure why this is happening, but it is... | 631 | if (volume->mDrawable.isNull()) // Not sure why this is happening, but it is... |
630 | { | 632 | { |
@@ -740,7 +742,7 @@ void LLVolumeImplFlexible::updateRelativeXform() | |||
740 | { | 742 | { |
741 | LLQuaternion delta_rot; | 743 | LLQuaternion delta_rot; |
742 | LLVector3 delta_pos, delta_scale; | 744 | LLVector3 delta_pos, delta_scale; |
743 | LLVOVolume* vo = (LLVOVolume*) mVO; | 745 | LLVOVolume* vo = (LLVOVolume*) mVO.get(); |
744 | 746 | ||
745 | //matrix from local space to parent relative/global space | 747 | //matrix from local space to parent relative/global space |
746 | delta_rot = vo->mDrawable->isSpatialRoot() ? LLQuaternion() : vo->mDrawable->getRotation(); | 748 | delta_rot = vo->mDrawable->isSpatialRoot() ? LLQuaternion() : vo->mDrawable->getRotation(); |
diff --git a/linden/indra/newview/llflexibleobject.h b/linden/indra/newview/llflexibleobject.h index 3d35dd2..507073b 100644 --- a/linden/indra/newview/llflexibleobject.h +++ b/linden/indra/newview/llflexibleobject.h | |||
@@ -111,7 +111,7 @@ class LLVolumeImplFlexible : public LLVolumeInterface | |||
111 | //-------------------------------------- | 111 | //-------------------------------------- |
112 | // private members | 112 | // private members |
113 | //-------------------------------------- | 113 | //-------------------------------------- |
114 | LLViewerObject* mVO; | 114 | LLPointer<LLViewerObject> mVO; |
115 | LLTimer mTimer; | 115 | LLTimer mTimer; |
116 | LLVector3 mAnchorPosition; | 116 | LLVector3 mAnchorPosition; |
117 | LLVector3 mParentPosition; | 117 | LLVector3 mParentPosition; |
diff --git a/linden/indra/newview/llfloateranimpreview.h b/linden/indra/newview/llfloateranimpreview.h index f6d9589..c536fb5 100644 --- a/linden/indra/newview/llfloateranimpreview.h +++ b/linden/indra/newview/llfloateranimpreview.h | |||
@@ -61,7 +61,7 @@ protected: | |||
61 | F32 mCameraZoom; | 61 | F32 mCameraZoom; |
62 | LLVector3 mCameraOffset; | 62 | LLVector3 mCameraOffset; |
63 | LLVector3 mCameraRelPos; | 63 | LLVector3 mCameraRelPos; |
64 | LLVOAvatar* mDummyAvatar; | 64 | LLPointer<LLVOAvatar> mDummyAvatar; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | class LLFloaterAnimPreview : public LLFloaterNameDesc | 67 | class LLFloaterAnimPreview : public LLFloaterNameDesc |
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp index d31532f..5e416d4 100644 --- a/linden/indra/newview/llfloaterchat.cpp +++ b/linden/indra/newview/llfloaterchat.cpp | |||
@@ -150,12 +150,22 @@ void add_timestamped_line(LLViewerTextEditor* edit, const LLString& line, const | |||
150 | edit->appendColoredText(line, false, prepend_newline, color); | 150 | edit->appendColoredText(line, false, prepend_newline, color); |
151 | } | 151 | } |
152 | 152 | ||
153 | void log_chat_text(const LLChat& chat) | ||
154 | { | ||
155 | LLString histstr; | ||
156 | if (gSavedPerAccountSettings.getBOOL("LogChatTimestamp")) | ||
157 | histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + chat.mText; | ||
158 | else | ||
159 | histstr = chat.mText; | ||
160 | |||
161 | LLLogChat::saveHistory("chat",histstr); | ||
162 | } | ||
153 | // static | 163 | // static |
154 | void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) | 164 | void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) |
155 | { | 165 | { |
156 | if ( gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file) | 166 | if ( gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file) |
157 | { | 167 | { |
158 | LLLogChat::saveHistory("chat",chat.mText); | 168 | log_chat_text(chat); |
159 | } | 169 | } |
160 | 170 | ||
161 | LLColor4 color = get_text_color(chat); | 171 | LLColor4 color = get_text_color(chat); |
@@ -364,10 +374,14 @@ void LLFloaterChat::addChat(const LLChat& chat, | |||
364 | gConsole->addLine(chat.mText, size, text_color); | 374 | gConsole->addLine(chat.mText, size, text_color); |
365 | } | 375 | } |
366 | 376 | ||
367 | if( !from_instant_message || gSavedSettings.getBOOL("IMInChatHistory") ) | 377 | if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) |
368 | { | 378 | log_chat_text(chat); |
379 | |||
380 | if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) | ||
381 | addChatHistory(chat,false); | ||
382 | |||
383 | if(!from_instant_message) | ||
369 | addChatHistory(chat); | 384 | addChatHistory(chat); |
370 | } | ||
371 | } | 385 | } |
372 | 386 | ||
373 | LLColor4 get_text_color(const LLChat& chat) | 387 | LLColor4 get_text_color(const LLChat& chat) |
@@ -400,6 +414,10 @@ LLColor4 get_text_color(const LLChat& chat) | |||
400 | { | 414 | { |
401 | text_color = gSavedSettings.getColor4("ScriptErrorColor"); | 415 | text_color = gSavedSettings.getColor4("ScriptErrorColor"); |
402 | } | 416 | } |
417 | else if ( chat.mChatType == CHAT_TYPE_OWNER ) | ||
418 | { | ||
419 | text_color = gSavedSettings.getColor4("llOwnerSayChatColor"); | ||
420 | } | ||
403 | else | 421 | else |
404 | { | 422 | { |
405 | text_color = gSavedSettings.getColor4("ObjectChatColor"); | 423 | text_color = gSavedSettings.getColor4("ObjectChatColor"); |
diff --git a/linden/indra/newview/llfloatercustomize.cpp b/linden/indra/newview/llfloatercustomize.cpp index ee83bf9..62ead8f 100644 --- a/linden/indra/newview/llfloatercustomize.cpp +++ b/linden/indra/newview/llfloatercustomize.cpp | |||
@@ -422,6 +422,8 @@ public: | |||
422 | static void onTextureCommit( LLUICtrl* ctrl, void* userdata ); | 422 | static void onTextureCommit( LLUICtrl* ctrl, void* userdata ); |
423 | static void onColorCommit( LLUICtrl* ctrl, void* userdata ); | 423 | static void onColorCommit( LLUICtrl* ctrl, void* userdata ); |
424 | static void onCommitSexChange( LLUICtrl*, void* userdata ); | 424 | static void onCommitSexChange( LLUICtrl*, void* userdata ); |
425 | static void onSelectAutoWearOption(S32 option, void* data); | ||
426 | |||
425 | 427 | ||
426 | 428 | ||
427 | private: | 429 | private: |
@@ -662,6 +664,11 @@ void LLPanelEditWearable::onBtnRevert( void* userdata ) | |||
662 | void LLPanelEditWearable::onBtnCreateNew( void* userdata ) | 664 | void LLPanelEditWearable::onBtnCreateNew( void* userdata ) |
663 | { | 665 | { |
664 | LLPanelEditWearable* self = (LLPanelEditWearable*) userdata; | 666 | LLPanelEditWearable* self = (LLPanelEditWearable*) userdata; |
667 | gViewerWindow->alertXml("AutoWearNewClothing", onSelectAutoWearOption, self); | ||
668 | } | ||
669 | void LLPanelEditWearable::onSelectAutoWearOption(S32 option, void* data) | ||
670 | { | ||
671 | LLPanelEditWearable* self = (LLPanelEditWearable*) data; | ||
665 | LLVOAvatar* avatar = gAgent.getAvatarObject(); | 672 | LLVOAvatar* avatar = gAgent.getAvatarObject(); |
666 | if(avatar) | 673 | if(avatar) |
667 | { | 674 | { |
@@ -673,14 +680,15 @@ void LLPanelEditWearable::onBtnCreateNew( void* userdata ) | |||
673 | // regular UI, items get created in normal folder | 680 | // regular UI, items get created in normal folder |
674 | folder_id = gInventory.findCategoryUUIDForType(asset_type); | 681 | folder_id = gInventory.findCategoryUUIDForType(asset_type); |
675 | 682 | ||
676 | LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback; | 683 | // Only auto wear the new item if the AutoWearNewClothing checkbox is selected. |
684 | LLPointer<LLInventoryCallback> cb = option == 0 ? | ||
685 | new WearOnAvatarCallback : NULL; | ||
677 | create_inventory_item(gAgent.getID(), gAgent.getSessionID(), | 686 | create_inventory_item(gAgent.getID(), gAgent.getSessionID(), |
678 | folder_id, wearable->getTransactionID(), wearable->getName(), wearable->getDescription(), | 687 | folder_id, wearable->getTransactionID(), wearable->getName(), wearable->getDescription(), |
679 | asset_type, LLInventoryType::IT_WEARABLE, wearable->getType(), | 688 | asset_type, LLInventoryType::IT_WEARABLE, wearable->getType(), |
680 | wearable->getPermissions().getMaskNextOwner(), cb); | 689 | wearable->getPermissions().getMaskNextOwner(), cb); |
681 | } | 690 | } |
682 | } | 691 | } |
683 | |||
684 | void LLPanelEditWearable::addColorSwatch( LLVOAvatar::ETextureIndex te, const LLString& name ) | 692 | void LLPanelEditWearable::addColorSwatch( LLVOAvatar::ETextureIndex te, const LLString& name ) |
685 | { | 693 | { |
686 | childSetCommitCallback(name, LLPanelEditWearable::onColorCommit, this); | 694 | childSetCommitCallback(name, LLPanelEditWearable::onColorCommit, this); |
diff --git a/linden/indra/newview/llfloaterhtmlhelp.cpp b/linden/indra/newview/llfloaterhtmlhelp.cpp index 4612674..9cae4cc 100644 --- a/linden/indra/newview/llfloaterhtmlhelp.cpp +++ b/linden/indra/newview/llfloaterhtmlhelp.cpp | |||
@@ -34,6 +34,8 @@ | |||
34 | #include "llwebbrowserctrl.h" | 34 | #include "llwebbrowserctrl.h" |
35 | #include "llviewerwindow.h" | 35 | #include "llviewerwindow.h" |
36 | #include "llviewercontrol.h" | 36 | #include "llviewercontrol.h" |
37 | #include "llweb.h" | ||
38 | #include "llui.h" | ||
37 | 39 | ||
38 | #if LL_LIBXUL_ENABLED | 40 | #if LL_LIBXUL_ENABLED |
39 | 41 | ||
@@ -63,7 +65,9 @@ public: | |||
63 | 65 | ||
64 | // used for some stats logging - will be removed at some point | 66 | // used for some stats logging - will be removed at some point |
65 | static BOOL sFloaterOpened; | 67 | static BOOL sFloaterOpened; |
66 | 68 | ||
69 | static void onClickF1HelpLoadURL(S32 option, void* userdata); | ||
70 | |||
67 | protected: | 71 | protected: |
68 | LLWebBrowserCtrl* mWebBrowser; | 72 | LLWebBrowserCtrl* mWebBrowser; |
69 | static LLFloaterHtmlHelp* sInstance; | 73 | static LLFloaterHtmlHelp* sInstance; |
@@ -163,24 +167,55 @@ void LLFloaterHtmlHelp::draw() | |||
163 | // | 167 | // |
164 | void LLFloaterHtmlHelp::show(std::string url) | 168 | void LLFloaterHtmlHelp::show(std::string url) |
165 | { | 169 | { |
166 | sFloaterOpened = true; | 170 | gViewerWindow->alertXml("ClickOpenF1Help", onClickF1HelpLoadURL, (void*) NULL); |
167 | 171 | ||
168 | if ( sInstance ) | 172 | // switching this out for the moment - will come back later |
173 | // want it still to be compiled so not using comments of #if 0 | ||
174 | if ( false ) | ||
169 | { | 175 | { |
170 | if (sInstance->mWebBrowser) | 176 | sFloaterOpened = true; |
177 | |||
178 | if ( sInstance ) | ||
171 | { | 179 | { |
172 | sInstance->mWebBrowser->navigateTo(url); | 180 | if (sInstance->mWebBrowser) |
181 | { | ||
182 | sInstance->mWebBrowser->navigateTo(url); | ||
183 | } | ||
184 | sInstance->setVisibleAndFrontmost(); | ||
185 | return; | ||
173 | } | 186 | } |
174 | sInstance->setVisibleAndFrontmost(); | ||
175 | return; | ||
176 | } | ||
177 | 187 | ||
178 | LLFloaterHtmlHelp* self = new LLFloaterHtmlHelp(url); | 188 | LLFloaterHtmlHelp* self = new LLFloaterHtmlHelp(url); |
189 | |||
190 | // reposition floater from saved settings | ||
191 | LLRect rect = gSavedSettings.getRect( "HtmlHelpRect" ); | ||
192 | self->reshape( rect.getWidth(), rect.getHeight(), FALSE ); | ||
193 | self->setRect( rect ); | ||
194 | }; | ||
195 | } | ||
196 | |||
197 | // static | ||
198 | void LLFloaterHtmlHelp::onClickF1HelpLoadURL(S32 option, void* userdata) | ||
199 | { | ||
200 | if (option == 0) | ||
201 | { | ||
202 | // choose HELP url based on selected language - default to english language support page | ||
203 | LLString lang = LLUI::sConfigGroup->getString("Language"); | ||
204 | |||
205 | // this sucks but there isn't a way to grab an arbitrary string from an XML file | ||
206 | // (using llcontroldef strings causes problems if string don't exist) | ||
207 | LLString help_url( "https://support.secondlife.com/" ); | ||
208 | if ( lang == "ja" ) | ||
209 | help_url = "http://help.secondlife.com/jp"; | ||
210 | else | ||
211 | if ( lang == "ko" ) | ||
212 | help_url = "http://help.secondlife.com/kr"; | ||
213 | else | ||
214 | if ( lang == "pt" ) | ||
215 | help_url = "http://help.secondlife.com/pt"; | ||
179 | 216 | ||
180 | // reposition floater from saved settings | 217 | LLWeb::loadURL( help_url ); |
181 | LLRect rect = gSavedSettings.getRect( "HtmlHelpRect" ); | 218 | }; |
182 | self->reshape( rect.getWidth(), rect.getHeight(), FALSE ); | ||
183 | self->setRect( rect ); | ||
184 | } | 219 | } |
185 | 220 | ||
186 | //////////////////////////////////////////////////////////////////////////////// | 221 | //////////////////////////////////////////////////////////////////////////////// |
diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp index 9dfaa49..0a91563 100644 --- a/linden/indra/newview/llfloaterimagepreview.cpp +++ b/linden/indra/newview/llfloaterimagepreview.cpp | |||
@@ -33,6 +33,7 @@ | |||
33 | #include "llimagebmp.h" | 33 | #include "llimagebmp.h" |
34 | #include "llimagetga.h" | 34 | #include "llimagetga.h" |
35 | #include "llimagejpeg.h" | 35 | #include "llimagejpeg.h" |
36 | #include "llimagepng.h" | ||
36 | 37 | ||
37 | #include "llagent.h" | 38 | #include "llagent.h" |
38 | #include "llbutton.h" | 39 | #include "llbutton.h" |
@@ -325,6 +326,10 @@ bool LLFloaterImagePreview::loadImage(const char *src_filename) | |||
325 | { | 326 | { |
326 | codec = IMG_CODEC_JPEG; | 327 | codec = IMG_CODEC_JPEG; |
327 | } | 328 | } |
329 | else if( 0 == strnicmp(ext, ".png", 4) ) | ||
330 | { | ||
331 | codec = IMG_CODEC_PNG; | ||
332 | } | ||
328 | 333 | ||
329 | LLPointer<LLImageRaw> raw_image = new LLImageRaw; | 334 | LLPointer<LLImageRaw> raw_image = new LLImageRaw; |
330 | 335 | ||
@@ -382,6 +387,21 @@ bool LLFloaterImagePreview::loadImage(const char *src_filename) | |||
382 | } | 387 | } |
383 | } | 388 | } |
384 | break; | 389 | break; |
390 | case IMG_CODEC_PNG: | ||
391 | { | ||
392 | LLPointer<LLImagePNG> png_image = new LLImagePNG; | ||
393 | |||
394 | if (!png_image->load(src_filename)) | ||
395 | { | ||
396 | return false; | ||
397 | } | ||
398 | |||
399 | if (!png_image->decode(raw_image)) | ||
400 | { | ||
401 | return false; | ||
402 | } | ||
403 | } | ||
404 | break; | ||
385 | default: | 405 | default: |
386 | return false; | 406 | return false; |
387 | } | 407 | } |
diff --git a/linden/indra/newview/llfloaterinspect.cpp b/linden/indra/newview/llfloaterinspect.cpp index 4899649..85cfc4e 100644 --- a/linden/indra/newview/llfloaterinspect.cpp +++ b/linden/indra/newview/llfloaterinspect.cpp | |||
@@ -2,7 +2,7 @@ | |||
2 | * @file llfloaterinspect.cpp | 2 | * @file llfloaterinspect.cpp |
3 | * @brief Floater for object inspection tool | 3 | * @brief Floater for object inspection tool |
4 | * | 4 | * |
5 | * Copyright (c) 2002-2007, Linden Research, Inc. | 5 | * Copyright (c) 2006-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/newview/llfloaterinspect.h b/linden/indra/newview/llfloaterinspect.h index ab453b4..ed4ebd1 100644 --- a/linden/indra/newview/llfloaterinspect.h +++ b/linden/indra/newview/llfloaterinspect.h | |||
@@ -1,10 +1,10 @@ | |||
1 | /** | 1 | /** |
2 | * @file llfloaterfriends.h | 2 | * @file llfloaterinspect.h |
3 | * @author Cube | 3 | * @author Cube |
4 | * @date 2006-12-16 | 4 | * @date 2006-12-16 |
5 | * @brief Declaration of class for displaying object attributes | 5 | * @brief Declaration of class for displaying object attributes |
6 | * | 6 | * |
7 | * Copyright (c) 2005-2007, Linden Research, Inc. | 7 | * Copyright (c) 2006-2007, Linden Research, Inc. |
8 | * | 8 | * |
9 | * Second Life Viewer Source Code | 9 | * Second Life Viewer Source Code |
10 | * The source code in this file ("Source Code") is provided by Linden Lab | 10 | * The source code in this file ("Source Code") is provided by Linden Lab |
diff --git a/linden/indra/newview/llfloaterland.cpp b/linden/indra/newview/llfloaterland.cpp index 82b50ec..ee89975 100644 --- a/linden/indra/newview/llfloaterland.cpp +++ b/linden/indra/newview/llfloaterland.cpp | |||
@@ -1557,6 +1557,13 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo | |||
1557 | { | 1557 | { |
1558 | LLPanelLandObjects* self = LLFloaterLand::getCurrentPanelLandObjects(); | 1558 | LLPanelLandObjects* self = LLFloaterLand::getCurrentPanelLandObjects(); |
1559 | 1559 | ||
1560 | if (!self) | ||
1561 | { | ||
1562 | llwarns << "Received message for nonexistent LLPanelLandObject" | ||
1563 | << llendl; | ||
1564 | return; | ||
1565 | } | ||
1566 | |||
1560 | const LLFontGL* FONT = LLFontGL::sSansSerif; | 1567 | const LLFontGL* FONT = LLFontGL::sSansSerif; |
1561 | 1568 | ||
1562 | // Extract all of the owners. | 1569 | // Extract all of the owners. |
diff --git a/linden/indra/newview/llfloaterpostcard.cpp b/linden/indra/newview/llfloaterpostcard.cpp index 2c80300..82bab03 100644 --- a/linden/indra/newview/llfloaterpostcard.cpp +++ b/linden/indra/newview/llfloaterpostcard.cpp | |||
@@ -76,12 +76,12 @@ LLFloaterPostcard::LLFloaterPostcard(LLImageJPEG* jpeg, LLImageGL *img, const LL | |||
76 | mJPEGImage(jpeg), | 76 | mJPEGImage(jpeg), |
77 | mViewerImage(img), | 77 | mViewerImage(img), |
78 | mImageScale(img_scale), | 78 | mImageScale(img_scale), |
79 | mPosTakenGlobal(pos_taken_global) | 79 | mPosTakenGlobal(pos_taken_global), |
80 | mHasFirstMsgFocus(false) | ||
80 | { | 81 | { |
81 | init(); | 82 | init(); |
82 | } | 83 | } |
83 | 84 | ||
84 | |||
85 | void LLFloaterPostcard::init() | 85 | void LLFloaterPostcard::init() |
86 | { | 86 | { |
87 | // pick up the user's up-to-date email address | 87 | // pick up the user's up-to-date email address |
@@ -128,25 +128,24 @@ BOOL LLFloaterPostcard::postBuild() | |||
128 | gAgent.buildFullname(name_string); | 128 | gAgent.buildFullname(name_string); |
129 | 129 | ||
130 | childSetValue("name_form", LLSD(name_string)); | 130 | childSetValue("name_form", LLSD(name_string)); |
131 | |||
132 | // XUI:translate | ||
133 | LLString msg("Postcard from "); | ||
134 | msg += gSecondLife; | ||
135 | childSetValue("subject_form", LLSD(msg)); | ||
136 | 131 | ||
137 | LLTextEditor *MsgField = LLUICtrlFactory::getTextEditorByName(this, "msg_form"); | 132 | LLTextEditor *MsgField = LLUICtrlFactory::getTextEditorByName(this, "msg_form"); |
138 | if (MsgField) | 133 | if (MsgField) |
139 | { | 134 | { |
140 | MsgField->setText("Check this out!"); | ||
141 | MsgField->setWordWrap(TRUE); | 135 | MsgField->setWordWrap(TRUE); |
142 | } | ||
143 | 136 | ||
144 | childSetFocus("to_form", TRUE); | 137 | // For the first time a user focusess to .the msg box, all text will be selected. |
138 | MsgField->setFocusChangedCallback(onMsgFormFocusRecieved); | ||
139 | MsgField->setCallbackUserData(this); | ||
140 | } | ||
145 | 141 | ||
142 | childSetFocus("to_form", TRUE); | ||
143 | |||
146 | return TRUE; | 144 | return TRUE; |
147 | } | 145 | } |
148 | 146 | ||
149 | 147 | ||
148 | |||
150 | // static | 149 | // static |
151 | LLFloaterPostcard* LLFloaterPostcard::showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2 &image_scale, const LLVector3d& pos_taken_global) | 150 | LLFloaterPostcard* LLFloaterPostcard::showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2 &image_scale, const LLVector3d& pos_taken_global) |
152 | { | 151 | { |
@@ -267,46 +266,16 @@ void LLFloaterPostcard::onClickSend(void* data) | |||
267 | return; | 266 | return; |
268 | } | 267 | } |
269 | 268 | ||
270 | if (self->mJPEGImage.notNull()) | 269 | LLString subject(self->childGetValue("subject_form").asString().c_str()); |
270 | if(subject.empty() || !self->mHasFirstMsgFocus) | ||
271 | { | 271 | { |
272 | self->mTransactionID.generate(); | 272 | gViewerWindow->alertXml("PromptMissingSubjMsg", missingSubjMsgAlertCallback, self); |
273 | self->mAssetID = self->mTransactionID.makeAssetID(gAgent.getSecureSessionID()); | 273 | return; |
274 | LLVFile::writeFile(self->mJPEGImage->getData(), self->mJPEGImage->getDataSize(), gVFS, self->mAssetID, LLAssetType::AT_IMAGE_JPEG); | 274 | } |
275 | |||
276 | // upload the image | ||
277 | std::string url = gAgent.getRegion()->getCapability("SendPostcard"); | ||
278 | if(!url.empty()) | ||
279 | { | ||
280 | llinfos << "Send Postcard via capability" << llendl; | ||
281 | LLSD body = LLSD::emptyMap(); | ||
282 | // the capability already encodes: agent ID, region ID | ||
283 | body["pos-global"] = self->mPosTakenGlobal.getValue(); | ||
284 | body["to"] = self->childGetValue("to_form").asString(); | ||
285 | body["from"] = self->childGetValue("from_form").asString(); | ||
286 | body["name"] = self->childGetValue("name_form").asString(); | ||
287 | body["subject"] = self->childGetValue("subject_form").asString(); | ||
288 | body["msg"] = self->childGetValue("msg_form").asString(); | ||
289 | body["allow-publish"] = self->childGetValue("allow_publish_check").asBoolean(); | ||
290 | body["mature-publish"] = self->childGetValue("mature_check").asBoolean(); | ||
291 | LLHTTPClient::post(url, body, new LLSendPostcardResponder(body, self->mAssetID, LLAssetType::AT_IMAGE_JPEG)); | ||
292 | } | ||
293 | else | ||
294 | { | ||
295 | gAssetStorage->storeAssetData(self->mTransactionID, LLAssetType::AT_IMAGE_JPEG, &uploadCallback, (void *)self, FALSE); | ||
296 | } | ||
297 | |||
298 | LLUploadDialog::modalUploadDialog("Uploading...\n\nPostcard"); | ||
299 | |||
300 | // don't destroy the window until the upload is done | ||
301 | // this way we keep the information in the form | ||
302 | self->setVisible(FALSE); | ||
303 | 275 | ||
304 | // also remove any dependency on another floater | 276 | if (self->mJPEGImage.notNull()) |
305 | // so that we can be sure to outlive it while we | 277 | { |
306 | // need to. | 278 | self->sendPostcard(); |
307 | LLFloater* dependee = self->getDependee(); | ||
308 | if (dependee) | ||
309 | dependee->removeDependentFloater(self); | ||
310 | } | 279 | } |
311 | else | 280 | else |
312 | { | 281 | { |
@@ -375,3 +344,86 @@ void LLFloaterPostcard::updateUserInfo(const char *email) | |||
375 | } | 344 | } |
376 | } | 345 | } |
377 | } | 346 | } |
347 | |||
348 | void LLFloaterPostcard::onMsgFormFocusRecieved(LLUICtrl* receiver, void* data) | ||
349 | { | ||
350 | LLFloaterPostcard* self = (LLFloaterPostcard *)data; | ||
351 | if(self) | ||
352 | { | ||
353 | LLTextEditor* msgForm = LLUICtrlFactory::getTextEditorByName(self, "msg_form"); | ||
354 | if(msgForm && msgForm == receiver && msgForm->hasFocus() && !(self->mHasFirstMsgFocus)) | ||
355 | { | ||
356 | self->mHasFirstMsgFocus = true; | ||
357 | msgForm->setText(LLString("")); | ||
358 | } | ||
359 | } | ||
360 | } | ||
361 | |||
362 | void LLFloaterPostcard::missingSubjMsgAlertCallback(S32 option, void* data) | ||
363 | { | ||
364 | if(data) | ||
365 | { | ||
366 | LLFloaterPostcard* self = static_cast<LLFloaterPostcard*>(data); | ||
367 | if(0 == option) | ||
368 | { | ||
369 | // User clicked OK | ||
370 | if((self->childGetValue("subject_form").asString()).empty()) | ||
371 | { | ||
372 | // Stuff the subject back into the form. | ||
373 | self->childSetValue("subject_form", self->childGetText("default_subject")); | ||
374 | } | ||
375 | |||
376 | if(!self->mHasFirstMsgFocus) | ||
377 | { | ||
378 | // The user never switched focus to the messagee window. | ||
379 | // Using the default string. | ||
380 | // XUI: translate | ||
381 | self->childSetValue("msg_form", self->childGetText("default_message")); | ||
382 | } | ||
383 | |||
384 | self->sendPostcard(); | ||
385 | } | ||
386 | } | ||
387 | } | ||
388 | |||
389 | void LLFloaterPostcard::sendPostcard() | ||
390 | { | ||
391 | mTransactionID.generate(); | ||
392 | mAssetID = mTransactionID.makeAssetID(gAgent.getSecureSessionID()); | ||
393 | LLVFile::writeFile(mJPEGImage->getData(), mJPEGImage->getDataSize(), gVFS, mAssetID, LLAssetType::AT_IMAGE_JPEG); | ||
394 | |||
395 | // upload the image | ||
396 | std::string url = gAgent.getRegion()->getCapability("SendPostcard"); | ||
397 | if(!url.empty()) | ||
398 | { | ||
399 | llinfos << "Send Postcard via capability" << llendl; | ||
400 | LLSD body = LLSD::emptyMap(); | ||
401 | // the capability already encodes: agent ID, region ID | ||
402 | body["pos-global"] = mPosTakenGlobal.getValue(); | ||
403 | body["to"] = childGetValue("to_form").asString(); | ||
404 | body["from"] = childGetValue("from_form").asString(); | ||
405 | body["name"] = childGetValue("name_form").asString(); | ||
406 | body["subject"] = childGetValue("subject_form").asString(); | ||
407 | body["msg"] = childGetValue("msg_form").asString(); | ||
408 | body["allow-publish"] = childGetValue("allow_publish_check").asBoolean(); | ||
409 | body["mature-publish"] = childGetValue("mature_check").asBoolean(); | ||
410 | LLHTTPClient::post(url, body, new LLSendPostcardResponder(body, mAssetID, LLAssetType::AT_IMAGE_JPEG)); | ||
411 | } | ||
412 | else | ||
413 | { | ||
414 | gAssetStorage->storeAssetData(mTransactionID, LLAssetType::AT_IMAGE_JPEG, &uploadCallback, (void *)this, FALSE); | ||
415 | } | ||
416 | |||
417 | LLUploadDialog::modalUploadDialog("Uploading...\n\nPostcard"); | ||
418 | |||
419 | // don't destroy the window until the upload is done | ||
420 | // this way we keep the information in the form | ||
421 | setVisible(FALSE); | ||
422 | |||
423 | // also remove any dependency on another floater | ||
424 | // so that we can be sure to outlive it while we | ||
425 | // need to. | ||
426 | LLFloater* dependee = getDependee(); | ||
427 | if (dependee) | ||
428 | dependee->removeDependentFloater(this); | ||
429 | } | ||
diff --git a/linden/indra/newview/llfloaterpostcard.h b/linden/indra/newview/llfloaterpostcard.h index bd44e22..33a5e92 100644 --- a/linden/indra/newview/llfloaterpostcard.h +++ b/linden/indra/newview/llfloaterpostcard.h | |||
@@ -49,7 +49,7 @@ public: | |||
49 | virtual void init(); | 49 | virtual void init(); |
50 | virtual BOOL postBuild(); | 50 | virtual BOOL postBuild(); |
51 | virtual void draw(); | 51 | virtual void draw(); |
52 | 52 | ||
53 | static LLFloaterPostcard* showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2& img_scale, const LLVector3d& pos_taken_global); | 53 | static LLFloaterPostcard* showFromSnapshot(LLImageJPEG *jpeg, LLImageGL *img, const LLVector2& img_scale, const LLVector3d& pos_taken_global); |
54 | 54 | ||
55 | static void onClickCancel(void* data); | 55 | static void onClickCancel(void* data); |
@@ -62,6 +62,11 @@ public: | |||
62 | 62 | ||
63 | static void updateUserInfo(const char *email); | 63 | static void updateUserInfo(const char *email); |
64 | 64 | ||
65 | static void onMsgFormFocusRecieved(LLUICtrl* receiver, void* data); | ||
66 | static void missingSubjMsgAlertCallback(S32 option, void* data); | ||
67 | |||
68 | void sendPostcard(); | ||
69 | |||
65 | protected: | 70 | protected: |
66 | 71 | ||
67 | LLPointer<LLImageJPEG> mJPEGImage; | 72 | LLPointer<LLImageJPEG> mJPEGImage; |
@@ -70,6 +75,7 @@ protected: | |||
70 | LLAssetID mAssetID; | 75 | LLAssetID mAssetID; |
71 | LLVector2 mImageScale; | 76 | LLVector2 mImageScale; |
72 | LLVector3d mPosTakenGlobal; | 77 | LLVector3d mPosTakenGlobal; |
78 | boolean mHasFirstMsgFocus; | ||
73 | 79 | ||
74 | static LLLinkedList<LLFloaterPostcard> sInstances; | 80 | static LLLinkedList<LLFloaterPostcard> sInstances; |
75 | }; | 81 | }; |
diff --git a/linden/indra/newview/llfloaterreporter.cpp b/linden/indra/newview/llfloaterreporter.cpp index bcbab5b..7e6bf4d 100644 --- a/linden/indra/newview/llfloaterreporter.cpp +++ b/linden/indra/newview/llfloaterreporter.cpp | |||
@@ -325,6 +325,8 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id) | |||
325 | } | 325 | } |
326 | childSetText("object_name", object_owner); | 326 | childSetText("object_name", object_owner); |
327 | childSetText("owner_name", object_owner); | 327 | childSetText("owner_name", object_owner); |
328 | childSetText("abuser_name_edit", object_owner); | ||
329 | mAbuserID = object_id; | ||
328 | } | 330 | } |
329 | else | 331 | else |
330 | { | 332 | { |
@@ -576,10 +578,12 @@ LLFloaterReporter* LLFloaterReporter::createNewBugReporter() | |||
576 | 578 | ||
577 | 579 | ||
578 | 580 | ||
579 | void LLFloaterReporter::setPickedObjectProperties(const char *object_name, const char *owner_name) | 581 | void LLFloaterReporter::setPickedObjectProperties(const char *object_name, const char *owner_name, const LLUUID owner_id) |
580 | { | 582 | { |
581 | childSetText("object_name", object_name); | 583 | childSetText("object_name", object_name); |
582 | childSetText("owner_name", owner_name); | 584 | childSetText("owner_name", owner_name); |
585 | childSetText("abuser_name_edit", owner_name); | ||
586 | mAbuserID = owner_id; | ||
583 | } | 587 | } |
584 | 588 | ||
585 | 589 | ||
diff --git a/linden/indra/newview/llfloaterreporter.h b/linden/indra/newview/llfloaterreporter.h index 4cb72b9..9cb8557 100644 --- a/linden/indra/newview/llfloaterreporter.h +++ b/linden/indra/newview/llfloaterreporter.h | |||
@@ -106,7 +106,7 @@ public: | |||
106 | // static | 106 | // static |
107 | static void processRegionInfo(LLMessageSystem* msg); | 107 | static void processRegionInfo(LLMessageSystem* msg); |
108 | 108 | ||
109 | void setPickedObjectProperties(const char *object_name, const char *owner_name); | 109 | void setPickedObjectProperties(const char *object_name, const char *owner_name, const LLUUID owner_id); |
110 | 110 | ||
111 | private: | 111 | private: |
112 | void takeScreenshot(); | 112 | void takeScreenshot(); |
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp index 3931acb..3748131 100644 --- a/linden/indra/newview/llfloatertools.cpp +++ b/linden/indra/newview/llfloatertools.cpp | |||
@@ -216,7 +216,7 @@ BOOL LLFloaterTools::postBuild() | |||
216 | mRadioSelectFace = LLUICtrlFactory::getCheckBoxByName(this,"radio select face"); | 216 | mRadioSelectFace = LLUICtrlFactory::getCheckBoxByName(this,"radio select face"); |
217 | childSetCommitCallback("radio select face",commit_select_tool,gToolFace); | 217 | childSetCommitCallback("radio select face",commit_select_tool,gToolFace); |
218 | mCheckSelectIndividual = LLUICtrlFactory::getCheckBoxByName(this,"checkbox edit linked parts"); | 218 | mCheckSelectIndividual = LLUICtrlFactory::getCheckBoxByName(this,"checkbox edit linked parts"); |
219 | childSetValue("checkbox edit linked parts",(BOOL)!gSavedSettings.getBOOL("SelectLinkedSet")); | 219 | childSetValue("checkbox edit linked parts",(BOOL)gSavedSettings.getBOOL("EditLinkedParts")); |
220 | childSetCommitCallback("checkbox edit linked parts",commit_select_component,this); | 220 | childSetCommitCallback("checkbox edit linked parts",commit_select_component,this); |
221 | mCheckSnapToGrid = LLUICtrlFactory::getCheckBoxByName(this,"checkbox snap to grid"); | 221 | mCheckSnapToGrid = LLUICtrlFactory::getCheckBoxByName(this,"checkbox snap to grid"); |
222 | childSetValue("checkbox snap to grid",(BOOL)gSavedSettings.getBOOL("SnapEnabled")); | 222 | childSetValue("checkbox snap to grid",(BOOL)gSavedSettings.getBOOL("SnapEnabled")); |
@@ -456,7 +456,7 @@ void LLFloaterTools::draw() | |||
456 | mDirty = FALSE; | 456 | mDirty = FALSE; |
457 | } | 457 | } |
458 | 458 | ||
459 | mCheckSelectIndividual->set(!gSavedSettings.getBOOL("SelectLinkedSet")); | 459 | // mCheckSelectIndividual->set(gSavedSettings.getBOOL("EditLinkedParts")); |
460 | LLFloater::draw(); | 460 | LLFloater::draw(); |
461 | } | 461 | } |
462 | 462 | ||
@@ -567,7 +567,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) | |||
567 | if (mCheckSelectIndividual) | 567 | if (mCheckSelectIndividual) |
568 | { | 568 | { |
569 | mCheckSelectIndividual->setVisible(edit_visible); | 569 | mCheckSelectIndividual->setVisible(edit_visible); |
570 | mCheckSelectIndividual->set(!gSavedSettings.getBOOL("SelectLinkedSet")); | 570 | //mCheckSelectIndividual->set(gSavedSettings.getBOOL("EditLinkedParts")); |
571 | } | 571 | } |
572 | 572 | ||
573 | mRadioPosition ->set( tool == gToolTranslate ); | 573 | mRadioPosition ->set( tool == gToolTranslate ); |
@@ -746,7 +746,7 @@ void LLFloaterTools::onClose(bool app_quitting) | |||
746 | 746 | ||
747 | // exit component selection mode | 747 | // exit component selection mode |
748 | gSelectMgr->promoteSelectionToRoot(); | 748 | gSelectMgr->promoteSelectionToRoot(); |
749 | gSavedSettings.setBOOL("SelectLinkedSet", TRUE); | 749 | gSavedSettings.setBOOL("EditLinkedParts", FALSE); |
750 | 750 | ||
751 | gViewerWindow->showCursor(); | 751 | gViewerWindow->showCursor(); |
752 | 752 | ||
@@ -922,7 +922,7 @@ void commit_select_component(LLUICtrl *ctrl, void *data) | |||
922 | } | 922 | } |
923 | 923 | ||
924 | BOOL select_individuals = floaterp->mCheckSelectIndividual->get(); | 924 | BOOL select_individuals = floaterp->mCheckSelectIndividual->get(); |
925 | gSavedSettings.setBOOL("SelectLinkedSet", !select_individuals); | 925 | gSavedSettings.setBOOL("EditLinkedParts", select_individuals); |
926 | floaterp->dirty(); | 926 | floaterp->dirty(); |
927 | 927 | ||
928 | if (select_individuals) | 928 | if (select_individuals) |
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp index bd5be8e..36d0b40 100644 --- a/linden/indra/newview/llfolderview.cpp +++ b/linden/indra/newview/llfolderview.cpp | |||
@@ -2522,6 +2522,7 @@ LLFolderView::LLFolderView( const LLString& name, LLViewerImage* root_folder_ico | |||
2522 | mLastScrollItem( NULL ), | 2522 | mLastScrollItem( NULL ), |
2523 | mNeedsAutoSelect( FALSE ), | 2523 | mNeedsAutoSelect( FALSE ), |
2524 | mAutoSelectOverride(FALSE), | 2524 | mAutoSelectOverride(FALSE), |
2525 | mNeedsAutoRename(FALSE), | ||
2525 | mDebugFilters(FALSE), | 2526 | mDebugFilters(FALSE), |
2526 | mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME), // This gets overridden by a pref immediately | 2527 | mSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME), // This gets overridden by a pref immediately |
2527 | mFilter(name), | 2528 | mFilter(name), |
@@ -4954,3 +4955,39 @@ LLString LLInventoryFilter::getFilterText() | |||
4954 | } | 4955 | } |
4955 | return mFilterText; | 4956 | return mFilterText; |
4956 | } | 4957 | } |
4958 | |||
4959 | void LLInventoryFilter::toLLSD(LLSD& data) | ||
4960 | { | ||
4961 | data["filter_types"] = (LLSD::Integer)getFilterTypes(); | ||
4962 | data["min_date"] = (LLSD::Integer)getMinDate(); | ||
4963 | data["max_date"] = (LLSD::Integer)getMaxDate(); | ||
4964 | data["hours_ago"] = (LLSD::Integer)getHoursAgo(); | ||
4965 | data["show_folder_state"] = (LLSD::Integer)getShowFolderState(); | ||
4966 | data["permissions"] = (LLSD::Integer)getFilterPermissions(); | ||
4967 | data["substring"] = (LLSD::String)getFilterSubString(); | ||
4968 | data["sort_order"] = (LLSD::Integer)getSortOrder(); | ||
4969 | } | ||
4970 | |||
4971 | void LLInventoryFilter::fromLLSD(LLSD& data) | ||
4972 | { | ||
4973 | if(data.has("filter_types")) | ||
4974 | setFilterTypes((U32)data["filter_types"].asInteger()); | ||
4975 | |||
4976 | if(data.has("min_date") && data.has("max_date")) | ||
4977 | setDateRange((U32)data["min_date"].asInteger(), (U32)data["max_date"].asInteger()); | ||
4978 | |||
4979 | if(data.has("hours_ago")) | ||
4980 | setHoursAgo((U32)data["hours_ago"].asInteger()); | ||
4981 | |||
4982 | if(data.has("show_folder_state")) | ||
4983 | setShowFolderState((EFolderShow)data["show_folder_state"].asInteger()); | ||
4984 | |||
4985 | if(data.has("permissions")) | ||
4986 | setFilterPermissions((PermissionMask)data["permissions"].asInteger()); | ||
4987 | |||
4988 | if(data.has("substring")) | ||
4989 | setFilterSubString(LLString(data["substring"].asString())); | ||
4990 | |||
4991 | if(data.has("sort_order")) | ||
4992 | setSortOrder((U32)data["sort_order"].asInteger()); | ||
4993 | } | ||
diff --git a/linden/indra/newview/llfolderview.h b/linden/indra/newview/llfolderview.h index ec70b90..9482b96 100644 --- a/linden/indra/newview/llfolderview.h +++ b/linden/indra/newview/llfolderview.h | |||
@@ -236,6 +236,9 @@ public: | |||
236 | //RN: this is public to allow system to externally force a global refilter | 236 | //RN: this is public to allow system to externally force a global refilter |
237 | void setModified(EFilterBehavior behavior = FILTER_RESTART); | 237 | void setModified(EFilterBehavior behavior = FILTER_RESTART); |
238 | 238 | ||
239 | void toLLSD(LLSD& data); | ||
240 | void fromLLSD(LLSD& data); | ||
241 | |||
239 | protected: | 242 | protected: |
240 | struct filter_ops | 243 | struct filter_ops |
241 | { | 244 | { |
@@ -859,6 +862,9 @@ public: | |||
859 | static void idle(void* user_data); | 862 | static void idle(void* user_data); |
860 | 863 | ||
861 | BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; } | 864 | BOOL needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; } |
865 | BOOL needsAutoRename() { return mNeedsAutoRename; } | ||
866 | void setNeedsAutoRename(BOOL val) { mNeedsAutoRename = val; } | ||
867 | |||
862 | BOOL getDebugFilters() { return mDebugFilters; } | 868 | BOOL getDebugFilters() { return mDebugFilters; } |
863 | 869 | ||
864 | // DEBUG only | 870 | // DEBUG only |
@@ -890,6 +896,7 @@ protected: | |||
890 | LLCoordGL mLastScrollOffset; | 896 | LLCoordGL mLastScrollOffset; |
891 | BOOL mNeedsAutoSelect; | 897 | BOOL mNeedsAutoSelect; |
892 | BOOL mAutoSelectOverride; | 898 | BOOL mAutoSelectOverride; |
899 | BOOL mNeedsAutoRename; | ||
893 | 900 | ||
894 | BOOL mDebugFilters; | 901 | BOOL mDebugFilters; |
895 | U32 mSortOrder; | 902 | U32 mSortOrder; |
diff --git a/linden/indra/newview/llgenepool.cpp b/linden/indra/newview/llgenepool.cpp index 3cc57e9..40dd5cd 100644 --- a/linden/indra/newview/llgenepool.cpp +++ b/linden/indra/newview/llgenepool.cpp | |||
@@ -127,6 +127,7 @@ BOOL LLGenePool::loadNodeArchetype( LLXmlTreeNode* node ) | |||
127 | LLVOAvatar* avatar = gAgent.getAvatarObject(); | 127 | LLVOAvatar* avatar = gAgent.getAvatarObject(); |
128 | if( !avatar ) | 128 | if( !avatar ) |
129 | { | 129 | { |
130 | delete archetype; | ||
130 | return FALSE; | 131 | return FALSE; |
131 | } | 132 | } |
132 | 133 | ||
diff --git a/linden/indra/newview/llhudeffectlookat.cpp b/linden/indra/newview/llhudeffectlookat.cpp index 5250b57..813f924 100644 --- a/linden/indra/newview/llhudeffectlookat.cpp +++ b/linden/indra/newview/llhudeffectlookat.cpp | |||
@@ -476,6 +476,7 @@ void LLHUDEffectLookAt::calcTargetPosition() | |||
476 | { | 476 | { |
477 | //sets the lookat point in front of the avatar | 477 | //sets the lookat point in front of the avatar |
478 | mTargetOffsetGlobal.setVec(5.0, 0.0, 0.0); | 478 | mTargetOffsetGlobal.setVec(5.0, 0.0, 0.0); |
479 | local_offset.setVec(mTargetOffsetGlobal); | ||
479 | } | 480 | } |
480 | 481 | ||
481 | mTargetPos = avatarp->mHeadp->getWorldPosition(); | 482 | mTargetPos = avatarp->mHeadp->getWorldPosition(); |
diff --git a/linden/indra/newview/llhudicon.cpp b/linden/indra/newview/llhudicon.cpp index 93e730e..15988fa 100644 --- a/linden/indra/newview/llhudicon.cpp +++ b/linden/indra/newview/llhudicon.cpp | |||
@@ -65,7 +65,8 @@ LLHUDIcon::LLHUDIcon(const U8 type) : | |||
65 | LLHUDObject(type), | 65 | LLHUDObject(type), |
66 | mImagep(NULL), | 66 | mImagep(NULL), |
67 | mPickID(0), | 67 | mPickID(0), |
68 | mScale(0.1f) | 68 | mScale(0.1f), |
69 | mHidden(FALSE) | ||
69 | { | 70 | { |
70 | sIconInstances.push_back(this); | 71 | sIconInstances.push_back(this); |
71 | } | 72 | } |
@@ -81,6 +82,9 @@ void LLHUDIcon::renderIcon(BOOL for_select) | |||
81 | LLGLDepthTest gls_depth(GL_TRUE); | 82 | LLGLDepthTest gls_depth(GL_TRUE); |
82 | LLGLState no_texture(GL_TEXTURE_2D, for_select ? FALSE : TRUE); | 83 | LLGLState no_texture(GL_TEXTURE_2D, for_select ? FALSE : TRUE); |
83 | 84 | ||
85 | if (mHidden) | ||
86 | return; | ||
87 | |||
84 | if (mSourceObject.isNull() || mImagep.isNull()) | 88 | if (mSourceObject.isNull() || mImagep.isNull()) |
85 | { | 89 | { |
86 | markDead(); | 90 | markDead(); |
diff --git a/linden/indra/newview/llhudicon.h b/linden/indra/newview/llhudicon.h index f26abb4..7f8b435 100644 --- a/linden/indra/newview/llhudicon.h +++ b/linden/indra/newview/llhudicon.h | |||
@@ -71,6 +71,9 @@ public: | |||
71 | 71 | ||
72 | static BOOL iconsNearby(); | 72 | static BOOL iconsNearby(); |
73 | 73 | ||
74 | BOOL getHidden() const { return mHidden; } | ||
75 | void setHidden( BOOL hide ) { mHidden = hide; } | ||
76 | |||
74 | protected: | 77 | protected: |
75 | LLHUDIcon(const U8 type); | 78 | LLHUDIcon(const U8 type); |
76 | ~LLHUDIcon(); | 79 | ~LLHUDIcon(); |
@@ -84,6 +87,7 @@ private: | |||
84 | F32 mDistance; | 87 | F32 mDistance; |
85 | S32 mPickID; | 88 | S32 mPickID; |
86 | F32 mScale; | 89 | F32 mScale; |
90 | BOOL mHidden; | ||
87 | 91 | ||
88 | typedef std::vector<LLPointer<LLHUDIcon> > icon_instance_t; | 92 | typedef std::vector<LLPointer<LLHUDIcon> > icon_instance_t; |
89 | static icon_instance_t sIconInstances; | 93 | static icon_instance_t sIconInstances; |
diff --git a/linden/indra/newview/llhudtext.cpp b/linden/indra/newview/llhudtext.cpp index 740cce0..fce52f1 100644 --- a/linden/indra/newview/llhudtext.cpp +++ b/linden/indra/newview/llhudtext.cpp | |||
@@ -93,7 +93,8 @@ LLHUDText::LLHUDText(const U8 type) : | |||
93 | mOffsetY(0), | 93 | mOffsetY(0), |
94 | mTextAlignment(ALIGN_TEXT_CENTER), | 94 | mTextAlignment(ALIGN_TEXT_CENTER), |
95 | mVertAlignment(ALIGN_VERT_CENTER), | 95 | mVertAlignment(ALIGN_VERT_CENTER), |
96 | mLOD(0) | 96 | mLOD(0), |
97 | mHidden(FALSE) | ||
97 | { | 98 | { |
98 | mColor = LLColor4(1.f, 1.f, 1.f, 1.f); | 99 | mColor = LLColor4(1.f, 1.f, 1.f, 1.f); |
99 | mDoFade = TRUE; | 100 | mDoFade = TRUE; |
@@ -133,7 +134,7 @@ void LLHUDText::renderForSelect() | |||
133 | 134 | ||
134 | void LLHUDText::renderText(BOOL for_select) | 135 | void LLHUDText::renderText(BOOL for_select) |
135 | { | 136 | { |
136 | if (!mVisible) | 137 | if (!mVisible || mHidden) |
137 | { | 138 | { |
138 | return; | 139 | return; |
139 | } | 140 | } |
diff --git a/linden/indra/newview/llhudtext.h b/linden/indra/newview/llhudtext.h index 033702b..bd6988b 100644 --- a/linden/indra/newview/llhudtext.h +++ b/linden/indra/newview/llhudtext.h | |||
@@ -115,8 +115,9 @@ public: | |||
115 | void setUseBubble(BOOL use_bubble) { mUseBubble = use_bubble; } | 115 | void setUseBubble(BOOL use_bubble) { mUseBubble = use_bubble; } |
116 | S32 getLOD() { return mLOD; } | 116 | S32 getLOD() { return mLOD; } |
117 | BOOL getVisible() { return mVisible; } | 117 | BOOL getVisible() { return mVisible; } |
118 | BOOL getHidden() const { return mHidden; } | ||
119 | void setHidden( BOOL hide ) { mHidden = hide; } | ||
118 | void setOnHUDAttachment(BOOL on_hud) { mOnHUDAttachment = on_hud; } | 120 | void setOnHUDAttachment(BOOL on_hud) { mOnHUDAttachment = on_hud; } |
119 | |||
120 | static void renderAllHUD(); | 121 | static void renderAllHUD(); |
121 | static void addPickable(std::set<LLViewerObject*> &pick_list); | 122 | static void addPickable(std::set<LLViewerObject*> &pick_list); |
122 | static void reshape(); | 123 | static void reshape(); |
@@ -164,6 +165,7 @@ private: | |||
164 | ETextAlignment mTextAlignment; | 165 | ETextAlignment mTextAlignment; |
165 | EVertAlignment mVertAlignment; | 166 | EVertAlignment mVertAlignment; |
166 | S32 mLOD; | 167 | S32 mLOD; |
168 | BOOL mHidden; | ||
167 | 169 | ||
168 | static std::set<LLPointer<LLHUDText> > sTextObjects; | 170 | static std::set<LLPointer<LLHUDText> > sTextObjects; |
169 | static std::vector<LLPointer<LLHUDText> > sVisibleTextObjects; | 171 | static std::vector<LLPointer<LLHUDText> > sVisibleTextObjects; |
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp index 3c89131..b74fff0 100644 --- a/linden/indra/newview/llimpanel.cpp +++ b/linden/indra/newview/llimpanel.cpp | |||
@@ -174,6 +174,8 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name, | |||
174 | mInputEditor(NULL), | 174 | mInputEditor(NULL), |
175 | mHistoryEditor(NULL), | 175 | mHistoryEditor(NULL), |
176 | mSessionUUID(session_id), | 176 | mSessionUUID(session_id), |
177 | mSessionInitRequested(FALSE), | ||
178 | mSessionInitialized(FALSE), | ||
177 | mOtherParticipantUUID(other_participant_id), | 179 | mOtherParticipantUUID(other_participant_id), |
178 | mDialog(dialog), | 180 | mDialog(dialog), |
179 | mTyping(FALSE), | 181 | mTyping(FALSE), |
@@ -181,9 +183,7 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name, | |||
181 | mTypingLineStartIndex(0), | 183 | mTypingLineStartIndex(0), |
182 | mSentTypingState(TRUE), | 184 | mSentTypingState(TRUE), |
183 | mFirstKeystrokeTimer(), | 185 | mFirstKeystrokeTimer(), |
184 | mLastKeystrokeTimer(), | 186 | mLastKeystrokeTimer() |
185 | mSessionInitialized(FALSE), | ||
186 | mSessionInitRequested(FALSE) | ||
187 | { | 187 | { |
188 | init(session_label); | 188 | init(session_label); |
189 | } | 189 | } |
@@ -199,6 +199,8 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name, | |||
199 | mInputEditor(NULL), | 199 | mInputEditor(NULL), |
200 | mHistoryEditor(NULL), | 200 | mHistoryEditor(NULL), |
201 | mSessionUUID(session_id), | 201 | mSessionUUID(session_id), |
202 | mSessionInitRequested(FALSE), | ||
203 | mSessionInitialized(FALSE), | ||
202 | mOtherParticipantUUID(other_participant_id), | 204 | mOtherParticipantUUID(other_participant_id), |
203 | mDialog(dialog), | 205 | mDialog(dialog), |
204 | mTyping(FALSE), | 206 | mTyping(FALSE), |
@@ -206,9 +208,7 @@ LLFloaterIMPanel::LLFloaterIMPanel(const std::string& name, | |||
206 | mTypingLineStartIndex(0), | 208 | mTypingLineStartIndex(0), |
207 | mSentTypingState(TRUE), | 209 | mSentTypingState(TRUE), |
208 | mFirstKeystrokeTimer(), | 210 | mFirstKeystrokeTimer(), |
209 | mLastKeystrokeTimer(), | 211 | mLastKeystrokeTimer() |
210 | mSessionInitialized(FALSE), | ||
211 | mSessionInitRequested(FALSE) | ||
212 | { | 212 | { |
213 | mSessionInitialTargetIDs = ids; | 213 | mSessionInitialTargetIDs = ids; |
214 | init(session_label); | 214 | init(session_label); |
@@ -427,7 +427,11 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4 | |||
427 | if (log_to_file | 427 | if (log_to_file |
428 | && gSavedPerAccountSettings.getBOOL("LogInstantMessages") ) | 428 | && gSavedPerAccountSettings.getBOOL("LogInstantMessages") ) |
429 | { | 429 | { |
430 | LLString histstr = timestring + utf8msg; | 430 | LLString histstr; |
431 | if (gSavedPerAccountSettings.getBOOL("IMLogTimestamp")) | ||
432 | histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + utf8msg; | ||
433 | else | ||
434 | histstr = utf8msg; | ||
431 | 435 | ||
432 | LLLogChat::saveHistory(getTitle(),histstr); | 436 | LLLogChat::saveHistory(getTitle(),histstr); |
433 | } | 437 | } |
diff --git a/linden/indra/newview/llinventoryactions.cpp b/linden/indra/newview/llinventoryactions.cpp index 900a729..af4e16b 100644 --- a/linden/indra/newview/llinventoryactions.cpp +++ b/linden/indra/newview/llinventoryactions.cpp | |||
@@ -324,16 +324,18 @@ void do_create(LLInventoryModel *model, LLInventoryPanel *ptr, LLString type, LL | |||
324 | { | 324 | { |
325 | if ("category" == type) | 325 | if ("category" == type) |
326 | { | 326 | { |
327 | LLUUID category; | ||
327 | if (self) | 328 | if (self) |
328 | { | 329 | { |
329 | model->createNewCategory(self->getUUID(), LLAssetType::AT_NONE, NULL); | 330 | category = model->createNewCategory(self->getUUID(), LLAssetType::AT_NONE, NULL); |
330 | } | 331 | } |
331 | else | 332 | else |
332 | { | 333 | { |
333 | model->createNewCategory(gAgent.getInventoryRootID(), | 334 | category = model->createNewCategory(gAgent.getInventoryRootID(), |
334 | LLAssetType::AT_NONE, NULL); | 335 | LLAssetType::AT_NONE, NULL); |
335 | } | 336 | } |
336 | model->notifyObservers(); | 337 | model->notifyObservers(); |
338 | ptr->setSelection(category, TRUE); | ||
337 | } | 339 | } |
338 | else if ("lsl" == type) | 340 | else if ("lsl" == type) |
339 | { | 341 | { |
@@ -427,6 +429,8 @@ void do_create(LLInventoryModel *model, LLInventoryPanel *ptr, LLString type, LL | |||
427 | LLUUID parent_id = self ? self->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART); | 429 | LLUUID parent_id = self ? self->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART); |
428 | LLFolderBridge::createWearable(parent_id, WT_EYES); | 430 | LLFolderBridge::createWearable(parent_id, WT_EYES); |
429 | } | 431 | } |
432 | |||
433 | ptr->getRootFolder()->setNeedsAutoRename(TRUE); | ||
430 | } | 434 | } |
431 | 435 | ||
432 | class LLDoCreate : public inventory_panel_listener_t | 436 | class LLDoCreate : public inventory_panel_listener_t |
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index 0d5c30e..27be9f6 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp | |||
@@ -822,7 +822,7 @@ LLString LLItemBridge::getLabelSuffix() const | |||
822 | if(item) | 822 | if(item) |
823 | { | 823 | { |
824 | // it's a bit confusing to put nocopy/nomod/etc on calling cards. | 824 | // it's a bit confusing to put nocopy/nomod/etc on calling cards. |
825 | if( LLAssetType::AT_CALLINGCARD != item->getType() | 825 | if(LLAssetType::AT_CALLINGCARD != item->getType() |
826 | && item->getPermissions().getOwner() == gAgent.getID()) | 826 | && item->getPermissions().getOwner() == gAgent.getID()) |
827 | { | 827 | { |
828 | BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); | 828 | BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); |
@@ -834,32 +834,14 @@ LLString LLItemBridge::getLabelSuffix() const | |||
834 | const char* NO_MOD = " (no modify)"; | 834 | const char* NO_MOD = " (no modify)"; |
835 | const char* NO_XFER = " (no transfer)"; | 835 | const char* NO_XFER = " (no transfer)"; |
836 | const char* scopy; | 836 | const char* scopy; |
837 | if(copy) | 837 | if(copy) scopy = EMPTY; |
838 | { | 838 | else scopy = NO_COPY; |
839 | scopy = EMPTY; | ||
840 | } | ||
841 | else | ||
842 | { | ||
843 | scopy = NO_COPY; | ||
844 | }; | ||
845 | const char* smod; | 839 | const char* smod; |
846 | if(mod) | 840 | if(mod) smod = EMPTY; |
847 | { | 841 | else smod = NO_MOD; |
848 | smod = EMPTY; | ||
849 | } | ||
850 | else | ||
851 | { | ||
852 | smod = NO_MOD; | ||
853 | }; | ||
854 | const char* sxfer; | 842 | const char* sxfer; |
855 | if(xfer) | 843 | if(xfer) sxfer = EMPTY; |
856 | { | 844 | else sxfer = NO_XFER; |
857 | sxfer = EMPTY; | ||
858 | } | ||
859 | else | ||
860 | { | ||
861 | sxfer = NO_XFER; | ||
862 | }; | ||
863 | char buffer[MAX_STRING]; /*Flawfinder: ignore*/ | 845 | char buffer[MAX_STRING]; /*Flawfinder: ignore*/ |
864 | snprintf( /* Flawfinder: ignore */ | 846 | snprintf( /* Flawfinder: ignore */ |
865 | buffer, | 847 | buffer, |
diff --git a/linden/indra/newview/llinventoryview.cpp b/linden/indra/newview/llinventoryview.cpp index bb70ea4..8ac5f21 100644 --- a/linden/indra/newview/llinventoryview.cpp +++ b/linden/indra/newview/llinventoryview.cpp | |||
@@ -64,6 +64,7 @@ | |||
64 | #include "llpreviewtexture.h" | 64 | #include "llpreviewtexture.h" |
65 | #include "llresmgr.h" | 65 | #include "llresmgr.h" |
66 | #include "llscrollcontainer.h" | 66 | #include "llscrollcontainer.h" |
67 | #include "llscrollbar.h" | ||
67 | #include "llimview.h" | 68 | #include "llimview.h" |
68 | #include "lltooldraganddrop.h" | 69 | #include "lltooldraganddrop.h" |
69 | #include "llviewerimagelist.h" | 70 | #include "llviewerimagelist.h" |
@@ -78,6 +79,8 @@ | |||
78 | #include "llvieweruictrlfactory.h" | 79 | #include "llvieweruictrlfactory.h" |
79 | #include "llselectmgr.h" | 80 | #include "llselectmgr.h" |
80 | 81 | ||
82 | #include "llsdserialize.h" | ||
83 | |||
81 | LLDynamicArray<LLInventoryView*> LLInventoryView::sActiveViews; | 84 | LLDynamicArray<LLInventoryView*> LLInventoryView::sActiveViews; |
82 | 85 | ||
83 | //BOOL LLInventoryView::sOpenNextNewItem = FALSE; | 86 | //BOOL LLInventoryView::sOpenNextNewItem = FALSE; |
@@ -464,6 +467,9 @@ void LLInventoryView::init(LLInventoryModel* inventory) | |||
464 | 467 | ||
465 | gUICtrlFactory->buildFloater(this, "floater_inventory.xml", NULL); | 468 | gUICtrlFactory->buildFloater(this, "floater_inventory.xml", NULL); |
466 | 469 | ||
470 | mFilterTabs = (LLTabContainer*)LLUICtrlFactory::getTabContainerByName(this, "inventory filter tabs"); | ||
471 | |||
472 | // Set up the default inv. panel/filter settings. | ||
467 | mActivePanel = (LLInventoryPanel*)getCtrlByNameAndType("All Items", WIDGET_TYPE_INVENTORY_PANEL); | 473 | mActivePanel = (LLInventoryPanel*)getCtrlByNameAndType("All Items", WIDGET_TYPE_INVENTORY_PANEL); |
468 | if (mActivePanel) | 474 | if (mActivePanel) |
469 | { | 475 | { |
@@ -471,6 +477,7 @@ void LLInventoryView::init(LLInventoryModel* inventory) | |||
471 | mActivePanel->setSortOrder(gSavedSettings.getU32("InventorySortOrder")); | 477 | mActivePanel->setSortOrder(gSavedSettings.getU32("InventorySortOrder")); |
472 | mActivePanel->getFilter()->markDefault(); | 478 | mActivePanel->getFilter()->markDefault(); |
473 | mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); | 479 | mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); |
480 | mActivePanel->setSelectCallback(onSelectionChange, mActivePanel); | ||
474 | } | 481 | } |
475 | LLInventoryPanel* recent_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("Recent Items", WIDGET_TYPE_INVENTORY_PANEL); | 482 | LLInventoryPanel* recent_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("Recent Items", WIDGET_TYPE_INVENTORY_PANEL); |
476 | if (recent_items_panel) | 483 | if (recent_items_panel) |
@@ -479,7 +486,29 @@ void LLInventoryView::init(LLInventoryModel* inventory) | |||
479 | recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE); | 486 | recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE); |
480 | recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); | 487 | recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); |
481 | recent_items_panel->getFilter()->markDefault(); | 488 | recent_items_panel->getFilter()->markDefault(); |
482 | } | 489 | recent_items_panel->setSelectCallback(onSelectionChange, recent_items_panel); |
490 | } | ||
491 | |||
492 | // Now load the stored settings from disk, if available. | ||
493 | std::ostringstream filterSaveName; | ||
494 | filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml"); | ||
495 | llinfos << "LLInventoryView::init: reading from " << filterSaveName << llendl; | ||
496 | llifstream file(filterSaveName.str().c_str()); | ||
497 | LLSD savedFilterState; | ||
498 | if (file.is_open()) | ||
499 | { | ||
500 | LLSDSerialize::fromXML(savedFilterState, file); | ||
501 | file.close(); | ||
502 | |||
503 | // Load the persistent "Recent Items" settings. | ||
504 | // Note that the "All Items" settings do not persist. | ||
505 | if(savedFilterState.has(recent_items_panel->getFilter()->getName())) | ||
506 | { | ||
507 | LLSD recent_items = savedFilterState.get(recent_items_panel->getFilter()->getName()); | ||
508 | recent_items_panel->getFilter()->fromLLSD(recent_items); | ||
509 | } | ||
510 | } | ||
511 | |||
483 | 512 | ||
484 | mSearchEditor = (LLSearchEditor*)getCtrlByNameAndType("inventory search editor", WIDGET_TYPE_SEARCH_EDITOR); | 513 | mSearchEditor = (LLSearchEditor*)getCtrlByNameAndType("inventory search editor", WIDGET_TYPE_SEARCH_EDITOR); |
485 | if (mSearchEditor) | 514 | if (mSearchEditor) |
@@ -504,6 +533,36 @@ BOOL LLInventoryView::postBuild() | |||
504 | // Destroys the object | 533 | // Destroys the object |
505 | LLInventoryView::~LLInventoryView( void ) | 534 | LLInventoryView::~LLInventoryView( void ) |
506 | { | 535 | { |
536 | // Save the filters state. | ||
537 | LLSD filterRoot; | ||
538 | LLInventoryPanel* all_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("All Items", WIDGET_TYPE_INVENTORY_PANEL); | ||
539 | if (all_items_panel) | ||
540 | { | ||
541 | LLInventoryFilter* filter = all_items_panel->getFilter(); | ||
542 | LLSD filterState; | ||
543 | filter->toLLSD(filterState); | ||
544 | filterRoot[filter->getName()] = filterState; | ||
545 | } | ||
546 | |||
547 | LLInventoryPanel* recent_items_panel = (LLInventoryPanel*)getCtrlByNameAndType("Recent Items", WIDGET_TYPE_INVENTORY_PANEL); | ||
548 | if (recent_items_panel) | ||
549 | { | ||
550 | LLInventoryFilter* filter = recent_items_panel->getFilter(); | ||
551 | LLSD filterState; | ||
552 | filter->toLLSD(filterState); | ||
553 | filterRoot[filter->getName()] = filterState; | ||
554 | } | ||
555 | |||
556 | std::ostringstream filterSaveName; | ||
557 | filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml"); | ||
558 | llofstream filtersFile(filterSaveName.str().c_str()); | ||
559 | if(!LLSDSerialize::toPrettyXML(filterRoot, filtersFile)) | ||
560 | { | ||
561 | llwarns << "Could not write to filters save file " << filterSaveName << llendl; | ||
562 | } | ||
563 | else | ||
564 | filtersFile.close(); | ||
565 | |||
507 | sActiveViews.removeObj(this); | 566 | sActiveViews.removeObj(this); |
508 | gInventory.removeObserver(this); | 567 | gInventory.removeObserver(this); |
509 | delete mSavedFolderState; | 568 | delete mSavedFolderState; |
@@ -630,7 +689,9 @@ void LLInventoryView::onClose(bool app_quitting) | |||
630 | mSavedFolderState->setApply(FALSE); | 689 | mSavedFolderState->setApply(FALSE); |
631 | mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); | 690 | mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState); |
632 | } | 691 | } |
633 | onClearSearch(this); | 692 | |
693 | // onClearSearch(this); | ||
694 | |||
634 | // pass up | 695 | // pass up |
635 | LLFloater::setVisible(FALSE); | 696 | LLFloater::setVisible(FALSE); |
636 | } | 697 | } |
@@ -930,6 +991,7 @@ void LLInventoryView::onFilterSelected(void* userdata, bool from_click) | |||
930 | LLInventoryViewFinder *finder = self->getFinder(); | 991 | LLInventoryViewFinder *finder = self->getFinder(); |
931 | // Find my index | 992 | // Find my index |
932 | self->mActivePanel = (LLInventoryPanel*)self->childGetVisibleTab("inventory filter tabs"); | 993 | self->mActivePanel = (LLInventoryPanel*)self->childGetVisibleTab("inventory filter tabs"); |
994 | |||
933 | if (!self->mActivePanel) | 995 | if (!self->mActivePanel) |
934 | { | 996 | { |
935 | return; | 997 | return; |
@@ -947,6 +1009,42 @@ void LLInventoryView::onFilterSelected(void* userdata, bool from_click) | |||
947 | self->setFilterTextFromFilter(); | 1009 | self->setFilterTextFromFilter(); |
948 | } | 1010 | } |
949 | 1011 | ||
1012 | // static | ||
1013 | void LLInventoryView::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action, void* data) | ||
1014 | { | ||
1015 | LLInventoryPanel* panel = (LLInventoryPanel*)data; | ||
1016 | LLFolderView* fv = panel->getRootFolder(); | ||
1017 | if (fv->needsAutoRename()) // auto-selecting a new user-created asset and preparing to rename | ||
1018 | { | ||
1019 | fv->setNeedsAutoRename(FALSE); | ||
1020 | if (items.size()) // new asset is visible and selected | ||
1021 | { | ||
1022 | fv->startRenamingSelectedItem(); | ||
1023 | } | ||
1024 | } | ||
1025 | } | ||
1026 | |||
1027 | BOOL LLInventoryView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, | ||
1028 | EDragAndDropType cargo_type, | ||
1029 | void* cargo_data, | ||
1030 | EAcceptance* accept, | ||
1031 | LLString& tooltip_msg) | ||
1032 | { | ||
1033 | // Check to see if we are auto scrolling from the last frame | ||
1034 | LLInventoryPanel* panel = (LLInventoryPanel*)this->getActivePanel(); | ||
1035 | BOOL needsToScroll = panel->getScrollableContainer()->needsToScroll(x, y, LLScrollableContainerView::VERTICAL); | ||
1036 | if(mFilterTabs) | ||
1037 | { | ||
1038 | if(needsToScroll) | ||
1039 | { | ||
1040 | mFilterTabs->setDragAndDropDelayTimer(); | ||
1041 | } | ||
1042 | } | ||
1043 | |||
1044 | BOOL handled = LLFloater::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); | ||
1045 | |||
1046 | return handled; | ||
1047 | } | ||
950 | LLUUID get_item_icon_uuid(LLAssetType::EType asset_type, | 1048 | LLUUID get_item_icon_uuid(LLAssetType::EType asset_type, |
951 | LLInventoryType::EType inventory_type, | 1049 | LLInventoryType::EType inventory_type, |
952 | U32 attachment_point, | 1050 | U32 attachment_point, |
@@ -1142,6 +1240,7 @@ BOOL LLInventoryPanel::postBuild() | |||
1142 | } | 1240 | } |
1143 | mFolders->setSortOrder(mFolders->getFilter()->getSortOrder()); | 1241 | mFolders->setSortOrder(mFolders->getFilter()->getSortOrder()); |
1144 | 1242 | ||
1243 | |||
1145 | return TRUE; | 1244 | return TRUE; |
1146 | } | 1245 | } |
1147 | 1246 | ||
@@ -1302,6 +1401,14 @@ void LLInventoryPanel::modelChanged(U32 mask) | |||
1302 | llwarns << *id_it << " is in model but not in view, but ADD flag not set" << llendl; | 1401 | llwarns << *id_it << " is in model but not in view, but ADD flag not set" << llendl; |
1303 | } | 1402 | } |
1304 | buildNewViews(*id_it); | 1403 | buildNewViews(*id_it); |
1404 | |||
1405 | // select any newly created object | ||
1406 | // that has the auto rename at top of folder | ||
1407 | // root set | ||
1408 | if(mFolders->getRoot()->needsAutoRename()) | ||
1409 | { | ||
1410 | setSelection(*id_it, FALSE); | ||
1411 | } | ||
1305 | } | 1412 | } |
1306 | else | 1413 | else |
1307 | { | 1414 | { |
@@ -1526,6 +1633,7 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, | |||
1526 | EAcceptance* accept, | 1633 | EAcceptance* accept, |
1527 | LLString& tooltip_msg) | 1634 | LLString& tooltip_msg) |
1528 | { | 1635 | { |
1636 | |||
1529 | BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); | 1637 | BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); |
1530 | 1638 | ||
1531 | if (handled) | 1639 | if (handled) |
@@ -1586,6 +1694,7 @@ void LLInventoryPanel::createNewItem(const char* name, | |||
1586 | create_inventory_item(gAgent.getID(), gAgent.getSessionID(), | 1694 | create_inventory_item(gAgent.getID(), gAgent.getSessionID(), |
1587 | parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type, | 1695 | parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type, |
1588 | NOT_WEARABLE, next_owner_perm, cb); | 1696 | NOT_WEARABLE, next_owner_perm, cb); |
1697 | |||
1589 | } | 1698 | } |
1590 | 1699 | ||
1591 | // static DEBUG ONLY: | 1700 | // static DEBUG ONLY: |
diff --git a/linden/indra/newview/llinventoryview.h b/linden/indra/newview/llinventoryview.h index 536370b..cba1d16 100644 --- a/linden/indra/newview/llinventoryview.h +++ b/linden/indra/newview/llinventoryview.h | |||
@@ -119,6 +119,7 @@ public: | |||
119 | // This method is called when something has changed about the inventory. | 119 | // This method is called when something has changed about the inventory. |
120 | void modelChanged(U32 mask); | 120 | void modelChanged(U32 mask); |
121 | LLFolderView* getRootFolder() { return mFolders; } | 121 | LLFolderView* getRootFolder() { return mFolders; } |
122 | LLScrollableContainerView* getScrollableContainer() { return mScroller; } | ||
122 | 123 | ||
123 | // DEBUG ONLY: | 124 | // DEBUG ONLY: |
124 | static void dumpSelectionInformation(void* user_data); | 125 | static void dumpSelectionInformation(void* user_data); |
@@ -223,6 +224,13 @@ public: | |||
223 | virtual void draw(); | 224 | virtual void draw(); |
224 | virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent); | 225 | virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent); |
225 | 226 | ||
227 | BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, | ||
228 | EDragAndDropType cargo_type, | ||
229 | void* cargo_data, | ||
230 | EAcceptance* accept, | ||
231 | LLString& tooltip_msg); | ||
232 | |||
233 | |||
226 | LLInventoryPanel* getPanel() { return mActivePanel; } | 234 | LLInventoryPanel* getPanel() { return mActivePanel; } |
227 | LLInventoryPanel* getActivePanel() { return mActivePanel; } | 235 | LLInventoryPanel* getActivePanel() { return mActivePanel; } |
228 | 236 | ||
@@ -233,6 +241,7 @@ public: | |||
233 | static void onSearchEdit(const LLString& search_string, void* user_data ); | 241 | static void onSearchEdit(const LLString& search_string, void* user_data ); |
234 | //static void onSearchCommit(LLUICtrl* caller, void* user_data ); | 242 | //static void onSearchCommit(LLUICtrl* caller, void* user_data ); |
235 | static void onFilterSelected(void* userdata, bool from_click); | 243 | static void onFilterSelected(void* userdata, bool from_click); |
244 | static void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action, void* data); | ||
236 | static BOOL incrementalFind(LLFolderViewItem* first_item, const char* find_text, BOOL backward); | 245 | static BOOL incrementalFind(LLFolderViewItem* first_item, const char* find_text, BOOL backward); |
237 | 246 | ||
238 | const LLString getFilterSubString() { return mActivePanel->getFilterSubString(); } | 247 | const LLString getFilterSubString() { return mActivePanel->getFilterSubString(); } |
diff --git a/linden/indra/newview/lllogchat.cpp b/linden/indra/newview/lllogchat.cpp index aaa19ea..ec9b9f5 100644 --- a/linden/indra/newview/lllogchat.cpp +++ b/linden/indra/newview/lllogchat.cpp | |||
@@ -29,18 +29,40 @@ | |||
29 | #include "llviewerprecompiledheaders.h" | 29 | #include "llviewerprecompiledheaders.h" |
30 | 30 | ||
31 | #include "lllogchat.h" | 31 | #include "lllogchat.h" |
32 | 32 | #include "viewer.h" | |
33 | |||
33 | const S32 LOG_RECALL_SIZE = 2048; | 34 | const S32 LOG_RECALL_SIZE = 2048; |
34 | 35 | ||
35 | //static | 36 | //static |
36 | LLString LLLogChat::makeLogFileName(LLString filename) | 37 | LLString LLLogChat::makeLogFileName(LLString filename) |
37 | { | 38 | { |
38 | |||
39 | filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS,filename.c_str()); | 39 | filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS,filename.c_str()); |
40 | filename += ".txt"; | 40 | filename += ".txt"; |
41 | return filename; | 41 | return filename; |
42 | } | 42 | } |
43 | 43 | ||
44 | LLString LLLogChat::timestamp(bool withdate) | ||
45 | { | ||
46 | U32 utc_time; | ||
47 | utc_time = time_corrected(); | ||
48 | |||
49 | // There's only one internal tm buffer. | ||
50 | struct tm* timep; | ||
51 | |||
52 | // Convert to Pacific, based on server's opinion of whether | ||
53 | // it's daylight savings time there. | ||
54 | timep = utc_to_pacific_time(utc_time, gPacificDaylightTime); | ||
55 | |||
56 | LLString text; | ||
57 | if (withdate) | ||
58 | text = llformat("[%d/%02d/%02d %d:%02d] ", (timep->tm_year-100)+2000, timep->tm_mon+1, timep->tm_mday, timep->tm_hour, timep->tm_min); | ||
59 | else | ||
60 | text = llformat("[%d:%02d] ", timep->tm_hour, timep->tm_min); | ||
61 | |||
62 | return text; | ||
63 | } | ||
64 | |||
65 | |||
44 | //static | 66 | //static |
45 | void LLLogChat::saveHistory(LLString filename, LLString line) | 67 | void LLLogChat::saveHistory(LLString filename, LLString line) |
46 | { | 68 | { |
diff --git a/linden/indra/newview/lllogchat.h b/linden/indra/newview/lllogchat.h index 56ea04b..c82f04e 100644 --- a/linden/indra/newview/lllogchat.h +++ b/linden/indra/newview/lllogchat.h | |||
@@ -33,6 +33,7 @@ | |||
33 | class LLLogChat | 33 | class LLLogChat |
34 | { | 34 | { |
35 | public: | 35 | public: |
36 | static LLString timestamp(bool withdate = false); | ||
36 | static LLString makeLogFileName(LLString(filename)); | 37 | static LLString makeLogFileName(LLString(filename)); |
37 | static void saveHistory(LLString filename, LLString line); | 38 | static void saveHistory(LLString filename, LLString line); |
38 | static void loadHistory(LLString filename, void (*callback)(LLString,void*),void* userdata); | 39 | static void loadHistory(LLString filename, void (*callback)(LLString,void*),void* userdata); |
diff --git a/linden/indra/newview/llmanip.cpp b/linden/indra/newview/llmanip.cpp index 1db0a6c..3d27256 100644 --- a/linden/indra/newview/llmanip.cpp +++ b/linden/indra/newview/llmanip.cpp | |||
@@ -560,7 +560,7 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const char* suffi | |||
560 | LLGLEnable tex(GL_TEXTURE_2D); | 560 | LLGLEnable tex(GL_TEXTURE_2D); |
561 | if (fractional_portion != 0) | 561 | if (fractional_portion != 0) |
562 | { | 562 | { |
563 | snprintf(fraction_string, sizeof(fraction_string), "%c%d%s", gResMgr->getDecimalPoint(), fractional_portion, suffix); /* Flawfinder: ignore */ | 563 | snprintf(fraction_string, sizeof(fraction_string), "%c%02d%s", gResMgr->getDecimalPoint(), fractional_portion, suffix); /* Flawfinder: ignore */ |
564 | 564 | ||
565 | gViewerWindow->setupViewport(1, -1); | 565 | gViewerWindow->setupViewport(1, -1); |
566 | hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, -1.f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection); | 566 | hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, -1.f * big_fontp->getWidthF32(val_string), 3.f, shadow_color, hud_selection); |
diff --git a/linden/indra/newview/llmaniprotate.cpp b/linden/indra/newview/llmaniprotate.cpp index aaab416..940e78a 100644 --- a/linden/indra/newview/llmaniprotate.cpp +++ b/linden/indra/newview/llmaniprotate.cpp | |||
@@ -381,7 +381,7 @@ BOOL LLManipRotate::handleMouseDownOnPart( S32 x, S32 y, MASK mask ) | |||
381 | objectp; | 381 | objectp; |
382 | objectp = mObjectSelection->getNextObject()) | 382 | objectp = mObjectSelection->getNextObject()) |
383 | { | 383 | { |
384 | can_rotate = can_rotate && objectp->permMove() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); | 384 | can_rotate = can_rotate && objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts")); |
385 | } | 385 | } |
386 | 386 | ||
387 | if (!can_rotate) | 387 | if (!can_rotate) |
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp index 648be34..c130824 100644 --- a/linden/indra/newview/llmanipscale.cpp +++ b/linden/indra/newview/llmanipscale.cpp | |||
@@ -1222,7 +1222,7 @@ void LLManipScale::sendUpdates( BOOL send_position_update, BOOL send_scale_updat | |||
1222 | mLastUpdateFlags = update_flags; | 1222 | mLastUpdateFlags = update_flags; |
1223 | 1223 | ||
1224 | // enforce minimum update delay and don't stream updates on sub-object selections | 1224 | // enforce minimum update delay and don't stream updates on sub-object selections |
1225 | if( elapsed_time > UPDATE_DELAY && gSavedSettings.getBOOL("SelectLinkedSet") ) | 1225 | if( elapsed_time > UPDATE_DELAY && !gSavedSettings.getBOOL("EditLinkedParts") ) |
1226 | { | 1226 | { |
1227 | gSelectMgr->sendMultipleUpdate( update_flags ); | 1227 | gSelectMgr->sendMultipleUpdate( update_flags ); |
1228 | update_timer.reset(); | 1228 | update_timer.reset(); |
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp index 0bdfbb3..a7312fc 100644 --- a/linden/indra/newview/llmaniptranslate.cpp +++ b/linden/indra/newview/llmaniptranslate.cpp | |||
@@ -298,7 +298,7 @@ BOOL LLManipTranslate::handleMouseDownOnPart( S32 x, S32 y, MASK mask ) | |||
298 | objectp; | 298 | objectp; |
299 | objectp = mObjectSelection->getNextObject()) | 299 | objectp = mObjectSelection->getNextObject()) |
300 | { | 300 | { |
301 | can_move = can_move && objectp->permMove() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); | 301 | can_move = can_move && objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts")); |
302 | } | 302 | } |
303 | 303 | ||
304 | if (!can_move) | 304 | if (!can_move) |
diff --git a/linden/indra/newview/llmapresponders.cpp b/linden/indra/newview/llmapresponders.cpp index ddf5701..9d84064 100644 --- a/linden/indra/newview/llmapresponders.cpp +++ b/linden/indra/newview/llmapresponders.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file llmapresponders.h | 2 | * @file llmapresponders.cpp |
3 | * @brief Processes responses received for map requests. | 3 | * @brief Processes responses received for map requests. |
4 | * | 4 | * |
5 | * Copyright (c) 2006-2007, Linden Research, Inc. | 5 | * Copyright (c) 2006-2007, Linden Research, Inc. |
diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp index c2ca740..bca9080 100644 --- a/linden/indra/newview/llmutelist.cpp +++ b/linden/indra/newview/llmutelist.cpp | |||
@@ -376,8 +376,10 @@ BOOL LLMuteList::loadFromFile(const LLString& filename) | |||
376 | id_buffer[0] = '\0'; | 376 | id_buffer[0] = '\0'; |
377 | name_buffer[0] = '\0'; | 377 | name_buffer[0] = '\0'; |
378 | S32 type = 0; | 378 | S32 type = 0; |
379 | U32 flags = 0; | ||
379 | sscanf( /* Flawfinder: ignore */ | 380 | sscanf( /* Flawfinder: ignore */ |
380 | buffer, " %d %254s %254[^|]", &type, id_buffer, name_buffer); | 381 | buffer, " %d %254s %254[^|]| %u\n", &type, id_buffer, name_buffer, |
382 | &flags); | ||
381 | LLUUID id = LLUUID(id_buffer); | 383 | LLUUID id = LLUUID(id_buffer); |
382 | LLMute mute(id, name_buffer, (LLMute::EType)type); | 384 | LLMute mute(id, name_buffer, (LLMute::EType)type); |
383 | if (mute.mID.isNull() | 385 | if (mute.mID.isNull() |
diff --git a/linden/indra/newview/llnotify.cpp b/linden/indra/newview/llnotify.cpp index e2626b4..7822d00 100644 --- a/linden/indra/newview/llnotify.cpp +++ b/linden/indra/newview/llnotify.cpp | |||
@@ -71,6 +71,16 @@ void LLNotifyBox::showXml( const LLString& xml_desc, notify_callback_t callback, | |||
71 | return showXml(xml_desc, LLString::format_map_t(), callback, user_data); | 71 | return showXml(xml_desc, LLString::format_map_t(), callback, user_data); |
72 | } | 72 | } |
73 | 73 | ||
74 | |||
75 | //static | ||
76 | void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_t& args, BOOL is_caution, | ||
77 | notify_callback_t callback, void *user_data) | ||
78 | { | ||
79 | // for script permission prompts | ||
80 | LLNotifyBox* notify = new LLNotifyBox(xml_desc, args, callback, user_data, is_caution); | ||
81 | gNotifyBoxView->addChild(notify); | ||
82 | } | ||
83 | |||
74 | //static | 84 | //static |
75 | void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_t& args, | 85 | void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_t& args, |
76 | notify_callback_t callback, void *user_data) | 86 | notify_callback_t callback, void *user_data) |
@@ -85,7 +95,7 @@ void LLNotifyBox::showXml( const LLString& xml_desc, const LLString::format_map_ | |||
85 | const option_list_t& options, | 95 | const option_list_t& options, |
86 | BOOL layout_script_dialog) | 96 | BOOL layout_script_dialog) |
87 | { | 97 | { |
88 | LLNotifyBox* notify = new LLNotifyBox(xml_desc, args, callback, user_data, options, layout_script_dialog); | 98 | LLNotifyBox* notify = new LLNotifyBox(xml_desc, args, callback, user_data, FALSE, options, layout_script_dialog); |
89 | gNotifyBoxView->addChild(notify); | 99 | gNotifyBoxView->addChild(notify); |
90 | } | 100 | } |
91 | 101 | ||
@@ -99,7 +109,7 @@ void LLNotifyBox::cleanup() | |||
99 | //--------------------------------------------------------------------------- | 109 | //--------------------------------------------------------------------------- |
100 | 110 | ||
101 | LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args, | 111 | LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args, |
102 | notify_callback_t callback, void* user_data, | 112 | notify_callback_t callback, void* user_data, BOOL is_caution, |
103 | const option_list_t& extra_options, | 113 | const option_list_t& extra_options, |
104 | BOOL layout_script_dialog) | 114 | BOOL layout_script_dialog) |
105 | : LLPanel("notify", LLRect(), BORDER_NO), | 115 | : LLPanel("notify", LLRect(), BORDER_NO), |
@@ -152,9 +162,19 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& | |||
152 | options.insert(options.end(), extra_options.begin(), extra_options.end()); | 162 | options.insert(options.end(), extra_options.begin(), extra_options.end()); |
153 | 163 | ||
154 | // initialize | 164 | // initialize |
155 | 165 | ||
156 | mIsTip = xml_template->mIsTip; | 166 | mIsTip = xml_template->mIsTip; |
157 | mIsFocusRoot = !mIsTip; | 167 | mIsFocusRoot = !mIsTip; |
168 | |||
169 | // caution flag can be set explicitly by specifying it in the | ||
170 | // call to the c'tor, or it can be set implicitly if the | ||
171 | // notify xml template specifies that it is a caution | ||
172 | // | ||
173 | // (but a tip-style notification cannot be a caution notification, | ||
174 | // since the rendering of the additional top textbox doesn't | ||
175 | // account for the special layout of a tip notification) | ||
176 | mIsCaution = ((xml_template->mIsCaution | is_caution) && (!mIsTip)); | ||
177 | |||
158 | mAnimating = TRUE; | 178 | mAnimating = TRUE; |
159 | mCallback = callback; | 179 | mCallback = callback; |
160 | mData = user_data; | 180 | mData = user_data; |
@@ -162,7 +182,7 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& | |||
162 | mDefaultOption = xml_template->mDefaultOption; | 182 | mDefaultOption = xml_template->mDefaultOption; |
163 | 183 | ||
164 | LLRect rect = mIsTip ? getNotifyTipRect(message) | 184 | LLRect rect = mIsTip ? getNotifyTipRect(message) |
165 | : getNotifyRect(mNumOptions, layout_script_dialog); | 185 | : getNotifyRect(mNumOptions, layout_script_dialog, mIsCaution); |
166 | setRect(rect); | 186 | setRect(rect); |
167 | setFollows(mIsTip ? (FOLLOWS_BOTTOM|FOLLOWS_RIGHT) : (FOLLOWS_TOP|FOLLOWS_RIGHT)); | 187 | setFollows(mIsTip ? (FOLLOWS_BOTTOM|FOLLOWS_RIGHT) : (FOLLOWS_TOP|FOLLOWS_RIGHT)); |
168 | setBackgroundVisible(FALSE); | 188 | setBackgroundVisible(FALSE); |
@@ -171,18 +191,57 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& | |||
171 | LLIconCtrl* icon; | 191 | LLIconCtrl* icon; |
172 | LLTextEditor* text; | 192 | LLTextEditor* text; |
173 | 193 | ||
174 | S32 x = HPAD + HPAD; | ||
175 | const S32 TOP = mRect.getHeight() - (mIsTip ? (S32)sFont->getLineHeight() : 32); | 194 | const S32 TOP = mRect.getHeight() - (mIsTip ? (S32)sFont->getLineHeight() : 32); |
176 | const S32 BOTTOM = (S32)sFont->getLineHeight(); | 195 | const S32 BOTTOM = (S32)sFont->getLineHeight(); |
196 | S32 x = HPAD + HPAD; | ||
197 | S32 y = TOP; | ||
198 | |||
199 | if (mIsTip) | ||
200 | { | ||
201 | // use the tip notification icon | ||
202 | icon = new LLIconCtrl("icon", LLRect(x, y, x+32, TOP-32), "notify_tip_icon.tga"); | ||
203 | } | ||
204 | else if (mIsCaution) | ||
205 | { | ||
206 | // use the caution notification icon | ||
207 | icon = new LLIconCtrl("icon", LLRect(x, y, x+32, TOP-32), "notify_caution_icon.tga"); | ||
208 | } | ||
209 | else | ||
210 | { | ||
211 | // use the default notification icon | ||
212 | icon = new LLIconCtrl("icon", LLRect(x, y, x+32, TOP-32), "notify_box_icon.tga"); | ||
213 | } | ||
177 | 214 | ||
178 | icon = new LLIconCtrl("icon", | ||
179 | LLRect(x, TOP, x+32, TOP-32), | ||
180 | mIsTip ? "notify_tip_icon.tga" : "notify_box_icon.tga"); | ||
181 | icon->setMouseOpaque(FALSE); | 215 | icon->setMouseOpaque(FALSE); |
182 | addChild(icon); | 216 | addChild(icon); |
183 | 217 | ||
184 | x += HPAD + HPAD + 32; | 218 | x += HPAD + HPAD + 32; |
185 | 219 | ||
220 | // add a caution textbox at the top of a caution notification | ||
221 | LLTextBox* caution_box = NULL; | ||
222 | if (mIsCaution) | ||
223 | { | ||
224 | S32 caution_height = ((S32)sFont->getLineHeight() * 2) + VPAD; | ||
225 | caution_box = new LLTextBox( | ||
226 | "caution_box", | ||
227 | LLRect(x, y, mRect.getWidth() - 2, caution_height), | ||
228 | "", | ||
229 | sFont, | ||
230 | FALSE); | ||
231 | |||
232 | caution_box->setFontStyle(LLFontGL::BOLD); | ||
233 | caution_box->setColor(gColors.getColor("NotifyCautionWarnColor")); | ||
234 | caution_box->setBackgroundColor(gColors.getColor("NotifyCautionBoxColor")); | ||
235 | caution_box->setBorderVisible(FALSE); | ||
236 | caution_box->setWrappedText(LLNotifyBox::getTemplateMessage("ScriptQuestionCautionWarn")); | ||
237 | |||
238 | addChild(caution_box); | ||
239 | |||
240 | // adjust the vertical position of the next control so that | ||
241 | // it appears below the caution textbox | ||
242 | y = y - caution_height; | ||
243 | } | ||
244 | |||
186 | const S32 BOTTOM_PAD = VPAD * 3; | 245 | const S32 BOTTOM_PAD = VPAD * 3; |
187 | const S32 BTN_TOP = BOTTOM_PAD + (((mNumOptions-1+2)/3)) * (BTN_HEIGHT+VPAD); | 246 | const S32 BTN_TOP = BOTTOM_PAD + (((mNumOptions-1+2)/3)) * (BTN_HEIGHT+VPAD); |
188 | 247 | ||
@@ -194,7 +253,7 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& | |||
194 | DB_INV_ITEM_NAME_BUF_SIZE; // For script dialogs: add space for title. | 253 | DB_INV_ITEM_NAME_BUF_SIZE; // For script dialogs: add space for title. |
195 | 254 | ||
196 | text = new LLTextEditor("box", | 255 | text = new LLTextEditor("box", |
197 | LLRect(x, TOP, mRect.getWidth()-2, mIsTip ? BOTTOM : BTN_TOP+16), | 256 | LLRect(x, y, mRect.getWidth()-2, mIsTip ? BOTTOM : BTN_TOP+16), |
198 | MAX_LENGTH, | 257 | MAX_LENGTH, |
199 | message, | 258 | message, |
200 | sFont, | 259 | sFont, |
@@ -235,7 +294,9 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& | |||
235 | addChild(btn); | 294 | addChild(btn); |
236 | mNextBtn = btn; | 295 | mNextBtn = btn; |
237 | 296 | ||
238 | S32 btn_width = 90; | 297 | // make caution notification buttons slightly narrower |
298 | // so that 3 of them can fit without overlapping the "next" button | ||
299 | S32 btn_width = mIsCaution? 84 : 90; | ||
239 | LLRect btn_rect; | 300 | LLRect btn_rect; |
240 | 301 | ||
241 | for (S32 i = 0; i < mNumOptions; i++) | 302 | for (S32 i = 0; i < mNumOptions; i++) |
@@ -271,6 +332,13 @@ LLNotifyBox::LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& | |||
271 | 332 | ||
272 | btn = new LLButton(options[i], btn_rect, "", onClickButton, userdata); | 333 | btn = new LLButton(options[i], btn_rect, "", onClickButton, userdata); |
273 | btn->setFont(font); | 334 | btn->setFont(font); |
335 | |||
336 | if (mIsCaution) | ||
337 | { | ||
338 | btn->setImageColor(LLUI::sColorsGroup->getColor("ButtonCautionImageColor")); | ||
339 | btn->setDisabledImageColor(LLUI::sColorsGroup->getColor("ButtonCautionImageColor")); | ||
340 | } | ||
341 | |||
274 | addChild(btn, -1); | 342 | addChild(btn, -1); |
275 | 343 | ||
276 | if (i == mDefaultOption) | 344 | if (i == mDefaultOption) |
@@ -374,7 +442,8 @@ void LLNotifyBox::drawBackground() const | |||
374 | { | 442 | { |
375 | LLGLSTexture texture_enabled; | 443 | LLGLSTexture texture_enabled; |
376 | LLViewerImage::bindTexture(imagep); | 444 | LLViewerImage::bindTexture(imagep); |
377 | LLColor4 color = gColors.getColor("NotifyBoxColor"); | 445 | // set proper background color depending on whether notify box is a caution or not |
446 | LLColor4 color = mIsCaution? gColors.getColor("NotifyCautionBoxColor") : gColors.getColor("NotifyBoxColor"); | ||
378 | if(gFocusMgr.childHasKeyboardFocus( this )) | 447 | if(gFocusMgr.childHasKeyboardFocus( this )) |
379 | { | 448 | { |
380 | const S32 focus_width = 2; | 449 | const S32 focus_width = 2; |
@@ -387,7 +456,12 @@ void LLNotifyBox::drawBackground() const | |||
387 | color = gColors.getColor("ColorDropShadow"); | 456 | color = gColors.getColor("ColorDropShadow"); |
388 | glColor4fv(color.mV); | 457 | glColor4fv(color.mV); |
389 | gl_segmented_rect_2d_tex(0, mRect.getHeight(), mRect.getWidth(), 0, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM); | 458 | gl_segmented_rect_2d_tex(0, mRect.getHeight(), mRect.getWidth(), 0, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM); |
390 | color = gColors.getColor("NotifyBoxColor"); | 459 | |
460 | if( mIsCaution ) | ||
461 | color = gColors.getColor("NotifyCautionBoxColor"); | ||
462 | else | ||
463 | color = gColors.getColor("NotifyBoxColor"); | ||
464 | |||
391 | glColor4fv(color.mV); | 465 | glColor4fv(color.mV); |
392 | gl_segmented_rect_2d_tex(1, mRect.getHeight()-1, mRect.getWidth()-1, 1, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM); | 466 | gl_segmented_rect_2d_tex(1, mRect.getHeight()-1, mRect.getWidth()-1, 1, imagep->getWidth(), imagep->getHeight(), 16, mIsTip ? ROUNDED_RECT_TOP : ROUNDED_RECT_BOTTOM); |
393 | } | 467 | } |
@@ -467,9 +541,17 @@ void LLNotifyBox::moveToBack() | |||
467 | 541 | ||
468 | 542 | ||
469 | // static | 543 | // static |
470 | LLRect LLNotifyBox::getNotifyRect(S32 num_options, BOOL layout_script_dialog) | 544 | LLRect LLNotifyBox::getNotifyRect(S32 num_options, BOOL layout_script_dialog, BOOL is_caution) |
471 | { | 545 | { |
472 | S32 notify_height = gSavedSettings.getS32("NotifyBoxHeight"); | 546 | S32 notify_height = gSavedSettings.getS32("NotifyBoxHeight"); |
547 | if (is_caution) | ||
548 | { | ||
549 | // make caution-style dialog taller to accomodate extra text, | ||
550 | // as well as causing the accept/decline buttons to be drawn | ||
551 | // in a different position, to help prevent "quick-click-through" | ||
552 | // of many permissions prompts | ||
553 | notify_height = gSavedSettings.getS32("PermissionsCautionNotifyBoxHeight"); | ||
554 | } | ||
473 | const S32 NOTIFY_WIDTH = gSavedSettings.getS32("NotifyBoxWidth"); | 555 | const S32 NOTIFY_WIDTH = gSavedSettings.getS32("NotifyBoxWidth"); |
474 | 556 | ||
475 | const S32 TOP = gNotifyBoxView->getRect().getHeight(); | 557 | const S32 TOP = gNotifyBoxView->getRect().getHeight(); |
@@ -588,6 +670,17 @@ void LLNotifyBox::onClickButton(void* data) | |||
588 | LLNotifyBox* self = self_and_button->mSelf; | 670 | LLNotifyBox* self = self_and_button->mSelf; |
589 | S32 button = self_and_button->mButton; | 671 | S32 button = self_and_button->mButton; |
590 | 672 | ||
673 | // for caution notifications, check if the last button in the prompt was clicked | ||
674 | // unless it is the only button, in which case it will just be an "OK" button | ||
675 | if ((self->mIsCaution) && (button > 0) && (button == (self->mNumOptions - 1))) | ||
676 | { | ||
677 | // show an alert dialog containing more explanation about the debit permission | ||
678 | LLAlertDialog::showXml("DebitPermissionDetails"); | ||
679 | |||
680 | // keep this notification open | ||
681 | return; | ||
682 | } | ||
683 | |||
591 | if (self->mCallback) | 684 | if (self->mCallback) |
592 | { | 685 | { |
593 | self->mCallback(button, self->mData); | 686 | self->mCallback(button, self->mData); |
@@ -620,6 +713,20 @@ const LLString& LLNotifyBox::getTemplateMessage(const LLString& xml_desc) | |||
620 | } | 713 | } |
621 | } | 714 | } |
622 | 715 | ||
716 | // method to check whether a given notify template show as a caution or not | ||
717 | BOOL LLNotifyBox::getTemplateIsCaution(const LLString& xml_desc) | ||
718 | { | ||
719 | BOOL is_caution = FALSE; | ||
720 | |||
721 | template_map_t::iterator iter = sNotifyTemplates.find(xml_desc); | ||
722 | if (iter != sNotifyTemplates.end()) | ||
723 | { | ||
724 | is_caution = iter->second->mIsCaution; | ||
725 | } | ||
726 | |||
727 | return is_caution; | ||
728 | } | ||
729 | |||
623 | //static | 730 | //static |
624 | bool LLNotifyBox::parseNotify(const LLString& xml_filename) | 731 | bool LLNotifyBox::parseNotify(const LLString& xml_filename) |
625 | { | 732 | { |
@@ -660,6 +767,18 @@ bool LLNotifyBox::parseNotify(const LLString& xml_filename) | |||
660 | { | 767 | { |
661 | xml_template->mIsTip = tip; | 768 | xml_template->mIsTip = tip; |
662 | } | 769 | } |
770 | |||
771 | // parse a bool attribute named "caution" to determine | ||
772 | // whether this notification gets cautionary special handling | ||
773 | BOOL caution = FALSE; | ||
774 | if (notify->getAttributeBOOL("caution", caution)) | ||
775 | { | ||
776 | if (xml_template) | ||
777 | { | ||
778 | xml_template->mIsCaution = caution; | ||
779 | } | ||
780 | } | ||
781 | |||
663 | 782 | ||
664 | S32 btn_idx = 0; | 783 | S32 btn_idx = 0; |
665 | for (LLXMLNode* child = notify->getFirstChild(); | 784 | for (LLXMLNode* child = notify->getFirstChild(); |
diff --git a/linden/indra/newview/llnotify.h b/linden/indra/newview/llnotify.h index 8136cfc..eec27ec 100644 --- a/linden/indra/newview/llnotify.h +++ b/linden/indra/newview/llnotify.h | |||
@@ -46,7 +46,8 @@ public: | |||
46 | 46 | ||
47 | static void showXml( const LLString& xml_desc, | 47 | static void showXml( const LLString& xml_desc, |
48 | notify_callback_t callback = NULL, void *user_data = NULL); | 48 | notify_callback_t callback = NULL, void *user_data = NULL); |
49 | 49 | static void showXml( const LLString& xml_desc, const LLString::format_map_t& args, BOOL is_caution, | |
50 | notify_callback_t callback = NULL, void *user_data = NULL); | ||
50 | static void showXml( const LLString& xml_desc, const LLString::format_map_t& args, | 51 | static void showXml( const LLString& xml_desc, const LLString::format_map_t& args, |
51 | notify_callback_t callback = NULL, void *user_data = NULL); | 52 | notify_callback_t callback = NULL, void *user_data = NULL); |
52 | // For script notifications: | 53 | // For script notifications: |
@@ -57,8 +58,10 @@ public: | |||
57 | 58 | ||
58 | static bool parseNotify(const LLString& xml_filename); | 59 | static bool parseNotify(const LLString& xml_filename); |
59 | static const LLString& getTemplateMessage(const LLString& xml_desc); | 60 | static const LLString& getTemplateMessage(const LLString& xml_desc); |
61 | static BOOL getTemplateIsCaution(const LLString& xml_desc); | ||
60 | 62 | ||
61 | BOOL isTip() const { return mIsTip; } | 63 | BOOL isTip() const { return mIsTip; } |
64 | BOOL isCaution() const { return mIsCaution; } | ||
62 | /*virtual*/ void setVisible(BOOL visible); | 65 | /*virtual*/ void setVisible(BOOL visible); |
63 | 66 | ||
64 | notify_callback_t getNotifyCallback() { return mCallback; } | 67 | notify_callback_t getNotifyCallback() { return mCallback; } |
@@ -69,6 +72,7 @@ public: | |||
69 | protected: | 72 | protected: |
70 | LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args, | 73 | LLNotifyBox(const LLString& xml_desc, const LLString::format_map_t& args, |
71 | notify_callback_t callback, void* user_data, | 74 | notify_callback_t callback, void* user_data, |
75 | BOOL is_caution = FALSE, | ||
72 | const option_list_t& extra_options = option_list_t(), | 76 | const option_list_t& extra_options = option_list_t(), |
73 | BOOL layout_script_dialog = FALSE); | 77 | BOOL layout_script_dialog = FALSE); |
74 | /*virtual*/ ~LLNotifyBox(); | 78 | /*virtual*/ ~LLNotifyBox(); |
@@ -86,7 +90,7 @@ protected: | |||
86 | 90 | ||
87 | // Returns the rect, relative to gNotifyView, where this | 91 | // Returns the rect, relative to gNotifyView, where this |
88 | // notify box should be placed. | 92 | // notify box should be placed. |
89 | static LLRect getNotifyRect(S32 num_options, BOOL layout_script_dialog); | 93 | static LLRect getNotifyRect(S32 num_options, BOOL layout_script_dialog, BOOL is_caution); |
90 | static LLRect getNotifyTipRect(const LLString &message); | 94 | static LLRect getNotifyTipRect(const LLString &message); |
91 | 95 | ||
92 | // internal handler for button being clicked | 96 | // internal handler for button being clicked |
@@ -102,6 +106,7 @@ private: | |||
102 | 106 | ||
103 | protected: | 107 | protected: |
104 | BOOL mIsTip; | 108 | BOOL mIsTip; |
109 | BOOL mIsCaution; // is this a caution notification? | ||
105 | BOOL mAnimating; // Are we sliding onscreen? | 110 | BOOL mAnimating; // Are we sliding onscreen? |
106 | 111 | ||
107 | // Time since this notification was displayed. | 112 | // Time since this notification was displayed. |
@@ -149,7 +154,7 @@ extern LLNotifyBoxView* gNotifyBoxView; | |||
149 | class LLNotifyBoxTemplate : public LLRefCount | 154 | class LLNotifyBoxTemplate : public LLRefCount |
150 | { | 155 | { |
151 | public: | 156 | public: |
152 | LLNotifyBoxTemplate() : mIsTip(FALSE), mDefaultOption(0) {} | 157 | LLNotifyBoxTemplate() : mIsTip(FALSE), mIsCaution(FALSE), mDefaultOption(0) {} |
153 | 158 | ||
154 | void setMessage(const LLString& message) | 159 | void setMessage(const LLString& message) |
155 | { | 160 | { |
@@ -169,6 +174,7 @@ public: | |||
169 | LLString mLabel; // Handle for access from code, etc | 174 | LLString mLabel; // Handle for access from code, etc |
170 | LLString mMessage; // Message to display | 175 | LLString mMessage; // Message to display |
171 | BOOL mIsTip; | 176 | BOOL mIsTip; |
177 | BOOL mIsCaution; | ||
172 | LLNotifyBox::option_list_t mOptions; | 178 | LLNotifyBox::option_list_t mOptions; |
173 | S32 mDefaultOption; | 179 | S32 mDefaultOption; |
174 | }; | 180 | }; |
diff --git a/linden/indra/newview/llpaneldirbrowser.cpp b/linden/indra/newview/llpaneldirbrowser.cpp index b65480b..52bd0f7 100644 --- a/linden/indra/newview/llpaneldirbrowser.cpp +++ b/linden/indra/newview/llpaneldirbrowser.cpp | |||
@@ -128,8 +128,11 @@ void LLPanelDirBrowser::draw() | |||
128 | LLCtrlListInterface *list = childGetListInterface("results"); | 128 | LLCtrlListInterface *list = childGetListInterface("results"); |
129 | if (list) | 129 | if (list) |
130 | { | 130 | { |
131 | list->selectFirstItem(); // select first item by default | 131 | if (list->getCanSelect()) |
132 | childSetFocus("results", TRUE); | 132 | { |
133 | list->selectFirstItem(); // select first item by default | ||
134 | childSetFocus("results", TRUE); | ||
135 | } | ||
133 | // Request specific data from the server | 136 | // Request specific data from the server |
134 | onCommitList(NULL, this); | 137 | onCommitList(NULL, this); |
135 | } | 138 | } |
diff --git a/linden/indra/newview/llpaneldirclassified.cpp b/linden/indra/newview/llpaneldirclassified.cpp index 8b4a49d..276b608 100644 --- a/linden/indra/newview/llpaneldirclassified.cpp +++ b/linden/indra/newview/llpaneldirclassified.cpp | |||
@@ -55,6 +55,7 @@ | |||
55 | #include "llpaneldirbrowser.h" | 55 | #include "llpaneldirbrowser.h" |
56 | #include "lltextbox.h" | 56 | #include "lltextbox.h" |
57 | #include "llviewermessage.h" | 57 | #include "llviewermessage.h" |
58 | #include "llvieweruictrlfactory.h" | ||
58 | #include "llworldmap.h" | 59 | #include "llworldmap.h" |
59 | 60 | ||
60 | // | 61 | // |
@@ -85,7 +86,8 @@ BOOL LLPanelDirClassified::postBuild() | |||
85 | childSetKeystrokeCallback("name", onKeystrokeNameClassified, this); | 86 | childSetKeystrokeCallback("name", onKeystrokeNameClassified, this); |
86 | 87 | ||
87 | childSetAction("Search", onClickSearchCore, this); | 88 | childSetAction("Search", onClickSearchCore, this); |
88 | setDefaultBtn( "Search" ); | 89 | childSetAction("Browse", onClickSearchCore, this); |
90 | setDefaultBtn( "Browse" ); | ||
89 | 91 | ||
90 | childSetAction("Place an Ad...", onClickCreateNewClassified, this); | 92 | childSetAction("Place an Ad...", onClickCreateNewClassified, this); |
91 | 93 | ||
@@ -186,6 +188,7 @@ void LLPanelDirClassified::performQuery() | |||
186 | void LLPanelDirClassified::onKeystrokeNameClassified(LLLineEditor* line, void* data) | 188 | void LLPanelDirClassified::onKeystrokeNameClassified(LLLineEditor* line, void* data) |
187 | { | 189 | { |
188 | LLPanelDirClassified *self = (LLPanelDirClassified*)data; | 190 | LLPanelDirClassified *self = (LLPanelDirClassified*)data; |
191 | |||
189 | S32 len = line->getLength(); | 192 | S32 len = line->getLength(); |
190 | if (len == 0 | 193 | if (len == 0 |
191 | || len >= 3) | 194 | || len >= 3) |
@@ -199,4 +202,17 @@ void LLPanelDirClassified::onKeystrokeNameClassified(LLLineEditor* line, void* d | |||
199 | self->setDefaultBtn(); | 202 | self->setDefaultBtn(); |
200 | self->childDisable("Search"); | 203 | self->childDisable("Search"); |
201 | } | 204 | } |
205 | |||
206 | // Change the Browse to Search or vice versa | ||
207 | if (len > 0) | ||
208 | { | ||
209 | self->childSetVisible("Search", TRUE); | ||
210 | self->childSetVisible("Browse", FALSE); | ||
211 | } | ||
212 | else | ||
213 | { | ||
214 | self->setDefaultBtn( "Browse" ); | ||
215 | self->childSetVisible("Search", FALSE); | ||
216 | self->childSetVisible("Browse", TRUE); | ||
217 | } | ||
202 | } | 218 | } |
diff --git a/linden/indra/newview/llpanelgroupvoting.cpp b/linden/indra/newview/llpanelgroupvoting.cpp index 8b8cd76..e21af7a 100644 --- a/linden/indra/newview/llpanelgroupvoting.cpp +++ b/linden/indra/newview/llpanelgroupvoting.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file llpanelgroupvoting.h | 2 | * @file llpanelgroupvoting.cpp |
3 | * @brief LLPanelGroupVoting class definition. | 3 | * @brief LLPanelGroupVoting class definition. |
4 | * | 4 | * |
5 | * Copyright (c) 2003-2007, Linden Research, Inc. | 5 | * Copyright (c) 2003-2007, Linden Research, Inc. |
diff --git a/linden/indra/newview/llpanelinventory.cpp b/linden/indra/newview/llpanelinventory.cpp index 13cee05..13f07c0 100644 --- a/linden/indra/newview/llpanelinventory.cpp +++ b/linden/indra/newview/llpanelinventory.cpp | |||
@@ -223,39 +223,38 @@ void LLTaskInvFVBridge::buyItem() | |||
223 | { | 223 | { |
224 | gViewerWindow->alertXml("Cannot_Purchase_an_Attachment"); | 224 | gViewerWindow->alertXml("Cannot_Purchase_an_Attachment"); |
225 | llinfos << "Attempt to purchase an attachment" << llendl; | 225 | llinfos << "Attempt to purchase an attachment" << llendl; |
226 | delete inv; | ||
226 | } | 227 | } |
227 | else | 228 | else |
228 | { | 229 | { |
229 | 230 | LLString::format_map_t args; | |
230 | 231 | args["[PRICE]"] = llformat("%d",sale_info.getSalePrice()); | |
231 | LLString::format_map_t args; | 232 | args["[OWNER]"] = owner_name; |
232 | args["[PRICE]"] = llformat("%d",sale_info.getSalePrice()); | 233 | if (sale_info.getSaleType() != LLSaleInfo::FS_CONTENTS) |
233 | args["[OWNER]"] = owner_name; | 234 | { |
234 | if (sale_info.getSaleType() != LLSaleInfo::FS_CONTENTS) | 235 | U32 next_owner_mask = perm.getMaskNextOwner(); |
235 | { | 236 | args["[MODIFYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_MODIFY) ? "PermYes" : "PermNo"); |
236 | U32 next_owner_mask = perm.getMaskNextOwner(); | 237 | args["[COPYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_COPY) ? "PermYes" : "PermNo"); |
237 | args["[MODIFYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_MODIFY) ? "PermYes" : "PermNo"); | 238 | args["[RESELLPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_TRANSFER) ? "PermYes" : "PermNo"); |
238 | args["[COPYPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_COPY) ? "PermYes" : "PermNo"); | ||
239 | args["[RESELLPERM]"] = LLAlertDialog::getTemplateMessage((next_owner_mask & PERM_TRANSFER) ? "PermYes" : "PermNo"); | ||
240 | } | ||
241 | |||
242 | LLString alertdesc; | ||
243 | switch(sale_info.getSaleType()) | ||
244 | { | ||
245 | case LLSaleInfo::FS_ORIGINAL: | ||
246 | alertdesc = owner_name.empty() ? "BuyOriginalNoOwner" : "BuyOriginal"; | ||
247 | break; | ||
248 | case LLSaleInfo::FS_COPY: | ||
249 | default: | ||
250 | alertdesc = owner_name.empty() ? "BuyCopyNoOwner" : "BuyCopy"; | ||
251 | break; | ||
252 | case LLSaleInfo::FS_CONTENTS: | ||
253 | alertdesc = owner_name.empty() ? "BuyContentsNoOwner" : "BuyContents"; | ||
254 | break; | ||
255 | } | ||
256 | |||
257 | gViewerWindow->alertXml(alertdesc, args, LLTaskInvFVBridge::commitBuyItem, (void*)inv); | ||
258 | } | 239 | } |
240 | |||
241 | LLString alertdesc; | ||
242 | switch(sale_info.getSaleType()) | ||
243 | { | ||
244 | case LLSaleInfo::FS_ORIGINAL: | ||
245 | alertdesc = owner_name.empty() ? "BuyOriginalNoOwner" : "BuyOriginal"; | ||
246 | break; | ||
247 | case LLSaleInfo::FS_CONTENTS: | ||
248 | alertdesc = owner_name.empty() ? "BuyContentsNoOwner" : "BuyContents"; | ||
249 | break; | ||
250 | case LLSaleInfo::FS_COPY: | ||
251 | default: | ||
252 | alertdesc = owner_name.empty() ? "BuyCopyNoOwner" : "BuyCopy"; | ||
253 | break; | ||
254 | } | ||
255 | |||
256 | gViewerWindow->alertXml(alertdesc, args, LLTaskInvFVBridge::commitBuyItem, (void*)inv); | ||
257 | } | ||
259 | } | 258 | } |
260 | 259 | ||
261 | S32 LLTaskInvFVBridge::getPrice() | 260 | S32 LLTaskInvFVBridge::getPrice() |
diff --git a/linden/indra/newview/llpanelmsgs.cpp b/linden/indra/newview/llpanelmsgs.cpp index 3a8729c..a758800 100644 --- a/linden/indra/newview/llpanelmsgs.cpp +++ b/linden/indra/newview/llpanelmsgs.cpp | |||
@@ -34,6 +34,7 @@ | |||
34 | #include "llviewerwindow.h" | 34 | #include "llviewerwindow.h" |
35 | #include "llviewercontrol.h" | 35 | #include "llviewercontrol.h" |
36 | #include "llvieweruictrlfactory.h" | 36 | #include "llvieweruictrlfactory.h" |
37 | #include "llfirstuse.h" | ||
37 | 38 | ||
38 | class LLPopupData | 39 | class LLPopupData |
39 | { | 40 | { |
@@ -68,6 +69,7 @@ BOOL LLPanelMsgs::postBuild() | |||
68 | mEnabledPopups = LLViewerUICtrlFactory::getScrollListByName(this, "enabled_popups"); | 69 | mEnabledPopups = LLViewerUICtrlFactory::getScrollListByName(this, "enabled_popups"); |
69 | childSetAction("enable_popup", onClickEnablePopup, this); | 70 | childSetAction("enable_popup", onClickEnablePopup, this); |
70 | childSetAction("reset_dialogs_btn", onClickResetDialogs, this); | 71 | childSetAction("reset_dialogs_btn", onClickResetDialogs, this); |
72 | childSetAction("skip_dialogs_btn", onClickSkipDialogs, this); | ||
71 | buildLists(); | 73 | buildLists(); |
72 | 74 | ||
73 | sPopupData.mAutoAcceptNewInventory = gSavedSettings.getBOOL("AutoAcceptNewInventory"); | 75 | sPopupData.mAutoAcceptNewInventory = gSavedSettings.getBOOL("AutoAcceptNewInventory"); |
@@ -163,6 +165,27 @@ void LLPanelMsgs::cancel() | |||
163 | gSavedSettings.setBOOL("AutoAcceptNewInventory", sPopupData.mAutoAcceptNewInventory); | 165 | gSavedSettings.setBOOL("AutoAcceptNewInventory", sPopupData.mAutoAcceptNewInventory); |
164 | } | 166 | } |
165 | 167 | ||
168 | void LLPanelMsgs::resetAllIgnored() | ||
169 | { | ||
170 | for(LLAlertDialog::template_map_t::iterator iter = LLAlertDialog::sIgnorableTemplates.begin(); | ||
171 | iter != LLAlertDialog::sIgnorableTemplates.end(); ++iter) | ||
172 | { | ||
173 | LLAlertDialogTemplate* alert_temp = iter->second; | ||
174 | S32 ignore = alert_temp->getIgnore(); | ||
175 | if(ignore) | ||
176 | alert_temp->setIgnore(false); | ||
177 | } | ||
178 | } | ||
179 | |||
180 | void LLPanelMsgs::setAllIgnored() | ||
181 | { | ||
182 | for(LLAlertDialog::template_map_t::iterator iter = LLAlertDialog::sIgnorableTemplates.begin(); | ||
183 | iter != LLAlertDialog::sIgnorableTemplates.end(); ++iter) | ||
184 | { | ||
185 | LLAlertDialogTemplate* alert_temp = iter->second; | ||
186 | alert_temp->setIgnore(true); | ||
187 | } | ||
188 | } | ||
166 | 189 | ||
167 | //static | 190 | //static |
168 | void LLPanelMsgs::onClickEnablePopup(void* user_data) | 191 | void LLPanelMsgs::onClickEnablePopup(void* user_data) |
@@ -188,10 +211,13 @@ void callback_reset_dialogs(S32 option, void* data) | |||
188 | { | 211 | { |
189 | if (0 == option) | 212 | if (0 == option) |
190 | { | 213 | { |
191 | gSavedSettings.resetWarnings(); // resets all ignorable dialogs | ||
192 | LLPanelMsgs* panelp = (LLPanelMsgs*)data; | 214 | LLPanelMsgs* panelp = (LLPanelMsgs*)data; |
193 | if ( panelp ) | 215 | if ( panelp ) |
216 | { | ||
217 | panelp->resetAllIgnored(); | ||
218 | LLFirstUse::resetFirstUse(); | ||
194 | panelp->buildLists(); | 219 | panelp->buildLists(); |
220 | } | ||
195 | } | 221 | } |
196 | } | 222 | } |
197 | 223 | ||
@@ -200,3 +226,23 @@ void LLPanelMsgs::onClickResetDialogs(void* user_data) | |||
200 | { | 226 | { |
201 | gViewerWindow->alertXml("ResetShowNextTimeDialogs",callback_reset_dialogs,user_data); | 227 | gViewerWindow->alertXml("ResetShowNextTimeDialogs",callback_reset_dialogs,user_data); |
202 | } | 228 | } |
229 | |||
230 | void callback_skip_dialogs(S32 option, void* data) | ||
231 | { | ||
232 | if (0 == option) | ||
233 | { | ||
234 | LLPanelMsgs* panelp = (LLPanelMsgs*)data; | ||
235 | if ( panelp ) | ||
236 | { | ||
237 | panelp->setAllIgnored(); | ||
238 | LLFirstUse::disableFirstUse(); | ||
239 | panelp->buildLists(); | ||
240 | } | ||
241 | } | ||
242 | } | ||
243 | |||
244 | // static | ||
245 | void LLPanelMsgs::onClickSkipDialogs(void* user_data) | ||
246 | { | ||
247 | gViewerWindow->alertXml("SkipShowNextTimeDialogs", callback_skip_dialogs, user_data); | ||
248 | } | ||
diff --git a/linden/indra/newview/llpanelmsgs.h b/linden/indra/newview/llpanelmsgs.h index 58b6b95..72fc26a 100644 --- a/linden/indra/newview/llpanelmsgs.h +++ b/linden/indra/newview/llpanelmsgs.h | |||
@@ -47,9 +47,13 @@ public: | |||
47 | 47 | ||
48 | static void onClickEnablePopup(void* user_data); | 48 | static void onClickEnablePopup(void* user_data); |
49 | static void onClickResetDialogs(void* user_data); | 49 | static void onClickResetDialogs(void* user_data); |
50 | static void onClickSkipDialogs(void* user_data); | ||
50 | 51 | ||
51 | void buildLists(); | 52 | void buildLists(); |
52 | 53 | ||
54 | void resetAllIgnored(); | ||
55 | void setAllIgnored(); | ||
56 | |||
53 | protected: | 57 | protected: |
54 | LLScrollListCtrl* mDisabledPopups; | 58 | LLScrollListCtrl* mDisabledPopups; |
55 | LLScrollListCtrl* mEnabledPopups; | 59 | LLScrollListCtrl* mEnabledPopups; |
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp index ae1c213..3e7be68 100644 --- a/linden/indra/newview/llpanelobject.cpp +++ b/linden/indra/newview/llpanelobject.cpp | |||
@@ -67,6 +67,7 @@ | |||
67 | #include "pipeline.h" | 67 | #include "pipeline.h" |
68 | #include "viewer.h" | 68 | #include "viewer.h" |
69 | #include "llvieweruictrlfactory.h" | 69 | #include "llvieweruictrlfactory.h" |
70 | #include "llfirstuse.h" | ||
70 | 71 | ||
71 | #include "lldrawpool.h" | 72 | #include "lldrawpool.h" |
72 | 73 | ||
@@ -256,32 +257,36 @@ BOOL LLPanelObject::postBuild() | |||
256 | 257 | ||
257 | // Sculpt | 258 | // Sculpt |
258 | mCtrlSculptTexture = LLUICtrlFactory::getTexturePickerByName(this,"sculpt texture control"); | 259 | mCtrlSculptTexture = LLUICtrlFactory::getTexturePickerByName(this,"sculpt texture control"); |
259 | mCtrlSculptTexture->setDefaultImageAssetID(LLUUID(SCULPT_DEFAULT_TEXTURE)); | 260 | if (mCtrlSculptTexture) |
260 | mCtrlSculptTexture->setCommitCallback( LLPanelObject::onCommitSculpt ); | 261 | { |
261 | mCtrlSculptTexture->setOnCancelCallback( LLPanelObject::onCancelSculpt ); | 262 | mCtrlSculptTexture->setDefaultImageAssetID(LLUUID(SCULPT_DEFAULT_TEXTURE)); |
262 | mCtrlSculptTexture->setOnSelectCallback( LLPanelObject::onSelectSculpt ); | 263 | mCtrlSculptTexture->setCommitCallback( LLPanelObject::onCommitSculpt ); |
263 | mCtrlSculptTexture->setDropCallback(LLPanelObject::onDropSculpt); | 264 | mCtrlSculptTexture->setOnCancelCallback( LLPanelObject::onCancelSculpt ); |
264 | mCtrlSculptTexture->setCallbackUserData( this ); | 265 | mCtrlSculptTexture->setOnSelectCallback( LLPanelObject::onSelectSculpt ); |
265 | // Don't allow (no copy) or (no transfer) textures to be selected during immediate mode | 266 | mCtrlSculptTexture->setDropCallback(LLPanelObject::onDropSculpt); |
266 | mCtrlSculptTexture->setImmediateFilterPermMask(PERM_COPY | PERM_TRANSFER); | 267 | mCtrlSculptTexture->setCallbackUserData( this ); |
267 | // Allow any texture to be used during non-immediate mode. | 268 | // Don't allow (no copy) or (no transfer) textures to be selected during immediate mode |
268 | mCtrlSculptTexture->setNonImmediateFilterPermMask(PERM_NONE); | 269 | mCtrlSculptTexture->setImmediateFilterPermMask(PERM_COPY | PERM_TRANSFER); |
269 | LLAggregatePermissions texture_perms; | 270 | // Allow any texture to be used during non-immediate mode. |
270 | if (gSelectMgr->selectGetAggregateTexturePermissions(texture_perms)) | 271 | mCtrlSculptTexture->setNonImmediateFilterPermMask(PERM_NONE); |
271 | { | 272 | LLAggregatePermissions texture_perms; |
272 | BOOL can_copy = | 273 | if (gSelectMgr->selectGetAggregateTexturePermissions(texture_perms)) |
273 | texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_EMPTY || | 274 | { |
274 | texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_ALL; | 275 | BOOL can_copy = |
275 | BOOL can_transfer = | 276 | texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_EMPTY || |
276 | texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_EMPTY || | 277 | texture_perms.getValue(PERM_COPY) == LLAggregatePermissions::AP_ALL; |
277 | texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_ALL; | 278 | BOOL can_transfer = |
278 | mCtrlSculptTexture->setCanApplyImmediately(can_copy && can_transfer); | 279 | texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_EMPTY || |
279 | } | 280 | texture_perms.getValue(PERM_TRANSFER) == LLAggregatePermissions::AP_ALL; |
280 | else | 281 | mCtrlSculptTexture->setCanApplyImmediately(can_copy && can_transfer); |
281 | { | 282 | } |
282 | mCtrlSculptTexture->setCanApplyImmediately(FALSE); | 283 | else |
284 | { | ||
285 | mCtrlSculptTexture->setCanApplyImmediately(FALSE); | ||
286 | } | ||
283 | } | 287 | } |
284 | 288 | ||
289 | |||
285 | // Start with everyone disabled | 290 | // Start with everyone disabled |
286 | clearCtrls(); | 291 | clearCtrls(); |
287 | 292 | ||
@@ -347,9 +352,9 @@ void LLPanelObject::getState( ) | |||
347 | } | 352 | } |
348 | 353 | ||
349 | // can move or rotate only linked group with move permissions, or sub-object with move and modify perms | 354 | // can move or rotate only linked group with move permissions, or sub-object with move and modify perms |
350 | BOOL enable_move = objectp->permMove() && !objectp->isAttachment() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); | 355 | BOOL enable_move = objectp->permMove() && !objectp->isAttachment() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts")); |
351 | BOOL enable_scale = objectp->permMove() && objectp->permModify(); | 356 | BOOL enable_scale = objectp->permMove() && objectp->permModify(); |
352 | BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || gSavedSettings.getBOOL("SelectLinkedSet")); | 357 | BOOL enable_rotate = objectp->permMove() && ( (objectp->permModify() && !objectp->isAttachment()) || !gSavedSettings.getBOOL("EditLinkedParts")); |
353 | 358 | ||
354 | LLVector3 vec; | 359 | LLVector3 vec; |
355 | if (enable_move) | 360 | if (enable_move) |
@@ -638,6 +643,7 @@ void LLPanelObject::getState( ) | |||
638 | if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT)) | 643 | if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT)) |
639 | { | 644 | { |
640 | selected_item = MI_SCULPT; | 645 | selected_item = MI_SCULPT; |
646 | LLFirstUse::useSculptedPrim(); | ||
641 | } | 647 | } |
642 | 648 | ||
643 | 649 | ||
@@ -1044,7 +1050,11 @@ void LLPanelObject::getState( ) | |||
1044 | { | 1050 | { |
1045 | mTextureCtrl->setTentative(FALSE); | 1051 | mTextureCtrl->setTentative(FALSE); |
1046 | mTextureCtrl->setEnabled(editable); | 1052 | mTextureCtrl->setEnabled(editable); |
1047 | mTextureCtrl->setImageAssetID(sculpt_params->getSculptTexture()); | 1053 | if (editable) |
1054 | mTextureCtrl->setImageAssetID(sculpt_params->getSculptTexture()); | ||
1055 | else | ||
1056 | mTextureCtrl->setImageAssetID(LLUUID::null); | ||
1057 | |||
1048 | 1058 | ||
1049 | if (mObject != objectp) // we've just selected a new object, so save for undo | 1059 | if (mObject != objectp) // we've just selected a new object, so save for undo |
1050 | mSculptTextureRevert = sculpt_params->getSculptTexture(); | 1060 | mSculptTextureRevert = sculpt_params->getSculptTexture(); |
diff --git a/linden/indra/newview/llpolymesh.h b/linden/indra/newview/llpolymesh.h index f3022f5..9634dbf 100644 --- a/linden/indra/newview/llpolymesh.h +++ b/linden/indra/newview/llpolymesh.h | |||
@@ -360,7 +360,7 @@ protected: | |||
360 | typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable; | 360 | typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable; |
361 | static LLPolyMeshSharedDataTable sGlobalSharedMeshList; | 361 | static LLPolyMeshSharedDataTable sGlobalSharedMeshList; |
362 | 362 | ||
363 | LLVOAvatar* mAvatarp; | 363 | LLPointer<LLVOAvatar> mAvatarp; |
364 | }; | 364 | }; |
365 | 365 | ||
366 | //----------------------------------------------------------------------------- | 366 | //----------------------------------------------------------------------------- |
@@ -426,7 +426,7 @@ protected: | |||
426 | joint_vec_map_t mJointScales; | 426 | joint_vec_map_t mJointScales; |
427 | joint_vec_map_t mJointOffsets; | 427 | joint_vec_map_t mJointOffsets; |
428 | LLVector3 mDefaultVec; | 428 | LLVector3 mDefaultVec; |
429 | LLVOAvatar* mAvatar; | 429 | LLPointer<LLVOAvatar> mAvatar; |
430 | }; | 430 | }; |
431 | 431 | ||
432 | #endif // LL_LLPOLYMESH_H | 432 | #endif // LL_LLPOLYMESH_H |
diff --git a/linden/indra/newview/llprefschat.cpp b/linden/indra/newview/llprefschat.cpp index 28434ec..70f7833 100644 --- a/linden/indra/newview/llprefschat.cpp +++ b/linden/indra/newview/llprefschat.cpp | |||
@@ -64,6 +64,7 @@ protected: | |||
64 | LLColor4 mSystemChatColor; | 64 | LLColor4 mSystemChatColor; |
65 | LLColor4 mAgentChatColor; | 65 | LLColor4 mAgentChatColor; |
66 | LLColor4 mObjectChatColor; | 66 | LLColor4 mObjectChatColor; |
67 | LLColor4 mOwnerSayChatColor; | ||
67 | LLColor4 mBGChatColor; | 68 | LLColor4 mBGChatColor; |
68 | LLColor4 mScriptErrorColor; | 69 | LLColor4 mScriptErrorColor; |
69 | LLColor4 mHTMLLinkColor; | 70 | LLColor4 mHTMLLinkColor; |
@@ -98,6 +99,7 @@ void LLPrefsChatImpl::refresh() | |||
98 | mSystemChatColor = gSavedSettings.getColor4("SystemChatColor"); | 99 | mSystemChatColor = gSavedSettings.getColor4("SystemChatColor"); |
99 | mAgentChatColor = gSavedSettings.getColor4("AgentChatColor"); | 100 | mAgentChatColor = gSavedSettings.getColor4("AgentChatColor"); |
100 | mObjectChatColor = gSavedSettings.getColor4("ObjectChatColor"); | 101 | mObjectChatColor = gSavedSettings.getColor4("ObjectChatColor"); |
102 | mOwnerSayChatColor = gSavedSettings.getColor4("llOwnerSayChatColor"); | ||
101 | mBGChatColor = gSavedSettings.getColor4("BackgroundChatColor"); | 103 | mBGChatColor = gSavedSettings.getColor4("BackgroundChatColor"); |
102 | mScriptErrorColor = gSavedSettings.getColor4("ScriptErrorColor"); | 104 | mScriptErrorColor = gSavedSettings.getColor4("ScriptErrorColor"); |
103 | mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor"); | 105 | mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor"); |
@@ -119,6 +121,7 @@ void LLPrefsChatImpl::cancel() | |||
119 | gSavedSettings.setColor4("SystemChatColor", mSystemChatColor); | 121 | gSavedSettings.setColor4("SystemChatColor", mSystemChatColor); |
120 | gSavedSettings.setColor4("AgentChatColor", mAgentChatColor); | 122 | gSavedSettings.setColor4("AgentChatColor", mAgentChatColor); |
121 | gSavedSettings.setColor4("ObjectChatColor", mObjectChatColor); | 123 | gSavedSettings.setColor4("ObjectChatColor", mObjectChatColor); |
124 | gSavedSettings.setColor4("llOwnerSayChatColor", mOwnerSayChatColor); | ||
122 | gSavedSettings.setColor4("BackgroundChatColor", mBGChatColor); | 125 | gSavedSettings.setColor4("BackgroundChatColor", mBGChatColor); |
123 | gSavedSettings.setColor4("ScriptErrorColor", mScriptErrorColor); | 126 | gSavedSettings.setColor4("ScriptErrorColor", mScriptErrorColor); |
124 | gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor); | 127 | gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor); |
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp index 8575113..738c340 100644 --- a/linden/indra/newview/llprefsim.cpp +++ b/linden/indra/newview/llprefsim.cpp | |||
@@ -68,6 +68,11 @@ protected: | |||
68 | BOOL mLogChat; | 68 | BOOL mLogChat; |
69 | BOOL mLogShowHistory; | 69 | BOOL mLogShowHistory; |
70 | BOOL mShowTimestamps; | 70 | BOOL mShowTimestamps; |
71 | BOOL mIMLogTimestamp; | ||
72 | BOOL mLogChatTimestamp; | ||
73 | BOOL mLogIMChat; | ||
74 | BOOL mLogTimestampDate; | ||
75 | |||
71 | LLString mIMBusyResponse; | 76 | LLString mIMBusyResponse; |
72 | LLString mLogPath; | 77 | LLString mLogPath; |
73 | 78 | ||
@@ -95,6 +100,10 @@ void LLPrefsIMImpl::refresh() | |||
95 | mLogInstantMessages= gSavedPerAccountSettings.getBOOL("LogInstantMessages"); | 100 | mLogInstantMessages= gSavedPerAccountSettings.getBOOL("LogInstantMessages"); |
96 | mLogChat = gSavedPerAccountSettings.getBOOL("LogChat"); | 101 | mLogChat = gSavedPerAccountSettings.getBOOL("LogChat"); |
97 | mLogShowHistory = gSavedPerAccountSettings.getBOOL("LogShowHistory"); | 102 | mLogShowHistory = gSavedPerAccountSettings.getBOOL("LogShowHistory"); |
103 | mIMLogTimestamp = gSavedPerAccountSettings.getBOOL("IMLogTimestamp"); | ||
104 | mLogChatTimestamp = gSavedPerAccountSettings.getBOOL("LogChatTimestamp"); | ||
105 | mLogIMChat = gSavedPerAccountSettings.getBOOL("LogChatIM"); | ||
106 | mLogTimestampDate = gSavedPerAccountSettings.getBOOL("LogTimestampDate"); | ||
98 | } | 107 | } |
99 | 108 | ||
100 | void LLPrefsIMImpl::cancel() | 109 | void LLPrefsIMImpl::cancel() |
@@ -106,6 +115,10 @@ void LLPrefsIMImpl::cancel() | |||
106 | gSavedPerAccountSettings.setBOOL("LogInstantMessages",mLogInstantMessages); | 115 | gSavedPerAccountSettings.setBOOL("LogInstantMessages",mLogInstantMessages); |
107 | gSavedPerAccountSettings.setBOOL("LogChat",mLogChat); | 116 | gSavedPerAccountSettings.setBOOL("LogChat",mLogChat); |
108 | gSavedPerAccountSettings.setBOOL("LogShowHistory",mLogShowHistory); | 117 | gSavedPerAccountSettings.setBOOL("LogShowHistory",mLogShowHistory); |
118 | gSavedPerAccountSettings.setBOOL("IMLogTimestamp",mIMLogTimestamp); | ||
119 | gSavedPerAccountSettings.setBOOL("LogChatTimestamp",mLogChatTimestamp); | ||
120 | gSavedPerAccountSettings.setBOOL("LogChatIM",mLogIMChat); | ||
121 | gSavedPerAccountSettings.setBOOL("LogTimestampDate",mLogTimestampDate); | ||
109 | } | 122 | } |
110 | 123 | ||
111 | BOOL LLPrefsIMImpl::postBuild() | 124 | BOOL LLPrefsIMImpl::postBuild() |
@@ -130,6 +143,10 @@ BOOL LLPrefsIMImpl::postBuild() | |||
130 | childDisable("log_show_history"); | 143 | childDisable("log_show_history"); |
131 | childDisable("log_path_button"); | 144 | childDisable("log_path_button"); |
132 | childDisable("busy_response"); | 145 | childDisable("busy_response"); |
146 | childDisable("log_instant_messages_timestamp"); | ||
147 | childDisable("log_chat_timestamp"); | ||
148 | childDisable("log_chat_IM"); | ||
149 | childDisable("log_date_timestamp"); | ||
133 | 150 | ||
134 | childSetText("busy_response", childGetText("log_in_to_change")); | 151 | childSetText("busy_response", childGetText("log_in_to_change")); |
135 | 152 | ||
@@ -138,7 +155,11 @@ BOOL LLPrefsIMImpl::postBuild() | |||
138 | childSetText("log_path_string", mLogPath); | 155 | childSetText("log_path_string", mLogPath); |
139 | childSetValue("log_instant_messages", mLogInstantMessages); | 156 | childSetValue("log_instant_messages", mLogInstantMessages); |
140 | childSetValue("log_chat", mLogChat); | 157 | childSetValue("log_chat", mLogChat); |
141 | childSetValue("log_show_history", mLogShowHistory); | 158 | childSetValue("log_show_history", mIMLogTimestamp); |
159 | childSetValue("log_instant_messages_timestamp", mIMLogTimestamp); | ||
160 | childSetValue("log_chat_timestamp", mLogChatTimestamp); | ||
161 | childSetValue("log_chat_IM", mLogIMChat); | ||
162 | childSetValue("log_date_timestamp",mLogTimestampDate); | ||
142 | childSetAction("log_path_button", onClickLogPath, this); | 163 | childSetAction("log_path_button", onClickLogPath, this); |
143 | childSetCommitCallback("log_chat",onCommitLogging,this); | 164 | childSetCommitCallback("log_chat",onCommitLogging,this); |
144 | childSetCommitCallback("log_instant_messages",onCommitLogging,this); | 165 | childSetCommitCallback("log_instant_messages",onCommitLogging,this); |
@@ -179,6 +200,10 @@ void LLPrefsIMImpl::apply() | |||
179 | gSavedPerAccountSettings.setBOOL("LogInstantMessages",childGetValue("log_instant_messages").asBoolean()); | 200 | gSavedPerAccountSettings.setBOOL("LogInstantMessages",childGetValue("log_instant_messages").asBoolean()); |
180 | gSavedPerAccountSettings.setBOOL("LogChat",childGetValue("log_chat").asBoolean()); | 201 | gSavedPerAccountSettings.setBOOL("LogChat",childGetValue("log_chat").asBoolean()); |
181 | gSavedPerAccountSettings.setBOOL("LogShowHistory",childGetValue("log_show_history").asBoolean()); | 202 | gSavedPerAccountSettings.setBOOL("LogShowHistory",childGetValue("log_show_history").asBoolean()); |
203 | gSavedPerAccountSettings.setBOOL("IMLogTimestamp",childGetValue("log_instant_messages_timestamp").asBoolean()); | ||
204 | gSavedPerAccountSettings.setBOOL("LogChatTimestamp",childGetValue("log_chat_timestamp").asBoolean()); | ||
205 | gSavedPerAccountSettings.setBOOL("LogChatIM",childGetValue("log_chat_IM").asBoolean()); | ||
206 | gSavedPerAccountSettings.setBOOL("LogTimestampDate",childGetValue("log_date_timestamp").asBoolean()); | ||
182 | 207 | ||
183 | gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath")); | 208 | gDirUtilp->setChatLogsDir(gSavedPerAccountSettings.getString("InstantMessageLogPath")); |
184 | 209 | ||
@@ -246,6 +271,10 @@ void LLPrefsIMImpl::setPersonalInfo( | |||
246 | childEnable("log_instant_messages"); | 271 | childEnable("log_instant_messages"); |
247 | childEnable("log_chat"); | 272 | childEnable("log_chat"); |
248 | childEnable("busy_response"); | 273 | childEnable("busy_response"); |
274 | childEnable("log_instant_messages_timestamp"); | ||
275 | childEnable("log_chat_timestamp"); | ||
276 | childEnable("log_chat_IM"); | ||
277 | childEnable("log_date_timestamp"); | ||
249 | 278 | ||
250 | //RN: get wide string so replace char can work (requires fixed-width encoding) | 279 | //RN: get wide string so replace char can work (requires fixed-width encoding) |
251 | LLWString busy_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("BusyModeResponse") ); | 280 | LLWString busy_response = utf8str_to_wstring( gSavedPerAccountSettings.getString("BusyModeResponse") ); |
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp index 5086432..e2be9fd 100644 --- a/linden/indra/newview/llselectmgr.cpp +++ b/linden/indra/newview/llselectmgr.cpp | |||
@@ -395,9 +395,9 @@ LLObjectSelectionHandle LLSelectMgr::selectObjectAndFamily(LLViewerObject* obj, | |||
395 | root->resetRot(); | 395 | root->resetRot(); |
396 | 396 | ||
397 | // leave component mode | 397 | // leave component mode |
398 | if (!gSavedSettings.getBOOL("SelectLinkedSet")) | 398 | if (gSavedSettings.getBOOL("EditLinkedParts")) |
399 | { | 399 | { |
400 | gSavedSettings.setBOOL("SelectLinkedSet", TRUE); | 400 | gSavedSettings.setBOOL("EditLinkedParts", FALSE); |
401 | promoteSelectionToRoot(); | 401 | promoteSelectionToRoot(); |
402 | } | 402 | } |
403 | 403 | ||
@@ -463,9 +463,9 @@ LLObjectSelectionHandle LLSelectMgr::selectObjectAndFamily(const LLDynamicArray< | |||
463 | } | 463 | } |
464 | 464 | ||
465 | // leave component mode | 465 | // leave component mode |
466 | if (!gSavedSettings.getBOOL("SelectLinkedSet")) | 466 | if (gSavedSettings.getBOOL("EditLinkedParts")) |
467 | { | 467 | { |
468 | gSavedSettings.setBOOL("SelectLinkedSet", TRUE); | 468 | gSavedSettings.setBOOL("EditLinkedParts", FALSE); |
469 | promoteSelectionToRoot(); | 469 | promoteSelectionToRoot(); |
470 | } | 470 | } |
471 | 471 | ||
@@ -948,7 +948,7 @@ LLObjectSelectionHandle LLSelectMgr::selectHighlightedObjects() | |||
948 | 948 | ||
949 | void LLSelectMgr::deselectHighlightedObjects() | 949 | void LLSelectMgr::deselectHighlightedObjects() |
950 | { | 950 | { |
951 | BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); | 951 | BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts"); |
952 | for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin(); | 952 | for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin(); |
953 | iter != mRectSelectedObjects.end(); iter++) | 953 | iter != mRectSelectedObjects.end(); iter++) |
954 | { | 954 | { |
@@ -3249,7 +3249,7 @@ void LLSelectMgr::sendMultipleUpdate(U32 type) | |||
3249 | { | 3249 | { |
3250 | if (type == UPD_NONE) return; | 3250 | if (type == UPD_NONE) return; |
3251 | // send individual updates when selecting textures or individual objects | 3251 | // send individual updates when selecting textures or individual objects |
3252 | ESendType send_type = (gSavedSettings.getBOOL("SelectLinkedSet") && !getTEMode()) ? SEND_ONLY_ROOTS : SEND_ROOTS_FIRST; | 3252 | ESendType send_type = (!gSavedSettings.getBOOL("EditLinkedParts") && !getTEMode()) ? SEND_ONLY_ROOTS : SEND_ROOTS_FIRST; |
3253 | if (send_type == SEND_ONLY_ROOTS) | 3253 | if (send_type == SEND_ONLY_ROOTS) |
3254 | { | 3254 | { |
3255 | // tell simulator to apply to whole linked sets | 3255 | // tell simulator to apply to whole linked sets |
@@ -4506,7 +4506,7 @@ void LLSelectMgr::processObjectPropertiesFamily(LLMessageSystem* msg, void** use | |||
4506 | LLString fullname(first_name); | 4506 | LLString fullname(first_name); |
4507 | fullname.append(" "); | 4507 | fullname.append(" "); |
4508 | fullname.append(last_name); | 4508 | fullname.append(last_name); |
4509 | reporterp->setPickedObjectProperties(name, fullname.c_str()); | 4509 | reporterp->setPickedObjectProperties(name, fullname.c_str(), owner_id); |
4510 | } | 4510 | } |
4511 | } | 4511 | } |
4512 | 4512 | ||
@@ -4669,7 +4669,7 @@ void LLSelectMgr::updateSilhouettes() | |||
4669 | // persists from frame to frame to avoid regenerating object silhouettes | 4669 | // persists from frame to frame to avoid regenerating object silhouettes |
4670 | // mHighlightedObjects includes all siblings of rect selected objects | 4670 | // mHighlightedObjects includes all siblings of rect selected objects |
4671 | 4671 | ||
4672 | BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); | 4672 | BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts"); |
4673 | 4673 | ||
4674 | // generate list of roots from current object selection | 4674 | // generate list of roots from current object selection |
4675 | for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin(); | 4675 | for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin(); |
@@ -5619,7 +5619,7 @@ BOOL LLSelectMgr::canUndo() | |||
5619 | //----------------------------------------------------------------------------- | 5619 | //----------------------------------------------------------------------------- |
5620 | void LLSelectMgr::undo() | 5620 | void LLSelectMgr::undo() |
5621 | { | 5621 | { |
5622 | BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); | 5622 | BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts"); |
5623 | LLUUID group_id(gAgent.getGroupID()); | 5623 | LLUUID group_id(gAgent.getGroupID()); |
5624 | sendListToRegions("Undo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); | 5624 | sendListToRegions("Undo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); |
5625 | } | 5625 | } |
@@ -5637,7 +5637,7 @@ BOOL LLSelectMgr::canRedo() | |||
5637 | //----------------------------------------------------------------------------- | 5637 | //----------------------------------------------------------------------------- |
5638 | void LLSelectMgr::redo() | 5638 | void LLSelectMgr::redo() |
5639 | { | 5639 | { |
5640 | BOOL select_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); | 5640 | BOOL select_linked_set = !gSavedSettings.getBOOL("EditLinkedParts"); |
5641 | LLUUID group_id(gAgent.getGroupID()); | 5641 | LLUUID group_id(gAgent.getGroupID()); |
5642 | sendListToRegions("Redo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); | 5642 | sendListToRegions("Redo", packAgentAndSessionAndGroupID, packObjectID, &group_id, select_linked_set ? SEND_ONLY_ROOTS : SEND_CHILDREN_FIRST); |
5643 | } | 5643 | } |
@@ -5814,7 +5814,7 @@ void LLObjectSelection::deleteAllNodes() | |||
5814 | 5814 | ||
5815 | LLSelectNode* LLObjectSelection::findNode(LLViewerObject* objectp) | 5815 | LLSelectNode* LLObjectSelection::findNode(LLViewerObject* objectp) |
5816 | { | 5816 | { |
5817 | std::map<LLViewerObject*, LLSelectNode*>::iterator found_it = mSelectNodeMap.find(objectp); | 5817 | std::map<LLPointer<LLViewerObject>, LLSelectNode*>::iterator found_it = mSelectNodeMap.find(objectp); |
5818 | if (found_it != mSelectNodeMap.end()) | 5818 | if (found_it != mSelectNodeMap.end()) |
5819 | { | 5819 | { |
5820 | return found_it->second; | 5820 | return found_it->second; |
diff --git a/linden/indra/newview/llselectmgr.h b/linden/indra/newview/llselectmgr.h index c344181..5f76ce2 100644 --- a/linden/indra/newview/llselectmgr.h +++ b/linden/indra/newview/llselectmgr.h | |||
@@ -188,7 +188,7 @@ private: | |||
188 | LLPointer<LLViewerObject> mPrimaryObject; | 188 | LLPointer<LLViewerObject> mPrimaryObject; |
189 | std::list<LLSelectNode*>::iterator mCurrentNode; | 189 | std::list<LLSelectNode*>::iterator mCurrentNode; |
190 | S32 mCurrentTE; | 190 | S32 mCurrentTE; |
191 | std::map<LLViewerObject*, LLSelectNode*> mSelectNodeMap; | 191 | std::map<LLPointer<LLViewerObject>, LLSelectNode*> mSelectNodeMap; |
192 | ESelectType mSelectType; | 192 | ESelectType mSelectType; |
193 | }; | 193 | }; |
194 | 194 | ||
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp index dbda813..283b38b 100644 --- a/linden/indra/newview/llspatialpartition.cpp +++ b/linden/indra/newview/llspatialpartition.cpp | |||
@@ -1524,7 +1524,7 @@ public: | |||
1524 | for (LLSpatialGroup::element_iter i = group->getData().begin(); i != group->getData().end(); ++i) | 1524 | for (LLSpatialGroup::element_iter i = group->getData().begin(); i != group->getData().end(); ++i) |
1525 | { | 1525 | { |
1526 | LLDrawable* drawable = *i; | 1526 | LLDrawable* drawable = *i; |
1527 | if (drawable->getVObj() && !group->mSpatialPartition->mRenderByGroup) | 1527 | if (drawable->getVObj().notNull() && !group->mSpatialPartition->mRenderByGroup) |
1528 | { | 1528 | { |
1529 | gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL, TRUE); | 1529 | gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL, TRUE); |
1530 | } | 1530 | } |
diff --git a/linden/indra/newview/llsrv.cpp b/linden/indra/newview/llsrv.cpp new file mode 100644 index 0000000..4dec48d --- /dev/null +++ b/linden/indra/newview/llsrv.cpp | |||
@@ -0,0 +1,213 @@ | |||
1 | /** | ||
2 | * @file llsrv.cpp | ||
3 | * @brief Wrapper for DNS SRV record lookups | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #include "llviewerprecompiledheaders.h" | ||
30 | |||
31 | #include "llsrv.h" | ||
32 | |||
33 | using namespace std; | ||
34 | |||
35 | #if LL_WINDOWS | ||
36 | |||
37 | #undef UNICODE | ||
38 | #include <winsock2.h> | ||
39 | #include <windns.h> | ||
40 | |||
41 | vector<LLSRVRecord> LLSRV::query(const string& name) | ||
42 | { | ||
43 | vector<LLSRVRecord> recs; | ||
44 | DNS_RECORD *rec; | ||
45 | DNS_STATUS status; | ||
46 | |||
47 | status = DnsQuery(name.c_str(), DNS_TYPE_SRV, DNS_QUERY_STANDARD, NULL, &rec, NULL); | ||
48 | if (!status) | ||
49 | { | ||
50 | for (DNS_RECORD *cur = rec; cur != NULL; cur = cur->pNext) | ||
51 | { | ||
52 | if (cur->wType != DNS_TYPE_SRV) | ||
53 | { | ||
54 | continue; | ||
55 | } | ||
56 | recs.push_back(LLSRVRecord(cur->Data.Srv.wPriority, | ||
57 | cur->Data.Srv.wWeight, | ||
58 | cur->Data.Srv.pNameTarget, | ||
59 | cur->Data.Srv.wPort)); | ||
60 | } | ||
61 | DnsRecordListFree(rec, DnsFreeRecordListDeep); | ||
62 | } | ||
63 | |||
64 | return recs; | ||
65 | } | ||
66 | |||
67 | #else // !LL_WINDOWS | ||
68 | |||
69 | #include <netinet/in.h> | ||
70 | #include <arpa/nameser.h> | ||
71 | #include <arpa/nameser_compat.h> | ||
72 | #include <resolv.h> | ||
73 | |||
74 | #include <netdb.h> | ||
75 | |||
76 | vector<LLSRVRecord> LLSRV::query(const string& queryName) | ||
77 | { | ||
78 | unsigned char response[16384]; | ||
79 | vector<LLSRVRecord> recs; | ||
80 | char name[1024]; | ||
81 | int len; | ||
82 | |||
83 | len = res_query(queryName.c_str(), ns_c_in, ns_t_srv, response, | ||
84 | sizeof(response)); | ||
85 | |||
86 | if (len == -1) | ||
87 | { | ||
88 | llinfos << "Query failed for " << queryName << llendl; | ||
89 | return recs; | ||
90 | } | ||
91 | else if (len > (int) sizeof(response)) | ||
92 | { | ||
93 | llinfos << "Response too big for " << queryName | ||
94 | << " (capacity " << sizeof(response) | ||
95 | << ", response " << len << ")" << llendl; | ||
96 | return recs; | ||
97 | } | ||
98 | |||
99 | // We "should" be using libresolv's ns_initparse and ns_parserr to | ||
100 | // parse the result of our query. However, libresolv isn't | ||
101 | // packaged correctly on Linux (as of BIND 9), so neither of these | ||
102 | // functions is available without statically linking against | ||
103 | // libresolv. Ugh! So we parse the response ourselves. | ||
104 | |||
105 | const unsigned char *pos = response + sizeof(HEADER); | ||
106 | const unsigned char *end = response + len; | ||
107 | const HEADER *hdr = (const HEADER *) response; | ||
108 | |||
109 | // Skip over the query embedded in the response. | ||
110 | |||
111 | for (int q = ntohs(hdr->qdcount); q > 0; --q) | ||
112 | { | ||
113 | len = dn_expand(response, end, pos, name, sizeof(name)); | ||
114 | |||
115 | if (len == -1) | ||
116 | { | ||
117 | llinfos << "Could not expand queried name in RR response" << llendl; | ||
118 | return recs; | ||
119 | } | ||
120 | |||
121 | pos += len + NS_QFIXEDSZ; | ||
122 | } | ||
123 | |||
124 | for (int a = ntohs(hdr->ancount); a > 0; --a) | ||
125 | { | ||
126 | static const ns_rr *rr; | ||
127 | |||
128 | len = dn_expand(response, end, pos, name, sizeof(name) - 1); | ||
129 | if (len == -1) | ||
130 | { | ||
131 | llinfos << "Could not expand response name in RR response" << llendl; | ||
132 | return recs; | ||
133 | } | ||
134 | |||
135 | // Skip over the resource name and headers we don't care about. | ||
136 | |||
137 | pos += len + sizeof(rr->type) + sizeof(rr->rr_class) + | ||
138 | sizeof(rr->ttl) + sizeof(rr->rdlength); | ||
139 | |||
140 | U16 prio; | ||
141 | U16 weight; | ||
142 | U16 port; | ||
143 | |||
144 | NS_GET16(prio, pos); | ||
145 | NS_GET16(weight, pos); | ||
146 | NS_GET16(port, pos); | ||
147 | |||
148 | len = dn_expand(response, end, pos, name, sizeof(name) - 1); | ||
149 | |||
150 | if (len == -1) | ||
151 | { | ||
152 | llinfos << "Could not expand name in RR response" << llendl; | ||
153 | return recs; | ||
154 | } | ||
155 | |||
156 | recs.push_back(LLSRVRecord(prio, weight, name, port)); | ||
157 | } | ||
158 | |||
159 | // There are likely to be more records in the response, but we | ||
160 | // don't care about those, at least for now. | ||
161 | |||
162 | return recs; | ||
163 | } | ||
164 | |||
165 | #endif // LL_WINDOWS | ||
166 | |||
167 | vector<string> LLSRV::rewriteURI(const string& uriStr) | ||
168 | { | ||
169 | LLURI uri(uriStr); | ||
170 | const string& scheme = uri.scheme(); | ||
171 | llinfos << "Rewriting " << uriStr << llendl; | ||
172 | string serviceName("_" + scheme + "._tcp." + uri.hostName()); | ||
173 | llinfos << "Querying for " << serviceName << llendl; | ||
174 | vector<LLSRVRecord> srvs(LLSRV::query(serviceName)); | ||
175 | vector<string> rewritten; | ||
176 | |||
177 | if (srvs.empty()) | ||
178 | { | ||
179 | llinfos << "No query results; using " << uriStr << llendl; | ||
180 | rewritten.push_back(uriStr); | ||
181 | } | ||
182 | else | ||
183 | { | ||
184 | vector<LLSRVRecord>::const_iterator iter; | ||
185 | size_t maxSrvs = 3; | ||
186 | size_t i; | ||
187 | |||
188 | llinfos << "Got " << srvs.size() << " results" << llendl; | ||
189 | if (srvs.size() > maxSrvs) | ||
190 | { | ||
191 | llinfos << "Clamping to " << maxSrvs << llendl; | ||
192 | } | ||
193 | |||
194 | for (iter = srvs.begin(), i = 0; | ||
195 | iter != srvs.end() && i < maxSrvs; ++iter, ++i) | ||
196 | { | ||
197 | LLURI newUri(scheme, | ||
198 | uri.userName(), | ||
199 | uri.password(), | ||
200 | iter->target(), | ||
201 | uri.defaultPort() ? iter->port() : uri.hostPort(), | ||
202 | uri.escapedPath(), | ||
203 | uri.escapedQuery()); | ||
204 | string newUriStr(newUri.asString()); | ||
205 | |||
206 | llinfos << "Rewrite[" << i << "] " << newUriStr << llendl; | ||
207 | |||
208 | rewritten.push_back(newUriStr); | ||
209 | } | ||
210 | } | ||
211 | |||
212 | return rewritten; | ||
213 | } | ||
diff --git a/linden/indra/newview/llsrv.h b/linden/indra/newview/llsrv.h new file mode 100644 index 0000000..fca646d --- /dev/null +++ b/linden/indra/newview/llsrv.h | |||
@@ -0,0 +1,66 @@ | |||
1 | /** | ||
2 | * @file llsrv.h | ||
3 | * @brief Wrapper for DNS SRV record lookups | ||
4 | * | ||
5 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLSRV_H | ||
30 | #define LL_LLSRV_H | ||
31 | |||
32 | class LLSRV; | ||
33 | |||
34 | class LLSRVRecord | ||
35 | { | ||
36 | friend class LLSRV; | ||
37 | |||
38 | protected: | ||
39 | U16 mPriority; | ||
40 | U16 mWeight; | ||
41 | std::string mTarget; | ||
42 | U16 mPort; | ||
43 | |||
44 | LLSRVRecord(U16 priority, U16 weight, const std::string& target, | ||
45 | U16 port) : | ||
46 | mPriority(priority), | ||
47 | mWeight(weight), | ||
48 | mTarget(target), | ||
49 | mPort(port) { | ||
50 | } | ||
51 | |||
52 | public: | ||
53 | U16 priority() const { return mPriority; } | ||
54 | U16 weight() const { return mWeight; } | ||
55 | const std::string& target() const { return mTarget; } | ||
56 | U16 port() const { return mPort; } | ||
57 | }; | ||
58 | |||
59 | class LLSRV | ||
60 | { | ||
61 | public: | ||
62 | static std::vector<LLSRVRecord> query(const std::string& name); | ||
63 | static std::vector<std::string> rewriteURI(const std::string& uri); | ||
64 | }; | ||
65 | |||
66 | #endif // LL_LLSRV_H | ||
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp index 4af02cb..0130edf 100644 --- a/linden/indra/newview/llstartup.cpp +++ b/linden/indra/newview/llstartup.cpp | |||
@@ -117,6 +117,7 @@ | |||
117 | #include "llpreviewscript.h" | 117 | #include "llpreviewscript.h" |
118 | #include "llselectmgr.h" | 118 | #include "llselectmgr.h" |
119 | #include "llsky.h" | 119 | #include "llsky.h" |
120 | #include "llsrv.h" | ||
120 | #include "llstatview.h" | 121 | #include "llstatview.h" |
121 | #include "llsurface.h" | 122 | #include "llsurface.h" |
122 | #include "lltexturecache.h" | 123 | #include "lltexturecache.h" |
@@ -285,7 +286,8 @@ BOOL idle_startup() | |||
285 | // auth/transform loop will do. | 286 | // auth/transform loop will do. |
286 | static F32 progress = 0.10f; | 287 | static F32 progress = 0.10f; |
287 | 288 | ||
288 | static std::string auth_uri; | 289 | static std::vector<std::string> auth_uris; |
290 | static int auth_uri_num = -1; | ||
289 | static std::string auth_method; | 291 | static std::string auth_method; |
290 | static std::string auth_desc; | 292 | static std::string auth_desc; |
291 | static std::string auth_message; | 293 | static std::string auth_message; |
@@ -1109,7 +1111,11 @@ BOOL idle_startup() | |||
1109 | gSavedSettings.setBOOL("UseDebugMenus", TRUE); | 1111 | gSavedSettings.setBOOL("UseDebugMenus", TRUE); |
1110 | requested_options.push_back("god-connect"); | 1112 | requested_options.push_back("god-connect"); |
1111 | } | 1113 | } |
1112 | auth_uri = getLoginURI(); | 1114 | if (auth_uris.empty()) |
1115 | { | ||
1116 | auth_uris = getLoginURIs(); | ||
1117 | } | ||
1118 | auth_uri_num = 0; | ||
1113 | auth_method = "login_to_simulator"; | 1119 | auth_method = "login_to_simulator"; |
1114 | auth_desc = "Logging in. "; | 1120 | auth_desc = "Logging in. "; |
1115 | auth_desc += gSecondLife; | 1121 | auth_desc += gSecondLife; |
@@ -1152,7 +1158,7 @@ BOOL idle_startup() | |||
1152 | hashed_mac.hex_digest(hashed_mac_string); | 1158 | hashed_mac.hex_digest(hashed_mac_string); |
1153 | 1159 | ||
1154 | gUserAuthp->authenticate( | 1160 | gUserAuthp->authenticate( |
1155 | auth_uri.c_str(), | 1161 | auth_uris[auth_uri_num].c_str(), |
1156 | auth_method.c_str(), | 1162 | auth_method.c_str(), |
1157 | firstname.c_str(), | 1163 | firstname.c_str(), |
1158 | lastname.c_str(), | 1164 | lastname.c_str(), |
@@ -1248,7 +1254,8 @@ BOOL idle_startup() | |||
1248 | else if(login_response && (0 == strcmp(login_response, "indeterminate"))) | 1254 | else if(login_response && (0 == strcmp(login_response, "indeterminate"))) |
1249 | { | 1255 | { |
1250 | llinfos << "Indeterminate login..." << llendl; | 1256 | llinfos << "Indeterminate login..." << llendl; |
1251 | auth_uri = gUserAuthp->getResponse("next_url"); | 1257 | auth_uris = LLSRV::rewriteURI(gUserAuthp->getResponse("next_url")); |
1258 | auth_uri_num = 0; | ||
1252 | auth_method = gUserAuthp->getResponse("next_method"); | 1259 | auth_method = gUserAuthp->getResponse("next_method"); |
1253 | auth_message = gUserAuthp->getResponse("message"); | 1260 | auth_message = gUserAuthp->getResponse("message"); |
1254 | if(auth_method.substr(0, 5) == "login") | 1261 | if(auth_method.substr(0, 5) == "login") |
@@ -1351,13 +1358,33 @@ BOOL idle_startup() | |||
1351 | case LLUserAuth::E_SSL_PEER_CERTIFICATE: | 1358 | case LLUserAuth::E_SSL_PEER_CERTIFICATE: |
1352 | case LLUserAuth::E_UNHANDLED_ERROR: | 1359 | case LLUserAuth::E_UNHANDLED_ERROR: |
1353 | default: | 1360 | default: |
1354 | emsg << "Unable to connect to " << gSecondLife << ".\n"; | 1361 | if (auth_uri_num >= (int) auth_uris.size()) |
1355 | emsg << gUserAuthp->errorMessage(); | 1362 | { |
1363 | emsg << "Unable to connect to " << gSecondLife << ".\n"; | ||
1364 | emsg << gUserAuthp->errorMessage(); | ||
1365 | } else { | ||
1366 | std::ostringstream s; | ||
1367 | s << "Logging in (attempt " << (auth_uri_num + 1) << "). "; | ||
1368 | auth_desc = s.str(); | ||
1369 | gStartupState = STATE_LOGIN_AUTHENTICATE; | ||
1370 | auth_uri_num++; | ||
1371 | return do_normal_idle; | ||
1372 | } | ||
1356 | break; | 1373 | break; |
1357 | case LLUserAuth::E_SSL_CACERT: | 1374 | case LLUserAuth::E_SSL_CACERT: |
1358 | case LLUserAuth::E_SSL_CONNECT_ERROR: | 1375 | case LLUserAuth::E_SSL_CONNECT_ERROR: |
1359 | emsg << "Unable to establish a secure connection to the login server.\n"; | 1376 | if (auth_uri_num >= (int) auth_uris.size()) |
1360 | emsg << gUserAuthp->errorMessage(); | 1377 | { |
1378 | emsg << "Unable to establish a secure connection to the login server.\n"; | ||
1379 | emsg << gUserAuthp->errorMessage(); | ||
1380 | } else { | ||
1381 | std::ostringstream s; | ||
1382 | s << "Logging in (attempt " << (auth_uri_num + 1) << "). "; | ||
1383 | auth_desc = s.str(); | ||
1384 | gStartupState = STATE_LOGIN_AUTHENTICATE; | ||
1385 | auth_uri_num++; | ||
1386 | return do_normal_idle; | ||
1387 | } | ||
1361 | break; | 1388 | break; |
1362 | } | 1389 | } |
1363 | 1390 | ||
diff --git a/linden/indra/newview/lltexlayer.cpp b/linden/indra/newview/lltexlayer.cpp index 2005e39..26ee098 100644 --- a/linden/indra/newview/lltexlayer.cpp +++ b/linden/indra/newview/lltexlayer.cpp | |||
@@ -2314,7 +2314,7 @@ LLColor4 LLTexParamColor::getNetColor() | |||
2314 | { | 2314 | { |
2315 | llassert( getInfo()->mNumColors >= 1 ); | 2315 | llassert( getInfo()->mNumColors >= 1 ); |
2316 | 2316 | ||
2317 | F32 effective_weight = ( mAvatar && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight(); | 2317 | F32 effective_weight = ( mAvatar.notNull() && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight(); |
2318 | 2318 | ||
2319 | S32 index_last = getInfo()->mNumColors - 1; | 2319 | S32 index_last = getInfo()->mNumColors - 1; |
2320 | F32 scaled_weight = effective_weight * index_last; | 2320 | F32 scaled_weight = effective_weight * index_last; |
diff --git a/linden/indra/newview/lltexlayer.h b/linden/indra/newview/lltexlayer.h index c5a34a6..920ae4a 100644 --- a/linden/indra/newview/lltexlayer.h +++ b/linden/indra/newview/lltexlayer.h | |||
@@ -286,7 +286,7 @@ protected: | |||
286 | typedef std::vector<LLTexLayer *> layer_list_t; | 286 | typedef std::vector<LLTexLayer *> layer_list_t; |
287 | layer_list_t mLayerList; | 287 | layer_list_t mLayerList; |
288 | LLTexLayerSetBuffer* mComposite; | 288 | LLTexLayerSetBuffer* mComposite; |
289 | LLVOAvatar* mAvatar; | 289 | LLPointer<LLVOAvatar> mAvatar; |
290 | BOOL mUpdatesEnabled; | 290 | BOOL mUpdatesEnabled; |
291 | BOOL mHasBump; | 291 | BOOL mHasBump; |
292 | 292 | ||
@@ -443,7 +443,7 @@ public: | |||
443 | protected: | 443 | protected: |
444 | typedef std::vector<LLTexParamColor *> param_list_t; | 444 | typedef std::vector<LLTexParamColor *> param_list_t; |
445 | param_list_t mParamList; | 445 | param_list_t mParamList; |
446 | LLVOAvatar* mAvatar; | 446 | LLPointer<LLVOAvatar> mAvatar; |
447 | 447 | ||
448 | LLTexGlobalColorInfo *mInfo; | 448 | LLTexGlobalColorInfo *mInfo; |
449 | }; | 449 | }; |
@@ -489,7 +489,7 @@ protected: | |||
489 | LLVector3 mAvgDistortionVec; | 489 | LLVector3 mAvgDistortionVec; |
490 | LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent | 490 | LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent |
491 | LLTexLayer* mTexLayer; | 491 | LLTexLayer* mTexLayer; |
492 | LLVOAvatar* mAvatar; // redundant, but simplifies the code | 492 | LLPointer<LLVOAvatar> mAvatar; // redundant, but simplifies the code |
493 | }; | 493 | }; |
494 | 494 | ||
495 | //----------------------------------------------------------------------------- | 495 | //----------------------------------------------------------------------------- |
@@ -569,7 +569,7 @@ public: | |||
569 | ~LLBakedUploadData() {} | 569 | ~LLBakedUploadData() {} |
570 | 570 | ||
571 | LLUUID mID; | 571 | LLUUID mID; |
572 | LLVOAvatar* mAvatar; | 572 | LLPointer<LLVOAvatar> mAvatar; |
573 | LLTexLayerSetBuffer* mLayerSetBuffer; | 573 | LLTexLayerSetBuffer* mLayerSetBuffer; |
574 | LLUUID mWearableAssets[WT_COUNT]; | 574 | LLUUID mWearableAssets[WT_COUNT]; |
575 | }; | 575 | }; |
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp index 2008fda..81b4343 100644 --- a/linden/indra/newview/lltexturecache.cpp +++ b/linden/indra/newview/lltexturecache.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file texturecache.cpp | 2 | * @file lltexturecache.cpp |
3 | * @brief Object which handles local texture caching | 3 | * @brief Object which handles local texture caching |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007, Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
@@ -1284,6 +1284,7 @@ LLTextureCache::handle_t LLTextureCache::writeToCache(const LLUUID& id, U32 prio | |||
1284 | { | 1284 | { |
1285 | if (mReadOnly) | 1285 | if (mReadOnly) |
1286 | { | 1286 | { |
1287 | delete responder; | ||
1287 | return LLWorkerThread::nullHandle(); | 1288 | return LLWorkerThread::nullHandle(); |
1288 | } | 1289 | } |
1289 | if (mDoPurge) | 1290 | if (mDoPurge) |
@@ -1305,6 +1306,7 @@ LLTextureCache::handle_t LLTextureCache::writeToCache(const LLUUID& id, U32 prio | |||
1305 | mWriters[handle] = worker; | 1306 | mWriters[handle] = worker; |
1306 | return handle; | 1307 | return handle; |
1307 | } | 1308 | } |
1309 | delete responder; | ||
1308 | return LLWorkerThread::nullHandle(); | 1310 | return LLWorkerThread::nullHandle(); |
1309 | } | 1311 | } |
1310 | 1312 | ||
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp index b5c1ace..6602096 100644 --- a/linden/indra/newview/lltexturectrl.cpp +++ b/linden/indra/newview/lltexturectrl.cpp | |||
@@ -119,7 +119,8 @@ public: | |||
119 | 119 | ||
120 | // LLFloater overrides | 120 | // LLFloater overrides |
121 | virtual void onClose(bool app_quitting); | 121 | virtual void onClose(bool app_quitting); |
122 | 122 | virtual BOOL postBuild(); | |
123 | |||
123 | // New functions | 124 | // New functions |
124 | void setImageID( const LLUUID& image_asset_id); | 125 | void setImageID( const LLUUID& image_asset_id); |
125 | void updateImageStats(); | 126 | void updateImageStats(); |
@@ -163,6 +164,8 @@ protected: | |||
163 | LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory. | 164 | LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory. |
164 | LLUUID mOriginalImageAssetID; | 165 | LLUUID mOriginalImageAssetID; |
165 | 166 | ||
167 | std::string mLabel; | ||
168 | |||
166 | LLTextBox* mTentativeLabel; | 169 | LLTextBox* mTentativeLabel; |
167 | LLTextBox* mResolutionLabel; | 170 | LLTextBox* mResolutionLabel; |
168 | 171 | ||
@@ -197,6 +200,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( | |||
197 | mImageAssetID( owner->getImageAssetID() ), | 200 | mImageAssetID( owner->getImageAssetID() ), |
198 | mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ), | 201 | mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ), |
199 | mOriginalImageAssetID(owner->getImageAssetID()), | 202 | mOriginalImageAssetID(owner->getImageAssetID()), |
203 | mLabel(label), | ||
200 | mTentativeLabel(NULL), | 204 | mTentativeLabel(NULL), |
201 | mResolutionLabel(NULL), | 205 | mResolutionLabel(NULL), |
202 | mIsDirty( FALSE ), | 206 | mIsDirty( FALSE ), |
@@ -456,6 +460,21 @@ void LLFloaterTexturePicker::onClose(bool app_quitting) | |||
456 | } | 460 | } |
457 | 461 | ||
458 | // virtual | 462 | // virtual |
463 | BOOL LLFloaterTexturePicker::postBuild() | ||
464 | { | ||
465 | LLFloater::postBuild(); | ||
466 | |||
467 | if (!mLabel.empty()) | ||
468 | { | ||
469 | std::string pick = childGetText("pick title"); | ||
470 | |||
471 | setTitle(pick + mLabel); | ||
472 | } | ||
473 | |||
474 | return TRUE; | ||
475 | } | ||
476 | |||
477 | // virtual | ||
459 | void LLFloaterTexturePicker::draw() | 478 | void LLFloaterTexturePicker::draw() |
460 | { | 479 | { |
461 | if (mOwner) | 480 | if (mOwner) |
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp index 5cdc854..7bdd98b 100644 --- a/linden/indra/newview/lltexturefetch.cpp +++ b/linden/indra/newview/lltexturefetch.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file lltexturecache.cpp | 2 | * @file lltexturefetch.cpp |
3 | * @brief Object which fetches textures from the cache and/or network | 3 | * @brief Object which fetches textures from the cache and/or network |
4 | * | 4 | * |
5 | * Copyright (c) 2000-2007, Linden Research, Inc. | 5 | * Copyright (c) 2000-2007, Linden Research, Inc. |
diff --git a/linden/indra/newview/lltoolcomp.cpp b/linden/indra/newview/lltoolcomp.cpp index fd1152d..555f25e 100644 --- a/linden/indra/newview/lltoolcomp.cpp +++ b/linden/indra/newview/lltoolcomp.cpp | |||
@@ -121,7 +121,7 @@ BOOL LLToolComposite::isSelecting() | |||
121 | 121 | ||
122 | void LLToolComposite::handleSelect() | 122 | void LLToolComposite::handleSelect() |
123 | { | 123 | { |
124 | if (gSavedSettings.getBOOL("SelectLinkedSet")) | 124 | if (!gSavedSettings.getBOOL("EditLinkedParts")) |
125 | { | 125 | { |
126 | gSelectMgr->promoteSelectionToRoot(); | 126 | gSelectMgr->promoteSelectionToRoot(); |
127 | } | 127 | } |
@@ -162,7 +162,7 @@ void LLToolCompInspect::pickCallback(S32 x, S32 y, MASK mask) | |||
162 | if (!gToolInspect->mMouseDown) | 162 | if (!gToolInspect->mMouseDown) |
163 | { | 163 | { |
164 | // fast click on object, but mouse is already up...just do select | 164 | // fast click on object, but mouse is already up...just do select |
165 | gToolInspect->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); | 165 | gToolInspect->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE); |
166 | return; | 166 | return; |
167 | } | 167 | } |
168 | 168 | ||
@@ -236,7 +236,7 @@ void LLToolCompTranslate::pickCallback(S32 x, S32 y, MASK mask) | |||
236 | if (!gToolTranslate->mMouseDown) | 236 | if (!gToolTranslate->mMouseDown) |
237 | { | 237 | { |
238 | // fast click on object, but mouse is already up...just do select | 238 | // fast click on object, but mouse is already up...just do select |
239 | gToolTranslate->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); | 239 | gToolTranslate->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE); |
240 | return; | 240 | return; |
241 | } | 241 | } |
242 | 242 | ||
@@ -250,7 +250,7 @@ void LLToolCompTranslate::pickCallback(S32 x, S32 y, MASK mask) | |||
250 | BOOL can_move = gToolTranslate->mManip->getSelection()->getObjectCount() != 0; | 250 | BOOL can_move = gToolTranslate->mManip->getSelection()->getObjectCount() != 0; |
251 | for (LLViewerObject* objectp = gToolTranslate->mManip->getSelection()->getFirstObject(); objectp; objectp = gToolTranslate->mManip->getSelection()->getNextObject()) | 251 | for (LLViewerObject* objectp = gToolTranslate->mManip->getSelection()->getFirstObject(); objectp; objectp = gToolTranslate->mManip->getSelection()->getNextObject()) |
252 | { | 252 | { |
253 | can_move = can_move && objectp->permMove() && (objectp->permModify() || gSavedSettings.getBOOL("SelectLinkedSet")); | 253 | can_move = can_move && objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts")); |
254 | } | 254 | } |
255 | 255 | ||
256 | if( LLManip::LL_NO_PART != gToolTranslate->mManip->getHighlightedPart() && can_move) | 256 | if( LLManip::LL_NO_PART != gToolTranslate->mManip->getHighlightedPart() && can_move) |
@@ -364,7 +364,7 @@ void LLToolCompScale::pickCallback(S32 x, S32 y, MASK mask) | |||
364 | if (!gToolStretch->mMouseDown) | 364 | if (!gToolStretch->mMouseDown) |
365 | { | 365 | { |
366 | // fast click on object, but mouse is already up...just do select | 366 | // fast click on object, but mouse is already up...just do select |
367 | gToolStretch->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); | 367 | gToolStretch->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE); |
368 | 368 | ||
369 | return; | 369 | return; |
370 | } | 370 | } |
@@ -565,7 +565,7 @@ void LLToolCompRotate::pickCallback(S32 x, S32 y, MASK mask) | |||
565 | if (!gToolRotate->mMouseDown) | 565 | if (!gToolRotate->mMouseDown) |
566 | { | 566 | { |
567 | // fast click on object, but mouse is already up...just do select | 567 | // fast click on object, but mouse is already up...just do select |
568 | gToolRotate->mSelectRect->handleObjectSelection(hit_obj, mask, !gSavedSettings.getBOOL("SelectLinkedSet"), FALSE); | 568 | gToolRotate->mSelectRect->handleObjectSelection(hit_obj, mask, gSavedSettings.getBOOL("EditLinkedParts"), FALSE); |
569 | return; | 569 | return; |
570 | } | 570 | } |
571 | 571 | ||
diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp index 7231286..0e3a5fe 100644 --- a/linden/indra/newview/lltoolpie.cpp +++ b/linden/indra/newview/lltoolpie.cpp | |||
@@ -62,7 +62,7 @@ | |||
62 | 62 | ||
63 | LLToolPie *gToolPie = NULL; | 63 | LLToolPie *gToolPie = NULL; |
64 | 64 | ||
65 | LLViewerObject* LLToolPie::sClickActionObject = NULL; | 65 | LLPointer<LLViewerObject> LLToolPie::sClickActionObject; |
66 | LLHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL; | 66 | LLHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL; |
67 | U8 LLToolPie::sClickAction = 0; | 67 | U8 LLToolPie::sClickAction = 0; |
68 | 68 | ||
diff --git a/linden/indra/newview/lltoolpie.h b/linden/indra/newview/lltoolpie.h index 949013f..2fba989 100644 --- a/linden/indra/newview/lltoolpie.h +++ b/linden/indra/newview/lltoolpie.h | |||
@@ -73,7 +73,7 @@ protected: | |||
73 | BOOL mHitLand; | 73 | BOOL mHitLand; |
74 | LLUUID mHitObjectID; | 74 | LLUUID mHitObjectID; |
75 | BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region | 75 | BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region |
76 | static LLViewerObject* sClickActionObject; | 76 | static LLPointer<LLViewerObject> sClickActionObject; |
77 | static U8 sClickAction; | 77 | static U8 sClickAction; |
78 | static LLHandle<LLObjectSelection> sLeftClickSelection; | 78 | static LLHandle<LLObjectSelection> sLeftClickSelection; |
79 | }; | 79 | }; |
diff --git a/linden/indra/newview/lltoolselect.cpp b/linden/indra/newview/lltoolselect.cpp index 9d02756..329801f 100644 --- a/linden/indra/newview/lltoolselect.cpp +++ b/linden/indra/newview/lltoolselect.cpp | |||
@@ -229,7 +229,7 @@ LLHandle<LLObjectSelection> LLToolSelect::handleObjectSelection(LLViewerObject * | |||
229 | 229 | ||
230 | BOOL LLToolSelect::handleMouseUp(S32 x, S32 y, MASK mask) | 230 | BOOL LLToolSelect::handleMouseUp(S32 x, S32 y, MASK mask) |
231 | { | 231 | { |
232 | mIgnoreGroup = !gSavedSettings.getBOOL("SelectLinkedSet"); | 232 | mIgnoreGroup = gSavedSettings.getBOOL("EditLinkedParts"); |
233 | 233 | ||
234 | LLViewerObject* object = gObjectList.findObject(mSelectObjectID); | 234 | LLViewerObject* object = gObjectList.findObject(mSelectObjectID); |
235 | LLToolSelect::handleObjectSelection(object, mask, mIgnoreGroup, FALSE); | 235 | LLToolSelect::handleObjectSelection(object, mask, mIgnoreGroup, FALSE); |
diff --git a/linden/indra/newview/llviewerassetstorage.cpp b/linden/indra/newview/llviewerassetstorage.cpp index 95ef983..d9a5ada 100644 --- a/linden/indra/newview/llviewerassetstorage.cpp +++ b/linden/indra/newview/llviewerassetstorage.cpp | |||
@@ -57,7 +57,9 @@ void LLViewerAssetStorage::storeAssetData( | |||
57 | void* user_data, | 57 | void* user_data, |
58 | bool temp_file, | 58 | bool temp_file, |
59 | bool is_priority, | 59 | bool is_priority, |
60 | bool store_local) | 60 | bool store_local, |
61 | bool user_waiting, | ||
62 | F64 timeout) | ||
61 | { | 63 | { |
62 | LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); | 64 | LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID()); |
63 | llinfos << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type) | 65 | llinfos << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type) |
@@ -161,7 +163,9 @@ void LLViewerAssetStorage::storeAssetData( | |||
161 | LLStoreAssetCallback callback, | 163 | LLStoreAssetCallback callback, |
162 | void* user_data, | 164 | void* user_data, |
163 | bool temp_file, | 165 | bool temp_file, |
164 | bool is_priority) | 166 | bool is_priority, |
167 | bool user_waiting, | ||
168 | F64 timeout) | ||
165 | { | 169 | { |
166 | if(!filename) | 170 | if(!filename) |
167 | { | 171 | { |
diff --git a/linden/indra/newview/llviewerassetstorage.h b/linden/indra/newview/llviewerassetstorage.h index 8532e23..46840cb 100644 --- a/linden/indra/newview/llviewerassetstorage.h +++ b/linden/indra/newview/llviewerassetstorage.h | |||
@@ -52,7 +52,9 @@ public: | |||
52 | void* user_data, | 52 | void* user_data, |
53 | bool temp_file = false, | 53 | bool temp_file = false, |
54 | bool is_priority = false, | 54 | bool is_priority = false, |
55 | bool store_local = false); | 55 | bool store_local = false, |
56 | bool user_waiting=FALSE, | ||
57 | F64 timeout=LL_ASSET_STORAGE_TIMEOUT); | ||
56 | 58 | ||
57 | virtual void storeAssetData( | 59 | virtual void storeAssetData( |
58 | const char* filename, | 60 | const char* filename, |
@@ -61,7 +63,9 @@ public: | |||
61 | LLStoreAssetCallback callback, | 63 | LLStoreAssetCallback callback, |
62 | void* user_data, | 64 | void* user_data, |
63 | bool temp_file = false, | 65 | bool temp_file = false, |
64 | bool is_priority = false); | 66 | bool is_priority = false, |
67 | bool user_waiting=FALSE, | ||
68 | F64 timeout=LL_ASSET_STORAGE_TIMEOUT); | ||
65 | }; | 69 | }; |
66 | 70 | ||
67 | #endif | 71 | #endif |
diff --git a/linden/indra/newview/llviewerimage.cpp b/linden/indra/newview/llviewerimage.cpp index 2a7f346..b129a9a 100644 --- a/linden/indra/newview/llviewerimage.cpp +++ b/linden/indra/newview/llviewerimage.cpp | |||
@@ -156,7 +156,7 @@ void LLViewerImage::updateClass(const F32 velocity, const F32 angular_velocity) | |||
156 | sMaxTotalTextureMem -= sMaxBoundTextureMem/4; | 156 | sMaxTotalTextureMem -= sMaxBoundTextureMem/4; |
157 | } | 157 | } |
158 | 158 | ||
159 | if (sMaxTotalTextureMem > (S32)gSysMemory.getPhysicalMemory() - min_non_tex_system_mem) | 159 | if ((U32)sMaxTotalTextureMem > gSysMemory.getPhysicalMemory() - (U32)min_non_tex_system_mem) |
160 | { | 160 | { |
161 | sMaxTotalTextureMem = (S32)gSysMemory.getPhysicalMemory() - min_non_tex_system_mem; | 161 | sMaxTotalTextureMem = (S32)gSysMemory.getPhysicalMemory() - min_non_tex_system_mem; |
162 | } | 162 | } |
diff --git a/linden/indra/newview/llviewerimage.h b/linden/indra/newview/llviewerimage.h index c62e5e4..ee19cfb 100644 --- a/linden/indra/newview/llviewerimage.h +++ b/linden/indra/newview/llviewerimage.h | |||
@@ -226,6 +226,7 @@ public: | |||
226 | BOOST_AVATAR_BAKED = 1, | 226 | BOOST_AVATAR_BAKED = 1, |
227 | BOOST_AVATAR = 2, | 227 | BOOST_AVATAR = 2, |
228 | BOOST_CLOUDS = 3, | 228 | BOOST_CLOUDS = 3, |
229 | BOOST_SCULPTED = 4, | ||
229 | 230 | ||
230 | BOOST_HIGH = 10, | 231 | BOOST_HIGH = 10, |
231 | BOOST_TERRAIN = 11, // has to be high priority for minimap / low detail | 232 | BOOST_TERRAIN = 11, // has to be high priority for minimap / low detail |
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp index 4e87905..fce719f 100644 --- a/linden/indra/newview/llviewerimagelist.cpp +++ b/linden/indra/newview/llviewerimagelist.cpp | |||
@@ -38,6 +38,7 @@ | |||
38 | #include "llimagej2c.h" | 38 | #include "llimagej2c.h" |
39 | #include "llimagetga.h" | 39 | #include "llimagetga.h" |
40 | #include "llimagejpeg.h" | 40 | #include "llimagejpeg.h" |
41 | #include "llimagepng.h" | ||
41 | #include "llmediaengine.h" | 42 | #include "llmediaengine.h" |
42 | 43 | ||
43 | #include "llsdserialize.h" | 44 | #include "llsdserialize.h" |
@@ -1081,6 +1082,21 @@ BOOL LLViewerImageList::createUploadFile(const LLString& filename, | |||
1081 | } | 1082 | } |
1082 | } | 1083 | } |
1083 | break; | 1084 | break; |
1085 | case IMG_CODEC_PNG: | ||
1086 | { | ||
1087 | LLPointer<LLImagePNG> png_image = new LLImagePNG; | ||
1088 | |||
1089 | if (!png_image->load(filename)) | ||
1090 | { | ||
1091 | return FALSE; | ||
1092 | } | ||
1093 | |||
1094 | if (!png_image->decode(raw_image)) | ||
1095 | { | ||
1096 | return FALSE; | ||
1097 | } | ||
1098 | } | ||
1099 | break; | ||
1084 | default: | 1100 | default: |
1085 | return FALSE; | 1101 | return FALSE; |
1086 | } | 1102 | } |
diff --git a/linden/indra/newview/llviewerinventory.cpp b/linden/indra/newview/llviewerinventory.cpp index 0a65b8b..f24b7c7 100644 --- a/linden/indra/newview/llviewerinventory.cpp +++ b/linden/indra/newview/llviewerinventory.cpp | |||
@@ -571,7 +571,7 @@ U32 LLInventoryCallbackManager::registerCB(LLPointer<LLInventoryCallback> cb) | |||
571 | 571 | ||
572 | void LLInventoryCallbackManager::fire(U32 callback_id, const LLUUID& item_id) | 572 | void LLInventoryCallbackManager::fire(U32 callback_id, const LLUUID& item_id) |
573 | { | 573 | { |
574 | if (!callback_id) | 574 | if (!callback_id || item_id.isNull()) |
575 | return; | 575 | return; |
576 | 576 | ||
577 | std::map<U32, LLPointer<LLInventoryCallback> >::iterator i; | 577 | std::map<U32, LLPointer<LLInventoryCallback> >::iterator i; |
diff --git a/linden/indra/newview/llviewerjointattachment.h b/linden/indra/newview/llviewerjointattachment.h index 0c8469c..a8c2c71 100644 --- a/linden/indra/newview/llviewerjointattachment.h +++ b/linden/indra/newview/llviewerjointattachment.h | |||
@@ -79,7 +79,7 @@ public: | |||
79 | 79 | ||
80 | S32 getGroup() { return mGroup; } | 80 | S32 getGroup() { return mGroup; } |
81 | S32 getPieSlice() { return mPieSlice; } | 81 | S32 getPieSlice() { return mPieSlice; } |
82 | BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject; } | 82 | BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject.notNull(); } |
83 | LLViewerObject *getObject() { return mAttachedObject; } | 83 | LLViewerObject *getObject() { return mAttachedObject; } |
84 | S32 getNumObjects() { return (mAttachedObject ? 1 : 0); } | 84 | S32 getNumObjects() { return (mAttachedObject ? 1 : 0); } |
85 | const LLUUID& getItemID() { return mItemID; } | 85 | const LLUUID& getItemID() { return mItemID; } |
@@ -99,7 +99,7 @@ protected: | |||
99 | 99 | ||
100 | protected: | 100 | protected: |
101 | LLJoint* mJoint; | 101 | LLJoint* mJoint; |
102 | LLViewerObject* mAttachedObject; | 102 | LLPointer<LLViewerObject> mAttachedObject; |
103 | BOOL mAttachmentDirty; // does attachment drawable need to be fixed up? | 103 | BOOL mAttachmentDirty; // does attachment drawable need to be fixed up? |
104 | BOOL mVisibleInFirst; | 104 | BOOL mVisibleInFirst; |
105 | LLVector3 mOriginalPos; | 105 | LLVector3 mOriginalPos; |
diff --git a/linden/indra/newview/llviewerkeyboard.cpp b/linden/indra/newview/llviewerkeyboard.cpp index fcb1550..ad931cd 100644 --- a/linden/indra/newview/llviewerkeyboard.cpp +++ b/linden/indra/newview/llviewerkeyboard.cpp | |||
@@ -121,11 +121,7 @@ void agent_slide_left( EKeystate s ) | |||
121 | 121 | ||
122 | if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES) | 122 | if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES) |
123 | { | 123 | { |
124 | if (frame_count == 0) | 124 | gAgent.moveLeftNudge(1); |
125 | { | ||
126 | // only send nudge on first frame | ||
127 | gAgent.moveLeftNudge(1); | ||
128 | } | ||
129 | } | 125 | } |
130 | else | 126 | else |
131 | { | 127 | { |
@@ -142,11 +138,7 @@ void agent_slide_right( EKeystate s ) | |||
142 | 138 | ||
143 | if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES) | 139 | if( time < NUDGE_TIME || frame_count <= NUDGE_FRAMES) |
144 | { | 140 | { |
145 | if (frame_count == 0) | 141 | gAgent.moveLeftNudge(-1); |
146 | { | ||
147 | // only send nudge on first frame | ||
148 | gAgent.moveLeftNudge(-1); | ||
149 | } | ||
150 | } | 142 | } |
151 | else | 143 | else |
152 | { | 144 | { |
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index 4119573..b36b9a2 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp | |||
@@ -244,7 +244,7 @@ const LLString SAVE_INTO_TASK_INVENTORY("Save Object Back to Object Contents"); | |||
244 | 244 | ||
245 | #if LL_WINDOWS | 245 | #if LL_WINDOWS |
246 | static const char* SOUND_EXTENSIONS = ".wav"; | 246 | static const char* SOUND_EXTENSIONS = ".wav"; |
247 | static const char* IMAGE_EXTENSIONS = ".tga .bmp .jpg .jpeg"; | 247 | static const char* IMAGE_EXTENSIONS = ".tga .bmp .jpg .jpeg .png"; |
248 | static const char* ANIM_EXTENSIONS = ".bvh"; | 248 | static const char* ANIM_EXTENSIONS = ".bvh"; |
249 | #ifdef _CORY_TESTING | 249 | #ifdef _CORY_TESTING |
250 | static const char* GEOMETRY_EXTENSIONS = ".slg"; | 250 | static const char* GEOMETRY_EXTENSIONS = ".slg"; |
@@ -1259,7 +1259,7 @@ void init_debug_avatar_menu(LLMenuGL* menu) | |||
1259 | 1259 | ||
1260 | sub_menu = new LLMenuGL("Character Tests"); | 1260 | sub_menu = new LLMenuGL("Character Tests"); |
1261 | sub_menu->append(new LLMenuItemToggleGL("Go Away/AFK When Idle", | 1261 | sub_menu->append(new LLMenuItemToggleGL("Go Away/AFK When Idle", |
1262 | &gAllowAFK)); | 1262 | &gAllowIdleAFK)); |
1263 | 1263 | ||
1264 | sub_menu->append(new LLMenuItemCallGL("Appearance To XML", | 1264 | sub_menu->append(new LLMenuItemCallGL("Appearance To XML", |
1265 | &LLVOAvatar::dumpArchetypeXML)); | 1265 | &LLVOAvatar::dumpArchetypeXML)); |
@@ -4150,7 +4150,7 @@ class LLToolsBuyOrTake : public view_listener_t | |||
4150 | { | 4150 | { |
4151 | S32 total_price = selection_price(); | 4151 | S32 total_price = selection_price(); |
4152 | 4152 | ||
4153 | if (total_price <= gStatusBar->getBalance()) | 4153 | if (total_price <= gStatusBar->getBalance() || total_price == 0) |
4154 | { | 4154 | { |
4155 | handle_buy(NULL); | 4155 | handle_buy(NULL); |
4156 | } | 4156 | } |
@@ -4442,7 +4442,7 @@ class LLToolsEnableLink : public view_listener_t | |||
4442 | // user can modify at least one of the selected objects. | 4442 | // user can modify at least one of the selected objects. |
4443 | 4443 | ||
4444 | // in component mode, can't link | 4444 | // in component mode, can't link |
4445 | if (gSavedSettings.getBOOL("SelectLinkedSet")) | 4445 | if (!gSavedSettings.getBOOL("EditLinkedParts")) |
4446 | { | 4446 | { |
4447 | if(gSelectMgr->selectGetAllRootsValid() && gSelectMgr->getSelection()->getRootObjectCount() >= 2) | 4447 | if(gSelectMgr->selectGetAllRootsValid() && gSelectMgr->getSelection()->getRootObjectCount() >= 2) |
4448 | { | 4448 | { |
@@ -4842,6 +4842,12 @@ void show_debug_menus() | |||
4842 | if ( gMenuBarView ) | 4842 | if ( gMenuBarView ) |
4843 | { | 4843 | { |
4844 | BOOL debug = gSavedSettings.getBOOL("UseDebugMenus"); | 4844 | BOOL debug = gSavedSettings.getBOOL("UseDebugMenus"); |
4845 | |||
4846 | if(debug) | ||
4847 | { | ||
4848 | LLFirstUse::useDebugMenus(); | ||
4849 | } | ||
4850 | |||
4845 | gMenuBarView->setItemVisible(CLIENT_MENU_NAME, debug); | 4851 | gMenuBarView->setItemVisible(CLIENT_MENU_NAME, debug); |
4846 | gMenuBarView->setItemEnabled(CLIENT_MENU_NAME, debug); | 4852 | gMenuBarView->setItemEnabled(CLIENT_MENU_NAME, debug); |
4847 | gMenuBarView->setItemVisible(SERVER_MENU_NAME, debug); | 4853 | gMenuBarView->setItemVisible(SERVER_MENU_NAME, debug); |
@@ -6927,6 +6933,23 @@ class LLToolsShowSelectionLightRadius : public view_listener_t | |||
6927 | } | 6933 | } |
6928 | }; | 6934 | }; |
6929 | 6935 | ||
6936 | class LLToolsEditLinkedParts : public view_listener_t | ||
6937 | { | ||
6938 | bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) | ||
6939 | { | ||
6940 | BOOL select_individuals = gSavedSettings.getBOOL("EditLinkedParts"); | ||
6941 | if (select_individuals) | ||
6942 | { | ||
6943 | gSelectMgr->demoteSelectionToIndividuals(); | ||
6944 | } | ||
6945 | else | ||
6946 | { | ||
6947 | gSelectMgr->promoteSelectionToRoot(); | ||
6948 | } | ||
6949 | return true; | ||
6950 | } | ||
6951 | }; | ||
6952 | |||
6930 | void reload_personal_settings_overrides(void *) | 6953 | void reload_personal_settings_overrides(void *) |
6931 | { | 6954 | { |
6932 | llinfos << "Loading overrides from " << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT,"overrides.xml") << llendl; | 6955 | llinfos << "Loading overrides from " << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT,"overrides.xml") << llendl; |
@@ -7620,6 +7643,7 @@ void initialize_menus() | |||
7620 | addMenu(new LLToolsSelectBySurrounding(), "Tools.SelectBySurrounding"); | 7643 | addMenu(new LLToolsSelectBySurrounding(), "Tools.SelectBySurrounding"); |
7621 | addMenu(new LLToolsShowHiddenSelection(), "Tools.ShowHiddenSelection"); | 7644 | addMenu(new LLToolsShowHiddenSelection(), "Tools.ShowHiddenSelection"); |
7622 | addMenu(new LLToolsShowSelectionLightRadius(), "Tools.ShowSelectionLightRadius"); | 7645 | addMenu(new LLToolsShowSelectionLightRadius(), "Tools.ShowSelectionLightRadius"); |
7646 | addMenu(new LLToolsEditLinkedParts(), "Tools.EditLinkedParts"); | ||
7623 | addMenu(new LLToolsSnapObjectXY(), "Tools.SnapObjectXY"); | 7647 | addMenu(new LLToolsSnapObjectXY(), "Tools.SnapObjectXY"); |
7624 | addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid"); | 7648 | addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid"); |
7625 | addMenu(new LLToolsLink(), "Tools.Link"); | 7649 | addMenu(new LLToolsLink(), "Tools.Link"); |
diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp index 6954b1c..19dfebe 100644 --- a/linden/indra/newview/llviewermenufile.cpp +++ b/linden/indra/newview/llviewermenufile.cpp | |||
@@ -561,6 +561,21 @@ void upload_new_resource(const LLString& src_filename, std::string name, | |||
561 | return; | 561 | return; |
562 | } | 562 | } |
563 | } | 563 | } |
564 | else if( LLString::compareInsensitive(ext.c_str(),".png") == 0 ) | ||
565 | { | ||
566 | asset_type = LLAssetType::AT_TEXTURE; | ||
567 | if (!LLViewerImageList::createUploadFile(src_filename, | ||
568 | filename, | ||
569 | IMG_CODEC_PNG )) | ||
570 | { | ||
571 | sprintf(error_message, "Problem with file %s:\n\n%s\n", | ||
572 | src_filename.c_str(), LLImageBase::getLastError().c_str()); | ||
573 | args["[FILE]"] = src_filename; | ||
574 | args["[ERROR]"] = LLImageBase::getLastError(); | ||
575 | upload_error(error_message, "ProblemWithFile", filename, args); | ||
576 | return; | ||
577 | } | ||
578 | } | ||
564 | else if(LLString::compareInsensitive(ext.c_str(),".wav") == 0) | 579 | else if(LLString::compareInsensitive(ext.c_str(),".wav") == 0) |
565 | { | 580 | { |
566 | asset_type = LLAssetType::AT_SOUND; // tag it as audio | 581 | asset_type = LLAssetType::AT_SOUND; // tag it as audio |
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 87ff5aa..8f2fc1a 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -154,6 +154,22 @@ LLFrameTimer gThrottleTimer; | |||
154 | const U32 OFFER_THROTTLE_MAX_COUNT=5; //number of items per time period | 154 | const U32 OFFER_THROTTLE_MAX_COUNT=5; //number of items per time period |
155 | const F32 OFFER_THROTTLE_TIME=10.f; //time period in seconds | 155 | const F32 OFFER_THROTTLE_TIME=10.f; //time period in seconds |
156 | 156 | ||
157 | //script permissions | ||
158 | const LLString SCRIPT_QUESTIONS[SCRIPT_PERMISSION_EOF] = | ||
159 | { | ||
160 | "ScriptTakeMoney", | ||
161 | "ActOnControlInputs", | ||
162 | "RemapControlInputs", | ||
163 | "AnimateYourAvatar", | ||
164 | "AttachToYourAvatar", | ||
165 | "ReleaseOwnership", | ||
166 | "LinkAndDelink", | ||
167 | "AddAndRemoveJoints", | ||
168 | "ChangePermissions", | ||
169 | "TrackYourCamera", | ||
170 | "ControlYourCamera" | ||
171 | }; | ||
172 | |||
157 | struct LLFriendshipOffer | 173 | struct LLFriendshipOffer |
158 | { | 174 | { |
159 | LLUUID mFromID; | 175 | LLUUID mFromID; |
@@ -4243,8 +4259,8 @@ void process_economy_data(LLMessageSystem *msg, void** /*user_data*/) | |||
4243 | class LLScriptQuestionCBData | 4259 | class LLScriptQuestionCBData |
4244 | { | 4260 | { |
4245 | public: | 4261 | public: |
4246 | LLScriptQuestionCBData(const LLUUID &taskid, const LLUUID &itemid, const LLHost &sender, S32 questions) | 4262 | LLScriptQuestionCBData(const LLUUID &taskid, const LLUUID &itemid, const LLHost &sender, S32 questions, const char *object_name, const char *owner_name) |
4247 | : mTaskID(taskid), mItemID(itemid), mSender(sender), mQuestions(questions) | 4263 | : mTaskID(taskid), mItemID(itemid), mSender(sender), mQuestions(questions), mObjectName(object_name), mOwnerName(owner_name) |
4248 | { | 4264 | { |
4249 | } | 4265 | } |
4250 | 4266 | ||
@@ -4252,17 +4268,138 @@ public: | |||
4252 | LLUUID mItemID; | 4268 | LLUUID mItemID; |
4253 | LLHost mSender; | 4269 | LLHost mSender; |
4254 | S32 mQuestions; | 4270 | S32 mQuestions; |
4271 | LLString mObjectName; | ||
4272 | LLString mOwnerName; | ||
4255 | }; | 4273 | }; |
4256 | 4274 | ||
4275 | void notify_cautioned_script_question(LLScriptQuestionCBData* cbdata, S32 orig_questions, BOOL granted) | ||
4276 | { | ||
4277 | // only continue if at least some permissions were requested | ||
4278 | if (orig_questions) | ||
4279 | { | ||
4280 | // "'[OBJECTNAME]', an object owned by '[OWNERNAME]', | ||
4281 | // located in [REGIONNAME] at [REGIONPOS], | ||
4282 | // has been <granted|denied> permission to: [PERMISSIONS]." | ||
4283 | |||
4284 | LLUIString notice(LLNotifyBox::getTemplateMessage(granted ? "ScriptQuestionCautionChatGranted" : "ScriptQuestionCautionChatDenied")); | ||
4285 | |||
4286 | // always include the object name and owner name | ||
4287 | notice.setArg("[OBJECTNAME]", cbdata->mObjectName); | ||
4288 | notice.setArg("[OWNERNAME]", cbdata->mOwnerName); | ||
4289 | |||
4290 | // try to lookup viewerobject that corresponds to the object that | ||
4291 | // requested permissions (here, taskid->requesting object id) | ||
4292 | BOOL foundpos = FALSE; | ||
4293 | LLViewerObject* viewobj = gObjectList.findObject(cbdata->mTaskID); | ||
4294 | if (viewobj) | ||
4295 | { | ||
4296 | // found the viewerobject, get it's position in its region | ||
4297 | LLVector3 objpos(viewobj->getPosition()); | ||
4298 | |||
4299 | // try to lookup the name of the region the object is in | ||
4300 | LLViewerRegion* viewregion = viewobj->getRegion(); | ||
4301 | if (viewregion) | ||
4302 | { | ||
4303 | // got the region, so include the region and 3d coordinates of the object | ||
4304 | notice.setArg("[REGIONNAME]", viewregion->getName()); | ||
4305 | LLString formatpos = llformat("%.1f, %.1f,%.1f", objpos[VX], objpos[VY], objpos[VZ]); | ||
4306 | notice.setArg("[REGIONPOS]", formatpos); | ||
4307 | |||
4308 | foundpos = TRUE; | ||
4309 | } | ||
4310 | } | ||
4311 | |||
4312 | if (!foundpos) | ||
4313 | { | ||
4314 | // unable to determine location of the object | ||
4315 | notice.setArg("[REGIONNAME]", "(unknown region)"); | ||
4316 | notice.setArg("[REGIONPOS]", "(unknown position)"); | ||
4317 | } | ||
4318 | |||
4319 | // check each permission that was requested, and list each | ||
4320 | // permission that has been flagged as a caution permission | ||
4321 | BOOL caution = FALSE; | ||
4322 | S32 count = 0; | ||
4323 | LLString perms; | ||
4324 | for (S32 i = 0; i < SCRIPT_PERMISSION_EOF; i++) | ||
4325 | { | ||
4326 | if ((orig_questions & LSCRIPTRunTimePermissionBits[i]) && LLNotifyBox::getTemplateIsCaution(SCRIPT_QUESTIONS[i])) | ||
4327 | { | ||
4328 | count++; | ||
4329 | caution = TRUE; | ||
4330 | |||
4331 | // add a comma before the permission description if it is not the first permission | ||
4332 | // added to the list or the last permission to check | ||
4333 | if ((count > 1) && (i < SCRIPT_PERMISSION_EOF)) | ||
4334 | { | ||
4335 | perms.append(", "); | ||
4336 | } | ||
4337 | |||
4338 | perms.append(LLNotifyBox::getTemplateMessage(SCRIPT_QUESTIONS[i])); | ||
4339 | } | ||
4340 | } | ||
4341 | |||
4342 | notice.setArg("[PERMISSIONS]", perms); | ||
4343 | |||
4344 | // log a chat message as long as at least one requested permission | ||
4345 | // is a caution permission | ||
4346 | if (caution) | ||
4347 | { | ||
4348 | LLChat chat(notice.getString()); | ||
4349 | LLFloaterChat::addChat(chat, FALSE, FALSE); | ||
4350 | } | ||
4351 | } | ||
4352 | } | ||
4353 | |||
4354 | void script_question_decline_cb(S32 option, void* user_data) | ||
4355 | { | ||
4356 | LLMessageSystem *msg = gMessageSystem; | ||
4357 | LLScriptQuestionCBData *cbdata = (LLScriptQuestionCBData *)user_data; | ||
4358 | |||
4359 | // remember the permissions requested so they can be checked | ||
4360 | // when it comes time to log a chat message | ||
4361 | S32 orig = cbdata->mQuestions; | ||
4362 | |||
4363 | // this callback will always decline all permissions requested | ||
4364 | // (any question flags set in the ScriptAnswerYes message | ||
4365 | // will be interpreted as having been granted, so clearing all | ||
4366 | // the bits will deny every permission) | ||
4367 | cbdata->mQuestions = 0; | ||
4368 | |||
4369 | // respond with the permissions denial | ||
4370 | msg->newMessageFast(_PREHASH_ScriptAnswerYes); | ||
4371 | msg->nextBlockFast(_PREHASH_AgentData); | ||
4372 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | ||
4373 | msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); | ||
4374 | msg->nextBlockFast(_PREHASH_Data); | ||
4375 | msg->addUUIDFast(_PREHASH_TaskID, cbdata->mTaskID); | ||
4376 | msg->addUUIDFast(_PREHASH_ItemID, cbdata->mItemID); | ||
4377 | msg->addS32Fast(_PREHASH_Questions, cbdata->mQuestions); | ||
4378 | msg->sendReliable(cbdata->mSender); | ||
4379 | |||
4380 | // log a chat message, if appropriate | ||
4381 | notify_cautioned_script_question(cbdata, orig, FALSE); | ||
4382 | |||
4383 | delete cbdata; | ||
4384 | } | ||
4257 | 4385 | ||
4258 | void script_question_cb(S32 option, void* user_data) | 4386 | void script_question_cb(S32 option, void* user_data) |
4259 | { | 4387 | { |
4260 | LLMessageSystem *msg = gMessageSystem; | 4388 | LLMessageSystem *msg = gMessageSystem; |
4261 | LLScriptQuestionCBData *cbdata = (LLScriptQuestionCBData *)user_data; | 4389 | LLScriptQuestionCBData *cbdata = (LLScriptQuestionCBData *)user_data; |
4390 | S32 orig = cbdata->mQuestions; | ||
4391 | |||
4392 | // check whether permissions were granted or denied | ||
4393 | BOOL allowed = TRUE; | ||
4394 | // the "yes/accept" button is the first button in the template, making it button 0 | ||
4395 | // if any other button was clicked, the permissions were denied | ||
4262 | if (option != 0) | 4396 | if (option != 0) |
4263 | { | 4397 | { |
4264 | cbdata->mQuestions = 0; | 4398 | cbdata->mQuestions = 0; |
4265 | } | 4399 | allowed = FALSE; |
4400 | } | ||
4401 | |||
4402 | // reply with the permissions granted or denied | ||
4266 | msg->newMessageFast(_PREHASH_ScriptAnswerYes); | 4403 | msg->newMessageFast(_PREHASH_ScriptAnswerYes); |
4267 | msg->nextBlockFast(_PREHASH_AgentData); | 4404 | msg->nextBlockFast(_PREHASH_AgentData); |
4268 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); | 4405 | msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); |
@@ -4272,27 +4409,20 @@ void script_question_cb(S32 option, void* user_data) | |||
4272 | msg->addUUIDFast(_PREHASH_ItemID, cbdata->mItemID); | 4409 | msg->addUUIDFast(_PREHASH_ItemID, cbdata->mItemID); |
4273 | msg->addS32Fast(_PREHASH_Questions, cbdata->mQuestions); | 4410 | msg->addS32Fast(_PREHASH_Questions, cbdata->mQuestions); |
4274 | msg->sendReliable(cbdata->mSender); | 4411 | msg->sendReliable(cbdata->mSender); |
4412 | |||
4413 | // only log a chat message if caution prompts are enabled | ||
4414 | if (gSavedSettings.getBOOL("PermissionsCautionEnabled")) | ||
4415 | { | ||
4416 | // log a chat message, if appropriate | ||
4417 | notify_cautioned_script_question(cbdata, orig, allowed); | ||
4418 | } | ||
4419 | |||
4275 | delete cbdata; | 4420 | delete cbdata; |
4276 | } | 4421 | } |
4277 | 4422 | ||
4278 | |||
4279 | void process_script_question(LLMessageSystem *msg, void **user_data) | 4423 | void process_script_question(LLMessageSystem *msg, void **user_data) |
4280 | { | 4424 | { |
4281 | // XUI:translate owner name -> [FIRST] [LAST] | 4425 | // XUI:translate owner name -> [FIRST] [LAST] |
4282 | const LLString script_questions[SCRIPT_PERMISSION_EOF] = | ||
4283 | { | ||
4284 | "ScriptTakeMoney", | ||
4285 | "ActOnControlInputs", | ||
4286 | "RemapControlInputs", | ||
4287 | "AnimateYourAvatar", | ||
4288 | "AttachToYourAvatar", | ||
4289 | "ReleaseOwnership", | ||
4290 | "LinkAndDelink", | ||
4291 | "AddAndRemoveJoints", | ||
4292 | "ChangePermissions", | ||
4293 | "TrackYourCamera", | ||
4294 | "ControlYourCamera" | ||
4295 | }; | ||
4296 | 4426 | ||
4297 | LLHost sender = msg->getSender(); | 4427 | LLHost sender = msg->getSender(); |
4298 | 4428 | ||
@@ -4302,7 +4432,9 @@ void process_script_question(LLMessageSystem *msg, void **user_data) | |||
4302 | char object_name[255]; /* Flawfinder: ignore */ | 4432 | char object_name[255]; /* Flawfinder: ignore */ |
4303 | char owner_name[DB_FULL_NAME_BUF_SIZE]; /* Flawfinder: ignore */ | 4433 | char owner_name[DB_FULL_NAME_BUF_SIZE]; /* Flawfinder: ignore */ |
4304 | 4434 | ||
4435 | // taskid -> object key of object requesting permissions | ||
4305 | msg->getUUIDFast(_PREHASH_Data, _PREHASH_TaskID, taskid ); | 4436 | msg->getUUIDFast(_PREHASH_Data, _PREHASH_TaskID, taskid ); |
4437 | // itemid -> script asset key of script requesting permissions | ||
4306 | msg->getUUIDFast(_PREHASH_Data, _PREHASH_ItemID, itemid ); | 4438 | msg->getUUIDFast(_PREHASH_Data, _PREHASH_ItemID, itemid ); |
4307 | msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectName, 255, object_name); | 4439 | msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectName, 255, object_name); |
4308 | msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, DB_FULL_NAME_BUF_SIZE, owner_name); | 4440 | msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, DB_FULL_NAME_BUF_SIZE, owner_name); |
@@ -4311,23 +4443,48 @@ void process_script_question(LLMessageSystem *msg, void **user_data) | |||
4311 | LLString script_question; | 4443 | LLString script_question; |
4312 | if (questions) | 4444 | if (questions) |
4313 | { | 4445 | { |
4446 | BOOL caution = FALSE; | ||
4314 | S32 count = 0; | 4447 | S32 count = 0; |
4315 | LLString::format_map_t args; | 4448 | LLString::format_map_t args; |
4316 | args["[OBJECTNAME]"] = object_name; | 4449 | args["[OBJECTNAME]"] = object_name; |
4317 | args["[NAME]"] = owner_name; | 4450 | args["[NAME]"] = owner_name; |
4451 | |||
4452 | // check the received permission flags against each permission | ||
4318 | for (S32 i = 0; i < SCRIPT_PERMISSION_EOF; i++) | 4453 | for (S32 i = 0; i < SCRIPT_PERMISSION_EOF; i++) |
4319 | { | 4454 | { |
4320 | if (questions & LSCRIPTRunTimePermissionBits[i]) | 4455 | if (questions & LSCRIPTRunTimePermissionBits[i]) |
4321 | { | 4456 | { |
4322 | count++; | 4457 | count++; |
4323 | script_question += " " + LLNotifyBox::getTemplateMessage(script_questions[i]) + "\n"; | 4458 | script_question += " " + LLNotifyBox::getTemplateMessage(SCRIPT_QUESTIONS[i]) + "\n"; |
4459 | |||
4460 | // check whether permission question should cause special caution dialog | ||
4461 | caution |= LLNotifyBox::getTemplateIsCaution(SCRIPT_QUESTIONS[i]); | ||
4324 | } | 4462 | } |
4325 | } | 4463 | } |
4326 | args["[QUESTIONS]"] = script_question; | 4464 | args["[QUESTIONS]"] = script_question; |
4327 | 4465 | ||
4328 | LLScriptQuestionCBData *cbdata = new LLScriptQuestionCBData(taskid, itemid, sender, questions); | 4466 | LLScriptQuestionCBData *cbdata = new LLScriptQuestionCBData(taskid, itemid, sender, questions, object_name, owner_name); |
4467 | |||
4468 | // check whether cautions are even enabled or not | ||
4469 | if (gSavedSettings.getBOOL("PermissionsCautionEnabled")) | ||
4470 | { | ||
4471 | if (caution) | ||
4472 | { | ||
4473 | // display the caution permissions prompt | ||
4474 | LLNotifyBox::showXml("ScriptQuestionCaution", args, TRUE, script_question_cb, cbdata); | ||
4475 | } | ||
4476 | else | ||
4477 | { | ||
4478 | // display the permissions request normally | ||
4479 | LLNotifyBox::showXml("ScriptQuestion", args, FALSE, script_question_cb, cbdata); | ||
4480 | } | ||
4481 | } | ||
4482 | else | ||
4483 | { | ||
4484 | // fall back to default behavior if cautions are entirely disabled | ||
4485 | LLNotifyBox::showXml("ScriptQuestion", args, FALSE, script_question_cb, cbdata); | ||
4486 | } | ||
4329 | 4487 | ||
4330 | LLNotifyBox::showXml("ScriptQuestion", args, script_question_cb, cbdata); | ||
4331 | } | 4488 | } |
4332 | } | 4489 | } |
4333 | 4490 | ||
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp index 5a7ef9d..d237614 100644 --- a/linden/indra/newview/llviewerobject.cpp +++ b/linden/indra/newview/llviewerobject.cpp | |||
@@ -1571,7 +1571,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, | |||
1571 | // Bad, we got a cycle somehow. | 1571 | // Bad, we got a cycle somehow. |
1572 | // Kill both the parent and the child, and | 1572 | // Kill both the parent and the child, and |
1573 | // set cache misses for both of them. | 1573 | // set cache misses for both of them. |
1574 | llwarns << "Attempting to recover from parenting cycle!" << llendl | 1574 | llwarns << "Attempting to recover from parenting cycle!" << llendl; |
1575 | llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl; | 1575 | llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl; |
1576 | llwarns << "Adding to cache miss list" << llendl; | 1576 | llwarns << "Adding to cache miss list" << llendl; |
1577 | setParent(NULL); | 1577 | setParent(NULL); |
@@ -1595,6 +1595,24 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, | |||
1595 | sent_parentp->addChild(this); | 1595 | sent_parentp->addChild(this); |
1596 | } | 1596 | } |
1597 | 1597 | ||
1598 | if( mPartSourcep.notNull() ) | ||
1599 | { | ||
1600 | LLViewerPartSourceScript *partSourceScript = mPartSourcep.get(); | ||
1601 | partSourceScript->setSuspended( FALSE ); | ||
1602 | } | ||
1603 | |||
1604 | if( mText.notNull() ) | ||
1605 | { | ||
1606 | LLHUDText *hudText = mText.get(); | ||
1607 | hudText->setHidden( FALSE ); | ||
1608 | } | ||
1609 | |||
1610 | if( mIcon.notNull() ) | ||
1611 | { | ||
1612 | LLHUDIcon *hudIcon = mIcon.get(); | ||
1613 | hudIcon->setHidden( FALSE ); | ||
1614 | } | ||
1615 | |||
1598 | setChanged(MOVED | SILHOUETTE); | 1616 | setChanged(MOVED | SILHOUETTE); |
1599 | } | 1617 | } |
1600 | else | 1618 | else |
@@ -1609,6 +1627,23 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, | |||
1609 | U32 port = mesgsys->getSenderPort(); | 1627 | U32 port = mesgsys->getSenderPort(); |
1610 | 1628 | ||
1611 | gObjectList.orphanize(this, parent_id, ip, port); | 1629 | gObjectList.orphanize(this, parent_id, ip, port); |
1630 | if( mPartSourcep.notNull() ) | ||
1631 | { | ||
1632 | LLViewerPartSourceScript *partSourceScript = mPartSourcep.get(); | ||
1633 | partSourceScript->setSuspended( TRUE ); | ||
1634 | } | ||
1635 | |||
1636 | if( mText.notNull() ) | ||
1637 | { | ||
1638 | LLHUDText *hudText = mText.get(); | ||
1639 | hudText->setHidden( TRUE ); | ||
1640 | } | ||
1641 | |||
1642 | if( mIcon.notNull() ) | ||
1643 | { | ||
1644 | LLHUDIcon *hudIcon = mIcon.get(); | ||
1645 | hudIcon->setHidden( TRUE ); | ||
1646 | } | ||
1612 | } | 1647 | } |
1613 | } | 1648 | } |
1614 | } | 1649 | } |
@@ -1686,7 +1721,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, | |||
1686 | // Bad, we got a cycle somehow. | 1721 | // Bad, we got a cycle somehow. |
1687 | // Kill both the parent and the child, and | 1722 | // Kill both the parent and the child, and |
1688 | // set cache misses for both of them. | 1723 | // set cache misses for both of them. |
1689 | llwarns << "Attempting to recover from parenting cycle!" << llendl | 1724 | llwarns << "Attempting to recover from parenting cycle!" << llendl; |
1690 | llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl; | 1725 | llwarns << "Killing " << sent_parentp->getID() << " and " << getID() << llendl; |
1691 | llwarns << "Adding to cache miss list" << llendl; | 1726 | llwarns << "Adding to cache miss list" << llendl; |
1692 | setParent(NULL); | 1727 | setParent(NULL); |
@@ -4148,7 +4183,11 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow | |||
4148 | 4183 | ||
4149 | if (audio_uuid.isNull()) | 4184 | if (audio_uuid.isNull()) |
4150 | { | 4185 | { |
4151 | if (mAudioSourcep && mAudioSourcep->isLoop() && !mAudioSourcep->hasPendingPreloads()) | 4186 | if (!mAudioSourcep) |
4187 | { | ||
4188 | return; | ||
4189 | } | ||
4190 | if (mAudioSourcep->isLoop() && !mAudioSourcep->hasPendingPreloads()) | ||
4152 | { | 4191 | { |
4153 | // We don't clear the sound if it's a loop, it'll go away on its own. | 4192 | // We don't clear the sound if it's a loop, it'll go away on its own. |
4154 | // At least, this appears to be how the scripts work. | 4193 | // At least, this appears to be how the scripts work. |
@@ -4158,29 +4197,22 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow | |||
4158 | gAudiop->cleanupAudioSource(mAudioSourcep); | 4197 | gAudiop->cleanupAudioSource(mAudioSourcep); |
4159 | mAudioSourcep = NULL; | 4198 | mAudioSourcep = NULL; |
4160 | } | 4199 | } |
4161 | else if (mAudioSourcep) | 4200 | else if (flags & LL_SOUND_FLAG_STOP) |
4162 | { | 4201 | { |
4163 | if (mAudioSourcep->isLoop()) | 4202 | // Just shut off the sound |
4164 | { | 4203 | mAudioSourcep->play(LLUUID::null); |
4165 | // Just shut off the sound | ||
4166 | mAudioSourcep->play(LLUUID::null); | ||
4167 | } | ||
4168 | } | 4204 | } |
4169 | return; | 4205 | return; |
4170 | } | 4206 | } |
4171 | if (flags & LL_SOUND_FLAG_LOOP) | 4207 | if (flags & LL_SOUND_FLAG_LOOP |
4208 | && mAudioSourcep && mAudioSourcep->isLoop() && mAudioSourcep->getCurrentData() | ||
4209 | && mAudioSourcep->getCurrentData()->getID() == audio_uuid) | ||
4172 | { | 4210 | { |
4173 | if (mAudioSourcep && mAudioSourcep->isLoop() && mAudioSourcep->getCurrentData()) | 4211 | //llinfos << "Already playing this sound on a loop, ignoring" << llendl; |
4174 | { | 4212 | return; |
4175 | if (mAudioSourcep->getCurrentData()->getID() == audio_uuid) | ||
4176 | { | ||
4177 | //llinfos << "Already playing this sound on a loop, ignoring" << llendl; | ||
4178 | return; | ||
4179 | } | ||
4180 | } | ||
4181 | } | 4213 | } |
4182 | 4214 | ||
4183 | // don't clean up before previous sound is done. Solves: SL-33486 | 4215 | // don't clean up before previous sound is done. Solves: SL-33486 |
4184 | if ( mAudioSourcep && mAudioSourcep->isDone() ) | 4216 | if ( mAudioSourcep && mAudioSourcep->isDone() ) |
4185 | { | 4217 | { |
4186 | gAudiop->cleanupAudioSource(mAudioSourcep); | 4218 | gAudiop->cleanupAudioSource(mAudioSourcep); |
@@ -4191,11 +4223,16 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow | |||
4191 | 4223 | ||
4192 | if (mAudioSourcep) | 4224 | if (mAudioSourcep) |
4193 | { | 4225 | { |
4226 | BOOL queue = flags & LL_SOUND_FLAG_QUEUE; | ||
4194 | mAudioSourcep->setGain(gain); | 4227 | mAudioSourcep->setGain(gain); |
4195 | mAudioSourcep->setLoop((flags & LL_SOUND_FLAG_LOOP) ? TRUE : FALSE); | 4228 | mAudioSourcep->setLoop(flags & LL_SOUND_FLAG_LOOP); |
4196 | mAudioSourcep->setSyncMaster((flags & LL_SOUND_FLAG_SYNC_MASTER) ? TRUE : FALSE); | 4229 | mAudioSourcep->setSyncMaster(flags & LL_SOUND_FLAG_SYNC_MASTER); |
4197 | mAudioSourcep->setSyncSlave((flags & LL_SOUND_FLAG_SYNC_SLAVE) ? TRUE : FALSE); | 4230 | mAudioSourcep->setSyncSlave(flags & LL_SOUND_FLAG_SYNC_SLAVE); |
4198 | mAudioSourcep->setQueueSounds((flags & LL_SOUND_FLAG_QUEUE) ? TRUE : FALSE); | 4231 | mAudioSourcep->setQueueSounds(queue); |
4232 | if(!queue) // stop any current sound first to avoid "farts of doom" (SL-1541) -MG | ||
4233 | { | ||
4234 | mAudioSourcep->play(LLUUID::null); | ||
4235 | } | ||
4199 | //llinfos << "Playing attached sound " << audio_uuid << llendl; | 4236 | //llinfos << "Playing attached sound " << audio_uuid << llendl; |
4200 | mAudioSourcep->play(audio_uuid); | 4237 | mAudioSourcep->play(audio_uuid); |
4201 | } | 4238 | } |
diff --git a/linden/indra/newview/llviewerpartsource.cpp b/linden/indra/newview/llviewerpartsource.cpp index e440eae..c0de13a 100644 --- a/linden/indra/newview/llviewerpartsource.cpp +++ b/linden/indra/newview/llviewerpartsource.cpp | |||
@@ -47,6 +47,7 @@ LLViewerPartSource::LLViewerPartSource(const U32 type) : | |||
47 | mLastUpdateTime = 0.f; | 47 | mLastUpdateTime = 0.f; |
48 | mLastPartTime = 0.f; | 48 | mLastPartTime = 0.f; |
49 | mIsDead = FALSE; | 49 | mIsDead = FALSE; |
50 | mIsSuspended = FALSE; | ||
50 | static U32 id_seed = 0; | 51 | static U32 id_seed = 0; |
51 | mID = ++id_seed; | 52 | mID = ++id_seed; |
52 | } | 53 | } |
@@ -93,6 +94,9 @@ void LLViewerPartSourceScript::setDead() | |||
93 | 94 | ||
94 | void LLViewerPartSourceScript::update(const F32 dt) | 95 | void LLViewerPartSourceScript::update(const F32 dt) |
95 | { | 96 | { |
97 | if( mIsSuspended ) | ||
98 | return; | ||
99 | |||
96 | LLMemType mt(LLMemType::MTYPE_PARTICLES); | 100 | LLMemType mt(LLMemType::MTYPE_PARTICLES); |
97 | F32 old_update_time = mLastUpdateTime; | 101 | F32 old_update_time = mLastUpdateTime; |
98 | mLastUpdateTime += dt; | 102 | mLastUpdateTime += dt; |
diff --git a/linden/indra/newview/llviewerpartsource.h b/linden/indra/newview/llviewerpartsource.h index 9d22e72..32e1475 100644 --- a/linden/indra/newview/llviewerpartsource.h +++ b/linden/indra/newview/llviewerpartsource.h | |||
@@ -61,9 +61,10 @@ public: | |||
61 | virtual void update(const F32 dt); // Return FALSE if this source is dead... | 61 | virtual void update(const F32 dt); // Return FALSE if this source is dead... |
62 | 62 | ||
63 | virtual void setDead(); | 63 | virtual void setDead(); |
64 | BOOL isDead() const { return mIsDead; } | 64 | BOOL isDead() const { return mIsDead; } |
65 | 65 | void setSuspended( BOOL state ) { mIsSuspended = state; } | |
66 | U32 getType() const { return mType; } | 66 | BOOL isSuspended() const { return mIsSuspended; } |
67 | U32 getType() const { return mType; } | ||
67 | static void updatePart(LLViewerPart &part, const F32 dt); | 68 | static void updatePart(LLViewerPart &part, const F32 dt); |
68 | void setOwnerUUID(const LLUUID& owner_id) { mOwnerUUID = owner_id; } | 69 | void setOwnerUUID(const LLUUID& owner_id) { mOwnerUUID = owner_id; } |
69 | LLUUID getOwnerUUID() const { return mOwnerUUID; } | 70 | LLUUID getOwnerUUID() const { return mOwnerUUID; } |
@@ -77,6 +78,7 @@ public: | |||
77 | protected: | 78 | protected: |
78 | U32 mType; | 79 | U32 mType; |
79 | BOOL mIsDead; | 80 | BOOL mIsDead; |
81 | BOOL mIsSuspended; | ||
80 | F32 mLastUpdateTime; | 82 | F32 mLastUpdateTime; |
81 | F32 mLastPartTime; | 83 | F32 mLastPartTime; |
82 | LLUUID mOwnerUUID; | 84 | LLUUID mOwnerUUID; |
diff --git a/linden/indra/newview/llviewertexteditor.cpp b/linden/indra/newview/llviewertexteditor.cpp index 6a8d53e..f6829d4 100644 --- a/linden/indra/newview/llviewertexteditor.cpp +++ b/linden/indra/newview/llviewertexteditor.cpp | |||
@@ -1425,7 +1425,8 @@ LLView* LLViewerTextEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlF | |||
1425 | 1425 | ||
1426 | LLFontGL* font = LLView::selectFont(node); | 1426 | LLFontGL* font = LLView::selectFont(node); |
1427 | 1427 | ||
1428 | LLString text = node->getValue(); | 1428 | // LLString text = node->getValue(); |
1429 | LLString text = node->getTextContents().substr(0, max_text_length - 1); | ||
1429 | 1430 | ||
1430 | if (text.size() > max_text_length) | 1431 | if (text.size() > max_text_length) |
1431 | { | 1432 | { |
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index 0f5bffd..116df89 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp | |||
@@ -2400,13 +2400,13 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) | |||
2400 | case KEY_RIGHT: | 2400 | case KEY_RIGHT: |
2401 | case KEY_UP: | 2401 | case KEY_UP: |
2402 | // let CTRL UP through for chat line history | 2402 | // let CTRL UP through for chat line history |
2403 | if( MASK_CONTROL & mask ) | 2403 | if( MASK_CONTROL == mask ) |
2404 | { | 2404 | { |
2405 | break; | 2405 | break; |
2406 | } | 2406 | } |
2407 | case KEY_DOWN: | 2407 | case KEY_DOWN: |
2408 | // let CTRL DOWN through for chat line history | 2408 | // let CTRL DOWN through for chat line history |
2409 | if( MASK_CONTROL & mask ) | 2409 | if( MASK_CONTROL == mask ) |
2410 | { | 2410 | { |
2411 | break; | 2411 | break; |
2412 | } | 2412 | } |
@@ -3173,7 +3173,7 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls, | |||
3173 | BOOL moveable_object_selected = FALSE; | 3173 | BOOL moveable_object_selected = FALSE; |
3174 | BOOL all_selected_objects_move = TRUE; | 3174 | BOOL all_selected_objects_move = TRUE; |
3175 | BOOL all_selected_objects_modify = TRUE; | 3175 | BOOL all_selected_objects_modify = TRUE; |
3176 | BOOL selecting_linked_set = gSavedSettings.getBOOL("SelectLinkedSet"); | 3176 | BOOL selecting_linked_set = !gSavedSettings.getBOOL("EditLinkedParts"); |
3177 | for( object = gSelectMgr->getSelection()->getFirstObject(); object; object = gSelectMgr->getSelection()->getNextObject() ) | 3177 | for( object = gSelectMgr->getSelection()->getFirstObject(); object; object = gSelectMgr->getSelection()->getNextObject() ) |
3178 | { | 3178 | { |
3179 | BOOL this_object_movable = FALSE; | 3179 | BOOL this_object_movable = FALSE; |
@@ -3532,6 +3532,18 @@ void LLViewerWindow::performPick() | |||
3532 | objectp = gObjectList.getSelectedObject(name); | 3532 | objectp = gObjectList.getSelectedObject(name); |
3533 | if (objectp) | 3533 | if (objectp) |
3534 | { | 3534 | { |
3535 | LLViewerObject* parent = (LLViewerObject*)(objectp->getParent()); | ||
3536 | if (NULL == parent) { | ||
3537 | // if you are the parent | ||
3538 | parent = objectp; | ||
3539 | } | ||
3540 | std::vector<LLPointer<LLViewerObject>,std::allocator<LLPointer<LLViewerObject> > > children = parent->getChildren(); | ||
3541 | for( std::vector<LLPointer<LLViewerObject>,std::allocator<LLPointer<LLViewerObject> > >::iterator i= children.begin(); i!= children.end(); ++i ) | ||
3542 | { | ||
3543 | //go through | ||
3544 | LLViewerObject* foo = *i; | ||
3545 | foo->getRotation(); | ||
3546 | } | ||
3535 | if (objectp->mbCanSelect) | 3547 | if (objectp->mbCanSelect) |
3536 | { | 3548 | { |
3537 | te_offset = (te_offset == 16) ? NO_FACE : te_offset; | 3549 | te_offset = (te_offset == 16) ? NO_FACE : te_offset; |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index 4de4e36..a375d84 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -5739,6 +5739,7 @@ void LLVOAvatar::requestLayerSetUpdate( LLVOAvatar::ELocTexIndex i ) | |||
5739 | break; | 5739 | break; |
5740 | 5740 | ||
5741 | 5741 | ||
5742 | case LOCTEX_UPPER_JACKET: | ||
5742 | case LOCTEX_LOWER_JACKET: | 5743 | case LOCTEX_LOWER_JACKET: |
5743 | if( mUpperBodyLayerSet ) | 5744 | if( mUpperBodyLayerSet ) |
5744 | { | 5745 | { |
@@ -5750,6 +5751,10 @@ void LLVOAvatar::requestLayerSetUpdate( LLVOAvatar::ELocTexIndex i ) | |||
5750 | mLowerBodyLayerSet->requestUpdate(); | 5751 | mLowerBodyLayerSet->requestUpdate(); |
5751 | } | 5752 | } |
5752 | break; | 5753 | break; |
5754 | |||
5755 | case LOCTEX_NUM_ENTRIES: | ||
5756 | llerrs << "Bogus texture value " << i << llendl; | ||
5757 | break; | ||
5753 | } | 5758 | } |
5754 | 5759 | ||
5755 | } | 5760 | } |
@@ -7409,6 +7414,24 @@ void LLVOAvatar::setCachedBakedTexture( ETextureIndex te, const LLUUID& uuid ) | |||
7409 | mSkirtLayerSet->cancelUpload(); | 7414 | mSkirtLayerSet->cancelUpload(); |
7410 | } | 7415 | } |
7411 | break; | 7416 | break; |
7417 | |||
7418 | case TEX_HEAD_BODYPAINT: | ||
7419 | case TEX_UPPER_SHIRT: | ||
7420 | case TEX_LOWER_PANTS: | ||
7421 | case TEX_EYES_IRIS: | ||
7422 | case TEX_HAIR: | ||
7423 | case TEX_UPPER_BODYPAINT: | ||
7424 | case TEX_LOWER_BODYPAINT: | ||
7425 | case TEX_LOWER_SHOES: | ||
7426 | case TEX_LOWER_SOCKS: | ||
7427 | case TEX_UPPER_JACKET: | ||
7428 | case TEX_LOWER_JACKET: | ||
7429 | case TEX_UPPER_GLOVES: | ||
7430 | case TEX_UPPER_UNDERSHIRT: | ||
7431 | case TEX_LOWER_UNDERPANTS: | ||
7432 | case TEX_SKIRT: | ||
7433 | case TEX_NUM_ENTRIES: | ||
7434 | break; | ||
7412 | } | 7435 | } |
7413 | } | 7436 | } |
7414 | 7437 | ||
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h index 2a2c0f0..427293a 100644 --- a/linden/indra/newview/llvoavatar.h +++ b/linden/indra/newview/llvoavatar.h | |||
@@ -256,8 +256,7 @@ public: | |||
256 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | | 256 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | |
257 | (1 << LLVertexBuffer::TYPE_WEIGHT) | | 257 | (1 << LLVertexBuffer::TYPE_WEIGHT) | |
258 | (1 << LLVertexBuffer::TYPE_CLOTHWEIGHT) | 258 | (1 << LLVertexBuffer::TYPE_CLOTHWEIGHT) |
259 | } | 259 | }; |
260 | eVertexDataMask; | ||
261 | 260 | ||
262 | LLVOAvatar(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); | 261 | LLVOAvatar(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); |
263 | /*virtual*/ void markDead(); | 262 | /*virtual*/ void markDead(); |
diff --git a/linden/indra/newview/llvoinventorylistener.cpp b/linden/indra/newview/llvoinventorylistener.cpp index 739cd0b..1a50682 100644 --- a/linden/indra/newview/llvoinventorylistener.cpp +++ b/linden/indra/newview/llvoinventorylistener.cpp | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | void LLVOInventoryListener::removeVOInventoryListener() | 34 | void LLVOInventoryListener::removeVOInventoryListener() |
35 | { | 35 | { |
36 | if (mListenerVObject != NULL) | 36 | if (mListenerVObject) |
37 | { | 37 | { |
38 | mListenerVObject->removeInventoryListener(this); | 38 | mListenerVObject->removeInventoryListener(this); |
39 | mListenerVObject = NULL; | 39 | mListenerVObject = NULL; |
@@ -52,7 +52,7 @@ void LLVOInventoryListener::registerVOInventoryListener(LLViewerObject* object, | |||
52 | 52 | ||
53 | void LLVOInventoryListener::requestVOInventory() | 53 | void LLVOInventoryListener::requestVOInventory() |
54 | { | 54 | { |
55 | if (mListenerVObject != NULL) | 55 | if (mListenerVObject) |
56 | { | 56 | { |
57 | mListenerVObject->requestInventory(); | 57 | mListenerVObject->requestInventory(); |
58 | } | 58 | } |
diff --git a/linden/indra/newview/llvoinventorylistener.h b/linden/indra/newview/llvoinventorylistener.h index 4cb90a6..022713e 100644 --- a/linden/indra/newview/llvoinventorylistener.h +++ b/linden/indra/newview/llvoinventorylistener.h | |||
@@ -56,7 +56,7 @@ protected: | |||
56 | void requestVOInventory(); | 56 | void requestVOInventory(); |
57 | 57 | ||
58 | private: | 58 | private: |
59 | LLViewerObject* mListenerVObject; | 59 | LLPointer<LLViewerObject> mListenerVObject; |
60 | }; | 60 | }; |
61 | 61 | ||
62 | #endif | 62 | #endif |
diff --git a/linden/indra/newview/llvopartgroup.cpp b/linden/indra/newview/llvopartgroup.cpp index fbf753a..94027a3 100644 --- a/linden/indra/newview/llvopartgroup.cpp +++ b/linden/indra/newview/llvopartgroup.cpp | |||
@@ -421,7 +421,7 @@ void LLParticlePartition::addGeometryCount(LLSpatialGroup* group, U32& vertex_co | |||
421 | continue; | 421 | continue; |
422 | } | 422 | } |
423 | 423 | ||
424 | LLAlphaObject* obj = (LLAlphaObject*) drawablep->getVObj(); | 424 | LLAlphaObject* obj = (LLAlphaObject*) drawablep->getVObj().get(); |
425 | obj->mDepth = 0.f; | 425 | obj->mDepth = 0.f; |
426 | 426 | ||
427 | if (drawablep->isAnimating()) | 427 | if (drawablep->isAnimating()) |
diff --git a/linden/indra/newview/llvopartgroup.h b/linden/indra/newview/llvopartgroup.h index f3e10c5..f301a48 100644 --- a/linden/indra/newview/llvopartgroup.h +++ b/linden/indra/newview/llvopartgroup.h | |||
@@ -39,14 +39,13 @@ class LLViewerPartGroup; | |||
39 | class LLVOPartGroup : public LLAlphaObject | 39 | class LLVOPartGroup : public LLAlphaObject |
40 | { | 40 | { |
41 | public: | 41 | public: |
42 | enum | 42 | enum |
43 | { | 43 | { |
44 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | | 44 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | |
45 | (1 << LLVertexBuffer::TYPE_NORMAL) | | 45 | (1 << LLVertexBuffer::TYPE_NORMAL) | |
46 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | | 46 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | |
47 | (1 << LLVertexBuffer::TYPE_COLOR) | 47 | (1 << LLVertexBuffer::TYPE_COLOR) |
48 | } | 48 | }; |
49 | eVertexDataMask; | ||
50 | 49 | ||
51 | LLVOPartGroup(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); | 50 | LLVOPartGroup(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); |
52 | 51 | ||
diff --git a/linden/indra/newview/llvosurfacepatch.h b/linden/indra/newview/llvosurfacepatch.h index a21763d..e6a6f44 100644 --- a/linden/indra/newview/llvosurfacepatch.h +++ b/linden/indra/newview/llvosurfacepatch.h | |||
@@ -39,15 +39,14 @@ class LLVector2; | |||
39 | class LLVOSurfacePatch : public LLStaticViewerObject | 39 | class LLVOSurfacePatch : public LLStaticViewerObject |
40 | { | 40 | { |
41 | public: | 41 | public: |
42 | enum | 42 | enum |
43 | { | 43 | { |
44 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | | 44 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | |
45 | (1 << LLVertexBuffer::TYPE_NORMAL) | | 45 | (1 << LLVertexBuffer::TYPE_NORMAL) | |
46 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | | 46 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | |
47 | (1 << LLVertexBuffer::TYPE_TEXCOORD2) | | 47 | (1 << LLVertexBuffer::TYPE_TEXCOORD2) | |
48 | (1 << LLVertexBuffer::TYPE_COLOR) | 48 | (1 << LLVertexBuffer::TYPE_COLOR) |
49 | } | 49 | }; |
50 | eVertexDataMask; | ||
51 | 50 | ||
52 | LLVOSurfacePatch(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); | 51 | LLVOSurfacePatch(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); |
53 | 52 | ||
diff --git a/linden/indra/newview/llvotree.h b/linden/indra/newview/llvotree.h index 4ec148d..6de7c0d 100644 --- a/linden/indra/newview/llvotree.h +++ b/linden/indra/newview/llvotree.h | |||
@@ -43,13 +43,12 @@ protected: | |||
43 | ~LLVOTree(); | 43 | ~LLVOTree(); |
44 | 44 | ||
45 | public: | 45 | public: |
46 | enum | 46 | enum |
47 | { | 47 | { |
48 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | | 48 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | |
49 | (1 << LLVertexBuffer::TYPE_NORMAL) | | 49 | (1 << LLVertexBuffer::TYPE_NORMAL) | |
50 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | 50 | (1 << LLVertexBuffer::TYPE_TEXCOORD) |
51 | } | 51 | }; |
52 | eVertexDataMask; | ||
53 | 52 | ||
54 | LLVOTree(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); | 53 | LLVOTree(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); |
55 | 54 | ||
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp index b9bdddc..ccf0cba 100644 --- a/linden/indra/newview/llvovolume.cpp +++ b/linden/indra/newview/llvovolume.cpp | |||
@@ -66,6 +66,7 @@ | |||
66 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; | 66 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; |
67 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; | 67 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; |
68 | const F32 FORCE_CULL_AREA = 8.f; | 68 | const F32 FORCE_CULL_AREA = 8.f; |
69 | const S32 SCULPT_REZ = 128; | ||
69 | 70 | ||
70 | BOOL gAnimateTextures = TRUE; | 71 | BOOL gAnimateTextures = TRUE; |
71 | extern BOOL gHideSelectedObjects; | 72 | extern BOOL gHideSelectedObjects; |
@@ -272,9 +273,9 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, | |||
272 | void LLVOVolume::animateTextures() | 273 | void LLVOVolume::animateTextures() |
273 | { | 274 | { |
274 | F32 off_s = 0.f, off_t = 0.f, scale_s = 1.f, scale_t = 1.f, rot = 0.f; | 275 | F32 off_s = 0.f, off_t = 0.f, scale_s = 1.f, scale_t = 1.f, rot = 0.f; |
275 | S32 result; | 276 | S32 result = mTextureAnimp->animateTextures(off_s, off_t, scale_s, scale_t, rot); |
276 | 277 | ||
277 | if (result = mTextureAnimp->animateTextures(off_s, off_t, scale_s, scale_t, rot)) | 278 | if (result) |
278 | { | 279 | { |
279 | if (!mTexAnimMode) | 280 | if (!mTexAnimMode) |
280 | { | 281 | { |
@@ -484,10 +485,11 @@ void LLVOVolume::updateTextures() | |||
484 | mSculptTexture = gImageList.getImage(id); | 485 | mSculptTexture = gImageList.getImage(id); |
485 | if (mSculptTexture.notNull()) | 486 | if (mSculptTexture.notNull()) |
486 | { | 487 | { |
487 | mSculptTexture->addTextureStats(mPixelArea); | 488 | mSculptTexture->addTextureStats(SCULPT_REZ * SCULPT_REZ); |
489 | mSculptTexture->setBoostLevel(LLViewerImage::BOOST_SCULPTED); | ||
488 | } | 490 | } |
489 | 491 | ||
490 | S32 desired_discard = MAX_LOD - mLOD; | 492 | S32 desired_discard = 0; // lower discard levels have MUCH less resolution - (old=MAX_LOD - mLOD) |
491 | S32 current_discard = getVolume()->getSculptLevel(); | 493 | S32 current_discard = getVolume()->getSculptLevel(); |
492 | 494 | ||
493 | if (desired_discard != current_discard) | 495 | if (desired_discard != current_discard) |
@@ -701,7 +703,7 @@ void LLVOVolume::sculpt() | |||
701 | if (mSculptTexture.notNull()) | 703 | if (mSculptTexture.notNull()) |
702 | { | 704 | { |
703 | S32 discard_level; | 705 | S32 discard_level; |
704 | S32 desired_discard = MAX_LOD - mLOD; // desired | 706 | S32 desired_discard = 0; // lower discard levels have MUCH less resolution |
705 | 707 | ||
706 | discard_level = desired_discard; | 708 | discard_level = desired_discard; |
707 | 709 | ||
@@ -2210,7 +2212,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) | |||
2210 | { | 2212 | { |
2211 | LLDrawable* drawablep = *drawable_iter; | 2213 | LLDrawable* drawablep = *drawable_iter; |
2212 | 2214 | ||
2213 | if (drawablep->isDead()) | 2215 | if (drawablep->isDead() || drawablep->isState(LLDrawable::FORCE_INVISIBLE) ) |
2214 | { | 2216 | { |
2215 | continue; | 2217 | continue; |
2216 | } | 2218 | } |
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h index f5dfeb0..5881c04 100644 --- a/linden/indra/newview/llvovolume.h +++ b/linden/indra/newview/llvovolume.h | |||
@@ -83,8 +83,7 @@ public: | |||
83 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | | 83 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | |
84 | (1 << LLVertexBuffer::TYPE_TEXCOORD2) | | 84 | (1 << LLVertexBuffer::TYPE_TEXCOORD2) | |
85 | (1 << LLVertexBuffer::TYPE_COLOR) | 85 | (1 << LLVertexBuffer::TYPE_COLOR) |
86 | } | 86 | }; |
87 | eVertexDataMask; | ||
88 | 87 | ||
89 | public: | 88 | public: |
90 | LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); | 89 | LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); |
diff --git a/linden/indra/newview/llvowater.h b/linden/indra/newview/llvowater.h index 8ed795c..0bb0c46 100644 --- a/linden/indra/newview/llvowater.h +++ b/linden/indra/newview/llvowater.h | |||
@@ -52,8 +52,7 @@ public: | |||
52 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | | 52 | VERTEX_DATA_MASK = (1 << LLVertexBuffer::TYPE_VERTEX) | |
53 | (1 << LLVertexBuffer::TYPE_NORMAL) | | 53 | (1 << LLVertexBuffer::TYPE_NORMAL) | |
54 | (1 << LLVertexBuffer::TYPE_TEXCOORD) | 54 | (1 << LLVertexBuffer::TYPE_TEXCOORD) |
55 | } | 55 | }; |
56 | eVertexDataMask; | ||
57 | 56 | ||
58 | LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); | 57 | LLVOWater(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); |
59 | 58 | ||
diff --git a/linden/indra/newview/llwebbrowserctrl.h b/linden/indra/newview/llwebbrowserctrl.h index 7097036..785f28b 100644 --- a/linden/indra/newview/llwebbrowserctrl.h +++ b/linden/indra/newview/llwebbrowserctrl.h | |||
@@ -154,6 +154,8 @@ class LLWebBrowserCtrlEventEmitter | |||
154 | ObserverContainer observers; | 154 | ObserverContainer observers; |
155 | }; | 155 | }; |
156 | 156 | ||
157 | class LLUICtrlFactory; | ||
158 | |||
157 | //////////////////////////////////////////////////////////////////////////////// | 159 | //////////////////////////////////////////////////////////////////////////////// |
158 | // | 160 | // |
159 | class LLWebBrowserCtrl : | 161 | class LLWebBrowserCtrl : |
@@ -249,7 +251,7 @@ class LLWebBrowserCtrl : | |||
249 | class LLWebBrowserTexture : public LLDynamicTexture | 251 | class LLWebBrowserTexture : public LLDynamicTexture |
250 | { | 252 | { |
251 | public: | 253 | public: |
252 | LLWebBrowserTexture::LLWebBrowserTexture( S32 width, S32 height, LLWebBrowserCtrl* browserCtrl, int browserWindow ); | 254 | LLWebBrowserTexture( S32 width, S32 height, LLWebBrowserCtrl* browserCtrl, int browserWindow ); |
253 | virtual ~LLWebBrowserTexture(); | 255 | virtual ~LLWebBrowserTexture(); |
254 | 256 | ||
255 | virtual void preRender( BOOL clear_depth = TRUE ) {}; | 257 | virtual void preRender( BOOL clear_depth = TRUE ) {}; |
diff --git a/linden/indra/newview/llworld.cpp b/linden/indra/newview/llworld.cpp index 9c71ee4..7696431 100644 --- a/linden/indra/newview/llworld.cpp +++ b/linden/indra/newview/llworld.cpp | |||
@@ -501,6 +501,8 @@ F32 LLWorld::resolveStepHeightGlobal(const LLVOAvatar* avatarp, const LLVector3d | |||
501 | 501 | ||
502 | land_intersection.mdV[VZ] = regionp->getLand().resolveHeightGlobal(point_a); | 502 | land_intersection.mdV[VZ] = regionp->getLand().resolveHeightGlobal(point_a); |
503 | normalized_land_distance = (F32)(point_a.mdV[VZ] - land_intersection.mdV[VZ]) / segment_length; | 503 | normalized_land_distance = (F32)(point_a.mdV[VZ] - land_intersection.mdV[VZ]) / segment_length; |
504 | intersection = land_intersection; | ||
505 | intersection_normal = resolveLandNormalGlobal(land_intersection); | ||
504 | 506 | ||
505 | if (avatarp && !avatarp->mFootPlane.isExactlyClear()) | 507 | if (avatarp && !avatarp->mFootPlane.isExactlyClear()) |
506 | { | 508 | { |
@@ -511,17 +513,13 @@ F32 LLWorld::resolveStepHeightGlobal(const LLVOAvatar* avatarp, const LLVector3d | |||
511 | norm_dist_from_plane = llclamp(norm_dist_from_plane / segment_length, 0.f, 1.f); | 513 | norm_dist_from_plane = llclamp(norm_dist_from_plane / segment_length, 0.f, 1.f); |
512 | if (norm_dist_from_plane < normalized_land_distance) | 514 | if (norm_dist_from_plane < normalized_land_distance) |
513 | { | 515 | { |
516 | // collided with object before land | ||
514 | normalized_land_distance = norm_dist_from_plane; | 517 | normalized_land_distance = norm_dist_from_plane; |
515 | intersection = point_a; | 518 | intersection = point_a; |
516 | intersection.mdV[VZ] -= norm_dist_from_plane * segment_length; | 519 | intersection.mdV[VZ] -= norm_dist_from_plane * segment_length; |
517 | intersection_normal = foot_plane_normal; | 520 | intersection_normal = foot_plane_normal; |
518 | } | 521 | } |
519 | } | 522 | } |
520 | else | ||
521 | { | ||
522 | intersection = land_intersection; | ||
523 | intersection_normal = resolveLandNormalGlobal(land_intersection); | ||
524 | } | ||
525 | 523 | ||
526 | return normalized_land_distance; | 524 | return normalized_land_distance; |
527 | } | 525 | } |
diff --git a/linden/indra/newview/llxmlrpctransaction.cpp b/linden/indra/newview/llxmlrpctransaction.cpp index 896508c..887b69d 100644 --- a/linden/indra/newview/llxmlrpctransaction.cpp +++ b/linden/indra/newview/llxmlrpctransaction.cpp | |||
@@ -228,22 +228,22 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip) | |||
228 | 228 | ||
229 | // tell curl about the settings | 229 | // tell curl about the settings |
230 | curl_easy_setopt(mCurl, CURLOPT_PROXY, mProxyAddress.c_str()); | 230 | curl_easy_setopt(mCurl, CURLOPT_PROXY, mProxyAddress.c_str()); |
231 | curl_easy_setopt(mCurl, CURLOPT_PROXYPORT, (long)port); | 231 | curl_easy_setopt(mCurl, CURLOPT_PROXYPORT, (long) port); |
232 | curl_easy_setopt(mCurl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); | 232 | curl_easy_setopt(mCurl, CURLOPT_PROXYTYPE, (long) CURLPROXY_HTTP); |
233 | }; | 233 | }; |
234 | 234 | ||
235 | // curl_easy_setopt(mCurl, CURLOPT_VERBOSE, 1); // usefull for debugging | 235 | // curl_easy_setopt(mCurl, CURLOPT_VERBOSE, 1L); // usefull for debugging |
236 | curl_easy_setopt(mCurl, CURLOPT_NOSIGNAL, 1); | 236 | curl_easy_setopt(mCurl, CURLOPT_NOSIGNAL, 1L); |
237 | curl_easy_setopt(mCurl, CURLOPT_WRITEFUNCTION, &curlDownloadCallback); | 237 | curl_easy_setopt(mCurl, CURLOPT_WRITEFUNCTION, &curlDownloadCallback); |
238 | curl_easy_setopt(mCurl, CURLOPT_WRITEDATA, this); | 238 | curl_easy_setopt(mCurl, CURLOPT_WRITEDATA, this); |
239 | curl_easy_setopt(mCurl, CURLOPT_ERRORBUFFER, &mCurlErrorBuffer); | 239 | curl_easy_setopt(mCurl, CURLOPT_ERRORBUFFER, &mCurlErrorBuffer); |
240 | curl_easy_setopt(mCurl, CURLOPT_CAINFO, gDirUtilp->getCAFile().c_str()); | 240 | curl_easy_setopt(mCurl, CURLOPT_CAINFO, gDirUtilp->getCAFile().c_str()); |
241 | curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYPEER, gVerifySSLCert); | 241 | curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYPEER, (long) gVerifySSLCert); |
242 | curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYHOST, gVerifySSLCert? 2 : 0); | 242 | curl_easy_setopt(mCurl, CURLOPT_SSL_VERIFYHOST, gVerifySSLCert? 2L : 0L); |
243 | 243 | ||
244 | /* Setting the DNS cache timeout to -1 disables it completely. | 244 | /* Setting the DNS cache timeout to -1 disables it completely. |
245 | This might help with bug #503 */ | 245 | This might help with bug #503 */ |
246 | curl_easy_setopt(mCurl, CURLOPT_DNS_CACHE_TIMEOUT, -1); | 246 | curl_easy_setopt(mCurl, CURLOPT_DNS_CACHE_TIMEOUT, -1L); |
247 | 247 | ||
248 | mHeaders = curl_slist_append(mHeaders, "Content-Type: text/xml"); | 248 | mHeaders = curl_slist_append(mHeaders, "Content-Type: text/xml"); |
249 | curl_easy_setopt(mCurl, CURLOPT_URL, mURI.c_str()); | 249 | curl_easy_setopt(mCurl, CURLOPT_URL, mURI.c_str()); |
@@ -257,7 +257,7 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip) | |||
257 | if (mRequestText) | 257 | if (mRequestText) |
258 | { | 258 | { |
259 | curl_easy_setopt(mCurl, CURLOPT_POSTFIELDS, mRequestText); | 259 | curl_easy_setopt(mCurl, CURLOPT_POSTFIELDS, mRequestText); |
260 | curl_easy_setopt(mCurl, CURLOPT_POSTFIELDSIZE, mRequestTextSize); | 260 | curl_easy_setopt(mCurl, CURLOPT_POSTFIELDSIZE, (long) mRequestTextSize); |
261 | } | 261 | } |
262 | else | 262 | else |
263 | { | 263 | { |
diff --git a/linden/indra/newview/macview.xcodeproj/project.pbxproj b/linden/indra/newview/macview.xcodeproj/project.pbxproj index 8bc52b1..02be1d5 100644 --- a/linden/indra/newview/macview.xcodeproj/project.pbxproj +++ b/linden/indra/newview/macview.xcodeproj/project.pbxproj | |||
@@ -429,6 +429,11 @@ | |||
429 | 61923D70074AE3C0005E1F34 /* llvisualparam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61923D29074AE3C0005E1F34 /* llvisualparam.cpp */; }; | 429 | 61923D70074AE3C0005E1F34 /* llvisualparam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61923D29074AE3C0005E1F34 /* llvisualparam.cpp */; }; |
430 | 84401E2F0A13CC9A006720A5 /* llfloatergroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */; }; | 430 | 84401E2F0A13CC9A006720A5 /* llfloatergroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */; }; |
431 | 84401E320A13CCB2006720A5 /* llpanelgroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */; }; | 431 | 84401E320A13CCB2006720A5 /* llpanelgroupinvite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */; }; |
432 | 8833693F0C18AF33007F52DA /* llimagepng.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8833693B0C18AF33007F52DA /* llimagepng.cpp */; }; | ||
433 | 883369400C18AF33007F52DA /* llpngwrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8833693C0C18AF33007F52DA /* llpngwrapper.cpp */; }; | ||
434 | 88A95BB20C14D5FC0027E363 /* llsrv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 88A95BB10C14D5FC0027E363 /* llsrv.cpp */; }; | ||
435 | 88A95BCA0C14D92C0027E363 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 88A95BC90C14D92C0027E363 /* libresolv.dylib */; }; | ||
436 | 88AA282C0C17720D0032DF53 /* libpng12.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 88AA282B0C17720D0032DF53 /* libpng12.a */; }; | ||
432 | 9104C0CC0778AE0F001EC4F6 /* llpanelmsgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */; }; | 437 | 9104C0CC0778AE0F001EC4F6 /* llpanelmsgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */; }; |
433 | 910D255306484F1A0034E66F /* llvolumesliderctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */; }; | 438 | 910D255306484F1A0034E66F /* llvolumesliderctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */; }; |
434 | 9118669B07F4FAF700E3D5BC /* llmediaremotectrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */; }; | 439 | 9118669B07F4FAF700E3D5BC /* llmediaremotectrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */; }; |
@@ -1487,6 +1492,13 @@ | |||
1487 | 84401E2E0A13CC9A006720A5 /* llfloatergroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfloatergroupinvite.h; sourceTree = "<group>"; }; | 1492 | 84401E2E0A13CC9A006720A5 /* llfloatergroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfloatergroupinvite.h; sourceTree = "<group>"; }; |
1488 | 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelgroupinvite.cpp; sourceTree = "<group>"; }; | 1493 | 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelgroupinvite.cpp; sourceTree = "<group>"; }; |
1489 | 84401E310A13CCB2006720A5 /* llpanelgroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llpanelgroupinvite.h; sourceTree = "<group>"; }; | 1494 | 84401E310A13CCB2006720A5 /* llpanelgroupinvite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llpanelgroupinvite.h; sourceTree = "<group>"; }; |
1495 | 8833693B0C18AF33007F52DA /* llimagepng.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llimagepng.cpp; sourceTree = "<group>"; }; | ||
1496 | 8833693C0C18AF33007F52DA /* llpngwrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpngwrapper.cpp; sourceTree = "<group>"; }; | ||
1497 | 8833693D0C18AF33007F52DA /* llpngwrapper.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llpngwrapper.h; sourceTree = "<group>"; }; | ||
1498 | 8833693E0C18AF33007F52DA /* llimagepng.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llimagepng.h; sourceTree = "<group>"; }; | ||
1499 | 88A95BB10C14D5FC0027E363 /* llsrv.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llsrv.cpp; sourceTree = SOURCE_ROOT; }; | ||
1500 | 88A95BC90C14D92C0027E363 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = /usr/lib/libresolv.dylib; sourceTree = "<absolute>"; }; | ||
1501 | 88AA282B0C17720D0032DF53 /* libpng12.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libpng12.a; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
1490 | 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfirstuse.h; sourceTree = "<group>"; }; | 1502 | 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfirstuse.h; sourceTree = "<group>"; }; |
1491 | 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfirstuse.cpp; sourceTree = "<group>"; }; | 1503 | 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfirstuse.cpp; sourceTree = "<group>"; }; |
1492 | 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelmsgs.cpp; sourceTree = "<group>"; }; | 1504 | 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llpanelmsgs.cpp; sourceTree = "<group>"; }; |
@@ -2195,6 +2207,8 @@ | |||
2195 | 99F998FB0BAA34B90034E41C /* libopenjpeg.a in Frameworks */, | 2207 | 99F998FB0BAA34B90034E41C /* libopenjpeg.a in Frameworks */, |
2196 | 99F99A160BAA3D4C0034E41C /* AGL.framework in Frameworks */, | 2208 | 99F99A160BAA3D4C0034E41C /* AGL.framework in Frameworks */, |
2197 | 99F99A190BAA3D520034E41C /* OpenGL.framework in Frameworks */, | 2209 | 99F99A190BAA3D520034E41C /* OpenGL.framework in Frameworks */, |
2210 | 88A95BCA0C14D92C0027E363 /* libresolv.dylib in Frameworks */, | ||
2211 | 88AA282C0C17720D0032DF53 /* libpng12.a in Frameworks */, | ||
2198 | ); | 2212 | ); |
2199 | runOnlyForDeploymentPostprocessing = 0; | 2213 | runOnlyForDeploymentPostprocessing = 0; |
2200 | }; | 2214 | }; |
@@ -2338,230 +2352,156 @@ | |||
2338 | 26F529A0051F61CD00A80050 /* newview */ = { | 2352 | 26F529A0051F61CD00A80050 /* newview */ = { |
2339 | isa = PBXGroup; | 2353 | isa = PBXGroup; |
2340 | children = ( | 2354 | children = ( |
2341 | 1A83767C0BA2169600F28979 /* llviewergenericmessage.h */, | ||
2342 | 1A83767D0BA2169600F28979 /* llviewergenericmessage.cpp */, | ||
2343 | 9C18425A0B9F951500208356 /* llcaphttpsender.cpp */, | ||
2344 | 1A8870E30BCC5A9500E89AA6 /* llviewermenufile.h */, | ||
2345 | 1A8870E40BCC5A9500E89AA6 /* llviewermenufile.cpp */, | ||
2346 | A3C20E4B0BB0BD12007E872B /* llviewerjoystick.cpp */, | ||
2347 | A3C20E490BB0BCDF007E872B /* llglslshader.cpp */, | ||
2348 | AAF5FFD00B13F71900D28A84 /* lltexturecache.cpp */, | ||
2349 | AAF5FFD10B13F71900D28A84 /* lltexturecache.h */, | ||
2350 | AA02B9BA0B0CE44D00F2996D /* lltexturefetch.cpp */, | ||
2351 | AA02B9BB0B0CE44D00F2996D /* lltexturefetch.h */, | ||
2352 | C16C084E0B4AE6C7009AD67F /* llfloaterinspect.cpp */, | ||
2353 | C16C084F0B4AE6C7009AD67F /* llfloaterinspect.h */, | ||
2354 | C64F67400AFBED91009732B5 /* lldirpicker.cpp */, | ||
2355 | C64F67410AFBED91009732B5 /* lldirpicker.h */, | ||
2356 | C64F673D0AFBED80009732B5 /* lllogchat.cpp */, | ||
2357 | C64F673E0AFBED80009732B5 /* lllogchat.h */, | ||
2358 | 1AF7C1E30AF6C44800C4BF4A /* llweb.cpp */, | ||
2359 | FDCB55270AFBD4310033B433 /* lleventpoll.cpp */, | ||
2360 | FDCB55280AFBD4310033B433 /* lleventpoll.h */, | ||
2361 | FD59ED5D0AF2AF460086642A /* llassetuploadresponders.cpp */, | ||
2362 | FD59ED5E0AF2AF460086642A /* llassetuploadresponders.h */, | ||
2363 | 1A5104580ABF60BF00520F6D /* llviewerassetstorage.h */, | ||
2364 | 1A5104560ABF60A800520F6D /* llviewerassetstorage.cpp */, | ||
2365 | 1AF9CA460AE972DA003EFF2D /* llfloateravatartextures.cpp */, | ||
2366 | 1AD61F6A0AC09B1900507FB9 /* llimview.cpp */, | ||
2367 | A3285A3A0A71425100F619A5 /* llinventoryactions.cpp */, | ||
2368 | A3285A340A71419F00F619A5 /* llinventorybridge.cpp */, | ||
2369 | 1A5B3B540A70147000A90391 /* llfloaterbump.cpp */, | ||
2370 | 1A61A7EF0A5ED446009FE3D2 /* llfloateravatarpicker.cpp */, | ||
2371 | A3D968F00A6EBCA7007E8BD2 /* llfloaternewim.cpp */, | ||
2372 | A3AF6BCE0A544EF0005B5E2C /* llpanellogin.cpp */, | ||
2373 | 1A758C950A436FDE00589675 /* llpanellandoptions.cpp */, | ||
2374 | 1A758C930A436FD800589675 /* llpanellandobjects.cpp */, | ||
2375 | 1A758C910A436FCA00589675 /* llagentdata.cpp */, | ||
2376 | AAC121A30A93A8380080E8A9 /* llfloatersellland.cpp */, | ||
2377 | AAC121A40A93A8380080E8A9 /* llfloatersellland.h */, | ||
2378 | 9C1853AD0A91175E00DA7B01 /* llviewercontrol.cpp */, | ||
2379 | AA0E2A620A2FDB340066250A /* lltoolpipette.cpp */, | ||
2380 | AA0E2A630A2FDB340066250A /* lltoolpipette.h */, | ||
2381 | 1AFA40B40A2DFD7200C13F70 /* llsavedsettingsglue.cpp */, | ||
2382 | 1A8BF3780A1AAB99005B9D5A /* llfloatertest.cpp */, | ||
2383 | 1A3143E00A02B73D005B87E7 /* llprefschat.cpp */, | ||
2384 | 1A3143DE0A02B737005B87E7 /* llprefsim.cpp */, | ||
2385 | 1A3143D00A02B701005B87E7 /* llviewernetwork.cpp */, | ||
2386 | FD870C4F09EAC19700F5956C /* lldrawpoolclouds.h */, | ||
2387 | A3077BFB09DCB8140059ED75 /* lldrawpoolstars.cpp */, | ||
2388 | A3077BFC09DCB8140059ED75 /* lldrawpoolstars.h */, | ||
2389 | A3077BFF09DCB8140059ED75 /* llfloaterhtmlhelp.cpp */, | ||
2390 | A3077C0009DCB8140059ED75 /* llfloaterhtmlhelp.h */, | ||
2391 | 99C6BFA80A1BBD4800419AE7 /* llfloaterhtmlfind.h */, | ||
2392 | 99C6BFA90A1BBD4800419AE7 /* llfloaterhtmlfind.cpp */, | ||
2393 | A3077C0309DCB8140059ED75 /* llpanelvolume.cpp */, | ||
2394 | A3077C0409DCB8140059ED75 /* llpanelvolume.h */, | ||
2395 | A3077C0509DCB8140059ED75 /* llvostars.cpp */, | ||
2396 | A3077C0609DCB8140059ED75 /* llvostars.h */, | ||
2397 | 9CD49D5909D0BB1500192434 /* lllocalanimationobject.cpp */, | ||
2398 | 9CD49D5A09D0BB1500192434 /* lllocalanimationobject.h */, | ||
2399 | 9CD49D5809D0BAD600192434 /* llflexibleobject.h */, | ||
2400 | 9CD49D5609D0BAC100192434 /* llflexibleobject.cpp */, | ||
2401 | 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */, | ||
2402 | FD6C9A4209C75B8900AA1849 /* llfloatertopobjects.cpp */, | ||
2403 | 2EFEA8E809F4556F00CB0193 /* llgroupnotify.cpp */, | ||
2404 | 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */, | ||
2405 | 2EA4CEEC09F83AC2008F60F7 /* llpanelgrouproles.cpp */, | ||
2406 | 2EA4CEED09F83BE8008F60F7 /* llpanelgrouplandmoney.cpp */, | ||
2407 | FD6C9A4309C75B8900AA1849 /* llfloatertopobjects.h */, | ||
2408 | FD6C9A3409C75A8500AA1849 /* llfloaterpermissionsmgr.cpp */, | ||
2409 | 2E6FE90D09FD560A00AF02FF /* llpanelgroupnotices.cpp */, | ||
2410 | FD6C9A3509C75A8500AA1849 /* llfloaterpermissionsmgr.h */, | ||
2411 | FD6C9A2109C758BC00AA1849 /* llfloaterscriptdebug.cpp */, | ||
2412 | FD6C9A2209C758BC00AA1849 /* llfloaterscriptdebug.h */, | ||
2413 | FD6C9A2309C758BC00AA1849 /* llfloatertelehub.cpp */, | ||
2414 | 2EFEA8F009F4588B00CB0193 /* llpanelgroupgeneral.cpp */, | ||
2415 | FD6C9A2409C758BC00AA1849 /* llfloatertelehub.h */, | ||
2416 | FD6C9A2509C758BC00AA1849 /* llfollowcam.cpp */, | ||
2417 | FD6C9A2609C758BC00AA1849 /* llfollowcam.h */, | ||
2418 | FD6C9A2709C758BC00AA1849 /* llhudicon.cpp */, | ||
2419 | FD6C9A2809C758BC00AA1849 /* llhudicon.h */, | ||
2420 | 99E43515092D64E6003AE728 /* llvoinventorylistener.h */, | ||
2421 | 99E43516092D64E6003AE728 /* llvoinventorylistener.cpp */, | ||
2422 | 99E43512092D64CC003AE728 /* llmemoryview.h */, | ||
2423 | 99E43513092D64CC003AE728 /* llmemoryview.cpp */, | ||
2424 | 99E4350F092D64A4003AE728 /* llfloaterbuycurrency.cpp */, | ||
2425 | 99E43510092D64A4003AE728 /* llfloaterbuycurrency.h */, | ||
2426 | 99BB5166099ABDEB004BF9F2 /* llfloaterbuyland.cpp */, | ||
2427 | 99BB5167099ABDEB004BF9F2 /* llfloaterbuyland.h */, | ||
2428 | 99BB5169099AC1AE004BF9F2 /* llxmlrpctransaction.h */, | ||
2429 | 99BB516A099AC1AE004BF9F2 /* llxmlrpctransaction.cpp */, | ||
2430 | 99BB516D099AC1E9004BF9F2 /* llviewchildren.cpp */, | ||
2431 | 99BB516E099AC1E9004BF9F2 /* llviewchildren.h */, | ||
2432 | 99BB5170099AC1FC004BF9F2 /* llcurrencyuimanager.cpp */, | ||
2433 | 99BB5171099AC1FC004BF9F2 /* llcurrencyuimanager.h */, | ||
2434 | 99BB5174099AC2A4004BF9F2 /* llconfirmationmanager.cpp */, | ||
2435 | 99BB5175099AC2A4004BF9F2 /* llconfirmationmanager.h */, | ||
2436 | 1A89230608B12D2E00A04AA9 /* llfloateropenobject.cpp */, | ||
2437 | 1A89230708B12D2E00A04AA9 /* llfloateropenobject.h */, | ||
2438 | 1A89230308B12D1000A04AA9 /* llurlwhitelist.cpp */, | ||
2439 | 1A89230408B12D1000A04AA9 /* llurlwhitelist.h */, | ||
2440 | E224ACBC0874D6150039C1A6 /* llfloaterimport.cpp */, | ||
2441 | E224ACBD0874D6150039C1A6 /* llfloaterimport.h */, | ||
2442 | 1A47B8DD0860FDF100F73746 /* llpanelweb.h */, | ||
2443 | 1A47B8DE0860FDF100F73746 /* llpanelweb.cpp */, | ||
2444 | 1AE5D70F0844FBD200278605 /* llwebbrowserctrl.h */, | ||
2445 | 1AE5D7100844FBD300278605 /* llwebbrowserctrl.cpp */, | ||
2446 | EB3EE709083AC23D002BF676 /* lldynamictexture.h */, | ||
2447 | EB3EE70A083AC23D002BF676 /* llfloateranimpreview.h */, | ||
2448 | 1A9EC23A083EA01F0023D510 /* llfloatereditui.h */, | ||
2449 | 1A9EC236083EA0100023D510 /* llfloatereditui.cpp */, | ||
2450 | EB3EE70B083AC23D002BF676 /* llfloaterimagepreview.h */, | ||
2451 | EB3EE70C083AC23D002BF676 /* llgroupmgr.h */, | ||
2452 | EB3EE70D083AC23D002BF676 /* llpreviewanim.h */, | ||
2453 | EB3EE70F083AC23D002BF676 /* llviewercontrol.h */, | ||
2454 | EB3EE712083AC23D002BF676 /* llviewertexteditor.cpp */, | ||
2455 | EB3EE713083AC23D002BF676 /* llviewertexteditor.h */, | ||
2456 | EB3EE714083AC23D002BF676 /* llvieweruictrlfactory.cpp */, | ||
2457 | EB3EE715083AC23D002BF676 /* llvieweruictrlfactory.h */, | ||
2458 | EB3EE716083AC23D002BF676 /* llvolumesliderctrl.h */, | ||
2459 | 91A15600081EE8060089988C /* llfloaterhtml.h */, | ||
2460 | 91A155FE081EE7F70089988C /* llfloaterhtml.cpp */, | ||
2461 | 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */, | ||
2462 | 9118669A07F4FAF700E3D5BC /* llmediaremotectrl.h */, | ||
2463 | 91E86C3107BD3B3A00F56E75 /* llfloatersaveavatar.cpp */, | ||
2464 | A241CB7B07B3DE0D001A39E3 /* llviewerprecompiledheaders.cpp */, | ||
2465 | A241CB7C07B3DE0D001A39E3 /* llviewerprecompiledheaders.h */, | ||
2466 | 913AA1FC079855E900D111CE /* llfloaterfriends.cpp */, | ||
2467 | 91287B4A078DE4B300E958B2 /* llviewerkeyboard.cpp */, | ||
2468 | 91287B4B078DE4B300E958B2 /* llviewerkeyboard.h */, | ||
2469 | 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */, | ||
2470 | 911CAD92075BEAAC00CD1090 /* lltoolselect.cpp */, | ||
2471 | 911CAD8A075BE90600CD1090 /* llgroupmgr.cpp */, | ||
2472 | 911CAD86075BE87B00CD1090 /* llinventoryview.cpp */, | ||
2473 | 916724C407551DF600CA4513 /* llfloatercolorpicker.cpp */, | ||
2474 | 916724C207551DE400CA4513 /* llfloatercolorpicker.h */, | ||
2475 | 918166CA06516C59005727DC /* llaudiosourcevo.cpp */, | ||
2476 | 915F492806B5738A00F629BF /* lleventinfo.cpp */, | ||
2477 | 915F492006B572E700F629BF /* lleventnotifier.cpp */, | ||
2478 | 912541AD0691FF79008C66F7 /* llfasttimerview.cpp */, | ||
2479 | 91FC1C8706527F19009CF498 /* llpreviewanim.cpp */, | ||
2480 | 91DF401F06A739BA00CA7FE5 /* llstartup.cpp */, | ||
2481 | 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */, | ||
2482 | 91B9EB8206370586007B3F3E /* lldynamictexture.cpp */, | ||
2483 | 91F8BBAB062DF91A00DE42BA /* llgesturemgr.cpp */, | ||
2484 | 91F8BBA3062DF7AB00DE42BA /* llpreviewgesture.cpp */, | ||
2485 | 91E7BB2105EFCBA40026CC40 /* llviewerdisplay.cpp */, | ||
2486 | 019200F004DD7D2B00A800A7 /* macview_Prefix.h */, | ||
2487 | 26C5F3E605DB1E3C00994065 /* llfloaterpostcard.cpp */, | ||
2488 | 2613A6D905D843D80041A7A9 /* llfloatersnapshot.cpp */, | ||
2489 | 91D2527605C9C0620099BB54 /* llfloaterauction.cpp */, | ||
2490 | 9131094305C6D5A300A18084 /* llpanelpick.cpp */, | ||
2491 | 91E36BB705B4C70600C919E4 /* llpanelinput.cpp */, | ||
2492 | 26F52A9D051F61DF00A80050 /* head.cpp */, | 2355 | 26F52A9D051F61DF00A80050 /* head.cpp */, |
2493 | 26F52A41051F61DF00A80050 /* llagent.cpp */, | 2356 | 26F52A41051F61DF00A80050 /* llagent.cpp */, |
2357 | 1A758C910A436FCA00589675 /* llagentdata.cpp */, | ||
2494 | 26F52A5D051F61DF00A80050 /* llagentpilot.cpp */, | 2358 | 26F52A5D051F61DF00A80050 /* llagentpilot.cpp */, |
2359 | FD59ED5D0AF2AF460086642A /* llassetuploadresponders.cpp */, | ||
2360 | FD59ED5E0AF2AF460086642A /* llassetuploadresponders.h */, | ||
2495 | 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */, | 2361 | 26F52AB2051F61DF00A80050 /* llasynchostbyname.cpp */, |
2362 | 918166CA06516C59005727DC /* llaudiosourcevo.cpp */, | ||
2496 | 26F52AB3051F61DF00A80050 /* llaudiostatus.cpp */, | 2363 | 26F52AB3051F61DF00A80050 /* llaudiostatus.cpp */, |
2497 | 26F52A33051F61DF00A80050 /* llbbox.cpp */, | 2364 | 26F52A33051F61DF00A80050 /* llbbox.cpp */, |
2498 | 26F52ABF051F61DF00A80050 /* llbox.cpp */, | 2365 | 26F52ABF051F61DF00A80050 /* llbox.cpp */, |
2499 | 26F529F0051F61DF00A80050 /* llcallbacklist.cpp */, | 2366 | 26F529F0051F61DF00A80050 /* llcallbacklist.cpp */, |
2500 | 26F52A8C051F61DF00A80050 /* llcallingcard.cpp */, | 2367 | 26F52A8C051F61DF00A80050 /* llcallingcard.cpp */, |
2501 | 26F52AC5051F61DF00A80050 /* llcameraview.cpp */, | 2368 | 26F52AC5051F61DF00A80050 /* llcameraview.cpp */, |
2369 | 9C18425A0B9F951500208356 /* llcaphttpsender.cpp */, | ||
2370 | 91D530D2056EE57900CD1AD7 /* llchatbar.cpp */, | ||
2502 | 991ED2DF0883646B003EC818 /* llclassifiedinfo.cpp */, | 2371 | 991ED2DF0883646B003EC818 /* llclassifiedinfo.cpp */, |
2503 | 26F52A3B051F61DF00A80050 /* llcloud.cpp */, | 2372 | 26F52A3B051F61DF00A80050 /* llcloud.cpp */, |
2504 | 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */, | 2373 | 26F52AA9051F61DF00A80050 /* llcolorscheme.cpp */, |
2505 | 26F52A83051F61DF00A80050 /* llcolorswatch.cpp */, | 2374 | 26F52A83051F61DF00A80050 /* llcolorswatch.cpp */, |
2506 | 26F52AA8051F61DF00A80050 /* llcompass.cpp */, | 2375 | 26F52AA8051F61DF00A80050 /* llcompass.cpp */, |
2507 | 26F52AC6051F61DF00A80050 /* llcompilequeue.cpp */, | 2376 | 26F52AC6051F61DF00A80050 /* llcompilequeue.cpp */, |
2377 | 99BB5174099AC2A4004BF9F2 /* llconfirmationmanager.cpp */, | ||
2378 | 99BB5175099AC2A4004BF9F2 /* llconfirmationmanager.h */, | ||
2508 | 26F52A03051F61DF00A80050 /* llconsole.cpp */, | 2379 | 26F52A03051F61DF00A80050 /* llconsole.cpp */, |
2509 | 26F52A78051F61DF00A80050 /* llcontainerview.cpp */, | 2380 | 26F52A78051F61DF00A80050 /* llcontainerview.cpp */, |
2510 | 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */, | 2381 | 26F52A1B051F61DF00A80050 /* llcontroldef.cpp */, |
2511 | 26F52A1A051F61DF00A80050 /* llcountdown.cpp */, | 2382 | 26F52A1A051F61DF00A80050 /* llcountdown.cpp */, |
2512 | 26F52ACB051F61DF00A80050 /* llcubemap.cpp */, | 2383 | 26F52ACB051F61DF00A80050 /* llcubemap.cpp */, |
2384 | 99BB5170099AC1FC004BF9F2 /* llcurrencyuimanager.cpp */, | ||
2385 | 99BB5171099AC1FC004BF9F2 /* llcurrencyuimanager.h */, | ||
2513 | 26F52A86051F61DF00A80050 /* llcylinder.cpp */, | 2386 | 26F52A86051F61DF00A80050 /* llcylinder.cpp */, |
2514 | 26F52AA2051F61DF00A80050 /* lldebugview.cpp */, | 2387 | 26F52AA2051F61DF00A80050 /* lldebugview.cpp */, |
2388 | C64F67400AFBED91009732B5 /* lldirpicker.cpp */, | ||
2389 | C64F67410AFBED91009732B5 /* lldirpicker.h */, | ||
2515 | 26F52A64051F61DF00A80050 /* lldrawable.cpp */, | 2390 | 26F52A64051F61DF00A80050 /* lldrawable.cpp */, |
2516 | 26F52A2C051F61DF00A80050 /* lldrawpool.cpp */, | 2391 | 26F52A2C051F61DF00A80050 /* lldrawpool.cpp */, |
2517 | 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */, | 2392 | 26F52A26051F61DF00A80050 /* lldrawpoolalpha.cpp */, |
2518 | 26F52A5E051F61DF00A80050 /* lldrawpoolavatar.cpp */, | 2393 | 26F52A5E051F61DF00A80050 /* lldrawpoolavatar.cpp */, |
2519 | 26F52A53051F61DF00A80050 /* lldrawpoolbump.cpp */, | 2394 | 26F52A53051F61DF00A80050 /* lldrawpoolbump.cpp */, |
2395 | FD870C4F09EAC19700F5956C /* lldrawpoolclouds.h */, | ||
2520 | 26F52A95051F61DF00A80050 /* lldrawpoolground.cpp */, | 2396 | 26F52A95051F61DF00A80050 /* lldrawpoolground.cpp */, |
2521 | 26F52ACA051F61DF00A80050 /* lldrawpoolsimple.cpp */, | 2397 | 26F52ACA051F61DF00A80050 /* lldrawpoolsimple.cpp */, |
2522 | 26F52A14051F61DF00A80050 /* lldrawpoolsky.cpp */, | 2398 | 26F52A14051F61DF00A80050 /* lldrawpoolsky.cpp */, |
2399 | A3077BFB09DCB8140059ED75 /* lldrawpoolstars.cpp */, | ||
2400 | A3077BFC09DCB8140059ED75 /* lldrawpoolstars.h */, | ||
2523 | 26F529EF051F61DF00A80050 /* lldrawpoolterrain.cpp */, | 2401 | 26F529EF051F61DF00A80050 /* lldrawpoolterrain.cpp */, |
2524 | 26F52A7B051F61DF00A80050 /* lldrawpooltree.cpp */, | 2402 | 26F52A7B051F61DF00A80050 /* lldrawpooltree.cpp */, |
2525 | 26F52A3F051F61DF00A80050 /* lldrawpoolwater.cpp */, | 2403 | 26F52A3F051F61DF00A80050 /* lldrawpoolwater.cpp */, |
2526 | 26F52A84051F61DF00A80050 /* lldriverparam.cpp */, | 2404 | 26F52A84051F61DF00A80050 /* lldriverparam.cpp */, |
2405 | 91B9EB8206370586007B3F3E /* lldynamictexture.cpp */, | ||
2406 | EB3EE709083AC23D002BF676 /* lldynamictexture.h */, | ||
2527 | 26F52A62051F61DF00A80050 /* llemote.cpp */, | 2407 | 26F52A62051F61DF00A80050 /* llemote.cpp */, |
2408 | 915F492806B5738A00F629BF /* lleventinfo.cpp */, | ||
2409 | 915F492006B572E700F629BF /* lleventnotifier.cpp */, | ||
2410 | FDCB55270AFBD4310033B433 /* lleventpoll.cpp */, | ||
2411 | FDCB55280AFBD4310033B433 /* lleventpoll.h */, | ||
2528 | 26F52A3A051F61DF00A80050 /* llface.cpp */, | 2412 | 26F52A3A051F61DF00A80050 /* llface.cpp */, |
2413 | 912541AD0691FF79008C66F7 /* llfasttimerview.cpp */, | ||
2529 | 263E02FE05239C9A00A80050 /* llfeaturemanager.cpp */, | 2414 | 263E02FE05239C9A00A80050 /* llfeaturemanager.cpp */, |
2530 | 26F52AAC051F61DF00A80050 /* llfft.cpp */, | 2415 | 26F52AAC051F61DF00A80050 /* llfft.cpp */, |
2531 | 26F52AD3051F61DF00A80050 /* llfilepicker.cpp */, | 2416 | 26F52AD3051F61DF00A80050 /* llfilepicker.cpp */, |
2417 | 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */, | ||
2532 | 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */, | 2418 | 8B2ECF9E0534C17A00A80059 /* llfirstuse.h */, |
2419 | 9CD49D5609D0BAC100192434 /* llflexibleobject.cpp */, | ||
2420 | 9CD49D5809D0BAD600192434 /* llflexibleobject.h */, | ||
2533 | 26F52A82051F61DF00A80050 /* llfloaterabout.cpp */, | 2421 | 26F52A82051F61DF00A80050 /* llfloaterabout.cpp */, |
2534 | 916083920649560B00CAF63E /* llfloateranimpreview.cpp */, | 2422 | 916083920649560B00CAF63E /* llfloateranimpreview.cpp */, |
2423 | EB3EE70A083AC23D002BF676 /* llfloateranimpreview.h */, | ||
2424 | 91D2527605C9C0620099BB54 /* llfloaterauction.cpp */, | ||
2535 | 26F52A8B051F61DF00A80050 /* llfloateravatarinfo.cpp */, | 2425 | 26F52A8B051F61DF00A80050 /* llfloateravatarinfo.cpp */, |
2426 | 1A61A7EF0A5ED446009FE3D2 /* llfloateravatarpicker.cpp */, | ||
2427 | 1AF9CA460AE972DA003EFF2D /* llfloateravatartextures.cpp */, | ||
2536 | 26F52A05051F61DF00A80050 /* llfloaterbuildoptions.cpp */, | 2428 | 26F52A05051F61DF00A80050 /* llfloaterbuildoptions.cpp */, |
2429 | 1A5B3B540A70147000A90391 /* llfloaterbump.cpp */, | ||
2537 | 26F52AB6051F61DF00A80050 /* llfloaterbuy.cpp */, | 2430 | 26F52AB6051F61DF00A80050 /* llfloaterbuy.cpp */, |
2431 | 9130442A057428D800571B0A /* llfloaterbuycontents.cpp */, | ||
2432 | 99E4350F092D64A4003AE728 /* llfloaterbuycurrency.cpp */, | ||
2433 | 99E43510092D64A4003AE728 /* llfloaterbuycurrency.h */, | ||
2434 | 99BB5166099ABDEB004BF9F2 /* llfloaterbuyland.cpp */, | ||
2435 | 99BB5167099ABDEB004BF9F2 /* llfloaterbuyland.h */, | ||
2538 | 26F52A02051F61DF00A80050 /* llfloaterchat.cpp */, | 2436 | 26F52A02051F61DF00A80050 /* llfloaterchat.cpp */, |
2539 | 91CB311506FB584C00DBCE1E /* llfloaterclothing.cpp */, | 2437 | 91CB311506FB584C00DBCE1E /* llfloaterclothing.cpp */, |
2438 | 916724C407551DF600CA4513 /* llfloatercolorpicker.cpp */, | ||
2439 | 916724C207551DE400CA4513 /* llfloatercolorpicker.h */, | ||
2540 | 26F52A34051F61DF00A80050 /* llfloatercustomize.cpp */, | 2440 | 26F52A34051F61DF00A80050 /* llfloatercustomize.cpp */, |
2541 | 26F52A56051F61DF00A80050 /* llfloaterdirectory.cpp */, | 2441 | 26F52A56051F61DF00A80050 /* llfloaterdirectory.cpp */, |
2442 | 1A9EC236083EA0100023D510 /* llfloatereditui.cpp */, | ||
2443 | 1A9EC23A083EA01F0023D510 /* llfloatereditui.h */, | ||
2444 | 913AA1FC079855E900D111CE /* llfloaterfriends.cpp */, | ||
2542 | 26F52A63051F61DF00A80050 /* llfloatergesture.cpp */, | 2445 | 26F52A63051F61DF00A80050 /* llfloatergesture.cpp */, |
2446 | 91C8C05405922AC100633E8C /* llfloatergodtools.cpp */, | ||
2543 | 26F52A71051F61DF00A80050 /* llfloatergroupinfo.cpp */, | 2447 | 26F52A71051F61DF00A80050 /* llfloatergroupinfo.cpp */, |
2448 | 84401E2D0A13CC9A006720A5 /* llfloatergroupinvite.cpp */, | ||
2544 | 26F52A7E051F61DF00A80050 /* llfloatergroups.cpp */, | 2449 | 26F52A7E051F61DF00A80050 /* llfloatergroups.cpp */, |
2450 | 91A155FE081EE7F70089988C /* llfloaterhtml.cpp */, | ||
2451 | 91A15600081EE8060089988C /* llfloaterhtml.h */, | ||
2452 | 99C6BFA90A1BBD4800419AE7 /* llfloaterhtmlfind.cpp */, | ||
2453 | 99C6BFA80A1BBD4800419AE7 /* llfloaterhtmlfind.h */, | ||
2454 | A3077BFF09DCB8140059ED75 /* llfloaterhtmlhelp.cpp */, | ||
2455 | A3077C0009DCB8140059ED75 /* llfloaterhtmlhelp.h */, | ||
2545 | 91B9EC4C06370E4D007B3F3E /* llfloaterimagepreview.cpp */, | 2456 | 91B9EC4C06370E4D007B3F3E /* llfloaterimagepreview.cpp */, |
2457 | EB3EE70B083AC23D002BF676 /* llfloaterimagepreview.h */, | ||
2458 | E224ACBC0874D6150039C1A6 /* llfloaterimport.cpp */, | ||
2459 | E224ACBD0874D6150039C1A6 /* llfloaterimport.h */, | ||
2460 | C16C084E0B4AE6C7009AD67F /* llfloaterinspect.cpp */, | ||
2461 | C16C084F0B4AE6C7009AD67F /* llfloaterinspect.h */, | ||
2546 | 26F52A17051F61DF00A80050 /* llfloaterland.cpp */, | 2462 | 26F52A17051F61DF00A80050 /* llfloaterland.cpp */, |
2547 | 99EDDF5B05892E720031B20D /* llfloaterlandholdings.cpp */, | 2463 | 99EDDF5B05892E720031B20D /* llfloaterlandholdings.cpp */, |
2548 | 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */, | 2464 | 26F52AAD051F61DF00A80050 /* llfloatermap.cpp */, |
2549 | 26F52A66051F61DF00A80050 /* llfloatermute.cpp */, | 2465 | 26F52A66051F61DF00A80050 /* llfloatermute.cpp */, |
2550 | 26F52A9F051F61DF00A80050 /* llfloaternamedesc.cpp */, | 2466 | 26F52A9F051F61DF00A80050 /* llfloaternamedesc.cpp */, |
2467 | A3D968F00A6EBCA7007E8BD2 /* llfloaternewim.cpp */, | ||
2468 | 1A89230608B12D2E00A04AA9 /* llfloateropenobject.cpp */, | ||
2469 | 1A89230708B12D2E00A04AA9 /* llfloateropenobject.h */, | ||
2470 | FD6C9A3409C75A8500AA1849 /* llfloaterpermissionsmgr.cpp */, | ||
2471 | FD6C9A3509C75A8500AA1849 /* llfloaterpermissionsmgr.h */, | ||
2472 | 26C5F3E605DB1E3C00994065 /* llfloaterpostcard.cpp */, | ||
2551 | 26F52A6B051F61DF00A80050 /* llfloaterpreference.cpp */, | 2473 | 26F52A6B051F61DF00A80050 /* llfloaterpreference.cpp */, |
2552 | 26F52A5B051F61DF00A80050 /* llfloaterproperties.cpp */, | 2474 | 26F52A5B051F61DF00A80050 /* llfloaterproperties.cpp */, |
2553 | 26F52A7C051F61DF00A80050 /* llfloaterrate.cpp */, | 2475 | 26F52A7C051F61DF00A80050 /* llfloaterrate.cpp */, |
2554 | 9174D2C00653FC2600A7E32B /* llfloaterregioninfo.cpp */, | 2476 | 9174D2C00653FC2600A7E32B /* llfloaterregioninfo.cpp */, |
2555 | 26F52AC2051F61DF00A80050 /* llfloaterreporter.cpp */, | 2477 | 26F52AC2051F61DF00A80050 /* llfloaterreporter.cpp */, |
2478 | 91E86C3107BD3B3A00F56E75 /* llfloatersaveavatar.cpp */, | ||
2479 | FD6C9A2109C758BC00AA1849 /* llfloaterscriptdebug.cpp */, | ||
2480 | FD6C9A2209C758BC00AA1849 /* llfloaterscriptdebug.h */, | ||
2481 | AAC121A30A93A8380080E8A9 /* llfloatersellland.cpp */, | ||
2482 | AAC121A40A93A8380080E8A9 /* llfloatersellland.h */, | ||
2483 | 2613A6D905D843D80041A7A9 /* llfloatersnapshot.cpp */, | ||
2484 | FD6C9A2309C758BC00AA1849 /* llfloatertelehub.cpp */, | ||
2485 | FD6C9A2409C758BC00AA1849 /* llfloatertelehub.h */, | ||
2486 | 1A8BF3780A1AAB99005B9D5A /* llfloatertest.cpp */, | ||
2556 | 26F52A8F051F61DF00A80050 /* llfloatertools.cpp */, | 2487 | 26F52A8F051F61DF00A80050 /* llfloatertools.cpp */, |
2488 | FD6C9A4209C75B8900AA1849 /* llfloatertopobjects.cpp */, | ||
2489 | FD6C9A4309C75B8900AA1849 /* llfloatertopobjects.h */, | ||
2557 | 26F52A8E051F61DF00A80050 /* llfloatertos.cpp */, | 2490 | 26F52A8E051F61DF00A80050 /* llfloatertos.cpp */, |
2558 | 26F52A69051F61DF00A80050 /* llfloaterworldmap.cpp */, | 2491 | 26F52A69051F61DF00A80050 /* llfloaterworldmap.cpp */, |
2559 | 26F52AA5051F61DF00A80050 /* llfolderview.cpp */, | 2492 | 26F52AA5051F61DF00A80050 /* llfolderview.cpp */, |
2493 | FD6C9A2509C758BC00AA1849 /* llfollowcam.cpp */, | ||
2494 | FD6C9A2609C758BC00AA1849 /* llfollowcam.h */, | ||
2560 | 26F52A1F051F61DF00A80050 /* llframestats.cpp */, | 2495 | 26F52A1F051F61DF00A80050 /* llframestats.cpp */, |
2561 | 26F52A1E051F61DF00A80050 /* llframestatview.cpp */, | 2496 | 26F52A1E051F61DF00A80050 /* llframestatview.cpp */, |
2562 | 26F529A1051F61DF00A80050 /* llgenepool.cpp */, | 2497 | 26F529A1051F61DF00A80050 /* llgenepool.cpp */, |
2498 | 91F8BBAB062DF91A00DE42BA /* llgesturemgr.cpp */, | ||
2563 | 26F52AA7051F61DF00A80050 /* llgivemoney.cpp */, | 2499 | 26F52AA7051F61DF00A80050 /* llgivemoney.cpp */, |
2564 | 26F52AA6051F61DF00A80050 /* llglsandbox.cpp */, | 2500 | 26F52AA6051F61DF00A80050 /* llglsandbox.cpp */, |
2501 | A3C20E490BB0BCDF007E872B /* llglslshader.cpp */, | ||
2502 | 911CAD8A075BE90600CD1090 /* llgroupmgr.cpp */, | ||
2503 | EB3EE70C083AC23D002BF676 /* llgroupmgr.h */, | ||
2504 | 2EFEA8E809F4556F00CB0193 /* llgroupnotify.cpp */, | ||
2565 | 26F52A87051F61DF00A80050 /* llhippo.cpp */, | 2505 | 26F52A87051F61DF00A80050 /* llhippo.cpp */, |
2566 | 26F52A85051F61DF00A80050 /* llhoverview.cpp */, | 2506 | 26F52A85051F61DF00A80050 /* llhoverview.cpp */, |
2567 | 26F52A52051F61DF00A80050 /* llhudconnector.cpp */, | 2507 | 26F52A52051F61DF00A80050 /* llhudconnector.cpp */, |
@@ -2570,20 +2510,35 @@ | |||
2570 | 26F52ADB051F61DF00A80050 /* llhudeffectlookat.cpp */, | 2510 | 26F52ADB051F61DF00A80050 /* llhudeffectlookat.cpp */, |
2571 | 26F52ADA051F61DF00A80050 /* llhudeffectpointat.cpp */, | 2511 | 26F52ADA051F61DF00A80050 /* llhudeffectpointat.cpp */, |
2572 | 26F52A65051F61DF00A80050 /* llhudeffecttrail.cpp */, | 2512 | 26F52A65051F61DF00A80050 /* llhudeffecttrail.cpp */, |
2513 | FD6C9A2709C758BC00AA1849 /* llhudicon.cpp */, | ||
2514 | FD6C9A2809C758BC00AA1849 /* llhudicon.h */, | ||
2573 | 26F52A25051F61DF00A80050 /* llhudmanager.cpp */, | 2515 | 26F52A25051F61DF00A80050 /* llhudmanager.cpp */, |
2574 | 26F52A24051F61DF00A80050 /* llhudobject.cpp */, | 2516 | 26F52A24051F61DF00A80050 /* llhudobject.cpp */, |
2575 | 26F52A5C051F61DF00A80050 /* llhudrender.cpp */, | 2517 | 26F52A5C051F61DF00A80050 /* llhudrender.cpp */, |
2576 | 26F52A3E051F61DF00A80050 /* llhudtext.cpp */, | 2518 | 26F52A3E051F61DF00A80050 /* llhudtext.cpp */, |
2577 | 26F52A3D051F61DF00A80050 /* llhudview.cpp */, | 2519 | 26F52A3D051F61DF00A80050 /* llhudview.cpp */, |
2578 | 26F52AD6051F61DF00A80050 /* llimpanel.cpp */, | 2520 | 26F52AD6051F61DF00A80050 /* llimpanel.cpp */, |
2521 | 1AD61F6A0AC09B1900507FB9 /* llimview.cpp */, | ||
2522 | A3285A3A0A71425100F619A5 /* llinventoryactions.cpp */, | ||
2523 | A3285A340A71419F00F619A5 /* llinventorybridge.cpp */, | ||
2579 | 26F52A57051F61DF00A80050 /* llinventoryclipboard.cpp */, | 2524 | 26F52A57051F61DF00A80050 /* llinventoryclipboard.cpp */, |
2580 | 26F529F8051F61DF00A80050 /* llinventorymodel.cpp */, | 2525 | 26F529F8051F61DF00A80050 /* llinventorymodel.cpp */, |
2526 | 911CAD86075BE87B00CD1090 /* llinventoryview.cpp */, | ||
2581 | 26F52ACC051F61DF00A80050 /* lljoystickbutton.cpp */, | 2527 | 26F52ACC051F61DF00A80050 /* lljoystickbutton.cpp */, |
2582 | 26F52A04051F61DF00A80050 /* lllandmarklist.cpp */, | 2528 | 26F52A04051F61DF00A80050 /* lllandmarklist.cpp */, |
2529 | 9CD49D5909D0BB1500192434 /* lllocalanimationobject.cpp */, | ||
2530 | 9CD49D5A09D0BB1500192434 /* lllocalanimationobject.h */, | ||
2531 | C64F673D0AFBED80009732B5 /* lllogchat.cpp */, | ||
2532 | C64F673E0AFBED80009732B5 /* lllogchat.h */, | ||
2583 | 26F529A9051F61DF00A80050 /* llmanip.cpp */, | 2533 | 26F529A9051F61DF00A80050 /* llmanip.cpp */, |
2584 | 26F52A40051F61DF00A80050 /* llmaniprotate.cpp */, | 2534 | 26F52A40051F61DF00A80050 /* llmaniprotate.cpp */, |
2585 | 26F52A9B051F61DF00A80050 /* llmanipscale.cpp */, | 2535 | 26F52A9B051F61DF00A80050 /* llmanipscale.cpp */, |
2586 | 26F52A9A051F61DF00A80050 /* llmaniptranslate.cpp */, | 2536 | 26F52A9A051F61DF00A80050 /* llmaniptranslate.cpp */, |
2537 | E34C14730AE6A3F0009BF4DE /* llmapresponders.cpp */, | ||
2538 | 9118669907F4FAF700E3D5BC /* llmediaremotectrl.cpp */, | ||
2539 | 9118669A07F4FAF700E3D5BC /* llmediaremotectrl.h */, | ||
2540 | 99E43513092D64CC003AE728 /* llmemoryview.cpp */, | ||
2541 | 99E43512092D64CC003AE728 /* llmemoryview.h */, | ||
2587 | 26F52AD8051F61DF00A80050 /* llmenucommands.cpp */, | 2542 | 26F52AD8051F61DF00A80050 /* llmenucommands.cpp */, |
2588 | 26F52A67051F61DF00A80050 /* llmorphview.cpp */, | 2543 | 26F52A67051F61DF00A80050 /* llmorphview.cpp */, |
2589 | 26F52AAB051F61DF00A80050 /* llmoveview.cpp */, | 2544 | 26F52AAB051F61DF00A80050 /* llmoveview.cpp */, |
@@ -2592,6 +2547,8 @@ | |||
2592 | 2617306405221AB700A80050 /* llnameeditor.cpp */, | 2547 | 2617306405221AB700A80050 /* llnameeditor.cpp */, |
2593 | 26F52A98051F61DF00A80050 /* llnamelistctrl.cpp */, | 2548 | 26F52A98051F61DF00A80050 /* llnamelistctrl.cpp */, |
2594 | 26F52A97051F61DF00A80050 /* llnetmap.cpp */, | 2549 | 26F52A97051F61DF00A80050 /* llnetmap.cpp */, |
2550 | 91D61FD0057ED9DF005B4B69 /* llnotify.cpp */, | ||
2551 | 91D530CE056EE55C00CD1AD7 /* lloverlaybar.cpp */, | ||
2595 | 26F52AB5051F61DF00A80050 /* llpanelaudioprefs.cpp */, | 2552 | 26F52AB5051F61DF00A80050 /* llpanelaudioprefs.cpp */, |
2596 | 26F52AB4051F61DF00A80050 /* llpanelavatar.cpp */, | 2553 | 26F52AB4051F61DF00A80050 /* llpanelavatar.cpp */, |
2597 | 99FBB044087362B60048A5CC /* llpanelclassified.cpp */, | 2554 | 99FBB044087362B60048A5CC /* llpanelclassified.cpp */, |
@@ -2606,23 +2563,43 @@ | |||
2606 | 26F52AA4051F61DF00A80050 /* llpaneldirpeople.cpp */, | 2563 | 26F52AA4051F61DF00A80050 /* llpaneldirpeople.cpp */, |
2607 | 26F52AA3051F61DF00A80050 /* llpaneldirplaces.cpp */, | 2564 | 26F52AA3051F61DF00A80050 /* llpaneldirplaces.cpp */, |
2608 | 9900330005EC0ADD0035CB09 /* llpaneldirpopular.cpp */, | 2565 | 9900330005EC0ADD0035CB09 /* llpaneldirpopular.cpp */, |
2609 | 2EFEA8EB09F455B900CB0193 /* llpanelgroup.cpp */, | ||
2610 | 26F52A47051F61DF00A80050 /* llpaneldisplay.cpp */, | 2566 | 26F52A47051F61DF00A80050 /* llpaneldisplay.cpp */, |
2611 | 26F52A19051F61DF00A80050 /* llpanelevent.cpp */, | 2567 | 26F52A19051F61DF00A80050 /* llpanelevent.cpp */, |
2612 | 26F52A18051F61DF00A80050 /* llpanelface.cpp */, | 2568 | 26F52A18051F61DF00A80050 /* llpanelface.cpp */, |
2613 | 26F529FD051F61DF00A80050 /* llpanelgeneral.cpp */, | 2569 | 26F529FD051F61DF00A80050 /* llpanelgeneral.cpp */, |
2570 | 2EFEA8EB09F455B900CB0193 /* llpanelgroup.cpp */, | ||
2571 | 2EFEA8F009F4588B00CB0193 /* llpanelgroupgeneral.cpp */, | ||
2572 | 84401E300A13CCB2006720A5 /* llpanelgroupinvite.cpp */, | ||
2573 | 2EA4CEED09F83BE8008F60F7 /* llpanelgrouplandmoney.cpp */, | ||
2574 | 2E6FE90D09FD560A00AF02FF /* llpanelgroupnotices.cpp */, | ||
2575 | 2EA4CEEC09F83AC2008F60F7 /* llpanelgrouproles.cpp */, | ||
2614 | 26F52AC7051F61DF00A80050 /* llpanelgroupvoting.cpp */, | 2576 | 26F52AC7051F61DF00A80050 /* llpanelgroupvoting.cpp */, |
2577 | 91E36BB705B4C70600C919E4 /* llpanelinput.cpp */, | ||
2615 | 26F529EE051F61DF00A80050 /* llpanelinventory.cpp */, | 2578 | 26F529EE051F61DF00A80050 /* llpanelinventory.cpp */, |
2616 | 26F529ED051F61DF00A80050 /* llpanelland.cpp */, | 2579 | 26F529ED051F61DF00A80050 /* llpanelland.cpp */, |
2580 | 1A758C930A436FD800589675 /* llpanellandobjects.cpp */, | ||
2581 | 1A758C950A436FDE00589675 /* llpanellandoptions.cpp */, | ||
2582 | A3AF6BCE0A544EF0005B5E2C /* llpanellogin.cpp */, | ||
2617 | 26F52A5A051F61DF00A80050 /* llpanelmorph.cpp */, | 2583 | 26F52A5A051F61DF00A80050 /* llpanelmorph.cpp */, |
2584 | 9104C0CB0778AE0F001EC4F6 /* llpanelmsgs.cpp */, | ||
2618 | 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */, | 2585 | 26F52A2B051F61DF00A80050 /* llpanelnetwork.cpp */, |
2619 | 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */, | 2586 | 26F52A2A051F61DF00A80050 /* llpanelobject.cpp */, |
2620 | 26F52AA1051F61DF00A80050 /* llpanelpermissions.cpp */, | 2587 | 26F52AA1051F61DF00A80050 /* llpanelpermissions.cpp */, |
2588 | 9131094305C6D5A300A18084 /* llpanelpick.cpp */, | ||
2621 | 26F52AA0051F61DF00A80050 /* llpanelplace.cpp */, | 2589 | 26F52AA0051F61DF00A80050 /* llpanelplace.cpp */, |
2590 | A3077C0309DCB8140059ED75 /* llpanelvolume.cpp */, | ||
2591 | A3077C0409DCB8140059ED75 /* llpanelvolume.h */, | ||
2592 | 1A47B8DE0860FDF100F73746 /* llpanelweb.cpp */, | ||
2593 | 1A47B8DD0860FDF100F73746 /* llpanelweb.h */, | ||
2622 | 26F52A5F051F61DF00A80050 /* llpatchvertexarray.cpp */, | 2594 | 26F52A5F051F61DF00A80050 /* llpatchvertexarray.cpp */, |
2623 | 26F529F3051F61DF00A80050 /* llpolymesh.cpp */, | 2595 | 26F529F3051F61DF00A80050 /* llpolymesh.cpp */, |
2624 | 26F529F2051F61DF00A80050 /* llpolymorph.cpp */, | 2596 | 26F529F2051F61DF00A80050 /* llpolymorph.cpp */, |
2597 | 1A3143E00A02B73D005B87E7 /* llprefschat.cpp */, | ||
2598 | 1A3143DE0A02B737005B87E7 /* llprefsim.cpp */, | ||
2625 | 26F52ABD051F61DF00A80050 /* llpreview.cpp */, | 2599 | 26F52ABD051F61DF00A80050 /* llpreview.cpp */, |
2600 | 91FC1C8706527F19009CF498 /* llpreviewanim.cpp */, | ||
2601 | EB3EE70D083AC23D002BF676 /* llpreviewanim.h */, | ||
2602 | 91F8BBA3062DF7AB00DE42BA /* llpreviewgesture.cpp */, | ||
2626 | 26F52ABC051F61DF00A80050 /* llpreviewlandmark.cpp */, | 2603 | 26F52ABC051F61DF00A80050 /* llpreviewlandmark.cpp */, |
2627 | 26F52A73051F61DF00A80050 /* llpreviewnotecard.cpp */, | 2604 | 26F52A73051F61DF00A80050 /* llpreviewnotecard.cpp */, |
2628 | 26F52A72051F61DF00A80050 /* llpreviewscript.cpp */, | 2605 | 26F52A72051F61DF00A80050 /* llpreviewscript.cpp */, |
@@ -2631,11 +2608,14 @@ | |||
2631 | 26F52AD5051F61DF00A80050 /* llprogressview.cpp */, | 2608 | 26F52AD5051F61DF00A80050 /* llprogressview.cpp */, |
2632 | 26F52AAF051F61DF00A80050 /* llregionposition.cpp */, | 2609 | 26F52AAF051F61DF00A80050 /* llregionposition.cpp */, |
2633 | 26F52A22051F61DF00A80050 /* llroam.cpp */, | 2610 | 26F52A22051F61DF00A80050 /* llroam.cpp */, |
2611 | 1AFA40B40A2DFD7200C13F70 /* llsavedsettingsglue.cpp */, | ||
2634 | 26F52AD2051F61DF00A80050 /* llselectmgr.cpp */, | 2612 | 26F52AD2051F61DF00A80050 /* llselectmgr.cpp */, |
2635 | 26F52AD1051F61DF00A80050 /* llsky.cpp */, | 2613 | 26F52AD1051F61DF00A80050 /* llsky.cpp */, |
2636 | 26F529EB051F61DF00A80050 /* llspatialpartition.cpp */, | 2614 | 26F529EB051F61DF00A80050 /* llspatialpartition.cpp */, |
2637 | 26F529E7051F61DF00A80050 /* llsphere.cpp */, | 2615 | 26F529E7051F61DF00A80050 /* llsphere.cpp */, |
2638 | 26F529E5051F61DF00A80050 /* llsprite.cpp */, | 2616 | 26F529E5051F61DF00A80050 /* llsprite.cpp */, |
2617 | 88A95BB10C14D5FC0027E363 /* llsrv.cpp */, | ||
2618 | 91DF401F06A739BA00CA7FE5 /* llstartup.cpp */, | ||
2639 | 26F529B3051F61DF00A80050 /* llstatbar.cpp */, | 2619 | 26F529B3051F61DF00A80050 /* llstatbar.cpp */, |
2640 | 26F529B2051F61DF00A80050 /* llstatgraph.cpp */, | 2620 | 26F529B2051F61DF00A80050 /* llstatgraph.cpp */, |
2641 | 26F52A94051F61DF00A80050 /* llstatusbar.cpp */, | 2621 | 26F52A94051F61DF00A80050 /* llstatusbar.cpp */, |
@@ -2643,7 +2623,11 @@ | |||
2643 | 26F52A43051F61DF00A80050 /* llsurface.cpp */, | 2623 | 26F52A43051F61DF00A80050 /* llsurface.cpp */, |
2644 | 26F52A42051F61DF00A80050 /* llsurfacepatch.cpp */, | 2624 | 26F52A42051F61DF00A80050 /* llsurfacepatch.cpp */, |
2645 | 26F52AB8051F61DF00A80050 /* lltexlayer.cpp */, | 2625 | 26F52AB8051F61DF00A80050 /* lltexlayer.cpp */, |
2626 | AAF5FFD00B13F71900D28A84 /* lltexturecache.cpp */, | ||
2627 | AAF5FFD10B13F71900D28A84 /* lltexturecache.h */, | ||
2646 | 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */, | 2628 | 26F52A28051F61DF00A80050 /* lltexturectrl.cpp */, |
2629 | AA02B9BA0B0CE44D00F2996D /* lltexturefetch.cpp */, | ||
2630 | AA02B9BB0B0CE44D00F2996D /* lltexturefetch.h */, | ||
2647 | 26F52A27051F61DF00A80050 /* lltexturetable.cpp */, | 2631 | 26F52A27051F61DF00A80050 /* lltexturetable.cpp */, |
2648 | 26F529F6051F61DF00A80050 /* lltextureview.cpp */, | 2632 | 26F529F6051F61DF00A80050 /* lltextureview.cpp */, |
2649 | 26F529F5051F61DF00A80050 /* lltool.cpp */, | 2633 | 26F529F5051F61DF00A80050 /* lltool.cpp */, |
@@ -2660,16 +2644,30 @@ | |||
2660 | 26F52A6E051F61DF00A80050 /* lltoolmorph.cpp */, | 2644 | 26F52A6E051F61DF00A80050 /* lltoolmorph.cpp */, |
2661 | 26F52A6D051F61DF00A80050 /* lltoolobjpicker.cpp */, | 2645 | 26F52A6D051F61DF00A80050 /* lltoolobjpicker.cpp */, |
2662 | 26F529AE051F61DF00A80050 /* lltoolpie.cpp */, | 2646 | 26F529AE051F61DF00A80050 /* lltoolpie.cpp */, |
2647 | AA0E2A620A2FDB340066250A /* lltoolpipette.cpp */, | ||
2648 | AA0E2A630A2FDB340066250A /* lltoolpipette.h */, | ||
2663 | 26F529AD051F61DF00A80050 /* lltoolplacer.cpp */, | 2649 | 26F529AD051F61DF00A80050 /* lltoolplacer.cpp */, |
2650 | 911CAD92075BEAAC00CD1090 /* lltoolselect.cpp */, | ||
2664 | 26F529FC051F61DF00A80050 /* lltoolselectland.cpp */, | 2651 | 26F529FC051F61DF00A80050 /* lltoolselectland.cpp */, |
2665 | 26F529FB051F61DF00A80050 /* lltoolselectrect.cpp */, | 2652 | 26F529FB051F61DF00A80050 /* lltoolselectrect.cpp */, |
2666 | 26F529FA051F61DF00A80050 /* lltoolview.cpp */, | 2653 | 26F529FA051F61DF00A80050 /* lltoolview.cpp */, |
2667 | 26F52A4E051F61DF00A80050 /* lltracker.cpp */, | 2654 | 26F52A4E051F61DF00A80050 /* lltracker.cpp */, |
2668 | 26F52A0E051F61DF00A80050 /* lluploaddialog.cpp */, | 2655 | 26F52A0E051F61DF00A80050 /* lluploaddialog.cpp */, |
2669 | 26F52A0D051F61DF00A80050 /* llurl.cpp */, | 2656 | 26F52A0D051F61DF00A80050 /* llurl.cpp */, |
2657 | 1A89230308B12D1000A04AA9 /* llurlwhitelist.cpp */, | ||
2658 | 1A89230408B12D1000A04AA9 /* llurlwhitelist.h */, | ||
2670 | 26F52A0C051F61DF00A80050 /* lluserauth.cpp */, | 2659 | 26F52A0C051F61DF00A80050 /* lluserauth.cpp */, |
2671 | 26F529A5051F61DF00A80050 /* llvelocitybar.cpp */, | 2660 | 26F529A5051F61DF00A80050 /* llvelocitybar.cpp */, |
2661 | 99BB516D099AC1E9004BF9F2 /* llviewchildren.cpp */, | ||
2662 | 99BB516E099AC1E9004BF9F2 /* llviewchildren.h */, | ||
2663 | 1A5104560ABF60A800520F6D /* llviewerassetstorage.cpp */, | ||
2664 | 1A5104580ABF60BF00520F6D /* llviewerassetstorage.h */, | ||
2672 | 26F529A2051F61DF00A80050 /* llviewercamera.cpp */, | 2665 | 26F529A2051F61DF00A80050 /* llviewercamera.cpp */, |
2666 | 9C1853AD0A91175E00DA7B01 /* llviewercontrol.cpp */, | ||
2667 | EB3EE70F083AC23D002BF676 /* llviewercontrol.h */, | ||
2668 | 91E7BB2105EFCBA40026CC40 /* llviewerdisplay.cpp */, | ||
2669 | 1A83767D0BA2169600F28979 /* llviewergenericmessage.cpp */, | ||
2670 | 1A83767C0BA2169600F28979 /* llviewergenericmessage.h */, | ||
2673 | 26F52A32051F61DF00A80050 /* llviewergesture.cpp */, | 2671 | 26F52A32051F61DF00A80050 /* llviewergesture.cpp */, |
2674 | 26F52A31051F61DF00A80050 /* llviewerimage.cpp */, | 2672 | 26F52A31051F61DF00A80050 /* llviewerimage.cpp */, |
2675 | 26F52A30051F61DF00A80050 /* llviewerimagelist.cpp */, | 2673 | 26F52A30051F61DF00A80050 /* llviewerimagelist.cpp */, |
@@ -2678,20 +2676,32 @@ | |||
2678 | 26F52A38051F61DF00A80050 /* llviewerjointattachment.cpp */, | 2676 | 26F52A38051F61DF00A80050 /* llviewerjointattachment.cpp */, |
2679 | 26F52A37051F61DF00A80050 /* llviewerjointmesh.cpp */, | 2677 | 26F52A37051F61DF00A80050 /* llviewerjointmesh.cpp */, |
2680 | 26F52A36051F61DF00A80050 /* llviewerjointshape.cpp */, | 2678 | 26F52A36051F61DF00A80050 /* llviewerjointshape.cpp */, |
2679 | A3C20E4B0BB0BD12007E872B /* llviewerjoystick.cpp */, | ||
2680 | 91287B4A078DE4B300E958B2 /* llviewerkeyboard.cpp */, | ||
2681 | 91287B4B078DE4B300E958B2 /* llviewerkeyboard.h */, | ||
2681 | 26F52A35051F61DF00A80050 /* llviewerlayer.cpp */, | 2682 | 26F52A35051F61DF00A80050 /* llviewerlayer.cpp */, |
2682 | 26F529E4051F61DF00A80050 /* llviewermenu.cpp */, | 2683 | 26F529E4051F61DF00A80050 /* llviewermenu.cpp */, |
2684 | 1A8870E40BCC5A9500E89AA6 /* llviewermenufile.cpp */, | ||
2685 | 1A8870E30BCC5A9500E89AA6 /* llviewermenufile.h */, | ||
2683 | 26F529E3051F61DF00A80050 /* llviewermessage.cpp */, | 2686 | 26F529E3051F61DF00A80050 /* llviewermessage.cpp */, |
2687 | 1A3143D00A02B701005B87E7 /* llviewernetwork.cpp */, | ||
2684 | 26F529E2051F61DF00A80050 /* llviewerobject.cpp */, | 2688 | 26F529E2051F61DF00A80050 /* llviewerobject.cpp */, |
2685 | 26F529E1051F61DF00A80050 /* llviewerobjectlist.cpp */, | 2689 | 26F529E1051F61DF00A80050 /* llviewerobjectlist.cpp */, |
2686 | 26F529E0051F61DF00A80050 /* llviewerparcelmgr.cpp */, | 2690 | 26F529E0051F61DF00A80050 /* llviewerparcelmgr.cpp */, |
2687 | 26F529DF051F61DF00A80050 /* llviewerparceloverlay.cpp */, | 2691 | 26F529DF051F61DF00A80050 /* llviewerparceloverlay.cpp */, |
2688 | 26F529DE051F61DF00A80050 /* llviewerpartsim.cpp */, | 2692 | 26F529DE051F61DF00A80050 /* llviewerpartsim.cpp */, |
2689 | 26F529DD051F61DF00A80050 /* llviewerpartsource.cpp */, | 2693 | 26F529DD051F61DF00A80050 /* llviewerpartsource.cpp */, |
2694 | A241CB7B07B3DE0D001A39E3 /* llviewerprecompiledheaders.cpp */, | ||
2695 | A241CB7C07B3DE0D001A39E3 /* llviewerprecompiledheaders.h */, | ||
2690 | 26F529DC051F61DF00A80050 /* llviewerregion.cpp */, | 2696 | 26F529DC051F61DF00A80050 /* llviewerregion.cpp */, |
2691 | 26F529DB051F61DF00A80050 /* llviewerreputation.cpp */, | 2697 | 26F529DB051F61DF00A80050 /* llviewerreputation.cpp */, |
2692 | 26F529DA051F61DF00A80050 /* llviewerstats.cpp */, | 2698 | 26F529DA051F61DF00A80050 /* llviewerstats.cpp */, |
2699 | EB3EE712083AC23D002BF676 /* llviewertexteditor.cpp */, | ||
2700 | EB3EE713083AC23D002BF676 /* llviewertexteditor.h */, | ||
2693 | 26F529D9051F61DF00A80050 /* llviewertextureanim.cpp */, | 2701 | 26F529D9051F61DF00A80050 /* llviewertextureanim.cpp */, |
2694 | 26F529D8051F61DF00A80050 /* llviewerthrottle.cpp */, | 2702 | 26F529D8051F61DF00A80050 /* llviewerthrottle.cpp */, |
2703 | EB3EE714083AC23D002BF676 /* llvieweruictrlfactory.cpp */, | ||
2704 | EB3EE715083AC23D002BF676 /* llvieweruictrlfactory.h */, | ||
2695 | 26F529D7051F61DF00A80050 /* llviewervisualparam.cpp */, | 2705 | 26F529D7051F61DF00A80050 /* llviewervisualparam.cpp */, |
2696 | 26F529D6051F61DF00A80050 /* llviewerwindow.cpp */, | 2706 | 26F529D6051F61DF00A80050 /* llviewerwindow.cpp */, |
2697 | 26F529D5051F61DF00A80050 /* llvlcomposition.cpp */, | 2707 | 26F529D5051F61DF00A80050 /* llvlcomposition.cpp */, |
@@ -2701,8 +2711,14 @@ | |||
2701 | 26F529D1051F61DF00A80050 /* llvoclouds.cpp */, | 2711 | 26F529D1051F61DF00A80050 /* llvoclouds.cpp */, |
2702 | 26F529D0051F61DF00A80050 /* llvograss.cpp */, | 2712 | 26F529D0051F61DF00A80050 /* llvograss.cpp */, |
2703 | 26F529CF051F61DF00A80050 /* llvoground.cpp */, | 2713 | 26F529CF051F61DF00A80050 /* llvoground.cpp */, |
2714 | 99E43516092D64E6003AE728 /* llvoinventorylistener.cpp */, | ||
2715 | 99E43515092D64E6003AE728 /* llvoinventorylistener.h */, | ||
2716 | 910D255206484F1A0034E66F /* llvolumesliderctrl.cpp */, | ||
2717 | EB3EE716083AC23D002BF676 /* llvolumesliderctrl.h */, | ||
2704 | 26F529CD051F61DF00A80050 /* llvopartgroup.cpp */, | 2718 | 26F529CD051F61DF00A80050 /* llvopartgroup.cpp */, |
2705 | 26F529CC051F61DF00A80050 /* llvosky.cpp */, | 2719 | 26F529CC051F61DF00A80050 /* llvosky.cpp */, |
2720 | A3077C0509DCB8140059ED75 /* llvostars.cpp */, | ||
2721 | A3077C0609DCB8140059ED75 /* llvostars.h */, | ||
2706 | 26F529CB051F61DF00A80050 /* llvosurfacepatch.cpp */, | 2722 | 26F529CB051F61DF00A80050 /* llvosurfacepatch.cpp */, |
2707 | 26F529CA051F61DF00A80050 /* llvotextbubble.cpp */, | 2723 | 26F529CA051F61DF00A80050 /* llvotextbubble.cpp */, |
2708 | 26F529C9051F61DF00A80050 /* llvotree.cpp */, | 2724 | 26F529C9051F61DF00A80050 /* llvotree.cpp */, |
@@ -2711,21 +2727,20 @@ | |||
2711 | 26F529C5051F61DF00A80050 /* llwaterpatch.cpp */, | 2727 | 26F529C5051F61DF00A80050 /* llwaterpatch.cpp */, |
2712 | 26F529C4051F61DF00A80050 /* llwearable.cpp */, | 2728 | 26F529C4051F61DF00A80050 /* llwearable.cpp */, |
2713 | 26F529C3051F61DF00A80050 /* llwearablelist.cpp */, | 2729 | 26F529C3051F61DF00A80050 /* llwearablelist.cpp */, |
2730 | 1AF7C1E30AF6C44800C4BF4A /* llweb.cpp */, | ||
2731 | 1AE5D7100844FBD300278605 /* llwebbrowserctrl.cpp */, | ||
2732 | 1AE5D70F0844FBD200278605 /* llwebbrowserctrl.h */, | ||
2714 | 26F529C2051F61DF00A80050 /* llwind.cpp */, | 2733 | 26F529C2051F61DF00A80050 /* llwind.cpp */, |
2715 | 26F529C1051F61DF00A80050 /* llworld.cpp */, | 2734 | 26F529C1051F61DF00A80050 /* llworld.cpp */, |
2716 | 26F529C0051F61DF00A80050 /* llworldmap.cpp */, | 2735 | 26F529C0051F61DF00A80050 /* llworldmap.cpp */, |
2717 | 26F529BF051F61DF00A80050 /* llworldmapview.cpp */, | 2736 | 26F529BF051F61DF00A80050 /* llworldmapview.cpp */, |
2737 | 99BB516A099AC1AE004BF9F2 /* llxmlrpctransaction.cpp */, | ||
2738 | 99BB5169099AC1AE004BF9F2 /* llxmlrpctransaction.h */, | ||
2739 | 019200F004DD7D2B00A800A7 /* macview_Prefix.h */, | ||
2718 | 26F529BE051F61DF00A80050 /* moviemaker.cpp */, | 2740 | 26F529BE051F61DF00A80050 /* moviemaker.cpp */, |
2719 | 26F529BD051F61DF00A80050 /* noise.cpp */, | 2741 | 26F529BD051F61DF00A80050 /* noise.cpp */, |
2720 | 26F529BA051F61DF00A80050 /* pipeline.cpp */, | 2742 | 26F529BA051F61DF00A80050 /* pipeline.cpp */, |
2721 | 26E79A760520BEC400A80050 /* viewer.cpp */, | 2743 | 26E79A760520BEC400A80050 /* viewer.cpp */, |
2722 | 8B2ECFA00534C21A00A80059 /* llfirstuse.cpp */, | ||
2723 | 91D530CE056EE55C00CD1AD7 /* lloverlaybar.cpp */, | ||
2724 | 91D530D2056EE57900CD1AD7 /* llchatbar.cpp */, | ||
2725 | 9130442A057428D800571B0A /* llfloaterbuycontents.cpp */, | ||
2726 | 91D61FD0057ED9DF005B4B69 /* llnotify.cpp */, | ||
2727 | 91C8C05405922AC100633E8C /* llfloatergodtools.cpp */, | ||
2728 | E34C14730AE6A3F0009BF4DE /* llmapresponders.cpp */, | ||
2729 | ); | 2744 | ); |
2730 | name = newview; | 2745 | name = newview; |
2731 | sourceTree = "<group>"; | 2746 | sourceTree = "<group>"; |
@@ -3466,6 +3481,10 @@ | |||
3466 | 61923DA4074AE4F2005E1F34 /* llimagetga.cpp */, | 3481 | 61923DA4074AE4F2005E1F34 /* llimagetga.cpp */, |
3467 | 61923DA5074AE4F2005E1F34 /* llimagetga.h */, | 3482 | 61923DA5074AE4F2005E1F34 /* llimagetga.h */, |
3468 | 61923DA8074AE4F3005E1F34 /* llmapimagetype.h */, | 3483 | 61923DA8074AE4F3005E1F34 /* llmapimagetype.h */, |
3484 | 8833693B0C18AF33007F52DA /* llimagepng.cpp */, | ||
3485 | 8833693C0C18AF33007F52DA /* llpngwrapper.cpp */, | ||
3486 | 8833693D0C18AF33007F52DA /* llpngwrapper.h */, | ||
3487 | 8833693E0C18AF33007F52DA /* llimagepng.h */, | ||
3469 | ); | 3488 | ); |
3470 | name = llimage; | 3489 | name = llimage; |
3471 | path = ../llimage; | 3490 | path = ../llimage; |
@@ -3860,6 +3879,7 @@ | |||
3860 | FDAA36C209B919F600FBF1CA /* libmx.dylib */, | 3879 | FDAA36C209B919F600FBF1CA /* libmx.dylib */, |
3861 | FDAA36B609B919AD00FBF1CA /* libssl.dylib */, | 3880 | FDAA36B609B919AD00FBF1CA /* libssl.dylib */, |
3862 | FDAA36BE09B919DF00FBF1CA /* libz.dylib */, | 3881 | FDAA36BE09B919DF00FBF1CA /* libz.dylib */, |
3882 | 88A95BC90C14D92C0027E363 /* libresolv.dylib */, | ||
3863 | 26E79A630520BC6D00A80050 /* libSystem.dylib */, | 3883 | 26E79A630520BC6D00A80050 /* libSystem.dylib */, |
3864 | ); | 3884 | ); |
3865 | name = "System Libraries"; | 3885 | name = "System Libraries"; |
@@ -3879,6 +3899,7 @@ | |||
3879 | FDE8765409BEA39600AF6316 /* libogg.a */, | 3899 | FDE8765409BEA39600AF6316 /* libogg.a */, |
3880 | 99F998FA0BAA34B90034E41C /* libopenjpeg.a */, | 3900 | 99F998FA0BAA34B90034E41C /* libopenjpeg.a */, |
3881 | FDE8765509BEA39600AF6316 /* libvorbis.a */, | 3901 | FDE8765509BEA39600AF6316 /* libvorbis.a */, |
3902 | 88AA282B0C17720D0032DF53 /* libpng12.a */, | ||
3882 | FDE8765609BEA39600AF6316 /* libvorbisenc.a */, | 3903 | FDE8765609BEA39600AF6316 /* libvorbisenc.a */, |
3883 | FDE8765709BEA39600AF6316 /* libvorbisfile.a */, | 3904 | FDE8765709BEA39600AF6316 /* libvorbisfile.a */, |
3884 | FDE8765809BEA39700AF6316 /* libxmlrpc.a */, | 3905 | FDE8765809BEA39700AF6316 /* libxmlrpc.a */, |
@@ -4100,7 +4121,7 @@ | |||
4100 | ); | 4121 | ); |
4101 | runOnlyForDeploymentPostprocessing = 0; | 4122 | runOnlyForDeploymentPostprocessing = 0; |
4102 | shellPath = /bin/sh; | 4123 | shellPath = /bin/sh; |
4103 | shellScript = "# Glue together intel and ppc versions of .a files\nLIBS=\"apr-1 aprutil-1 expat ogg vorbis fmod freetype cares llcurl lljpeg openjpeg vorbisenc vorbisfile xmlrpc\"\nLIBDIR=\"${SRCROOT}/../../libraries\"\n\ncd \"${LIBDIR}\"\n\nif [ \\! -e ppc-darwin ]\nthen\n\tln -s powerpc-darwin ppc-darwin\nfi\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}\"\n\nfor i in ${LIBS}; do\n\tNEED_UPDATE=false\n\tARCH_COUNT=0\n\tOUT=\"${BUILT_PRODUCTS_DIR}/lib$i.a\"\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep i386`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_i386=\"i386-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_i386\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep ppc`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_ppc=\"ppc-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_ppc\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tif [ $ARCH_COUNT -eq 0 ]; then\n\t\techo \"No supported architectures found.\"\n\t\texit 1\n\tfi\n\tif [ ! -f \"$OUT\" -o NEED_UPDATE = \"true\" ]; then\n\t\techo Preparing third party library lib$i.a\n\t\tif [ $ARCH_COUNT -eq 1 ]; then\n\t\t\tIN=\"$IN_i386\"\"$IN_ppc\"\n\t\t\t#echo cp \"$IN\" \"$OUT\"\n\t\t\tcp \"$IN\" \"$OUT\"\n\t\telse\n\t\t\t#echo libtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\t\tlibtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\tfi\n\t\tranlib \"$OUT\"\n\telse\n\t\techo Third party library lib$i.a is up to date\n\tfi\ndone\n"; | 4124 | shellScript = "# Glue together intel and ppc versions of .a files\nLIBS=\"apr-1 aprutil-1 expat ogg vorbis fmod freetype cares llcurl lljpeg png12 openjpeg vorbisenc vorbisfile xmlrpc\"\nLIBDIR=\"${SRCROOT}/../../libraries\"\n\ncd \"${LIBDIR}\"\n\nif [ \\! -e ppc-darwin ]\nthen\n\tln -s powerpc-darwin ppc-darwin\nfi\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}\"\n\nfor i in ${LIBS}; do\n\tNEED_UPDATE=false\n\tARCH_COUNT=0\n\tOUT=\"${BUILT_PRODUCTS_DIR}/lib$i.a\"\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep i386`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_i386=\"i386-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_i386\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tTEST_ARCH=`echo \"${ARCHS}\" | grep ppc`\n\tif [ -n \"$TEST_ARCH\" ]; then\n\t\tIN_ppc=\"ppc-darwin/lib_release/lib$i.a\"\n\t\tARCH_COUNT=`expr $ARCH_COUNT \"+\" 1`\n\t\tif [ \"$IN_ppc\" -nt \"$OUT\" ]; then\n\t\t\tNEED_UPDATE=true\n\t\tfi\n\tfi\n\tif [ $ARCH_COUNT -eq 0 ]; then\n\t\techo \"No supported architectures found.\"\n\t\texit 1\n\tfi\n\tif [ ! -f \"$OUT\" -o NEED_UPDATE = \"true\" ]; then\n\t\techo Preparing third party library lib$i.a\n\t\tif [ $ARCH_COUNT -eq 1 ]; then\n\t\t\tIN=\"$IN_i386\"\"$IN_ppc\"\n\t\t\t#echo cp \"$IN\" \"$OUT\"\n\t\t\tcp \"$IN\" \"$OUT\"\n\t\telse\n\t\t\t#echo libtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\t\tlibtool -static -o \"$OUT\" \"$IN_i386\" \"$IN_ppc\"\n\t\tfi\n\t\tranlib \"$OUT\"\n\telse\n\t\techo Third party library lib$i.a is up to date\n\tfi\ndone\n"; |
4104 | }; | 4125 | }; |
4105 | /* End PBXShellScriptBuildPhase section */ | 4126 | /* End PBXShellScriptBuildPhase section */ |
4106 | 4127 | ||
@@ -4552,6 +4573,9 @@ | |||
4552 | A3C20E4C0BB0BD12007E872B /* llviewerjoystick.cpp in Sources */, | 4573 | A3C20E4C0BB0BD12007E872B /* llviewerjoystick.cpp in Sources */, |
4553 | 1A8870D50BCC5A6300E89AA6 /* llinventorytype.cpp in Sources */, | 4574 | 1A8870D50BCC5A6300E89AA6 /* llinventorytype.cpp in Sources */, |
4554 | 1A8870E50BCC5A9500E89AA6 /* llviewermenufile.cpp in Sources */, | 4575 | 1A8870E50BCC5A9500E89AA6 /* llviewermenufile.cpp in Sources */, |
4576 | 88A95BB20C14D5FC0027E363 /* llsrv.cpp in Sources */, | ||
4577 | 8833693F0C18AF33007F52DA /* llimagepng.cpp in Sources */, | ||
4578 | 883369400C18AF33007F52DA /* llpngwrapper.cpp in Sources */, | ||
4555 | ); | 4579 | ); |
4556 | runOnlyForDeploymentPostprocessing = 0; | 4580 | runOnlyForDeploymentPostprocessing = 0; |
4557 | }; | 4581 | }; |
@@ -4906,10 +4930,26 @@ | |||
4906 | ); | 4930 | ); |
4907 | GCC_ALTIVEC_EXTENSIONS = YES; | 4931 | GCC_ALTIVEC_EXTENSIONS = YES; |
4908 | GCC_OPTIMIZATION_LEVEL = 3; | 4932 | GCC_OPTIMIZATION_LEVEL = 3; |
4933 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; | ||
4909 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; | 4934 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; |
4935 | GCC_WARN_ABOUT_MISSING_NEWLINE = YES; | ||
4936 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; | ||
4937 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | ||
4938 | GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; | ||
4910 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; | 4939 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; |
4940 | GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO; | ||
4941 | GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; | ||
4942 | GCC_WARN_MISSING_PARENTHESES = YES; | ||
4943 | GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; | ||
4911 | GCC_WARN_SHADOW = NO; | 4944 | GCC_WARN_SHADOW = NO; |
4945 | GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; | ||
4946 | GCC_WARN_UNINITIALIZED_AUTOS = NO; | ||
4912 | GCC_WARN_UNKNOWN_PRAGMAS = NO; | 4947 | GCC_WARN_UNKNOWN_PRAGMAS = NO; |
4948 | GCC_WARN_UNUSED_FUNCTION = YES; | ||
4949 | GCC_WARN_UNUSED_LABEL = YES; | ||
4950 | GCC_WARN_UNUSED_PARAMETER = YES; | ||
4951 | GCC_WARN_UNUSED_VALUE = YES; | ||
4952 | GCC_WARN_UNUSED_VARIABLE = YES; | ||
4913 | HEADER_SEARCH_PATHS = ( | 4953 | HEADER_SEARCH_PATHS = ( |
4914 | "../../libraries/$(arch)-darwin/include", | 4954 | "../../libraries/$(arch)-darwin/include", |
4915 | ../../libraries/include, | 4955 | ../../libraries/include, |
@@ -5150,10 +5190,26 @@ | |||
5150 | buildSettings = { | 5190 | buildSettings = { |
5151 | GCC_ALTIVEC_EXTENSIONS = YES; | 5191 | GCC_ALTIVEC_EXTENSIONS = YES; |
5152 | GCC_OPTIMIZATION_LEVEL = 0; | 5192 | GCC_OPTIMIZATION_LEVEL = 0; |
5193 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; | ||
5153 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; | 5194 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; |
5195 | GCC_WARN_ABOUT_MISSING_NEWLINE = YES; | ||
5196 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; | ||
5197 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | ||
5198 | GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; | ||
5154 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; | 5199 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; |
5200 | GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO; | ||
5201 | GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; | ||
5202 | GCC_WARN_MISSING_PARENTHESES = YES; | ||
5203 | GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; | ||
5155 | GCC_WARN_SHADOW = NO; | 5204 | GCC_WARN_SHADOW = NO; |
5205 | GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; | ||
5206 | GCC_WARN_UNINITIALIZED_AUTOS = NO; | ||
5156 | GCC_WARN_UNKNOWN_PRAGMAS = NO; | 5207 | GCC_WARN_UNKNOWN_PRAGMAS = NO; |
5208 | GCC_WARN_UNUSED_FUNCTION = YES; | ||
5209 | GCC_WARN_UNUSED_LABEL = YES; | ||
5210 | GCC_WARN_UNUSED_PARAMETER = YES; | ||
5211 | GCC_WARN_UNUSED_VALUE = YES; | ||
5212 | GCC_WARN_UNUSED_VARIABLE = YES; | ||
5157 | HEADER_SEARCH_PATHS = ( | 5213 | HEADER_SEARCH_PATHS = ( |
5158 | "../../libraries/$(arch)-darwin/include", | 5214 | "../../libraries/$(arch)-darwin/include", |
5159 | ../../libraries/include, | 5215 | ../../libraries/include, |
@@ -5188,10 +5244,26 @@ | |||
5188 | buildSettings = { | 5244 | buildSettings = { |
5189 | GCC_ALTIVEC_EXTENSIONS = YES; | 5245 | GCC_ALTIVEC_EXTENSIONS = YES; |
5190 | GCC_OPTIMIZATION_LEVEL = 3; | 5246 | GCC_OPTIMIZATION_LEVEL = 3; |
5247 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; | ||
5191 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; | 5248 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; |
5249 | GCC_WARN_ABOUT_MISSING_NEWLINE = YES; | ||
5250 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; | ||
5251 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | ||
5252 | GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; | ||
5192 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; | 5253 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; |
5254 | GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO; | ||
5255 | GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; | ||
5256 | GCC_WARN_MISSING_PARENTHESES = YES; | ||
5257 | GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; | ||
5193 | GCC_WARN_SHADOW = NO; | 5258 | GCC_WARN_SHADOW = NO; |
5259 | GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; | ||
5260 | GCC_WARN_UNINITIALIZED_AUTOS = NO; | ||
5194 | GCC_WARN_UNKNOWN_PRAGMAS = NO; | 5261 | GCC_WARN_UNKNOWN_PRAGMAS = NO; |
5262 | GCC_WARN_UNUSED_FUNCTION = YES; | ||
5263 | GCC_WARN_UNUSED_LABEL = YES; | ||
5264 | GCC_WARN_UNUSED_PARAMETER = YES; | ||
5265 | GCC_WARN_UNUSED_VALUE = YES; | ||
5266 | GCC_WARN_UNUSED_VARIABLE = YES; | ||
5195 | HEADER_SEARCH_PATHS = ( | 5267 | HEADER_SEARCH_PATHS = ( |
5196 | "../../libraries/$(arch)-darwin/include", | 5268 | "../../libraries/$(arch)-darwin/include", |
5197 | ../../libraries/include, | 5269 | ../../libraries/include, |
diff --git a/linden/indra/newview/newview.vcproj b/linden/indra/newview/newview.vcproj index 699a2bc..ae0c02d 100644 --- a/linden/indra/newview/newview.vcproj +++ b/linden/indra/newview/newview.vcproj | |||
@@ -20,7 +20,7 @@ | |||
20 | <Tool | 20 | <Tool |
21 | Name="VCCLCompilerTool" | 21 | Name="VCCLCompilerTool" |
22 | Optimization="0" | 22 | Optimization="0" |
23 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include\;"..\..\libraries\i686-win32\include\quicktime"" | 23 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include;..\..\libraries\include\zlib;"..\..\libraries\i686-win32\include\quicktime"" |
24 | PreprocessorDefinitions="WIN32;_DEBUG;LL_WINDOWS;LL_DEBUG;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" | 24 | PreprocessorDefinitions="WIN32;_DEBUG;LL_WINDOWS;LL_DEBUG;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" |
25 | MinimalRebuild="FALSE" | 25 | MinimalRebuild="FALSE" |
26 | BasicRuntimeChecks="3" | 26 | BasicRuntimeChecks="3" |
@@ -37,7 +37,7 @@ | |||
37 | Name="VCCustomBuildTool"/> | 37 | Name="VCCustomBuildTool"/> |
38 | <Tool | 38 | <Tool |
39 | Name="VCLinkerTool" | 39 | Name="VCLinkerTool" |
40 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 40 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
41 | OutputFile="$(ConfigurationName)/debugview.exe" | 41 | OutputFile="$(ConfigurationName)/debugview.exe" |
42 | LinkIncremental="2" | 42 | LinkIncremental="2" |
43 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_debug"" | 43 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_debug"" |
@@ -84,7 +84,7 @@ | |||
84 | EnableIntrinsicFunctions="TRUE" | 84 | EnableIntrinsicFunctions="TRUE" |
85 | OptimizeForProcessor="3" | 85 | OptimizeForProcessor="3" |
86 | OptimizeForWindowsApplication="TRUE" | 86 | OptimizeForWindowsApplication="TRUE" |
87 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include\;"..\..\libraries\i686-win32\include\quicktime"" | 87 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include;..\..\libraries\include\zlib;"..\..\libraries\i686-win32\include\quicktime"" |
88 | PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" | 88 | PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" |
89 | StringPooling="TRUE" | 89 | StringPooling="TRUE" |
90 | RuntimeLibrary="0" | 90 | RuntimeLibrary="0" |
@@ -100,7 +100,7 @@ | |||
100 | Name="VCCustomBuildTool"/> | 100 | Name="VCCustomBuildTool"/> |
101 | <Tool | 101 | <Tool |
102 | Name="VCLinkerTool" | 102 | Name="VCLinkerTool" |
103 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 103 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
104 | OutputFile="$(ConfigurationName)/newview.exe" | 104 | OutputFile="$(ConfigurationName)/newview.exe" |
105 | LinkIncremental="2" | 105 | LinkIncremental="2" |
106 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_release"" | 106 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_release"" |
@@ -142,7 +142,7 @@ | |||
142 | CharacterSet="1"> | 142 | CharacterSet="1"> |
143 | <Tool | 143 | <Tool |
144 | Name="VCCLCompilerTool" | 144 | Name="VCCLCompilerTool" |
145 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include\;"..\..\libraries\i686-win32\include\quicktime"" | 145 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include;..\..\libraries\include\zlib;"..\..\libraries\i686-win32\include\quicktime"" |
146 | PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" | 146 | PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;LL_RELEASE_FOR_DOWNLOAD;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" |
147 | RuntimeLibrary="0" | 147 | RuntimeLibrary="0" |
148 | StructMemberAlignment="0" | 148 | StructMemberAlignment="0" |
@@ -160,7 +160,7 @@ | |||
160 | Outputs="$(TargetFileName)"/> | 160 | Outputs="$(TargetFileName)"/> |
161 | <Tool | 161 | <Tool |
162 | Name="VCLinkerTool" | 162 | Name="VCLinkerTool" |
163 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 163 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
164 | OutputFile="$(ConfigurationName)/SecondLife.exe" | 164 | OutputFile="$(ConfigurationName)/SecondLife.exe" |
165 | LinkIncremental="0" | 165 | LinkIncremental="0" |
166 | AdditionalLibraryDirectories=""../lib_release/i686-win32";"../../libraries/i686-win32/lib_release"" | 166 | AdditionalLibraryDirectories=""../lib_release/i686-win32";"../../libraries/i686-win32/lib_release"" |
@@ -203,7 +203,7 @@ | |||
203 | <Tool | 203 | <Tool |
204 | Name="VCCLCompilerTool" | 204 | Name="VCCLCompilerTool" |
205 | Optimization="0" | 205 | Optimization="0" |
206 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include\;"..\..\libraries\i686-win32\include\quicktime"" | 206 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llvfs;..\llaudio;..\llmedia;..\llimage;..\llscene;..\llxml;..\llmessage;..\llprimitive;..\llrender;..\llwindow;..\llcharacter;..\llinventory;..\llui;..\lscript;"..\..\libraries\i686-win32\include";..\..\libraries\include;..\..\libraries\include\zlib;"..\..\libraries\i686-win32\include\quicktime"" |
207 | PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" | 207 | PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;LL_WINDOWS;LL_RELEASE;XP_WIN;XP_WIN32;MOZILLA_INTERNAL_API" |
208 | RuntimeLibrary="0" | 208 | RuntimeLibrary="0" |
209 | StructMemberAlignment="0" | 209 | StructMemberAlignment="0" |
@@ -218,7 +218,7 @@ | |||
218 | Name="VCCustomBuildTool"/> | 218 | Name="VCCustomBuildTool"/> |
219 | <Tool | 219 | <Tool |
220 | Name="VCLinkerTool" | 220 | Name="VCLinkerTool" |
221 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 221 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc71-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib png12.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
222 | OutputFile="$(ConfigurationName)/newview_noopt.exe" | 222 | OutputFile="$(ConfigurationName)/newview_noopt.exe" |
223 | LinkIncremental="2" | 223 | LinkIncremental="2" |
224 | AdditionalLibraryDirectories=""../lib_releasenoopt/i686-win32";"../../libraries/i686-win32/lib_release"" | 224 | AdditionalLibraryDirectories=""../lib_releasenoopt/i686-win32";"../../libraries/i686-win32/lib_release"" |
@@ -947,6 +947,9 @@ | |||
947 | RelativePath=".\llsprite.cpp"> | 947 | RelativePath=".\llsprite.cpp"> |
948 | </File> | 948 | </File> |
949 | <File | 949 | <File |
950 | RelativePath=".\llsrv.cpp"> | ||
951 | </File> | ||
952 | <File | ||
950 | RelativePath=".\llstartup.cpp"> | 953 | RelativePath=".\llstartup.cpp"> |
951 | </File> | 954 | </File> |
952 | <File | 955 | <File |
@@ -1972,6 +1975,9 @@ | |||
1972 | RelativePath=".\llsprite.h"> | 1975 | RelativePath=".\llsprite.h"> |
1973 | </File> | 1976 | </File> |
1974 | <File | 1977 | <File |
1978 | RelativePath=".\llsrv.h"> | ||
1979 | </File> | ||
1980 | <File | ||
1975 | RelativePath=".\llstartup.h"> | 1981 | RelativePath=".\llstartup.h"> |
1976 | </File> | 1982 | </File> |
1977 | <File | 1983 | <File |
diff --git a/linden/indra/newview/newview_vc8.vcproj b/linden/indra/newview/newview_vc8.vcproj index 8b55869..445ebd9 100644 --- a/linden/indra/newview/newview_vc8.vcproj +++ b/linden/indra/newview/newview_vc8.vcproj | |||
@@ -67,7 +67,7 @@ | |||
67 | /> | 67 | /> |
68 | <Tool | 68 | <Tool |
69 | Name="VCLinkerTool" | 69 | Name="VCLinkerTool" |
70 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib-vc80.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 70 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llmozlib-vc80.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
71 | OutputFile="$(ConfigurationName)/debugview.exe" | 71 | OutputFile="$(ConfigurationName)/debugview.exe" |
72 | LinkIncremental="2" | 72 | LinkIncremental="2" |
73 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_debug"" | 73 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_debug"" |
@@ -158,7 +158,7 @@ | |||
158 | /> | 158 | /> |
159 | <Tool | 159 | <Tool |
160 | Name="VCLinkerTool" | 160 | Name="VCLinkerTool" |
161 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 161 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
162 | OutputFile="$(ConfigurationName)/newview.exe" | 162 | OutputFile="$(ConfigurationName)/newview.exe" |
163 | LinkIncremental="2" | 163 | LinkIncremental="2" |
164 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_release"" | 164 | AdditionalLibraryDirectories=""../lib_$(ConfigurationName)/i686-win32";"../../libraries/i686-win32/lib_release"" |
@@ -248,7 +248,7 @@ | |||
248 | /> | 248 | /> |
249 | <Tool | 249 | <Tool |
250 | Name="VCLinkerTool" | 250 | Name="VCLinkerTool" |
251 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 251 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
252 | OutputFile="$(ConfigurationName)/SecondLife.exe" | 252 | OutputFile="$(ConfigurationName)/SecondLife.exe" |
253 | LinkIncremental="0" | 253 | LinkIncremental="0" |
254 | AdditionalLibraryDirectories=""../lib_release/i686-win32";"../../libraries/i686-win32/lib_release"" | 254 | AdditionalLibraryDirectories=""../lib_release/i686-win32";"../../libraries/i686-win32/lib_release"" |
@@ -337,7 +337,7 @@ | |||
337 | /> | 337 | /> |
338 | <Tool | 338 | <Tool |
339 | Name="VCLinkerTool" | 339 | Name="VCLinkerTool" |
340 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib" | 340 | AdditionalDependencies="advapi32.lib apr-1.lib aprutil-1.lib comdlg32.lib dinput8.lib dsound.lib dxerr8.lib dxguid.lib fmodvc.lib freetype.lib gdi32.lib glu32.lib jpeglib_6b.lib kernel32.lib libboost_regex-vc80-mt-s.lib libcurl.lib libeay32.lib libexpatMT.lib LibOpenJPEG.lib llaudio.lib llmedia.lib llcharacter.lib llcommon.lib llimage.lib llimagej2coj.lib llinventory.lib llmath.lib llmessage.lib llmozlib-vc80.lib llprimitive.lib llrender.lib llui.lib llvfs.lib llwindow.lib llxml.lib lscript_library.lib mswsock.lib netapi32.lib odbc32.lib odbccp32.lib ogg_static_mt.lib ole32.lib oleaut32.lib opengl32.lib png12.lib qtmlclient.lib shell32.lib ssleay32.lib user32.lib Vfw32.lib vorbis_static_mt.lib vorbisenc_static_mt.lib vorbisfile_static_mt.lib winmm.lib winspool.lib ws2_32.lib xmlrpcepi.lib zlib.lib dnsapi.lib" |
341 | OutputFile="$(ConfigurationName)/newview_noopt.exe" | 341 | OutputFile="$(ConfigurationName)/newview_noopt.exe" |
342 | LinkIncremental="2" | 342 | LinkIncremental="2" |
343 | AdditionalLibraryDirectories=""../lib_releasenoopt/i686-win32";"../../libraries/i686-win32/lib_release"" | 343 | AdditionalLibraryDirectories=""../lib_releasenoopt/i686-win32";"../../libraries/i686-win32/lib_release"" |
@@ -1300,6 +1300,10 @@ | |||
1300 | > | 1300 | > |
1301 | </File> | 1301 | </File> |
1302 | <File | 1302 | <File |
1303 | RelativePath=".\llsrv.cpp" | ||
1304 | > | ||
1305 | </File> | ||
1306 | <File | ||
1303 | RelativePath=".\llstartup.cpp" | 1307 | RelativePath=".\llstartup.cpp" |
1304 | > | 1308 | > |
1305 | </File> | 1309 | </File> |
@@ -2662,6 +2666,10 @@ | |||
2662 | > | 2666 | > |
2663 | </File> | 2667 | </File> |
2664 | <File | 2668 | <File |
2669 | RelativePath=".\llsrv.h" | ||
2670 | > | ||
2671 | </File> | ||
2672 | <File | ||
2665 | RelativePath=".\llstartup.h" | 2673 | RelativePath=".\llstartup.h" |
2666 | > | 2674 | > |
2667 | </File> | 2675 | </File> |
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index 408be2e..7d03e64 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp | |||
@@ -1406,7 +1406,7 @@ void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera) | |||
1406 | 1406 | ||
1407 | if (gHideSelectedObjects) | 1407 | if (gHideSelectedObjects) |
1408 | { | 1408 | { |
1409 | if (drawablep->getVObj() && | 1409 | if (drawablep->getVObj().notNull() && |
1410 | drawablep->getVObj()->isSelected()) | 1410 | drawablep->getVObj()->isSelected()) |
1411 | { | 1411 | { |
1412 | return; | 1412 | return; |
@@ -1435,7 +1435,7 @@ void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera) | |||
1435 | } | 1435 | } |
1436 | else if (drawablep->isAvatar() && drawablep->isVisible()) | 1436 | else if (drawablep->isAvatar() && drawablep->isVisible()) |
1437 | { | 1437 | { |
1438 | LLVOAvatar* vobj = (LLVOAvatar*) drawablep->getVObj(); | 1438 | LLVOAvatar* vobj = (LLVOAvatar*) drawablep->getVObj().get(); |
1439 | vobj->updateVisibility(FALSE); | 1439 | vobj->updateVisibility(FALSE); |
1440 | } | 1440 | } |
1441 | 1441 | ||
@@ -3498,7 +3498,7 @@ BOOL LLPipeline::getRenderSoundBeacons(void*) | |||
3498 | LLViewerObject* LLPipeline::pickObject(const LLVector3 &start, const LLVector3 &end, LLVector3 &collision) | 3498 | LLViewerObject* LLPipeline::pickObject(const LLVector3 &start, const LLVector3 &end, LLVector3 &collision) |
3499 | { | 3499 | { |
3500 | LLDrawable* drawable = mObjectPartition[PARTITION_VOLUME]->pickDrawable(start, end, collision); | 3500 | LLDrawable* drawable = mObjectPartition[PARTITION_VOLUME]->pickDrawable(start, end, collision); |
3501 | return drawable ? drawable->getVObj() : NULL; | 3501 | return drawable ? drawable->getVObj().get() : NULL; |
3502 | } | 3502 | } |
3503 | 3503 | ||
3504 | LLSpatialPartition* LLPipeline::getSpatialPartition(LLViewerObject* vobj) | 3504 | LLSpatialPartition* LLPipeline::getSpatialPartition(LLViewerObject* vobj) |
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt index 2f7971c..76f356b 100644 --- a/linden/indra/newview/releasenotes.txt +++ b/linden/indra/newview/releasenotes.txt | |||
@@ -1,3 +1,71 @@ | |||
1 | Release Notes for Second Life 1.17.1(0) June 22, 2007 | ||
2 | ===================================== | ||
3 | Changes: | ||
4 | * VWR-650: Make "Give money" permissions look different than the other permissions | ||
5 | * VWR-427: Added new menu item: Tools > Edit Linked Parts | ||
6 | * VWR-79: PNG image support submission | ||
7 | * Sculpties now include a one-time explanation the first time a sculptie is created. | ||
8 | * Client and Server menus now have a one-time dialog box to explain what they are. | ||
9 | * "Skip 'Show next time' Dialogs..." button added to Preferences > Popups tab to skip all one time dialog boxes. | ||
10 | * Added Japanese and German language installers (Windows only) | ||
11 | * The version of Mozilla used in the client is updated to 1.8.0.12 | ||
12 | * F1 help now opens an external browser to the Second Life support web site. | ||
13 | * F1 Help will now open an external browser to language specific support websites for Japanese, Korean and Portuguese based on client's language. | ||
14 | * Delay added to folder opening while dragging items in an inventory window with a vertical scroll bar. | ||
15 | * Default messages for postcards are replaced when adding text. | ||
16 | * In the Inventory window the Filter menu is consolidated into the File menu. | ||
17 | * The sculptie texture picker UI has changed to differentiate it from the surface texture picker. | ||
18 | |||
19 | LSL changes: | ||
20 | * Added support for alternate sculptie edge stitching. | ||
21 | * VWR-68: LSL constant expression folding and proper constant parsing | ||
22 | |||
23 | Bug fixes: | ||
24 | * Fixed MISC-217: Accounts with negative L$ balance can't buy L$0 freebie | ||
25 | * Fixed SVC-306: Objects are visible at <0,0,0> (sometimes before moving to their correct position) | ||
26 | * Fixed SVC-225: Searching for Classifieds with blank field results no results | ||
27 | * Fixed VWR-1296: Minor memory leak in lltexturecache.cpp | ||
28 | * Fixed VWR-1223: Camera Controls keyboard shortcuts broke | ||
29 | * Fixed VWR-1221: Possible crash in llfloaterland.cpp / line 1556 | ||
30 | * Fixed VWR-1217: Built-in avatar animations stop suddenly, rather than fading out. (jerky head movement) | ||
31 | * Fixed VWR-1203: Avatars eyes are constantly crossing in 1.17 | ||
32 | * Fixed VWR-1170: LLMuteList::loadFromFile() improperly parses the mute list returned from the service | ||
33 | * Fixed VWR-1140: About Land floater is not resizable, ban and access lists too small | ||
34 | * Fixed VWR-1049: Trivial sizeof() miscalculatuion results in incomplete copying of CPU Brand ID string in CProcessor::AnalyzeAMDProcessor() | ||
35 | * Fixed VWR-1044: Unchecking "Go Away/AFK When Idle" doesn't work when manually setting Away status | ||
36 | * Fixed VWR-944: Boost inclusion is inconsistent | ||
37 | * Fixed VWR-941: Reading length data for a four-byte Variable template message misstores the length | ||
38 | * Fixed VWR-938: ELFIO is technically optional, make this easy to capitalise on | ||
39 | * Fixed VWR-876: sculpt texture map does not load or low priority when the texture itself is not visible in viewer frame or not cached | ||
40 | * Fixed VWR-873: Dead members "eVertexDataMask;" in various objects | ||
41 | * Fixed VWR-856: llvfs.cpp: possible loss of memory blocks in LLVFS:audit() | ||
42 | * Fixed VWR-822: "Create new..." clothing buttons don't auto-wear items | ||
43 | * Fixed VWR-796: llStopSound() not working | ||
44 | * Fixed VWR-746: Incorrect menu item referred to when member of maximum number of groups and a group invite is received | ||
45 | * Fixed VWR-660: When turning off Flexible Object rendering, flexible objects become permanently invisible | ||
46 | * Fixed VWR-652: A harmless compiler warning in indra.l.cpp | ||
47 | * Fixed VWR-606: Some source files (llprocessor.cpp and llsdserialize_tut.cpp) contain non-ASCII characters | ||
48 | * Fixed VWR-597: Abuse report tool should autofill abuser name when reporting an object | ||
49 | * Fixed VWR-560: Crash in llscrolllistctl.cpp when sorting scroll list | ||
50 | * Fixed VWR-459: Unicode supplementary characters typed in from keybaord are not handled properly on Windows (and potentially on Linux) | ||
51 | * Fixed VWR-446: Automatically start renaming new user-created assets and automatically select new user-created folders | ||
52 | * Fixed VWR-383: Chat logs do not have timestamps | ||
53 | * Fixed VWR-364: Viewer memory leak | ||
54 | * Fixed VWR-287: Inconsistent behaviour between agent_slide_left / agent_slide_right, and the rest of the movement functions. | ||
55 | * Fixed VWR-251: Keystrokes are eaten by IME when no text input is possible, on Windows using Japanese | ||
56 | * Fixed VWR-248: Inexplicable folding of Avatars such that they are walking around with their heads up their arses | ||
57 | * Fixed VWR-247: Viewer generates undesired dialog when IM comes in while minimized | ||
58 | * Fixed VWR-227: If a Find/Search returns no results, the results list is still focused and an attempt is made to select the first result anyway. | ||
59 | * Fixed VWR-218: SConstruct script makes many assumptions that are invalid outside LL | ||
60 | * Fixed VWR-213: Calling DestroyWindow with NULL window handle (win32 version) | ||
61 | * Fixed VWR-207: Textures become increasingly blurry over time on systems with > ~2GB RAM | ||
62 | * Fixed VWR-143: Compiler errors in llwebbrowserctrl.h | ||
63 | * Fixed VWR-132: seg fault in lldrawpool.cpp | ||
64 | * Fixed VWR-119: Zero missing in Sub-unit snap grid. for small fraction like 1/16 and 1/32 | ||
65 | * Fixed VWR-101: Get rid of "Return All" | ||
66 | * Fixed Inventory's "Recent Items" tab settings not persisting across logins | ||
67 | * Fixed line breaks showing up as * in various windows. | ||
68 | |||
1 | Release Notes for Second Life 1.17.0(12) June 13, 2007 | 69 | Release Notes for Second Life 1.17.0(12) June 13, 2007 |
2 | ===================================== | 70 | ===================================== |
3 | Changes: | 71 | Changes: |
diff --git a/linden/indra/newview/res/newViewRes.rc b/linden/indra/newview/res/newViewRes.rc index 0b4a5ba..8315deb 100644 --- a/linden/indra/newview/res/newViewRes.rc +++ b/linden/indra/newview/res/newViewRes.rc | |||
@@ -227,8 +227,8 @@ TOOLPIPETTE CURSOR "toolpipette.cur" | |||
227 | // | 227 | // |
228 | 228 | ||
229 | VS_VERSION_INFO VERSIONINFO | 229 | VS_VERSION_INFO VERSIONINFO |
230 | FILEVERSION 1,17,0,12 | 230 | FILEVERSION 1,17,1,0 |
231 | PRODUCTVERSION 1,17,0,12 | 231 | PRODUCTVERSION 1,17,1,0 |
232 | FILEFLAGSMASK 0x3fL | 232 | FILEFLAGSMASK 0x3fL |
233 | #ifdef _DEBUG | 233 | #ifdef _DEBUG |
234 | FILEFLAGS 0x1L | 234 | FILEFLAGS 0x1L |
@@ -245,12 +245,12 @@ BEGIN | |||
245 | BEGIN | 245 | BEGIN |
246 | VALUE "CompanyName", "Linden Lab" | 246 | VALUE "CompanyName", "Linden Lab" |
247 | VALUE "FileDescription", "Second Life" | 247 | VALUE "FileDescription", "Second Life" |
248 | VALUE "FileVersion", "1.17.0.12" | 248 | VALUE "FileVersion", "1.17.1.0" |
249 | VALUE "InternalName", "Second Life" | 249 | VALUE "InternalName", "Second Life" |
250 | VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc." | 250 | VALUE "LegalCopyright", "Copyright © 2001-2007, Linden Research, Inc." |
251 | VALUE "OriginalFilename", "SecondLife.exe" | 251 | VALUE "OriginalFilename", "SecondLife.exe" |
252 | VALUE "ProductName", "Second Life" | 252 | VALUE "ProductName", "Second Life" |
253 | VALUE "ProductVersion", "1.17.0.12" | 253 | VALUE "ProductVersion", "1.17.1.0" |
254 | END | 254 | END |
255 | END | 255 | END |
256 | BLOCK "VarFileInfo" | 256 | BLOCK "VarFileInfo" |
diff --git a/linden/indra/newview/skins/textures/textures.xml b/linden/indra/newview/skins/textures/textures.xml index 89e4f53..79e910a 100644 --- a/linden/indra/newview/skins/textures/textures.xml +++ b/linden/indra/newview/skins/textures/textures.xml | |||
@@ -230,6 +230,7 @@ | |||
230 | <notify_tip_icon.tga value="74ba3584-58ea-9984-5b76-62d37942ab77"/> | 230 | <notify_tip_icon.tga value="74ba3584-58ea-9984-5b76-62d37942ab77"/> |
231 | <notify_box_icon.tga value="b2ef2d31-9714-a07b-6ca7-31638166364b"/> | 231 | <notify_box_icon.tga value="b2ef2d31-9714-a07b-6ca7-31638166364b"/> |
232 | <notify_next.tga value="07d0ea4c-af0c-aad1-dbbf-c24020ff2b80"/> | 232 | <notify_next.tga value="07d0ea4c-af0c-aad1-dbbf-c24020ff2b80"/> |
233 | <notify_caution_icon.tga value="3a22ac15-39ac-409c-acec-b08b1b6b689b"/> | ||
233 | <map_avatar_you_8.tga value="02fbdc40-5e07-a6e1-228b-58e10f8335b7"/> | 234 | <map_avatar_you_8.tga value="02fbdc40-5e07-a6e1-228b-58e10f8335b7"/> |
234 | <map_avatar_8.tga value="0be58a91-8065-c02b-7a12-2cc14dddbc37"/> | 235 | <map_avatar_8.tga value="0be58a91-8065-c02b-7a12-2cc14dddbc37"/> |
235 | <map_avatar_16.tga value="db0dadd5-026a-88cf-f5c1-523a0a2daa3e"/> | 236 | <map_avatar_16.tga value="db0dadd5-026a-88cf-f5c1-523a0a2daa3e"/> |
diff --git a/linden/indra/newview/skins/xui/en-us/alerts.xml b/linden/indra/newview/skins/xui/en-us/alerts.xml index d32b46a..6c11a06 100644 --- a/linden/indra/newview/skins/xui/en-us/alerts.xml +++ b/linden/indra/newview/skins/xui/en-us/alerts.xml | |||
@@ -561,13 +561,12 @@ Objects: [N] | |||
561 | </alert> | 561 | </alert> |
562 | <alert modal="true" name="ReturnAllTopObjects"> | 562 | <alert modal="true" name="ReturnAllTopObjects"> |
563 | <message name="message"> | 563 | <message name="message"> |
564 | Are you sure you want to return all objects | 564 | Are you sure you want to return all listed objects back to their owner's inventory? |
565 | in this region back to their owner's inventory? | ||
566 | </message> | 565 | </message> |
567 | <option name="Return"> | 566 | <option name="Return"> |
568 | OK | 567 | OK |
569 | </option> | 568 | </option> |
570 | <option name="Cancel"> | 569 | <option default = "true" name="Cancel"> |
571 | Cancel | 570 | Cancel |
572 | </option> | 571 | </option> |
573 | </alert> | 572 | </alert> |
@@ -620,6 +619,17 @@ to set its Landing Point. | |||
620 | Please enter your email address. | 619 | Please enter your email address. |
621 | </message> | 620 | </message> |
622 | </alert> | 621 | </alert> |
622 | <alert modal="true" name="PromptMissingSubjMsg"> | ||
623 | <message name="message"> | ||
624 | Send postcard with the default subject or message? | ||
625 | </message> | ||
626 | <option name="OK"> | ||
627 | OK | ||
628 | </option> | ||
629 | <option name="Cancel"> | ||
630 | Cancel | ||
631 | </option> | ||
632 | </alert> | ||
623 | <alert modal="true" name="ErrorProcessingSnapshot"> | 633 | <alert modal="true" name="ErrorProcessingSnapshot"> |
624 | <message name="message"> | 634 | <message name="message"> |
625 | Error processing snapshot data | 635 | Error processing snapshot data |
@@ -798,6 +808,17 @@ Apply those changes and quit | |||
798 | Cancel | 808 | Cancel |
799 | </option> | 809 | </option> |
800 | </alert> | 810 | </alert> |
811 | <alert modal="true" name="SkipShowNextTimeDialogs"> | ||
812 | <message name="message"> | ||
813 | Disable all 'Show next time' dialogs? | ||
814 | </message> | ||
815 | <option name="OK"> | ||
816 | OK | ||
817 | </option> | ||
818 | <option name="Cancel"> | ||
819 | Cancel | ||
820 | </option> | ||
821 | </alert> | ||
801 | <alert modal="true" name="CacheWillClear"> | 822 | <alert modal="true" name="CacheWillClear"> |
802 | <message name="message"> | 823 | <message name="message"> |
803 | Cache will be cleared after you restart [SECOND_LIFE]. | 824 | Cache will be cleared after you restart [SECOND_LIFE]. |
@@ -3074,7 +3095,7 @@ can be attached to notecards. | |||
3074 | You are a member of too many groups to join | 3095 | You are a member of too many groups to join |
3075 | another one. Please leave at least one group | 3096 | another one. Please leave at least one group |
3076 | before joining this one, or decline the offer. | 3097 | before joining this one, or decline the offer. |
3077 | To leave a group select the 'My Groups..' option | 3098 | To leave a group select the 'Groups..' option |
3078 | from the 'Edit' menu. | 3099 | from the 'Edit' menu. |
3079 | [NAME] has invited you to join a group as a member. | 3100 | [NAME] has invited you to join a group as a member. |
3080 | [INVITE] | 3101 | [INVITE] |
@@ -3091,7 +3112,7 @@ from the 'Edit' menu. | |||
3091 | You are a member of too many groups to join | 3112 | You are a member of too many groups to join |
3092 | another one. Please leave at least one group | 3113 | another one. Please leave at least one group |
3093 | before joining this one, or decline the offer. | 3114 | before joining this one, or decline the offer. |
3094 | To leave a group select the 'My Groups..' option | 3115 | To leave a group select the 'Groups..' option |
3095 | from the 'Edit' menu. | 3116 | from the 'Edit' menu. |
3096 | [NAME] has invited you to join a group as an officer. | 3117 | [NAME] has invited you to join a group as an officer. |
3097 | [INVITE] | 3118 | [INVITE] |
@@ -4067,6 +4088,20 @@ will only work if a script is added with a money() event. | |||
4067 | Cancel | 4088 | Cancel |
4068 | </option> | 4089 | </option> |
4069 | </alert> | 4090 | </alert> |
4091 | <alert modal="true" name="ClickOpenF1Help"> | ||
4092 | <message name="message"> | ||
4093 | Visit the Second Life Support Web site? | ||
4094 | </message> | ||
4095 | <ignore name="ignore"> | ||
4096 | Ignore | ||
4097 | </ignore> | ||
4098 | <option name="Gotopage"> | ||
4099 | Go | ||
4100 | </option> | ||
4101 | <option name="Cancel"> | ||
4102 | Cancel | ||
4103 | </option> | ||
4104 | </alert> | ||
4070 | <alert modal="true" name="HelpReportAbuseEmailLL" > | 4105 | <alert modal="true" name="HelpReportAbuseEmailLL" > |
4071 | <message name="message"> | 4106 | <message name="message"> |
4072 | Use this tool to report violations of the Terms of Service | 4107 | Use this tool to report violations of the Terms of Service |
@@ -4342,5 +4377,27 @@ the contents of your Lost And Found folder? | |||
4342 | they are part of an attachment. | 4377 | they are part of an attachment. |
4343 | </message> | 4378 | </message> |
4344 | </alert> | 4379 | </alert> |
4345 | 4380 | <!-- alert for more information about the debit permission --> | |
4381 | <alert modal="true" name="DebitPermissionDetails" title="About Requests for the Debit Permission"> | ||
4382 | <message name="message"> | ||
4383 | <p>Granting this request gives a script ongoing permission to take Linden dollars (L$) from your account. To revoke this permission, the object's owner must delete the object or reset the scripts in the object.</p> | ||
4384 | </message> | ||
4385 | <option default="true" name="OK"> | ||
4386 | OK | ||
4387 | </option> | ||
4388 | </alert> | ||
4389 | <alert modal="true" name="AutoWearNewClothing"> | ||
4390 | <message name="message"> | ||
4391 | Would you like to automatically wear the clothing item you create? | ||
4392 | </message> | ||
4393 | <ignore name="ignore"> | ||
4394 | Automatically wear new clothing | ||
4395 | </ignore> | ||
4396 | <option name="Yes"> | ||
4397 | Yes | ||
4398 | </option> | ||
4399 | <option name="No"> | ||
4400 | No | ||
4401 | </option> | ||
4402 | </alert> | ||
4346 | </alerts> | 4403 | </alerts> |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_about_land.xml b/linden/indra/newview/skins/xui/en-us/floater_about_land.xml index 5d85deb..9366154 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_about_land.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_about_land.xml | |||
@@ -1,11 +1,11 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater bottom="-554" can_close="true" can_drag_on_left="false" can_minimize="true" | 2 | <floater bottom="-554" can_close="true" can_drag_on_left="false" can_minimize="true" |
3 | can_resize="false" can_tear_off="true" enabled="true" height="370" | 3 | can_resize="true" can_tear_off="true" enabled="true" height="385" |
4 | hidden="false" left="367" min_height="100" min_width="100" | 4 | hidden="false" left="367" min_height="385" min_width="460" |
5 | mouse_opaque="true" name="floaterland" rect_control="FloaterLandRect5" | 5 | mouse_opaque="true" name="floaterland" rect_control="FloaterLandRect5" |
6 | title="About Land" width="460"> | 6 | title="About Land" width="460"> |
7 | <tab_container bottom="-370" enabled="true" height="350" hidden="false" left="0" | 7 | <tab_container bottom="-370" enabled="true" height="350" hidden="false" left="0" |
8 | mouse_opaque="false" name="landtab" tab_position="top" width="460"> | 8 | mouse_opaque="false" name="landtab" tab_position="top" width="460" follows="left|top|right|bottom"> |
9 | <panel border="true" bottom="-349" enabled="true" follows="left|top|right|bottom" | 9 | <panel border="true" bottom="-349" enabled="true" follows="left|top|right|bottom" |
10 | height="333" hidden="false" label="General" left="1" mouse_opaque="true" | 10 | height="333" hidden="false" label="General" left="1" mouse_opaque="true" |
11 | name="land_general_panel" width="458"> | 11 | name="land_general_panel" width="458"> |
@@ -16,11 +16,11 @@ | |||
16 | Name: | 16 | Name: |
17 | </text> | 17 | </text> |
18 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-20" | 18 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-20" |
19 | enabled="true" follows="left|top" font="SansSerifSmall" | 19 | enabled="true" follows="left|top|right" font="SansSerifSmall" |
20 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" | 20 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" |
21 | max_length="63" mouse_opaque="true" name="Name" | 21 | max_length="63" mouse_opaque="true" name="Name" |
22 | select_all_on_focus_received="false" select_on_focus="false" | 22 | select_all_on_focus_received="false" select_on_focus="false" |
23 | text_readonly_color="0.576471 0.662745 0.835294 1" width="286" /> | 23 | text_readonly_color="0.576471 0.662745 0.835294 1" width="370" /> |
24 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 24 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
25 | bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top" | 25 | bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top" |
26 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" | 26 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" |
@@ -28,11 +28,11 @@ | |||
28 | Description: | 28 | Description: |
29 | </text> | 29 | </text> |
30 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-40" | 30 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-40" |
31 | enabled="true" follows="left|top" font="SansSerifSmall" | 31 | enabled="true" follows="left|top|right" font="SansSerifSmall" |
32 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" | 32 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" |
33 | max_length="127" mouse_opaque="true" name="Description" | 33 | max_length="127" mouse_opaque="true" name="Description" |
34 | select_all_on_focus_received="false" select_on_focus="false" | 34 | select_all_on_focus_received="false" select_on_focus="false" |
35 | text_readonly_color="0.576471 0.662745 0.835294 1" width="286" /> | 35 | text_readonly_color="0.576471 0.662745 0.835294 1" width="370" /> |
36 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 36 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
37 | bottom="-60" drop_shadow_visible="true" enabled="false" follows="left|top" | 37 | bottom="-60" drop_shadow_visible="true" enabled="false" follows="left|top" |
38 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" | 38 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" |
@@ -266,10 +266,10 @@ | |||
266 | width="350"> | 266 | width="350"> |
267 | Purchased land in this region may not be joined/subdivided. | 267 | Purchased land in this region may not be joined/subdivided. |
268 | </text> | 268 | </text> |
269 | <text_editor type="string" length="1" bottom="-305" embedded_items="false" enabled="false" follows="left|top" | 269 | <text_editor type="string" length="1" bottom="-325" embedded_items="false" enabled="false" follows="left|top|right|bottom" |
270 | font="SansSerifSmall" height="180" hidden="false" left="15" | 270 | font="SansSerifSmall" height="200" hidden="false" left="15" |
271 | max_length="65535" mouse_opaque="true" name="covenant_editor" | 271 | max_length="65535" mouse_opaque="true" name="covenant_editor" |
272 | text_readonly_color="1 1 1 1" width="375" word_wrap="true"> | 272 | text_readonly_color="1 1 1 1" width="420" word_wrap="true"> |
273 | There is no Covenant provided for this Estate. | 273 | There is no Covenant provided for this Estate. |
274 | </text_editor> | 274 | </text_editor> |
275 | <text hidden="true" name="can_resell"> | 275 | <text hidden="true" name="can_resell"> |
@@ -664,11 +664,11 @@ | |||
664 | Music URL: | 664 | Music URL: |
665 | </text> | 665 | </text> |
666 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-48" | 666 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-48" |
667 | enabled="true" follows="left|top" font="SansSerifSmall" | 667 | enabled="true" follows="left|top|right" font="SansSerifSmall" |
668 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" | 668 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" |
669 | max_length="255" mouse_opaque="true" name="music_url" | 669 | max_length="255" mouse_opaque="true" name="music_url" |
670 | select_all_on_focus_received="true" select_on_focus="true" | 670 | select_all_on_focus_received="true" select_on_focus="true" |
671 | text_readonly_color="0.576471 0.662745 0.835294 1" width="292" /> | 671 | text_readonly_color="0.576471 0.662745 0.835294 1" width="370" /> |
672 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 672 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
673 | bottom="-76" drop_shadow_visible="true" enabled="true" follows="left|top" | 673 | bottom="-76" drop_shadow_visible="true" enabled="true" follows="left|top" |
674 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" | 674 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" |
@@ -695,11 +695,11 @@ texture: | |||
695 | with content from this URL: | 695 | with content from this URL: |
696 | </text> | 696 | </text> |
697 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-172" | 697 | <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-172" |
698 | enabled="true" follows="left|top" font="SansSerifSmall" | 698 | enabled="true" follows="left|top|right" font="SansSerifSmall" |
699 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" | 699 | handle_edit_keys_directly="false" height="16" hidden="false" left="76" |
700 | max_length="255" mouse_opaque="true" name="media_url" | 700 | max_length="255" mouse_opaque="true" name="media_url" |
701 | select_all_on_focus_received="true" select_on_focus="true" | 701 | select_all_on_focus_received="true" select_on_focus="true" |
702 | text_readonly_color="0.576471 0.662745 0.835294 1" width="292" /> | 702 | text_readonly_color="0.576471 0.662745 0.835294 1" width="370" /> |
703 | <check_box bottom="-208" enabled="true" follows="left|top" font="SansSerifSmall" | 703 | <check_box bottom="-208" enabled="true" follows="left|top" font="SansSerifSmall" |
704 | height="16" hidden="false" initial_value="false" | 704 | height="16" hidden="false" initial_value="false" |
705 | label="Auto scale content (slower and reduced visual quality)" left="76" | 705 | label="Auto scale content (slower and reduced visual quality)" left="76" |
@@ -725,28 +725,30 @@ texture: | |||
725 | height="16" hidden="false" initial_value="false" | 725 | height="16" hidden="false" initial_value="false" |
726 | label="Avatars: (0 listed, 300 max)" left="4" mouse_opaque="true" | 726 | label="Avatars: (0 listed, 300 max)" left="4" mouse_opaque="true" |
727 | name="AccessCheck" radio_style="false" width="278" /> | 727 | name="AccessCheck" radio_style="false" width="278" /> |
728 | <name_list allow_calling_card_drop="false" background_visible="true" bottom="-144" | 728 | <name_list allow_calling_card_drop="false" background_visible="true" bottom="-234" |
729 | column_padding="5" draw_border="true" draw_heading="false" | 729 | column_padding="0" draw_border="true" draw_heading="true" heading_font="SansSerifSmall" heading_height="14" |
730 | draw_stripes="true" enabled="true" follows="left|top" height="80" | 730 | enabled="true" follows="left|top|right|bottom" height="170" |
731 | hidden="false" left="28" mouse_opaque="true" multi_select="false" | 731 | hidden="false" left="28" mouse_opaque="true" multi_select="false" |
732 | name="AccessList" width="254" /> | 732 | name="AccessList" width="400"> |
733 | <button bottom="-164" enabled="true" follows="left|top" font="SansSerifSmall" | 733 | <column label="Allowed Residents" name="name" relwidth="1.0" /> |
734 | </name_list> | ||
735 | <button bottom="-264" enabled="true" follows="left|bottom" font="SansSerifSmall" | ||
734 | halign="center" height="16" hidden="false" label="Add..." | 736 | halign="center" height="16" hidden="false" label="Add..." |
735 | label_selected="Add..." left="28" mouse_opaque="true" name="Add..." | 737 | label_selected="Add..." left="28" mouse_opaque="true" name="Add..." |
736 | scale_image="true" width="64" /> | 738 | scale_image="true" width="64" /> |
737 | <button bottom="-164" enabled="false" follows="left|top" font="SansSerifSmall" | 739 | <button bottom="-264" enabled="false" follows="left|bottom" font="SansSerifSmall" |
738 | halign="center" height="16" hidden="false" label="Remove" | 740 | halign="center" height="16" hidden="false" label="Remove" |
739 | label_selected="Remove" left="96" mouse_opaque="true" name="Remove" | 741 | label_selected="Remove" left="96" mouse_opaque="true" name="Remove" |
740 | scale_image="true" width="64" /> | 742 | scale_image="true" width="64" /> |
741 | <check_box bottom="-184" enabled="false" follows="left|top" font="SansSerifSmall" | 743 | <check_box bottom="-284" enabled="false" follows="left|bottom" font="SansSerifSmall" |
742 | height="16" hidden="false" initial_value="false" | 744 | height="16" hidden="false" initial_value="false" |
743 | label="Sell passes allowing temporary access:" left="28" | 745 | label="Sell passes allowing temporary access:" left="28" |
744 | mouse_opaque="true" name="PassCheck" radio_style="false" width="254" /> | 746 | mouse_opaque="true" name="PassCheck" radio_style="false" width="254" /> |
745 | <spinner bottom="-204" enabled="false" follows="left|top" height="16" hidden="false" | 747 | <spinner bottom="-304" enabled="false" follows="left|bottom" height="16" hidden="false" |
746 | increment="1" initial_val="10" label="Price in L$:" label_width="128" | 748 | increment="1" initial_val="10" label="Price in L$:" label_width="128" |
747 | left="76" max_val="500" min_val="1" mouse_opaque="true" name="PriceSpin" | 749 | left="76" max_val="500" min_val="1" mouse_opaque="true" name="PriceSpin" |
748 | width="206" /> | 750 | width="206" /> |
749 | <spinner bottom="-224" enabled="false" follows="left|top" height="16" hidden="false" | 751 | <spinner bottom="-324" enabled="false" follows="left|bottom" height="16" hidden="false" |
750 | increment="0.25" initial_val="1" label="Hours of access:" label_width="128" | 752 | increment="0.25" initial_val="1" label="Hours of access:" label_width="128" |
751 | left="76" max_val="24" min_val="0.01" mouse_opaque="true" name="HoursSpin" | 753 | left="76" max_val="24" min_val="0.01" mouse_opaque="true" name="HoursSpin" |
752 | width="206" /> | 754 | width="206" /> |
@@ -758,35 +760,37 @@ texture: | |||
758 | height="16" hidden="false" initial_value="false" | 760 | height="16" hidden="false" initial_value="false" |
759 | label="Ban these avatars: (0 listed, 300 max)" left="4" mouse_opaque="true" | 761 | label="Ban these avatars: (0 listed, 300 max)" left="4" mouse_opaque="true" |
760 | name="LandBanCheck" radio_style="false" width="278" /> | 762 | name="LandBanCheck" radio_style="false" width="278" /> |
761 | <name_list allow_calling_card_drop="false" background_visible="true" bottom="-104" | 763 | <name_list allow_calling_card_drop="false" background_visible="true" bottom="-200" |
762 | column_padding="5" draw_border="true" draw_heading="false" | 764 | column_padding="0" draw_border="true" draw_heading="true" heading_font="SansSerifSmall" heading_height="14" |
763 | draw_stripes="true" enabled="true" follows="left|top" height="80" | 765 | enabled="true" follows="left|top|right|bottom" height="170" |
764 | hidden="false" left="28" mouse_opaque="true" multi_select="false" | 766 | hidden="false" left="28" mouse_opaque="true" multi_select="false" |
765 | name="LandBanList" width="254" /> | 767 | name="LandBanList" width="400"> |
766 | <button bottom="-124" enabled="true" follows="left|top" font="SansSerifSmall" | 768 | <column label="Banned Residents" name="name" relwidth="1.0" /> |
769 | </name_list> | ||
770 | <button bottom="-230" enabled="true" follows="left|bottom" font="SansSerifSmall" | ||
767 | halign="center" height="16" hidden="false" label="Add..." | 771 | halign="center" height="16" hidden="false" label="Add..." |
768 | label_selected="Add..." left="28" mouse_opaque="true" name="Add..." | 772 | label_selected="Add..." left="28" mouse_opaque="true" name="Add..." |
769 | scale_image="true" width="64" /> | 773 | scale_image="true" width="64" /> |
770 | <button bottom="-124" enabled="false" follows="left|top" font="SansSerifSmall" | 774 | <button bottom="-230" enabled="false" follows="left|bottom" font="SansSerifSmall" |
771 | halign="center" height="16" hidden="false" label="Remove" | 775 | halign="center" height="16" hidden="false" label="Remove" |
772 | label_selected="Remove" left="96" mouse_opaque="true" name="Remove" | 776 | label_selected="Remove" left="96" mouse_opaque="true" name="Remove" |
773 | scale_image="true" width="64" /> | 777 | scale_image="true" width="64" /> |
774 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 778 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
775 | bottom="-144" drop_shadow_visible="true" enabled="true" follows="left|top" | 779 | bottom="-260" drop_shadow_visible="true" enabled="true" follows="left|bottom" |
776 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" | 780 | font="SansSerifSmall" h_pad="0" halign="left" height="16" hidden="false" |
777 | left="4" mouse_opaque="true" name="Deny by Payment Status:" v_pad="0" | 781 | left="4" mouse_opaque="true" name="Deny by Payment Status:" v_pad="0" |
778 | width="278"> | 782 | width="278"> |
779 | Deny by Payment Status: | 783 | Deny by Payment Status: |
780 | </text> | 784 | </text> |
781 | <check_box bottom="-164" enabled="true" follows="left|top" font="SansSerifSmall" | 785 | <check_box bottom="-280" enabled="true" follows="left|bottom" font="SansSerifSmall" |
782 | height="16" hidden="false" initial_value="false" | 786 | height="16" hidden="false" initial_value="false" |
783 | label="Deny No Payment Info On File" left="28" mouse_opaque="true" | 787 | label="Deny No Payment Info On File" left="28" mouse_opaque="true" |
784 | name="DenyAnonymousCheck" radio_style="false" width="254" /> | 788 | name="DenyAnonymousCheck" radio_style="false" width="254" /> |
785 | <check_box bottom="-184" enabled="true" follows="left|top" font="SansSerifSmall" | 789 | <check_box bottom="-300" enabled="true" follows="left|bottom" font="SansSerifSmall" |
786 | height="16" hidden="false" initial_value="false" | 790 | height="16" hidden="false" initial_value="false" |
787 | label="Deny Payment Info On File" left="28" mouse_opaque="true" | 791 | label="Deny Payment Info On File" left="28" mouse_opaque="true" |
788 | name="DenyIdentifiedCheck" radio_style="false" width="254" /> | 792 | name="DenyIdentifiedCheck" radio_style="false" width="254" /> |
789 | <check_box bottom="-204" enabled="true" follows="left|top" font="SansSerifSmall" | 793 | <check_box bottom="-320" enabled="true" follows="left|bottom" font="SansSerifSmall" |
790 | height="16" hidden="false" initial_value="false" | 794 | height="16" hidden="false" initial_value="false" |
791 | label="Deny Payment Info Used" left="28" mouse_opaque="true" | 795 | label="Deny Payment Info Used" left="28" mouse_opaque="true" |
792 | name="DenyTransactedCheck" radio_style="false" width="254" /> | 796 | name="DenyTransactedCheck" radio_style="false" width="254" /> |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_directory.xml b/linden/indra/newview/skins/xui/en-us/floater_directory.xml index 3beb3a8..70f01fc 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_directory.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_directory.xml | |||
@@ -105,8 +105,11 @@ | |||
105 | </combo_item> | 105 | </combo_item> |
106 | </combo_box> | 106 | </combo_box> |
107 | <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" | 107 | <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" |
108 | label="Search" label_selected="Search" left_delta="142" mouse_opaque="true" | 108 | label="Browse" label_selected="Browse" left_delta="142" mouse_opaque="true" |
109 | name="Search" width="70" /> | 109 | name="Browse" width="70" /> |
110 | <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" | ||
111 | label="Search" label_selected="Search" mouse_opaque="true" | ||
112 | name="Search" width="70" visible="false"/> | ||
110 | <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" | 113 | <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" |
111 | label="Place an Ad..." label_selected="Place an Ad..." left_delta="320" | 114 | label="Place an Ad..." label_selected="Place an Ad..." left_delta="320" |
112 | mouse_opaque="true" name="Place an Ad..." width="100" /> | 115 | mouse_opaque="true" name="Place an Ad..." width="100" /> |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml b/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml index 4b668c5..2cea9e7 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_image_preview.xml | |||
@@ -49,9 +49,9 @@ | |||
49 | </combo_item> | 49 | </combo_item> |
50 | </combo_box> | 50 | </combo_box> |
51 | <text bottom="250" follows="top|left" left="10" name="bad_image_text"> | 51 | <text bottom="250" follows="top|left" left="10" name="bad_image_text"> |
52 | Unable to read image. | 52 | Unable to read image. |
53 | 53 | ||
54 | Try saving image as 24 bit Targa (.tga). | 54 | Try saving image as 24 bit Targa (.tga). |
55 | </text> | 55 | </text> |
56 | <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="182" | 56 | <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="182" |
57 | name="cancel_btn" width="64" /> | 57 | name="cancel_btn" width="64" /> |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_inventory.xml b/linden/indra/newview/skins/xui/en-us/floater_inventory.xml index d9d8eb8..ffed294 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_inventory.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_inventory.xml | |||
@@ -38,6 +38,10 @@ | |||
38 | mouse_opaque="true" name="Show Filters" width="128"> | 38 | mouse_opaque="true" name="Show Filters" width="128"> |
39 | <on_click filter="" function="Inventory.ShowFilters" userdata="" /> | 39 | <on_click filter="" function="Inventory.ShowFilters" userdata="" /> |
40 | </menu_item_call> | 40 | </menu_item_call> |
41 | <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Reset Filters" left="0" | ||
42 | mouse_opaque="true" name="Reset Current" width="118"> | ||
43 | <on_click filter="" function="Inventory.ResetFilter" userdata="" /> | ||
44 | </menu_item_call> | ||
41 | <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Close All Folders" | 45 | <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Close All Folders" |
42 | left="0" mouse_opaque="true" name="Close All Folders" width="128"> | 46 | left="0" mouse_opaque="true" name="Close All Folders" width="128"> |
43 | <on_click filter="" function="Inventory.CloseAllFolders" userdata="" /> | 47 | <on_click filter="" function="Inventory.CloseAllFolders" userdata="" /> |
@@ -155,18 +159,5 @@ | |||
155 | <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" /> | 159 | <on_click filter="" function="Inventory.SetSortBy" userdata="systemfolderstotop" /> |
156 | </menu_item_check> | 160 | </menu_item_check> |
157 | </menu> | 161 | </menu> |
158 | <menu bottom_delta="28" color="0, 0, 0, 1" drop_shadow="true" height="49" | ||
159 | hidden="false" label="Filters" left="0" mouse_opaque="false" name="Filters" | ||
160 | opaque="true" tear_off="true" width="118"> | ||
161 | <menu_item_check bottom_delta="-18" control_name="Inventory.ShowFilters" height="18" | ||
162 | hidden="false" label="Modify Current" left="0" mouse_opaque="true" | ||
163 | name="Modify Current" width="118"> | ||
164 | <on_click filter="" function="Inventory.ShowFilters" userdata="" /> | ||
165 | </menu_item_check> | ||
166 | <menu_item_call bottom_delta="-18" height="18" hidden="false" label="Reset Current" left="0" | ||
167 | mouse_opaque="true" name="Reset Current" width="118"> | ||
168 | <on_click filter="" function="Inventory.ResetFilter" userdata="" /> | ||
169 | </menu_item_call> | ||
170 | </menu> | ||
171 | </menu_bar> | 162 | </menu_bar> |
172 | </floater> | 163 | </floater> |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_postcard.xml b/linden/indra/newview/skins/xui/en-us/floater_postcard.xml index 26fcbcb..27780a4 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_postcard.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_postcard.xml | |||
@@ -23,14 +23,14 @@ | |||
23 | name="subject_label"> | 23 | name="subject_label"> |
24 | Subject: | 24 | Subject: |
25 | </text> | 25 | </text> |
26 | <line_editor bottom_delta="-6" follows="left|top" height="20" left="120" max_length="100" | 26 | <line_editor bottom_delta="-6" follows="left|top" height="20" label="Type your subject here." |
27 | name="subject_form" width="150" /> | 27 | left="120" max_length="100" name="subject_form" width="150" /> |
28 | <text bottom_delta="-23" follows="top|left" font="SansSerif" left="12" | 28 | <text bottom_delta="-23" follows="top|left" font="SansSerif" left="12" |
29 | name="msg_label"> | 29 | name="msg_label"> |
30 | Message: | 30 | Message: |
31 | </text> | 31 | </text> |
32 | <text_editor bottom_delta="-150" follows="left|top|right|bottom" height="140" left="12" | 32 | <text_editor bottom_delta="-150" follows="left|top|right|bottom" height="140" |
33 | max_length="700" name="msg_form" width="420" /> | 33 | left="12" max_length="700" name="msg_form" width="420">Type your message here.</text_editor> |
34 | <check_box bottom_delta="-20" follows="left|bottom" height="18" label="Publish on the web" | 34 | <check_box bottom_delta="-20" follows="left|bottom" height="18" label="Publish on the web" |
35 | left="10" name="allow_publish_check" | 35 | left="10" name="allow_publish_check" |
36 | tool_tip="Publish this postcard on the web." /> | 36 | tool_tip="Publish this postcard on the web." /> |
@@ -47,4 +47,8 @@ | |||
47 | name="cancel_btn" width="150" /> | 47 | name="cancel_btn" width="150" /> |
48 | <button bottom_delta="0" follows="right|bottom" height="20" label="Send" left="285" | 48 | <button bottom_delta="0" follows="right|bottom" height="20" label="Send" left="285" |
49 | name="send_btn" width="150" /> | 49 | name="send_btn" width="150" /> |
50 | |||
51 | <text hidden="true" name="default_subject"> Postcard from Second Life. </text> | ||
52 | <text hidden="true" name="default_message"> Check this out! </text> | ||
53 | |||
50 | </floater> | 54 | </floater> |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml b/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml index a16448d..d0ae5da 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_texture_ctrl.xml | |||
@@ -54,4 +54,5 @@ | |||
54 | halign="center" height="20" hidden="false" label="Select" | 54 | halign="center" height="20" hidden="false" label="Select" |
55 | label_selected="Select" left="290" mouse_opaque="true" name="Select" | 55 | label_selected="Select" left="290" mouse_opaque="true" name="Select" |
56 | scale_image="true" width="100" /> | 56 | scale_image="true" width="100" /> |
57 | <text hidden="true" name="pick title">Pick: </text> | ||
57 | </floater> | 58 | </floater> |
diff --git a/linden/indra/newview/skins/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/xui/en-us/floater_tools.xml index 835edec..305a5ef 100644 --- a/linden/indra/newview/skins/xui/en-us/floater_tools.xml +++ b/linden/indra/newview/skins/xui/en-us/floater_tools.xml | |||
@@ -97,9 +97,10 @@ | |||
97 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 97 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" |
98 | hidden="false" initial_value="false" label="Select Texture" left="4" | 98 | hidden="false" initial_value="false" label="Select Texture" left="4" |
99 | mouse_opaque="true" name="radio select face" radio_style="true" width="114" /> | 99 | mouse_opaque="true" name="radio select face" radio_style="true" width="114" /> |
100 | <check_box bottom_delta="-15" follows="left|top" font="SansSerifSmall" height="16" | 100 | <check_box bottom_delta="-15" control_name="EditLinkedParts" follows="left|top" |
101 | hidden="false" initial_value="false" label="Edit linked parts" left="4" | 101 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" |
102 | mouse_opaque="true" name="checkbox edit linked parts" width="114" /> | 102 | label="Edit linked parts" left="4" mouse_opaque="true" |
103 | name="checkbox edit linked parts" width="114" /> | ||
103 | <check_box bottom="-79" control_name="SnapEnabled" follows="left|top" | 104 | <check_box bottom="-79" control_name="SnapEnabled" follows="left|top" |
104 | font="SansSerifSmall" height="16" hidden="false" initial_value="true" | 105 | font="SansSerifSmall" height="16" hidden="false" initial_value="true" |
105 | label="Use Grid" left="118" mouse_opaque="true" | 106 | label="Use Grid" left="118" mouse_opaque="true" |
diff --git a/linden/indra/newview/skins/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/xui/en-us/menu_viewer.xml index 6d4840f..c14ba4b 100644 --- a/linden/indra/newview/skins/xui/en-us/menu_viewer.xml +++ b/linden/indra/newview/skins/xui/en-us/menu_viewer.xml | |||
@@ -691,6 +691,13 @@ | |||
691 | </menu_item_call> | 691 | </menu_item_call> |
692 | <menu_item_separator bottom="-243" enabled="true" height="8" hidden="false" label="-----------" | 692 | <menu_item_separator bottom="-243" enabled="true" height="8" hidden="false" label="-----------" |
693 | left="0" mouse_opaque="true" name="separator3" width="250" /> | 693 | left="0" mouse_opaque="true" name="separator3" width="250" /> |
694 | <menu_item_check bottom="" enabled="false" height="" hidden="false" label="Edit Linked Parts" | ||
695 | left="" mouse_opaque="true" name="Edit Linked Parts" shortcut="" width=""> | ||
696 | <on_click function="ToggleControl" userdata="EditLinkedParts" /> | ||
697 | <on_click function="Tools.EditLinkedParts" userdata="" /> | ||
698 | <on_check control="EditLinkedParts" /> | ||
699 | <on_enable function="Tools.EnableToolNotPie" /> | ||
700 | </menu_item_check> | ||
694 | <menu_item_call bottom="-262" enabled="false" height="19" hidden="false" label="Link" left="0" | 701 | <menu_item_call bottom="-262" enabled="false" height="19" hidden="false" label="Link" left="0" |
695 | mouse_opaque="true" name="Link" shortcut="control|L" width="250"> | 702 | mouse_opaque="true" name="Link" shortcut="control|L" width="250"> |
696 | <on_click function="Tools.Link" userdata="" /> | 703 | <on_click function="Tools.Link" userdata="" /> |
diff --git a/linden/indra/newview/skins/xui/en-us/notify.xml b/linden/indra/newview/skins/xui/en-us/notify.xml index 54451ab..8e51bcb 100644 --- a/linden/indra/newview/skins/xui/en-us/notify.xml +++ b/linden/indra/newview/skins/xui/en-us/notify.xml | |||
@@ -634,7 +634,7 @@ Please notify the vendor from whom you purchased this item. | |||
634 | Failed to find [TYPE] named [DESC] in database. | 634 | Failed to find [TYPE] named [DESC] in database. |
635 | </message> | 635 | </message> |
636 | </notify> | 636 | </notify> |
637 | <notify name="ScriptTakeMoney" tip="false"> | 637 | <notify name="ScriptTakeMoney" tip="false" caution="true"> |
638 | <message name="message"> | 638 | <message name="message"> |
639 | Take Linden dollars (L$) from you | 639 | Take Linden dollars (L$) from you |
640 | </message> | 640 | </message> |
@@ -689,6 +689,7 @@ Please notify the vendor from whom you purchased this item. | |||
689 | Control your camera | 689 | Control your camera |
690 | </message> | 690 | </message> |
691 | </notify> | 691 | </notify> |
692 | <!-- the normal permissions prompt --> | ||
692 | <notify name="ScriptQuestion" tip="false"> | 693 | <notify name="ScriptQuestion" tip="false"> |
693 | <message name="message"> | 694 | <message name="message"> |
694 | '[OBJECTNAME]', an object owned by '[NAME]', would like to: | 695 | '[OBJECTNAME]', an object owned by '[NAME]', would like to: |
@@ -703,7 +704,39 @@ Is this OK? | |||
703 | No | 704 | No |
704 | </option> | 705 | </option> |
705 | </notify> | 706 | </notify> |
706 | <notify name="ScriptDialog" tip="false"> | 707 | <!-- the special chat messages to log when caution permissions have been granted or denied --> |
708 | <notify name="ScriptQuestionCautionChatGranted" tip="false"> | ||
709 | <message name="message">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been granted permission to: [PERMISSIONS].</message> | ||
710 | </notify> | ||
711 | <notify name="ScriptQuestionCautionChatDenied" tip="false"> | ||
712 | <message name="message">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].</message> | ||
713 | </notify> | ||
714 | <!-- the special title to display at the top of a caution permissions prompt --> | ||
715 | <notify name="ScriptQuestionCautionWarn" tip="false"> | ||
716 | <message name="message">An object wants permission to take Linden dollars (L$) from your account.</message> | ||
717 | </notify> | ||
718 | <!-- the caution permssions prompt, when auto-deny is disabled --> | ||
719 | <notify name="ScriptQuestionCaution" tip="false" caution="true"> | ||
720 | <message name="message"> | ||
721 | '[OBJECTNAME]', an object owned by '[NAME]', would like to: | ||
722 | |||
723 | [QUESTIONS] | ||
724 | If you do not trust this object and its creator, you should deny the request. For additional information, click the Details button. | ||
725 | |||
726 | Grant this request? | ||
727 | </message> | ||
728 | <option name="Grant"> | ||
729 | Grant | ||
730 | </option> | ||
731 | <option name="Deny" default="true"> | ||
732 | Deny | ||
733 | </option> | ||
734 | <!-- details button MUST be the last button --> | ||
735 | <option name="Details"> | ||
736 | Details... | ||
737 | </option> | ||
738 | </notify> | ||
739 | <notify name="ScriptDialog" tip="false"> | ||
707 | <message name="message"> | 740 | <message name="message"> |
708 | [FIRST] [LAST]'s '[TITLE]' | 741 | [FIRST] [LAST]'s '[TITLE]' |
709 | [MESSAGE] | 742 | [MESSAGE] |
@@ -815,6 +848,20 @@ Flexible objects may not be physical and must be phantom | |||
815 | until the flexible checkbox is unchecked. | 848 | until the flexible checkbox is unchecked. |
816 | </message> | 849 | </message> |
817 | </notify> | 850 | </notify> |
851 | <notify name="FirstDebugMenus" tip="false"> | ||
852 | <message name="message"> | ||
853 | You have enabled the Client and Server debugging menus. | ||
854 | These menus contain features useful for developers debugging Second Life. | ||
855 | To toggle these menus on and off press Ctrl-Alt-D. On a Mac press Cmd-Opt-Shift-D. | ||
856 | </message> | ||
857 | </notify> | ||
858 | <notify name="FirstSculptedPrim" tip="false"> | ||
859 | <message name="message"> | ||
860 | You are editting a sculpted prim. | ||
861 | Sculpted prims require a special texture to specify their shape. | ||
862 | You can find example sculpted textures in the system library. | ||
863 | </message> | ||
864 | </notify> | ||
818 | <notify name="MaxListSelectMessage" tip="true"> | 865 | <notify name="MaxListSelectMessage" tip="true"> |
819 | <message name="message"> | 866 | <message name="message"> |
820 | You may only select up to [MAX_SELECT] items | 867 | You may only select up to [MAX_SELECT] items |
diff --git a/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml b/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml index 4b76b18..20ccfe9 100644 --- a/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml +++ b/linden/indra/newview/skins/xui/en-us/panel_preferences_chat.xml | |||
@@ -38,21 +38,26 @@ | |||
38 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" | 38 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" |
39 | can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor" | 39 | can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor" |
40 | enabled="true" follows="left|top" height="56" hidden="false" label="Users" | 40 | enabled="true" follows="left|top" height="56" hidden="false" label="Users" |
41 | left="210" mouse_opaque="true" name="users" width="40" /> | 41 | left="200" mouse_opaque="true" name="users" width="40" /> |
42 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" | 42 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" |
43 | can_apply_immediately="true" color="0.7 0.9 0.7 1" | 43 | can_apply_immediately="true" color="0.7 0.9 0.7 1" |
44 | control_name="ObjectChatColor" enabled="true" follows="left|top" | 44 | control_name="ObjectChatColor" enabled="true" follows="left|top" |
45 | height="56" hidden="false" label="Objects" left="272" mouse_opaque="true" | 45 | height="56" hidden="false" label="Objects" left="252" mouse_opaque="true" |
46 | name="objects" width="40" /> | 46 | name="objects" width="40" /> |
47 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" | 47 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" |
48 | can_apply_immediately="true" color="0.7 0.9 0.7 1" | ||
49 | control_name="llOwnerSayChatColor" enabled="true" follows="left|top" | ||
50 | height="56" hidden="false" label="Owner" left="304" mouse_opaque="true" | ||
51 | name="objects" width="40" /> | ||
52 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" | ||
48 | can_apply_immediately="true" color="0 0 0 1" | 53 | can_apply_immediately="true" color="0 0 0 1" |
49 | control_name="BackgroundChatColor" enabled="true" follows="left|top" | 54 | control_name="BackgroundChatColor" enabled="true" follows="left|top" |
50 | height="56" hidden="false" label="Bubble" left="334" mouse_opaque="true" | 55 | height="56" hidden="false" label="Bubble" left="356" mouse_opaque="true" |
51 | name="background" width="40" /> | 56 | name="background" width="40" /> |
52 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" | 57 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-140" |
53 | can_apply_immediately="true" color="0.6 0.6 1 1" | 58 | can_apply_immediately="true" color="0.6 0.6 1 1" |
54 | control_name="HTMLLinkColor" enabled="true" follows="left|top" height="56" | 59 | control_name="HTMLLinkColor" enabled="true" follows="left|top" height="56" |
55 | hidden="false" label="URLs" left="396" mouse_opaque="true" name="links" | 60 | hidden="false" label="URLs" left="408" mouse_opaque="true" name="links" |
56 | width="40" /> | 61 | width="40" /> |
57 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 62 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
58 | bottom="-167" drop_shadow_visible="true" enabled="true" follows="left|top" | 63 | bottom="-167" drop_shadow_visible="true" enabled="true" follows="left|top" |
diff --git a/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml b/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml index e787d2a..73563ae 100644 --- a/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml +++ b/linden/indra/newview/skins/xui/en-us/panel_preferences_im.xml | |||
@@ -33,34 +33,57 @@ | |||
33 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" | 33 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" |
34 | label="Show timestamps in IM" left="148" mouse_opaque="true" | 34 | label="Show timestamps in IM" left="148" mouse_opaque="true" |
35 | name="show_timestamps_check" radio_style="false" width="237" /> | 35 | name="show_timestamps_check" radio_style="false" width="237" /> |
36 | <check_box bottom="-105" control_name="LogInstantMessages" enabled="true" | 36 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
37 | bottom="-105" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
38 | font="SansSerifSmall" h_pad="0" halign="left" height="10" hidden="false" | ||
39 | left="12" mouse_opaque="false" name="text_box3" v_pad="0" width="128"> | ||
40 | Busy Mode Response: | ||
41 | </text> | ||
42 | <text_editor type="string" length="1" bottom="-165" embedded_items="false" enabled="true" follows="left|top" | ||
43 | font="SansSerifSmall" height="70" hidden="false" left="148" | ||
44 | max_length="255" mouse_opaque="true" name="busy_response" width="330" | ||
45 | word_wrap="true" /> | ||
46 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
47 | bottom="-185" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
48 | font="SansSerifSmall" h_pad="0" halign="left" height="10" hidden="false" | ||
49 | left="12" mouse_opaque="false" name="text_box3" v_pad="0" width="128"> | ||
50 | Logging Options: | ||
51 | </text> | ||
52 | <check_box bottom="-205" control_name="LogInstantMessages" enabled="true" | ||
37 | follows="left|top" font="SansSerifSmall" height="16" hidden="false" | 53 | follows="left|top" font="SansSerifSmall" height="16" hidden="false" |
38 | initial_value="false" label="Log Instant Messages" left="148" | 54 | initial_value="false" label="Log Instant Messages" left="148" |
39 | mouse_opaque="true" name="log_instant_messages" radio_style="false" | 55 | mouse_opaque="true" name="log_instant_messages" radio_style="false" |
40 | width="237" /> | 56 | width="237" /> |
41 | <check_box bottom="-125" control_name="LogChat" enabled="true" follows="left|top" | 57 | <check_box bottom="-225" control_name="IMLogTimestamp" enabled="true" |
58 | follows="left|top" font="SansSerifSmall" height="16" hidden="false" | ||
59 | initial_value="false" label="Show timestamps in IM Log" left="148" | ||
60 | mouse_opaque="true" name="log_instant_messages_timestamp" radio_style="false" | ||
61 | width="237" /> | ||
62 | <check_box bottom="-245" control_name="LogShowHistory" enabled="true" follows="left|top" | ||
63 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" | ||
64 | label="Show end of last IM conversation" left="148" mouse_opaque="true" | ||
65 | name="log_show_history" radio_style="false" width="237" /> | ||
66 | <check_box bottom="-265" control_name="LogChat" enabled="true" follows="left|top" | ||
42 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" | 67 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" |
43 | label="Log Chat" left="148" mouse_opaque="true" name="log_chat" | 68 | label="Log Chat" left="148" mouse_opaque="true" name="log_chat" |
44 | radio_style="false" width="237" /> | 69 | radio_style="false" width="237" /> |
45 | <check_box bottom="-145" control_name="LogShowHistory" enabled="true" follows="left|top" | 70 | <check_box bottom="-285" control_name="LogChatTimestamp" enabled="true" follows="left|top" |
46 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" | 71 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" |
47 | label="Show end of last IM conversation" left="148" mouse_opaque="true" | 72 | label="Show timestamps in Chat Log" left="148" mouse_opaque="true" name="log_chat_timestamp" |
48 | name="log_show_history" radio_style="false" width="237" /> | 73 | radio_style="false" width="237" /> |
49 | <button bottom="-167" follows="right|bottom" font="SansSerif" halign="center" | 74 | <check_box bottom="-305" control_name="LogChatIM" enabled="true" follows="left|top" |
75 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" | ||
76 | label="Show incoming IM in Chat Log" left="148" mouse_opaque="true" name="log_chat_IM" | ||
77 | radio_style="false" width="237" /> | ||
78 | <check_box bottom="-325" control_name="LogTimestampDate" enabled="true" follows="left|top" | ||
79 | font="SansSerifSmall" height="16" hidden="false" initial_value="false" | ||
80 | label="Include Date with Timestamp" left="148" mouse_opaque="true" name="log_date_timestamp" | ||
81 | radio_style="false" width="237" /> | ||
82 | <button bottom="-347" follows="right|bottom" font="SansSerif" halign="center" | ||
50 | height="20" label="Change Path" label_selected="Change Path" left="170" | 83 | height="20" label="Change Path" label_selected="Change Path" left="170" |
51 | mouse_opaque="true" name="log_path_button" width="90" /> | 84 | mouse_opaque="true" name="log_path_button" width="90" /> |
52 | <line_editor border_drop_shadow_visible="false" border_visible="false" bottom="-166" | 85 | <line_editor border_drop_shadow_visible="false" border_visible="false" bottom="-346" |
53 | drop_shadow_visible="true" enabled="false" follows="top|left|right" | 86 | drop_shadow_visible="true" enabled="false" follows="top|left|right" |
54 | font="SansSerifSmall" halign="right" height="19" left="248" | 87 | font="SansSerifSmall" halign="right" height="19" left="248" |
55 | max_length="254" mouse_opaque="false" name="log_path_string" right="-20" /> | 88 | max_length="254" mouse_opaque="false" name="log_path_string" right="-20" /> |
56 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | ||
57 | bottom="-195" drop_shadow_visible="true" enabled="true" follows="left|top" | ||
58 | font="SansSerifSmall" h_pad="0" halign="left" height="10" hidden="false" | ||
59 | left="12" mouse_opaque="false" name="text_box3" v_pad="0" width="128"> | ||
60 | Busy Mode Response: | ||
61 | </text> | ||
62 | <text_editor type="string" length="1" bottom="-255" embedded_items="false" enabled="true" follows="left|top" | ||
63 | font="SansSerifSmall" height="70" hidden="false" left="148" | ||
64 | max_length="255" mouse_opaque="true" name="busy_response" width="330" | ||
65 | word_wrap="true" /> | ||
66 | </panel> | 89 | </panel> |
diff --git a/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml b/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml index 24c3b19..f471256 100644 --- a/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml +++ b/linden/indra/newview/skins/xui/en-us/panel_preferences_popups.xml | |||
@@ -4,13 +4,13 @@ | |||
4 | <text bottom="-20" follows="top|left" left="15" width="300"> | 4 | <text bottom="-20" follows="top|left" left="15" width="300"> |
5 | Do not show popups: | 5 | Do not show popups: |
6 | </text> | 6 | </text> |
7 | <scroll_list follows="top|left" height="100" left="15" name="disabled_popups" width="480" /> | 7 | <scroll_list follows="top|left" height="88" left="15" name="disabled_popups" width="480" /> |
8 | <button follows="top|left" height="20" label="Enable this popup" left="15" | 8 | <button follows="top|left" height="20" label="Enable this popup" left="15" |
9 | name="enable_popup" width="150" /> | 9 | name="enable_popup" width="150" /> |
10 | <text follows="top|left" left="15" width="128"> | 10 | <text follows="top|left" left="15" width="128"> |
11 | Show popups: | 11 | Show popups: |
12 | </text> | 12 | </text> |
13 | <scroll_list follows="top|left" height="100" left="15" name="enabled_popups" width="480" /> | 13 | <scroll_list follows="top|left" height="88" left="15" name="enabled_popups" width="480" /> |
14 | 14 | ||
15 | <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" |
16 | 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" |
@@ -32,6 +32,12 @@ | |||
32 | width="270" /> | 32 | width="270" /> |
33 | 33 | ||
34 | <button bottom_delta="-35" follows="top|left" height="20" | 34 | <button bottom_delta="-35" follows="top|left" height="20" |
35 | label="Reset 'Show next time' Dialogs..." left="15" | 35 | label="Show all 'Skip next time' Dialogs..." left="15" |
36 | name="reset_dialogs_btn" width="210" /> | 36 | name="reset_dialogs_btn" width="210" |
37 | tool_tip="Enable all of the optional popups and 'first time use' notifications."/> | ||
38 | |||
39 | <button bottom_delta="0" follows="top|right" height="20" | ||
40 | label="Skip all 'Skip next time' Dialogs..." left="-225" | ||
41 | name="skip_dialogs_btn" width="210" | ||
42 | tool_tip="Disable all of the optional popups and 'first time use' notifications."/> | ||
37 | </panel> | 43 | </panel> |
diff --git a/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml b/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml index b5c6858..fb917f6 100644 --- a/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml +++ b/linden/indra/newview/skins/xui/en-us/panel_region_debug.xml | |||
@@ -53,7 +53,7 @@ | |||
53 | tool_tip="Give 2 minute countdown and restart region" width="100" /> | 53 | tool_tip="Give 2 minute countdown and restart region" width="100" /> |
54 | <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" | 54 | <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" |
55 | left="120" name="restart_help" width="18" /> | 55 | left="120" name="restart_help" width="18" /> |
56 | <button bottom_delta="-20" follows="left|top" height="20" label="Cancel Restart" | 56 | <button bottom_delta="-20" follows="left|top" height="20" label="Delay Restart" |
57 | left="10" name="cancel_restart_btn" tool_tip="Cancel region restart" | 57 | left="10" name="cancel_restart_btn" tool_tip="Delay region restart by one hour" |
58 | width="100" /> | 58 | width="100" /> |
59 | </panel> | 59 | </panel> |
diff --git a/linden/indra/newview/viewer.cpp b/linden/indra/newview/viewer.cpp index 2f05754..7ff6cc3 100644 --- a/linden/indra/newview/viewer.cpp +++ b/linden/indra/newview/viewer.cpp | |||
@@ -81,7 +81,9 @@ | |||
81 | #if LL_LINUX | 81 | #if LL_LINUX |
82 | # include <dlfcn.h> // RTLD_LAZY | 82 | # include <dlfcn.h> // RTLD_LAZY |
83 | # include <execinfo.h> // backtrace - glibc only | 83 | # include <execinfo.h> // backtrace - glibc only |
84 | # ifndef LL_ELFBIN | ||
84 | #define LL_ELFBIN 1 | 85 | #define LL_ELFBIN 1 |
86 | # endif // LL_ELFBIN | ||
85 | # if LL_ELFBIN | 87 | # if LL_ELFBIN |
86 | # include <cxxabi.h> // for symbol demangling | 88 | # include <cxxabi.h> // for symbol demangling |
87 | # include "ELFIO.h" // for better backtraces | 89 | # include "ELFIO.h" // for better backtraces |
@@ -189,6 +191,7 @@ | |||
189 | #include "llnotify.h" | 191 | #include "llnotify.h" |
190 | #include "llselectmgr.h" | 192 | #include "llselectmgr.h" |
191 | #include "llsky.h" | 193 | #include "llsky.h" |
194 | #include "llsrv.h" | ||
192 | #include "llstartup.h" | 195 | #include "llstartup.h" |
193 | #include "llstatusbar.h" | 196 | #include "llstatusbar.h" |
194 | #include "llsurface.h" | 197 | #include "llsurface.h" |
@@ -337,8 +340,7 @@ static EUserServerDomain UserServerDefaultChoice = USERSERVER_DMZ; | |||
337 | BOOL gHackGodmode = FALSE; | 340 | BOOL gHackGodmode = FALSE; |
338 | #endif | 341 | #endif |
339 | 342 | ||
340 | // Only used if not empty. Otherwise uses value from table above. | 343 | std::vector<std::string> gLoginURIs; |
341 | static std::string gLoginURI; | ||
342 | static std::string gHelperURI; | 344 | static std::string gHelperURI; |
343 | 345 | ||
344 | LLAgent gAgent; | 346 | LLAgent gAgent; |
@@ -382,7 +384,7 @@ LLUUID gViewerDigest; // MD5 digest of the viewer's executable file. | |||
382 | LLPumpIO* gServicePump = NULL; | 384 | LLPumpIO* gServicePump = NULL; |
383 | S32 gNumSessions = 0; | 385 | S32 gNumSessions = 0; |
384 | 386 | ||
385 | BOOL gAllowAFK = TRUE; | 387 | BOOL gAllowIdleAFK = TRUE; |
386 | F32 gAFKTimeout = DEFAULT_AFK_TIMEOUT; | 388 | F32 gAFKTimeout = DEFAULT_AFK_TIMEOUT; |
387 | F32 gMouseSensitivity = 3.f; | 389 | F32 gMouseSensitivity = 3.f; |
388 | BOOL gInvertMouse = FALSE; | 390 | BOOL gInvertMouse = FALSE; |
@@ -2397,7 +2399,7 @@ static inline BOOL do_elfio_glibc_backtrace() | |||
2397 | } | 2399 | } |
2398 | // print offset from symbol start | 2400 | // print offset from symbol start |
2399 | fprintf(StraceFile, | 2401 | fprintf(StraceFile, |
2400 | "+0x%x) [%p]\n", | 2402 | "+0x%lx) [%p]\n", |
2401 | uintptr_t(array[btpos]) - | 2403 | uintptr_t(array[btpos]) - |
2402 | value, | 2404 | value, |
2403 | array[btpos]); | 2405 | array[btpos]); |
@@ -2429,8 +2431,57 @@ static inline BOOL do_elfio_glibc_backtrace() | |||
2429 | #endif // LL_ELFBIN | 2431 | #endif // LL_ELFBIN |
2430 | #endif // LL_LINUX | 2432 | #endif // LL_LINUX |
2431 | 2433 | ||
2434 | /* Report whether we're being run under the control of a debugger. */ | ||
2435 | static inline bool being_debugged() | ||
2436 | { | ||
2437 | static enum {unknown, no, yes} debugged = unknown; | ||
2438 | |||
2439 | if (debugged == unknown) | ||
2440 | { | ||
2441 | #if LL_LINUX | ||
2442 | pid_t ppid = getppid(); | ||
2443 | char *name; | ||
2444 | int ret; | ||
2445 | |||
2446 | ret = asprintf(&name, "/proc/%d/exe", ppid); | ||
2447 | if (ret != -1) | ||
2448 | { | ||
2449 | char buf[1024]; | ||
2450 | size_t n; | ||
2451 | |||
2452 | n = readlink(name, buf, sizeof(buf) - 1); | ||
2453 | if (n != -1) | ||
2454 | { | ||
2455 | char *base = strrchr(buf, '/'); | ||
2456 | buf[n + 1] = '\0'; | ||
2457 | if (base == NULL) | ||
2458 | { | ||
2459 | base = buf; | ||
2460 | } else { | ||
2461 | base += 1; | ||
2462 | } | ||
2463 | |||
2464 | if (strcmp(base, "gdb") == 0) | ||
2465 | { | ||
2466 | debugged = yes; | ||
2467 | } | ||
2468 | } | ||
2469 | free(name); | ||
2470 | } | ||
2471 | #endif // LL_LINUX | ||
2472 | } | ||
2473 | |||
2474 | return debugged == yes; | ||
2475 | } | ||
2476 | |||
2432 | void viewer_crash_callback() | 2477 | void viewer_crash_callback() |
2433 | { | 2478 | { |
2479 | // This will drop us into the debugger. | ||
2480 | if (being_debugged()) | ||
2481 | { | ||
2482 | abort(); | ||
2483 | } | ||
2484 | |||
2434 | // Returns whether a dialog was shown. | 2485 | // Returns whether a dialog was shown. |
2435 | // Only do the logic in here once | 2486 | // Only do the logic in here once |
2436 | if (gReportedCrash) | 2487 | if (gReportedCrash) |
@@ -3483,7 +3534,7 @@ void idle_network() | |||
3483 | void idle_afk_check() | 3534 | void idle_afk_check() |
3484 | { | 3535 | { |
3485 | // check idle timers | 3536 | // check idle timers |
3486 | if (gAwayTriggerTimer.getElapsedTimeF32() > gAFKTimeout) | 3537 | if (gAllowIdleAFK && (gAwayTriggerTimer.getElapsedTimeF32() > gAFKTimeout)) |
3487 | { | 3538 | { |
3488 | gAgent.setAFK(); | 3539 | gAgent.setAFK(); |
3489 | } | 3540 | } |
@@ -4970,7 +5021,7 @@ void saved_settings_to_globals() | |||
4970 | gAgent.mHideGroupTitle = gSavedSettings.getBOOL("RenderHideGroupTitle"); | 5021 | gAgent.mHideGroupTitle = gSavedSettings.getBOOL("RenderHideGroupTitle"); |
4971 | 5022 | ||
4972 | gDebugWindowProc = gSavedSettings.getBOOL("DebugWindowProc"); | 5023 | gDebugWindowProc = gSavedSettings.getBOOL("DebugWindowProc"); |
4973 | gAllowAFK = gSavedSettings.getBOOL("AllowAFK"); | 5024 | gAllowIdleAFK = gSavedSettings.getBOOL("AllowIdleAFK"); |
4974 | gAFKTimeout = gSavedSettings.getF32("AFKTimeout"); | 5025 | gAFKTimeout = gSavedSettings.getF32("AFKTimeout"); |
4975 | gMouseSensitivity = gSavedSettings.getF32("MouseSensitivity"); | 5026 | gMouseSensitivity = gSavedSettings.getF32("MouseSensitivity"); |
4976 | gInvertMouse = gSavedSettings.getBOOL("InvertMouse"); | 5027 | gInvertMouse = gSavedSettings.getBOOL("InvertMouse"); |
@@ -5044,7 +5095,7 @@ void cleanup_saved_settings() | |||
5044 | 5095 | ||
5045 | gSavedSettings.setBOOL("DebugWindowProc", gDebugWindowProc); | 5096 | gSavedSettings.setBOOL("DebugWindowProc", gDebugWindowProc); |
5046 | 5097 | ||
5047 | gSavedSettings.setBOOL("AllowAFK", gAllowAFK); | 5098 | gSavedSettings.setBOOL("AllowIdleAFK", gAllowIdleAFK); |
5048 | gSavedSettings.setBOOL("ShowObjectUpdates", gShowObjectUpdates); | 5099 | gSavedSettings.setBOOL("ShowObjectUpdates", gShowObjectUpdates); |
5049 | 5100 | ||
5050 | if (!gNoRender) | 5101 | if (!gNoRender) |
@@ -5483,7 +5534,14 @@ void catch_signals() | |||
5483 | // Handle the signals that default to causing a core image to be created, as per the man page on signal(2). | 5534 | // Handle the signals that default to causing a core image to be created, as per the man page on signal(2). |
5484 | signal(SIGILL, signal_handlers); | 5535 | signal(SIGILL, signal_handlers); |
5485 | signal(SIGTRAP, signal_handlers); | 5536 | signal(SIGTRAP, signal_handlers); |
5486 | signal(SIGABRT, signal_handlers); | 5537 | if (being_debugged()) |
5538 | { | ||
5539 | // If we're being run under the control of a debugger, give | ||
5540 | // ourselves a way to bail into the debugger. | ||
5541 | signal(SIGABRT, SIG_DFL); | ||
5542 | } else { | ||
5543 | signal(SIGABRT, signal_handlers); | ||
5544 | } | ||
5487 | signal(SIGFPE, signal_handlers); | 5545 | signal(SIGFPE, signal_handlers); |
5488 | signal(SIGBUS, signal_handlers); | 5546 | signal(SIGBUS, signal_handlers); |
5489 | signal(SIGSEGV, signal_handlers); | 5547 | signal(SIGSEGV, signal_handlers); |
@@ -5658,8 +5716,7 @@ int parse_args(int argc, char **argv) | |||
5658 | } | 5716 | } |
5659 | else if (!strcmp(argv[j], "-loginuri") && (++j < argc)) | 5717 | else if (!strcmp(argv[j], "-loginuri") && (++j < argc)) |
5660 | { | 5718 | { |
5661 | gLoginURI = argv[j]; | 5719 | gLoginURIs.push_back(utf8str_trim(argv[j])); |
5662 | gLoginURI = utf8str_trim(gLoginURI); | ||
5663 | } | 5720 | } |
5664 | else if (!strcmp(argv[j], "-helperuri") && (++j < argc)) | 5721 | else if (!strcmp(argv[j], "-helperuri") && (++j < argc)) |
5665 | { | 5722 | { |
@@ -5934,13 +5991,13 @@ void LLURLSimString::setString(const LLString& url) | |||
5934 | // static | 5991 | // static |
5935 | S32 LLURLSimString::parseGridIdx(const LLString& in_string, S32 idx0, S32* res, S32 max) | 5992 | S32 LLURLSimString::parseGridIdx(const LLString& in_string, S32 idx0, S32* res, S32 max) |
5936 | { | 5993 | { |
5937 | if ((std::string::size_type)idx0 == LLString::npos || in_string[idx0] != '/') | 5994 | if (idx0 == INT_MAX || in_string[idx0] != '/') |
5938 | { | 5995 | { |
5939 | return LLString::npos; // parse error | 5996 | return INT_MAX; // parse error |
5940 | } | 5997 | } |
5941 | idx0++; | 5998 | idx0++; |
5942 | std::string::size_type idx1 = in_string.find_first_of('/', idx0); | 5999 | std::string::size_type idx1 = in_string.find_first_of('/', idx0); |
5943 | S32 len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0; | 6000 | std::string::size_type len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0; |
5944 | LLString tstring = in_string.substr(idx0,len); | 6001 | LLString tstring = in_string.substr(idx0,len); |
5945 | S32 val = atoi(tstring.c_str()); | 6002 | S32 val = atoi(tstring.c_str()); |
5946 | *res = llclamp(val,0,max); | 6003 | *res = llclamp(val,0,max); |
@@ -5964,7 +6021,7 @@ bool LLURLSimString::parse() | |||
5964 | idx0 = sInstance.mSimString.find_first_not_of('/'); // strip any bogus initial '/' | 6021 | idx0 = sInstance.mSimString.find_first_not_of('/'); // strip any bogus initial '/' |
5965 | if (idx0 == LLString::npos) idx0 = 0; | 6022 | if (idx0 == LLString::npos) idx0 = 0; |
5966 | idx1 = sInstance.mSimString.find_first_of('/', idx0); | 6023 | idx1 = sInstance.mSimString.find_first_of('/', idx0); |
5967 | S32 len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0; | 6024 | std::string::size_type len = (idx1 == LLString::npos) ? LLString::npos : idx1-idx0; |
5968 | LLString tstring = sInstance.mSimString.substr(idx0,len); | 6025 | LLString tstring = sInstance.mSimString.substr(idx0,len); |
5969 | char* curlstr = curl_unescape(tstring.c_str(), tstring.size()); | 6026 | char* curlstr = curl_unescape(tstring.c_str(), tstring.size()); |
5970 | sInstance.mSimName = LLString(curlstr); | 6027 | sInstance.mSimName = LLString(curlstr); |
@@ -6577,14 +6634,14 @@ void cleanup_app() | |||
6577 | end_messaging_system(); | 6634 | end_messaging_system(); |
6578 | } | 6635 | } |
6579 | 6636 | ||
6580 | const std::string& getLoginURI() | 6637 | const std::vector<std::string>& getLoginURIs() |
6581 | { | 6638 | { |
6582 | if (gLoginURI.empty()) | 6639 | if (gLoginURIs.empty()) |
6583 | { | 6640 | { |
6584 | // not specified on the command line, use value from table | 6641 | // not specified on the command line, use value from table |
6585 | gLoginURI = gUserServerDomainName[gUserServerChoice].mLoginURI; | 6642 | gLoginURIs = LLSRV::rewriteURI(gUserServerDomainName[gUserServerChoice].mLoginURI); |
6586 | } | 6643 | } |
6587 | return gLoginURI; | 6644 | return gLoginURIs; |
6588 | } | 6645 | } |
6589 | 6646 | ||
6590 | const std::string& getHelperURI() | 6647 | const std::string& getHelperURI() |
diff --git a/linden/indra/newview/viewer.h b/linden/indra/newview/viewer.h index 141206c..22edc73 100644 --- a/linden/indra/newview/viewer.h +++ b/linden/indra/newview/viewer.h | |||
@@ -135,7 +135,7 @@ extern BOOL gDisplayNearestWater; | |||
135 | extern BOOL gDisplayFOV; | 135 | extern BOOL gDisplayFOV; |
136 | extern BOOL gForceRenderLandFence; | 136 | extern BOOL gForceRenderLandFence; |
137 | 137 | ||
138 | extern BOOL gAllowAFK; | 138 | extern BOOL gAllowIdleAFK; |
139 | extern BOOL gShowObjectUpdates; | 139 | extern BOOL gShowObjectUpdates; |
140 | 140 | ||
141 | extern BOOL gTeleportDisplay; | 141 | extern BOOL gTeleportDisplay; |
@@ -331,7 +331,7 @@ const LLUUID& agent_get_session_id(); | |||
331 | void agent_send_reliable_message(); | 331 | void agent_send_reliable_message(); |
332 | 332 | ||
333 | // Helpers for URIs | 333 | // Helpers for URIs |
334 | const std::string& getLoginURI(); | 334 | const std::vector<std::string>& getLoginURIs(); |
335 | const std::string& getHelperURI(); | 335 | const std::string& getHelperURI(); |
336 | 336 | ||
337 | #endif | 337 | #endif |
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index d22a7b5..2da4a22 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py | |||
@@ -430,7 +430,6 @@ class Linux_i686Manifest(LinuxManifest): | |||
430 | self.path("libssl.so.0.9.7") | 430 | self.path("libssl.so.0.9.7") |
431 | self.path("libexpat.so.1") | 431 | self.path("libexpat.so.1") |
432 | # self.path("libstdc++.so.6") | 432 | # self.path("libstdc++.so.6") |
433 | self.path("libelfio.so") | ||
434 | self.path("libuuid.so", "libuuid.so.1") | 433 | self.path("libuuid.so", "libuuid.so.1") |
435 | self.path("libSDL-1.2.so.0") | 434 | self.path("libSDL-1.2.so.0") |
436 | self.path("libtcmalloc.so.0") | 435 | self.path("libtcmalloc.so.0") |
@@ -442,7 +441,8 @@ class Linux_i686Manifest(LinuxManifest): | |||
442 | class Linux_x86_64Manifest(LinuxManifest): | 441 | class Linux_x86_64Manifest(LinuxManifest): |
443 | def construct(self): | 442 | def construct(self): |
444 | super(Linux_x86_64Manifest, self).construct() | 443 | super(Linux_x86_64Manifest, self).construct() |
445 | self.path("secondlife-x86_64-bin-stripped","bin/secondlife-bin") | 444 | self.path("secondlife-x86_64-bin-stripped","bin/do-not-directly-run-secondlife-bin") |
445 | # self.path("../linux_crash_logger/linux-crash-logger-x86_64-bin-stripped","linux-crash-logger.bin") | ||
446 | # TODO: I get the sense that this isn't fully fleshed out | 446 | # TODO: I get the sense that this isn't fully fleshed out |
447 | if self.prefix("../../libraries/x86_64-linux/lib_release_client", "lib"): | 447 | if self.prefix("../../libraries/x86_64-linux/lib_release_client", "lib"): |
448 | # self.path("libkdu_v42R.so") | 448 | # self.path("libkdu_v42R.so") |
diff --git a/linden/indra/test/llhttpnode_tut.cpp b/linden/indra/test/llhttpnode_tut.cpp index fb35f77..59d339c 100644 --- a/linden/indra/test/llhttpnode_tut.cpp +++ b/linden/indra/test/llhttpnode_tut.cpp | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file lliohttpserver_tut.cpp | 2 | * @file lliohttpnode_tut.cpp |
3 | * @date May 2006 | 3 | * @date May 2006 |
4 | * @brief HTTP server unit tests | 4 | * @brief HTTP server unit tests |
5 | * | 5 | * |
diff --git a/linden/indra/test/llmessageconfig_tut.cpp b/linden/indra/test/llmessageconfig_tut.cpp index 07e8e72..1d11cbf 100644 --- a/linden/indra/test/llmessageconfig_tut.cpp +++ b/linden/indra/test/llmessageconfig_tut.cpp | |||
@@ -39,7 +39,7 @@ namespace tut | |||
39 | { | 39 | { |
40 | ///var/tmp/babbage/dev/message-liberation/etc | 40 | ///var/tmp/babbage/dev/message-liberation/etc |
41 | static const char file_name[] = "/tmp/message.xml"; | 41 | static const char file_name[] = "/tmp/message.xml"; |
42 | static const F32 refreshRate = 6.0*1000.0; // milliseconds | 42 | static const long refreshRateMillis = 6000; |
43 | 43 | ||
44 | struct LLMessageConfigTestData { | 44 | struct LLMessageConfigTestData { |
45 | 45 | ||
@@ -65,7 +65,7 @@ namespace tut | |||
65 | LLSDSerialize::toPrettyXML(config, file); | 65 | LLSDSerialize::toPrettyXML(config, file); |
66 | } | 66 | } |
67 | file.close(); | 67 | file.close(); |
68 | ms_sleep(refreshRate); | 68 | ms_sleep(refreshRateMillis); |
69 | LLFrameTimer::updateFrameTime(); | 69 | LLFrameTimer::updateFrameTime(); |
70 | } | 70 | } |
71 | }; | 71 | }; |
diff --git a/linden/indra/test/llsdserialize_tut.cpp b/linden/indra/test/llsdserialize_tut.cpp index 497c529..09097d8 100644 --- a/linden/indra/test/llsdserialize_tut.cpp +++ b/linden/indra/test/llsdserialize_tut.cpp | |||
@@ -298,12 +298,12 @@ namespace tut | |||
298 | "Since opening to the public in 2003, it has grown explosively and today is " | 298 | "Since opening to the public in 2003, it has grown explosively and today is " |
299 | "inhabited by nearly 100,000 people from around the globe.\n" | 299 | "inhabited by nearly 100,000 people from around the globe.\n" |
300 | "\n" | 300 | "\n" |
301 | "From the moment you enter the World you’ll discover a vast digital continent, " | 301 | "From the moment you enter the World you'll discover a vast digital continent, " |
302 | "teeming with people, entertainment, experiences and opportunity. Once you’ve " | 302 | "teeming with people, entertainment, experiences and opportunity. Once you've " |
303 | "explored a bit, perhaps you’ll find a perfect parcel of land to build your " | 303 | "explored a bit, perhaps you'll find a perfect parcel of land to build your " |
304 | "house or business.\n" | 304 | "house or business.\n" |
305 | "\n" | 305 | "\n" |
306 | "You’ll also be surrounded by the Creations of your fellow residents. Because " | 306 | "You'll also be surrounded by the Creations of your fellow residents. Because " |
307 | "residents retain the rights to their digital creations, they can buy, sell " | 307 | "residents retain the rights to their digital creations, they can buy, sell " |
308 | "and trade with other residents.\n" | 308 | "and trade with other residents.\n" |
309 | "\n" | 309 | "\n" |
diff --git a/linden/indra/test/test.vcproj b/linden/indra/test/test.vcproj index 5df197a..cb9c7af 100644 --- a/linden/indra/test/test.vcproj +++ b/linden/indra/test/test.vcproj | |||
@@ -158,7 +158,7 @@ | |||
158 | Name="VCMIDLTool"/> | 158 | Name="VCMIDLTool"/> |
159 | <Tool | 159 | <Tool |
160 | Name="VCPostBuildEventTool" | 160 | Name="VCPostBuildEventTool" |
161 | CommandLine="$(TargetPath)"/> | 161 | CommandLine=""$(TargetPath)""/> |
162 | <Tool | 162 | <Tool |
163 | Name="VCPreBuildEventTool"/> | 163 | Name="VCPreBuildEventTool"/> |
164 | <Tool | 164 | <Tool |
diff --git a/linden/libraries/include/llmozlib.h b/linden/libraries/include/llmozlib.h index 755818b..90717b2 100644 --- a/linden/libraries/include/llmozlib.h +++ b/linden/libraries/include/llmozlib.h | |||
@@ -1,8 +1,8 @@ | |||
1 | /** | 1 | /** |
2 | * @file llmozlib.h | 2 | * @file llmozlib.h |
3 | * @brief Linden Lab Mozilla wrapper. | 3 | * @brief Linden Lab Mozilla wrapper. |
4 | * | 4 | * |
5 | * Copyright (c) 2006-2007, Linden Research, Inc. | 5 | * Copyright (c) 2006-2007, Linden Research, Inc. |
6 | * | 6 | * |
7 | * Second Life Viewer Source Code | 7 | * Second Life Viewer Source Code |
8 | * The source code in this file ("Source Code") is provided by Linden Lab | 8 | * The source code in this file ("Source Code") is provided by Linden Lab |
@@ -23,276 +23,276 @@ | |||
23 | * | 23 | * |
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | 24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO |
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | 25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, |
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifndef LLMOZLIB_H | 29 | #ifndef LLMOZLIB_H |
30 | #define LLMOZLIB_H | 30 | #define LLMOZLIB_H |
31 | 31 | ||
32 | #include <string> | 32 | #include <string> |
33 | #include <map> | 33 | #include <map> |
34 | 34 | ||
35 | class LLEmbeddedBrowser; | 35 | class LLEmbeddedBrowser; |
36 | class LLEmbeddedBrowserWindow; | 36 | class LLEmbeddedBrowserWindow; |
37 | 37 | ||
38 | //////////////////////////////////////////////////////////////////////////////// | 38 | //////////////////////////////////////////////////////////////////////////////// |
39 | // data class that is passed with an event | 39 | // data class that is passed with an event |
40 | class LLEmbeddedBrowserWindowEvent | 40 | class LLEmbeddedBrowserWindowEvent |
41 | { | 41 | { |
42 | public: | 42 | public: |
43 | LLEmbeddedBrowserWindowEvent( int eventWindowIdIn ) : | 43 | LLEmbeddedBrowserWindowEvent( int eventWindowIdIn ) : |
44 | mEventWindowId( eventWindowIdIn ) | 44 | mEventWindowId( eventWindowIdIn ) |
45 | { | 45 | { |
46 | }; | 46 | }; |
47 | 47 | ||
48 | LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, int intValIn ) : | 48 | LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, int intValIn ) : |
49 | mEventWindowId( eventWindowIdIn ), | 49 | mEventWindowId( eventWindowIdIn ), |
50 | mIntVal( intValIn ) | 50 | mIntVal( intValIn ) |
51 | { | 51 | { |
52 | }; | 52 | }; |
53 | 53 | ||
54 | LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string stringValIn ) : | 54 | LLEmbeddedBrowserWindowEvent( int eventWindowIdIn, std::string stringValIn ) : |
55 | mEventWindowId( eventWindowIdIn ), | 55 | mEventWindowId( eventWindowIdIn ), |
56 | mStringVal( stringValIn ) | 56 | mStringVal( stringValIn ) |
57 | { | 57 | { |
58 | }; | 58 | }; |
59 | 59 | ||
60 | virtual ~LLEmbeddedBrowserWindowEvent() | 60 | virtual ~LLEmbeddedBrowserWindowEvent() |
61 | { | 61 | { |
62 | }; | 62 | }; |
63 | 63 | ||
64 | int getEventWindowId() const | 64 | int getEventWindowId() const |
65 | { | 65 | { |
66 | return mEventWindowId; | 66 | return mEventWindowId; |
67 | }; | 67 | }; |
68 | 68 | ||
69 | int getIntValue() const | 69 | int getIntValue() const |
70 | { | 70 | { |
71 | return mIntVal; | 71 | return mIntVal; |
72 | }; | 72 | }; |
73 | 73 | ||
74 | std::string getStringValue() const | 74 | std::string getStringValue() const |
75 | { | 75 | { |
76 | return mStringVal; | 76 | return mStringVal; |
77 | }; | 77 | }; |
78 | 78 | ||
79 | private: | 79 | private: |
80 | int mEventWindowId; | 80 | int mEventWindowId; |
81 | int mIntVal; | 81 | int mIntVal; |
82 | std::string mStringVal; | 82 | std::string mStringVal; |
83 | }; | 83 | }; |
84 | 84 | ||
85 | //////////////////////////////////////////////////////////////////////////////// | 85 | //////////////////////////////////////////////////////////////////////////////// |
86 | // Override these methods to observe browser events | 86 | // Override these methods to observe browser events |
87 | class LLEmbeddedBrowserWindowObserver | 87 | class LLEmbeddedBrowserWindowObserver |
88 | { | 88 | { |
89 | public: | 89 | public: |
90 | virtual ~LLEmbeddedBrowserWindowObserver() { }; | 90 | virtual ~LLEmbeddedBrowserWindowObserver() { }; |
91 | 91 | ||
92 | typedef LLEmbeddedBrowserWindowEvent EventType; | 92 | typedef LLEmbeddedBrowserWindowEvent EventType; |
93 | virtual void onNavigateBegin( const EventType& eventIn ) { }; | 93 | virtual void onNavigateBegin( const EventType& eventIn ) { }; |
94 | virtual void onNavigateComplete( const EventType& eventIn ) { }; | 94 | virtual void onNavigateComplete( const EventType& eventIn ) { }; |
95 | virtual void onUpdateProgress( const EventType& eventIn ) { }; | 95 | virtual void onUpdateProgress( const EventType& eventIn ) { }; |
96 | virtual void onStatusTextChange( const EventType& eventIn ) { }; | 96 | virtual void onStatusTextChange( const EventType& eventIn ) { }; |
97 | virtual void onLocationChange( const EventType& eventIn ) { }; | 97 | virtual void onLocationChange( const EventType& eventIn ) { }; |
98 | virtual void onClickLinkHref( const EventType& eventIn ) { }; | 98 | virtual void onClickLinkHref( const EventType& eventIn ) { }; |
99 | virtual void onClickLinkSecondLife( const EventType& eventIn ) { }; | 99 | virtual void onClickLinkSecondLife( const EventType& eventIn ) { }; |
100 | }; | 100 | }; |
101 | 101 | ||
102 | //////////////////////////////////////////////////////////////////////////////// | 102 | //////////////////////////////////////////////////////////////////////////////// |
103 | // | 103 | // |
104 | class LLMozLib | 104 | class LLMozLib |
105 | { | 105 | { |
106 | public: | 106 | public: |
107 | virtual ~LLMozLib(); | 107 | virtual ~LLMozLib(); |
108 | 108 | ||
109 | // singleton access | 109 | // singleton access |
110 | static LLMozLib* getInstance(); | 110 | static LLMozLib* getInstance(); |
111 | 111 | ||
112 | // housekeeping | 112 | // housekeeping |
113 | bool init( std::string applicationDirIn, std::string componentDirIn, std::string profileDirIn ); | 113 | bool init( std::string applicationDirIn, std::string componentDirIn, std::string profileDirIn ); |
114 | bool reset(); | 114 | bool reset(); |
115 | bool setHttpProxy( bool enabledIn, std::string addressIn, int portIn ); | 115 | bool setHttpProxy( bool enabledIn, std::string addressIn, int portIn ); |
116 | bool clearCache(); | 116 | bool clearCache(); |
117 | bool enableCookies( bool enabledIn ); | 117 | bool enableCookies( bool enabledIn ); |
118 | bool clearAllCookies(); | 118 | bool clearAllCookies(); |
119 | bool enablePlugins( bool enabledIn ); | 119 | bool enablePlugins( bool enabledIn ); |
120 | int getLastError(); | 120 | int getLastError(); |
121 | const std::string getVersion(); | 121 | const std::string getVersion(); |
122 | void setBrowserAgentId( std::string idIn ); | 122 | void setBrowserAgentId( std::string idIn ); |
123 | 123 | ||
124 | // browser window | 124 | // browser window |
125 | int createBrowserWindow( void* nativeWindowHandleIn, int browserWindowWidthIn, int browserWindowHeightIn ); | 125 | int createBrowserWindow( void* nativeWindowHandleIn, int browserWindowWidthIn, int browserWindowHeightIn ); |
126 | bool destroyBrowserWindow( int browserWindowIdIn ); | 126 | bool destroyBrowserWindow( int browserWindowIdIn ); |
127 | bool setSize( int browserWindowIdIn, int widthIn, int heightIn ); | 127 | bool setSize( int browserWindowIdIn, int widthIn, int heightIn ); |
128 | bool scrollByLines( int browserWindowIdIn, int linesIn ); | 128 | bool scrollByLines( int browserWindowIdIn, int linesIn ); |
129 | void setBackgroundColor( int browserWindowIdIn, int redIn, int greenIn, int blueIn ); | 129 | void setBackgroundColor( int browserWindowIdIn, int redIn, int greenIn, int blueIn ); |
130 | 130 | ||
131 | // observer interface | 131 | // observer interface |
132 | bool addObserver( int browserWindowIdIn, LLEmbeddedBrowserWindowObserver* subjectIn ); | 132 | bool addObserver( int browserWindowIdIn, LLEmbeddedBrowserWindowObserver* subjectIn ); |
133 | bool remObserver( int browserWindowIdIn, LLEmbeddedBrowserWindowObserver* subjectIn ); | 133 | bool remObserver( int browserWindowIdIn, LLEmbeddedBrowserWindowObserver* subjectIn ); |
134 | 134 | ||
135 | // navigation | 135 | // navigation |
136 | bool navigateTo( int browserWindowIdIn, const std::string uriIn ); | 136 | bool navigateTo( int browserWindowIdIn, const std::string uriIn ); |
137 | bool navigateStop( int browserWindowIdIn ); | 137 | bool navigateStop( int browserWindowIdIn ); |
138 | bool canNavigateBack( int browserWindowIdIn ); | 138 | bool canNavigateBack( int browserWindowIdIn ); |
139 | bool navigateBack( int browserWindowIdIn ); | 139 | bool navigateBack( int browserWindowIdIn ); |
140 | bool canNavigateForward( int browserWindowIdIn ); | 140 | bool canNavigateForward( int browserWindowIdIn ); |
141 | bool navigateForward( int browserWindowIdIn ); | 141 | bool navigateForward( int browserWindowIdIn ); |
142 | 142 | ||
143 | // access to rendered bitmap data | 143 | // access to rendered bitmap data |
144 | const unsigned char* grabBrowserWindow( int browserWindowIdIn ); | 144 | const unsigned char* grabBrowserWindow( int browserWindowIdIn ); |
145 | const unsigned char* getBrowserWindowPixels( int browserWindowIdIn ); | 145 | const unsigned char* getBrowserWindowPixels( int browserWindowIdIn ); |
146 | const int getBrowserWidth( int browserWindowIdIn ); | 146 | const int getBrowserWidth( int browserWindowIdIn ); |
147 | const int getBrowserHeight( int browserWindowIdIn ); | 147 | const int getBrowserHeight( int browserWindowIdIn ); |
148 | const int getBrowserDepth( int browserWindowIdIn ); | 148 | const int getBrowserDepth( int browserWindowIdIn ); |
149 | const int getBrowserRowSpan( int browserWindowIdIn ); | 149 | const int getBrowserRowSpan( int browserWindowIdIn ); |
150 | 150 | ||
151 | // mouse/keyboard interaction | 151 | // mouse/keyboard interaction |
152 | bool mouseDown( int browserWindowIdIn, int xPosIn, int yPosIn ); | 152 | bool mouseDown( int browserWindowIdIn, int xPosIn, int yPosIn ); |
153 | bool mouseUp( int browserWindowIdIn, int xPosIn, int yPosIn ); | 153 | bool mouseUp( int browserWindowIdIn, int xPosIn, int yPosIn ); |
154 | bool mouseMove( int browserWindowIdIn, int xPosIn, int yPosIn ); | 154 | bool mouseMove( int browserWindowIdIn, int xPosIn, int yPosIn ); |
155 | bool keyPress( int browserWindowIdIn, int keyCodeIn ); | 155 | bool keyPress( int browserWindowIdIn, int keyCodeIn ); |
156 | bool unicodeInput ( int browserWindowIdIn, unsigned long uni_char ); | 156 | bool unicodeInput ( int browserWindowIdIn, unsigned long uni_char ); |
157 | bool focusBrowser( int browserWindowIdIn, bool focusBrowserIn ); | 157 | bool focusBrowser( int browserWindowIdIn, bool focusBrowserIn ); |
158 | 158 | ||
159 | private: | 159 | private: |
160 | LLMozLib(); | 160 | LLMozLib(); |
161 | LLEmbeddedBrowserWindow* getBrowserWindowFromWindowId( int browserWindowIdIn ); | 161 | LLEmbeddedBrowserWindow* getBrowserWindowFromWindowId( int browserWindowIdIn ); |
162 | static LLMozLib* sInstance; | 162 | static LLMozLib* sInstance; |
163 | const int mMaxBrowserWindows; | 163 | const int mMaxBrowserWindows; |
164 | LLEmbeddedBrowserWindow** mBrowserWindowList; | 164 | LLEmbeddedBrowserWindow** mBrowserWindowList; |
165 | }; | 165 | }; |
166 | 166 | ||
167 | 167 | ||
168 | // Mozilla virtual keycodes. | 168 | // Mozilla virtual keycodes. |
169 | // We don't want to suck in Mozilla headers so we copy these consts | 169 | // We don't want to suck in Mozilla headers so we copy these consts |
170 | // from nsIDOMKeyEvent.idl. | 170 | // from nsIDOMKeyEvent.idl. |
171 | 171 | ||
172 | const unsigned long LL_DOM_VK_CANCEL = 0x03; | 172 | const unsigned long LL_DOM_VK_CANCEL = 0x03; |
173 | const unsigned long LL_DOM_VK_HELP = 0x06; | 173 | const unsigned long LL_DOM_VK_HELP = 0x06; |
174 | const unsigned long LL_DOM_VK_BACK_SPACE = 0x08; | 174 | const unsigned long LL_DOM_VK_BACK_SPACE = 0x08; |
175 | const unsigned long LL_DOM_VK_TAB = 0x09; | 175 | const unsigned long LL_DOM_VK_TAB = 0x09; |
176 | const unsigned long LL_DOM_VK_CLEAR = 0x0C; | 176 | const unsigned long LL_DOM_VK_CLEAR = 0x0C; |
177 | const unsigned long LL_DOM_VK_RETURN = 0x0D; | 177 | const unsigned long LL_DOM_VK_RETURN = 0x0D; |
178 | const unsigned long LL_DOM_VK_ENTER = 0x0E; | 178 | const unsigned long LL_DOM_VK_ENTER = 0x0E; |
179 | const unsigned long LL_DOM_VK_SHIFT = 0x10; | 179 | const unsigned long LL_DOM_VK_SHIFT = 0x10; |
180 | const unsigned long LL_DOM_VK_CONTROL = 0x11; | 180 | const unsigned long LL_DOM_VK_CONTROL = 0x11; |
181 | const unsigned long LL_DOM_VK_ALT = 0x12; | 181 | const unsigned long LL_DOM_VK_ALT = 0x12; |
182 | const unsigned long LL_DOM_VK_PAUSE = 0x13; | 182 | const unsigned long LL_DOM_VK_PAUSE = 0x13; |
183 | const unsigned long LL_DOM_VK_CAPS_LOCK = 0x14; | 183 | const unsigned long LL_DOM_VK_CAPS_LOCK = 0x14; |
184 | const unsigned long LL_DOM_VK_ESCAPE = 0x1B; | 184 | const unsigned long LL_DOM_VK_ESCAPE = 0x1B; |
185 | const unsigned long LL_DOM_VK_SPACE = 0x20; | 185 | const unsigned long LL_DOM_VK_SPACE = 0x20; |
186 | const unsigned long LL_DOM_VK_PAGE_UP = 0x21; | 186 | const unsigned long LL_DOM_VK_PAGE_UP = 0x21; |
187 | const unsigned long LL_DOM_VK_PAGE_DOWN = 0x22; | 187 | const unsigned long LL_DOM_VK_PAGE_DOWN = 0x22; |
188 | const unsigned long LL_DOM_VK_END = 0x23; | 188 | const unsigned long LL_DOM_VK_END = 0x23; |
189 | const unsigned long LL_DOM_VK_HOME = 0x24; | 189 | const unsigned long LL_DOM_VK_HOME = 0x24; |
190 | const unsigned long LL_DOM_VK_LEFT = 0x25; | 190 | const unsigned long LL_DOM_VK_LEFT = 0x25; |
191 | const unsigned long LL_DOM_VK_UP = 0x26; | 191 | const unsigned long LL_DOM_VK_UP = 0x26; |
192 | const unsigned long LL_DOM_VK_RIGHT = 0x27; | 192 | const unsigned long LL_DOM_VK_RIGHT = 0x27; |
193 | const unsigned long LL_DOM_VK_DOWN = 0x28; | 193 | const unsigned long LL_DOM_VK_DOWN = 0x28; |
194 | const unsigned long LL_DOM_VK_PRINTSCREEN = 0x2C; | 194 | const unsigned long LL_DOM_VK_PRINTSCREEN = 0x2C; |
195 | const unsigned long LL_DOM_VK_INSERT = 0x2D; | 195 | const unsigned long LL_DOM_VK_INSERT = 0x2D; |
196 | const unsigned long LL_DOM_VK_DELETE = 0x2E; | 196 | const unsigned long LL_DOM_VK_DELETE = 0x2E; |
197 | 197 | ||
198 | // LL_DOM_VK_0 - LL_DOM_VK_9 match their ASCII values | 198 | // LL_DOM_VK_0 - LL_DOM_VK_9 match their ASCII values |
199 | const unsigned long LL_DOM_VK_0 = 0x30; | 199 | const unsigned long LL_DOM_VK_0 = 0x30; |
200 | const unsigned long LL_DOM_VK_1 = 0x31; | 200 | const unsigned long LL_DOM_VK_1 = 0x31; |
201 | const unsigned long LL_DOM_VK_2 = 0x32; | 201 | const unsigned long LL_DOM_VK_2 = 0x32; |
202 | const unsigned long LL_DOM_VK_3 = 0x33; | 202 | const unsigned long LL_DOM_VK_3 = 0x33; |
203 | const unsigned long LL_DOM_VK_4 = 0x34; | 203 | const unsigned long LL_DOM_VK_4 = 0x34; |
204 | const unsigned long LL_DOM_VK_5 = 0x35; | 204 | const unsigned long LL_DOM_VK_5 = 0x35; |
205 | const unsigned long LL_DOM_VK_6 = 0x36; | 205 | const unsigned long LL_DOM_VK_6 = 0x36; |
206 | const unsigned long LL_DOM_VK_7 = 0x37; | 206 | const unsigned long LL_DOM_VK_7 = 0x37; |
207 | const unsigned long LL_DOM_VK_8 = 0x38; | 207 | const unsigned long LL_DOM_VK_8 = 0x38; |
208 | const unsigned long LL_DOM_VK_9 = 0x39; | 208 | const unsigned long LL_DOM_VK_9 = 0x39; |
209 | 209 | ||
210 | const unsigned long LL_DOM_VK_SEMICOLON = 0x3B; | 210 | const unsigned long LL_DOM_VK_SEMICOLON = 0x3B; |
211 | const unsigned long LL_DOM_VK_EQUALS = 0x3D; | 211 | const unsigned long LL_DOM_VK_EQUALS = 0x3D; |
212 | 212 | ||
213 | // LL_DOM_VK_A - LL_DOM_VK_Z match their ASCII values | 213 | // LL_DOM_VK_A - LL_DOM_VK_Z match their ASCII values |
214 | const unsigned long LL_DOM_VK_A = 0x41; | 214 | const unsigned long LL_DOM_VK_A = 0x41; |
215 | const unsigned long LL_DOM_VK_B = 0x42; | 215 | const unsigned long LL_DOM_VK_B = 0x42; |
216 | const unsigned long LL_DOM_VK_C = 0x43; | 216 | const unsigned long LL_DOM_VK_C = 0x43; |
217 | const unsigned long LL_DOM_VK_D = 0x44; | 217 | const unsigned long LL_DOM_VK_D = 0x44; |
218 | const unsigned long LL_DOM_VK_E = 0x45; | 218 | const unsigned long LL_DOM_VK_E = 0x45; |
219 | const unsigned long LL_DOM_VK_F = 0x46; | 219 | const unsigned long LL_DOM_VK_F = 0x46; |
220 | const unsigned long LL_DOM_VK_G = 0x47; | 220 | const unsigned long LL_DOM_VK_G = 0x47; |
221 | const unsigned long LL_DOM_VK_H = 0x48; | 221 | const unsigned long LL_DOM_VK_H = 0x48; |
222 | const unsigned long LL_DOM_VK_I = 0x49; | 222 | const unsigned long LL_DOM_VK_I = 0x49; |
223 | const unsigned long LL_DOM_VK_J = 0x4A; | 223 | const unsigned long LL_DOM_VK_J = 0x4A; |
224 | const unsigned long LL_DOM_VK_K = 0x4B; | 224 | const unsigned long LL_DOM_VK_K = 0x4B; |
225 | const unsigned long LL_DOM_VK_L = 0x4C; | 225 | const unsigned long LL_DOM_VK_L = 0x4C; |
226 | const unsigned long LL_DOM_VK_M = 0x4D; | 226 | const unsigned long LL_DOM_VK_M = 0x4D; |
227 | const unsigned long LL_DOM_VK_N = 0x4E; | 227 | const unsigned long LL_DOM_VK_N = 0x4E; |
228 | const unsigned long LL_DOM_VK_O = 0x4F; | 228 | const unsigned long LL_DOM_VK_O = 0x4F; |
229 | const unsigned long LL_DOM_VK_P = 0x50; | 229 | const unsigned long LL_DOM_VK_P = 0x50; |
230 | const unsigned long LL_DOM_VK_Q = 0x51; | 230 | const unsigned long LL_DOM_VK_Q = 0x51; |
231 | const unsigned long LL_DOM_VK_R = 0x52; | 231 | const unsigned long LL_DOM_VK_R = 0x52; |
232 | const unsigned long LL_DOM_VK_S = 0x53; | 232 | const unsigned long LL_DOM_VK_S = 0x53; |
233 | const unsigned long LL_DOM_VK_T = 0x54; | 233 | const unsigned long LL_DOM_VK_T = 0x54; |
234 | const unsigned long LL_DOM_VK_U = 0x55; | 234 | const unsigned long LL_DOM_VK_U = 0x55; |
235 | const unsigned long LL_DOM_VK_V = 0x56; | 235 | const unsigned long LL_DOM_VK_V = 0x56; |
236 | const unsigned long LL_DOM_VK_W = 0x57; | 236 | const unsigned long LL_DOM_VK_W = 0x57; |
237 | const unsigned long LL_DOM_VK_X = 0x58; | 237 | const unsigned long LL_DOM_VK_X = 0x58; |
238 | const unsigned long LL_DOM_VK_Y = 0x59; | 238 | const unsigned long LL_DOM_VK_Y = 0x59; |
239 | const unsigned long LL_DOM_VK_Z = 0x5A; | 239 | const unsigned long LL_DOM_VK_Z = 0x5A; |
240 | 240 | ||
241 | const unsigned long LL_DOM_VK_CONTEXT_MENU = 0x5D; | 241 | const unsigned long LL_DOM_VK_CONTEXT_MENU = 0x5D; |
242 | 242 | ||
243 | const unsigned long LL_DOM_VK_NUMPAD0 = 0x60; | 243 | const unsigned long LL_DOM_VK_NUMPAD0 = 0x60; |
244 | const unsigned long LL_DOM_VK_NUMPAD1 = 0x61; | 244 | const unsigned long LL_DOM_VK_NUMPAD1 = 0x61; |
245 | const unsigned long LL_DOM_VK_NUMPAD2 = 0x62; | 245 | const unsigned long LL_DOM_VK_NUMPAD2 = 0x62; |
246 | const unsigned long LL_DOM_VK_NUMPAD3 = 0x63; | 246 | const unsigned long LL_DOM_VK_NUMPAD3 = 0x63; |
247 | const unsigned long LL_DOM_VK_NUMPAD4 = 0x64; | 247 | const unsigned long LL_DOM_VK_NUMPAD4 = 0x64; |
248 | const unsigned long LL_DOM_VK_NUMPAD5 = 0x65; | 248 | const unsigned long LL_DOM_VK_NUMPAD5 = 0x65; |
249 | const unsigned long LL_DOM_VK_NUMPAD6 = 0x66; | 249 | const unsigned long LL_DOM_VK_NUMPAD6 = 0x66; |
250 | const unsigned long LL_DOM_VK_NUMPAD7 = 0x67; | 250 | const unsigned long LL_DOM_VK_NUMPAD7 = 0x67; |
251 | const unsigned long LL_DOM_VK_NUMPAD8 = 0x68; | 251 | const unsigned long LL_DOM_VK_NUMPAD8 = 0x68; |
252 | const unsigned long LL_DOM_VK_NUMPAD9 = 0x69; | 252 | const unsigned long LL_DOM_VK_NUMPAD9 = 0x69; |
253 | const unsigned long LL_DOM_VK_MULTIPLY = 0x6A; | 253 | const unsigned long LL_DOM_VK_MULTIPLY = 0x6A; |
254 | const unsigned long LL_DOM_VK_ADD = 0x6B; | 254 | const unsigned long LL_DOM_VK_ADD = 0x6B; |
255 | const unsigned long LL_DOM_VK_SEPARATOR = 0x6C; | 255 | const unsigned long LL_DOM_VK_SEPARATOR = 0x6C; |
256 | const unsigned long LL_DOM_VK_SUBTRACT = 0x6D; | 256 | const unsigned long LL_DOM_VK_SUBTRACT = 0x6D; |
257 | const unsigned long LL_DOM_VK_DECIMAL = 0x6E; | 257 | const unsigned long LL_DOM_VK_DECIMAL = 0x6E; |
258 | const unsigned long LL_DOM_VK_DIVIDE = 0x6F; | 258 | const unsigned long LL_DOM_VK_DIVIDE = 0x6F; |
259 | const unsigned long LL_DOM_VK_F1 = 0x70; | 259 | const unsigned long LL_DOM_VK_F1 = 0x70; |
260 | const unsigned long LL_DOM_VK_F2 = 0x71; | 260 | const unsigned long LL_DOM_VK_F2 = 0x71; |
261 | const unsigned long LL_DOM_VK_F3 = 0x72; | 261 | const unsigned long LL_DOM_VK_F3 = 0x72; |
262 | const unsigned long LL_DOM_VK_F4 = 0x73; | 262 | const unsigned long LL_DOM_VK_F4 = 0x73; |
263 | const unsigned long LL_DOM_VK_F5 = 0x74; | 263 | const unsigned long LL_DOM_VK_F5 = 0x74; |
264 | const unsigned long LL_DOM_VK_F6 = 0x75; | 264 | const unsigned long LL_DOM_VK_F6 = 0x75; |
265 | const unsigned long LL_DOM_VK_F7 = 0x76; | 265 | const unsigned long LL_DOM_VK_F7 = 0x76; |
266 | const unsigned long LL_DOM_VK_F8 = 0x77; | 266 | const unsigned long LL_DOM_VK_F8 = 0x77; |
267 | const unsigned long LL_DOM_VK_F9 = 0x78; | 267 | const unsigned long LL_DOM_VK_F9 = 0x78; |
268 | const unsigned long LL_DOM_VK_F10 = 0x79; | 268 | const unsigned long LL_DOM_VK_F10 = 0x79; |
269 | const unsigned long LL_DOM_VK_F11 = 0x7A; | 269 | const unsigned long LL_DOM_VK_F11 = 0x7A; |
270 | const unsigned long LL_DOM_VK_F12 = 0x7B; | 270 | const unsigned long LL_DOM_VK_F12 = 0x7B; |
271 | const unsigned long LL_DOM_VK_F13 = 0x7C; | 271 | const unsigned long LL_DOM_VK_F13 = 0x7C; |
272 | const unsigned long LL_DOM_VK_F14 = 0x7D; | 272 | const unsigned long LL_DOM_VK_F14 = 0x7D; |
273 | const unsigned long LL_DOM_VK_F15 = 0x7E; | 273 | const unsigned long LL_DOM_VK_F15 = 0x7E; |
274 | const unsigned long LL_DOM_VK_F16 = 0x7F; | 274 | const unsigned long LL_DOM_VK_F16 = 0x7F; |
275 | const unsigned long LL_DOM_VK_F17 = 0x80; | 275 | const unsigned long LL_DOM_VK_F17 = 0x80; |
276 | const unsigned long LL_DOM_VK_F18 = 0x81; | 276 | const unsigned long LL_DOM_VK_F18 = 0x81; |
277 | const unsigned long LL_DOM_VK_F19 = 0x82; | 277 | const unsigned long LL_DOM_VK_F19 = 0x82; |
278 | const unsigned long LL_DOM_VK_F20 = 0x83; | 278 | const unsigned long LL_DOM_VK_F20 = 0x83; |
279 | const unsigned long LL_DOM_VK_F21 = 0x84; | 279 | const unsigned long LL_DOM_VK_F21 = 0x84; |
280 | const unsigned long LL_DOM_VK_F22 = 0x85; | 280 | const unsigned long LL_DOM_VK_F22 = 0x85; |
281 | const unsigned long LL_DOM_VK_F23 = 0x86; | 281 | const unsigned long LL_DOM_VK_F23 = 0x86; |
282 | const unsigned long LL_DOM_VK_F24 = 0x87; | 282 | const unsigned long LL_DOM_VK_F24 = 0x87; |
283 | 283 | ||
284 | const unsigned long LL_DOM_VK_NUM_LOCK = 0x90; | 284 | const unsigned long LL_DOM_VK_NUM_LOCK = 0x90; |
285 | const unsigned long LL_DOM_VK_SCROLL_LOCK = 0x91; | 285 | const unsigned long LL_DOM_VK_SCROLL_LOCK = 0x91; |
286 | 286 | ||
287 | const unsigned long LL_DOM_VK_COMMA = 0xBC; | 287 | const unsigned long LL_DOM_VK_COMMA = 0xBC; |
288 | const unsigned long LL_DOM_VK_PERIOD = 0xBE; | 288 | const unsigned long LL_DOM_VK_PERIOD = 0xBE; |
289 | const unsigned long LL_DOM_VK_SLASH = 0xBF; | 289 | const unsigned long LL_DOM_VK_SLASH = 0xBF; |
290 | const unsigned long LL_DOM_VK_BACK_QUOTE = 0xC0; | 290 | const unsigned long LL_DOM_VK_BACK_QUOTE = 0xC0; |
291 | const unsigned long LL_DOM_VK_OPEN_BRACKET = 0xDB; | 291 | const unsigned long LL_DOM_VK_OPEN_BRACKET = 0xDB; |
292 | const unsigned long LL_DOM_VK_BACK_SLASH = 0xDC; | 292 | const unsigned long LL_DOM_VK_BACK_SLASH = 0xDC; |
293 | const unsigned long LL_DOM_VK_CLOSE_BRACKET = 0xDD; | 293 | const unsigned long LL_DOM_VK_CLOSE_BRACKET = 0xDD; |
294 | const unsigned long LL_DOM_VK_QUOTE = 0xDE; | 294 | const unsigned long LL_DOM_VK_QUOTE = 0xDE; |
295 | 295 | ||
296 | const unsigned long LL_DOM_VK_META = 0xE0; | 296 | const unsigned long LL_DOM_VK_META = 0xE0; |
297 | 297 | ||
298 | #endif // LLMOZLIB_H | 298 | #endif // LLMOZLIB_H |