Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | queue: duplicate all song objects | Max Kellermann | 2012-08-15 | 3 | -5/+40 | |
| | | | | | | | | | | Make sure the queue "owns" all song objects, so nobody else can free them. | |||||
* | | player_control: duplicate the song object | Max Kellermann | 2012-08-15 | 5 | -7/+58 | |
| | | | | | | | | | | Make sure the player "owns" the next_song object, so nobody else can free it. | |||||
* | | decoder_control: duplicate the song object | Max Kellermann | 2012-08-15 | 3 | -3/+15 | |
| | | | | | | | | | | Make sure the decoder "owns" the song object, so nobody else can free it. | |||||
* | | Song: add function song_dup_detached() | Max Kellermann | 2012-08-15 | 3 | -1/+81 | |
| | | | | | | | | | | Initial support for "detached" songs that come from the database, but are private copies. | |||||
* | | Song: add function song_equals() | Max Kellermann | 2012-08-15 | 3 | -1/+37 | |
| | | | | | | | | | | decoder_is_current_song() now recognizes different instances of the same physical song. | |||||
* | | Song: move trivial inline functions up | Max Kellermann | 2012-08-15 | 1 | -12/+12 | |
| | | ||||||
* | | DatabasePlugin: add method GetStats() | Max Kellermann | 2012-08-15 | 7 | -63/+148 | |
| | | | | | | | | | | Optimize the ProxyDatabase by invoking "stats" on the peer, instead of visiting all songs. | |||||
* | | DatabasePlugin: add method VisitUniqueTags() | Max Kellermann | 2012-08-15 | 9 | -53/+216 | |
| | | | | | | | | | | Optimize the ProxyDatabase by invoking "list" on the peer, instead of visiting all songs. | |||||
* | | ProxyDatabase: obey visitor return values | Max Kellermann | 2012-08-15 | 1 | -8/+11 | |
| | | ||||||
* | | ProxyDatabasePlugin: add OO wrapper for mpd_entity | Max Kellermann | 2012-08-15 | 1 | -11/+32 | |
| | | | | | | | | Let the C++ compiler take care for freeing the objects safely. | |||||
* | | ProxyDatabasePlugin: move tag table to the global name space | Max Kellermann | 2012-08-15 | 1 | -25/+25 | |
| | | ||||||
* | | db_visitor: delete obsolete header | Max Kellermann | 2012-08-15 | 6 | -61/+0 | |
| | | ||||||
* | | DatabasePrint: remove bogus "nonnull" attributes | Max Kellermann | 2012-08-15 | 1 | -2/+2 | |
| | | ||||||
* | | Merge branch 'v0.17.x' | Max Kellermann | 2012-08-15 | 6 | -7/+12 | |
|\| | | | | | | | | | Conflicts: src/player_thread.c | |||||
| * | player_thread: add local variable "start_ms" | Max Kellermann | 2012-08-15 | 1 | -1/+3 | |
| | | | | | | | | Just in case "song" becomes invalid at some point. | |||||
| * | playlist: fix unprotected player_control access | Max Kellermann | 2012-08-15 | 1 | -1/+5 | |
| | | ||||||
| * | filter/volume: include cleanup | Max Kellermann | 2012-08-15 | 2 | -2/+0 | |
| | | ||||||
| * | mapper: fix potential crash in file permission check | Max Kellermann | 2012-08-15 | 2 | -3/+4 | |
| | | ||||||
* | | decoder_control: add function _is_current_song() | Max Kellermann | 2012-08-15 | 3 | -15/+42 | |
| | | | | | | | | Replaces _current_song(). | |||||
* | | decoder_control: add assertion to dc_get_error() | Max Kellermann | 2012-08-15 | 1 | -0/+1 | |
| | | ||||||
* | | decoder_thread: create GError for mapper failure | Max Kellermann | 2012-08-15 | 1 | -0/+3 | |
| | | | | | | | | Fixes crash. | |||||
* | | Merge branch 'v0.17.x' | Max Kellermann | 2012-08-15 | 6 | -60/+108 | |
|\| | ||||||
| * | doc/user: add wildmidi documentation | Max Kellermann | 2012-08-15 | 1 | -0/+31 | |
| | | ||||||
| * | decoder/fluidsynth: add "sample_rate" setting | Max Kellermann | 2012-08-15 | 3 | -6/+24 | |
| | | ||||||
| * | decoder/fluidsynth: add "soundfont" setting | Max Kellermann | 2012-08-15 | 2 | -6/+38 | |
| | | | | | | | | Replaces the old global "soundfont" which never worked. | |||||
| * | configure.ac: auto-detect libfluidsynth | Max Kellermann | 2012-08-15 | 3 | -12/+3 | |
| | | | | | | | | | | Now that the libfluidsynth API was sanitized, we can enable the plugin automatically if libfluidsynth is installed. | |||||
| * | decoder/fluidsynth: stop playback at end of file | Max Kellermann | 2012-08-15 | 2 | -5/+5 | |
| | | | | | | | | Use libfluidsynth's new function fluid_player_get_status(). | |||||
| * | decoder/fluidsynth: don't duplicate path | Max Kellermann | 2012-08-15 | 1 | -6/+1 | |
| | | | | | | | | The libfluidsynth now accepts const strings. | |||||
| * | decoder/fluidsynth: check if file is really a MIDI | Max Kellermann | 2012-08-15 | 2 | -4/+2 | |
| | | | | | | | | Use fluid_is_midifile() to verify the file format. | |||||
| * | decoder/fluidsynth: remove throttle (requires libfluidsynth 1.1) | Max Kellermann | 2012-08-15 | 4 | -21/+4 | |
| | | | | | | | | | | The libfluidsynth API is now sane, and does not require real-time decoding. | |||||
* | | Merge branch 'v0.17.x' | Max Kellermann | 2012-08-14 | 14 | -139/+278 | |
|\| | ||||||
| * | log: store duplicated path string | Max Kellermann | 2012-08-14 | 3 | -31/+32 | |
| | | | | | | | | | | | | | | Don't free the string right after calling log_init_file(). Add a new function log_deinit() that frees the string on shutdown. This fixes cycling the log file after SIGHUP (Mantis ticket 0003524). | |||||
| * | output/jack: implement method delay() | Max Kellermann | 2012-08-14 | 1 | -4/+11 | |
| | | | | | | | | Eliminate the g_usleep() call. | |||||
| * | output/pulse: implement method delay() | Max Kellermann | 2012-08-14 | 1 | -7/+21 | |
| | | | | | | | | Reduce command latency while paused. | |||||
| * | output/pulse: simplify _wait_stream() | Max Kellermann | 2012-08-14 | 1 | -55/+16 | |
| | | | | | | | | One large loop and only one pa_stream_get_state() call. | |||||
| * | output/httpd: move delay from _pause() to _delay() | Max Kellermann | 2012-08-14 | 1 | -1/+5 | |
| | | ||||||
| * | output/httpd: fix throttling bug after resuming playback | Max Kellermann | 2012-08-14 | 2 | -0/+9 | |
| | | | | | | | | | | | | Reset the timer when paused and no client is connected. This fixes Mantis ticket 0003527. | |||||
| * | output/httpd: move code to _has_clients() | Max Kellermann | 2012-08-14 | 1 | -11/+27 | |
| | | ||||||
| * | timer: use monotonic clock if available | Max Kellermann | 2012-08-14 | 5 | -17/+147 | |
| | | ||||||
| * | input/ffmpeg: remove fallback AV_VERSION_INT definition | Max Kellermann | 2012-08-14 | 1 | -4/+1 | |
| | | | | | | | | This is part of libavutil. | |||||
| * | mpd.conf(5): Document the existence of musicbrainz_ tags | Wieland Hoffmann | 2012-08-14 | 2 | -9/+9 | |
| | | | | | | | | | | Additionally, update mpdconf.example to refer to mpd.conf(5) for the complete list of tags instead of trying to repeat it. | |||||
* | | Merge branch 'v0.17.x' | Max Kellermann | 2012-08-14 | 9 | -76/+104 | |
|\| | | | | | | | | | Conflicts: src/mapper.h | |||||
| * | mapper: fix non-UTF8 music directory name | Max Kellermann | 2012-08-14 | 5 | -37/+74 | |
| | | | | | | | | | | | | Duplicate the music_dir variable: one encoded in UTF-8, and another one using the configured filesystem character set. This fixes an ancient MPD bug. | |||||
| * | playlist_song: use map_to_relative_path() | Max Kellermann | 2012-08-14 | 1 | -4/+4 | |
| | | ||||||
| * | playlist_song: improve const-correctness | Max Kellermann | 2012-08-14 | 1 | -5/+4 | |
| | | ||||||
| * | playlist_song: move code to playlist_check_load_song() | Max Kellermann | 2012-08-14 | 1 | -23/+23 | |
| | | ||||||
| * | valgrind.suppressions: suppressions for GStaticMutex and more | Max Kellermann | 2012-08-14 | 1 | -0/+37 | |
| | | ||||||
| * | input_stream, main: remove obsolete GLib version checks | Max Kellermann | 2012-08-14 | 3 | -8/+0 | |
| | | | | | | | | MPD requires GLib 2.16. | |||||
* | | Merge branch 'v0.17.x' | Max Kellermann | 2012-08-13 | 2 | -3/+6 | |
|\| | | | | | | | | | | | | | Conflicts: NEWS configure.ac src/client_file.h | |||||
| * | client_file: remove pure attribute from client_allow_file(). | Anton Khirnov | 2012-08-13 | 2 | -1/+2 | |
| | | | | | | | | | | | | | | | | That function is not pure, it writes to error. When marked as pure, the compiler is allowed to assume it does not do anything to error, so it can remain NULL, which would result in an invalid read in print_error(). |