summaryrefslogtreecommitdiff
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.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,
405 return cache_entry; 405 return cache_entry;
406} 406}
407 407
408#if 1 408#ifdef HAVE_EEPROM_SETTINGS
409/** 409/**
410 * Function to load the internal cache structure from disk to initialize 410 * Function to load the internal cache structure from disk to initialize
411 * the dircache really fast and little disk access. 411 * the dircache really fast and little disk access.
@@ -480,9 +480,6 @@ int dircache_save(void)
480 480
481 remove(DIRCACHE_FILE); 481 remove(DIRCACHE_FILE);
482 482
483 while (thread_enabled)
484 sleep(1);
485
486 if (!dircache_initialized) 483 if (!dircache_initialized)
487 return -1; 484 return -1;
488 485
@@ -718,7 +715,7 @@ bool dircache_is_enabled(void)
718 */ 715 */
719bool dircache_is_initializing(void) 716bool dircache_is_initializing(void)
720{ 717{
721 return dircache_initializing; 718 return dircache_initializing || thread_enabled;
722} 719}
723 720
724/** 721/**
@@ -835,7 +832,7 @@ void dircache_copy_path(const struct dircache_entry *entry, char *buf, int size)
835static int block_until_ready(void) 832static int block_until_ready(void)
836{ 833{
837 /* Block until dircache has been built. */ 834 /* Block until dircache has been built. */
838 while (!dircache_initialized && dircache_initializing) 835 while (!dircache_initialized && dircache_is_initializing())
839 sleep(1); 836 sleep(1);
840 837
841 if (!dircache_initialized) 838 if (!dircache_initialized)
@@ -918,7 +915,7 @@ void dircache_bind(int fd, const char *path)
918 struct dircache_entry *entry; 915 struct dircache_entry *entry;
919 916
920 /* Queue requests until dircache has been built. */ 917 /* Queue requests until dircache has been built. */
921 if (!dircache_initialized && dircache_initializing) 918 if (!dircache_initialized && dircache_is_initializing())
922 { 919 {
923 if (fdbind_idx >= MAX_PENDING_BINDINGS) 920 if (fdbind_idx >= MAX_PENDING_BINDINGS)
924 return ; 921 return ;