aboutsummaryrefslogtreecommitdiffstats
path: root/src/songvec.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2008-10-07directory: use songvec_for_each for iteratorsEric Wong1-31/+0
Get rid of songvec_write so we can enforce proper locking
2008-10-07songvec: lock traversals for thread-safe updates/readsEric Wong1-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-05songvec: add songvec_for_each iteratorEric Wong1-0/+13
This is so we can more consistently deal with locking needed for thread-safety in iterator functions.
2008-10-05song: replace printSong* with song_print_*Eric Wong1-2/+2
This make argument order more consistent for iterators. Additionally, these now return ssize_t results for error checking.
2008-09-28songvec: songvec_delete takes a const Song pointerEric Wong1-1/+1
We don't modify the Song when we delete it
2008-09-28songvec_free => songvec_destroyEric Wong1-1/+1
"free" implies the songvec structure itself is freed, which is not the case.
2008-09-23songvec: avoid free(NULL)Eric Wong1-2/+4
Potentially broken free() implementations don't like it
2008-09-22songvec: remove songvec_pruneEric Wong1-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-20Replace SongList with struct songvecEric Wong1-0/+121
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).