| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Use g_strndup() instead of g_memdup().
|
|
|
|
| |
Make db_load(), db_save() and db_check() return bool instead of int.
|
|
|
|
|
| |
For updating the database, directory_update_init() should be called
explicitly.
|
| |
|
|
|
|
| |
It's unused.
|
|
|
|
| |
The notify library is easier to use, and has no disadvantages.
|
| |
|
|
|
|
|
| |
Start the daemon after --create-db. This makes --create-db a flag
which discards the old database and starts with a fresh one.
|
| |
|
|
|
|
|
|
| |
Handle the DELETE and UPDATE events in separate callbacks:
song_delete_event() safely deletes a song, and update_finished_event()
is called when database update is complete.
|
|
|
|
|
| |
GLib mandates that you initialize all GError objects with NULL prior
to passing it.
|
|
|
|
|
| |
Pass NULL instead of &error to g_convert(). We're not interested in
the error object.
|
|
|
|
| |
Use GLib's g_build_filename() instead of pfx_dir().
|
| |
|
| |
|
|
|
|
|
| |
directory_is_root() is cheaper than
isRootDirectory(directory_get_path()).
|
| |
|
|
|
|
|
|
| |
Don't call command_error() if loading a song from the playlist fails.
This may result in assertion failures, since command_error() may be
called more than once.
|
| |
|
| |
|
|
|
|
| |
The struct delete_data has only one member left and can be eliminated.
|
|
|
|
|
|
|
|
| |
Determine the suffix manually, and use decoder_plugin_from_suffix()
and archive_plugin_from_suffix() instead.
This way, song_file_update_inarchive() can be optimized: it does not
have to translate its path.
|
| |
|
|
|
|
| |
Newline characters are already checked in skip_path() (update.c).
|
|
|
|
|
| |
Don't include headers which are not used. Fix some includes in
decoder_thread.c.
|
|
|
|
|
| |
Reverse the condition: delete directories which don't exist anymore.
This typo caused a slowdown during partial database update.
|
|
|
|
|
|
| |
For internal checks (i.e. not in command.c), we need to check whether
an URI is in the databse, in the local file system or a remote URI
with a scheme.
|
|
|
|
|
| |
Check if the URI scheme is supported by MPD, and print an error
message if not. Optimize the checks in "add" and "playlistadd".
|
|
|
|
| |
Don't work with argv[1], give it the better name "uri".
|
|
|
|
|
|
|
|
| |
When the decoder of the new song is not fast enough, the player thread
has to wait for it for a moment. However the variable "nextChunk" was
reset to -1 during that, making the next loop iteration assume that
cross-fading has not begun yet. This patch overwrites it with "0"
while waiting.
|
| |
|
|
|
|
| |
The icy_metadata will be used by the curl input_stream implementation.
|
|
|
|
|
| |
The tag() method reads a tag from the stream. This replaces the
meta_name and meta_title attributes.
|
|
|
|
| |
tag_merges() merges the data from two tag objects into one.
|
|
|
|
|
|
|
| |
This patch fixes a minor memory leak: when decoder_tag() attempted to
send a merged tag object (created by tag_add_stream_tags()), and was
interrupted by a decoder command, it did not free the temporary merged
tag object.
|
|
|
|
|
|
| |
Don't use g_strescape(), because it escapes all non-ASCII characters.
Add a new function which clears all non-printable characters, not just
"newline".
|
|
|
|
|
|
|
|
| |
Commit b3e2635a introduced a regression: when a stream tag was
changed, the playlist version had to be updated. This was done in
syncCurrentPlayerDecodeMetadata(), called by syncPlayerAndPlaylist().
After b3e2635a, this was not called anymore. Fix this by emitting
PIPE_EVENT_PLAYLIST.
|
|
|
|
|
| |
Removed all allocation functions, xwrite(), xread(), ARRAY_SIZE().
Those have been superseded by GLib.
|
| |
|
|
|
|
|
| |
xclose() aims to be the signal safe version of close(). However during
cleanup, this isn't important.
|
| |
|
| |
|
|
|
|
|
| |
If the state file cannot be read, for whatever reason, don't abort
MPD. The state file isn't _that_ important.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This always allocates strings on the heap, but we can delete the
stripReturnChar() function now.
|
| |
|
|
|
|
|
| |
Don't use libc's rand() function, because it is slow. Our own trivial
linear congruential generator is good enough for dithering.
|