From 4ac5c3922f4415d83343d375d9a9b6b4d1888598 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Tue, 12 Apr 2011 15:02:47 +0200 Subject: linux: several improvements to the starter script, provide a default alsoft.conf * removed several export lines that are not supported * added a line that -if the user enables it- lets openal load a specific alsoft.conf * added a line that -if the user enables it- adds a custom GST_PLUGIN_PATH * create a crashlog package in the viewer folder if stack_trace.log exists. --- linden/indra/newview/linux_tools/alsoft.conf | 253 +++++++++++++++++++++++++++ linden/indra/newview/linux_tools/wrapper.sh | 45 +++-- linden/indra/newview/viewer_manifest.py | 1 + 3 files changed, 287 insertions(+), 12 deletions(-) create mode 100644 linden/indra/newview/linux_tools/alsoft.conf (limited to 'linden/indra') diff --git a/linden/indra/newview/linux_tools/alsoft.conf b/linden/indra/newview/linux_tools/alsoft.conf new file mode 100644 index 0000000..7550ff0 --- /dev/null +++ b/linden/indra/newview/linux_tools/alsoft.conf @@ -0,0 +1,253 @@ +# OpenAL config file. Options that are not under a block or are under the +# [general] block are for general, non-backend-specific options. Blocks may +# appear multiple times, and duplicated options will take the last value +# specified. +# The system-wide settings can be put in /etc/openal/alsoft.conf and user- +# specific override settings in ~/.alsoftrc. +# For Windows, these settings should go into %AppData%\alsoft.ini +# The environment variable ALSOFT_CONF can be used to specify another config +# override + +# Option and block names are case-insenstive. The supplied values are only +# hints and may not be honored (though generally it'll try to get as close as +# possible). Note: options that are left unset may default to app- or system- +# specified values. These are the current available settings: + +## format: +# Sets the output format. Can be one of: +# AL_FORMAT_MONO8 (8-bit mono) +# AL_FORMAT_STEREO8 (8-bit stereo) +# AL_FORMAT_QUAD8 (8-bit 4-channel) +# AL_FORMAT_51CHN8 (8-bit 5.1 output) +# AL_FORMAT_61CHN8 (8-bit 6.1 output) +# AL_FORMAT_71CHN8 (8-bit 7.1 output) +# AL_FORMAT_MONO16 (16-bit mono) +# AL_FORMAT_STEREO16 (16-bit stereo) +# AL_FORMAT_QUAD16 (16-bit 4-channel) +# AL_FORMAT_51CHN16 (16-bit 5.1 output) +# AL_FORMAT_61CHN16 (16-bit 6.1 output) +# AL_FORMAT_71CHN16 (16-bit 7.1 output) +# AL_FORMAT_MONO32 (32-bit float mono) +# AL_FORMAT_STEREO32 (32-bit float stereo) +# AL_FORMAT_QUAD32 (32-bit float 4-channel) +# AL_FORMAT_51CHN32 (32-bit float 5.1 output) +# AL_FORMAT_61CHN32 (32-bit float 6.1 output) +# AL_FORMAT_71CHN32 (32-bit float 7.1 output) +#format = AL_FORMAT_STEREO16 + +## cf_level: +# Sets the crossfeed level for stereo output. Valid values are: +# 0 - No crossfeed +# 1 - Low crossfeed +# 2 - Middle crossfeed +# 3 - High crossfeed (virtual speakers are closer to itself) +# 4 - Low easy crossfeed +# 5 - Middle easy crossfeed +# 6 - High easy crossfeed +# Users of headphones may want to try various settings. Has no effect on non- +# stereo modes. +#cf_level = 0 + +## head_dampen: +# Sets the amount of dampening on sounds emanating from behind the listener. +# This is used to simulate the natural occlusion of the head, which is +# typically missing with mono and stereo output, and as such, only works on +# mono and stereo output modes. Valid values range from 0 to 1 (inclusive), +# and higher values provide a stronger effect. +#head_dampen = 0.25 + +## frequency: +# Sets the output frequency. +#frequency = 44100 + +## resampler: +# Selects the resampler used when mixing sources. Valid values are: +# 0 - None (nearest sample, no interpolation) +# 1 - Linear (extrapolates samples using a linear slope between samples) +# 2 - Cubic (extrapolates samples using a Catmull-Rom spline) +# Specifying other values will result in using the default (linear). +#resampler = 1 + +## rt-prio: +# Sets real-time priority for the mixing thread. Not all drivers may use this +# (eg. PortAudio) as they already control the priority of the mixing thread. +# 0 and negative values will disable it. Note that this may constitute a +# security risk since a real-time priority thread can indefinitely block +# normal-priority threads if it fails to wait. As such, the default is +# disabled. +#rt-prio = 0 + +## period_size: +# Sets the update period size, in frames. This is the number of frames needed +# for each mixing update. +#period_size = 1024 + +## periods: +# Sets the number of update periods. Higher values create a larger mix ahead, +# which helps protect against skips when the CPU is under load, but increases +# the delay between a sound getting mixed and being heard. +#periods = 4 + +## sources: +# Sets the maximum number of allocatable sources. Lower values may help for +# systems with apps that try to play more sounds than the CPU can handle. +#sources = 256 + +## stereodup: +# Sets whether to duplicate stereo sounds on the rear and side speakers for 4+ +# channel output. This provides a "fuller" playback quality for 4+ channel +# output modes, although each individual speaker will have a slight reduction +# in volume to compensate for the extra output speakers. True, yes, on, and +# non-0 values will duplicate stereo sources. 0 and anything else will cause +# stereo sounds to only play out the front speakers. This only has an effect +# when a suitable output format is used (ie. those that contain side and/or +# rear speakers). +#stereodup = true + +## scalemix: +# Sets whether to scale the remixed output. When the final mix is written to +# the device, the multi-channel data is remixed so pure-virtual channels (eg. +# front-center on stereo output) are remixed and added to available channels +# (eg. front-left and front-right). Scaling helps ensure that no single source +# will put out more than 100% on a given physical channel. This can cause a +# noticeable reduction in overall volume, however, so it is off by default. +#scalemix = false + +## drivers: +# Sets the backend driver list order, comma-seperated. Unknown backends and +# duplicated names are ignored. Unlisted backends won't be considered for use +# unless the list is ended with a comma (eg. 'oss,' will list OSS first +# followed by all other available backends, while 'oss' will list OSS only). +# Backends prepended with - won't be available for use (eg. '-oss,' will allow +# all available backends except OSS). An empty list means the default. +#drivers = pulse,alsa,core,oss,solaris,dsound,winmm,port,null,wave + +## excludefx: +# Sets which effects to exclude, preventing apps from using them. This can +# help for apps that try to use effects which are too CPU intensive for the +# system to handle. Available effects are: eaxreverb,reverb,echo,modulator, +# dedicated +#excludefx = + +## slots: +# Sets the maximum number of Auxiliary Effect Slots an app can create. A slot +# can use a non-negligible amount of CPU time if an effect is set on it even +# if no sources are feeding it, so this may help when apps use more than the +# system can handle. +#slots = 4 + +## sends: +# Sets the number of auxiliary sends per source. When not specified (default), +# it allows the app to request how many it wants. The maximum value currently +# possible is 4. +#sends = + +## layout: +# Sets the virtual speaker layout. Values are specified in degrees, where 0 is +# straight in front, negative goes left, and positive goes right. Unspecified +# speakers will remain at their default positions (which are dependant on the +# output format). Available speakers are back-left(bl), side-left(sl), front- +# left(fl), front-center(fc), front-right(fr), side-right(sr), back-right(br), +# and back-center(bc). +#layout = + +## layout_*: +# Channel-specific layouts may be specified to override the layout option. The +# same speakers as the layout option are available, and the default settings +# are shown below. +#layout_STEREO = fl=-90, fr=90 +#layout_QUAD = fl=-45, fr=45, bl=-135, br=135 +#layout_51CHN = fl=-30, fr=30, fc=0, bl=-110, br=110 +#layout_61CHN = fl=-30, fr=30, fc=0, sl=-90, sr=90, bc=180 +#layout_71CHN = fl=-30, fr=30, fc=0, sl=-90, sr=90, bl=-150, br=150 + +## +## ALSA backend stuff +## +[alsa] + +## device: +# Sets the device name for the default playback device. +#device = default + +## capture: +# Sets the device name for the default capture device. +#capture = default + +## mmap: +# Sets whether to try using mmap mode (helps reduce latencies and CPU +# consumption). If mmap isn't available, it will automatically fall back to +# non-mmap mode. True, yes, on, and non-0 values will attempt to use mmap. 0 +# and anything else will force mmap off. +#mmap = true + +## +## OSS backend stuff +## +[oss] + +## device: +# Sets the device name for OSS output. +#device = /dev/dsp + +## capture: +# Sets the device name for OSS capture. +#capture = /dev/dsp + +## +## Solaris backend stuff +## +[solaris] + +## device: +# Sets the device name for Solaris output. +#device = /dev/audio + +## +## DirectSound backend stuff +## +[dsound] + +## +## Windows Multimedia backend stuff +## +[winmm] + +## +## PortAudio backend stuff +## +[port] + +## device: +# Sets the device index for output. Negative values will use the default as +# given by PortAudio itself. +#device = -1 + +## capture: +# Sets the device index for capture. Negative values will use the default as +# given by PortAudio itself. +#capture = -1 + +## +## PulseAudio backend stuff +## +[pulse] + +## spawn-server: +# Attempts to spawn a PulseAudio server when requesting to open a PulseAudio +# device. Note that some apps may open and probe all enumerated devices on +# startup, causing a server to spawn even if a PulseAudio device is not +# actually selected. Setting autospawn to false in Pulse's client.conf will +# still prevent autospawning even if this is set to true. +#spawn-server = false + +## +## Wave File Writer stuff +## +[wave] + +## file: +# Sets the filename of the wave file to write to. An empty name prevents the +# backend from opening, even when explicitly requested. +# THIS WILL OVERWRITE EXISTING FILES WITHOUT QUESTION! +#file = \ No newline at end of file diff --git a/linden/indra/newview/linux_tools/wrapper.sh b/linden/indra/newview/linux_tools/wrapper.sh index f6ce272..742c4fc 100755 --- a/linden/indra/newview/linux_tools/wrapper.sh +++ b/linden/indra/newview/linux_tools/wrapper.sh @@ -4,17 +4,26 @@ ## These options are for self-assisted troubleshooting during this beta ## testing phase; you should not usually need to touch them. -## - Avoids using any OpenAL audio driver. +## If the default configuration of openal-soft isn't working for you. +## There are 3 places where it looks for a configuration file: +## /etc/openal/alsoft.conf $HOME/.alsoftrc and ALSOFT_CONF +## ALSOFT_CONF is the full path including the filename, like: /home/myuser/myconfigfile.txt +## If none of them is set a hardcoded default is taken. +## If you set several: ALSOFT_CONF 'wins' always, and $HOME/.alsoftrc 'wins' over /etc/openal/alsoft.conf +#export ALSOFT_CONF="$(pwd)/alsoft.conf" + +## - Avoids using the OpenAL audio driver; disables any inworld sound effects. +## NOTE: - OpenAL is not used for any streaming audio in Imprudence. +## - Other export LL_BAD_ have no effect in Imprudence. #export LL_BAD_OPENAL_DRIVER=x -## - Avoids using any FMOD audio driver. -#export LL_BAD_FMOD_DRIVER=x -## - Avoids using the FMOD ESD audio driver. -#export LL_BAD_FMOD_ESD=x -## - Avoids using the FMOD OSS audio driver. -#export LL_BAD_FMOD_OSS=x -## - Avoids using the FMOD ALSA audio driver. -#export LL_BAD_FMOD_ALSA=x +## If you have custom gstreamer plugins, +## e.g. you want to use Imprudence-1.4.x with the gstreamer plugins of Imprudence-1.3.1: +## Imprudence-1.3.1-Linux-x86/lib/gstreamer-plugins +## respectively Imprudence-1.3.1-Linux-x86_64/lib64/gstreamer-plugins +## NOTE: *WAY* better is to install the gstreamer plugins that come with your distros package manager, +## thats why Imprudence-1.4.x comes without gstreamer plugins. +#export GST_PLUGIN_PATH="'${HOME}/Imprudence-1.3.1-Linux-x86/lib/gstreamer-plugins':'${GST_PLUGIN_PATH}'" ## - Avoids the optional OpenGL extensions which have proven most problematic ## on some hardware. Disabling this option may cause BETTER PERFORMANCE but @@ -48,7 +57,6 @@ ## Everything below this line is just for advanced troubleshooters. ##------------------------------------------------------------------- - ## - For advanced debugging cases, you can run the viewer under the ## control of another program, such as strace, gdb, or valgrind. If ## you're building your own viewer, bear in mind that the executable @@ -127,7 +135,20 @@ if [ -n "$LL_RUN_ERR" ]; then if [ "$LL_RUN_ERR" = "runerr" ]; then # generic error running the binary echo 'unexpected shutdown' - - fi fi + +LOGS_PATH="${HOME}/.imprudence/logs" +if [ -f "${LOGS_PATH}/stack_trace.log" ]; then + LOG_PACKAGE_NAME="MAIL-THIS-CRASHLOG-PLEASE.$(date +%y%m%d%H%M).tar.bz2" + cp "${LOGS_PATH}/stack_trace.log" stack_trace.log + cp "${LOGS_PATH}/Imprudence.log" Imprudence.log + tar --numeric-owner -cjf ${LOG_PACKAGE_NAME} \ + stack_trace.log \ + Imprudence.log + rm stack_trace.log + rm Imprudence.log + echo "You find a crash log package to mail to Imprudence here:" + echo "${RUN_PATH}/${LOG_PACKAGE_NAME}" + echo "See where to send: http://wiki.kokuaviewer.org/wiki/Imprudence:Debug_Logs#Where_to_Send_Them" +fi \ No newline at end of file diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py index 86acaea..0f129dd 100755 --- a/linden/indra/newview/viewer_manifest.py +++ b/linden/indra/newview/viewer_manifest.py @@ -912,6 +912,7 @@ class LinuxManifest(ViewerManifest): self.path("res/imprudence_icon.png","imprudence_icon.png") if self.prefix("linux_tools", dst=""): + self.path("alsoft.conf") #self.path("client-readme.txt","README-linux.txt") self.path("client-readme-voice.txt","README-linux-voice.txt") #self.path("client-readme-joystick.txt","README-linux-joystick.txt") -- cgit v1.1