From d2cc5ce58e875a28742ab2fb1707e195b7fc1e34 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Mon, 17 Jan 2011 22:28:36 +0000 Subject: Fix player becoming unresponsive on Stop / Pause in some cases. Fix for FS#11856: In tagtree_buffer_event, do not wait for database to come online as that may never happen. Rather, wait until it either has come online or has decided that this will never happen. Added a new function to tagcache.c to export this information. Flyspray: FS#11865 Author: Michael Hohmuth git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29081 a1c6a512-1295-4272-9138-f99709370657 --- apps/tagcache.c | 4 ++++ apps/tagcache.h | 1 + apps/tagtree.c | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'apps') diff --git a/apps/tagcache.c b/apps/tagcache.c index b3a16a3c42..50c6253522 100644 --- a/apps/tagcache.c +++ b/apps/tagcache.c @@ -4746,6 +4746,10 @@ bool tagcache_is_initialized(void) { return tc_stat.initialized; } +bool tagcache_is_fully_initialized(void) +{ + return tc_stat.readyvalid; +} bool tagcache_is_usable(void) { return tc_stat.initialized && tc_stat.ready; diff --git a/apps/tagcache.h b/apps/tagcache.h index 4fffccae2f..8c09063fb9 100644 --- a/apps/tagcache.h +++ b/apps/tagcache.h @@ -247,6 +247,7 @@ void tagcache_unload_ramcache(void); #endif void tagcache_init(void) INIT_ATTR; bool tagcache_is_initialized(void); +bool tagcache_is_fully_initialized(void); bool tagcache_is_usable(void); void tagcache_start_scan(void); void tagcache_stop_scan(void); diff --git a/apps/tagtree.c b/apps/tagtree.c index 4673af38cf..fa88a5941b 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -659,7 +659,7 @@ static void tagtree_buffer_event(void *data) logf("be:%s", id3->path); - while (! tagcache_is_usable()) + while (! tagcache_is_fully_initialized()) yield(); if (!tagcache_find_index(&tcs, id3->path)) -- cgit v1.2.3