diff --git a/core/core.cpp b/core/core.cpp index 2efc6336..e0d84f20 100644 --- a/core/core.cpp +++ b/core/core.cpp @@ -24,6 +24,7 @@ void core :: init(struct core_init_data *init) void core :: deinit() { - filter_deinit(); + collection_deinit(); tags_deinit(); + filter_deinit(); } diff --git a/core/library.cpp b/core/library.cpp index d3b338b2..93ae6e7b 100644 --- a/core/library.cpp +++ b/core/library.cpp @@ -166,6 +166,11 @@ void collection_init(struct queue_ops *ops) queue_set_flag(&library_q, Q_SAVE_FLAGS); } +void collection_deinit() +{ + queue_deinit(&library_q); +} + void collection :: save(struct queue *queue, enum queue_flags flag) { library_q.save(); diff --git a/include/core/library.h b/include/core/library.h index b028d056..317e73e8 100644 --- a/include/core/library.h +++ b/include/core/library.h @@ -39,6 +39,9 @@ namespace collection /* Called to initialize the collection manager. */ void collection_init(struct queue_ops *); +/* Called to deinitialize the collection manager. */ +void collection_deinit(); + /* Called to add a new library directory to the collection manager. */ struct library *collection_add(const gchar *); diff --git a/tests/core/library.cpp b/tests/core/library.cpp index 04d85088..cb4e45b5 100644 --- a/tests/core/library.cpp +++ b/tests/core/library.cpp @@ -146,10 +146,23 @@ static void test_remove() test_equal(queue_size(q), 0); } +static void test_deinit() +{ + struct queue *q = collection :: get_queue(); + + collection_deinit(); + tags_deinit(); + filter_deinit(); + + test_equal(queue_size(q), 0); + test_equal(g_slist_length(q->q_sort), 0); +} + DECLARE_UNIT_TESTS( UNIT_TEST("Collection Initialization", test_init), UNIT_TEST("Collection Add Path", test_add), UNIT_TEST("Collection Update Path", test_update), UNIT_TEST("Collection Enable and Disable", test_enable), UNIT_TEST("Collection Remove Path", test_remove), + UNIT_TEST("Collection De-Initialization", test_deinit), );