forked from len0rd/rockbox
Fix a bug in playlist viewer's list handling, causing superfluous redraws and
potentially leading to the wrong track being selected. The playlist viewer should perform a bit better now. I always felt it was slower than the otehr lists. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28131 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
1c80a1f2f0
commit
aa01ee314e
1 changed files with 20 additions and 15 deletions
|
|
@ -653,19 +653,22 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename)
|
||||||
|
|
||||||
/* Timeout so we can determine if play status has changed */
|
/* Timeout so we can determine if play status has changed */
|
||||||
button = get_action(CONTEXT_TREE,HZ/2);
|
button = get_action(CONTEXT_TREE,HZ/2);
|
||||||
if( (gui_synclist_do_button(&playlist_lists, &button,LIST_WRAP_UNLESS_HELD)) )
|
bool res = gui_synclist_do_button(&playlist_lists,
|
||||||
{
|
&button,
|
||||||
|
LIST_WRAP_UNLESS_HELD);
|
||||||
viewer.selected_track=gui_synclist_get_sel_pos(&playlist_lists);
|
viewer.selected_track=gui_synclist_get_sel_pos(&playlist_lists);
|
||||||
if(playlist_buffer_needs_reload(&viewer.buffer,
|
|
||||||
viewer.selected_track))
|
if (res)
|
||||||
|
{
|
||||||
|
bool reload = playlist_buffer_needs_reload(&viewer.buffer,
|
||||||
|
viewer.selected_track);
|
||||||
|
if(reload)
|
||||||
|
{
|
||||||
playlist_buffer_load_entries_screen(&viewer.buffer,
|
playlist_buffer_load_entries_screen(&viewer.buffer,
|
||||||
button==ACTION_STD_NEXT?
|
button == ACTION_STD_NEXT ? FORWARD : BACKWARD);
|
||||||
FORWARD
|
|
||||||
:
|
|
||||||
BACKWARD
|
|
||||||
);
|
|
||||||
gui_synclist_draw(&playlist_lists);
|
gui_synclist_draw(&playlist_lists);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
switch (button)
|
switch (button)
|
||||||
{
|
{
|
||||||
case ACTION_TREE_WPS:
|
case ACTION_TREE_WPS:
|
||||||
|
|
@ -688,6 +691,7 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename)
|
||||||
struct playlist_entry * current_track =
|
struct playlist_entry * current_track =
|
||||||
playlist_buffer_get_track(&viewer.buffer,
|
playlist_buffer_get_track(&viewer.buffer,
|
||||||
viewer.selected_track);
|
viewer.selected_track);
|
||||||
|
|
||||||
if (viewer.moving_track >= 0)
|
if (viewer.moving_track >= 0)
|
||||||
{
|
{
|
||||||
/* Move track */
|
/* Move track */
|
||||||
|
|
@ -847,10 +851,11 @@ bool search_playlist(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACTION_STD_OK:
|
case ACTION_STD_OK:
|
||||||
playlist_start(
|
{
|
||||||
found_indicies[gui_synclist_get_sel_pos(&playlist_lists)]
|
int sel = gui_synclist_get_sel_pos(&playlist_lists);
|
||||||
,0);
|
playlist_start(found_indicies[sel] ,0);
|
||||||
exit = 1;
|
exit = 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue