diff --git a/.cvsignore b/.cvsignore index 2687064..72b0e55 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -pulseaudio-0.9.15-test3.tar.gz +pulseaudio-0.9.15-test4.tar.gz diff --git a/116b38c972942ccbbb8dae5dc0181da98096a0ce.patch b/116b38c972942ccbbb8dae5dc0181da98096a0ce.patch deleted file mode 100644 index a47add9..0000000 --- a/116b38c972942ccbbb8dae5dc0181da98096a0ce.patch +++ /dev/null @@ -1,272 +0,0 @@ -diff --git a/src/Makefile.am b/src/Makefile.am -index 1fc8735..f5a1feb 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -1315,7 +1315,7 @@ endif - - if HAVE_DBUS - libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c modules/reserve-wrap.c modules/reserve-wrap.h --libalsa_util_la_LIBADD += $(DBUS_LIBS) -+libalsa_util_la_LIBADD += $(DBUS_LIBS) libdbus-util.la - libalsa_util_la_CFLAGS += $(DBUS_CFLAGS) - endif - -@@ -1532,7 +1532,7 @@ libbluetooth_util_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) - - module_bluetooth_device_la_SOURCES = modules/bluetooth/module-bluetooth-device.c modules/bluetooth/rtp.h - module_bluetooth_device_la_LDFLAGS = $(MODULE_LDFLAGS) --module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la -+module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la - module_bluetooth_device_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) - - # Apple Airtunes/RAOP -diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c -index dbd95b6..0aef1bd 100644 ---- a/src/modules/alsa/alsa-sink.c -+++ b/src/modules/alsa/alsa-sink.c -@@ -61,10 +61,11 @@ - /* #define DEBUG_TIMING */ - - #define DEFAULT_DEVICE "default" --#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */ --#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */ --#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ --#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */ -+#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s -- Overall buffer size */ -+#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms -- Fill up when only this much is left in the buffer */ -+#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- On underrun, increase watermark by this */ -+#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- Sleep at least 10ms on each iteration */ -+#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms -- Wakeup at least this long before the buffer runs empty*/ - - struct userdata { - pa_core *core; -@@ -86,7 +87,16 @@ struct userdata { - pa_bool_t mixer_seperate_channels:1; - pa_cvolume hardware_volume; - -- size_t frame_size, fragment_size, hwbuf_size, tsched_watermark, hwbuf_unused, min_sleep, min_wakeup; -+ size_t -+ frame_size, -+ fragment_size, -+ hwbuf_size, -+ tsched_watermark, -+ hwbuf_unused, -+ min_sleep, -+ min_wakeup, -+ watermark_step; -+ - unsigned nfragments; - pa_memchunk memchunk; - -@@ -205,10 +215,11 @@ static void adjust_after_underrun(struct userdata *u) { - pa_usec_t old_min_latency, new_min_latency; - - pa_assert(u); -+ pa_assert(u->use_tsched); - - /* First, just try to increase the watermark */ - old_watermark = u->tsched_watermark; -- u->tsched_watermark *= 2; -+ u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step); - fix_tsched_watermark(u); - - if (old_watermark != u->tsched_watermark) { -@@ -219,7 +230,8 @@ static void adjust_after_underrun(struct userdata *u) { - - /* Hmm, we cannot increase the watermark any further, hence let's raise the latency */ - old_min_latency = u->sink->thread_info.min_latency; -- new_min_latency = PA_MIN(old_min_latency * 2, u->sink->thread_info.max_latency); -+ new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC); -+ new_min_latency = PA_MIN(new_min_latency, u->sink->thread_info.max_latency); - - if (old_min_latency != new_min_latency) { - pa_log_notice("Increasing minimal latency to %0.2f ms", -@@ -1484,7 +1496,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca - - struct userdata *u = NULL; - const char *dev_id = NULL; -- pa_sample_spec ss; -+ pa_sample_spec ss, requested_ss; - pa_channel_map map; - uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark; - snd_pcm_uframes_t period_frames, tsched_frames; -@@ -1503,6 +1515,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca - goto fail; - } - -+ requested_ss = ss; - frame_size = pa_frame_size(&ss); - - nfrags = m->core->default_n_fragments; -@@ -1674,12 +1687,14 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca - u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size); - u->nfragments = nfrags; - u->hwbuf_size = u->fragment_size * nfrags; -- u->tsched_watermark = tsched_watermark; -+ u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->sink->sample_spec); - pa_cvolume_mute(&u->hardware_volume, u->sink->sample_spec.channels); - - if (use_tsched) { - fix_min_sleep_wakeup(u); - fix_tsched_watermark(u); -+ -+ u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->sink->sample_spec); - } - - u->sink->thread_info.max_rewind = use_tsched ? u->hwbuf_size : 0; -diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c -index 39df4a9..671df3f 100644 ---- a/src/modules/alsa/alsa-source.c -+++ b/src/modules/alsa/alsa-source.c -@@ -64,6 +64,7 @@ - #define DEFAULT_DEVICE "default" - #define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */ - #define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */ -+#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ - #define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ - #define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */ - -@@ -88,7 +89,16 @@ struct userdata { - - pa_cvolume hardware_volume; - -- size_t frame_size, fragment_size, hwbuf_size, tsched_watermark, hwbuf_unused, min_sleep, min_wakeup; -+ size_t -+ frame_size, -+ fragment_size, -+ hwbuf_size, -+ tsched_watermark, -+ hwbuf_unused, -+ min_sleep, -+ min_wakeup, -+ watermark_step; -+ - unsigned nfragments; - - char *device_name; -@@ -202,10 +212,12 @@ static void adjust_after_overrun(struct userdata *u) { - pa_usec_t old_min_latency, new_min_latency; - - pa_assert(u); -+ pa_assert(u->use_tsched); - - /* First, just try to increase the watermark */ - old_watermark = u->tsched_watermark; -- u->tsched_watermark *= 2; -+ u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step); -+ - fix_tsched_watermark(u); - - if (old_watermark != u->tsched_watermark) { -@@ -216,7 +228,8 @@ static void adjust_after_overrun(struct userdata *u) { - - /* Hmm, we cannot increase the watermark any further, hence let's raise the latency */ - old_min_latency = u->source->thread_info.min_latency; -- new_min_latency = PA_MIN(old_min_latency * 2, u->source->thread_info.max_latency); -+ new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC); -+ new_min_latency = PA_MIN(new_min_latency, u->source->thread_info.max_latency); - - if (old_min_latency != new_min_latency) { - pa_log_notice("Increasing minimal latency to %0.2f ms", -@@ -1331,7 +1344,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p - - struct userdata *u = NULL; - const char *dev_id = NULL; -- pa_sample_spec ss; -+ pa_sample_spec ss, requested_ss; - pa_channel_map map; - uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark; - snd_pcm_uframes_t period_frames, tsched_frames; -@@ -1349,6 +1362,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p - goto fail; - } - -+ requested_ss = ss; - frame_size = pa_frame_size(&ss); - - nfrags = m->core->default_n_fragments; -@@ -1515,12 +1529,14 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p - u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size); - u->nfragments = nfrags; - u->hwbuf_size = u->fragment_size * nfrags; -- u->tsched_watermark = tsched_watermark; -+ u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->source->sample_spec); - pa_cvolume_mute(&u->hardware_volume, u->source->sample_spec.channels); - - if (use_tsched) { - fix_min_sleep_wakeup(u); - fix_tsched_watermark(u); -+ -+ u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->source->sample_spec); - } - - pa_source_set_latency_range(u->source, -diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h -index d30dc3b..fa44c42 100644 ---- a/src/pulse/proplist.h -+++ b/src/pulse/proplist.h -@@ -156,7 +156,7 @@ PA_C_DECL_BEGIN - /** For devices: device class. One of "sound", "modem", "monitor", "filter" */ - #define PA_PROP_DEVICE_CLASS "device.class" - --/** For devices: form factor if applicable. One of "laptop-speakers", "external-speakers", "telephone", "tv-capture", "webcam-capture", "microphone-capture", "headset", "headphones", "hands-free", "car", "hifi", "computer", "portable" */ -+/** For devices: form factor if applicable. One of "internal-speakers", "external-speakers", "handset", "tv-capture", "webcam", "microphone", "headset", "headphones", "hands-free", "car", "hifi", "computer", "portable" */ - #define PA_PROP_DEVICE_FORM_FACTOR "device.form_factor" - - /** For devices: connector of the device if applicable. One of "isa", "pci", "usb", "firewire", "bluetooth" */ -diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c -index eef967a..c064e67 100644 ---- a/src/pulsecore/core.c -+++ b/src/pulsecore/core.c -@@ -250,3 +250,14 @@ int pa_core_exit(pa_core *c, pa_bool_t force, int retval) { - c->mainloop->quit(c->mainloop, retval); - return 0; - } -+ -+void pa_core_maybe_vacuum(pa_core *c) { -+ pa_assert(c); -+ -+ if (!pa_idxset_isempty(c->sink_inputs) || -+ !pa_idxset_isempty(c->source_outputs)) -+ return; -+ -+ pa_log_debug("Hmm, no streams around, trying to vacuum."); -+ pa_mempool_vacuum(c->mempool); -+} -diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h -index 7660bd3..093fa8f 100644 ---- a/src/pulsecore/core.h -+++ b/src/pulsecore/core.h -@@ -171,4 +171,6 @@ void pa_core_check_idle(pa_core *c); - - int pa_core_exit(pa_core *c, pa_bool_t force, int retval); - -+void pa_core_maybe_vacuum(pa_core *c); -+ - #endif -diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c -index 544bb33..34de9bb 100644 ---- a/src/pulsecore/sink-input.c -+++ b/src/pulsecore/sink-input.c -@@ -468,6 +468,8 @@ void pa_sink_input_unlink(pa_sink_input *i) { - i->sink = NULL; - } - -+ pa_core_maybe_vacuum(i->core); -+ - pa_sink_input_unref(i); - } - -diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c -index d8a2363..d99f79c 100644 ---- a/src/pulsecore/source-output.c -+++ b/src/pulsecore/source-output.c -@@ -335,6 +335,8 @@ void pa_source_output_unlink(pa_source_output*o) { - o->source = NULL; - } - -+ pa_core_maybe_vacuum(o->core); -+ - pa_source_output_unref(o); - } - diff --git a/pulseaudio.spec b/pulseaudio.spec index 81c964d..60f952e 100644 --- a/pulseaudio.spec +++ b/pulseaudio.spec @@ -3,10 +3,10 @@ Name: pulseaudio Summary: Improved Linux sound server Version: 0.9.15 -Release: 3.test3%{?dist} +Release: 3.test4%{?dist} License: GPLv2+ Group: System Environment/Daemons -Source0: http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-%{version}-test3.tar.gz +Source0: http://0pointer.de/lennart/projects/pulseaudio/pulseaudio-%{version}-test4.tar.gz URL: http://pulseaudio.org BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: m4 @@ -44,10 +44,11 @@ BuildRequires: openssl-devel BuildRequires: gdbm-devel BuildRequires: speex-devel >= 1.2 BuildRequires: libasyncns-devel +BuildRequires: libudev-devel Obsoletes: pulseaudio-devel Obsoletes: pulseaudio-core-libs Provides: pulseaudio-core-libs -Patch0: 116b38c972942ccbbb8dae5dc0181da98096a0ce.patch +Requires: udev-extras %description PulseAudio is a sound server for Linux and other Unix like operating @@ -184,8 +185,7 @@ Requires: %{name}-libs = %{version}-%{release} This package contains command line utilities for the PulseAudio sound server. %prep -%setup -q -T -b0 -n pulseaudio-0.9.15-test3 -%patch0 -p1 -b .116b38c972942ccbbb8dae5dc0181da98096a0ce +%setup -q -T -b0 -n pulseaudio-0.9.15-test4 %build CFLAGS="-ggdb" %configure --disable-static --disable-rpath --with-system-user=pulse --with-system-group=pulse --with-realtime-group=pulse-rt --with-access-group=pulse-access @@ -407,6 +407,9 @@ groupadd -r pulse-access &>/dev/null || : %{_mandir}/man1/pax11publish.1.gz %changelog +* Thu Mar 5 2009 Lennart Poettering 0.9.15-3.test4 +- New test release + * Fri Feb 27 2009 Lennart Poettering 0.9.15-3.test3 - Steal patch from git master to fix .so dependencies diff --git a/sources b/sources index 28154ca..617e699 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -131d231b6c9cc2eea59183d643dc831a pulseaudio-0.9.15-test3.tar.gz +ccaea6a47e3f488db430c6f7854b3a58 pulseaudio-0.9.15-test4.tar.gz