summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2007-04-07 17:48:51 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2007-04-07 17:48:51 +0000
commit7b1e827f0cf6930a61671c1c26aab8ed662b4134 (patch)
tree44627faf8f6b12bcbaf453763278748eb568628b /firmware
parent8e6e25c353e95e6566a7dfabbd2ca31b0b9db09e (diff)
downloadrockbox-7b1e827f0cf6930a61671c1c26aab8ed662b4134.tar.gz
rockbox-7b1e827f0cf6930a61671c1c26aab8ed662b4134.tar.bz2
rockbox-7b1e827f0cf6930a61671c1c26aab8ed662b4134.zip
Dircache fixes: Stop scanning properly if shutdown is initiated. Require user to re-enable dircache if initialization fails. Don't create statefile unless eeprom settings have been initialized.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13060 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/common/dircache.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c
index 023f00f848..e69ecf3d5c 100644
--- a/firmware/common/dircache.c
+++ b/firmware/common/dircache.c
@@ -405,7 +405,7 @@ static struct dircache_entry* dircache_get_entry(const char *path,
return cache_entry;
}
-#if 1
+#ifdef HAVE_EEPROM_SETTINGS
/**
* Function to load the internal cache structure from disk to initialize
* the dircache really fast and little disk access.
@@ -480,9 +480,6 @@ int dircache_save(void)
remove(DIRCACHE_FILE);
- while (thread_enabled)
- sleep(1);
-
if (!dircache_initialized)
return -1;
@@ -718,7 +715,7 @@ bool dircache_is_enabled(void)
*/
bool dircache_is_initializing(void)
{
- return dircache_initializing;
+ return dircache_initializing || thread_enabled;
}
/**
@@ -835,7 +832,7 @@ void dircache_copy_path(const struct dircache_entry *entry, char *buf, int size)
static int block_until_ready(void)
{
/* Block until dircache has been built. */
- while (!dircache_initialized && dircache_initializing)
+ while (!dircache_initialized && dircache_is_initializing())
sleep(1);
if (!dircache_initialized)
@@ -918,7 +915,7 @@ void dircache_bind(int fd, const char *path)
struct dircache_entry *entry;
/* Queue requests until dircache has been built. */
- if (!dircache_initialized && dircache_initializing)
+ if (!dircache_initialized && dircache_is_initializing())
{
if (fdbind_idx >= MAX_PENDING_BINDINGS)
return ;