Fix FS #8019, caused by memcpy() being called before "rb = api;". Be cautious of this one, it'll certainly bite us again. Gut out all the silly file selection stuff, this plugin is already a viewer. Note that mp3_encoder still is buggy and needs more work (or we need a transcoder plugin...).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15372 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
c436657571
commit
9626948642
1 changed files with 10 additions and 79 deletions
|
@ -24,8 +24,6 @@ MEM_FUNCTION_WRAPPERS(rb);
|
|||
#define SAMPL2 576
|
||||
#define SBLIMIT 32
|
||||
#define HTN 16
|
||||
#define memcpy rb->memcpy
|
||||
#define memset rb->memset
|
||||
#define putlong(c, s) if(s+sz <= 32) { cc = (cc << s) | c; sz+= s; } \
|
||||
else { putbits(cc, sz); cc = c; sz = s; }
|
||||
|
||||
|
@ -2278,43 +2276,8 @@ void compress(void)
|
|||
|
||||
|
||||
int num_file;
|
||||
char filename[12][80];
|
||||
char mp3_name[80];
|
||||
|
||||
void read_wav_files(char *dirname)
|
||||
{
|
||||
DIR *dir = rb->opendir(dirname);
|
||||
|
||||
if(!dir)
|
||||
return;
|
||||
|
||||
while(true)
|
||||
{
|
||||
struct dirent *entry;
|
||||
|
||||
entry = rb->readdir(dir);
|
||||
if(!entry)
|
||||
break;
|
||||
|
||||
if( !(entry->attribute & ATTR_DIRECTORY) )
|
||||
{
|
||||
int slen = rb->strlen(entry->d_name);
|
||||
|
||||
/* add all wav audio files */
|
||||
if(!rb->strcasecmp(entry->d_name + slen - 4, ".wav"))
|
||||
{
|
||||
if(num_file >= 12)
|
||||
break;
|
||||
|
||||
rb->strncpy(filename[num_file], dirname, 79);
|
||||
slen = rb->strlen(filename[num_file]);
|
||||
rb->strncpy(filename[num_file++] + slen, entry->d_name, 79);
|
||||
}
|
||||
}
|
||||
}
|
||||
rb->closedir(dir);
|
||||
}
|
||||
|
||||
void get_mp3_filename(char *wav_name)
|
||||
{
|
||||
int slen = rb->strlen(wav_name);
|
||||
|
@ -2358,20 +2321,24 @@ void get_mp3_filename(char *wav_name)
|
|||
|
||||
enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||
{
|
||||
int fil, sfil, nfil; /* for file selection */
|
||||
int rat, srat, nrat; /* for rate selection */
|
||||
int cont = 1, butt;
|
||||
long tim = 0;
|
||||
char stg[40];
|
||||
char* bstrg[] = {"64","80","96","112","128","160","192","224","256","320"};
|
||||
int brate[] = { 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 };
|
||||
static const char* bstrg[] = {
|
||||
"64", "80", "96", "112", "128", "160", "192", "224", "256", "320"
|
||||
};
|
||||
static const int brate[] = {
|
||||
64, 80, 96, 112, 128, 160, 192, 224, 256, 320
|
||||
};
|
||||
|
||||
(void)parameter;
|
||||
if (parameter == NULL)
|
||||
return PLUGIN_ERROR;
|
||||
|
||||
PLUGIN_IRAM_INIT(api)
|
||||
|
||||
#ifdef CPU_COLDFIRE
|
||||
asm volatile ("move.l #0, %macsr"); /* integer mode */
|
||||
coldfire_set_macsr(0); /* integer mode */
|
||||
#endif
|
||||
|
||||
rb = api;
|
||||
|
@ -2382,42 +2349,6 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
|||
#endif
|
||||
rb->button_clear_queue();
|
||||
|
||||
/* check 'viewer' or 'plugin' call */
|
||||
if(parameter == NULL || *(char*)parameter == 0)
|
||||
{
|
||||
read_wav_files("/");
|
||||
read_wav_files(REC_BASE_DIR"/");
|
||||
|
||||
nfil = num_file - 1;
|
||||
sfil = 0; /* set first file as default */
|
||||
|
||||
while(cont && (butt = rb->button_get_w_tmo(HZ/10)) != MP3ENC_SELECT)
|
||||
{
|
||||
switch(butt)
|
||||
{
|
||||
case MP3ENC_DONE: cont = 0; break;
|
||||
case MP3ENC_PREV: if(sfil > 0 ) sfil--; break;
|
||||
case MP3ENC_NEXT: if(sfil < nfil) sfil++; break;
|
||||
}
|
||||
|
||||
rb->lcd_clear_display();
|
||||
rb->lcd_putsxy(2, 2, "-- Select WAV-File --");
|
||||
|
||||
for(fil=0; fil<=nfil; fil++)
|
||||
rb->lcd_putsxy(2, 12 + fil*8, filename[fil]);
|
||||
|
||||
rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
|
||||
rb->lcd_fillrect(0, 12 + sfil*8, 127, 8);
|
||||
rb->lcd_set_drawmode(DRMODE_SOLID);
|
||||
rb->lcd_update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sfil = 0;
|
||||
rb->strncpy(filename[0], (char*)parameter, 79);
|
||||
}
|
||||
|
||||
nrat = 9;
|
||||
srat = 4; /* set 128kBit as default */
|
||||
|
||||
|
@ -2441,7 +2372,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
|||
rb->lcd_update();
|
||||
}
|
||||
|
||||
wav_filename = filename[sfil];
|
||||
wav_filename = parameter;
|
||||
|
||||
if(cont)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue