Index: apps/playlist.c
===================================================================
--- apps/playlist.c	(revision 12454)
+++ apps/playlist.c	(working copy)
@@ -134,6 +134,7 @@
 #define PLAYLIST_SKIPPED                0x10000000
 
 #define PLAYLIST_DISPLAY_COUNT          10
+#define PLAYLIST_DISPLAY_THRESHOLD      50
 
 struct directory_search_context {
     struct playlist_info* playlist;
@@ -182,6 +183,7 @@
 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_completion(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,
@@ -1673,6 +1675,24 @@
 }
 
 /*
+ * Display splash message showing completion of playlist/directory insertion or
+ * save.
+ */
+static void display_playlist_completion(int count, const unsigned char *fmt)
+{
+    lcd_clear_display();
+
+#ifdef HAVE_LCD_BITMAP
+    if(global_settings.statusbar)
+        lcd_setmargins(0, STATUSBAR_HEIGHT);
+    else
+        lcd_setmargins(0, 0);
+#endif
+
+    gui_syncsplash(HZ*2, true, fmt, count);
+}
+
+/*
  * Display buffer full message
  */
 static void display_buffer_full(void)
@@ -2945,10 +2965,12 @@
     char *temp_ptr;
     char *dir;
     unsigned char *count_str;
+    unsigned char *comp_str;
     char temp_buf[MAX_PATH+1];
     char trackname[MAX_PATH+1];
     int count = 0;
     int result = 0;
+    int playlist_display_step = 1;
 
     if (!playlist)
         playlist = &current_playlist;
@@ -2976,9 +2998,15 @@
         dir = "/";
 
     if (queue)
+    {
         count_str = str(LANG_PLAYLIST_QUEUE_COUNT);
+        comp_str = str(LANG_PLAYLIST_QUEUE_COUNT_COMP);
+    }
     else
+    {
         count_str = str(LANG_PLAYLIST_INSERT_COUNT);
+        comp_str = str(LANG_PLAYLIST_INSERT_COUNT_COMP);
+    }
 
     display_playlist_count(count, count_str);
 
@@ -3025,12 +3053,14 @@
                 position = insert_pos + 1;
 
             count++;
-            
-            if ((count%PLAYLIST_DISPLAY_COUNT) == 0)
+            if (count == PLAYLIST_DISPLAY_THRESHOLD + 1)
+                playlist_display_step = PLAYLIST_DISPLAY_COUNT;
+
+            if ((count%playlist_display_step) == 0)
             {
                 display_playlist_count(count, count_str);
 
-                if (count == PLAYLIST_DISPLAY_COUNT &&
+                if (count == playlist_display_step &&
                     (audio_status() & AUDIO_STATUS_PLAY) &&
                     playlist->started)
                     audio_flush_and_reload_tracks();
@@ -3050,7 +3080,7 @@
 
     cpu_boost(false);
 
-    display_playlist_count(count, count_str);
+    display_playlist_completion(count, comp_str);
 
     if ((audio_status() & AUDIO_STATUS_PLAY) && playlist->started)
         audio_flush_and_reload_tracks();
Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang	(revision 12454)
+++ apps/lang/english.lang	(working copy)
@@ -7339,6 +7339,34 @@
   </voice>
 </phrase>
 <phrase>
+  id: LANG_PLAYLIST_INSERT_COUNT_COMP
+  desc: splash number of tracks inserted at completion
+  user:
+  <source>
+    *: "Inserted %d tracks"
+  </source>
+  <dest>
+    *: "Inserted %d tracks"
+  </dest>
+  <voice>
+    *: ""
+  </voice>
+</phrase>
+<phrase>
+  id: LANG_PLAYLIST_QUEUE_COUNT_COMP
+  desc: splash number of tracks queued at completion
+  user:
+  <source>
+    *: "Queued %d tracks"
+  </source>
+  <dest>
+    *: "Queued %d tracks"
+  </dest>
+  <voice>
+    *: ""
+  </voice>
+</phrase>
+<phrase>
   id: LANG_PLAYLIST_SAVE_COUNT
   desc: splash number of tracks saved
   user:
