aboutsummaryrefslogtreecommitdiffstats
path: root/src/db (unfollow)
Commit message (Collapse)AuthorFilesLines
2012-09-05db/SimpleDatabasePlugin: fix memory leak in Visit()Max Kellermann1-7/+11
When visiting a song, GetSong() was called, but this object was never returned by calling ReturnSong(). This patch locks the database only once in Visit() and passes the original song object to the visitor, avoiding the copy.
2012-09-05db_lock: add C++ helper class ScopeDatabaseLockMax Kellermann1-11/+6
2012-08-29SongFilter: convert to a C++ classMax Kellermann1-1/+1
2012-08-29DatabaseSelection: add method Match()Max Kellermann1-2/+1
2012-08-29locate: rename to SongFilter.cxxMax Kellermann1-1/+1
2012-08-16ProxyDatabase: implement GetSong()Max Kellermann1-3/+26
2012-08-16ProxyDatabase: clear libmpdclient errors in CheckError()Max Kellermann1-1/+2
Auto-recover from soft errors.
2012-08-16DatabasePlugin: add method ReturnSong()Max Kellermann3-0/+38
Allow the plugin to allocate the GetSong() return value.
2012-08-15ProxyDatabase: pass "detached" objects to visitorsMax Kellermann1-39/+34
Fixes wrong object URIs with duplicate base names.
2012-08-15DatabasePlugin: add method GetStats()Max Kellermann3-0/+37
Optimize the ProxyDatabase by invoking "stats" on the peer, instead of visiting all songs.
2012-08-15DatabasePlugin: add method VisitUniqueTags()Max Kellermann3-0/+68
Optimize the ProxyDatabase by invoking "list" on the peer, instead of visiting all songs.
2012-08-15ProxyDatabase: obey visitor return valuesMax Kellermann1-8/+11
2012-08-15ProxyDatabasePlugin: add OO wrapper for mpd_entityMax Kellermann1-11/+32
Let the C++ compiler take care for freeing the objects safely.
2012-08-15ProxyDatabasePlugin: move tag table to the global name spaceMax Kellermann1-25/+25
2012-08-15db_visitor: delete obsolete headerMax Kellermann2-4/+0
2012-08-08ProxyDatabasePlugin: obey the "recursive" flagMax Kellermann1-2/+3
2012-08-08ProxyDatabasePlugin: use an artificial "root" directoryMax Kellermann1-2/+9
Fixes assertion failures in the Directory library.
2012-08-08ProxyDatabasePlugin: new database plugin using libmpdclientMax Kellermann2-0/+372
Implementation incomplete, but sort-of-works. DumpDatabase works, but MPD is still hard-coded on the "simple" plugin.
2012-08-08DatabaseSelection: add "match" attributeMax Kellermann1-2/+5
Let the database plugin do the match.
2012-08-07db_selection: rename to DatabaseSelectionMax Kellermann2-3/+3
2012-08-07Database{Plugin,Visitor}: pass referencesMax Kellermann2-8/+8
2012-08-02DatabasePlugin: make Visit() constMax Kellermann2-4/+4
2012-08-02gcc.h: re-add gcc_const and gcc_pureMax Kellermann1-5/+4
Remove GLib dependency from some headers.
2012-08-01db_plugin: convert to C++Max Kellermann3-184/+184
2012-07-10require GLib 2.16Max Kellermann1-1/+0
GLib 2.16 was released more than 4 years ago. Let's remove some cruft from the glib_compat.h header, and avoid new cruft to it.
2012-02-02directory: require the caller to lock the db_mutexMax Kellermann1-2/+11
Reduce the number of lock/unlock cycles, and make database handling safer.
2012-01-24directory: replace dirvec with doubly linked listMax Kellermann1-2/+6
Random access is not needed, and a linked list is easier to manage: we don't need to (re-)allocate the pointer array.
2012-01-24directory: simplify constructors and clarify API documentationMax Kellermann1-2/+2
Pass only the "name" to a directory, instead of the full (relative) path.
2012-01-12db/simple: pass the correct GError pointerMax Kellermann1-1/+1
2011-09-13db_plugin: add method visit()Max Kellermann1-0/+41
2011-09-13db_plugin: add method get_song()Max Kellermann1-0/+17
New db_get_song() implementation.
2011-09-10db_plugin: introducing a plugin API for the song databaseMax Kellermann2-0/+329
First draft, not really pluggable currently - hard-coded to use the "simple" plugin, and calls several of its internal functions. The API is very simple currently, all searches are still performed over the root "directory" object. Future changes to the API will move those search implementations into the plugin, to allow more efficient implementations, or implementations that don't have the whole tree in memory all the time.