playqueue: Add a flag to disable unnecessary callbacks

The history and collection playqueues are never saved to disk, so I only
care about saving when a flag is changed.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
Anna Schumaker 2014-01-25 13:21:57 -05:00 committed by Anna Schumaker
parent b490322f55
commit 00706cc33f
5 changed files with 12 additions and 4 deletions

View File

@ -116,3 +116,4 @@ Future work:
- Playqueue and database inherit from common class
- "About" dialog
- Investigate "Bulk insert" callbacks for performance

View File

@ -12,6 +12,7 @@ enum playqueue_flags {
PQ_ENABLED = (1 << 0),
PQ_RANDOM = (1 << 1),
PQ_REPEAT = (1 << 2),
PQ_DISABLE_CHANGED_SIZE = (1 << 3),
};
class Playqueue {

View File

@ -103,6 +103,7 @@ void audio :: init(int *argc, char ***argv)
GstBus *bus;
o_recently_played.set_flag(PQ_REPEAT);
o_recently_played.set_flag(PQ_DISABLE_CHANGED_SIZE);
gst_init(argc, argv);
ocarina_player = gst_element_factory_make("playbin", "ocarina_player");

View File

@ -25,8 +25,10 @@ static void del_library_track(unsigned int id)
void deck :: init()
{
read();
library_playqueue.set_flag(PQ_REPEAT);
library_playqueue.set_flag(PQ_DISABLE_CHANGED_SIZE);
read();
get_callbacks()->on_library_track_add = add_library_track;
get_callbacks()->on_library_track_del = del_library_track;
get_callbacks()->on_queue_changed = write;

View File

@ -105,7 +105,8 @@ unsigned int Playqueue :: add(unsigned int track_id)
library :: lookup(track_id, &song);
length += song.track->length;
get_callbacks()->on_queue_track_add(this, id);
get_callbacks()->on_queue_changed();
if (!(flags & PQ_DISABLE_CHANGED_SIZE))
get_callbacks()->on_queue_changed();
return id;
}
@ -117,7 +118,8 @@ unsigned int Playqueue :: add_front(unsigned int track_id)
library :: lookup(track_id, &song);
length += song.track->length;
get_callbacks()->on_queue_track_add(this, 0);
get_callbacks()->on_queue_changed();
if (!(flags & PQ_DISABLE_CHANGED_SIZE))
get_callbacks()->on_queue_changed();
return 0;
}
@ -130,7 +132,8 @@ void Playqueue :: del(unsigned int plist_id)
library :: lookup(track_id, &song);
length -= song.track->length;
get_callbacks()->on_queue_track_del(this, plist_id);
get_callbacks()->on_queue_changed();
if (!(flags & PQ_DISABLE_CHANGED_SIZE))
get_callbacks()->on_queue_changed();
}
void Playqueue :: del_track(unsigned int track_id)