diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp
index 740b658b9f..3a4cae514e 100644
--- a/mythtv/libs/libmythtv/tv_play.cpp
+++ b/mythtv/libs/libmythtv/tv_play.cpp
@@ -9854,6 +9854,27 @@ void TV::customEvent(QEvent *e)
         ReturnOSDLock(mctx, osd);
         ReturnPlayerLock(mctx);
     }
+
+    if (message == "QAPP_SUSPENDED")
+    {
+        LOG(VB_GENERAL, LOG_NOTICE, "Suspending playback");
+        PlayerContext *ctx = GetPlayerReadLock(-1, __FILE__, __LINE__);
+        vector<bool> do_pause;
+        for (uint i = 0; i < m_player.size(); i++)
+            do_pause.push_back(true);
+        m_suspendedPause = DoSetPauseState(ctx, do_pause);
+        SetBookmark(ctx, false);
+        ReturnPlayerLock(ctx);
+    }
+
+    if (message == "QAPP_RESUMED")
+    {
+        LOG(VB_GENERAL, LOG_NOTICE, "Resuming playback");
+        PlayerContext *ctx = GetPlayerReadLock(-1, __FILE__, __LINE__);
+        SetBookmark(ctx, true);
+        DoSetPauseState(ctx, m_suspendedPause);
+        ReturnPlayerLock(ctx);
+    }
 }
 
 void TV::QuickRecord(PlayerContext *ctx)
diff --git a/mythtv/libs/libmythtv/tv_play.h b/mythtv/libs/libmythtv/tv_play.h
index 5102810ff5..7c5a6006b1 100644
--- a/mythtv/libs/libmythtv/tv_play.h
+++ b/mythtv/libs/libmythtv/tv_play.h
@@ -932,10 +932,11 @@ class MTV_PUBLIC TV : public QObject, public MenuItemDisplayer
     /// true if video chromakey and frame should not be drawn
     bool          m_disableDrawUnusedRects {false};
 
-    // embedded status
+    // embedded and suspended status
     bool         m_isEmbedded {false};       ///< are we currently embedded
     bool         m_ignoreKeyPresses {false}; ///< should we ignore keypresses
     vector<bool> m_savedPause;      ///< saved pause state before embedding
+    vector<bool> m_suspendedPause;  ///< saved pause state before suspending
 
     // Channel group stuff
     /// \brief Lock necessary when modifying channel group variables.
diff --git a/mythtv/libs/libmythui/mythmainwindow.cpp b/mythtv/libs/libmythui/mythmainwindow.cpp
index 30027e06a2..22423024e4 100644
--- a/mythtv/libs/libmythui/mythmainwindow.cpp
+++ b/mythtv/libs/libmythui/mythmainwindow.cpp
@@ -3144,9 +3144,17 @@ void MythMainWindow::onApplicationStateChange(Qt::ApplicationState state)
     {
         case Qt::ApplicationState::ApplicationActive:
             PopDrawDisabled();
+            {
+                MythEvent me(MythEvent::MythEventMessage, "QAPP_RESUMED");
+                qApp->sendEvent(this, &me);
+            }
             break;
         case Qt::ApplicationState::ApplicationSuspended:
             PushDrawDisabled();
+            {
+                MythEvent me(MythEvent::MythEventMessage, "QAPP_SUSPENDED");
+                qApp->sendEvent(this, &me);
+            }
             break;
         default:
             break;
