diff options
Diffstat (limited to 'src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp')
-rw-r--r-- | src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp index 587f4b1..b024557 100644 --- a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp +++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp @@ -85,6 +85,7 @@ DirectShowPlayerControl::DirectShowPlayerControl(DirectShowPlayerService *servic , m_error(QMediaPlayer::NoError) , m_streamTypes(0) , m_muteVolume(-1) + , m_position(0) , m_duration(0) , m_playbackRate(0) , m_seekable(false) @@ -114,7 +115,7 @@ qint64 DirectShowPlayerControl::duration() const qint64 DirectShowPlayerControl::position() const { - return m_service->position(); + return const_cast<qint64 &>(m_position) = m_service->position(); } void DirectShowPlayerControl::setPosition(qint64 position) @@ -289,6 +290,9 @@ void DirectShowPlayerControl::emitPropertyChanges() emit videoAvailableChanged(m_streamTypes & DirectShowPlayerService::VideoStream); } + if (properties & PositionProperty) + emit positionChanged(m_position); + if (properties & DurationProperty) emit durationChanged(m_duration); @@ -379,4 +383,13 @@ void DirectShowPlayerControl::updateError(QMediaPlayer::Error error, const QStri scheduleUpdate(ErrorProperty); } +void DirectShowPlayerControl::updatePosition(qint64 position) +{ + if (m_position != position) { + m_position = position; + + scheduleUpdate(PositionProperty); + } +} + QT_END_NAMESPACE |