From a7b8872cd5de1908bb2daa08a32afb5bff879ac2 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Tue, 8 Apr 2014 18:50:23 +0200 Subject: Fix some MediaPlayer properties returning wrong values. Once the QML component is complete, don't cache any value anymore and always ask the backend for the actual value. Change-Id: I2c3ad55618e0532f713cfcc8258a70a1114fc975 Reviewed-by: Christian Stromme --- src/imports/multimedia/qdeclarativeaudio.cpp | 44 +++++++++++----------- .../qdeclarativeaudio/tst_qdeclarativeaudio.cpp | 2 +- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp index 16828a4d1..37509b17e 100644 --- a/src/imports/multimedia/qdeclarativeaudio.cpp +++ b/src/imports/multimedia/qdeclarativeaudio.cpp @@ -290,15 +290,15 @@ void QDeclarativeAudio::setVolume(qreal volume) return; } - if (m_vol == volume) + if (this->volume() == volume) return; - m_vol = volume; - - if (m_complete) + if (m_complete) { m_player->setVolume(qRound(volume * 100)); - else + } else { + m_vol = volume; emit volumeChanged(); + } } bool QDeclarativeAudio::isMuted() const @@ -308,15 +308,15 @@ bool QDeclarativeAudio::isMuted() const void QDeclarativeAudio::setMuted(bool muted) { - if (m_muted == muted) + if (isMuted() == muted) return; - m_muted = muted; - - if (m_complete) + if (m_complete) { m_player->setMuted(muted); - else + } else { + m_muted = muted; emit mutedChanged(); + } } qreal QDeclarativeAudio::bufferProgress() const @@ -331,20 +331,20 @@ bool QDeclarativeAudio::isSeekable() const qreal QDeclarativeAudio::playbackRate() const { - return m_playbackRate; + return m_complete ? m_player->playbackRate() : m_playbackRate; } void QDeclarativeAudio::setPlaybackRate(qreal rate) { - if (m_playbackRate == rate) + if (playbackRate() == rate) return; - m_playbackRate = rate; - - if (m_complete) - m_player->setPlaybackRate(m_playbackRate); - else + if (m_complete) { + m_player->setPlaybackRate(rate); + } else { + m_playbackRate = rate; emit playbackRateChanged(); + } } QString QDeclarativeAudio::errorString() const @@ -426,12 +426,12 @@ void QDeclarativeAudio::seek(int position) if (this->position() == position) return; - m_position = position; - - if (m_complete) - m_player->setPosition(m_position); - else + if (m_complete) { + m_player->setPosition(position); + } else { + m_position = position; emit positionChanged(); + } } /*! diff --git a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp index 57f820b54..fb946d760 100644 --- a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp +++ b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp @@ -777,7 +777,7 @@ void tst_QDeclarativeAudio::playbackRate() audio.setPlaybackRate(2.0); QCOMPARE(audio.playbackRate(), qreal(2.0)); QCOMPARE(provider.playerControl()->playbackRate(), qreal(2.0)); - QCOMPARE(spy.count(), 3); + QCOMPARE(spy.count(), 2); } void tst_QDeclarativeAudio::status() -- cgit v1.2.1