Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | ProxyDatabase: clear libmpdclient errors in CheckError() | Max Kellermann | 2012-08-16 | 1 | -1/+2 | |
| | | | | Auto-recover from soft errors. | |||||
* | DatabasePlugin: add method ReturnSong() | Max Kellermann | 2012-08-16 | 3 | -0/+38 | |
| | | | | Allow the plugin to allocate the GetSong() return value. | |||||
* | ProxyDatabase: pass "detached" objects to visitors | Max Kellermann | 2012-08-15 | 1 | -39/+34 | |
| | | | | Fixes wrong object URIs with duplicate base names. | |||||
* | DatabasePlugin: add method GetStats() | Max Kellermann | 2012-08-15 | 3 | -0/+37 | |
| | | | | | Optimize the ProxyDatabase by invoking "stats" on the peer, instead of visiting all songs. | |||||
* | DatabasePlugin: add method VisitUniqueTags() | Max Kellermann | 2012-08-15 | 3 | -0/+68 | |
| | | | | | 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 | 2 | -4/+0 | |
| | ||||||
* | ProxyDatabasePlugin: obey the "recursive" flag | Max Kellermann | 2012-08-08 | 1 | -2/+3 | |
| | ||||||
* | ProxyDatabasePlugin: use an artificial "root" directory | Max Kellermann | 2012-08-08 | 1 | -2/+9 | |
| | | | | Fixes assertion failures in the Directory library. | |||||
* | ProxyDatabasePlugin: new database plugin using libmpdclient | Max Kellermann | 2012-08-08 | 2 | -0/+372 | |
| | | | | | Implementation incomplete, but sort-of-works. DumpDatabase works, but MPD is still hard-coded on the "simple" plugin. | |||||
* | DatabaseSelection: add "match" attribute | Max Kellermann | 2012-08-08 | 1 | -2/+5 | |
| | | | | Let the database plugin do the match. | |||||
* | db_selection: rename to DatabaseSelection | Max Kellermann | 2012-08-07 | 2 | -3/+3 | |
| | ||||||
* | Database{Plugin,Visitor}: pass references | Max Kellermann | 2012-08-07 | 2 | -8/+8 | |
| | ||||||
* | DatabasePlugin: make Visit() const | Max Kellermann | 2012-08-02 | 2 | -4/+4 | |
| | ||||||
* | gcc.h: re-add gcc_const and gcc_pure | Max Kellermann | 2012-08-02 | 1 | -5/+4 | |
| | | | | Remove GLib dependency from some headers. | |||||
* | db_plugin: convert to C++ | Max Kellermann | 2012-08-01 | 3 | -184/+184 | |
| | ||||||
* | require GLib 2.16 | Max Kellermann | 2012-07-10 | 1 | -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. | |||||
* | directory: require the caller to lock the db_mutex | Max Kellermann | 2012-02-02 | 1 | -2/+11 | |
| | | | | | Reduce the number of lock/unlock cycles, and make database handling safer. | |||||
* | directory: replace dirvec with doubly linked list | Max Kellermann | 2012-01-24 | 1 | -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. | |||||
* | directory: simplify constructors and clarify API documentation | Max Kellermann | 2012-01-24 | 1 | -2/+2 | |
| | | | | | Pass only the "name" to a directory, instead of the full (relative) path. | |||||
* | db/simple: pass the correct GError pointer | Max Kellermann | 2012-01-12 | 1 | -1/+1 | |
| | ||||||
* | db_plugin: add method visit() | Max Kellermann | 2011-09-13 | 1 | -0/+41 | |
| | ||||||
* | db_plugin: add method get_song() | Max Kellermann | 2011-09-13 | 1 | -0/+17 | |
| | | | | New db_get_song() implementation. | |||||
* | db_plugin: introducing a plugin API for the song database | Max Kellermann | 2011-09-10 | 2 | -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. |