Index: libs/libmythtv/NuppelVideoPlayer.h
===================================================================
--- libs/libmythtv/NuppelVideoPlayer.h	(revision 23103)
+++ libs/libmythtv/NuppelVideoPlayer.h	(working copy)
@@ -493,6 +493,7 @@
 
     // Private edit stuff
     void SaveCutList(void);
+    void SaveCutListContinueEditing(void);
     void LoadCutList(void);
     void DisableEdit(void);
 
Index: libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- libs/libmythtv/NuppelVideoPlayer.cpp	(revision 23103)
+++ libs/libmythtv/NuppelVideoPlayer.cpp	(working copy)
@@ -5101,6 +5101,7 @@
                 osd->HideEditArrow(it.key(), *it);
 
             deleteMap.clear();
+            SaveCutListContinueEditing();
             UpdateEditSlider();
         }
         else if (action == "INVERTMAP")
@@ -5108,6 +5109,7 @@
             QMap<long long, int>::Iterator it;
             for (it = deleteMap.begin(); it != deleteMap.end(); ++it)
                 ReverseMark(it.key());
+            SaveCutListContinueEditing();
 
             UpdateEditSlider();
             UpdateTimeDisplay();
@@ -5129,6 +5131,7 @@
                     }
                 }
                 commBreakMapLock.unlock();
+                SaveCutListContinueEditing();
                 UpdateEditSlider();
                 UpdateTimeDisplay();
             }
@@ -5427,13 +5430,16 @@
         {
             case 1:
                 DeleteMark(deleteframe);
+                SaveCutListContinueEditing();
                 break;
             case 2:
                 DeleteMark(deleteframe);
                 AddMark(framesPlayed, type);
+                SaveCutListContinueEditing();
                 break;
             case 3:
                 ReverseMark(deleteframe);
+                SaveCutListContinueEditing();
                 break;
             case 4:
                 HandleSelect(true);
@@ -5448,9 +5454,11 @@
         {
             case 1:
                 AddMark(framesPlayed, MARK_CUT_END);
+                SaveCutListContinueEditing();
                 break;
             case 2:
                 AddMark(framesPlayed, MARK_CUT_START);
+                SaveCutListContinueEditing();
                 break;
             case 3: case 0: default:
                 break;
@@ -5607,6 +5615,16 @@
     return player_ctx->tvchain && player_ctx->tvchain->HasNext();
 }
 
+void NuppelVideoPlayer::SaveCutListContinueEditing(void)
+{
+    // Save a snapshot of the current cutlist without the cleanup that
+    // SaveCutList() does.  Namely, SaveCutList() removes redundant
+    // marks.
+    frm_dir_map_t original = deleteMap;
+    SaveCutList();
+    deleteMap = original;
+}
+
 void NuppelVideoPlayer::SaveCutList(void)
 {
     if (!player_ctx->playingInfo)
