summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-03-04 22:32:25 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-03-04 22:32:25 +0000
commitf0d97ea92df70425c5cb385c2bb69013f5538abd (patch)
treed58a446b94a7b29add31994434a04639ff25c829
parent6472ecfc2eb9fcdd12de57f1ee8689ed924d1692 (diff)
downloadrockbox-f0d97ea92df70425c5cb385c2bb69013f5538abd.tar.gz
rockbox-f0d97ea92df70425c5cb385c2bb69013f5538abd.zip
Fixed a crash in the playlist creation, plus revised the output during the creation
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8905 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/tree.c49
1 files changed, 27 insertions, 22 deletions
diff --git a/apps/tree.c b/apps/tree.c
index ca7b83ef3f..7aa0f3208b 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -1008,6 +1008,7 @@ static bool dirbrowse(void)
1008} 1008}
1009 1009
1010static int plsize = 0; 1010static int plsize = 0;
1011static long pltick;
1011static bool add_dir(char* dirname, int len, int fd) 1012static bool add_dir(char* dirname, int len, int fd)
1012{ 1013{
1013 bool abort = false; 1014 bool abort = false;
@@ -1056,10 +1057,9 @@ static bool add_dir(char* dirname, int len, int fd)
1056 cp++; 1057 cp++;
1057 1058
1058 /* add all supported audio files to playlists */ 1059 /* add all supported audio files to playlists */
1059 for (i=0; i < sizeof(filetypes); i++) { 1060 for (i=0; i < sizeof(filetypes)/sizeof(struct filetype); i++) {
1060 if (filetypes[i].tree_attr == TREE_ATTR_MPA) { 1061 if (filetypes[i].tree_attr == TREE_ATTR_MPA) {
1061 if (!strcasecmp(cp, filetypes[i].extension)) 1062 if (!strcasecmp(cp, filetypes[i].extension)) {
1062 {
1063 char buf[8]; 1063 char buf[8];
1064 int i; 1064 int i;
1065 write(fd, dirname, strlen(dirname)); 1065 write(fd, dirname, strlen(dirname));
@@ -1068,30 +1068,33 @@ static bool add_dir(char* dirname, int len, int fd)
1068 write(fd, "\n", 1); 1068 write(fd, "\n", 1);
1069 1069
1070 plsize++; 1070 plsize++;
1071 snprintf(buf, sizeof buf, "%d", plsize); 1071 if(TIME_AFTER(current_tick, pltick+HZ/4)) {
1072 pltick = current_tick;
1073
1074 snprintf(buf, sizeof buf, "%d", plsize);
1072#ifdef HAVE_LCD_BITMAP 1075#ifdef HAVE_LCD_BITMAP
1073 FOR_NB_SCREENS(i) 1076 FOR_NB_SCREENS(i)
1074 { 1077 {
1075 gui_textarea_clear(&screens[i]); 1078 screens[i].puts(0, 4, (unsigned char *)buf);
1076 screens[i].puts(0, 4, (unsigned char *)buf); 1079 gui_textarea_update(&screens[i]);
1077 } 1080 }
1078#else 1081#else
1079 x = 10; 1082 x = 10;
1080 if (plsize > 999) 1083 if (plsize > 999)
1081 x=7; 1084 x=7;
1082 else {
1083 if (plsize > 99)
1084 x=8;
1085 else { 1085 else {
1086 if (plsize > 9) 1086 if (plsize > 99)
1087 x=9; 1087 x=8;
1088 else {
1089 if (plsize > 9)
1090 x=9;
1091 }
1092 }
1093 FOR_NB_SCREENS(i) {
1094 screens[i].puts(x,0,buf);
1088 } 1095 }
1089 }
1090 FOR_NB_SCREENS(i) {
1091 screens[i].puts(x,0,buf);
1092 gui_textarea_update(&screens[i]);
1093 }
1094#endif 1096#endif
1097 }
1095 break; 1098 break;
1096 } 1099 }
1097 } 1100 }
@@ -1110,6 +1113,8 @@ bool create_playlist(void)
1110 int i; 1113 int i;
1111 char filename[MAX_PATH]; 1114 char filename[MAX_PATH];
1112 1115
1116 pltick = current_tick;
1117
1113 snprintf(filename, sizeof filename, "%s.m3u", 1118 snprintf(filename, sizeof filename, "%s.m3u",
1114 tc.currdir[1] ? tc.currdir : "/root"); 1119 tc.currdir[1] ? tc.currdir : "/root");
1115 FOR_NB_SCREENS(i) 1120 FOR_NB_SCREENS(i)