Commit Graph

4672 Commits

Author SHA1 Message Date
Max Kellermann 9bcfd3a47d text_file: allocate line buffers dynamically
Use a single GString buffer object in all functions loading the
database.  Enlarge it automatically for long lines.  This eliminates
the maximum line length for tag values.  There is still an upper limit
of 512 kB to prevent denial of service, but that's reasonable I guess.
2009-11-01 15:37:16 +01:00
Max Kellermann 451f932d80 directory_save: allocate directory object earlier, assign mtime
Allocate the directory object after the "directory:" line.  Assign the
mtime from the input file to this new object, instead of to the parent
directory.
2009-11-01 15:34:14 +01:00
Max Kellermann 10b7608926 directory_save: free directory on error
Fix a minor memory leak in the error handler.
2009-11-01 15:34:13 +01:00
Max Kellermann 2cd8a9fecf directory_save: abort on duplicate subdirectory
The old code tried to recover, but what's the point of that?  If a
directory is duplicate, something is wrong with the database file.
2009-11-01 15:34:13 +01:00
Max Kellermann 22279127f9 directory_save: moved code to directory_load_subdir() 2009-11-01 15:34:12 +01:00
Max Kellermann ad01e1249b decoder_api: check decoder==NULL in decoder_read()
It's legal to pass decoder=NULL to decoder_read().  Add a check.
2009-11-01 15:34:12 +01:00
Max Kellermann 6ef428af2e decoder_control: removed the global variable "dc"
Allocate a decoder_control object where needed, and pass it around.
This will allow more than one decoder thread one day.
2009-10-31 19:22:56 +01:00
Max Kellermann 806496dfc9 Merge branch 'v0.15.x'
Conflicts:
	NEWS
	configure.ac
	src/decoder/ffmpeg_plugin.c
	src/update.c
