Index: libs/libmythtv/tv_play.h
===================================================================
--- libs/libmythtv/tv_play.h	(revision 12569)
+++ libs/libmythtv/tv_play.h	(working copy)
@@ -164,6 +164,9 @@
     bool IsErrored(void)         const { return errored; }
     /// true if dialog is either videoplayexit, playexit or askdelete dialog
     bool IsVideoExitDialog(void);
+    /// true if NVP is near the end
+    bool IsNearEnd(void) { return isnearend; }
+
     
     // Other queries
     int GetLastRecorderNum(void) const;
@@ -528,6 +531,7 @@
     
     bool         inPlaylist; ///< show is part of a playlist
     bool         underNetworkControl; ///< initial show started via by the network control interface
+    bool         isnearend;
 
     // Recording to play next, after LiveTV
     ProgramInfo *pseudoLiveTVRec[2];
Index: libs/libmythtv/tv_play.cpp
===================================================================
--- libs/libmythtv/tv_play.cpp	(revision 12569)
+++ libs/libmythtv/tv_play.cpp	(working copy)
@@ -461,6 +522,7 @@
       playbackinfo(NULL), playbackLen(0),
       lastProgram(NULL), jumpToProgram(false),
       inPlaylist(false), underNetworkControl(false),
+      isnearend(false),
       // Video Players
       nvp(NULL), pipnvp(NULL), activenvp(NULL),
       // Remote Encoders
@@ -1773,24 +1835,28 @@
                     nvp->SetWatched();
                 VERBOSE(VB_PLAYBACK, LOC_ERR + "nvp->IsPlaying() timed out");
             }
+
+            if (nvp->IsNearEnd())
+                isnearend = true;
+            else
+                isnearend = false;
+            
+            if (isnearend && IsEmbedding() && !paused)
+                DoPause();
         }
 
         if (!endOfRecording)
         {
-
-           
-            if (jumped_back && !nvp->IsNearEnd())
+            if (jumped_back && !isnearend)
                 jumped_back = false;
             
             if (internalState == kState_WatchingPreRecorded && !inPlaylist &&
-                dialogname == "" && nvp->IsNearEnd() && !exitPlayer && !underNetworkControl &&
+                dialogname == "" && isnearend && !exitPlayer 
+                && !underNetworkControl &&
                 (gContext->GetNumSetting("EndOfRecordingExitPrompt") == 1) &&
-                !jumped_back && !editmode)
+                !jumped_back && !editmode && !IsEmbedding() && !paused)
             {
-                if (IsEmbedding())
-                    StopEmbeddingOutput();
-                else
-                    PromptDeleteRecording(tr("End Of Recording"));
+                PromptDeleteRecording(tr("End Of Recording"));
             }
             
                 
@@ -2315,7 +2381,7 @@
                 else
                     DoSeek(-rewtime, tr("Skip Back"));
             }
-            else if (action == "ESCAPE" && activenvp->IsNearEnd())
+            else if (action == "ESCAPE" && isnearend)
             {
                 requestDelete = false;
                 exitPlayer    = true;
@@ -2406,7 +2472,7 @@
                             wantsToQuit = true;
                             break;
                         default:
-                            if (activenvp->IsNearEnd())
+                            if (isnearend)
                             {
                                 exitPlayer = true;
                                 wantsToQuit = true;
Index: programs/mythfrontend/playbackbox.cpp
===================================================================
--- programs/mythfrontend/playbackbox.cpp	(revision 12569)
+++ programs/mythfrontend/playbackbox.cpp	(working copy)
@@ -3705,12 +3705,6 @@
 
 void PlaybackBox::timeout(void)
 {
-    if (m_player && !m_player->IsEmbedding() &&
-        playbackVideoContainer)
-    {
-        exitWin();
-    }
-
     if (titleList.count() <= 1)
         return;
 
 

