core/queue: Move queue_{set|unset}_flag() out of the queue struct

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2015-12-03 13:41:39 -05:00
parent be5d028fcf
commit 13723856fc
9 changed files with 44 additions and 53 deletions

View File

@ -63,7 +63,7 @@ static void upgrade_v0()
file_readf(&deck_file, "%d %u", &random, &num);
if (random)
library->set_flag(Q_RANDOM);
queue_set_flag(library, Q_RANDOM);
for (unsigned int i = 0; i < num; i++) {
file_readf(&deck_file, "%u %d", &field, &ascending);

View File

@ -157,8 +157,8 @@ void collection :: init(struct queue_ops *ops)
library_q.sort(COMPARE_TRACK, false);
}
library_q.set_flag(Q_SAVE_SORT);
library_q.set_flag(Q_SAVE_FLAGS);
queue_set_flag(&library_q, Q_SAVE_SORT);
queue_set_flag(&library_q, Q_SAVE_FLAGS);
}
void collection :: save(struct queue *queue, enum queue_flags flag)

View File

@ -77,7 +77,7 @@ void playlist :: init()
playlist_q.sort(COMPARE_ARTIST, true);
playlist_q.sort(COMPARE_YEAR, false);
playlist_q.sort(COMPARE_TRACK, false);
playlist_q.set_flag(Q_NO_SORT);
queue_set_flag(&playlist_q, Q_NO_SORT);
index_init(&playlist_db, "playlist.db", true);
db_load(&playlist_db);

View File

