diff options
-rw-r--r-- | apps/filetree.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/apps/filetree.c b/apps/filetree.c index 6a06fcd5ad..2f4c21dcfe 100644 --- a/apps/filetree.c +++ b/apps/filetree.c | |||
@@ -82,7 +82,12 @@ int ft_build_playlist(struct tree_context* c, int start_index) | |||
82 | 82 | ||
83 | tree_lock_cache(c); | 83 | tree_lock_cache(c); |
84 | struct entry *entries = tree_get_entries(c); | 84 | struct entry *entries = tree_get_entries(c); |
85 | 85 | bool exceeds_pl = false; | |
86 | if (c->filesindir > playlist->max_playlist_size) | ||
87 | { | ||
88 | exceeds_pl = true; | ||
89 | start_index = 0; | ||
90 | } | ||
86 | struct playlist_insert_context pl_context; | 91 | struct playlist_insert_context pl_context; |
87 | 92 | ||
88 | res = playlist_insert_context_create(playlist, &pl_context, | 93 | res = playlist_insert_context_create(playlist, &pl_context, |
@@ -92,6 +97,9 @@ int ft_build_playlist(struct tree_context* c, int start_index) | |||
92 | cpu_boost(true); | 97 | cpu_boost(true); |
93 | for(i = 0;i < c->filesindir;i++) | 98 | for(i = 0;i < c->filesindir;i++) |
94 | { | 99 | { |
100 | int item = i; | ||
101 | if (exceeds_pl) | ||
102 | item = (i + start) % c->filesindir; | ||
95 | #if 0 /*only needed if displaying progress */ | 103 | #if 0 /*only needed if displaying progress */ |
96 | /* user abort */ | 104 | /* user abort */ |
97 | if (action_userabort(TIMEOUT_NOBLOCK)) | 105 | if (action_userabort(TIMEOUT_NOBLOCK)) |
@@ -99,13 +107,13 @@ int ft_build_playlist(struct tree_context* c, int start_index) | |||
99 | break; | 107 | break; |
100 | } | 108 | } |
101 | #endif | 109 | #endif |
102 | if((entries[i].attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO) | 110 | if((entries[item].attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO) |
103 | { | 111 | { |
104 | res = playlist_insert_context_add(&pl_context, entries[i].name); | 112 | res = playlist_insert_context_add(&pl_context, entries[item].name); |
105 | if (res < 0) | 113 | if (res < 0) |
106 | break; | 114 | break; |
107 | } | 115 | } |
108 | else | 116 | else if (!exceeds_pl) |
109 | { | 117 | { |
110 | /* Adjust the start index when se skip non-MP3 entries */ | 118 | /* Adjust the start index when se skip non-MP3 entries */ |
111 | if(i < start) | 119 | if(i < start) |