diff options
author | Björn Stenberg <bjorn@haxx.se> | 2005-01-18 22:50:47 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2005-01-18 22:50:47 +0000 |
commit | cdd79a35d40b314a723752cd40eb03ece79620b9 (patch) | |
tree | ff31772a603d41fc1f70ce84ea895493d1e82d14 | |
parent | 84c7d8802106266c94d0a30827dff418a2fcac6d (diff) | |
download | rockbox-cdd79a35d40b314a723752cd40eb03ece79620b9.tar.gz rockbox-cdd79a35d40b314a723752cd40eb03ece79620b9.zip |
Repaired broken resume
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5596 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/filetree.c | 9 | ||||
-rw-r--r-- | apps/filetree.h | 2 | ||||
-rw-r--r-- | apps/playlist.c | 6 | ||||
-rw-r--r-- | apps/tree.c | 6 |
4 files changed, 13 insertions, 10 deletions
diff --git a/apps/filetree.c b/apps/filetree.c index a46ffbb2bc..324266e64f 100644 --- a/apps/filetree.c +++ b/apps/filetree.c | |||
@@ -184,11 +184,16 @@ static int compare(const void* p1, const void* p2) | |||
184 | } | 184 | } |
185 | 185 | ||
186 | /* load and sort directory into dircache. returns NULL on failure. */ | 186 | /* load and sort directory into dircache. returns NULL on failure. */ |
187 | int ft_load(struct tree_context* c) | 187 | int ft_load(struct tree_context* c, const char* tempdir) |
188 | { | 188 | { |
189 | int i; | 189 | int i; |
190 | int name_buffer_used = 0; | 190 | int name_buffer_used = 0; |
191 | DIR *dir = opendir(c->currdir); | 191 | DIR *dir; |
192 | |||
193 | if (tempdir) | ||
194 | dir = opendir(tempdir); | ||
195 | else | ||
196 | dir = opendir(c->currdir); | ||
192 | if(!dir) | 197 | if(!dir) |
193 | return -1; /* not a directory */ | 198 | return -1; /* not a directory */ |
194 | 199 | ||
diff --git a/apps/filetree.h b/apps/filetree.h index 143b75ad66..cdcdfca261 100644 --- a/apps/filetree.h +++ b/apps/filetree.h | |||
@@ -20,7 +20,7 @@ | |||
20 | #define FILETREE_H | 20 | #define FILETREE_H |
21 | #include "tree.h" | 21 | #include "tree.h" |
22 | 22 | ||
23 | int ft_load(struct tree_context* c); | 23 | int ft_load(struct tree_context* c, const char* tempdir); |
24 | int ft_play_filenumber(int pos, int attr); | 24 | int ft_play_filenumber(int pos, int attr); |
25 | int ft_play_dirname(int start_index); | 25 | int ft_play_dirname(int start_index); |
26 | void ft_play_filename(char *dir, char *file); | 26 | void ft_play_filename(char *dir, char *file); |
diff --git a/apps/playlist.c b/apps/playlist.c index 4506ec5f54..651a5afeea 100644 --- a/apps/playlist.c +++ b/apps/playlist.c | |||
@@ -544,8 +544,7 @@ static int add_directory_to_playlist(struct playlist_info* playlist, | |||
544 | 544 | ||
545 | /* use the tree browser dircache to load files */ | 545 | /* use the tree browser dircache to load files */ |
546 | global_settings.dirfilter = SHOW_ALL; | 546 | global_settings.dirfilter = SHOW_ALL; |
547 | strncpy(tc->currdir, dirname, sizeof(tc->currdir)); | 547 | num_files = ft_load(tc, dirname); |
548 | num_files = ft_load(tc); | ||
549 | files = (struct entry*) tc->dircache; | 548 | files = (struct entry*) tc->dircache; |
550 | 549 | ||
551 | if(!num_files) | 550 | if(!num_files) |
@@ -584,8 +583,7 @@ static int add_directory_to_playlist(struct playlist_info* playlist, | |||
584 | break; | 583 | break; |
585 | 584 | ||
586 | /* we now need to reload our current directory */ | 585 | /* we now need to reload our current directory */ |
587 | strncpy(tc->currdir, dirname, sizeof(tc->currdir)); | 586 | num_files = ft_load(tc, dirname); |
588 | num_files = ft_load(tc); | ||
589 | files = (struct entry*) tc->dircache; | 587 | files = (struct entry*) tc->dircache; |
590 | if (!num_files) | 588 | if (!num_files) |
591 | { | 589 | { |
diff --git a/apps/tree.c b/apps/tree.c index 2ba4585047..e4c6110040 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -279,7 +279,7 @@ static int showdir(void) | |||
279 | } | 279 | } |
280 | else { | 280 | else { |
281 | if (strncmp(tc.currdir, lastdir, sizeof(lastdir)) || reload_dir) { | 281 | if (strncmp(tc.currdir, lastdir, sizeof(lastdir)) || reload_dir) { |
282 | if (ft_load(&tc) < 0) | 282 | if (ft_load(&tc, NULL) < 0) |
283 | return -1; | 283 | return -1; |
284 | strcpy(lastdir, tc.currdir); | 284 | strcpy(lastdir, tc.currdir); |
285 | newdir = true; | 285 | newdir = true; |
@@ -499,7 +499,7 @@ static bool ask_resume(bool ask_once) | |||
499 | void resume_directory(const char *dir) | 499 | void resume_directory(const char *dir) |
500 | { | 500 | { |
501 | strcpy(tc.currdir, dir); | 501 | strcpy(tc.currdir, dir); |
502 | if (!ft_load(&tc)) | 502 | if (ft_load(&tc, NULL) < 0) |
503 | return; | 503 | return; |
504 | lastdir[0] = 0; | 504 | lastdir[0] = 0; |
505 | 505 | ||
@@ -602,7 +602,7 @@ static bool check_changed_id3mode(bool currmode) | |||
602 | db_load(&tc); | 602 | db_load(&tc); |
603 | } | 603 | } |
604 | else | 604 | else |
605 | ft_load(&tc); | 605 | ft_load(&tc, NULL); |
606 | } | 606 | } |
607 | return currmode; | 607 | return currmode; |
608 | } | 608 | } |