profile/ivi/pulseaudio.git
14 years agomodargs: New function: pa_modargs_iterate().
Tanu Kaskinen [Mon, 24 Aug 2009 11:24:59 +0000 (14:24 +0300)]
modargs: New function: pa_modargs_iterate().

14 years agoproplist: A couple of documentation fixes.
Tanu Kaskinen [Mon, 24 Aug 2009 11:23:49 +0000 (14:23 +0300)]
proplist: A couple of documentation fixes.

14 years agoproplist: Return early from pa_proplist_equal() if the pointers are equal.
Tanu Kaskinen [Mon, 24 Aug 2009 11:22:32 +0000 (14:22 +0300)]
proplist: Return early from pa_proplist_equal() if the pointers are equal.

14 years agodbusifaca-device: Adapt to the changed pa_sink_get/set_volume() interface.
Tanu Kaskinen [Wed, 19 Aug 2009 06:54:09 +0000 (09:54 +0300)]
dbusifaca-device: Adapt to the changed pa_sink_get/set_volume() interface.

14 years agoMerge branch 'master' of git://0pointer.de/pulseaudio into dbus-work
Tanu Kaskinen [Wed, 19 Aug 2009 06:20:02 +0000 (09:20 +0300)]
Merge branch 'master' of git://0pointer.de/pulseaudio into dbus-work

14 years agodbusiface-sample: Implement the Sample D-Bus interface.
Tanu Kaskinen [Wed, 19 Aug 2009 06:18:50 +0000 (09:18 +0300)]
dbusiface-sample: Implement the Sample D-Bus interface.

14 years agodbusiface-core: Assert that _add/remove_interface calls succeed.
Tanu Kaskinen [Wed, 19 Aug 2009 06:13:59 +0000 (09:13 +0300)]
dbusiface-core: Assert that _add/remove_interface calls succeed.

14 years agodbusiface-core: Use the PA_IDXSET_FOREACH macro.
Tanu Kaskinen [Wed, 19 Aug 2009 06:10:38 +0000 (09:10 +0300)]
dbusiface-core: Use the PA_IDXSET_FOREACH macro.

14 years agodbusiface-core: Split some overly long lines.
Tanu Kaskinen [Wed, 19 Aug 2009 06:09:40 +0000 (09:09 +0300)]
dbusiface-core: Split some overly long lines.

14 years agoi18n: run make update-po
Lennart Poettering [Wed, 19 Aug 2009 02:16:35 +0000 (04:16 +0200)]
i18n: run make update-po

14 years agoi18n: add ko to LINGUAS
Lennart Poettering [Wed, 19 Aug 2009 02:15:36 +0000 (04:15 +0200)]
i18n: add ko to LINGUAS

14 years agoMerge commit 'origin/master-tx'
Lennart Poettering [Wed, 19 Aug 2009 02:14:00 +0000 (04:14 +0200)]
Merge commit 'origin/master-tx'

14 years agolirc: replace manual code by pa_cvolume_{inc|dec}()
Lennart Poettering [Wed, 19 Aug 2009 01:37:42 +0000 (03:37 +0200)]
lirc: replace manual code by pa_cvolume_{inc|dec}()

14 years agommkbd: replace manual code by pa_cvolume_{inc|dec}()
Lennart Poettering [Wed, 19 Aug 2009 01:37:29 +0000 (03:37 +0200)]
mmkbd: replace manual code by pa_cvolume_{inc|dec}()

14 years agosink: volume handling rework, new flat volume logic
Lennart Poettering [Wed, 19 Aug 2009 00:55:02 +0000 (02:55 +0200)]
sink: volume handling rework, new flat volume logic

- We now implement a logic where the sink maintains two distinct
  volumes: the 'reference' volume which is shown to the users, and the
  'real' volume, which is configured to the hardware. The latter is
  configured to the max of all streams. Volume changes on sinks are
  propagated back to the streams proportional to the reference volume
  change. Volume changes on sink inputs are forwarded to the sink by
  'pushing' the volume if necessary.

  This renames the old 'virtual_volume' to 'real_volume'. The
  'reference_volume' is now the one exposed to users.

  By this logic the sink volume visible to the user, will always be the
  "upper" boundary for everything that is played. Saved/restored stream
  volumes are measured relative to this boundary, the factor here is
  always < 1.0.

