aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist/Print.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-01-01Copyright year 2015Max Kellermann1-1/+1
2014-12-09playlist/Print: don't skip non-existent songs in "listplaylist"Max Kellermann1-6/+7
Skipping those songs silently will confuse the client, because commands specifying the song index within a playlist (e.g. playlistdelete) will be out of sync. This copies spl_print()'s behavior to playlist_file_print().
2014-02-07PlaylistMapper: use class Storage instead of Mapper.cxxMax Kellermann1-1/+6
2014-02-07playlist/CloseSongEnumerator: new wrapper classMax Kellermann1-7/+2
Simplifies a lot of code, because we don't need to return both the SongEnumerator and the InputStream.
2014-02-03SongLoader: new class that merges duplicate codeMax Kellermann1-1/+4
There was quite a lot of duplicate code for loading DetachedSong objects, with different semantics for "securely" loading local files.
2014-01-24Input*: move to input/Max Kellermann1-1/+1
2014-01-23playlist/*: move to playlist/plugins/Max Kellermann1-39/+20
2014-01-21PlaylistSong: modify the given song object in-placeMax Kellermann1-3/+4
Reduce bloat.
2014-01-13copyright year 2014Max Kellermann1-1/+1
2014-01-09DetachedSong: fork of struct SongMax Kellermann1-5/+5
From now on, struct Song will be used by the database only, and DetachedSong will be used by everybody else. DetachedSong is easier to use, but Song has lower overhead.
2013-12-05fs/Traits: split PathTraits type into PathTraitsFS and PathTraitsUTF8Denis Krjuchkov1-1/+1
2013-11-28include cleanup using iwyuMax Kellermann1-1/+0
2013-10-28player_control: rename to PlayerControlMax Kellermann1-2/+2
2013-10-23input_stream: rename struct to InputStreamMax Kellermann1-1/+1
2013-10-21GetBaseUTF8Max Kellermann1-12/+9
2013-10-20PlaylistError: convert playlist_result to a strictly-typed enumMax Kellermann1-7/+7
2013-10-19*: use references instead of pointersMax Kellermann1-3/+3
2013-10-17InputStream: use int64_t instead of goffsetMax Kellermann1-0/+2
Decouple some more from GLib.
2013-10-17thread/{Cond,Mutex}: use "class" instead of "typedef"Max Kellermann1-0/+1
Allows forward-declaration.
2013-10-02Playlist*: use nullptr instead of NULLMax Kellermann1-5/+5
2013-09-05PlaylistPlugin: add interface SongEnumeratorMax Kellermann1-6/+7
Replaces struct playlist_provider.
2013-09-05InputLegacy: move functions to the input_stream classMax Kellermann1-2/+2
2013-09-03input_stream.h: rename to InputLegacy.hxxMax Kellermann1-1/+1
2013-07-28song: convert header to C++Max Kellermann1-7/+4
2013-01-27DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCondMax Kellermann1-9/+3
2013-01-27playlist/*: convert to C++Max Kellermann1-1/+1
2013-01-07Playlist: convert functions to methodsMax Kellermann1-1/+1
2013-01-07decoder_api.h, ...: add "extern C"Max Kellermann1-1/+1
2013-01-04playlist: convert to C++Max Kellermann1-1/+1
2013-01-02playlist_{any,song,queue}: convert to C++Max Kellermann1-4/+7
2012-08-16DatabasePlugin: add method ReturnSong()Max Kellermann1-4/+2
Allow the plugin to allocate the GetSong() return value.
2012-02-09playlist_queue: add start/end_index parametersMax Kellermann1-2/+14
2011-09-16input_stream: non-blocking I/OMax Kellermann1-2/+12
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins.
2011-09-11playlist: move enum playlist_result to playlist_error.hMax Kellermann1-0/+1
Reduce header dependencies.
2011-01-29copyright year 2011Max Kellermann1-1/+1
2011-01-10player_control: removed the global variable "pc"Max Kellermann1-4/+7
Allocate a player_control object where needed, and pass it around. Each "client" object is associated with a "player_control" instance. This prepares multi-player support.
2010-12-23playlist_song: add flag "secure"Max Kellermann1-4/+4
Optionally allow all local files. "Insecure" mode is used for printing playlists.
2010-06-25playlist_queue: use playlist_open_any()Max Kellermann1-48/+2
2010-06-25playlist_queue: simplify error handlerMax Kellermann1-9/+8
Return early on error, save one level of indent.
2010-06-01playlist_list: playlist_list_open_path() returns input_streamMax Kellermann1-1/+6
Memory leak fix. The input_stream object passed to playlist_list_open_stream_suffix() must be closed by the caller - this however never happens in playlist_list_open_path(), because it does not return it to the caller.
2010-02-08playlist_queue: moved code to playlist_mapper.cMax Kellermann1-70/+6
2010-02-08playlist_queue: moved check_translate_song() to playlist_song.cMax Kellermann1-118/+2
2010-01-06playlist_queue: convert absolute pathsMax Kellermann1-4/+16
Accept absolute paths if they point into the music directory.
2010-01-06playlist_queue: use the "uri" variable earlierMax Kellermann1-6/+7
Preparation for the next patch.
2010-01-01input_stream: return allocated input_stream objectsMax Kellermann1-12/+9
Major API redesign: don't let the caller allocate the input_stream object. Let each input plugin allocate its own (derived/extended) input_stream pointer. The "data" attribute can now be removed, and all input plugins simply cast the input_stream pointer to their own structure (with an "struct input_stream base" as the first attribute).
2009-12-31Update copyright notices.Avuton Olrich1-1/+1
2009-12-27playlist_queue: resolve relative URIs, database lookupMax Kellermann1-17/+114
Prepend the playlist's base URI to relative song URIs. Look up songs in the database (if the URI refers to a local song file). Merge existing database metadata with metadata from the playlist plugin.
2009-12-27playlist_queue: load playlists from music directoryMax Kellermann1-4/+36
Try the playlist directory first, and if that file does not exist, try the same relative path within the music directory.
2009-12-27playlist_queue: pass const string to playlist_open_path_into_queue()Max Kellermann1-1/+1
2009-12-26playlist_queue: try open by URI firstMax Kellermann1-10/+21
If that fails, try opening the file as a stream.