aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-07-05log: fix double free() bug during shutdownMax Kellermann1-6/+2
Don't free an internal configuration value in log_init(). Call config_get_path() instead of manually calling parsePath().
2009-06-30database: fixed NULL pointer dereference after charset changeMax Kellermann1-4/+5
When the filesystem_charset is changed in mpd.conf, MPD should discard the old database. In this error branch, MPD did not fill the GError object properly, and logged a warning message instead, which caused a segmentation fault.
2009-06-29output_thread: don't play next chunk after command==PAUSEMax Kellermann1-1/+5
When the PAUSE loop ends, re-check the next command before calling ao_play() again.
2009-06-29output_all: don't resume playback when stopping during pauseMax Kellermann1-2/+0
When MPD was paused, and the client sent the "stop" command (or "clear"), a glitch caused MPD to continue playback for a split second. This was because audio_output_all_cancel() calls audio_output_all_update(), which reopens all output devices, and re-ignites the playback loop.
2009-06-19decoder_thread: reopen the stream after file_decode() has failedMax Kellermann1-0/+11
When decoding a local file, the decoder thread tries to run all matching decoders, until one succeeds. Both file_decode() and stream_decode() can decode a stream, but MPD closes the stream before calling file_decode(). Problem is: when this decoder fails, and the next's stream_decode() method is invoked, the input_stream is still closed. This patch reopens it.
2009-06-10listen: bind() failure on secondary address is non-fatalMax Kellermann1-3/+25
Several users had problems with binding MPD to "localhost". The cause was duplicate /etc/hosts entries: the resolver library returns 127.0.0.1 twice, and of course, MPD attempts to bind to "both" of them. This patch makes failures non-fatal, given that at least one address was bound successfully. This is a workaround; users should rather fix their /etc/hosts file.
2009-06-10listen: renamed "error" to "error_r" in listen_add_host()Max Kellermann1-4/+4
2009-06-10listen: print debug message before bind()Max Kellermann1-0/+7
Dump each socket address before binding to it.
2009-06-08ffmpeg: moved code to ffmpeg_copy_metadata()Max Kellermann1-33/+18
2009-06-08ffmpeg: removed "new metadata api" warningMax Kellermann1-2/+0
This warning is useless. I assume the author added it for debugging purposes.
2009-06-04client: check "expired" flag again in client_write_output()Max Kellermann1-0/+3
When client_defer_output() aborts the connection to the client, client_write_output() called client_write_deferred() anyway. This caused an assertion failure. Fix it by checking for the "expired" flag again after client_defer_output() returns.
2009-06-04client: added assertions on channel!=NULLMax Kellermann1-0/+10
I'm hunting down a bug where client->channel==NULL during I/O operations. These new assertions help avoid this kind of bug in the future.
2009-06-04decoder_plugin: corrected outdated API documentationMax Kellermann1-21/+22
2009-06-03conf: make config_param.num_block_params unsignedMax Kellermann2-5/+3
2009-06-03conf: eliminated CamelCaseMax Kellermann4-21/+22
Renamed all remaining CamelCase functions.
2009-06-02player_thread: check pipe size again before exitingMax Kellermann1-1/+5
When the decoder is finished, break out of the player loop only after another player.pipe check. We did check the pipe size a few lines above, but that check was kind of racy.
2009-06-02player_thread: don't leak empty music_chunksMax Kellermann1-1/+3
When a music_chunk only contains a tag but no PCM data, play_chunk() returns true without freeing the chunk. The caller now assumes that the chunk is moved into some music_pipe and does not bother to free it either.
2009-05-29player_thread: reinitialize music_buffer in !NDEBUGMax Kellermann1-0/+9
To check for leaked music_chunk objects, free the music buffer on CLOSE_AUDIO. This invokes an assertion check which ensures that all chunks have been returned to the buffer.
2009-05-29output_all: explicitly return "true" from audio_output_all_play()Max Kellermann1-1/+1
Instead of returning the local variable "ret" which is always true at this point, hard-code the "true" return value, because that might be more readable.
2009-05-28input/file: log message on errorMathieu Rochette1-0/+2
If a file is removed the library, next time mpd will try to play it it will result in an error 'ERROR: problems decoding some/file.ogg'. Nothing is written in log files (verbose mode or not) [mk: append strerror(errno)]
2009-05-28volume: changed "default" to "DISABLED" in switch statementMax Kellermann1-1/+4
Make gcc warn us if we add a new mixer type, and forget to add a new "case" line.
2009-05-28volume: converted volume_mixer_type to an enumMax Kellermann1-5/+6
Don't use CPP macros when you can use C enums.
2009-05-28volume: removed unused macro "VOLUME_MIXER_SOFTWARE_DEFAULT"Max Kellermann1-1/+0
2009-05-28playlist: reset "current song" when playlist endsMax Kellermann1-0/+3
Commit f78cddb4 introduced a regression: when the playlist reached its end, MPD did not reset the "current song" pointer anymore after stop. Add a "current = -1" code line.
2009-05-11music_chunk: added more audio_format_valid() assertionsMax Kellermann1-0/+2
Check the validity of the audio_format during write operations.
2009-05-11music_pipe: added assertion on chunk->audio_formatMax Kellermann1-0/+1
Always assert that the audio format of the new chunk is valid.
2009-05-10latest git, httpd_output_plugin compile fix, mac os xPatrik Weiskircher1-0/+4
Hello, While compiling latest git I've received a compile error in the httpd_output_plugin. Small patch attached. Patrik
2009-05-07pcm_resample: fixed typo in libsamplerate runtime checkMax Kellermann1-1/+1
The string comparison should be "!= 0", not "== 0". Ouch.
2009-05-06player_control: assert that pc.next_song is NULL after seekingMax Kellermann1-0/+2
The player thread must reset pc.next_song after seeking, even if that operation has failed. This patch adds an assertion.
2009-05-06player_control: removed pc.error check from pc_seek()Max Kellermann1-6/+3
The only pc_seek() caller clears the error, rendering the check useless. Even if the previous PLAY command resulted in a player error, this check is not very useful.
2009-05-06player_control: renamed playerSeek(), return boolMax Kellermann3-9/+15
Renamed playerSeek() to pc_seek() to get rid of CamelCase. Convert the return value to bool.
2009-05-06tag_id3: added support for the UFID frameMax Kellermann1-0/+40
If the UFID frame's owner is "http://musicbrainz.org", assume its value is the MusicBrainz track id.
2009-05-05httpd_output: save the page generated by encoder_tag()Max Kellermann1-0/+21
Flush the encoder before calling encoder_tag(). The first page generated by the encoder after sending the tag will be the new "header" page, which is sent to all HTTP clients when they connect. This is a little bit specific to the vorbis encoder, but there are no other encoders which support tags (yet).
2009-05-05httpd_output: moved code to httpd_output_encoder_to_clients()Max Kellermann1-14/+32
Moved some code from httpd_output_encode_and_play() into separate functions httpd_output_broadcast_page() and httpd_output_encoder_to_clients().
2009-05-05httpd_output: disable Icy-Metadata when encoder supports tagsMax Kellermann3-18/+35
There's no reason to send both encoder tags and Icy-Metadata to the client. Let's disable Icy-Metadata when the encoder supports embedded tags.
2009-05-05vorbis_encoder: start a new stream in tag()Max Kellermann1-6/+9
When a new tag is set, end the current stream and begin a new one. Use vorbis_analysis_headerout() to write a full ogg header. This fixes a problem with icecast: after a song change in MPD, icecast stops forwarding ogg packets to its clients.
2009-05-05vorbis_encoder: moved code to vorbis_encoder_headerout()Max Kellermann1-5/+10
2009-05-05httpd_output: assert that tag!=NULLMax Kellermann1-8/+7
In the tag() method, MPD guarantees that it does not pass tag==NULL. Converted the runtime check to an assertion.
2009-05-04archive/zip: pass NULL instead of 0 to zzip_dir_open()Max Kellermann1-2/+2
The second parameter of zzip_dir_open() is a pointer. Pass the NULL pointer instead of 0 (with implicit conversion at compile time).
2009-04-28output_init: added option to disable the hardware mixerMax Kellermann1-1/+2
Added the per-device option "mixer_enabled" which allows users to disable the hardware mixer of an audio output.
2009-04-28command: added "sticker delete" commandMax Kellermann1-0/+22
2009-04-28sticker: added sticker_delete_value()Max Kellermann4-0/+85
sticker_delete_value() deletes only one value in a sticker, while the old function sticker_delete() deletes all values.
2009-04-28song_save: don't call tag_free(NULL)Max Kellermann2-1/+4
When a song was in the database twice (which shouldn't happen), and the first song had no tag items, MPD calledd tag_free(NULL). Add a check to that source location, and an assertion to tag_free().
2009-04-28libsamplerate: use g_ascii_strncasecmp() instead of strncasecmp()Max Kellermann1-1/+1
strncasecmp() is locale dependent, making it a bad choice for internal string comparisons.
2009-04-28command: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann1-1/+1
strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
2009-04-28utils: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann1-1/+1
strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
2009-04-28tag: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann2-3/+3
strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
2009-04-28conf: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann1-2/+2
strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
2009-04-28locate: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann1-4/+4
strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.
2009-04-28input_curl: use g_ascii_strcasecmp() instead of strcasecmp()Max Kellermann1-7/+7
strcasecmp() is locale dependent, making it a bad choice for internal string comparisons.