Skip to content

Commit add5c5b

Browse files
authored
Merge pull request #1356 from ElderOrb/master
notify player about self-pause in case of MediaEndAction_Pause triggering
2 parents 2a470d2 + 6576719 commit add5c5b

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

src/AVDemuxThread.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,7 @@ void AVDemuxThread::run()
674674
break;
675675
pause(true);
676676
Q_EMIT requestClockPause(true);
677+
Q_EMIT mediaEndActionPauseTriggered();
677678
if (aqueue)
678679
aqueue->blockEmpty(true);
679680
if (vqueue)

src/AVDemuxThread.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class AVDemuxThread : public QThread
6464
bool hasSeekTasks();
6565
Q_SIGNALS:
6666
void requestClockPause(bool value);
67+
void mediaEndActionPauseTriggered();
6768
void mediaStatusChanged(QtAV::MediaStatus);
6869
void bufferProgressChanged(qreal);
6970
void seekFinished(qint64 timestamp);

src/AVPlayer.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ AVPlayer::AVPlayer(QObject *parent) :
9191
//direct connection can not sure slot order?
9292
connect(d->read_thread, SIGNAL(finished()), this, SLOT(stopFromDemuxerThread()), Qt::DirectConnection);
9393
connect(d->read_thread, SIGNAL(requestClockPause(bool)), masterClock(), SLOT(pause(bool)), Qt::DirectConnection);
94+
connect(d->read_thread, SIGNAL(mediaEndActionPauseTriggered()), this, SLOT(onMediaEndActionPauseTriggered()));
9495
connect(d->read_thread, SIGNAL(mediaStatusChanged(QtAV::MediaStatus)), this, SLOT(updateMediaStatus(QtAV::MediaStatus)));
9596
connect(d->read_thread, SIGNAL(bufferProgressChanged(qreal)), this, SIGNAL(bufferProgressChanged(qreal)));
9697
connect(d->read_thread, SIGNAL(seekFinished(qint64)), this, SLOT(onSeekFinished(qint64)), Qt::DirectConnection);
@@ -1404,6 +1405,16 @@ void AVPlayer::updateMediaStatus(QtAV::MediaStatus status)
14041405
Q_EMIT mediaStatusChanged(d->status);
14051406
}
14061407

1408+
void AVPlayer::onMediaEndActionPauseTriggered()
1409+
{
1410+
if(d->state == PausedState)
1411+
return;
1412+
1413+
d->state = PausedState;
1414+
Q_EMIT stateChanged(d->state);
1415+
Q_EMIT paused(true);
1416+
}
1417+
14071418
void AVPlayer::onSeekFinished(qint64 value)
14081419
{
14091420
d->seeking = false;

src/QtAV/AVPlayer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,7 @@ private Q_SLOTS:
616616
void stopNotifyTimer();
617617
void onStarted();
618618
void updateMediaStatus(QtAV::MediaStatus status);
619+
void onMediaEndActionPauseTriggered();
619620
void onSeekFinished(qint64 value);
620621
void onStepFinished();
621622
void tryClearVideoRenderers();

0 commit comments

Comments
 (0)