- introduce accuracy for sink volumes, similar to the accuracy we
  already have for source volumes.

- other cleanups.

14 years agomatch: document how broken the module-match logic is
Lennart Poettering [Wed, 19 Aug 2009 00:37:35 +0000 (02:37 +0200)]
match: document how broken the module-match logic is

14 years agovolume: introduce pa_cvolume_{inc|dec}()
Lennart Poettering [Wed, 19 Aug 2009 00:32:36 +0000 (02:32 +0200)]
volume: introduce pa_cvolume_{inc|dec}()

14 years agovolume: use PA_VOLUME_MAX instead of (pa_volume_t) -1
Lennart Poettering [Wed, 19 Aug 2009 00:31:11 +0000 (02:31 +0200)]
volume: use PA_VOLUME_MAX instead of (pa_volume_t) -1

14 years agoudev: allow passing of ignore_dB= parameter to alsa modules
Lennart Poettering [Wed, 19 Aug 2009 00:29:59 +0000 (02:29 +0200)]
udev: allow passing of ignore_dB= parameter to alsa modules

14 years agosource: rework volume handling
Lennart Poettering [Tue, 18 Aug 2009 23:35:43 +0000 (01:35 +0200)]
source: rework volume handling

- drop the 'virtual_' prefix from s->virtual_volume since we don't
  distuingish between reference and real volumes for sources

- introduce an accuracy for source volumes: if the hardware can control
  the volume "close enough" don't necessarily adjust the rest in
  software unless it is beyond a certain threshold. This should save a
  little bit of CPU at the expensive of a bit of accuracy in volume
  handling.

- other minor cleanups

14 years agomacro: extend comments a bit
Lennart Poettering [Tue, 18 Aug 2009 23:03:09 +0000 (01:03 +0200)]
macro: extend comments a bit

14 years agovoltest: extend test to verify correctness of _multiply() and _divide()
Lennart Poettering [Tue, 18 Aug 2009 23:02:32 +0000 (01:02 +0200)]
voltest: extend test to verify correctness of _multiply() and _divide()

14 years agodbus: never return DBUS_HANDLER_RESULT_HANDLED in filter callbacks, since other callb...
Lennart Poettering [Tue, 18 Aug 2009 22:59:23 +0000 (00:59 +0200)]
dbus: never return DBUS_HANDLER_RESULT_HANDLED in filter callbacks, since other callbacks might stell want to have the messages

14 years agovolume: round properly when showing human readable volume percentages
Lennart Poettering [Tue, 18 Aug 2009 22:58:20 +0000 (00:58 +0200)]
volume: round properly when showing human readable volume percentages

14 years agovolume: simplify volume multiplifactions, do them in integer only
Lennart Poettering [Tue, 18 Aug 2009 22:57:58 +0000 (00:57 +0200)]
volume: simplify volume multiplifactions, do them in integer only

14 years agovolume: introduce pa_cvolume_min() and pa_cvolume_min_mask()
Lennart Poettering [Tue, 18 Aug 2009 22:56:16 +0000 (00:56 +0200)]
volume: introduce pa_cvolume_min() and pa_cvolume_min_mask()

14 years agomacro: simplify page/word alignment macros a bit
Lennart Poettering [Mon, 17 Aug 2009 17:17:10 +0000 (19:17 +0200)]
macro: simplify page/word alignment macros a bit

14 years agomacro: add PA_ROUND_UP/PA_ROUND_DOWN macros
Lennart Poettering [Mon, 17 Aug 2009 17:15:33 +0000 (19:15 +0200)]
macro: add PA_ROUND_UP/PA_ROUND_DOWN macros

14 years agobluetooth: fix match syntax
Lennart Poettering [Mon, 17 Aug 2009 17:14:35 +0000 (19:14 +0200)]
bluetooth: fix match syntax

14 years agodbusiface-stream: Finish the Stream D-Bus interface.
Tanu Kaskinen [Mon, 17 Aug 2009 13:56:12 +0000 (16:56 +0300)]
dbusiface-stream: Finish the Stream D-Bus interface.

14 years agodbusiface-device: Save one level of identation by returning early.
Tanu Kaskinen [Mon, 17 Aug 2009 13:55:08 +0000 (16:55 +0300)]
dbusiface-device: Save one level of identation by returning early.

