From 7507955018465bf6c331617e67548f00bdb78892 Mon Sep 17 00:00:00 2001 From: Bryan Schumaker Date: Sun, 6 Nov 2011 12:08:50 -0500 Subject: [PATCH] libsaria: Fix bug in updating library I was readding all tracks to the new linked list, rather than checking if the track existed first. This has been fixed. --- libsaria/library/library.h | 2 +- libsaria/library/update.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libsaria/library/library.h b/libsaria/library/library.h index cc94036a..b631ed4b 100644 --- a/libsaria/library/library.h +++ b/libsaria/library/library.h @@ -26,7 +26,7 @@ class LibraryPath string get_path(); void get_info(void (*)(struct libsaria::library::PathInfo &)); bool get_info_id(ino_t &, void (*)(Track &)); - void insert_track(TrackTag &); + void insert_track(ino_t &inode, TrackTag &); bool play_id(ino_t &); void save(OutFile &); void update(); diff --git a/libsaria/library/update.cpp b/libsaria/library/update.cpp index ee1a48e6..a05b72a8 100644 --- a/libsaria/library/update.cpp +++ b/libsaria/library/update.cpp @@ -3,9 +3,10 @@ #include #include "library.h" -void LibraryPath::insert_track(TrackTag &tag) +void LibraryPath::insert_track(ino_t &inode, TrackTag &tag) { - file_list.push_back(tag); + if (find_id(inode) == file_list.end()) + file_list.push_back(tag); } void LibraryPath::update() @@ -31,7 +32,7 @@ void ScanTask::tag_file(file filepath) { try { TrackTag tag(dir + "/" + filepath.name, filepath.d_ino); - library->insert_track(tag); + library->insert_track(filepath.d_ino, tag); } catch (string message) { println(message); }