aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* flac: fixed "unused variable" warning without libcueMax Kellermann2009-04-011-2/+2
| | | | Move the declaration of "i" into the "for" loop.
* Tag subtracks according to "cuesheet" vorbis comment valueJochen Keil2009-03-311-4/+32
| | | | | | | 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).
* track length is computed correctly nowJochen Keil2009-03-311-2/+1
|
* free previously allocated flac metadata objectJochen Keil2009-03-311-0/+1
|
* remove old commented codeJochen Keil2009-03-311-8/+0
|
* Build tags from information in cue sheetsJochen Keil2009-03-312-0/+296
| | | | | | | | 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.
* do not consider single mode with "next" commandRomain Bignon2009-03-311-0/+7
| | | | | | 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
* client: group static function declarations together.Avuton Olrich2009-03-301-6/+5
|
* queue_print: queue_print_song_info() is not necessry for export.Avuton Olrich2009-03-302-13/+9
|
* queue: queue_generate_id() is not necessary for export.Avuton Olrich2009-03-302-7/+4
|
* player_control: remove unused function playerCurrentDecodeSong().Avuton Olrich2009-03-302-10/+0
|
* conf: config_param_free() not necessary for export.Avuton Olrich2009-03-302-3/+1
|
* command: command_error() is not necessary for export.Avuton Olrich2009-03-302-4/+1
|
* client: client_write() does not necessary for export.Avuton Olrich2009-03-302-6/+4
|
* implemented the 'consume' modeRomain Bignon2009-03-307-15/+82
| | | | Consume mode removes each song played
* Bugfix for time/offset in flac pluginJochen Keil2009-03-281-3/+3
| | | | | | 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.
* mixer: assert that the new volume value is validMax Kellermann2009-03-273-7/+2
| | | | | Added an assertion in mixer_set_volume(). Removed the range checks from the ALSA and OSS plugins.
* mpcdec: changed plugin name to "mpcdec"Max Kellermann2009-03-271-3/+3
| | | | The "mpcdec" plugin is based on the libmpcdec library.
* mpcdec: support the new libmpcdec SV8 APIMax Kellermann2009-03-271-14/+90
|
* mpcdec: no CamelCaseMax Kellermann2009-03-271-57/+65
| | | | Renamed variables and functions.
* tag_pool: use memcmp() instead of strcmp() for non-terminated stringMax Kellermann2009-03-271-1/+3
| | | | | | 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().
* tag_pool: use size_t for string lengthMax Kellermann2009-03-272-4/+4
|
* event_pipe can only be non-blocking if !WIN32Sean McNamara2009-03-271-0/+2
|
* More debugging for Win32 ioctlsocket: complain if it's not a WinsockSean McNamara2009-03-271-3/+12
| | | | socket, because there is no ioctl for non-sockets on Windows
* Add winsock2 headers for curl's use of select() on socketsSean McNamara2009-03-271-1/+7
|
* Uniform getaddrinfo() on WIN32 or POSIX, because MinGW now supports itSean McNamara2009-03-271-23/+0
|
* Winsock2 is needed on MinGW (or other pure Win32 toolchains) forSean McNamara2009-03-271-0/+36
| | | | networking, select(), ntohl(), etc.
* sticker: move SQLite statements into an arrayMax Kellermann2009-03-271-70/+75
| | | | Simplify initialization and finalization.
* pulse_mixer: protect the struct with a mutexMax Kellermann2009-03-271-1/+29
| | | | | | 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.
* pulse_mixer: return if mixer is offlineMax Kellermann2009-03-271-29/+27
| | | | | Eliminate one indent level. Also remove several debug useless debug messages.
* pulse_mixer: removed superfluous G_GNUC_UNUSED attributesMax Kellermann2009-03-271-4/+4
| | | | Those parameters are used after all.
* pulse_mixer: use local pa_cvolume variable for set_volume()Max Kellermann2009-03-271-2/+3
| | | | | | 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().
* pulse_mixer: wait for get_volume() operation to completeMax Kellermann2009-03-271-1/+34
| | | | | | | | | | 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.
* mixer_control: don't lock the mutex twice in mixer_failed()Max Kellermann2009-03-271-5/+14
| | | | | | 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.
* renamed smartstop to single and changed behaviorRomain Bignon2009-03-277-29/+43
| | | | | When single mode is enabled, after current song it stops playback, or it replay same song if repeat mode is activated.
* implements the smartstop featureRomain Bignon2009-03-277-2/+66
| | | | | | | | | 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
* pulse_mixer: adapted code styleMax Kellermann2009-03-271-27/+52
| | | | Use the same code style as the rest of MPD.
* output_all: synchronize playback with player_control.notifyMax Kellermann2009-03-262-2/+4
| | | | | | | | | 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.
* playlist_state: fix playback restore in random modeMax Kellermann2009-03-261-2/+0
| | | | | | 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().
* queue/playlist/command: move rangeJeffrey Middleton2009-03-265-17/+72
| | | | | | | | | | | The move command now accepts a range for the first argument, in the same form as other range commands, e.g. move 15:17 3. The first song in the range is placed at the destination position. Note that as with other range commands, the range is inclusive on the left only; this example would move only songs 15 and 16, not 17. [mk: fixed signed/unsigned warnings; use G_MAXUINT instead of UINT_MAX]
* pulse_mixer: removed superfluous initializationsMax Kellermann2009-03-261-7/+2
| | | | | | Don't initialize attributes which are only used in an open mixer. As long as nobody accesses them, their values are uninitialized and undefined.
* pulse_mixer: allocate "volume" staticallyMax Kellermann2009-03-261-10/+6
| | | | | | | The pm->volume attribute was allocated in pulse_mixer_init(), but is never freed. This leaks memory. Instead of adding the g_free() call to pulse_mixer_finish(), let's just make "volume" a static attribute of the pulse_mixer struct. That is easier to deal with.
* pulse_mixer: removed superfluous NULL checks in close()Max Kellermann2009-03-261-12/+4
| | | | | When the MPD core knows that the pulse mixer is open, pm->mainloop and pm->context must be non-NULL.
* pulse_mixer: initialize "online" and "index" in open()Max Kellermann2009-03-261-2/+5
| | | | | The attributes "online" and "index" were not properly reinitialized after a close/open cycle.
* pulse: make configuration strings constMax Kellermann2009-03-262-12/+10
| | | | | | Nobody needs to modify these strings. We can make them const, and convert config_dup_block_string() to config_get_block_string(). This also fixes memory leaks in the pulse mixer.
* pulse: don't check config_param!=NULLMax Kellermann2009-03-262-10/+5
| | | | | The conf.h functions deal well with config_param==NULL and will return the specified default value then.
* pulse_mixer: free libpulse objects on failureMax Kellermann2009-03-261-0/+6
| | | | | When the mixer initialization fails, we have to free the libpulse objects we have already created, to prevent resource leaks.
* pulse_mixer: unlock the mainloop on failureMax Kellermann2009-03-261-0/+2
| | | | | It's illegal to return from pulse_mixer_setup() without unlocking the main loop. In the error handling, that unlock() call was missing.
* pulse_mixer: moved code to pulse_mixer_setup()Max Kellermann2009-03-261-15/+26
| | | | Prepare for adding proper error handling.
* alsa_mixer: initialize "volume_set" in the open() methodMax Kellermann2009-03-261-2/+2
| | | | | | "volume_set" is an attribute which becomes undefined when the mixer is closed. That means, it must be initialized each time the mixer is opened.