From 049f91e514a97be371b7fdb88a7cee6e757b406c Mon Sep 17 00:00:00 2001 From: Bryan Schumaker Date: Sat, 29 Oct 2011 16:18:15 -0400 Subject: [PATCH] libsaria: Return default track values in error case If we can't find the inode, I return some default values to the UI to keep it happy (and clear out the information from the previous song). --- include/libsaria/track.h | 1 + libsaria/current.cpp | 6 ++++-- libsaria/track.cpp | 30 ++++++++++++++++++++++++------ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/include/libsaria/track.h b/include/libsaria/track.h index 20e0423e..bd1d2107 100644 --- a/include/libsaria/track.h +++ b/include/libsaria/track.h @@ -11,6 +11,7 @@ class Track TrackTag *tags; public: + Track(); Track(ino_t, TrackTag *); ~Track(); diff --git a/libsaria/current.cpp b/libsaria/current.cpp index 81b21438..27a13efb 100644 --- a/libsaria/current.cpp +++ b/libsaria/current.cpp @@ -18,9 +18,11 @@ namespace libsaria void current_track(void (*func)(Track &)) { ino_t inode; - /* TODO: Set to blank in error cases */ - if (current_inode(inode) < 0) + if (current_inode(inode) < 0) { + Track blank; + func(blank); return; + } library::get_info(inode, func); } diff --git a/libsaria/track.cpp b/libsaria/track.cpp index 00a555b4..cdf84d2a 100644 --- a/libsaria/track.cpp +++ b/libsaria/track.cpp @@ -2,6 +2,12 @@ #include #include +Track::Track() +{ + inode = 0; + tags = NULL; +} + Track::Track(ino_t ino, TrackTag *tag) { inode = ino; @@ -19,30 +25,42 @@ ino_t Track::get_inode() unsigned int Track::get_track() { - return tags->get_track(); + if (tags) + return tags->get_track(); + return 0; } string Track::get_title() { - return tags->get_title(); + if (tags) + return tags->get_title(); + return ""; } string Track::get_lenstr() { - return tags->get_lenstr(); + if (tags) + return tags->get_lenstr(); + return ""; } string Track::get_artist() { - return tags->get_artist(); + if (tags) + return tags->get_artist(); + return ""; } string Track::get_album() { - return tags->get_album(); + if (tags) + return tags->get_album(); + return ""; } unsigned int Track::get_year() { - return tags->get_year(); + if (tags) + return tags->get_year(); + return 0; }