summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/onplay.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/apps/onplay.c b/apps/onplay.c
index 98b1270b89..5e7d1e0fe2 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -410,6 +410,7 @@ static int remove_dir(char* dirname, int len)
410 int result = 0; 410 int result = 0;
411 DIR* dir; 411 DIR* dir;
412 int dirlen = strlen(dirname); 412 int dirlen = strlen(dirname);
413 int i;
413 414
414 dir = opendir(dirname); 415 dir = opendir(dirname);
415 if (!dir) 416 if (!dir)
@@ -423,9 +424,12 @@ static int remove_dir(char* dirname, int len)
423 if (!entry) 424 if (!entry)
424 break; 425 break;
425 426
427 dirname[dirlen] ='\0';
428 FOR_NB_SCREENS(i)
429 screens[i].puts(0,1,dirname);
430
426 /* append name to current directory */ 431 /* append name to current directory */
427 snprintf(dirname+dirlen, len-dirlen, "/%s", entry->d_name); 432 snprintf(dirname+dirlen, len-dirlen, "/%s", entry->d_name);
428
429 if (entry->attribute & ATTR_DIRECTORY) 433 if (entry->attribute & ATTR_DIRECTORY)
430 { /* remove a subdirectory */ 434 { /* remove a subdirectory */
431 if (!strcmp((char *)entry->d_name, ".") || 435 if (!strcmp((char *)entry->d_name, ".") ||
@@ -433,18 +437,21 @@ static int remove_dir(char* dirname, int len)
433 continue; /* skip these */ 437 continue; /* skip these */
434 438
435 /* inform the user which dir we're deleting */ 439 /* inform the user which dir we're deleting */
436 lcd_puts(0,1,dirname); 440
437#ifdef HAVE_LCD_BITMAP
438 lcd_update();
439#endif
440 result = remove_dir(dirname, len); /* recursion */ 441 result = remove_dir(dirname, len); /* recursion */
441 if (result) 442 if (result)
442 break; /* or better continue, delete what we can? */ 443 break; /* or better continue, delete what we can? */
443 } 444 }
444 else 445 else
445 { /* remove a file */ 446 { /* remove a file */
447 FOR_NB_SCREENS(i)
448 screens[i].puts_scroll(0,2,entry->d_name);
446 result = remove(dirname); 449 result = remove(dirname);
447 } 450 }
451#ifdef HAVE_LCD_BITMAP
452 FOR_NB_SCREENS(i)
453 screens[i].update();
454#endif
448 if(ACTION_STD_CANCEL == get_action(CONTEXT_STD,TIMEOUT_NOBLOCK)) 455 if(ACTION_STD_CANCEL == get_action(CONTEXT_STD,TIMEOUT_NOBLOCK))
449 { 456 {
450 gui_syncsplash(HZ, true, str(LANG_MENU_SETTING_CANCEL)); 457 gui_syncsplash(HZ, true, str(LANG_MENU_SETTING_CANCEL));
@@ -485,8 +492,10 @@ static bool delete_handler(bool is_dir)
485 if (is_dir) 492 if (is_dir)
486 { 493 {
487 char pathname[MAX_PATH]; /* space to go deep */ 494 char pathname[MAX_PATH]; /* space to go deep */
495 cpu_boost(true);
488 strncpy(pathname, selected_file, sizeof pathname); 496 strncpy(pathname, selected_file, sizeof pathname);
489 res = remove_dir(pathname, sizeof(pathname)); 497 res = remove_dir(pathname, sizeof(pathname));
498 cpu_boost(false);
490 } 499 }
491 else 500 else
492 res = remove(selected_file); 501 res = remove(selected_file);