Heya, Forgot to mention that I released another snapshot of 0.9.16 yesterday: http://0pointer.de/public/pulseaudio-0.9.16-test5.tar.gz As mentioned this brings a revamped flat volume logic where stream volumes can increase sink volumes but can never lower it. Restored volumes are always measured relative to the sink volume. The sink volume hence operates as upper limit of everything that is played which I think makes a lot of sense. This turned out to be a much bigger change than anticipated but otoh the flat vol handling code actually got simpler. The two now are: 1.) stream volume changes can 'push' the sink volume, i.e. increase it to make sure the sink volume always stays >= the max of all stream volumes. stream volume changes will however never decrease the sink volume. a stream volume change of a stream A will never affect the volume of a stream B. 2) sink volume changes scale all stream volumes equally. if you halve the sink's volume this will halve the stream volume's too. I'd like to ask everyone to test the new flat vol logic. It's quite a big change this late in the game for 0.9.16 unfortunately, so it would really help if this area gets some focussed testing love. There's now only one thing left on my todo list before the final 0.9.16. Diego Elio Petten? (2): Split OSS support in output and wrapper. Update the end-of-configuration summary for OSS output/wrapper split. Juho H?m?l?inen (1): database: simple hashmap based database implementation Lennart Poettering (92): run make update-po core: save volume/mute changes coming from the hardware automatically ladspa/remap: make sure we process all requested rewinds unconditionally build-sys: drop libcap checks, since we don't use caps anymore mix-test: fix test for s24-32 samples Revert "build-sys: drop libcap checks, since we don't use caps anymore" hal: add stub module that loads module-udev-detect instead of module-hal-detect udev: drop definition of LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE hal: replace subdevs= parameter by subdevices= parameter volume-restore: forward module load return value of stream-restore back to caller alsa: adjust priority bonus of mappings that match the configured default channel map alsa: enable ext. amplifier by default daemon: install D-Bus system policy file for PA system instances conf: add pa_config_parse_not_bool() for parsing inverse boolean configuration options conf: invert all negative boolean configuration option daemon: unconditionally clean up priviliges core-util: move personality resetting into core-util daemon: reset scheduling priority on startup, too context: document why we only do minimal cleanups before the autospawn exec() memblock: rate limit 'Pool full' message pacmd: port pacmd from select() to poll() so that we notice writer side hangups start-child: clean up child environment a bit better core: add assert macros for verifying calling context core: add functions to query max_rewind/max_request values from streams pacmd: handle multi word commands in argv[] properly shm: bump shm size limit to 1GB memblockq: add pa_memblockq_get_maxrewind() API asyncmsgq: add pa_asyncmsgq_flush() call thread-mq: never drop queued messages for the main loop resampler: round up when estimating input/output sizes daemon: reset gids too, not just uids protocol-native: log explicitly each time a client triggers a volume change volume: guarantee dB/linear conversion is reversible module-stream-restore: don't fiddle with sinks/sources/streams that are not fully set up yet core: introduce pa_{sink_input|source_output}_fail_move() native: handle moving() callback with NULL destination properly core: split of FAIL_ON_SUSPEND into KILL_ON_SUSPEND and NO_CREATE_ON_SUSPEND rescure-stream: handle failed moves as well as dying sinks/sources log: place more rate limit invocations core: move rtpoll to thread_info sub structure core: make fixed latency dynamically changeable core: call pa_sink_get_latency_within_thread() instead of going directly via process_msg() core: don't update latency range if not changed core: document difference between IO and main thread view on requested latency native-protocol: downgrade volume change log messages hook-list: make use of PA_LLIST_FOREACH remap: unify argument order with other modules ladspa: move LADSPA_Data size check to compile time module-remap: allow moving of sink, forward fixed latency module-ladspa: allow moving of sink, forward fixed latency ladspa: name sink after human readable plugin name, not the id string combine: drop adjust_timestamp variable because it is unused combine: big rework combine: warn when the latency of a stream gets too high core: introduce pa_{sink|source}_update_flags() ladspa/remap: sync latency flags from master sink when moving between sinks asyncmsgq: introduce pa_asyncmsgq_dispatching() thread-mq: do final q flush only when we aren't dispatching anyway bluetooth: drop PA_BT_AUDIO_STATE_LAST since it is unused and we normally call that _MAX anyway bluetooth: recognize only those BT devices that implement both the Audio and either AudioSink or Headset interfaces bluetooth: ask first for Headset and AudioSink properties, followed by Audio bluetooth: move installation of mq's earlier to avoid context asserts to be triggered modules: add various checks to avoid selecting objects that are not linked or in another unclear state core: add to FIXMEs aupdate: implicitly call _write_swap() if it wasn't called explicitly volume: add pa_cvolume_merge() call reserver: update from upstream git channelmap: adjust RFC3551 channel maps to follow spec more closely channelmap: document where the WAVEX channelmap is documented channelmap: minor doxygen fix libpulse: some minor optimizations when checking equality volume: document when arguments of certain functions may overlap bluetooth: make NameOwnerChanged filter matches more focussed bluetooth: fix match syntax macro: add PA_ROUND_UP/PA_ROUND_DOWN macros macro: simplify page/word alignment macros a bit volume: introduce pa_cvolume_min() and pa_cvolume_min_mask() volume: simplify volume multiplifactions, do them in integer only volume: round properly when showing human readable volume percentages dbus: never return DBUS_HANDLER_RESULT_HANDLED in filter callbacks, since other callbacks might stell want to have the messages voltest: extend test to verify correctness of _multiply() and _divide() macro: extend comments a bit source: rework volume handling udev: allow passing of ignore_dB= parameter to alsa modules volume: use PA_VOLUME_MAX instead of (pa_volume_t) -1 volume: introduce pa_cvolume_{inc|dec}() match: document how broken the module-match logic is sink: volume handling rework, new flat volume logic mmkbd: replace manual code by pa_cvolume_{inc|dec}() lirc: replace manual code by pa_cvolume_{inc|dec}() i18n: add ko to LINGUAS i18n: run make update-po Maarten Bosmans (1): combine: determine sample parameters of combined sink from underlying sinks Marc-Andr? Lureau (3): bluetooth: don't call pa_sink_render with 0 bytes request bluetooth: fix typo with service_{read,write}_type pulse: even in case of record stream, let's initialize req_bytes to 0 Maxim Levitsky (1): Correctly deal with events in the past in calc_next_timeout eukim (1): Sending translation for po/ko.po igor (2): Sending translation for Brazilian Portuguese Sending translation for Brazilian Portuguese logan (1): Sending translation for Spanish pmkovar (1): Sending translation for Czech raven (1): Sending translation for Polish ruigo (3): Sending translation for Portuguese Sending translation for Portuguese Sending translation for Portuguese Lennart -- Lennart Poettering Red Hat, Inc. lennart [at] poettering [dot] net http://0pointer.net/lennart/ GnuPG 0x1A015CC4