From aa26b5cbe3642a747da2c1c1583d69299299805d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Stenberg?= Date: Thu, 13 Jun 2002 13:53:22 +0000 Subject: [PATCH] Added playlist shuffle menu option git-svn-id: svn://svn.rockbox.org/rockbox/trunk@986 a1c6a512-1295-4272-9138-f99709370657 --- apps/main_menu.c | 19 ++++++++++++++++++- apps/playlist.c | 7 ++++--- 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 +#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 );