Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | DatabasePlugin: add method ReturnSong() | Max Kellermann | 2012-08-16 | 13 | -14/+85 |
| | | | | Allow the plugin to allocate the GetSong() return value. | ||||
* | Merge branch 'v0.17.x' | Max Kellermann | 2012-08-16 | 3 | -2/+9 |
|\ | |||||
| * | playlist_print: fix memory leak | Max Kellermann | 2012-08-16 | 2 | -0/+4 |
| | | |||||
| * | playlist_song: pass const song to _check_load_song() | Max Kellermann | 2012-08-16 | 1 | -1/+1 |
| | | |||||
| * | playlist_song: fix user-after-free bug | Max Kellermann | 2012-08-16 | 2 | -1/+4 |
| | | |||||
* | | ProxyDatabase: pass "detached" objects to visitors | Max Kellermann | 2012-08-15 | 3 | -40/+49 |
| | | | | | | | | Fixes wrong object URIs with duplicate base names. | ||||
* | | 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 |
| | |