aboutsummaryrefslogtreecommitdiffstats
path: root/src/songvec.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* songvec: lock traversals for thread-safe updates/readsEric Wong2008-10-071-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.
* songvec: add songvec_for_each iteratorEric Wong2008-10-071-0/+13
| | | | | This is so we can more consistently deal with locking needed for thread-safety in iterator functions.
* songvec: songvec_delete takes a const Song pointerEric Wong2008-09-291-1/+1
| | | | We don't modify the Song when we delete it
* songvec_free => songvec_destroyEric Wong2008-09-291-1/+1
| | | | | "free" implies the songvec structure itself is freed, which is not the case.
* songvec: avoid free(NULL)Eric Wong2008-09-231-2/+4
| | | | Potentially broken free() implementations don't like it
* songvec: remove songvec_pruneEric Wong2008-09-231-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.
* Replace SongList with struct songvecEric Wong2008-09-231-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).