diff options
-rw-r--r-- | src/DatabaseGlue.cxx | 11 | ||||
-rw-r--r-- | src/Stats.cxx | 12 | ||||
-rw-r--r-- | src/database.h | 18 | ||||
-rw-r--r-- | src/update.c | 2 |
4 files changed, 38 insertions, 5 deletions
diff --git a/src/DatabaseGlue.cxx b/src/DatabaseGlue.cxx index 68ab11ab3..a0246253c 100644 --- a/src/DatabaseGlue.cxx +++ b/src/DatabaseGlue.cxx @@ -87,10 +87,19 @@ GetDatabase() return db; } +bool +db_is_simple(void) +{ + assert(db == NULL || db_is_open); + + return dynamic_cast<SimpleDatabase *>(db) != nullptr; +} + struct directory * db_get_root(void) { assert(db != NULL); + assert(db_is_simple()); return ((SimpleDatabase *)db)->GetRoot(); } @@ -128,6 +137,7 @@ db_save(GError **error_r) { assert(db != NULL); assert(db_is_open); + assert(db_is_simple()); return ((SimpleDatabase *)db)->Save(error_r); } @@ -153,6 +163,7 @@ db_get_mtime(void) { assert(db != NULL); assert(db_is_open); + assert(db_is_simple()); return ((SimpleDatabase *)db)->GetLastModified(); } diff --git a/src/Stats.cxx b/src/Stats.cxx index 5b5008cee..07273bfdb 100644 --- a/src/Stats.cxx +++ b/src/Stats.cxx @@ -119,14 +119,18 @@ int stats_print(struct client *client) "songs: %i\n" "uptime: %li\n" "playtime: %li\n" - "db_playtime: %li\n" - "db_update: %li\n", + "db_playtime: %li\n", stats.artist_count, stats.album_count, stats.song_count, (long)g_timer_elapsed(stats.timer, NULL), (long)(pc_get_total_play_time(client->player_control) + 0.5), - stats.song_duration, - (long)db_get_mtime()); + stats.song_duration); + + if (db_is_simple()) + client_printf(client, + "db_update: %li\n", + (long)db_get_mtime()); + return 0; } diff --git a/src/database.h b/src/database.h index 20d132ea1..a22fea823 100644 --- a/src/database.h +++ b/src/database.h @@ -44,8 +44,18 @@ void db_finish(void); /** + * Check whether the default #SimpleDatabasePlugin is used. This + * allows using db_get_root(), db_save(), db_get_mtime() and + * db_exists(). + */ +bool +db_is_simple(void); + +/** * Returns the root directory object. Returns NULL if there is no * configured music directory. + * + * May only be used if db_is_simple() returns true. */ gcc_pure struct directory * @@ -64,18 +74,26 @@ gcc_pure struct song * db_get_song(const char *file); +/** + * May only be used if db_is_simple() returns true. + */ bool db_save(GError **error_r); bool db_load(GError **error); +/** + * May only be used if db_is_simple() returns true. + */ gcc_pure time_t db_get_mtime(void); /** * Returns true if there is a valid database file on the disk. + * + * May only be used if db_is_simple() returns true. */ gcc_pure static inline bool diff --git a/src/update.c b/src/update.c index 12eec40c4..ef4dfe749 100644 --- a/src/update.c +++ b/src/update.c @@ -118,7 +118,7 @@ update_enqueue(const char *path, bool _discard) { assert(g_thread_self() == main_task); - if (!mapper_has_music_directory()) + if (!db_is_simple() || !mapper_has_music_directory()) return 0; if (progress != UPDATE_PROGRESS_IDLE) { |