Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2015-01-01 | Copyright year 2015 | Max Kellermann | 1 | -1/+1 | |
2014-06-16 | db/simple: use class boost::intrusive::list | Max Kellermann | 1 | -17/+12 | |
Remove the C list_head library and use type-safe C++ instead. | |||||
2014-02-26 | db/simple: create dedicated directory | Max Kellermann | 1 | -0/+0 | |
2014-02-24 | SongSort, ...: use libicu instead of GLib's g_utf8_*() | Max Kellermann | 1 | -4/+3 | |
2014-01-24 | Database*: move to db/ | Max Kellermann | 1 | -0/+0 | |
2014-01-19 | Song: embed the Tag object statically into class Song | Max Kellermann | 1 | -14/+6 | |
Reduces overhead because we need to manage only one memory allocation. According to valgrind/massif, we save 7%. | |||||
2014-01-13 | copyright year 2014 | Max Kellermann | 1 | -1/+1 | |
2013-11-28 | include cleanup using iwyu | Max Kellermann | 1 | -2/+0 | |
2013-10-20 | TagType: rename enum tag_type to TagType | Max Kellermann | 1 | -3/+3 | |
2013-10-19 | *: use nullptr instead of NULL | Max Kellermann | 1 | -10/+10 | |
2013-09-05 | Tag, ...: move to libtag.a | Max Kellermann | 1 | -1/+1 | |
2013-08-04 | *: use gcc.h macros instead of GLib | Max Kellermann | 1 | -1/+1 | |
2013-07-30 | tag: convert to C++ | Max Kellermann | 1 | -5/+5 | |
2013-07-28 | song: convert header to C++ | Max Kellermann | 1 | -3/+3 | |
2013-04-17 | song_sort: convert to C++ | Max Kellermann | 1 | -3/+6 | |
2012-01-24 | directory: replace songvec with doubly linked list | Max Kellermann | 1 | -115/+10 | |
2012-01-24 | songvec: move code to songvec_find_pointer() | Max Kellermann | 1 | -18/+28 | |
2012-01-24 | songvec: _delete() returns void | Max Kellermann | 1 | -3/+3 | |
The given song must exist, or MPD will abort. Calling it with an unknown song is illegal. | |||||
2012-01-21 | db_lock: new unified lock for songvec and dirvec | Max Kellermann | 1 | -30/+16 | |
2011-01-29 | copyright year 2011 | Max Kellermann | 1 | -1/+1 | |
2009-12-31 | Update copyright notices. | Avuton Olrich | 1 | -1/+1 | |
2009-11-12 | include config.h in all sources | Max Kellermann | 1 | -0/+1 | |
After we've been hit by Large File Support problems several times in the past week (which only occur on 32 bit platforms, which I don't have), this is yet another attempt to fix the issue. | |||||
2009-10-31 | songvec: sort songs by album name first, then disc/track number | Max Kellermann | 1 | -1/+30 | |
When the songs of two albums are in the same directory, all songs of an album should be right next to each others. | |||||
2009-10-31 | songvec: simplified compare_tag_item() | Max Kellermann | 1 | -8/+10 | |
Moved some code to tag_get_value_checked(), to eliminate several NULL checks. | |||||
2009-10-13 | song: renamed attribute "url" to "uri" | Max Kellermann | 1 | -4/+4 | |
2009-10-13 | tag: removed the "_ITEM_" suffix from the enum names | Max Kellermann | 1 | -2/+2 | |
2009-03-13 | all: Update copyright header. | Avuton Olrich | 1 | -0/+19 | |
This updates the copyright header to all be the same, which is pretty much an update of where to mail request for a copy of the GPL and the years of the MPD project. This also puts all committers under 'The Music Player Project' umbrella. These entries should go individually in the AUTHORS file, for consistancy. | |||||
2009-01-15 | songvec: sort songs by disc and track number | Max Kellermann | 1 | -0/+46 | |
Sorting songs by file name does not make much sense. Most of the time, users want to add songs in track order to the playlist. | |||||
2009-01-15 | dirvec, songvec: sort using g_utf8_collate() | Max Kellermann | 1 | -1/+1 | |
Path names in the directory and song structs are always encoded in UTF-8. Don't use strcmp(), it cannot handle UTF-8 characters properly. Use GLib's UTF-8 aware g_utf8_collate() function for that. | |||||
2009-01-03 | songvec, dirvec: use GLib instead of utils.h | Max Kellermann | 1 | -8/+9 | |
2008-12-28 | songvec: migrate from pthread to glib threads | Thomas Jansen | 1 | -17/+29 | |
2008-12-28 | Remove xpthread_* wrappers | Thomas Jansen | 1 | -0/+1 | |
2008-10-21 | update: fix multiple deletes from *vec iterators | Eric Wong | 1 | -1/+5 | |
{song,dir}vec_for_each each failed to gracefully handle deleted files when iterating through. While we were thread-safe, we were not safe within the calling thread. If a callback we passed caused sv->nr to shring, our index would still increment; causing files to stay in the database. A way to test this is to remove 10 or so contiguous songs from a >10 song directory. | |||||
2008-10-21 | {dir,song}vec: these structs are const | Eric Wong | 1 | -1/+1 | |
We definitely don't modify them here. | |||||
2008-10-14 | {dir,song}vec: fix off-by-one errors in {dir,song}vec_delete | Eric Wong | 1 | -7/+6 | |
Found by Valgrind while looking for another bug... Hmm.. I should really just make this code generic since they're duplicated... | |||||
2008-10-13 | songvec: avoid holding nr_lock during free(3) | Eric Wong | 1 | -3/+5 | |
We only need to lock sv->nr changes to prevent traversals ( why it's called "nr_lock"). free(3) is a "slow" function on my system; so we can avoid unnecessarily holding a lock long for longer than needed. | |||||
2008-10-08 | don't include os_compat.h | Max Kellermann | 1 | -0/+3 | |
When there are standardized headers, use these instead of the bloated os_compat.h. | |||||
2008-10-08 | song: converted typedef Song to struct song | Max Kellermann | 1 | -11/+14 | |
Again, a data type which can be forward-declared. | |||||
2008-10-07 | songvec: pass const pointers | Max Kellermann | 1 | -2/+5 | |
Pass const songvec pointers to songvec_find() and songvec_for_each(). | |||||
2008-10-07 | songvec: lock traversals for thread-safe updates/reads | Eric Wong | 1 | -10/+34 | |
Only one lock is used for all songvec traversals since they're rarely changed. Also, minimize lock time and release it before calling iterator functions since they may block (updateSongInfo => stat/open/seek/read). This lock only protects songvecs (and all of them) during traversals; not the individual song structures themselves. | |||||
2008-10-07 | songvec: add songvec_for_each iterator | Eric Wong | 1 | -0/+13 | |
This is so we can more consistently deal with locking needed for thread-safety in iterator functions. | |||||
2008-09-29 | songvec: songvec_delete takes a const Song pointer | Eric Wong | 1 | -1/+1 | |
We don't modify the Song when we delete it | |||||
2008-09-29 | songvec_free => songvec_destroy | Eric Wong | 1 | -1/+1 | |
"free" implies the songvec structure itself is freed, which is not the case. | |||||
2008-09-23 | songvec: avoid free(NULL) | Eric Wong | 1 | -2/+4 | |
Potentially broken free() implementations don't like it | |||||
2008-09-23 | songvec: remove songvec_prune | Eric Wong | 1 | -23/+0 | |
Any pruned files will be noticed during update and pruned from the live database, so this inefficient function can go away and never come back. | |||||
2008-09-23 | Replace SongList with struct songvec | Eric Wong | 1 | -0/+89 | |
Our linked-list implementation is wasteful and the SongList isn't modified enough to benefit from being a linked list. So use a more compact array of song pointers which saves ~200K on a library with ~9K songs (on x86-32). |