diff options
author | Gareth Stockwell <gareth.stockwell@sosco.com> | 2009-08-20 16:24:55 (GMT) |
---|---|---|
committer | Gareth Stockwell <gareth.stockwell@sosco.com> | 2009-08-20 16:24:55 (GMT) |
commit | 2150242ddbe66c5d4c440599f1282580be013e61 (patch) | |
tree | d0eefc4aa67a121987f8b74822e558603d3cedc1 /src/3rdparty/phonon/mmf/abstractmediaplayer.cpp | |
parent | ee990e2ed366a16605afb6a13edd9c59b1bcc33d (diff) | |
download | Qt-2150242ddbe66c5d4c440599f1282580be013e61.zip Qt-2150242ddbe66c5d4c440599f1282580be013e61.tar.gz Qt-2150242ddbe66c5d4c440599f1282580be013e61.tar.bz2 |
Started fleshing out the VideoPlayer implementation
Now loads, prepares and plays a clip, but the video is not visible because it's not yet wired up to a VideoWidget.
Video 'playback' can be tested using the demos/mediaplayer application, but the menus are not displayed properly, so a video clip filename must be hardcoded in main.cpp and passed to the MediaPlayer constructor.
Diffstat (limited to 'src/3rdparty/phonon/mmf/abstractmediaplayer.cpp')
-rw-r--r-- | src/3rdparty/phonon/mmf/abstractmediaplayer.cpp | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp index a86f634..dbb4d2d 100644 --- a/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp +++ b/src/3rdparty/phonon/mmf/abstractmediaplayer.cpp @@ -70,12 +70,15 @@ void MMF::AbstractMediaPlayer::play() switch(m_state) { case GroundState: - case LoadingState: // Is this the correct error? Really we want 'NotReadyError' m_error = NormalError; changeState(ErrorState); break; - + + case LoadingState: + m_playPending = true; + break; + case StoppedState: case PausedState: doPlay(); @@ -102,6 +105,8 @@ void MMF::AbstractMediaPlayer::pause() TRACE_CONTEXT(AbstractMediaPlayer::pause, EAudioApi); TRACE_ENTRY("state %d", m_state); + m_playPending = false; + switch(m_state) { case GroundState: @@ -132,6 +137,8 @@ void MMF::AbstractMediaPlayer::stop() TRACE_CONTEXT(AbstractMediaPlayer::stop, EAudioApi); TRACE_ENTRY("state %d", m_state); + m_playPending = false; + switch(m_state) { case GroundState: @@ -375,16 +382,29 @@ void MMF::AbstractMediaPlayer::changeState(PrivateState newState) // TODO: add some invariants to check that the transition is valid - const Phonon::State currentPhononState = phononState(m_state); + const Phonon::State oldPhononState = phononState(m_state); const Phonon::State newPhononState = phononState(newState); - if(currentPhononState != newPhononState) + if(oldPhononState != newPhononState) { - TRACE("emit stateChanged(%d, %d)", newPhononState, currentPhononState); - emit stateChanged(newPhononState, currentPhononState); + TRACE("emit stateChanged(%d, %d)", newPhononState, oldPhononState); + emit stateChanged(newPhononState, oldPhononState); } m_state = newState; - + + // Check whether play() was called while clip was being loaded. If so, + // playback should be started now + if( + LoadingState == oldPhononState + and StoppedState == newPhononState + and m_playPending + ) + { + TRACE("Play was called while loading; starting playback now"); + m_playPending = false; + play(); + } + TRACE_EXIT_0(); } |