14 years agodbusiface-device: Fix argument reading in handle_suspend().
Tanu Kaskinen [Mon, 17 Aug 2009 13:53:58 +0000 (16:53 +0300)]
dbusiface-device: Fix argument reading in handle_suspend().

14 years agodbusiface-device: Use a single if-else section instead of ternary operator overuse.
Tanu Kaskinen [Mon, 17 Aug 2009 13:52:10 +0000 (16:52 +0300)]
dbusiface-device: Use a single if-else section instead of ternary operator overuse.

14 years agodbusiface-device: Split some overly long lines.
Tanu Kaskinen [Mon, 17 Aug 2009 13:50:29 +0000 (16:50 +0300)]
dbusiface-device: Split some overly long lines.

14 years agodbusiface-core: Two new functions: pa_dbusiface_core_get_sink/source().
Tanu Kaskinen [Mon, 17 Aug 2009 13:42:58 +0000 (16:42 +0300)]
dbusiface-core: Two new functions: pa_dbusiface_core_get_sink/source().

14 years agodbusiface-core: New function: pa_dbusiface_core_get_client_path().
Tanu Kaskinen [Mon, 17 Aug 2009 13:42:06 +0000 (16:42 +0300)]
dbusiface-core: New function: pa_dbusiface_core_get_client_path().

14 years agonamereg: Revert default device handling back to the upstream version.
Tanu Kaskinen [Mon, 17 Aug 2009 05:26:06 +0000 (08:26 +0300)]
namereg: Revert default device handling back to the upstream version.

14 years agobluetooth: make NameOwnerChanged filter matches more focussed
Lennart Poettering [Mon, 17 Aug 2009 01:51:17 +0000 (03:51 +0200)]
bluetooth: make NameOwnerChanged filter matches more focussed

14 years agovolume: document when arguments of certain functions may overlap
Lennart Poettering [Mon, 17 Aug 2009 01:50:43 +0000 (03:50 +0200)]
volume: document when arguments of certain functions may overlap

14 years agolibpulse: some minor optimizations when checking equality
Lennart Poettering [Mon, 17 Aug 2009 01:50:04 +0000 (03:50 +0200)]
libpulse: some minor optimizations when checking equality

14 years agochannelmap: minor doxygen fix
Lennart Poettering [Mon, 17 Aug 2009 01:48:51 +0000 (03:48 +0200)]
channelmap: minor doxygen fix

14 years agochannelmap: document where the WAVEX channelmap is documented
Lennart Poettering [Mon, 17 Aug 2009 01:43:05 +0000 (03:43 +0200)]
channelmap: document where the WAVEX channelmap is documented

14 years agochannelmap: adjust RFC3551 channel maps to follow spec more closely
Lennart Poettering [Mon, 17 Aug 2009 01:42:34 +0000 (03:42 +0200)]
channelmap: adjust RFC3551 channel maps to follow spec more closely

14 years agoreserver: update from upstream git
Lennart Poettering [Mon, 17 Aug 2009 01:41:14 +0000 (03:41 +0200)]
reserver: update from upstream git

14 years agovolume: add pa_cvolume_merge() call
Lennart Poettering [Mon, 17 Aug 2009 01:40:36 +0000 (03:40 +0200)]
volume: add pa_cvolume_merge() call

14 years agoSending translation for Czech
pmkovar [Mon, 17 Aug 2009 00:19:25 +0000 (00:19 +0000)]
Sending translation for Czech

14 years agoMerge branch 'master' of git://0pointer.de/pulseaudio into dbus-work
Tanu Kaskinen [Sun, 16 Aug 2009 18:25:48 +0000 (21:25 +0300)]
Merge branch 'master' of git://0pointer.de/pulseaudio into dbus-work

Conflicts:
src/Makefile.am
src/daemon/daemon-conf.c
src/daemon/daemon.conf.in
src/modules/module-stream-restore.c
src/pulse/client-conf.c
src/pulsecore/namereg.c

14 years agodbusiface-stream: Implement about a half of the Stream D-Bus interface.
Tanu Kaskinen [Sun, 16 Aug 2009 16:42:56 +0000 (19:42 +0300)]
dbusiface-stream: Implement about a half of the Stream D-Bus interface.

14 years agodbusiface-device: Free the copied proplist.
Tanu Kaskinen [Sun, 16 Aug 2009 16:41:43 +0000 (19:41 +0300)]
dbusiface-device: Free the copied proplist.

