| Commit message (Collapse) | Author | Files | Lines |
|
|
|
This command allows clients to search for stickers with a specified
name.
|
|
db_get_song was being called once for all sub-handlers, but with the
addition of the find command, we don't have a URI coming in, so doing
db_get_song once won't work anymore.
[mk: fixed initialization order]
|
|
This is a wrapper for sticker_find(), which looks up the song object.
|
|
sticker_find() finds stickers with the specified name.
|
|
Moved code from db_get_song().
|
|
Renamed directory_get_directory() to directory_lookup_directory().
Added API documentation.
|
|
|
|
|
|
On both locations, the result of write() can be ignored safely. In
event_pipe_emit_fast(), that can only be "EAGAIN", which means that
the pipe buffer is full - no further notification required. In
client_init(), that would be a fatal connection error, which would be
caught by the next event.
This patch fixes gcc warnings.
|
|
g_set_error() is a printf-like function, and expects a format string.
Using the return value of gai_strerror() is unsafe.
|
|
Move the declaration of "i" into the "for" loop.
|
|
Cuesheets are often saved as vorbis comment
flac files (CUESHEET=.. case doesn't matter).
We can parse this now and use the information to
tag the subtracks (from the embedded cuesheets).
|
|
|
|
|
|
|
|
With these methods a tag struct can be created
from the cdtext information in a cue sheet.
The methods depend on a cue parsing library.
Reading from strings (char*) as well as from
a file (FILE*) is supported.
|
|
This is a little ugly, but as nextSongInPlaylist is both called when
queued is update (in case playlist ended) and for user "next" command,
there isn't any other (simple) solution
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Consume mode removes each song played
|
|
Previous cast to float didn't have any effect because one value is uint
and the other is a floating type but the number itself is even..
This caused some tracks to end before they were really at an end.
|
|
Added an assertion in mixer_set_volume(). Removed the range checks
from the ALSA and OSS plugins.
|
|
The "mpcdec" plugin is based on the libmpcdec library.
|
|
|
|
Renamed variables and functions.
|
|
The strings passed to tag_pool_get_item() are not null-terminated, and
the caller passes the string length. Don't assume it is
null-terminated anyway by using strcmp().
|
|
|
|
|
|
socket, because there is no ioctl for non-sockets on Windows
|
|
|
|
|
|
networking, select(), ntohl(), etc.
|
|
Simplify initialization and finalization.
|
|
There are numerous race conditions between the libpulse thread
(pulse_mixer.c callbacks) and the rest of MPD. Protect the volatile
attributes of the pulse_mixer struct with a mutex to fix that.
|
|
Eliminate one indent level. Also remove several debug useless debug
messages.
|
|
Those parameters are used after all.
|
|
Don't mess with pulse_mixer.volume for setting the volume. This
variable should only be used to transfer the current volume from
sink_input_vol() to pulse_mixer_get_volume().
|
|
The pa_context_get_sink_input_info() function is asynchronous, and
after it returns, libpulse does not guarantee that the operation has
completed yet; in fact, it is not likely. Explicitly wait for the
operation to complete.
The code for the new pulse_wait_for_operation() function was inspired
by mplayer and xine code.
|
|
The function mixer_failed() expects the mixer mutex to be already
locked, yet it calls mixer_close(), which attempts to lock the mutex
again, deadlocking itself.
|
|
When single mode is enabled, after current song it stops playback,
or it replay same song if repeat mode is activated.
|
|
The smartstop feature is a way to tell mpd to stop playing after
current song.
This patche provides:
- 'state' command returns 'smartstop' state (1 or 0)
- 'smartstop' can activate or not the smartstop state
- when song is terminated, mpd stops playing and smartstop is set to 0
|
|
Use the same code style as the rest of MPD.
|
|
This patch fixes a longer delay when moving around songs in the
playlist. The main thread wants to enqueue a new "next" song into the
player thread, but the player thread is waiting inside
audio_output_all_wait() for the output threads. Use
player_control.notify there, so audio_output_all_wait() gets woken up
by the main thread, too.
|
|
The functions playPlaylist() and seekSongInPlaylist() expect a song
position, not a song order number. Don't convert the "current"
variable with queue_position_to_order().
|