From 42d57567e05c896cfd7f0fd8518f90f160af571e Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 19 Jan 2014 11:03:14 -0500 Subject: [PATCH] callbacks: Add callbacks for playqueue size modifications Signed-off-by: Anna Schumaker --- include/callback.h | 6 ++++++ lib/callback.cpp | 4 ++++ lib/playqueue.cpp | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/include/callback.h b/include/callback.h index 502f2f7d..2f5470be 100644 --- a/include/callback.h +++ b/include/callback.h @@ -5,13 +5,19 @@ #define OCARINA_CALLBACK_H #include +#include struct Callbacks { + /* Library callbacks */ void (*on_library_add)(unsigned int, library :: Library *); void (*on_library_update)(unsigned int, library :: Library *); void (*on_library_track_add)(unsigned int); void (*on_library_track_del)(unsigned int); + + /* Playqueue callbacks */ + void (*on_queue_track_add)(Playqueue *); + void (*on_queue_track_del)(Playqueue *); }; diff --git a/lib/callback.cpp b/lib/callback.cpp index 1d0eb13a..d242f5f1 100644 --- a/lib/callback.cpp +++ b/lib/callback.cpp @@ -6,6 +6,7 @@ static void no_op(unsigned int) {} static void no_op(unsigned int id, library :: Library *path) {} +static void no_op(Playqueue *) {} static struct Callbacks callbacks = { @@ -13,6 +14,9 @@ static struct Callbacks callbacks = { .on_library_update = no_op, .on_library_track_add = no_op, .on_library_track_del = no_op, + + .on_queue_track_add = no_op, + .on_queue_track_del = no_op, }; diff --git a/lib/playqueue.cpp b/lib/playqueue.cpp index 5cc54fbf..0b25c19b 100644 --- a/lib/playqueue.cpp +++ b/lib/playqueue.cpp @@ -1,6 +1,7 @@ /* * Copyright 2013 (c) Anna Schumaker. */ +#include #include #include #include @@ -62,6 +63,7 @@ unsigned int Playqueue :: add(unsigned int track_id) library :: lookup(track_id, &song); length += song.track->length; + get_callbacks()->on_queue_track_add(this); return tracks.size() - 1; } @@ -72,6 +74,7 @@ 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); return 0; } @@ -83,6 +86,7 @@ void Playqueue :: del(unsigned int plist_id) tracks.erase(tracks.begin() + plist_id); library :: lookup(track_id, &song); length -= song.track->length; + get_callbacks()->on_queue_track_del(this); } void Playqueue :: del_track(unsigned int track_id) @@ -94,6 +98,7 @@ void Playqueue :: del_track(unsigned int track_id) else i++; } + get_callbacks()->on_queue_track_del(this); } unsigned int Playqueue :: size()