diff options
-rw-r--r-- | apps/main_menu.c | 19 | ||||
-rw-r--r-- | apps/playlist.c | 7 | ||||
-rw-r--r-- | apps/playlist.h | 4 |
3 files changed, 25 insertions, 5 deletions
diff --git a/apps/main_menu.c b/apps/main_menu.c index e4bccd2720..0b4da978d8 100644 --- a/apps/main_menu.c +++ b/apps/main_menu.c @@ -29,6 +29,7 @@ #include "debug.h" #include "sprintf.h" #include <string.h> +#include "playlist.h" #ifdef HAVE_LCD_BITMAP #include "bmp.h" @@ -164,15 +165,31 @@ void scroll_speed(void) } } +void shuffle(void) +{ + lcd_clear_display(); + lcd_puts(0,0,"Shuffling..."); + lcd_update(); +#ifdef SIMULATOR + randomise_playlist( &playlist, time() ); +#else + randomise_playlist( &playlist, current_tick ); +#endif + lcd_puts(0,1,"Done."); + lcd_update(); + sleep(HZ); +} + void main_menu(void) { int m; enum { - Tetris, Screen_Saver, Version, Sound, Scroll + Tetris, Screen_Saver, Version, Sound, Scroll, Shuffle }; /* main menu */ struct menu_items items[] = { + { Shuffle, "Shuffle", shuffle }, { Sound, "Sound", sound_menu }, #ifdef HAVE_LCD_BITMAP { Tetris, "Tetris", tetris }, diff --git a/apps/playlist.c b/apps/playlist.c index 85d72dc57f..339964182b 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -30,8 +30,6 @@ playlist_info_t playlist; -int index_array[1000]; - char now_playing[256]; char* playlist_next(int type) @@ -138,9 +136,12 @@ void add_indices_to_playlist( playlist_info_t *playlist ) else if(store_index) { /* Store a new entry */ - DEBUGF("tune %d at position %d\n", playlist->amount, i+count); playlist->indices[ playlist->amount ] = i+count; playlist->amount++; + if ( playlist->amount >= MAX_PLAYLIST_SIZE ) { + close(fd); + return; + } store_index = 0; } diff --git a/apps/playlist.h b/apps/playlist.h index e02c0c5583..300c7aab65 100644 --- a/apps/playlist.h +++ b/apps/playlist.h @@ -22,7 +22,7 @@ /* playlist data */ -#define MAX_PLAYLIST_SIZE 1000 +#define MAX_PLAYLIST_SIZE 10000 typedef struct { char filename[256]; /* path name of m3u playlist on disk */ @@ -32,6 +32,8 @@ typedef struct int amount; /* number of tracks in the index */ } playlist_info_t; +extern playlist_info_t playlist; + void play_list(char *dir, char *file); char* playlist_next(int type); void randomise_playlist( playlist_info_t *playlist, unsigned int seed ); |