Skip to content

Commit

Permalink
Pause playback and set a bookmark when suspended on Android.
Browse files Browse the repository at this point in the history
Also, clear the bookmark and unpause playback when resumed.

Refs #13444
  • Loading branch information
gigem committed Apr 21, 2019
1 parent 6a75794 commit 94bffc3
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
37 changes: 37 additions & 0 deletions mythtv/libs/libmythtv/tv_play.cpp
Expand Up @@ -1003,6 +1003,11 @@ TV::TV(void)

InitFromDB();

#ifdef Q_OS_ANDROID
connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)),
this, SLOT(onApplicationStateChange(Qt::ApplicationState)));
#endif

LOG(VB_PLAYBACK, LOG_INFO, LOC + "Finished creating TV object");
}

Expand Down Expand Up @@ -13413,4 +13418,36 @@ QString TV::GetLiveTVIndex(const PlayerContext *ctx) const
#endif
}

void TV::onApplicationStateChange(Qt::ApplicationState state)
{
switch (state)
{
case Qt::ApplicationState::ApplicationActive:
{
LOG(VB_GENERAL, LOG_NOTICE, "Resuming playback");
PlayerContext *ctx = GetPlayerReadLock(-1, __FILE__, __LINE__);
SetBookmark(ctx, true);
DoSetPauseState(ctx, m_suspendedPause);
ReturnPlayerLock(ctx);
m_suspended = false;
break;
}
case Qt::ApplicationState::ApplicationSuspended:
{
LOG(VB_GENERAL, LOG_NOTICE, "Suspending playback");
m_suspended = true;
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);
break;
}
default:
break;
}
}

/* vim: set expandtab tabstop=4 shiftwidth=4: */
7 changes: 6 additions & 1 deletion mythtv/libs/libmythtv/tv_play.h
Expand Up @@ -346,6 +346,9 @@ class MTV_PUBLIC TV : public QObject, public MenuItemDisplayer
static EMBEDRETURNVOIDFINDER RunProgramFinderPtr;
static EMBEDRETURNVOIDSCHEDIT RunScheduleEditorPtr;

protected slots:
void onApplicationStateChange(Qt::ApplicationState state);

private:
TV();
~TV();
Expand Down Expand Up @@ -932,10 +935,12 @@ 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
bool m_suspended {false};///< are we currently suspended
vector<bool> m_suspendedPause; ///< saved pause state before suspending

// Channel group stuff
/// \brief Lock necessary when modifying channel group variables.
Expand Down

0 comments on commit 94bffc3

Please sign in to comment.