Index: NuppelVideoPlayer.cpp
===================================================================
--- NuppelVideoPlayer.cpp	(revision 11622)
+++ NuppelVideoPlayer.cpp	(working copy)
@@ -3388,7 +3388,13 @@
         {
             ++deleteIter;
             if (deleteIter.key() == totalFrames)
-                eof = true;
+            {
+                if (!(gContext->GetNumSetting("EndofRecordingExitPrompt") == 1 &&
+                    m_tv && m_tv->GetState() == kState_WatchingPreRecorded))
+                {
+                    eof = true;
+                }
+            }
             else
             {
                 PauseVideo();
@@ -4027,7 +4033,19 @@
   
     if (m_tv && m_tv->GetState() == kState_WatchingPreRecorded)
     {
-        framesLeft = totalFrames - framesRead;
+        if (!editmode && hasdeletetable && IsInDelete(framesRead))
+        {
+            QMapConstIterator<long long, int> it = deleteMap.end();
+            --it;
+            if (it.key() == totalFrames)
+            {
+                --it;
+                if (framesRead >= it.key())
+                    return true;
+            }
+        }
+        else
+            framesLeft = totalFrames - framesRead;
         return (framesLeft < margin);
     }
     
@@ -4054,6 +4072,17 @@
     long long number = fftime - 1;
     long long desiredFrame = framesPlayed + number;
 
+    if (!editmode && hasdeletetable && IsInDelete(desiredFrame))
+    {
+        QMap<long long, int>::Iterator it = deleteMap.end();
+        --it;
+        if ( it.key() == totalFrames)
+        {
+            --it;
+            if (desiredFrame > it.key())
+                desiredFrame = it.key();
+        }
+    }
     if (paused && !editmode)
         GetDecoder()->setExactSeeks(true);
     GetDecoder()->DoFastForward(desiredFrame);
Index: tv_play.cpp
===================================================================
--- tv_play.cpp	(revision 11622)
+++ tv_play.cpp	(working copy)
@@ -1785,11 +1799,8 @@
                 ClearOSD();
 
                 requestDelete = false;
-                if (activenvp->IsNearEnd())
-                {
-                    exitPlayer  = true;
-                    wantsToQuit = true;
-                }
+                exitPlayer  = true;
+                wantsToQuit = true;
             }
         }
         

