forked from len0rd/rockbox
[Feature] filetree fallback to loading a playlist from disk
give user option to load playlist from disk when namebuffer is too small -- max_playlist size still limits the total entries but filename length won't stop them from playing the directory Change-Id: I1787689417661ea670a211f575f2c52e84465869
This commit is contained in:
parent
593103cd8b
commit
282a54b23c
2 changed files with 26 additions and 4 deletions
|
|
@ -72,6 +72,7 @@ static int strnatcasecmp_n(const char *a, const char *b, size_t n)
|
||||||
int ft_build_playlist(struct tree_context* c, int start_index)
|
int ft_build_playlist(struct tree_context* c, int start_index)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
int res = 0;
|
||||||
int start=start_index;
|
int start=start_index;
|
||||||
|
|
||||||
tree_lock_cache(c);
|
tree_lock_cache(c);
|
||||||
|
|
@ -81,7 +82,8 @@ int ft_build_playlist(struct tree_context* c, int start_index)
|
||||||
{
|
{
|
||||||
if((entries[i].attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO)
|
if((entries[i].attr & FILE_ATTR_MASK) == FILE_ATTR_AUDIO)
|
||||||
{
|
{
|
||||||
if (playlist_add(entries[i].name) < 0)
|
res = playlist_add(entries[i].name);
|
||||||
|
if (res < 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -92,7 +94,22 @@ int ft_build_playlist(struct tree_context* c, int start_index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tree_unlock_cache(c);
|
if (res == -2) /* name buffer is full store to disk? */
|
||||||
|
{
|
||||||
|
if (yesno_pop(ID2P(LANG_CATALOG_ADD_TO_NEW)))
|
||||||
|
{
|
||||||
|
char playlist_dir[MAX_PATH];
|
||||||
|
strmemccpy(playlist_dir, c->currdir, sizeof(playlist_dir));
|
||||||
|
tree_unlock_cache(c);
|
||||||
|
if (playlist_create(playlist_dir, "dynamic.m3u8") >= 0)
|
||||||
|
{
|
||||||
|
playlist_insert_directory(NULL, playlist_dir,
|
||||||
|
PLAYLIST_REPLACE, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tree_unlock_cache(c);
|
||||||
|
|
||||||
return start_index;
|
return start_index;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2082,8 +2082,13 @@ int playlist_add(const char *filename)
|
||||||
struct playlist_info* playlist = ¤t_playlist;
|
struct playlist_info* playlist = ¤t_playlist;
|
||||||
int len = strlen(filename);
|
int len = strlen(filename);
|
||||||
|
|
||||||
if((len+1 > playlist->buffer_size - playlist->buffer_end_pos) ||
|
if(len+1 > playlist->buffer_size - playlist->buffer_end_pos)
|
||||||
(playlist->amount >= playlist->max_playlist_size))
|
{
|
||||||
|
notify_buffer_full();
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(playlist->amount >= playlist->max_playlist_size)
|
||||||
{
|
{
|
||||||
notify_buffer_full();
|
notify_buffer_full();
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue