Index: apps/playlist.c
===================================================================
--- apps/playlist.c	(revision 12454)
+++ apps/playlist.c	(working copy)
@@ -181,7 +181,8 @@
 static int check_subdir_for_music(char *dir, char *subdir);
 static int format_track_path(char *dest, char *src, int buf_length, int max,
                              char *dir);
-static void display_playlist_count(int count, const unsigned char *fmt);
+static void display_playlist_count(bool complete, int count,
+                                   const unsigned char *fmt);
 static void display_buffer_full(void);
 static int flush_cached_control(struct playlist_info* playlist);
 static int update_control(struct playlist_info* playlist,
@@ -774,7 +775,7 @@
         else
             count_str = str(LANG_PLAYLIST_INSERT_COUNT);
 
-        display_playlist_count(c->count, count_str);
+        display_playlist_count(false, c->count, count_str);
         
         if ((c->count) == PLAYLIST_DISPLAY_COUNT &&
             (audio_status() & AUDIO_STATUS_PLAY) &&
@@ -1650,9 +1651,10 @@
 
 /*
  * Display splash message showing progress of playlist/directory insertion or
- * save.
+ * save. If pause is true, wait for 2 seconds, otherwise return immediately.
  */
-static void display_playlist_count(int count, const unsigned char *fmt)
+static void display_playlist_count(bool pause, int count,
+                                   const unsigned char *fmt)
 {
     lcd_clear_display();
 
@@ -1663,7 +1665,7 @@
         lcd_setmargins(0, 0);
 #endif
 
-    gui_syncsplash(0, true, fmt, count,
+    gui_syncsplash(pause ? HZ*2 : 0, true, fmt, count,
 #if CONFIG_KEYPAD == PLAYER_PAD
                    str(LANG_STOP_ABORT)
 #else
@@ -2906,7 +2908,7 @@
     else
         count_str = str(LANG_PLAYLIST_INSERT_COUNT);
 
-    display_playlist_count(0, count_str);
+    display_playlist_count(false, 0, count_str);
 
     context.playlist = playlist;
     context.position = position;
@@ -2922,7 +2924,7 @@
 
     cpu_boost(false);
 
-    display_playlist_count(context.count, count_str);
+    display_playlist_count(false, context.count, count_str);
 
     if ((audio_status() & AUDIO_STATUS_PLAY) && playlist->started)
         audio_flush_and_reload_tracks();
@@ -2980,7 +2982,7 @@
     else
         count_str = str(LANG_PLAYLIST_INSERT_COUNT);
 
-    display_playlist_count(count, count_str);
+    display_playlist_count(false, count, count_str);
 
     if (position == PLAYLIST_REPLACE)
     {
@@ -3028,7 +3030,7 @@
             
             if ((count%PLAYLIST_DISPLAY_COUNT) == 0)
             {
-                display_playlist_count(count, count_str);
+                display_playlist_count(false, count, count_str);
 
                 if (count == PLAYLIST_DISPLAY_COUNT &&
                     (audio_status() & AUDIO_STATUS_PLAY) &&
@@ -3050,7 +3052,7 @@
 
     cpu_boost(false);
 
-    display_playlist_count(count, count_str);
+    display_playlist_count(true, count, count_str);
 
     if ((audio_status() & AUDIO_STATUS_PLAY) && playlist->started)
         audio_flush_and_reload_tracks();
@@ -3393,7 +3395,7 @@
         return -1;
     }
 
-    display_playlist_count(count, str(LANG_PLAYLIST_SAVE_COUNT));
+    display_playlist_count(false, count, str(LANG_PLAYLIST_SAVE_COUNT));
 
     cpu_boost(true);
 
@@ -3438,7 +3440,8 @@
             count++;
 
             if ((count % PLAYLIST_DISPLAY_COUNT) == 0)
-                display_playlist_count(count, str(LANG_PLAYLIST_SAVE_COUNT));
+                display_playlist_count(false, count,
+                                       str(LANG_PLAYLIST_SAVE_COUNT));
 
             yield();
         }
@@ -3446,7 +3449,7 @@
         index = (index+1)%playlist->amount;
     }
 
-    display_playlist_count(count, str(LANG_PLAYLIST_SAVE_COUNT));
+    display_playlist_count(false, count, str(LANG_PLAYLIST_SAVE_COUNT));
 
     close(fd);
 