14 years agodbusiface-client: Fix indentation.
Tanu Kaskinen [Sun, 16 Aug 2009 16:39:39 +0000 (19:39 +0300)]
dbusiface-client: Fix indentation.

14 years agoaupdate: implicitly call _write_swap() if it wasn't called explicitly
Lennart Poettering [Sun, 16 Aug 2009 00:02:51 +0000 (02:02 +0200)]
aupdate: implicitly call _write_swap() if it wasn't called explicitly

14 years agocore: add to FIXMEs
Lennart Poettering [Sat, 15 Aug 2009 22:45:56 +0000 (00:45 +0200)]
core: add to FIXMEs

14 years agomodules: add various checks to avoid selecting objects that are not linked or in...
Lennart Poettering [Sat, 15 Aug 2009 22:45:23 +0000 (00:45 +0200)]
modules: add various checks to avoid selecting objects that are not linked or in another unclear state

14 years agobluetooth: move installation of mq's earlier to avoid context asserts to be triggered
Lennart Poettering [Sat, 15 Aug 2009 22:43:22 +0000 (00:43 +0200)]
bluetooth: move installation of mq's earlier to avoid context asserts to be triggered

14 years agobluetooth: ask first for Headset and AudioSink properties, followed by Audio
Lennart Poettering [Sat, 15 Aug 2009 20:25:53 +0000 (22:25 +0200)]
bluetooth: ask first for Headset and AudioSink properties, followed by Audio

14 years agobluetooth: recognize only those BT devices that implement both the Audio and either...
Lennart Poettering [Sat, 15 Aug 2009 20:25:21 +0000 (22:25 +0200)]
bluetooth: recognize only those BT devices that implement both the Audio and either AudioSink or Headset interfaces

14 years agobluetooth: drop PA_BT_AUDIO_STATE_LAST since it is unused and we normally call that...
Lennart Poettering [Sat, 15 Aug 2009 20:24:13 +0000 (22:24 +0200)]
bluetooth: drop PA_BT_AUDIO_STATE_LAST since it is unused and we normally call that _MAX anyway

14 years agothread-mq: do final q flush only when we aren't dispatching anyway
Lennart Poettering [Sat, 15 Aug 2009 20:23:42 +0000 (22:23 +0200)]
thread-mq: do final q flush only when we aren't dispatching anyway

14 years agoasyncmsgq: introduce pa_asyncmsgq_dispatching()
Lennart Poettering [Sat, 15 Aug 2009 20:22:57 +0000 (22:22 +0200)]
asyncmsgq: introduce pa_asyncmsgq_dispatching()

14 years agodbusiface-client: Fix the interface name.
Tanu Kaskinen [Sat, 15 Aug 2009 14:08:21 +0000 (17:08 +0300)]
dbusiface-client: Fix the interface name.

14 years agodbusiface-client: Implement the properties of the Client D-Bus interface.
Tanu Kaskinen [Sat, 15 Aug 2009 13:55:29 +0000 (16:55 +0300)]
dbusiface-client: Implement the properties of the Client D-Bus interface.

Based on a patch from Vincent Filali-Ansary.

14 years agodbusiface-core: Two new functions: pa_dbusiface_core_get_playback/record_stream_path().
Tanu Kaskinen [Sat, 15 Aug 2009 13:54:11 +0000 (16:54 +0300)]
dbusiface-core: Two new functions: pa_dbusiface_core_get_playback/record_stream_path().

14 years agodbusiface-device: Implement the Device and DevicePort D-Bus interfaces.
Tanu Kaskinen [Sat, 15 Aug 2009 03:18:41 +0000 (06:18 +0300)]
dbusiface-device: Implement the Device and DevicePort D-Bus interfaces.

14 years agodbus-protocol: Use pa_hashmap_remove() instead of _get().
Tanu Kaskinen [Sat, 15 Aug 2009 03:13:17 +0000 (06:13 +0300)]
dbus-protocol: Use pa_hashmap_remove() instead of _get().

14 years agodbusiface-core: New function: pa_dbusiface_core_get_card_path().
Tanu Kaskinen [Sat, 15 Aug 2009 03:11:38 +0000 (06:11 +0300)]
dbusiface-core: New function: pa_dbusiface_core_get_card_path().

