summaryrefslogtreecommitdiffstats
path: root/src/plugins/directshow/player/directshowplayerservice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/directshow/player/directshowplayerservice.cpp')
-rw-r--r--src/plugins/directshow/player/directshowplayerservice.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp
index f5899cb6a..ed131f0bd 100644
--- a/src/plugins/directshow/player/directshowplayerservice.cpp
+++ b/src/plugins/directshow/player/directshowplayerservice.cpp
@@ -646,6 +646,9 @@ void DirectShowPlayerService::doFinalizeLoad(QMutexLocker *locker)
void DirectShowPlayerService::releaseGraph()
{
+ if (m_videoProbeControl)
+ m_videoProbeControl->flushVideoFrame();
+
if (m_graph) {
if (m_executingTask != 0) {
// {8E1C39A1-DE53-11cf-AA63-0080C744528D}
@@ -1023,6 +1026,8 @@ void DirectShowPlayerService::stop()
if ((m_executingTask | m_executedTasks) & (Play | Pause | Seek)) {
m_pendingTasks |= Stop;
+ if (m_videoProbeControl)
+ m_videoProbeControl->flushVideoFrame();
::SetEvent(m_taskHandle);
@@ -1455,6 +1460,8 @@ void DirectShowPlayerService::customEvent(QEvent *event)
m_playerControl->updateState(QMediaPlayer::StoppedState);
m_playerControl->updateStatus(QMediaPlayer::EndOfMedia);
m_playerControl->updatePosition(m_position);
+ if (m_videoProbeControl)
+ m_videoProbeControl->flushVideoFrame();
}
} else if (event->type() == QEvent::Type(PositionChange)) {
QMutexLocker locker(&m_mutex);
@@ -1563,7 +1570,7 @@ void DirectShowPlayerService::onVideoBufferAvailable(double time, const QByteArr
size,
format);
- Q_EMIT m_videoProbeControl->videoFrameProbed(frame);
+ m_videoProbeControl->probeVideoFrame(frame);
}
QT_WARNING_POP