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/newview')

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_<driver> 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