14 years agodbusiface-card: Fix the OwnerModule property type in handle_get_all().
Tanu Kaskinen [Sat, 15 Aug 2009 03:09:35 +0000 (06:09 +0300)]
dbusiface-card: Fix the OwnerModule property type in handle_get_all().

14 years agodbusiface-card: Assert that the profiles list is empty if there's no active
Tanu Kaskinen [Sat, 15 Aug 2009 03:00:46 +0000 (06:00 +0300)]
dbusiface-card: Assert that the profiles list is empty if there's no active
profile.

14 years agodbusiface-card: Use the ++ operator like it's meant to be used.
Tanu Kaskinen [Sat, 15 Aug 2009 02:58:24 +0000 (05:58 +0300)]
dbusiface-card: Use the ++ operator like it's meant to be used.

14 years agodbusiface-card-profile: Assert the core argument isn't NULL.
Tanu Kaskinen [Sat, 15 Aug 2009 02:53:36 +0000 (05:53 +0300)]
dbusiface-card-profile: Assert the core argument isn't NULL.

14 years agodbusiface-card: Split some overly long lines.
Tanu Kaskinen [Sat, 15 Aug 2009 02:51:55 +0000 (05:51 +0300)]
dbusiface-card: Split some overly long lines.

14 years agoladspa/remap: sync latency flags from master sink when moving between sinks
Lennart Poettering [Sat, 15 Aug 2009 01:42:16 +0000 (03:42 +0200)]
ladspa/remap: sync latency flags from master sink when moving between sinks

14 years agocore: introduce pa_{sink|source}_update_flags()
Lennart Poettering [Sat, 15 Aug 2009 01:41:13 +0000 (03:41 +0200)]
core: introduce pa_{sink|source}_update_flags()

14 years agopulse: even in case of record stream, let's initialize req_bytes to 0
Marc-André Lureau [Mon, 20 Jul 2009 10:53:17 +0000 (13:53 +0300)]
pulse: even in case of record stream, let's initialize req_bytes to 0

14 years agobluetooth: fix typo with service_{read,write}_type
Marc-André Lureau [Mon, 20 Jul 2009 10:44:27 +0000 (13:44 +0300)]
bluetooth: fix typo with service_{read,write}_type

14 years agobluetooth: don't call pa_sink_render with 0 bytes request
Marc-André Lureau [Mon, 6 Jul 2009 14:50:51 +0000 (17:50 +0300)]
bluetooth: don't call pa_sink_render with 0 bytes request

14 years agodatabase: simple hashmap based database implementation
Juho Hämäläinen [Wed, 12 Aug 2009 15:30:14 +0000 (18:30 +0300)]
database: simple hashmap based database implementation

14 years agocombine: determine sample parameters of combined sink from underlying sinks
Maarten Bosmans [Fri, 14 Aug 2009 23:35:53 +0000 (01:35 +0200)]
combine: determine sample parameters of combined sink from underlying sinks

http://pulseaudio.org/ticket/521

14 years agocombine: warn when the latency of a stream gets too high
Lennart Poettering [Fri, 14 Aug 2009 23:16:57 +0000 (01:16 +0200)]
combine: warn when the latency of a stream gets too high

14 years agocombine: big rework
Lennart Poettering [Fri, 14 Aug 2009 23:07:37 +0000 (01:07 +0200)]
combine: big rework

14 years agocombine: drop adjust_timestamp variable because it is unused
Lennart Poettering [Fri, 14 Aug 2009 23:04:21 +0000 (01:04 +0200)]
combine: drop adjust_timestamp variable because it is unused

14 years agoladspa: name sink after human readable plugin name, not the id string
Lennart Poettering [Fri, 14 Aug 2009 23:02:16 +0000 (01:02 +0200)]
ladspa: name sink after human readable plugin name, not the id string

14 years agomodule-ladspa: allow moving of sink, forward fixed latency
Lennart Poettering [Fri, 14 Aug 2009 23:01:52 +0000 (01:01 +0200)]
module-ladspa: allow moving of sink, forward fixed latency

14 years agomodule-remap: allow moving of sink, forward fixed latency
Lennart Poettering [Fri, 14 Aug 2009 22:59:26 +0000 (00:59 +0200)]
module-remap: allow moving of sink, forward fixed latency

This is a bigger change reworking a number of things:

- We now allow moving of the remap sink betwween backend sinks like any
  other stream.

- We forward the fixed latency parameter of the underlying sinks the
  same way as the dynamic latency.

