| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
When MPD exits, it should manually free all resources in use, to allow
easy memory leak debugging. Make the decoder thread terminate during
that.
|
|
|
|
| |
Allow logging to syslog if log_file is configured to "syslog".
|
|
|
|
|
| |
Added log_init_file() and log_init_stdout(), preparing for other
logging targets.
|
|
|
|
|
|
| |
The logging library currently has 3 constructor functions: initLog(),
open_log_files(), setup_log_output(), called in this order. Merged
the first two.
|
| |
|
|
|
|
| |
Declare log_threshold as GLogLevelFlags.
|
|
|
|
|
|
|
|
| |
If the user wants the log files with a specific mode, he has to start
MPD with the correct umask. Don't hard-code that.
This fixes a bug: when log cycling failed, MPD would not restore the
old umask.
|
|
|
|
| |
Merged code from open_log_files() and cycle_log_files().
|
|
|
|
|
| |
Removed the "error_file" option. There is only one log file now. If
a user wants to see only the errors, he should configure a log_level.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch adds RVA2 (relative volume adjustment) tag
support to mpd, as a fallback if no replaygain tags are
found. The code is almost directly from madplay (GPL).
RVA2 tags are generated for example by the "normalize" utility.
Updated by: Avuton Olrich <avuton@gmail.com>
|
|
|
|
|
| |
Use GLib locking (GMutex, GCond) instead of pthread because GLib is
more portable, e.g. on mingw32.
|
|
|
|
| |
Don't use NOTIFY_INITIALIZER to initialize audio_output_client_notify.
|
| |
|
|
|
|
|
| |
Build the path with g_build_filename(). Also use g_get_home_dir() and
g_file_test().
|
|
|
|
|
| |
Eliminate duplicated code. The GLib code is much more mature than
MPD's custom parser.
|
|
|
|
|
| |
Prepare for the migration to the GLib option parser, which uses
gboolean for flags.
|
| |
|
|
|
|
|
|
| |
The input_stream object should only be closed by the MPD core
(i.e. decoder_thread.c / decoder_run()). A decoder plugin which
attempts to close it will result in a segmentation fault.
|
|
|
|
|
| |
When there are no archive plugins, we do not need the archive API at
all. Drop all its overhead.
|
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
configure.ac
src/ls.h
src/output/shout_plugin.c
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
When save_absolute_paths_in_playlists was enabled in mpd.conf, MPD
broke all playlists when manipulated using the "playlistdelete"
command. The reason was that map_directory_child_fs() was used, which
doesn't accept slashes in the file name. Use the new map_uri_fs()
function instead.
|
| |
| |
| |
| |
| |
| |
| | |
With a large maximum playlist length, the integer multiplication
"playlist_max_length * MPD_PATH_MAX" may overflow. Change that to a
division. This was not a dangerous bug, since it was only used for
a quick estimate.
|
| |
| |
| |
| |
| | |
The old code casted it to a 32 bit integer, which cut off bits.
AVFormatContext.duration is a int64_t, so use this type.
|
| |
| |
| |
| | |
Use NULL instead. Found by sparse.
|
| |
| |
| |
| | |
Added missing includes.
|
| |
| |
| |
| | |
Add G_GNUC_UNUSED attributes.
|
| |
| |
| |
| | |
Add a G_GNUC_UNUSED attribute.
|
| |
| |
| |
| |
| |
| |
| |
| | |
It is illegal to pass an empty audio buffer around. pcm_resample()
sometimes seems to result in 0 samples, maybe related to
libsamplerate. To work around that problem, add special checks after
both pcm_convert() invocations. Removed the pcm_resample()==0 checks
from pcm_convert().
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a response is very long (e.g. a large playlist > 100k songs),
most of it will end up in the deferred buffers. Filling the deferred
queue is very expensive currently, because a new buffer is allocated
for every client_write() operation. This may lead to long delays, and
the client might give up and disconnect meanwhile. This patch makes
MPD attempt to flush the deferred queue as often as possible, to work
around this problem. Due to the MPD 0.14 code freeze, we should not
optimize the buffering code now.
|
| | |
|
|\ \ |
|
| | | |
|
|/ /
| |
| |
| |
| |
| | |
Make "secure" a log level different from "default". "secure" should be
right between "default" and "verbose". Map "default" to Glib's
"MESSAGE" log level.
|
| | |
|
| |
| |
| |
| |
| |
| | |
getPlayerErrorStr() assumes that pc.errored_song is set when an error
occured. Since the song may have been deleted meanwhile, add a NULL
check.
|
| |
| |
| |
| |
| | |
When a (remote) song is deleted from the playlist, there may still be
a reference to it in pc.errored_song. Clear this reference.
|
| |
| |
| |
| | |
least MIN(od->bufferSize, size) free bytes in the buffer. Thus MIN(od->bufferSize - od->len, size) is always equal to MIN(od->bufferSize, size).
|
| | |
|
| | |
|