diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp
index 036c276..c17fdb5 100644
--- a/mythtv/libs/libmythtv/tv_play.cpp
+++ b/mythtv/libs/libmythtv/tv_play.cpp
@@ -3477,6 +3477,20 @@ bool TV::eventFilter(QObject *o, QEvent *e)
 /// This handles all standard events
 bool TV::event(QEvent *e)
 {
+    if (GetMythMainWindow()->IsExitingToMain())
+    {
+        PlayerContext *mctx = GetPlayerReadLock(0, __FILE__, __LINE__);
+        mctx->LockDeletePlayer(__FILE__, __LINE__);
+        if (mctx->player)
+        {
+            mctx->player->DisableEdit(true/*save changes*/);
+            PrepareToExitPlayer(mctx, __LINE__);
+            SetExitPlayer(true, true);
+        }
+        mctx->UnlockDeletePlayer(__FILE__, __LINE__);
+        ReturnPlayerLock(mctx);
+    }
+
     if (QEvent::Resize == e->type())
     {
         PlayerContext *mctx = GetPlayerReadLock(0, __FILE__, __LINE__);
diff --git a/mythtv/programs/mythfrontend/playbackbox.cpp b/mythtv/programs/mythfrontend/playbackbox.cpp
index dfac790..85a6e7d 100644
--- a/mythtv/programs/mythfrontend/playbackbox.cpp
+++ b/mythtv/programs/mythfrontend/playbackbox.cpp
@@ -2425,7 +2425,8 @@ bool PlaybackBox::Play(
 
     m_playingSomething = false;
 
-    if (inPlaylist && !m_playListPlay.empty())
+    if (inPlaylist && !m_playListPlay.empty() &&
+        !GetMythMainWindow()->IsExitingToMain())
     {
         QCoreApplication::postEvent(
             this, new MythEvent("PLAY_PLAYLIST"));
