| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
On some hardware, reading the mixer value from hardware is an
expensive operation, and MPD has to do it for every client. Throttle
access to the hardware, cache the result for one second.
|
|
|
|
|
|
|
| |
time() is not a monotonic timer, and MPD might get confused by clock
skews. clock_gettime() provides a monotonic clock, but is not
portable to non-POSIX systems (i.e. Windows). This patch uses GLib's
GTimer API, which aims to be portable.
|
|
|
|
|
| |
The option "enabled" is on by default. If you specify "enabled no" in
an audio_output section, then this device is disabled by default.
|
|
|
|
|
| |
decoder_data() returns a decoder_command, no need to call
decoder_get_command() twice after decoder_command().
|
|
|
|
|
|
|
|
|
| |
If an input_stream is not seekable, libaudiofile fails to play at all:
Audio File Library: unrecognized audio file format [error 0]
Since we know in advance whether the input_stream is seekable, just
refuse to play on a non-seekable stream.
|
|
|
|
| |
Renamed several variables and a function.
|
|\ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
|
| |
[mk: adapted to new output plugin API]
|
|
|
|
|
| |
Print the list of suffixes supported by each decoder, instead of
prining a list of all suffixes of all decoders with duplicates.
|
|
|
|
|
|
| |
The generic sockaddr struct is too small for some addresses. For
accept(), we have to allocate a sockaddr_storage struct on the stack,
which is large enough for all addresses.
|
|
|
|
|
| |
Removed the sockaddr_to_tmp_string() hack, use
the new function sockaddr_to_string() instead.
|
|
|
|
|
| |
Unpack IPv4 addresses which are packed inside an IPv6 address,
i.e. return "127.0.0.1" rather than "::ffff:127.0.0.1".
|
|
|
|
|
|
| |
Create the socket_util.c library, the first function is
sockaddr_to_string(): it converts a sockaddr struct to a string
containing the IP address in a human-readable form.
|
|
|
|
|
|
|
|
|
| |
When checking whether database entries have been deleted, don't check
if an archive file is a directory (G_FILE_TEST_IS_DIR), use
G_FILE_TEST_IS_REGULAR for this case instead. To determine if a
"struct directory" is an archive, check for device==DEVICE_INARCHIVE.
This is always false after loading the database, so this patch is not
complete yet.
|
|
|
|
|
| |
When the mtime of an archive time hasn't changed, don't update it
again.
|
|
|
|
|
|
| |
Remember the modification time of each directory. This is important
for archives (which are virtual directories right now), but may also
be useful for an automatic update mechanism.
|
|
|
|
| |
Simplify the rather large function update_regular_file().
|
|
|
|
| |
Moved some of them to to directory_save.c, and others to database.c.
|
|
|
|
|
|
|
| |
Added the uri_remove_auth() library function which strips username
and password from a HTTP URI, and use it in song_print_url(). This
allows you to add HTTP URIs to the playlist including secret username
and password, without disclosing it to all MPD clients.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since we introduced a GLib logging domain, the "client" string appears
twice in the log lines:
client: client 0: command returned 0
Removed the second one, now it looks like this:
client: [0] command returned 0
Still not quite good, but better than before.
|
|
|
|
|
|
|
| |
MPD used to be silent when it could stat() a directory, but could not
opendir() it to read its contents. This caused a lot of support
headache with users who have wrong file permissions. Add another
warning message.
|
|
|
|
| |
Overwrite invalid UTF-8 sequences with question marks.
|
|
|
|
|
|
| |
There's no point in declaring num_items as a uint8_t, it doesn't save
any space, due to padding. This allows us to lift the articial "255
items" limitation.
|
|
|
|
| |
Renamed numOfItems to num_items.
|
| |
|
|
|
|
|
|
| |
The warning message "problems opening audio device while playing ..."
does not help at all, and should be removed. At this point, the real
error message has already been logged by the output thread.
|
|
|
|
|
|
| |
When all outputs are disabled, MPD printed only a meaningless message
"problems opening audio device", although it didn't attempt to open a
device.
|
|
|
|
|
| |
After initialization, audio_outputs is always non-NULL. Don't check
that.
|
|
|
|
|
| |
The check "open()!=0" is wrong, you have to write "open()>=0", because
-1 means error, and 0 is a valid file handle.
|
|
|
|
|
|
|
| |
Use GLib's GError library for reporting output device failures.
Note that some init() methods don't clean up properly after a failure,
but that's ok for now, because the MPD core will abort anyway.
|
|
|
|
|
| |
The return type of most OS X functions is OSStatus, not int. We can
get a nice error message from GetMacOSStatusCommentString(), log it.
|
|
|
|
|
|
| |
Don't call AudioOutputUnitStart() in the play() method, do it after
the device has been opened. We can eliminate the "started" property
now, because the device is always started when it's open.
|
|
|
|
|
|
| |
We don't need to keep commented code forever. If we want that
test_default_device() implementation back one day, we'll pick it from
the git history.
|
|
|
|
| |
Renamed types, functions, variables.
|
|
|
|
|
|
|
|
|
|
| |
ao_play() gets PCM data in the in_audio_format, and converts it to
out_audio_format. Comparing the input data with out_audio_format is
wrong.
prefixed with "STG:" will be automatically removed. STG: Trailing
empty lines will be automatically removed. STG: vi: set textwidth=75
filetype=diff nobackup:
|
|
|
|
| |
Eliminated manual integer parsing.
|
|
|
|
|
|
|
| |
The MPD core guarantees that the audio_output object is always
consistent, and our pa_simple!=NULL checks are superfluous. Also
don't manually close the device on error in pulse_play(), since the
MPD core does this automatically when the play() method returns 0.
|
|
|
|
| |
Eliminate one label and a bunch of gotos.
|
|
|
|
| |
Use C instead of CPP.
|
|
|
|
|
| |
Return type of oss_find_supported_param(), oss_can_convert() and
oss_find_unsupported_param() should be bool instead of int.
|
|
|
|
|
| |
Convert the num_supported and num_unsupported variables from signed to
unsigned.
|
|
|
|
| |
Renamed types, functions and variables.
|
| |
|