2009-10-31 18:23:56 +01:00
Max Kellermann 3de912e2b9 decoder_control: removed unused DECODE_TYPE macros 2009-10-31 18:03:50 +01:00
Max Kellermann 9eadb517da player_thread: simplified thread destruction
Simply use "return" instead of g_thread_exit().
2009-10-31 18:01:05 +01:00
Max Kellermann 1ae4e4dcd3 songvec: sort songs by album name first, then disc/track number
When the songs of two albums are in the same directory, all songs of
an album should be right next to each others.
2009-10-31 17:36:56 +01:00
Max Kellermann d099a7e464 songvec: simplified compare_tag_item()
Moved some code to tag_get_value_checked(), to eliminate several NULL
checks.
2009-10-31 17:32:00 +01:00
Max Kellermann 25a806a347 player_control: protect command, state, error with a mutex
Use GMutex/GCond instead of the notify library.  Manually lock the
player_control object before accessing the protected attributes.  Use
the GCond object to notify the player thread and the main thread.
2009-10-31 17:02:12 +01:00
Max Kellermann 73cff374fd {player,output}_thread: fixed elapsed_time quirks
Right after seeking and song change, the elapsed_time shows old
information, because the output thread didn't finish a full chunk
yet.  This patch re-adds a second elapsed_time variable, and keeps
track of a fallback value, in case the output thread can't provide a
reliable value.
2009-10-30 16:28:15 +01:00
Max Kellermann cec019efff output_thread: return bool from ao_play()
Return false when there was no chunk in the pipe.  If the function
returns true, then audio_output_task() will not wait for a notify from
the player thread.  This fixes a race condition.
2009-10-29 23:35:27 +01:00
Max Kellermann 4748decd8d player_thread: set error status in play_next_chunk()
Don't set the error in play_chunk(); do all the error handling in the
caller.  The errored_song attribute isn't set anymore; it doesn't make
sense for PLAYER_ERROR_AUDIO.
2009-10-29 22:39:48 +01:00
Max Kellermann 975143ab47 output_control: fixed deadlock in audio_output_update()
Call a version of audio_output_close() which doesn't lock recursively.
2009-10-29 22:39:42 +01:00
Viliam Mateicka bb5acc939f httpd: add config option to limit number of clients 2009-10-29 22:38:18 +01:00
Max Kellermann bde3d14339 output: consistently lock audio output objects
Always keep the audio_output object locked within the output thread,
unless a plugin method is called.  This fixes several race conditions.
2009-10-29 17:06:40 +01:00
Max Kellermann 1403172ef3 output_plugin: added method "drain"
drain() is the opposite of cancel(): it waits until all data in the
buffer has finished playing.  Instead of implicitly draining in the
close() method like the ALSA plugin has been doing it forever, let the
output thread decide whether to drain or to cancel.
2009-10-29 15:59:40 +01:00
Max Kellermann f74ee1a352 output/alsa: don't recover on CANCEL
The recovery is for nothing if we get CLOSE afterwards.  Let's not
recover in the cancel() method, and let the next play() call sort it
out.
2009-10-29 15:59:35 +01:00
Max Kellermann cf8d278b78 output_thread: removed redundant filter_close() call
Don't call filter_close() right after ao_close().
2009-10-29 15:58:21 +01:00
Max Kellermann 82af161210 output/pulse: initialize pulse_output.mixer
This variable was uninitialized and led to crashes.
2009-10-29 15:58:18 +01:00
Max Kellermann 9fed97b1f1 decoder/ffmpeg: removed the "author" vs "artist" workaround
libavformat gives us the song artist in the "author" field.  Since we
use av_metadata_conv(), we don't need to check for "artist".
2009-10-28 22:17:10 +01:00
Max Kellermann 04816a6369 decoder/ffmpeg: convert metadata
Convert the metadata with the libavformat function av_metadata_conv().
This ensures that canonical tag names are provided by libavformat, and
we can remove the "artist" vs "author" workaround.
2009-10-28 22:12:22 +01:00
Max Kellermann d083032236 update: delete ignored symlinks from database
When you disable the "follow_outside_symlinks" or the
"follow_inside_symlinks" setting, the next update should remove the
now-ignored files from the database.
2009-10-27 22:06:28 +01:00
Alam Arias 83a9cf74fb include pulse/version.h for PA_CHECK_VERSION 2009-10-27 07:46:53 +01:00
Viliam Mateicka a13e9832e7 encoder: renaming none_encoder to null_encoder 2009-10-26 20:02:34 +01:00
Viliam Mateicka f67426871b mpd.conf: new bool config value for enabling/disabling inotify update 2009-10-26 19:14:40 +01:00
Viliam Mateicka 2bfddd4310 encoder: new encoder plugin which just pass data through 2009-10-24 19:01:15 +02:00
Viliam Mateicka 7b343eaf50 add --disable-inotify for configure to disable inotify when autodetected 2009-10-24 18:24:29 +02:00
Max Kellermann ac830468bf output/jack: implement methods enable()/disable()
Don't connect to JACK before MPD has daemonized.
2009-10-23 10:56:25 +02:00
Max Kellermann 7547b1170b output/pulse: implement methods enable()/disable()
Don't connect to PulseAudio before MPD has daemonized.
2009-10-23 10:56:16 +02:00
Max Kellermann e53ca368a5 output_plugin: added methods enable() and disable()
With these methods, an output plugin can allocate some global
resources only if it is actually enabled.  The method enable() is
called after daemonization, which allows for more sophisticated
resource allocation during that method.
2009-10-23 10:55:52 +02:00
Max Kellermann c426a0bc5c output/pulse: call mixer on state changes
Don't let the mixer plugin "override" the libpulse callbacks.
Instead, add a "mixer" attribute to the pulse_output struct, and call
the mixer on all interesting events.
2009-10-23 10:33:26 +02:00
Max Kellermann acc99da73d mixer_control: don't close the mixer if set_volume() fails
A mixer is useful enough if it can be read.  Setting it may be
found unavailable at runtime.
2009-10-23 10:33:23 +02:00
Max Kellermann c4f895daf4 mixer_plugin: get_volume() may return -1 if unavailable
If the method get_volume() returns -1 and no error object is set, then
the volume is currently unavailable, but the mixer should not be
closed immediately.
2009-10-23 10:32:25 +02:00
Max Kellermann ede828c910 mixer_control: allow methods "open" and "close" to be NULL
It's possible to have a mixer implementation which does not explicitly
need the methods open() and close().
2009-10-23 09:15:51 +02:00
Max Kellermann 7dd172efec mixer/pulse: don't get volume if stream is not yet ready
Moved the check from pulse_mixer_open() to pulse_mixer_update().
2009-10-22 20:28:12 +02:00
Max Kellermann 80ac82c8fb output/fifo: renamed source to fifo_output_plugin.c 2009-10-22 19:23:30 +02:00
Max Kellermann fd182f6d1e Makefile.am: enable the "subdir-objects" option
Don't clutter the top directory with *.o files.
2009-10-22 18:23:22 +02:00
Max Kellermann a05d0d5d94 audio: removed function finishAudioConfig()
There's no point in clearing the audio format before exiting.
2009-10-22 17:12:32 +02:00
Max Kellermann 0107ef2aad main: put #ifdef inside winsock_init()
This way, the function call in the main() function does not need
another pair of #ifdef/#endif.
2009-10-22 17:12:28 +02:00
SF Markus Elfring a153f21315 permission: improve const-correctness 2009-10-22 17:11:39 +02:00
Max Kellermann 294aaf7a90 playlist: new ASX playlist plugin
Based on the XSPF playlist plugin.
2009-10-21 23:39:47 +02:00
Max Kellermann 2024763d2a playlist/xspf: ignore text in root, playlist, tracklist
Added a missing "break".
2009-10-21 23:27:05 +02:00
Max Kellermann 9526fdbe73 audio_format: wildcards allowed in audio_format configuration
An asterisk means that this attribute should not be enforced, and
stays whatever it used to be.  This way, some configuration values
work like masks.
2009-10-21 23:01:04 +02:00
Max Kellermann a5c4566fa1 audio_parser: moved code to separate functions 2009-10-21 23:01:03 +02:00
Max Kellermann 2c05430002 output: convert config_audio_format to an audio_format struct
This allows more sophisticated audio format selection.
2009-10-21 22:37:28 +02:00
Max Kellermann 643650dba7 audio_parser: renamed parameter "error" to "error_r"
It's a double pointer.
2009-10-21 22:22:23 +02:00