Track: Add a function for saving the track_db

The track_db doesn't have autosaving enabled for performance reasons.
This lets us add several tracks to the database between saves, but it
also means we need to provide a commit() function.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2014-11-29 11:16:21 -05:00
parent 83cc81c934
commit d5fc2a4de0
3 changed files with 16 additions and 0 deletions

View File

@ -169,3 +169,8 @@ Track *tags :: get_track(const unsigned int index)
{
return track_db.at(index);
}
void tags :: commit_track_db()
{
track_db.save();
}

View File

@ -150,6 +150,9 @@ namespace tags
* @return A matching Track tag, or NULL.
*/
Track *get_track(const unsigned int);
/** Called to write the track_db to disk. */
void commit_track_db();
}
#endif /* OCARINA_CORE_TAGS_TRACK_H */

View File

@ -83,6 +83,7 @@ static void test_track_tag_destructor()
static void test_track_tag_lookup()
{
Database<Track> track_db("track.db", false);
Track *a, *b;
a = tags :: add_track(album, artist, genre, library,
@ -98,6 +99,13 @@ static void test_track_tag_lookup()
test_equal(tags :: get_track(a->index()), a);
test_equal(tags :: get_track(a->index() + 1), (Track *)NULL);
track_db.load();
test_equal(track_db.size(), (unsigned)0);
tags :: commit_track_db();
track_db.load();
test_equal(track_db.size(), (unsigned)1);
}
static void test_track_tag_functional()