chiark / gitweb /
Mark Wooding [Mon, 27 Nov 2017 02:03:52 +0000 (02:03 +0000)]
tests/dtest.py: Maintain a separate test root for each test.
Now they can run in parallel without breaking each other, which is nice.
It's nice for two reasons: firstly, Automake changed behaviour and runs
tests in parallel by default nowadays; and secondly, the tests are
rather slow because they involve a bunch of waiting around for things,
and waiting for stuff in parallel is easy.
The downside is that we end up gobbling a lot of disk space with all of
the logfiles. I think this is a good trade.
Mark Wooding [Fri, 17 Nov 2017 22:16:46 +0000 (22:16 +0000)]
server/Makefile.am: Link `disorder_gstdecode' with `-lpcre'.
Linkers which don't transitively follow shared-library dependencies
complain. This is fair enough, because there's a real direct dependency
here.
Mark Wooding [Fri, 17 Nov 2017 22:15:38 +0000 (22:15 +0000)]
disobedience/misc.c: Muffle warning about `gdk_pixbuf_new_from_inline'.
Maybe we should use GResource at some point, but (a) it involves some
awful XML disaster, and (b) it's looking like way more effort than I
want to spend right now.
Mark Wooding [Fri, 17 Nov 2017 22:15:13 +0000 (22:15 +0000)]
lib/configuration.c: Remove `type_stringlist', which nothing was using.
Mark Wooding [Fri, 17 Nov 2017 22:14:02 +0000 (22:14 +0000)]
configure.ac: Link `-lgc' when searching for `GC_mumble' functions.
Otherwise we can't find them and fall back to using deprecated things.
This is a shame.
Mark Wooding [Wed, 22 Nov 2017 23:03:34 +0000 (23:03 +0000)]
README, debian/control: Deprecate `sox' support.
sox introduced yet more command-line options in 14.2, whinges about the
old ones in 14.4, and threatens to remove them in 14.5 (because
obviously compatibility between minor versions is an old-fashioned idea
whose day is long past).
Rather than chase this obnoxiously moving target,
(a) report that sox support is deprecated and will be removed in some
future major version of DisOrder; and
(b) have the Debian package Build-Depend on `libsamplerate0-dev' so
that at least Debian users don't have to put up with sox's moaning
in the logs.
Reported-by: Ross Younger
Mark Wooding [Wed, 22 Nov 2017 23:03:11 +0000 (23:03 +0000)]
README: Mention optional support for GStreamer.
Mark Wooding [Wed, 22 Nov 2017 22:29:12 +0000 (22:29 +0000)]
debian/etc.disorder.config: Remove bogus `trust root' line.
The `trust' option was removed in
657fdb79cbec..., but the default
Debian configuration wasn't changed to match. Fix this.
Reported-by: Ross Younger
Richard Kettlewell [Thu, 18 May 2017 17:47:28 +0000 (18:47 +0100)]
Email address
Richard Kettlewell [Sun, 24 Jan 2016 10:22:32 +0000 (10:22 +0000)]
Update .gitignore
Richard Kettlewell [Sun, 24 Jan 2016 10:20:42 +0000 (10:20 +0000)]
Replace code.google references with github references
Mark Wooding [Fri, 22 Jan 2016 10:58:36 +0000 (10:58 +0000)]
Fix `distcheck' complaints.
* Have `disobedience/Makefile.am' remove the images and desktop file
it installs.
* Remove `lib/versionstring.c' as well as its header file during
clean.
* Move source files (but not headers) from `lib/' to new `common/'
directory if they're needed by other directories, and refer to them
via the `VPATH' feature rather than using explicit pathnames. (It
doesn't work to have the whole of `lib/' on the VPATH because there
are files in some of the other directories with the same names,
which breaks in-tree builds.)
Mark Wooding [Thu, 21 Jan 2016 19:06:18 +0000 (19:06 +0000)]
disobedience/disobedience.c: Show track title (or excuse) in title.
This doesn't do a great deal of good when the window is mapped. But, in
some window managers at least, the title can be seen in a tooltip or
similar when the window is iconified or otherwise not visible.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
Merge branch 'mdw/gstdecode'
* mdw/gstdecode:
Add documentation and administrivia about `disorder-gstdecode'.
server/gstdecode.c: Produce the configured sample format directly.
server/gstdecode.c: Allow user to tweak the various parameters.
server/gstdecode.c: New program, like `disorder-decode'.
Conflicts:
.gitignore
CHANGES.html
README
debian/control
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
CHANGES.html, README: Update the administrivia.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
debian/control: Add Build-Depends for PulseAudio.
It really won't build without; and it probably shouldn't.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
Add documentation and administrivia about `disorder-gstdecode'.
Mark Wooding [Tue, 15 Dec 2015 19:15:23 +0000 (19:15 +0000)]
lib/cgi.c (cgi__input): Write terminating null within allocated buffer.
This one's been there forever. It sometimes results in `malloc'
reporting a (rather impressive) assertion failure
disorder: malloc.c:3096: sYSMALLOc: Assertion `(old_top ==
(((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) -
__builtin_offsetof (struct malloc_chunk, fd)))) &&
old_size == 0) || ((unsigned long) (old_size) >=
(unsigned long)((((__builtin_offsetof (struct malloc_chunk,
fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 *
(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) &&
((unsigned long)old_end & pagemask) == 0)' failed.
often after producing the beginning of the output page, so the end user
gets a blank window. Not really what we want.
This fix closes issue #57.
Mark Wooding [Sat, 9 Jan 2016 01:37:36 +0000 (01:37 +0000)]
disobedience/choose-search.c: Fix segfault when search terms change.
The observed problem: Sometimes, when typing search terms into the box,
DisObedience crashes. This seems to happen more often when the server
is slow to respond.
Here's what's going on. Suppose that a search finds some results. Then
`choose_make_visible' tries to expand the tree to display them. If some
of the results aren't populated in the tree yet, then
`choose_make_one_visible' arranges to fetch the necessary information
from the server and informs its caller, `choose_make_visible', that
it'll have to try again later. When this happens, `choose_make_visible'
hooks itself onto the `choose-more-tracks' event and waits for the
information to arrive.
Suppose that, while this is happening, the user edits the search terms;
a new search starts, but this one returns no results. Then
`choose_search_completed' zaps the `choose_search_results' vector and
returns.
Now the metadata from the old search arrives from the server;
`choose_make_visible' is called back. There are now no search results,
so it thinks its work is done and tries to scroll the list widget so
that the first result is visible -- but the result vector has been
clobbered. Result: misery.
To fix this, cancel the `choose-more-tracks' event handler when a new
search finishes. Now we can't get into this situation any more.
Mark Wooding [Thu, 31 Dec 2015 21:02:28 +0000 (21:02 +0000)]
cgi/actions.c, lib/client*.[ch]: Don't use priv connection to check passwd.
If the CGI runs as the main `jukebox' user, then it can connect using
the special `.../private/socket', and the `find_server' function
arranges to do this if it can and no network address has been assigned
in the configuration.
The server doesn't bother to check passwords from clients on privileged
connections. The result is that if the CGI program runs as the
`jukebox' user, its attempt to check the end-user's password through the
usual login machinery is stymied, since the library automatically sets
up a privileged connection and then the server ignores the password
entirely. The end result is that, if you set things up in this way,
anyone can log into the CGI program with any known user and any password
at all, at which point they're given a cookie which can be used in
direct communication with the server.
Fix this as follows.
* Introduce a new version (in the correct namespace for a change) of
`find_server' which accepts some flags to guide the choice of server
addresses.
* Add a flag for the new `disorder_find_server' function to prevent
trying the privileged socket.
* Add a function to the client interface (and a bit of state to the
client structure) to instruct the connection functions not to use a
privileged connection even if they can.
* Get the CGI program to use this new function when logging in with a
password, so that it will always be checked.
Cookies are checked properly, even from privileged clients, so there's
nothing to fix there.
Mark Wooding [Thu, 31 Dec 2015 20:52:00 +0000 (20:52 +0000)]
scripts/sedfiles.make, doc/disorder.cgi.8.in: Say where the file is.
The manpage used to say that the Makefile doesn't install the CGI
program anywhere, which hasn't been true for a while. Remove the old
lies and just say where it was put.
Mark Wooding [Thu, 31 Dec 2015 20:49:02 +0000 (20:49 +0000)]
configure.ac, lib/mem.c: Compatibility with older versions of libgc.
The `GC_get_all_interior_pointers()' function and its friends were
introduced after the libgc in Debian wheezy (which is quite impressive
seeing as they were added in 2009). Make sure it's there; use the old
now-deprecated variable directly if it isn't.
Richard Kettlewell [Sat, 24 Oct 2015 09:10:13 +0000 (10:10 +0100)]
Respond to libgc deprecation warning
Richard Kettlewell [Sun, 13 Sep 2015 11:06:31 +0000 (12:06 +0100)]
Add nonnull attribute to a few function args.
Richard Kettlewell [Sun, 13 Sep 2015 11:06:02 +0000 (12:06 +0100)]
Tinker with loop bounding to placate GCC 5.2.1
Richard Kettlewell [Sat, 14 Feb 2015 10:24:45 +0000 (10:24 +0000)]
gzip -n in aid of reproducible builds
Richard Kettlewell [Sun, 1 Jun 2014 13:04:08 +0000 (14:04 +0100)]
Warning tidy-up for FreeBSD.
- if dlfunc is available use that. Allows -Werror to be re-enabled.
- use modern struct member initializers
- cope with FD_SETSIZE being explicitly unsigned
- remove stray brackets
- remove unused objects
- use %ju to print sig_atomic_t, it might be bigger than int
Richard Kettlewell [Fri, 30 May 2014 19:20:23 +0000 (20:20 +0100)]
Assign default http/cgi directories
Richard Kettlewell [Fri, 30 May 2014 17:41:35 +0000 (18:41 +0100)]
FreeBSD doesn't have IFF_DYNAMIC
Richard Kettlewell [Fri, 30 May 2014 17:39:43 +0000 (18:39 +0100)]
FreeBSD fixes
Update list of libdb versions.
Bodge in -liconv.
Richard Kettlewell [Sun, 25 May 2014 13:40:10 +0000 (14:40 +0100)]
Placate gcc -flto
I don't think either of these are real bugs, but it keeps the compiler
happy.
Richard Kettlewell [Mon, 27 Jan 2014 19:54:47 +0000 (19:54 +0000)]
init: source lsb init functions
Placates lintian a bit.
Richard Kettlewell [Sun, 26 Jan 2014 14:26:41 +0000 (14:26 +0000)]
Suppress bogus doc-base registration warnings from lintian.
Richard Kettlewell [Sat, 25 Jan 2014 23:25:12 +0000 (23:25 +0000)]
Remove redundant entry from .desktop file
Richard Kettlewell [Sat, 18 Jan 2014 19:47:21 +0000 (19:47 +0000)]
Enable hardening flags harder.
Now with a workaround for broken GCC diagnostic.
Richard Kettlewell [Tue, 14 Jan 2014 18:51:36 +0000 (18:51 +0000)]
debian: use debian compiler flags
Richard Kettlewell [Tue, 14 Jan 2014 18:51:28 +0000 (18:51 +0000)]
debian: don't depend on essential packages
Richard Kettlewell [Sun, 22 Dec 2013 11:17:42 +0000 (11:17 +0000)]
disorder.h: more consistent approach to function attributes
Richard Kettlewell [Sat, 23 Nov 2013 11:21:51 +0000 (11:21 +0000)]
gitignore
Richard Kettlewell [Sat, 23 Nov 2013 11:21:45 +0000 (11:21 +0000)]
tests: python unbuffered revisited
Richard Kettlewell [Sat, 23 Nov 2013 11:11:38 +0000 (11:11 +0000)]
Set AUTOMAKE_OPTIONS=subdir-objects where necessary.
Richard Kettlewell [Sun, 17 Nov 2013 11:38:02 +0000 (11:38 +0000)]
Windows support for command line client
Non-ASCII characters not properly supported.
Richard Kettlewell [Sun, 17 Nov 2013 11:34:52 +0000 (11:34 +0000)]
Provide for a network initialization step
Richard Kettlewell [Sun, 17 Nov 2013 11:34:18 +0000 (11:34 +0000)]
table search: cope without typeof
Richard Kettlewell [Sun, 17 Nov 2013 11:33:42 +0000 (11:33 +0000)]
Remove some redundant includes.
Richard Kettlewell [Sun, 17 Nov 2013 11:32:44 +0000 (11:32 +0000)]
Add uint16_t if missing.
Richard Kettlewell [Sun, 17 Nov 2013 11:31:52 +0000 (11:31 +0000)]
Move up file inclusion.
Richard Kettlewell [Sun, 17 Nov 2013 11:31:33 +0000 (11:31 +0000)]
UTF-16 support
Richard Kettlewell [Sun, 17 Nov 2013 11:25:50 +0000 (11:25 +0000)]
Synchronous client now uses socketio sources and sinks instead of stdio
Richard Kettlewell [Sun, 17 Nov 2013 11:24:51 +0000 (11:24 +0000)]
inputline variant which uses a source
Richard Kettlewell [Sun, 17 Nov 2013 11:22:55 +0000 (11:22 +0000)]
Sources, by analogy with sinks
Richard Kettlewell [Sun, 17 Nov 2013 11:22:33 +0000 (11:22 +0000)]
socketio sink
Richard Kettlewell [Sun, 17 Nov 2013 11:21:47 +0000 (11:21 +0000)]
More general error handling for sinks
Richard Kettlewell [Sun, 17 Nov 2013 11:19:08 +0000 (11:19 +0000)]
Buffered socket IO wrappers
Includes a nod to win32 API.
Richard Kettlewell [Sun, 17 Nov 2013 11:01:05 +0000 (11:01 +0000)]
More error string formatting.
Richard Kettlewell [Sun, 17 Nov 2013 11:00:41 +0000 (11:00 +0000)]
More conditional header inclusion.
Richard Kettlewell [Sun, 17 Nov 2013 11:00:21 +0000 (11:00 +0000)]
Typos.
Richard Kettlewell [Sun, 17 Nov 2013 10:57:23 +0000 (10:57 +0000)]
Commit version string files.
Allows for platforms with a rubbish build system.
Richard Kettlewell [Sun, 17 Nov 2013 10:55:40 +0000 (10:55 +0000)]
Use private *printf functions a bit more widely.
Richard Kettlewell [Sun, 17 Nov 2013 10:52:17 +0000 (10:52 +0000)]
C89 friendly declarations
Again, not a complete sweep.
Richard Kettlewell [Sun, 17 Nov 2013 10:47:42 +0000 (10:47 +0000)]
log: more general error message formatting
Richard Kettlewell [Sun, 17 Nov 2013 10:36:38 +0000 (10:36 +0000)]
Cope with various header files being missing.
Not a complete sweep - only things that will work on Windows have been
updated.
Richard Kettlewell [Sun, 17 Nov 2013 10:12:17 +0000 (10:12 +0000)]
doxygen: remove obsolete config file entries
Richard Kettlewell [Sun, 10 Nov 2013 14:14:50 +0000 (14:14 +0000)]
CHANGES
Richard Kettlewell [Sun, 10 Nov 2013 14:04:01 +0000 (14:04 +0000)]
uaudio: newer compiler spotted a short memcpy
Bah
Richard Kettlewell [Sun, 10 Nov 2013 14:00:16 +0000 (14:00 +0000)]
playrtp: support multiple unicast mode
Richard Kettlewell [Sun, 10 Nov 2013 14:00:02 +0000 (14:00 +0000)]
server: implement multiple-unicast RTP
Updates the protocol definition and implementation and
exposes the uaudio-rtp rtp_mode variable in the config.
Richard Kettlewell [Sun, 10 Nov 2013 13:58:33 +0000 (13:58 +0000)]
speaker: new comments to add/remove RTP recipients
Richard Kettlewell [Sun, 10 Nov 2013 13:57:26 +0000 (13:57 +0000)]
client.c: new disorder_client_af reveals connectivity type
Richard Kettlewell [Sun, 10 Nov 2013 13:56:42 +0000 (13:56 +0000)]
uaudio: RTP multiple unicast mode
Richard Kettlewell [Sun, 10 Nov 2013 13:53:25 +0000 (13:53 +0000)]
speaker: protocol structure now has a union for different arg types
Richard Kettlewell [Sun, 10 Nov 2013 12:33:23 +0000 (12:33 +0000)]
gitignore
Richard Kettlewell [Thu, 7 Nov 2013 17:04:55 +0000 (17:04 +0000)]
CHANGES
Richard Kettlewell [Thu, 7 Nov 2013 17:03:32 +0000 (17:03 +0000)]
uaudio: pulseaudio support
Playback only, no volume setting.
Richard Kettlewell [Thu, 7 Nov 2013 17:02:16 +0000 (17:02 +0000)]
disobedience: menu item to select network playback API
Richard Kettlewell [Thu, 7 Nov 2013 16:58:02 +0000 (16:58 +0000)]
disobedience: more sensible naming in menu setup
Richard Kettlewell [Thu, 7 Nov 2013 16:56:46 +0000 (16:56 +0000)]
playrtp: --api option instead of a new option for every audio API
Richard Kettlewell [Thu, 7 Nov 2013 16:53:00 +0000 (16:53 +0000)]
uaudio: more sophisticated choice of default playback API
Richard Kettlewell [Sat, 2 Nov 2013 09:43:14 +0000 (09:43 +0000)]
autogen.sh: use /bin/sh
Richard Kettlewell [Mon, 28 Oct 2013 20:10:00 +0000 (20:10 +0000)]
doc: correct & move description of raw format players
Richard Kettlewell [Mon, 28 Oct 2013 19:47:14 +0000 (19:47 +0000)]
Remove now-redundant libao dependency.
Richard Kettlewell [Mon, 28 Oct 2013 19:35:34 +0000 (19:35 +0000)]
gitignore
Richard Kettlewell [Mon, 28 Oct 2013 19:35:04 +0000 (19:35 +0000)]
disobedience needs -lm
Explicit requirement only emerges in recent platform though.
Richard Kettlewell [Sun, 27 Oct 2013 16:53:59 +0000 (16:53 +0000)]
Include version string in background program logs
Richard Kettlewell [Sun, 22 Mar 2009 20:49:01 +0000 (20:49 +0000)]
no drag + drop
Richard Kettlewell [Sun, 27 Oct 2013 15:04:09 +0000 (15:04 +0000)]
DisOrder 5.1.1
Richard Kettlewell [Sun, 27 Oct 2013 14:46:21 +0000 (14:46 +0000)]
dist: wheezy
Richard Kettlewell [Sun, 27 Oct 2013 14:32:37 +0000 (14:32 +0000)]
debian: always run configure
Prevents trouble if configure has been run but with non-Debiany
arguments.
Richard Kettlewell [Sun, 27 Oct 2013 14:30:57 +0000 (14:30 +0000)]
autogen: use autoreconf -si
Richard Kettlewell [Sun, 17 Feb 2013 16:25:28 +0000 (16:25 +0000)]
Merge tag 'branchpoint-5.1' into release
Branch point for 5.1 release.
Conflicts:
configure.ac
debian/changelog
Richard Kettlewell [Sun, 27 Oct 2013 14:08:54 +0000 (14:08 +0000)]
CHANGES: reflect 'recent' bug fixes
Mark Wooding [Thu, 23 May 2013 02:41:30 +0000 (03:41 +0100)]
server/gstdecode.c: Produce the configured sample format directly.
Introduce a GStreamer resampler, which is benign (and fast) if it has
nothing to do, and set the sink caps to match the configured audio
format. Hopefully, the normalizer is now trivial.
This means that we must fetch the configuration file, which involves
adding gcrypt to the link.
Mark Wooding [Tue, 7 May 2013 14:23:15 +0000 (15:23 +0100)]
server/gstdecode.c: Allow user to tweak the various parameters.
In particular, fiddling with the fallback gain level, and tuning the
audio conversion quality.
Mark Wooding [Thu, 2 May 2013 03:02:08 +0000 (04:02 +0100)]
server/gstdecode.c: New program, like `disorder-decode'.
This uses GStreamer for the decoding, so it should be able to decode
more or less anything you can throw at it, assuming you have the
necessary plugins lying about.
More importantly (from my point of view) it does ReplayGain (optionally,
but by default). This uses the per-album setting by default, but this
can be overridden.
Mark Wooding [Sat, 25 May 2013 13:18:53 +0000 (14:18 +0100)]
debian/control: db4.8 is obsolete in wheezy.
The current version is 5.1, and that seems to work OK.
Mark Wooding [Sun, 19 May 2013 02:48:25 +0000 (03:48 +0100)]
server/speaker.c: Only copy whole frames into collection buffers.
At least the ALSA playback function gets into a real mess if a buffer
contains a partial frame: it leaves the partial frame behind, but is
called again until the buffer is empty, resulting in an infinite loop.
Thanks for Joe Birr-Pixton for helping diagnose this bug and coming up
with the right fix.
Mark Wooding [Tue, 7 May 2013 14:16:01 +0000 (15:16 +0100)]
lib/resample.c: Quieten some warnings better.
Newer GCC isn't fooled by `mumble = 0;' any more. Apparently `if
(mumble) {}' works.
Mark Wooding [Sun, 5 May 2013 14:39:29 +0000 (15:39 +0100)]
server/rescan.c: Remove tracks which no longer have a player.
If you ever add a player with an overly broad pattern, and it matches a
file which isn't actually an audio file but is legitimately part of the
directory tree, then there's no way of getting it out of DisOrder's
database short of hacking the files directly.
Mark Wooding [Sun, 5 May 2013 13:51:05 +0000 (14:51 +0100)]
lib/configuration.c: Allow resetting `player' and `tracklength' lists.
Saith the manual
| If player is used without arguments, the list of players is cleared.
but the code disallows such requests. So it's impossible to override
the player lists.
Richard Kettlewell [Sun, 17 Feb 2013 16:14:06 +0000 (16:14 +0000)]
disobedience: tinker with About... box