@ -58,16 +58,16 @@ void queue :: read(file &file)
}
}
void queue :: set_flag(queue_flags flag)
void queue_set_flag(struct queue *queue, enum queue_flags flag)
{
q_flags |= flag;
__queue_save(this, Q_SAVE_FLAGS);
queue->q_flags |= flag;
__queue_save(queue, Q_SAVE_FLAGS);
}
void queue :: unset_flag(queue_flags flag)
void queue_unset_flag(struct queue *queue, enum queue_flags flag)
{
q_flags &= ~flag;
__queue_save(this, Q_SAVE_FLAGS);
queue->q_flags &= ~flag;
__queue_save(queue, Q_SAVE_FLAGS);
}
static bool track_less_than(struct track *lhs, struct track *rhs,

View File

@ -54,17 +54,17 @@ void QueueToolbar :: init(queue *queue, QueueLabel *label,
void QueueToolbar :: on_random_toggled()
{
if (_q_random->get_active())
_queue->set_flag(Q_RANDOM);
queue_set_flag(_queue, Q_RANDOM);
else
_queue->unset_flag(Q_RANDOM);
queue_unset_flag(_queue, Q_RANDOM);
}
void QueueToolbar :: on_repeat_toggled()
{
if (_q_repeat->get_active())
_queue->set_flag(Q_REPEAT);
queue_set_flag(_queue, Q_REPEAT);
else
_queue->unset_flag(Q_REPEAT);
queue_unset_flag(_queue, Q_REPEAT);
}
bool QueueToolbar :: on_search_key_released(GdkEventKey *event)
@ -84,9 +84,9 @@ void QueueToolbar :: on_switch_toggled()
bool active = _q_switch->get_active();
if (active)
_queue->set_flag(Q_ENABLED);
queue_set_flag(_queue, Q_ENABLED);
else
_queue->unset_flag(Q_ENABLED);
queue_unset_flag(_queue, Q_ENABLED);
_q_label->set_sensitive(active);
_q_window->set_sensitive(active);

View File

@ -112,21 +112,6 @@ struct queue {
void read(file &);
/**
* Set a queue flag.
*
* @param flag queue_flag to set.
*/
virtual void set_flag(queue_flags);
/**
* Clear a queue flag.
*
* @param flag queue_flag to clear.
*/
virtual void unset_flag(queue_flags);
/**
* Add a track to the queue, possibly matching the
* current sort order.
@ -169,6 +154,12 @@ struct queue {
void queue_init(struct queue *, unsigned int, const struct queue_ops *);
/* Called to set a queue flag. */
void queue_set_flag(struct queue *, enum queue_flags);
/* Called to clear a queue flag. */
void queue_unset_flag(struct queue *, enum queue_flags);
/* Called to check if the queue has a specific flag set. */
static inline bool queue_has_flag(struct queue *queue, enum queue_flags flag)
{

View File

@ -126,7 +126,7 @@ void test_track_controls()
struct track *track = NULL;
TestDriver *driver = (TestDriver *)audio :: get_driver();
collection :: get_queue()->unset_flag(Q_RANDOM);
queue_unset_flag(collection :: get_queue(), Q_RANDOM);
audio :: pause();
audio :: next();

View File

@ -117,7 +117,7 @@ static void test_next_prev()
queue *q1 = deck :: get(1);
q0->q_notify = &test_notifier;
q0->unset_flag(Q_RANDOM);
queue_unset_flag(q0, Q_RANDOM);
for (unsigned int i = 0; i < 4; i++)
q0->add(track_get(i));
@ -144,14 +144,14 @@ static void test_next_prev()
test_equal(deck :: get_queues().size(), (size_t)1);
test_equal(deck :: index(q1), (unsigned)0);
q1->unset_flag(Q_ENABLED);
collection :: get_queue()->unset_flag(Q_RANDOM);
queue_unset_flag(q1, Q_ENABLED);
queue_unset_flag(collection :: get_queue(), Q_RANDOM);
test_equal(queue_size(q1), (unsigned)5);
deck :: next();
test_equal(queue_size(q1), (unsigned)5);
q1->set_flag(Q_ENABLED);
queue_set_flag(q1, Q_ENABLED);
for (unsigned int i = 0; i < 5; i++)
deck :: next();
test_equal(deck :: get_queues().size(), (size_t)0);

View File

@ -110,19 +110,19 @@ static void test_flags()
test_equal(queue_has_flag(&q, Q_SAVE_FLAGS), false);
test_equal(queue_has_flag(&q, Q_SAVE_SORT), false);
q.set_flag(Q_ENABLED);
queue_set_flag(&q, Q_ENABLED);
test_equal(q.q_flags, Q_ENABLED);
test_equal(count_flags, 0);
q.unset_flag(Q_ENABLED);
queue_unset_flag(&q, Q_ENABLED);
test_equal(q.q_flags, 0);
test_equal(count_flags, 0);
q.set_flag(Q_SAVE_FLAGS);
q.set_flag(Q_ENABLED);
q.set_flag(Q_RANDOM);
q.set_flag(Q_REPEAT);
q.set_flag(Q_NO_SORT);
queue_set_flag(&q, Q_SAVE_FLAGS);
queue_set_flag(&q, Q_ENABLED);
queue_set_flag(&q, Q_RANDOM);
queue_set_flag(&q, Q_REPEAT);
queue_set_flag(&q, Q_NO_SORT);
test_equal(queue_has_flag(&q, Q_ENABLED), true);
test_equal(queue_has_flag(&q, Q_RANDOM), true);
test_equal(queue_has_flag(&q, Q_REPEAT), true);
@ -130,10 +130,10 @@ static void test_flags()
test_equal(queue_has_flag(&q, Q_SAVE_FLAGS), true);
test_equal(count_flags, 5);
q.unset_flag(Q_ENABLED);
q.unset_flag(Q_RANDOM);
q.unset_flag(Q_REPEAT);
q.unset_flag(Q_NO_SORT);
queue_unset_flag(&q, Q_ENABLED);
queue_unset_flag(&q, Q_RANDOM);
queue_unset_flag(&q, Q_REPEAT);
queue_unset_flag(&q, Q_NO_SORT);
test_equal(count_flags, 9);
}
@ -190,8 +190,8 @@ static void test_stress(unsigned int N)
test_equal(queue_size(&q), ex_size);
/* Tracks should not be removed. */
q.set_flag(Q_ENABLED);
q.set_flag(Q_REPEAT);
queue_set_flag(&q, Q_ENABLED);
queue_set_flag(&q, Q_REPEAT);
for (i = 0; i < ex_size; i++) {
test_loop_equal(queue_next(&q), track_get((i % 11) + 2), i);
queue_selected(&q, i);
@ -199,7 +199,7 @@ static void test_stress(unsigned int N)
} test_loop_passed();
/* Tracks should be removed. */
q.unset_flag(Q_REPEAT);
queue_unset_flag(&q, Q_REPEAT);
for (i = 0; i < ex_size; i++) {
test_loop_equal(queue_next(&q), track_get((i % 11) + 2), i);
test_loop_equal(queue_size(&q), ex_size - (i + 1), i);
@ -310,7 +310,7 @@ static void test_sorting()
} test_loop_passed();
test_equal(count_sort, 1);
q.set_flag(Q_NO_SORT);
queue_set_flag(&q, Q_NO_SORT);
q.sort(COMPARE_TITLE, true);
for (i = 0; i < 13; i++) {
track = queue_at(&q, i);
@ -318,7 +318,7 @@ static void test_sorting()
test_loop_equal(track->tr_dbe.dbe_index, ex_count[i], i);
} test_loop_passed();
q.unset_flag(Q_NO_SORT);
queue_unset_flag(&q, Q_NO_SORT);
q.sort(COMPARE_TITLE, true);
for (i = 0; i < 13; i++) {
track = queue_at(&q, i);
@ -337,7 +337,7 @@ static void test_sorting()
} test_loop_passed();
test_equal(count_sort, 5);
q.unset_flag(Q_SAVE_SORT);
queue_unset_flag(&q, Q_SAVE_SORT);
q.sort(COMPARE_ARTIST, true);
q.sort(COMPARE_ALBUM, false);
q.sort(COMPARE_TRACK, false);