14 years agoladspa: move LADSPA_Data size check to compile time
Lennart Poettering [Fri, 14 Aug 2009 22:58:19 +0000 (00:58 +0200)]
ladspa: move LADSPA_Data size check to compile time

14 years agoremap: unify argument order with other modules
Lennart Poettering [Fri, 14 Aug 2009 22:57:36 +0000 (00:57 +0200)]
remap: unify argument order with other modules

14 years agohook-list: make use of PA_LLIST_FOREACH
Lennart Poettering [Fri, 14 Aug 2009 22:55:31 +0000 (00:55 +0200)]
hook-list: make use of PA_LLIST_FOREACH

14 years agonative-protocol: downgrade volume change log messages
Lennart Poettering [Fri, 14 Aug 2009 22:54:51 +0000 (00:54 +0200)]
native-protocol: downgrade volume change log messages

14 years agocore: document difference between IO and main thread view on requested latency
Lennart Poettering [Fri, 14 Aug 2009 22:54:25 +0000 (00:54 +0200)]
core: document difference between IO and main thread view on requested latency

14 years agocore: don't update latency range if not changed
Lennart Poettering [Fri, 14 Aug 2009 22:54:02 +0000 (00:54 +0200)]
core: don't update latency range if not changed

14 years agocore: call pa_sink_get_latency_within_thread() instead of going directly via process_...
Lennart Poettering [Fri, 14 Aug 2009 22:52:50 +0000 (00:52 +0200)]
core: call pa_sink_get_latency_within_thread() instead of going directly via process_msg()

14 years agocore: make fixed latency dynamically changeable
Lennart Poettering [Fri, 14 Aug 2009 22:48:14 +0000 (00:48 +0200)]
core: make fixed latency dynamically changeable

This of course makes the name 'fixed' a bit of a misnomer. However the
definitions are now like this:

fixed latency: the latency may change during runtime, but is solely
controlled by the backend, the client has no influence.

dynamic latency: the latency may change during runtime, influenced by
the requests of the clients.

i.e. fixed vs. dynamic is from the perspective of the client.

14 years agocore: move rtpoll to thread_info sub structure
Lennart Poettering [Fri, 14 Aug 2009 22:26:00 +0000 (00:26 +0200)]
core: move rtpoll to thread_info sub structure

14 years agolog: place more rate limit invocations
Lennart Poettering [Fri, 14 Aug 2009 22:16:25 +0000 (00:16 +0200)]
log: place more rate limit invocations

14 years agorescure-stream: handle failed moves as well as dying sinks/sources
Lennart Poettering [Fri, 14 Aug 2009 22:15:18 +0000 (00:15 +0200)]
rescure-stream: handle failed moves as well as dying sinks/sources

14 years agocore: split of FAIL_ON_SUSPEND into KILL_ON_SUSPEND and NO_CREATE_ON_SUSPEND
Lennart Poettering [Fri, 14 Aug 2009 22:12:53 +0000 (00:12 +0200)]
core: split of FAIL_ON_SUSPEND into KILL_ON_SUSPEND and NO_CREATE_ON_SUSPEND

14 years agonative: handle moving() callback with NULL destination properly
Lennart Poettering [Fri, 14 Aug 2009 22:05:17 +0000 (00:05 +0200)]
native: handle moving() callback with NULL destination properly

14 years agocore: introduce pa_{sink_input|source_output}_fail_move()
Lennart Poettering [Fri, 14 Aug 2009 22:03:50 +0000 (00:03 +0200)]
core: introduce pa_{sink_input|source_output}_fail_move()

14 years agomodule-stream-restore: don't fiddle with sinks/sources/streams that are not fully...
Lennart Poettering [Fri, 14 Aug 2009 21:55:32 +0000 (23:55 +0200)]
module-stream-restore: don't fiddle with sinks/sources/streams that are not fully set up yet

14 years agovolume: guarantee dB/linear conversion is reversible
Lennart Poettering [Fri, 14 Aug 2009 18:03:30 +0000 (20:03 +0200)]
volume: guarantee dB/linear conversion is reversible

14 years agoprotocol-native: log explicitly each time a client triggers a volume change
Lennart Poettering [Fri, 14 Aug 2009 17:31:05 +0000 (19:31 +0200)]
protocol-native: log explicitly each time a client triggers a volume change